aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-11-21 16:49:53 +0100
committerlemon <lsof@mailbox.org>2025-11-21 16:49:53 +0100
commitec4cfe9db9afc1d1c633a922174f5bb0685b0c32 (patch)
tree2717b985346d2112f69539577df3a332acb8bd7a /amd64
parent285063eba442e2a8ac29fd42e0d17d996bcc5d00 (diff)
change op names to match 285063eba44
Diffstat (limited to 'amd64')
-rw-r--r--amd64/emit.c48
-rw-r--r--amd64/isel.c26
-rw-r--r--amd64/sysv.c22
3 files changed, 48 insertions, 48 deletions
diff --git a/amd64/emit.c b/amd64/emit.c
index 6ef6df3..a7bf542 100644
--- a/amd64/emit.c
+++ b/amd64/emit.c
@@ -953,36 +953,36 @@ emitinstr(uchar **pcode, struct function *fn, struct block *blk, int curi, struc
default:
fatal(NULL, "amd64: in %y; unimplemented instr '%s'", fn->name, opnames[ins->op]);
case Onop: break;
- case Ostore1: cls = KI32, X = Xmovb; goto Store;
- case Ostore2: cls = KI32, X = Xmovw; goto Store;
- case Ostore4: cls = KI32, X = Xmov; goto Store;
- case Ostore8: cls = KI64, X = Xmov;
+ case Ostore8: cls = KI32, X = Xmovb; goto Store;
+ case Ostore16: cls = KI32, X = Xmovw; goto Store;
+ case Ostore32: cls = KI32, X = Xmov; goto Store;
+ case Ostore64: cls = KI64, X = Xmov;
Store:
src = mkimmregoper(ins->r);
if (cls == KI32 && src.t == OREG && src.reg >= XMM0) cls = KF32;
if (cls == KI64 && src.t == OREG && src.reg >= XMM0) cls = KF64;
X(pcode, cls, mkmemoper(ins->l), src);
break;
- case Oexts1: src = mkregoper(ins->l); goto Movsxb;
- case Oextu1: src = mkregoper(ins->l); goto Movzxb;
- case Oexts2: src = mkregoper(ins->l); goto Movsxw;
- case Oextu2: src = mkregoper(ins->l); goto Movzxw;
- case Oexts4: src = mkregoper(ins->l); goto Movsxl;
- case Oextu4: src = mkregoper(ins->l); goto Movzxl;
- case Oloads1: src = mkmemoper(ins->l); Movsxb: Xmovsxb(pcode, cls, reg2oper(ins->reg-1), src); break;
- case Oloadu1: src = mkmemoper(ins->l); Movzxb: Xmovzxb(pcode, cls, reg2oper(ins->reg-1), src); break;
- case Oloads2: src = mkmemoper(ins->l); Movsxw: Xmovsxw(pcode, cls, reg2oper(ins->reg-1), src); break;
- case Oloadu2: src = mkmemoper(ins->l); Movzxw: Xmovzxw(pcode, cls, reg2oper(ins->reg-1), src); break;
- case Oloads4: src = mkmemoper(ins->l); Movsxl: Xmovsxl(pcode, cls, reg2oper(ins->reg-1), src); break;
- case Oloadu4: src = mkmemoper(ins->l); Movzxl: Xmov(pcode, KI32, reg2oper(ins->reg-1), src); break;
- case Oloadf4: case Oloadf8: Xmov(pcode, cls, reg2oper(ins->reg-1), mkmemoper(ins->l)); break;
- case Oloadi8: Xmov(pcode, KI64, reg2oper(ins->reg-1), mkmemoper(ins->l)); break;
- case Ocvtf4f8: X = Xcvtss2sd; goto FloatsCvt;
- case Ocvtf8f4: X = Xcvtsd2ss; goto FloatsCvt;
- case Ocvtf4s: X = Xcvttss2si; goto FloatsCvt;
- case Ocvtf8s: X = Xcvttsd2si; goto FloatsCvt;
- case Ocvts4f: X = cls == KF32 ? Xcvtsi2ss : Xcvtsi2sd; cls = KI32; goto FloatsCvt;
- case Ocvts8f: X = cls == KF32 ? Xcvtsi2ss : Xcvtsi2sd; cls = KI64; goto FloatsCvt;
+ case Oexts8: src = mkregoper(ins->l); goto Movsxb;
+ case Oextu8: src = mkregoper(ins->l); goto Movzxb;
+ case Oexts16: src = mkregoper(ins->l); goto Movsxw;
+ case Oextu16: src = mkregoper(ins->l); goto Movzxw;
+ case Oexts32: src = mkregoper(ins->l); goto Movsxl;
+ case Oextu32: src = mkregoper(ins->l); goto Movzxl;
+ case Oloads8: src = mkmemoper(ins->l); Movsxb: Xmovsxb(pcode, cls, reg2oper(ins->reg-1), src); break;
+ case Oloadu8: src = mkmemoper(ins->l); Movzxb: Xmovzxb(pcode, cls, reg2oper(ins->reg-1), src); break;
+ case Oloads16: src = mkmemoper(ins->l); Movsxw: Xmovsxw(pcode, cls, reg2oper(ins->reg-1), src); break;
+ case Oloadu16: src = mkmemoper(ins->l); Movzxw: Xmovzxw(pcode, cls, reg2oper(ins->reg-1), src); break;
+ case Oloads32: src = mkmemoper(ins->l); Movsxl: Xmovsxl(pcode, cls, reg2oper(ins->reg-1), src); break;
+ case Oloadu32: src = mkmemoper(ins->l); Movzxl: Xmov(pcode, KI32, reg2oper(ins->reg-1), src); break;
+ case Oloadf32: case Oloadf64: Xmov(pcode, cls, reg2oper(ins->reg-1), mkmemoper(ins->l)); break;
+ case Oloadi64: Xmov(pcode, KI64, reg2oper(ins->reg-1), mkmemoper(ins->l)); break;
+ case Ocvtf32f64: X = Xcvtss2sd; goto FloatsCvt;
+ case Ocvtf64f32: X = Xcvtsd2ss; goto FloatsCvt;
+ case Ocvtf32s: X = Xcvttss2si; goto FloatsCvt;
+ case Ocvtf64s: X = Xcvttsd2si; goto FloatsCvt;
+ case Ocvts32f: X = cls == KF32 ? Xcvtsi2ss : Xcvtsi2sd; cls = KI32; goto FloatsCvt;
+ case Ocvts64f: X = cls == KF32 ? Xcvtsi2ss : Xcvtsi2sd; cls = KI64; goto FloatsCvt;
FloatsCvt:
X(pcode, cls, reg2oper(ins->reg-1), mkdatregoper(ins->l));
break;
diff --git a/amd64/isel.c b/amd64/isel.c
index 904fdbd..b17e541 100644
--- a/amd64/isel.c
+++ b/amd64/isel.c
@@ -139,7 +139,7 @@ selcall(struct function *fn, struct instr *ins, struct block *blk, int *curi)
*arg = mkinstr(Omove, call->abiarg[i].ty.cls, mkref(RREG, abi.reg), arg->r);
} else {
union ref adr = mkaddr((struct addr){mkref(RREG, RSP), .disp = abi.stk});
- *arg = mkinstr(Ostore1+ilog2(cls2siz[abi.ty.cls]), 0, adr, arg->r);
+ *arg = mkinstr(Ostore8+ilog2(cls2siz[abi.ty.cls]), 0, adr, arg->r);
}
}
if (call->argstksiz) {
@@ -485,32 +485,32 @@ sel(struct function *fn, struct instr *ins, struct block *blk, int *curi)
if (op == Oadd && isaddrcon(ins->r,1)) /* no 3-address add if rhs is mem */
ins->inplace = 1;
break;
- case Oloads1: case Oloadu1: case Oloads2: case Oloadu2:
- case Oloads4: case Oloadu4: case Oloadi8: case Oloadf4: case Oloadf8:
+ case Oloads8: case Oloadu8: case Oloads16: case Oloadu16:
+ case Oloads32: case Oloadu32: case Oloadi64: case Oloadf32: case Oloadf64:
loadstoreaddr(blk, &ins->l, curi);
break;
- case Ostore1: case Ostore2: case Ostore4: case Ostore8:
+ case Ostore8: case Ostore16: case Ostore32: case Ostore64:
loadstoreaddr(blk, &ins->l, curi);
if (isaddrcon(ins->r,1) || ins->r.t == RADDR)
ins->r = insertinstr(blk, (*curi)++, mkinstr(Ocopy, KPTR, ins->r));
else
fixarg(&ins->r, ins, blk, curi);
break;
- case Ocvtu4f:
+ case Ocvtu32f:
fixarg(&ins->l, ins, blk, curi);
- ins->l = insertinstr(blk, (*curi)++, mkinstr(Oextu4, KI64, ins->l));
- ins->op = Ocvts8f;
+ ins->l = insertinstr(blk, (*curi)++, mkinstr(Oextu32, KI64, ins->l));
+ ins->op = Ocvts64f;
break;
- case Ocvtf4u: case Ocvtf8u:
+ case Ocvtf32u: case Ocvtf64u:
fixarg(&ins->l, ins, blk, curi);
if (ins->cls == KI32) {
- ins->l = insertinstr(blk, (*curi)++, mkinstr(ins->op == Ocvtf4u ? Ocvtf4s : Ocvtf8s, KI64, ins->l));
- ins->op = Oextu4;
+ ins->l = insertinstr(blk, (*curi)++, mkinstr(ins->op == Ocvtf32u ? Ocvtf32s : Ocvtf64s, KI64, ins->l));
+ ins->op = Oextu32;
} else assert(!"nyi flt -> u64");
break;
- case Ocvtf4f8: case Ocvtf8f4: case Ocvtf4s: case Ocvtf8s: case Ocvts4f: case Ocvts8f:
- case Ocvtu8f:
- case Oexts1: case Oextu1: case Oexts2: case Oextu2: case Oexts4: case Oextu4:
+ case Ocvtf32f64: case Ocvtf64f32: case Ocvtf32s: case Ocvtf64s: case Ocvts32f: case Ocvts64f:
+ case Ocvtu64f:
+ case Oexts8: case Oextu8: case Oexts16: case Oextu16: case Oexts32: case Oextu32:
if (isnumcon(ins->l)) {
union ref it;
bool ok = foldunop(&it, ins->op, ins->cls, ins->l);
diff --git a/amd64/sysv.c b/amd64/sysv.c
index e69797b..7410499 100644
--- a/amd64/sysv.c
+++ b/amd64/sysv.c
@@ -195,16 +195,16 @@ vastart(struct function *fn, struct block *blk, int *curi)
*ins = mkinstr(Oadd, KPTR, ap, mkref(RICON, 16));
dst = mkref(RTMP, ins - instrtab);
int i = *curi + 1;
- insertinstr(blk, i++, mkinstr(Ostore8, 0, dst, rsave));
+ insertinstr(blk, i++, mkinstr(Ostore64, 0, dst, rsave));
/* set ap->overflow_arg_area */
src = insertinstr(blk, i++, mkinstr(Oadd, KPTR, mkref(RREG, RBP), mkref(RICON, 16+stk0)));
dst = insertinstr(blk, i++, mkinstr(Oadd, KPTR, ap, mkref(RICON, 8)));
- insertinstr(blk, i++, mkinstr(Ostore8, 0, dst, src));
+ insertinstr(blk, i++, mkinstr(Ostore64, 0, dst, src));
/* set ap->gp_offset */
- insertinstr(blk, i++, mkinstr(Ostore4, 0, ap, mkref(RICON, gpr0*8)));
+ insertinstr(blk, i++, mkinstr(Ostore32, 0, ap, mkref(RICON, gpr0*8)));
/* set ap->fp_offset */
dst = insertinstr(blk, i++, mkinstr(Oadd, KPTR, ap, mkref(RICON, 4)));
- insertinstr(blk, i++, mkinstr(Ostore4, 0, dst, mkref(RICON, 6*8 + fpr0*8)));
+ insertinstr(blk, i++, mkinstr(Ostore32, 0, dst, mkref(RICON, 6*8 + fpr0*8)));
*curi = i;
}
@@ -230,7 +230,7 @@ vaarg(struct function *fn, struct block *blk, int *curi)
union ref phi, phiargs[2];
if (ni) {
/* l->gp_offset < 48 - num_gp * 8 */
- tmp = insertinstr(blk, (*curi)++, mkinstr(Oloadu4, KI32, ap));
+ tmp = insertinstr(blk, (*curi)++, mkinstr(Oloadu32, KI32, ap));
tmp = insertinstr(blk, (*curi)++, mkinstr(Oulte, KI32, tmp, mkref(RICON, 48 - ni*8)));
merge = blksplitafter(fn, blk, *curi);
blk->jmp.t = 0;
@@ -239,12 +239,12 @@ vaarg(struct function *fn, struct block *blk, int *curi)
useblk(fn, blk->s1);
{
/* phi0: &l->reg_save_area[l->gp_offset] */
- union ref sav = addinstr(fn, mkinstr(Oloadi8, KPTR, irbinop(fn, Oadd, KPTR, ap, mkref(RICON, 16))));
- union ref gpoff = addinstr(fn, mkinstr(Oloadu4, KI32, ap));
+ union ref sav = addinstr(fn, mkinstr(Oloadi64, KPTR, irbinop(fn, Oadd, KPTR, ap, mkref(RICON, 16))));
+ union ref gpoff = addinstr(fn, mkinstr(Oloadu32, KI32, ap));
phiargs[0] = irbinop(fn, Oadd, KPTR, sav, gpoff);
/* l->gp_offset += num_gp * 8 */
gpoff = irbinop(fn, Oadd, KI32, gpoff, mkref(RICON, ni * 8));
- addinstr(fn, mkinstr(Ostore4, 0, ap, gpoff));
+ addinstr(fn, mkinstr(Ostore32, 0, ap, gpoff));
assert(merge->npred == 1);
blkpred(merge, 0) = blk->s1;
blk->s1->jmp.t = Jb;
@@ -254,13 +254,13 @@ vaarg(struct function *fn, struct block *blk, int *curi)
{
/* phi1: l->overflow_arg_area */
union ref adr = irbinop(fn, Oadd, KPTR, ap, mkref(RICON, 8));
- union ref ovf = addinstr(fn, mkinstr(Oloadi8, KPTR, adr));
+ union ref ovf = addinstr(fn, mkinstr(Oloadi64, KPTR, adr));
/* align no-op */
phiargs[1] = ovf;
/* update l->overflow_arg_area += num_gp*8 */
int siz = 8;
- addinstr(fn, mkinstr(Ostore8, 0, adr, irbinop(fn, Oadd, KPTR, ovf, mkref(RICON, siz))));
+ addinstr(fn, mkinstr(Ostore64, 0, adr, irbinop(fn, Oadd, KPTR, ovf, mkref(RICON, siz))));
putbranch(fn, merge);
}
assert(merge->npred == 2);
@@ -269,7 +269,7 @@ vaarg(struct function *fn, struct block *blk, int *curi)
merge->ins.p[0] = var;
phi = insertphi(merge, KPTR);
memcpy(phitab.p[instrtab[phi.i].l.i], phiargs, sizeof phiargs);
- instrtab[var] = mkinstr(cls[0] == KI32 ? Oloads4 : Oloadi8, cls[0], phi);
+ instrtab[var] = mkinstr(cls[0] == KI32 ? Oloads32 : Oloadi64, cls[0], phi);
} else {
assert(0&&nf);
}