regalloc(&f1, n->type, N);
gmove(&f0, &f1);
cgen(nr, &f0);
- gins(optoas(n->op, n->type), &f1, &f0);
+ gins(optoas(n->op, n->type), &f0, &f1);
} else {
cgen(nr, &f0);
regalloc(&f1, n->type, N);
gmove(&f0, &f1);
cgen(nl, &f0);
- gins(optoas(n->op, n->type), &f1, &f0);
+ gins(optoas(n->op, n->type), &f0, &f1);
}
gmove(&f1, res);
regfree(&f0);
p = gins(AMOVW, &src, &tmp);
p->from.type = D_OREG;
- // MOVW tmp>>((4-c)*8),src
- p = gins(AMOVW, N, &src);
- p->from.type = D_SHIFT;
- p->from.offset = SHIFT_LR | ((4-c)*8)<<7 | tmp.val.u.reg;
+ // MOVW tmp<<((4-c)*8),src
+ gshift(AMOVW, &tmp, SHIFT_LL, ((4-c)*8), &src);
- // MOVW src<<((4-c)*8),src
- p = gins(AMOVW, N, &src);
- p->from.type = D_SHIFT;
- p->from.offset = SHIFT_LL | ((4-c)*8)<<7 | tmp.val.u.reg;
+ // MOVW src>>((4-c)*8),src
+ gshift(AMOVW, &src, SHIFT_LR, ((4-c)*8), &src);
// MOVW (dst), tmp
p = gins(AMOVW, &dst, &tmp);
p->from.type = D_OREG;
- // MOVW tmp<<(c*8),tmp
- p = gins(AMOVW, N, &tmp);
- p->from.type = D_SHIFT;
- p->from.offset = SHIFT_LL | (c*8)<<7 | tmp.val.u.reg;
-
// MOVW tmp>>(c*8),tmp
- p = gins(AMOVW, N, &tmp);
- p->from.type = D_SHIFT;
- p->from.offset = SHIFT_LR | (c*8)<<7 | tmp.val.u.reg;
+ gshift(AMOVW, &tmp, SHIFT_LR, (c*8), &tmp);
+
+ // MOVW tmp<<(c*8),tmp
+ gshift(AMOVW, &tmp, SHIFT_LL, c*8, &tmp);
// ORR src, tmp
gins(AORR, &src, &tmp);
case CASE(OLT, TINT16):
case CASE(OLT, TINT32):
case CASE(OLT, TINT64):
+ case CASE(OLT, TFLOAT32):
+ case CASE(OLT, TFLOAT64):
+ a = ABLT;
+ break;
+
case CASE(OLT, TUINT8):
case CASE(OLT, TUINT16):
case CASE(OLT, TUINT32):
case CASE(OLT, TUINT64):
- case CASE(OGT, TFLOAT32):
- case CASE(OGT, TFLOAT64):
- a = ABLT;
+ a = ABLO;
break;
case CASE(OLE, TINT8):
case CASE(OLE, TINT16):
case CASE(OLE, TINT32):
case CASE(OLE, TINT64):
+ case CASE(OLE, TFLOAT32):
+ case CASE(OLE, TFLOAT64):
+ a = ABLE;
+ break;
+
case CASE(OLE, TUINT8):
case CASE(OLE, TUINT16):
case CASE(OLE, TUINT32):
case CASE(OLE, TUINT64):
- case CASE(OGE, TFLOAT32):
- case CASE(OGE, TFLOAT64):
- a = ABLE;
+ a = ABLS;
break;
case CASE(OGT, TINT8):
case CASE(OGT, TINT16):
case CASE(OGT, TINT32):
case CASE(OGT, TINT64):
+ case CASE(OGT, TFLOAT32):
+ case CASE(OGT, TFLOAT64):
+ a = ABGT;
+ break;
+
case CASE(OGT, TUINT8):
case CASE(OGT, TUINT16):
case CASE(OGT, TUINT32):
case CASE(OGT, TUINT64):
- case CASE(OLT, TFLOAT32):
- case CASE(OLT, TFLOAT64):
- a = ABGT;
+ a = ABHI;
break;
case CASE(OGE, TINT8):
case CASE(OGE, TINT16):
case CASE(OGE, TINT32):
case CASE(OGE, TINT64):
+ case CASE(OGE, TFLOAT32):
+ case CASE(OGE, TFLOAT64):
+ a = ABGE;
+ break;
+
case CASE(OGE, TUINT8):
case CASE(OGE, TUINT16):
case CASE(OGE, TUINT32):
case CASE(OGE, TUINT64):
- case CASE(OLE, TFLOAT32):
- case CASE(OLE, TFLOAT64):
- a = ABGE;
+ a = ABHS;
break;
case CASE(OCMP, TBOOL):