#ifdef SOFTNULLPTRCHECK
#define gen_nullptr_check(objreg) \
if (checknull) {\
- M_BEQZ((objreg), REG);\
+ M_BEQZ((objreg), 0);\
mcode_addxnullrefs(mcodeptr);\
}
#else
p = dseg_addaddress (method);
M_ALD(REG_ITMP1, REG_PV, p);
- M_AST(REG_ITMP1, REG_SP, REG);
+ M_AST(REG_ITMP1, REG_SP, 0);
p = dseg_addaddress ((void*) (builtin_trace_args));
M_ALD(REG_PV, REG_PV, p);
M_JSR(REG_RA, REG_PV);
M_LDA (REG_SP, REG_SP, -8);
p = dseg_addaddress (method);
M_ALD(REG_ITMP1, REG_PV, p);
- M_AST(REG_ITMP1, REG_SP, REG);
+ M_AST(REG_ITMP1, REG_SP, 0);
p = dseg_addaddress ((void*) (builtin_trace_args));
M_ALD(REG_PV, REG_PV, p);
M_JSR(REG_RA, REG_PV);
case ICMD_NULLCHECKPOP: /* ..., objectref ==> ... */
var_to_reg_int(s1, src, REG_ITMP1);
- M_BEQZ((s1), REG);
+ M_BEQZ(s1, 0);
mcode_addxnullrefs(mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_ISUB(REG_ZERO, s1, d, REG);
+ M_ISUB(REG_ZERO, s1, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_LSUB(REG_ZERO, s1, d, REG);
+ M_LSUB(REG_ZERO, s1, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_IADD(s1, REG_ZERO, d , REG);
+ M_IADD(s1, REG_ZERO, d );
store_reg_to_var_int(iptr->dst, d);
break;
M_BSEXT(s1, d);
}
else {
- M_SLL(s1, 56, d, CONST);
- M_SRA( d, 56, d, CONST);
+ M_SLL_IMM(s1, 56, d);
+ M_SRA_IMM( d, 56, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
M_SSEXT(s1, d);
}
else {
- M_SLL(s1, 48, d, CONST);
- M_SRA( d, 48, d, CONST);
+ M_SLL_IMM(s1, 48, d);
+ M_SRA_IMM( d, 48, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_IADD(s1, s2, d, 0);
+ M_IADD(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_IADD(s1, iptr->val.i, d, CONST);
+ M_IADD_IMM(s1, iptr->val.i, d);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_IADD(s1, REG_ITMP2, d, REG);
+ M_IADD(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_LADD(s1, s2, d, 0);
+ M_LADD(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.l >= 0) && (iptr->val.l <= 255)) {
- M_LADD(s1, iptr->val.l, d, CONST);
+ M_LADD_IMM(s1, iptr->val.l, d);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_LADD(s1, REG_ITMP2, d, REG);
+ M_LADD(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_ISUB(s1, s2, d, REG);
+ M_ISUB(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_ISUB(s1, iptr->val.i, d, CONST);
+ M_ISUB_IMM(s1, iptr->val.i, d);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_ISUB(s1, REG_ITMP2, d, REG);
+ M_ISUB(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_LSUB(s1, s2, d, REG);
+ M_LSUB(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.l >= 0) && (iptr->val.l <= 255)) {
- M_LSUB(s1, iptr->val.l, d, CONST);
+ M_LSUB_IMM(s1, iptr->val.l, d);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_LSUB(s1, REG_ITMP2, d, REG);
+ M_LSUB(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_IMUL(s1, s2, d, REG);
+ M_IMUL(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_IMUL(s1, iptr->val.i, d, CONST);
+ M_IMUL_IMM(s1, iptr->val.i, d);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_IMUL(s1, REG_ITMP2, d, REG);
+ M_IMUL(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_LMUL (s1, s2, d, REG);
+ M_LMUL (s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.l >= 0) && (iptr->val.l <= 255)) {
- M_LMUL(s1, iptr->val.l, d, CONST);
+ M_LMUL_IMM(s1, iptr->val.l, d);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_LMUL(s1, REG_ITMP2, d, REG);
+ M_LMUL(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
d = reg_of_var(iptr->dst, REG_ITMP3);
if (iptr->val.i <= 15) {
M_LDA(REG_ITMP2, s1, (1 << iptr->val.i) -1);
- M_CMOVGE(s1, s1, REG_ITMP2, REG);
+ M_CMOVGE(s1, s1, REG_ITMP2);
}
else {
- M_SRA(s1, 63, REG_ITMP2, CONST);
- M_SRL(REG_ITMP2, 64 - iptr->val.i, REG_ITMP2, CONST);
- M_LADD(s1, REG_ITMP2, REG_ITMP2, REG);
+ M_SRA_IMM(s1, 63, REG_ITMP2);
+ M_SRL_IMM(REG_ITMP2, 64 - iptr->val.i, REG_ITMP2);
+ M_LADD(s1, REG_ITMP2, REG_ITMP2);
}
- M_SRA(REG_ITMP2, iptr->val.i, d, CONST);
+ M_SRA_IMM(REG_ITMP2, iptr->val.i, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_AND(s2, 0x1f, REG_ITMP3, CONST);
- M_SLL(s1, REG_ITMP3, d, REG);
- M_IADD(d, REG_ZERO, d, REG);
+ M_AND_IMM(s2, 0x1f, REG_ITMP3);
+ M_SLL(s1, REG_ITMP3, d);
+ M_IADD(d, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SLL(s1, iptr->val.i & 0x1f, d, CONST);
- M_IADD(d, REG_ZERO, d, REG);
+ M_SLL_IMM(s1, iptr->val.i & 0x1f, d);
+ M_IADD(d, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_AND(s2, 0x1f, REG_ITMP3, 1);
- M_SRA(s1, REG_ITMP3, d, 0);
+ M_AND_IMM(s2, 0x1f, REG_ITMP3);
+ M_SRA(s1, REG_ITMP3, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SRA(s1, iptr->val.i & 0x1f, d, CONST);
+ M_SRA_IMM(s1, iptr->val.i & 0x1f, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_AND (s2, 0x1f, REG_ITMP2, 1);
+ M_AND_IMM(s2, 0x1f, REG_ITMP2);
M_IZEXT(s1, d);
- M_SRL ( d, REG_ITMP2, d, REG);
- M_IADD ( d, REG_ZERO, d, REG);
+ M_SRL(d, REG_ITMP2, d);
+ M_IADD(d, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
M_IZEXT(s1, d);
- M_SRL(d, iptr->val.i & 0x1f, d, CONST);
- M_IADD(d, REG_ZERO, d, REG);
+ M_SRL_IMM(d, iptr->val.i & 0x1f, d);
+ M_IADD(d, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SLL(s1, s2, d, REG);
+ M_SLL(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SLL(s1, iptr->val.l & 0x3f, d, CONST);
+ M_SLL_IMM(s1, iptr->val.l & 0x3f, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SRA(s1, s2, d, 0);
+ M_SRA(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SRA(s1, iptr->val.l & 0x3f, d, CONST);
+ M_SRA_IMM(s1, iptr->val.l & 0x3f, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SRL(s1, s2, d, 0);
+ M_SRL(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_SRL(s1, iptr->val.l & 0x3f, d, CONST);
+ M_SRL_IMM(s1, iptr->val.l & 0x3f, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_AND(s1, s2, d, REG);
+ M_AND(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_AND(s1, iptr->val.i, d, CONST);
+ M_AND_IMM(s1, iptr->val.i, d);
}
else if (iptr->val.i == 0xffff) {
M_CZEXT(s1, d);
}
else if (iptr->val.i == 0xffffff) {
- M_ZAPNOT(s1, 0x07, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x07, d);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_AND(s1, REG_ITMP2, d, REG);
+ M_AND(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
s1 = REG_ITMP1;
}
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_AND(s1, iptr->val.i, d, CONST);
+ M_AND_IMM(s1, iptr->val.i, d);
M_BGEZ(s1, 3);
- M_ISUB(REG_ZERO, s1, d, REG);
- M_AND(d, iptr->val.i, d, CONST);
+ M_ISUB(REG_ZERO, s1, d);
+ M_AND_IMM(d, iptr->val.i, d);
}
else if (iptr->val.i == 0xffff) {
M_CZEXT(s1, d);
M_BGEZ(s1, 3);
- M_ISUB(REG_ZERO, s1, d, REG);
+ M_ISUB(REG_ZERO, s1, d);
M_CZEXT(d, d);
}
else if (iptr->val.i == 0xffffff) {
- M_ZAPNOT(s1, 0x07, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x07, d);
M_BGEZ(s1, 3);
- M_ISUB(REG_ZERO, s1, d, REG);
- M_ZAPNOT(d, 0x07, d, CONST);
+ M_ISUB(REG_ZERO, s1, d);
+ M_ZAPNOT_IMM(d, 0x07, d);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_AND(s1, REG_ITMP2, d, REG);
+ M_AND(s1, REG_ITMP2, d);
M_BGEZ(s1, 3);
- M_ISUB(REG_ZERO, s1, d, REG);
- M_AND(d, REG_ITMP2, d, REG);
+ M_ISUB(REG_ZERO, s1, d);
+ M_AND(d, REG_ITMP2, d);
}
- M_ISUB(REG_ZERO, d, d, REG);
+ M_ISUB(REG_ZERO, d, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
M_BLTZ(s1, 7);
M_CZEXT(s1, REG_ITMP2);
- M_SRA(s1, 16, d, CONST);
- M_CMPLT(REG_ITMP2, d, REG_ITMP1, REG);
- M_ISUB(REG_ITMP2, d, d, REG);
+ M_SRA_IMM(s1, 16, d);
+ M_CMPLT(REG_ITMP2, d, REG_ITMP1);
+ M_ISUB(REG_ITMP2, d, d);
M_CZEXT(d, d);
- M_IADD(d, REG_ITMP1, d, REG);
+ M_IADD(d, REG_ITMP1, d);
M_BR(11 + (s1 == REG_ITMP1));
- M_ISUB(REG_ZERO, s1, REG_ITMP1, REG);
+ M_ISUB(REG_ZERO, s1, REG_ITMP1);
M_CZEXT(REG_ITMP1, REG_ITMP2);
- M_SRA(REG_ITMP1, 16, d, CONST);
- M_CMPLT(REG_ITMP2, d, REG_ITMP1, REG);
- M_ISUB(REG_ITMP2, d, d, REG);
+ M_SRA_IMM(REG_ITMP1, 16, d);
+ M_CMPLT(REG_ITMP2, d, REG_ITMP1);
+ M_ISUB(REG_ITMP2, d, d);
M_CZEXT(d, d);
- M_IADD(d, REG_ITMP1, d, REG);
- M_ISUB(REG_ZERO, d, d, REG);
+ M_IADD(d, REG_ITMP1, d);
+ M_ISUB(REG_ZERO, d, d);
if (s1 == REG_ITMP1) {
var_to_reg_int(s1, src, REG_ITMP1);
}
- M_SLL(s1, 33, REG_ITMP2, CONST);
- M_CMPEQ(REG_ITMP2, REG_ZERO, REG_ITMP2, REG);
- M_ISUB(d, REG_ITMP2, d, REG);
+ M_SLL_IMM(s1, 33, REG_ITMP2);
+ M_CMPEQ(REG_ITMP2, REG_ZERO, REG_ITMP2);
+ M_ISUB(d, REG_ITMP2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.l >= 0) && (iptr->val.l <= 255)) {
- M_AND(s1, iptr->val.l, d, CONST);
+ M_AND_IMM(s1, iptr->val.l, d);
}
else if (iptr->val.l == 0xffffL) {
M_CZEXT(s1, d);
}
else if (iptr->val.l == 0xffffffL) {
- M_ZAPNOT(s1, 0x07, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x07, d);
}
else if (iptr->val.l == 0xffffffffL) {
M_IZEXT(s1, d);
}
else if (iptr->val.l == 0xffffffffffL) {
- M_ZAPNOT(s1, 0x1f, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x1f, d);
}
else if (iptr->val.l == 0xffffffffffffL) {
- M_ZAPNOT(s1, 0x3f, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x3f, d);
}
else if (iptr->val.l == 0xffffffffffffffL) {
- M_ZAPNOT(s1, 0x7f, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x7f, d);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_AND(s1, REG_ITMP2, d, REG);
+ M_AND(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
s1 = REG_ITMP1;
}
if ((iptr->val.l >= 0) && (iptr->val.l <= 255)) {
- M_AND(s1, iptr->val.l, d, CONST);
+ M_AND_IMM(s1, iptr->val.l, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
- M_AND(d, iptr->val.l, d, CONST);
+ M_LSUB(REG_ZERO, s1, d);
+ M_AND_IMM(d, iptr->val.l, d);
}
else if (iptr->val.l == 0xffffL) {
M_CZEXT(s1, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
+ M_LSUB(REG_ZERO, s1, d);
M_CZEXT(d, d);
}
else if (iptr->val.l == 0xffffffL) {
- M_ZAPNOT(s1, 0x07, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x07, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
- M_ZAPNOT(d, 0x07, d, CONST);
+ M_LSUB(REG_ZERO, s1, d);
+ M_ZAPNOT_IMM(d, 0x07, d);
}
else if (iptr->val.l == 0xffffffffL) {
M_IZEXT(s1, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
+ M_LSUB(REG_ZERO, s1, d);
M_IZEXT(d, d);
}
else if (iptr->val.l == 0xffffffffffL) {
- M_ZAPNOT(s1, 0x1f, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x1f, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
- M_ZAPNOT(d, 0x1f, d, CONST);
+ M_LSUB(REG_ZERO, s1, d);
+ M_ZAPNOT_IMM(d, 0x1f, d);
}
else if (iptr->val.l == 0xffffffffffffL) {
- M_ZAPNOT(s1, 0x3f, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x3f, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
- M_ZAPNOT(d, 0x3f, d, CONST);
+ M_LSUB(REG_ZERO, s1, d);
+ M_ZAPNOT_IMM(d, 0x3f, d);
}
else if (iptr->val.l == 0xffffffffffffffL) {
- M_ZAPNOT(s1, 0x7f, d, CONST);
+ M_ZAPNOT_IMM(s1, 0x7f, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
- M_ZAPNOT(d, 0x7f, d, CONST);
+ M_LSUB(REG_ZERO, s1, d);
+ M_ZAPNOT_IMM(d, 0x7f, d);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_AND(s1, REG_ITMP2, d, REG);
+ M_AND(s1, REG_ITMP2, d);
M_BGEZ(s1, 3);
- M_LSUB(REG_ZERO, s1, d, REG);
- M_AND(d, REG_ITMP2, d, REG);
+ M_LSUB(REG_ZERO, s1, d);
+ M_AND(d, REG_ITMP2, d);
}
- M_LSUB(REG_ZERO, d, d, REG);
+ M_LSUB(REG_ZERO, d, d);
store_reg_to_var_int(iptr->dst, d);
break;
s1 = REG_ITMP3;
}
M_CZEXT(s1, REG_ITMP2);
- M_SRA(s1, 16, d, CONST);
- M_CMPLT(REG_ITMP2, d, REG_ITMP1, REG);
- M_LSUB(REG_ITMP2, d, d, REG);
+ M_SRA_IMM(s1, 16, d);
+ M_CMPLT(REG_ITMP2, d, REG_ITMP1);
+ M_LSUB(REG_ITMP2, d, d);
M_CZEXT(d, d);
- M_LADD(d, REG_ITMP1, d, REG);
+ M_LADD(d, REG_ITMP1, d);
M_LDA(REG_ITMP2, REG_ZERO, -1);
- M_SRL(REG_ITMP2, 33, REG_ITMP2, CONST);
+ M_SRL_IMM(REG_ITMP2, 33, REG_ITMP2);
if (s1 == REG_ITMP1) {
var_to_reg_int(s1, src, REG_ITMP1);
}
- M_CMPULT(s1, REG_ITMP2, REG_ITMP2, REG);
+ M_CMPULT(s1, REG_ITMP2, REG_ITMP2);
M_BNEZ(REG_ITMP2, 11);
M_LDA(d, REG_ZERO, -257);
- M_ZAPNOT(d, 0xcd, d, CONST);
- M_LSUB(REG_ZERO, s1, REG_ITMP2, REG);
- M_CMOVGE(s1, s1, REG_ITMP2, REG);
- M_UMULH(REG_ITMP2, d, REG_ITMP2, REG);
- M_SRL(REG_ITMP2, 16, REG_ITMP2, CONST);
- M_LSUB(REG_ZERO, REG_ITMP2, d, REG);
- M_CMOVGE(s1, REG_ITMP2, d, REG);
- M_SLL(d, 16, REG_ITMP2, CONST);
- M_LADD(d, REG_ITMP2, d, REG);
- M_LSUB(s1, d, d, REG);
+ M_ZAPNOT_IMM(d, 0xcd, d);
+ M_LSUB(REG_ZERO, s1, REG_ITMP2);
+ M_CMOVGE(s1, s1, REG_ITMP2);
+ M_UMULH(REG_ITMP2, d, REG_ITMP2);
+ M_SRL_IMM(REG_ITMP2, 16, REG_ITMP2);
+ M_LSUB(REG_ZERO, REG_ITMP2, d);
+ M_CMOVGE(s1, REG_ITMP2, d);
+ M_SLL_IMM(d, 16, REG_ITMP2);
+ M_LADD(d, REG_ITMP2, d);
+ M_LSUB(s1, d, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_OR( s1,s2, d, REG);
+ M_OR( s1,s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_OR(s1, iptr->val.i, d, CONST);
+ M_OR_IMM(s1, iptr->val.i, d);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_OR(s1, REG_ITMP2, d, REG);
+ M_OR(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.l >= 0) && (iptr->val.l <= 255)) {
- M_OR(s1, iptr->val.l, d, CONST);
+ M_OR_IMM(s1, iptr->val.l, d);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_OR(s1, REG_ITMP2, d, REG);
+ M_OR(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_XOR(s1, s2, d, REG);
+ M_XOR(s1, s2, d);
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_XOR(s1, iptr->val.i, d, CONST);
+ M_XOR_IMM(s1, iptr->val.i, d);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_XOR(s1, REG_ITMP2, d, REG);
+ M_XOR(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src, REG_ITMP1);
d = reg_of_var(iptr->dst, REG_ITMP3);
if ((iptr->val.l >= 0) && (iptr->val.l <= 255)) {
- M_XOR(s1, iptr->val.l, d, CONST);
+ M_XOR_IMM(s1, iptr->val.l, d);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_XOR(s1, REG_ITMP2, d, REG);
+ M_XOR(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_CMPLT(s1, s2, REG_ITMP3, REG);
- M_CMPLT(s2, s1, REG_ITMP1, REG);
- M_LSUB (REG_ITMP1, REG_ITMP3, d, REG);
+ M_CMPLT(s1, s2, REG_ITMP3);
+ M_CMPLT(s2, s1, REG_ITMP1);
+ M_LSUB (REG_ITMP1, REG_ITMP3, d);
store_reg_to_var_int(iptr->dst, d);
break;
else
s1 = var->regoff;
if ((iptr->val.i >= 0) && (iptr->val.i <= 255)) {
- M_IADD(s1, iptr->val.i, s1, CONST);
+ M_IADD_IMM(s1, iptr->val.i, s1);
}
else if ((iptr->val.i > -256) && (iptr->val.i < 0)) {
- M_ISUB(s1, (-iptr->val.i), s1, CONST);
+ M_ISUB_IMM(s1, (-iptr->val.i), s1);
}
else {
M_LDA (s1, s1, iptr->val.i);
- M_IADD(s1, REG_ZERO, s1, REG);
+ M_IADD(s1, REG_ZERO, s1);
}
if (var->flags & INMEMORY)
M_LST(s1, REG_SP, 8 * var->regoff);
if (checkfloats) {
M_FDIVS(s1,s2, REG_FTMP3);
M_TRAPB;
- M_CVTDL_CS(REG_ZERO, REG_FTMP3, REG_FTMP3); /* round to integer */
+ M_CVTDL_CS(REG_FTMP3, REG_FTMP3); /* round to integer */
M_TRAPB;
- M_CVTLF(REG_ZERO, REG_FTMP3, REG_FTMP3);
+ M_CVTLF(REG_FTMP3, REG_FTMP3);
M_FMULS(REG_FTMP3, s2, REG_FTMP3);
M_TRAPB;
M_FSUBS(s1, REG_FTMP3, d);
}
else {
M_FDIV(s1,s2, REG_FTMP3);
- M_CVTDL_C(REG_ZERO, REG_FTMP3, REG_FTMP3); /* round to integer */
- M_CVTLF(REG_ZERO, REG_FTMP3, REG_FTMP3);
+ M_CVTDL_C(REG_FTMP3, REG_FTMP3); /* round to integer */
+ M_CVTLF(REG_FTMP3, REG_FTMP3);
M_FMUL(REG_FTMP3, s2, REG_FTMP3);
M_FSUB(s1, REG_FTMP3, d);
}
if (checkfloats) {
M_DDIVS(s1,s2, REG_FTMP3);
M_TRAPB;
- M_CVTDL_CS(REG_ZERO, REG_FTMP3, REG_FTMP3); /* round to integer */
+ M_CVTDL_CS(REG_FTMP3, REG_FTMP3); /* round to integer */
M_TRAPB;
- M_CVTLD(REG_ZERO, REG_FTMP3, REG_FTMP3);
+ M_CVTLD(REG_FTMP3, REG_FTMP3);
M_DMULS(REG_FTMP3, s2, REG_FTMP3);
M_TRAPB;
M_DSUBS(s1, REG_FTMP3, d);
}
else {
M_DDIV(s1,s2, REG_FTMP3);
- M_CVTDL_C(REG_ZERO, REG_FTMP3, REG_FTMP3); /* round to integer */
- M_CVTLD(REG_ZERO, REG_FTMP3, REG_FTMP3);
+ M_CVTDL_C(REG_FTMP3, REG_FTMP3); /* round to integer */
+ M_CVTLD(REG_FTMP3, REG_FTMP3);
M_DMUL(REG_FTMP3, s2, REG_FTMP3);
M_DSUB(s1, REG_FTMP3, d);
}
a = dseg_adddouble(0.0);
M_LST (s1, REG_PV, a);
M_DLD (d, REG_PV, a);
- M_CVTLF(REG_ZERO, d, d);
+ M_CVTLF(d, d);
store_reg_to_var_flt(iptr->dst, d);
break;
a = dseg_adddouble(0.0);
M_LST (s1, REG_PV, a);
M_DLD (d, REG_PV, a);
- M_CVTLD(REG_ZERO, d, d);
+ M_CVTLD(d, d);
store_reg_to_var_flt(iptr->dst, d);
break;
d = reg_of_var(iptr->dst, REG_ITMP3);
a = dseg_adddouble(0.0);
if (checkfloats) {
- M_CVTDL_CS(REG_ZERO, s1, REG_FTMP1);
+ M_CVTDL_CS(s1, REG_FTMP1);
M_TRAPB;
M_CVTLIS(REG_FTMP1, REG_FTMP2);
M_TRAPB;
}
else {
- M_CVTDL_C(REG_ZERO, s1, REG_FTMP1);
+ M_CVTDL_C(s1, REG_FTMP1);
M_CVTLI(REG_FTMP1, REG_FTMP2);
}
M_DST (REG_FTMP1, REG_PV, a);
d = reg_of_var(iptr->dst, REG_ITMP3);
a = dseg_adddouble(0.0);
if (checkfloats) {
- M_CVTDL_CS(REG_ZERO, s1, REG_FTMP1);
+ M_CVTDL_CS(s1, REG_FTMP1);
M_TRAPB;
}
else {
- M_CVTDL_C(REG_ZERO, s1, REG_FTMP1);
+ M_CVTDL_C(s1, REG_FTMP1);
}
M_DST (REG_FTMP1, REG_PV, a);
M_LLD (d, REG_PV, a);
var_to_reg_flt(s1, src, REG_FTMP1);
d = reg_of_var(iptr->dst, REG_FTMP3);
if (checkfloats) {
- M_CVTDFS(REG_ZERO, s1, d);
+ M_CVTDFS(s1, d);
M_TRAPB;
}
else {
- M_CVTDF(REG_ZERO, s1, d);
+ M_CVTDF(s1, d);
}
store_reg_to_var_flt(iptr->dst, d);
break;
var_to_reg_flt(s2, src, REG_FTMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
if (checkfloats) {
- M_LSUB (REG_ZERO, 1, d, CONST);
+ M_LSUB_IMM(REG_ZERO, 1, d);
M_FCMPEQS(s1, s2, REG_FTMP3);
M_TRAPB;
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instructions */
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instructions */
M_CLR (d);
M_FCMPLTS(s2, s1, REG_FTMP3);
M_TRAPB;
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instruction */
- M_LADD (REG_ZERO, 1, d, CONST);
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instruction */
+ M_LADD_IMM(REG_ZERO, 1, d);
}
else {
- M_LSUB (REG_ZERO, 1, d, CONST);
+ M_LSUB_IMM(REG_ZERO, 1, d);
M_FCMPEQ(s1, s2, REG_FTMP3);
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instructions */
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instructions */
M_CLR (d);
M_FCMPLT(s2, s1, REG_FTMP3);
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instruction */
- M_LADD (REG_ZERO, 1, d, CONST);
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instruction */
+ M_LADD_IMM(REG_ZERO, 1, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
var_to_reg_flt(s2, src, REG_FTMP2);
d = reg_of_var(iptr->dst, REG_ITMP3);
if (checkfloats) {
- M_LADD (REG_ZERO, 1, d, CONST);
+ M_LADD_IMM(REG_ZERO, 1, d);
M_FCMPEQS(s1, s2, REG_FTMP3);
M_TRAPB;
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instruction */
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instruction */
M_CLR (d);
M_FCMPLTS(s1, s2, REG_FTMP3);
M_TRAPB;
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instruction */
- M_LSUB (REG_ZERO, 1, d, CONST);
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instruction */
+ M_LSUB_IMM(REG_ZERO, 1, d);
}
else {
- M_LADD (REG_ZERO, 1, d, CONST);
+ M_LADD_IMM(REG_ZERO, 1, d);
M_FCMPEQ(s1, s2, REG_FTMP3);
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instruction */
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instruction */
M_CLR (d);
M_FCMPLT(s1, s2, REG_FTMP3);
- M_FBEQZ (REG_FTMP3, CONST); /* jump over next instruction */
- M_LSUB (REG_ZERO, 1, d, CONST);
+ M_FBEQZ (REG_FTMP3, 1); /* jump over next instruction */
+ M_LSUB_IMM(REG_ZERO, 1, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
#define gen_bound_check \
if (checkbounds) {\
M_ILD(REG_ITMP3, s1, OFFSET(java_arrayheader, size));\
- M_CMPULT(s2, REG_ITMP3, REG_ITMP3, REG);\
- M_BEQZ(REG_ITMP3, REG);\
+ M_CMPULT(s2, REG_ITMP3, REG_ITMP3);\
+ M_BEQZ(REG_ITMP3, 0);\
mcode_addxboundrefs(mcodeptr);\
}
d = reg_of_var(iptr->dst, REG_ITMP3);
gen_nullptr_check(s1);
gen_bound_check;
- M_SAADDQ(s2, s1, REG_ITMP1, REG);
+ M_SAADDQ(s2, s1, REG_ITMP1);
M_ALD( d, REG_ITMP1, OFFSET(java_objectarray, data[0]));
store_reg_to_var_int(iptr->dst, d);
break;
d = reg_of_var(iptr->dst, REG_ITMP3);
gen_nullptr_check(s1);
gen_bound_check;
- M_S8ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S8ADDQ(s2, s1, REG_ITMP1);
M_LLD(d, REG_ITMP1, OFFSET(java_longarray, data[0]));
store_reg_to_var_int(iptr->dst, d);
break;
d = reg_of_var(iptr->dst, REG_ITMP3);
gen_nullptr_check(s1);
gen_bound_check;
- M_S4ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S4ADDQ(s2, s1, REG_ITMP1);
M_ILD(d, REG_ITMP1, OFFSET(java_intarray, data[0]));
store_reg_to_var_int(iptr->dst, d);
break;
d = reg_of_var(iptr->dst, REG_FTMP3);
gen_nullptr_check(s1);
gen_bound_check;
- M_S4ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S4ADDQ(s2, s1, REG_ITMP1);
M_FLD(d, REG_ITMP1, OFFSET(java_floatarray, data[0]));
store_reg_to_var_flt(iptr->dst, d);
break;
d = reg_of_var(iptr->dst, REG_FTMP3);
gen_nullptr_check(s1);
gen_bound_check;
- M_S8ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S8ADDQ(s2, s1, REG_ITMP1);
M_DLD(d, REG_ITMP1, OFFSET(java_doublearray, data[0]));
store_reg_to_var_flt(iptr->dst, d);
break;
gen_nullptr_check(s1);
gen_bound_check;
if (has_ext_instr_set) {
- M_LADD(s2, s1, REG_ITMP1, REG);
- M_LADD(s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD(s2, s1, REG_ITMP1);
+ M_LADD(s2, REG_ITMP1, REG_ITMP1);
M_SLDU(d, REG_ITMP1, OFFSET(java_chararray, data[0]));
}
else {
- M_LADD (s2, s1, REG_ITMP1, 0);
- M_LADD (s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD (s2, s1, REG_ITMP1);
+ M_LADD (s2, REG_ITMP1, REG_ITMP1);
M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
M_LDA (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
- M_EXTWL(REG_ITMP2, REG_ITMP1, d, REG);
+ M_EXTWL(REG_ITMP2, REG_ITMP1, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
gen_nullptr_check(s1);
gen_bound_check;
if (has_ext_instr_set) {
- M_LADD(s2, s1, REG_ITMP1, REG);
- M_LADD(s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD(s2, s1, REG_ITMP1);
+ M_LADD(s2, REG_ITMP1, REG_ITMP1);
M_SLDU( d, REG_ITMP1, OFFSET (java_shortarray, data[0]));
M_SSEXT(d, d);
}
else {
- M_LADD(s2, s1, REG_ITMP1, 0);
- M_LADD(s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD(s2, s1, REG_ITMP1);
+ M_LADD(s2, REG_ITMP1, REG_ITMP1);
M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0])+2);
- M_EXTQH(REG_ITMP2, REG_ITMP1, d, REG);
- M_SRA(d, 48, d, CONST);
+ M_EXTQH(REG_ITMP2, REG_ITMP1, d);
+ M_SRA_IMM(d, 48, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
gen_nullptr_check(s1);
gen_bound_check;
if (has_ext_instr_set) {
- M_LADD (s2, s1, REG_ITMP1, REG);
+ M_LADD (s2, s1, REG_ITMP1);
M_BLDU (d, REG_ITMP1, OFFSET (java_shortarray, data[0]));
M_BSEXT (d, d);
}
else {
- M_LADD(s2, s1, REG_ITMP1, REG);
+ M_LADD(s2, s1, REG_ITMP1);
M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
M_LDA(REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0])+1);
- M_EXTQH(REG_ITMP2, REG_ITMP1, d, REG);
- M_SRA(d, 56, d, CONST);
+ M_EXTQH(REG_ITMP2, REG_ITMP1, d);
+ M_SRA_IMM(d, 56, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
gen_nullptr_check(s1);
gen_bound_check;
var_to_reg_int(s3, src, REG_ITMP3);
- M_SAADDQ(s2, s1, REG_ITMP1, REG);
+ M_SAADDQ(s2, s1, REG_ITMP1);
M_AST (s3, REG_ITMP1, OFFSET(java_objectarray, data[0]));
break;
gen_nullptr_check(s1);
gen_bound_check;
var_to_reg_int(s3, src, REG_ITMP3);
- M_S8ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S8ADDQ(s2, s1, REG_ITMP1);
M_LST (s3, REG_ITMP1, OFFSET(java_longarray, data[0]));
break;
gen_nullptr_check(s1);
gen_bound_check;
var_to_reg_int(s3, src, REG_ITMP3);
- M_S4ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S4ADDQ(s2, s1, REG_ITMP1);
M_IST (s3, REG_ITMP1, OFFSET(java_intarray, data[0]));
break;
gen_nullptr_check(s1);
gen_bound_check;
var_to_reg_flt(s3, src, REG_FTMP3);
- M_S4ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S4ADDQ(s2, s1, REG_ITMP1);
M_FST (s3, REG_ITMP1, OFFSET(java_floatarray, data[0]));
break;
gen_nullptr_check(s1);
gen_bound_check;
var_to_reg_flt(s3, src, REG_FTMP3);
- M_S8ADDQ(s2, s1, REG_ITMP1, REG);
+ M_S8ADDQ(s2, s1, REG_ITMP1);
M_DST (s3, REG_ITMP1, OFFSET(java_doublearray, data[0]));
break;
gen_bound_check;
var_to_reg_int(s3, src, REG_ITMP3);
if (has_ext_instr_set) {
- M_LADD(s2, s1, REG_ITMP1, REG);
- M_LADD(s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD(s2, s1, REG_ITMP1);
+ M_LADD(s2, REG_ITMP1, REG_ITMP1);
M_SST (s3, REG_ITMP1, OFFSET(java_chararray, data[0]));
}
else {
- M_LADD (s2, s1, REG_ITMP1, REG);
- M_LADD (s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD (s2, s1, REG_ITMP1);
+ M_LADD (s2, REG_ITMP1, REG_ITMP1);
M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_chararray, data[0]));
M_LDA (REG_ITMP1, REG_ITMP1, OFFSET(java_chararray, data[0]));
- M_INSWL(s3, REG_ITMP1, REG_ITMP3, REG);
- M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2, REG);
- M_OR (REG_ITMP2, REG_ITMP3, REG_ITMP2, REG);
- M_LST_U(REG_ITMP2, REG_ITMP1, REG);
+ M_INSWL(s3, REG_ITMP1, REG_ITMP3);
+ M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
+ M_OR (REG_ITMP2, REG_ITMP3, REG_ITMP2);
+ M_LST_U(REG_ITMP2, REG_ITMP1, 0);
}
break;
gen_bound_check;
var_to_reg_int(s3, src, REG_ITMP3);
if (has_ext_instr_set) {
- M_LADD(s2, s1, REG_ITMP1, REG);
- M_LADD(s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD(s2, s1, REG_ITMP1);
+ M_LADD(s2, REG_ITMP1, REG_ITMP1);
M_SST (s3, REG_ITMP1, OFFSET(java_shortarray, data[0]));
}
else {
- M_LADD (s2, s1, REG_ITMP1, REG);
- M_LADD (s2, REG_ITMP1, REG_ITMP1, REG);
+ M_LADD (s2, s1, REG_ITMP1);
+ M_LADD (s2, REG_ITMP1, REG_ITMP1);
M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_shortarray, data[0]));
M_LDA (REG_ITMP1, REG_ITMP1, OFFSET(java_shortarray, data[0]));
- M_INSWL(s3, REG_ITMP1, REG_ITMP3, REG);
- M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2, REG);
- M_OR (REG_ITMP2, REG_ITMP3, REG_ITMP2, REG);
- M_LST_U(REG_ITMP2, REG_ITMP1, REG);
+ M_INSWL(s3, REG_ITMP1, REG_ITMP3);
+ M_MSKWL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
+ M_OR (REG_ITMP2, REG_ITMP3, REG_ITMP2);
+ M_LST_U(REG_ITMP2, REG_ITMP1, 0);
}
break;
gen_bound_check;
var_to_reg_int(s3, src, REG_ITMP3);
if (has_ext_instr_set) {
- M_LADD(s2, s1, REG_ITMP1, REG);
+ M_LADD(s2, s1, REG_ITMP1);
M_BST (s3, REG_ITMP1, OFFSET(java_bytearray, data[0]));
}
else {
- M_LADD (s2, s1, REG_ITMP1, 0);
+ M_LADD (s2, s1, REG_ITMP1);
M_LLD_U(REG_ITMP2, REG_ITMP1, OFFSET(java_bytearray, data[0]));
M_LDA (REG_ITMP1, REG_ITMP1, OFFSET(java_bytearray, data[0]));
- M_INSBL(s3, REG_ITMP1, REG_ITMP3, REG);
- M_MSKBL(REG_ITMP2, REG_ITMP1, REG_ITMP2, REG);
- M_OR (REG_ITMP2, REG_ITMP3, REG_ITMP2, REG);
- M_LST_U(REG_ITMP2, REG_ITMP1, REG);
+ M_INSBL(s3, REG_ITMP1, REG_ITMP3);
+ M_MSKBL(REG_ITMP2, REG_ITMP1, REG_ITMP2);
+ M_OR (REG_ITMP2, REG_ITMP3, REG_ITMP2);
+ M_LST_U(REG_ITMP2, REG_ITMP1, 0);
}
break;
switch (iptr->op1) {
case TYPE_INT:
var_to_reg_int(s2, src, REG_ITMP2);
- M_IST(s2, REG_ITMP1, REG);
+ M_IST(s2, REG_ITMP1, 0);
break;
case TYPE_LNG:
var_to_reg_int(s2, src, REG_ITMP2);
- M_LST(s2, REG_ITMP1, REG);
+ M_LST(s2, REG_ITMP1, 0);
break;
case TYPE_ADR:
var_to_reg_int(s2, src, REG_ITMP2);
- M_AST(s2, REG_ITMP1, REG);
+ M_AST(s2, REG_ITMP1, 0);
break;
case TYPE_FLT:
var_to_reg_flt(s2, src, REG_FTMP2);
- M_FST(s2, REG_ITMP1, REG);
+ M_FST(s2, REG_ITMP1, 0);
break;
case TYPE_DBL:
var_to_reg_flt(s2, src, REG_FTMP2);
- M_DST(s2, REG_ITMP1, REG);
+ M_DST(s2, REG_ITMP1, 0);
break;
default: panic ("internal error");
}
switch (iptr->op1) {
case TYPE_INT:
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_ILD(d, REG_ITMP1, REG);
+ M_ILD(d, REG_ITMP1, 0);
store_reg_to_var_int(iptr->dst, d);
break;
case TYPE_LNG:
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_LLD(d, REG_ITMP1, REG);
+ M_LLD(d, REG_ITMP1, 0);
store_reg_to_var_int(iptr->dst, d);
break;
case TYPE_ADR:
d = reg_of_var(iptr->dst, REG_ITMP3);
- M_ALD(d, REG_ITMP1, REG);
+ M_ALD(d, REG_ITMP1, 0);
store_reg_to_var_int(iptr->dst, d);
break;
case TYPE_FLT:
d = reg_of_var(iptr->dst, REG_FTMP1);
- M_FLD(d, REG_ITMP1, REG);
+ M_FLD(d, REG_ITMP1, 0);
store_reg_to_var_flt(iptr->dst, d);
break;
case TYPE_DBL:
d = reg_of_var(iptr->dst, REG_FTMP1);
- M_DLD(d, REG_ITMP1, REG);
+ M_DLD(d, REG_ITMP1, 0);
store_reg_to_var_flt(iptr->dst, d);
break;
default: panic ("internal error");
case ICMD_JSR: /* ... ==> ... */
/* op1 = target JavaVM pc */
- M_BSR(REG_ITMP1, REG);
+ M_BSR(REG_ITMP1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
/* op1 = target JavaVM pc */
var_to_reg_int(s1, src, REG_ITMP1);
- M_BEQZ(s1, REG);
+ M_BEQZ(s1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
/* op1 = target JavaVM pc */
var_to_reg_int(s1, src, REG_ITMP1);
- M_BNEZ(s1, REG);
+ M_BNEZ(s1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.i == 0) {
- M_BEQZ(s1, REG);
+ M_BEQZ(s1, 0);
}
else {
if ((iptr->val.i > 0) && (iptr->val.i <= 255)) {
- M_CMPEQ(s1, iptr->val.i, REG_ITMP1, CONST);
+ M_CMPEQ_IMM(s1, iptr->val.i, REG_ITMP1);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_CMPEQ(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPEQ(s1, REG_ITMP2, REG_ITMP1);
}
- M_BNEZ(REG_ITMP1, REG);
+ M_BNEZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.i == 0) {
- M_BLTZ(s1, REG);
+ M_BLTZ(s1, 0);
}
else {
if ((iptr->val.i > 0) && (iptr->val.i <= 255)) {
- M_CMPLT(s1, iptr->val.i, REG_ITMP1, CONST);
+ M_CMPLT_IMM(s1, iptr->val.i, REG_ITMP1);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_CMPLT(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLT(s1, REG_ITMP2, REG_ITMP1);
}
- M_BNEZ(REG_ITMP1, REG);
+ M_BNEZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.i == 0) {
- M_BLEZ(s1, REG);
+ M_BLEZ(s1, 0);
}
else {
if ((iptr->val.i > 0) && (iptr->val.i <= 255)) {
- M_CMPLE(s1, iptr->val.i, REG_ITMP1, CONST);
+ M_CMPLE_IMM(s1, iptr->val.i, REG_ITMP1);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_CMPLE(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLE(s1, REG_ITMP2, REG_ITMP1);
}
- M_BNEZ(REG_ITMP1, REG);
+ M_BNEZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.i == 0) {
- M_BNEZ(s1, REG);
+ M_BNEZ(s1, 0);
}
else {
if ((iptr->val.i > 0) && (iptr->val.i <= 255)) {
- M_CMPEQ(s1, iptr->val.i, REG_ITMP1, CONST);
+ M_CMPEQ_IMM(s1, iptr->val.i, REG_ITMP1);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_CMPEQ(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPEQ(s1, REG_ITMP2, REG_ITMP1);
}
- M_BEQZ(REG_ITMP1, REG);
+ M_BEQZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.i == 0) {
- M_BGTZ(s1, REG);
+ M_BGTZ(s1, 0);
}
else {
if ((iptr->val.i > 0) && (iptr->val.i <= 255)) {
- M_CMPLE(s1, iptr->val.i, REG_ITMP1, CONST);
+ M_CMPLE_IMM(s1, iptr->val.i, REG_ITMP1);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_CMPLE(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLE(s1, REG_ITMP2, REG_ITMP1);
}
- M_BEQZ(REG_ITMP1, REG);
+ M_BEQZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.i == 0) {
- M_BGEZ(s1, REG);
+ M_BGEZ(s1, 0);
}
else {
if ((iptr->val.i > 0) && (iptr->val.i <= 255)) {
- M_CMPLT(s1, iptr->val.i, REG_ITMP1, CONST);
+ M_CMPLT_IMM(s1, iptr->val.i, REG_ITMP1);
}
else {
ICONST(REG_ITMP2, iptr->val.i);
- M_CMPLT(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLT(s1, REG_ITMP2, REG_ITMP1);
}
- M_BEQZ(REG_ITMP1, REG);
+ M_BEQZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.l == 0) {
- M_BEQZ(s1, REG);
+ M_BEQZ(s1, 0);
}
else {
if ((iptr->val.l > 0) && (iptr->val.l <= 255)) {
- M_CMPEQ(s1, iptr->val.l, REG_ITMP1, CONST);
+ M_CMPEQ_IMM(s1, iptr->val.l, REG_ITMP1);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_CMPEQ(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPEQ(s1, REG_ITMP2, REG_ITMP1);
}
- M_BNEZ(REG_ITMP1, REG);
+ M_BNEZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.l == 0) {
- M_BLTZ(s1, REG);
+ M_BLTZ(s1, 0);
}
else {
if ((iptr->val.l > 0) && (iptr->val.l <= 255)) {
- M_CMPLT(s1, iptr->val.l, REG_ITMP1, CONST);
+ M_CMPLT_IMM(s1, iptr->val.l, REG_ITMP1);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_CMPLT(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLT(s1, REG_ITMP2, REG_ITMP1);
}
- M_BNEZ(REG_ITMP1, REG);
+ M_BNEZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.l == 0) {
- M_BLEZ(s1, REG);
+ M_BLEZ(s1, 0);
}
else {
if ((iptr->val.l > 0) && (iptr->val.l <= 255)) {
- M_CMPLE(s1, iptr->val.l, REG_ITMP1, CONST);
+ M_CMPLE_IMM(s1, iptr->val.l, REG_ITMP1);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_CMPLE(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLE(s1, REG_ITMP2, REG_ITMP1);
}
- M_BNEZ(REG_ITMP1, REG);
+ M_BNEZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.l == 0) {
- M_BNEZ(s1, REG);
+ M_BNEZ(s1, 0);
}
else {
if ((iptr->val.l > 0) && (iptr->val.l <= 255)) {
- M_CMPEQ(s1, iptr->val.l, REG_ITMP1, CONST);
+ M_CMPEQ_IMM(s1, iptr->val.l, REG_ITMP1);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_CMPEQ(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPEQ(s1, REG_ITMP2, REG_ITMP1);
}
- M_BEQZ(REG_ITMP1, REG);
+ M_BEQZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.l == 0) {
- M_BGTZ(s1, REG);
+ M_BGTZ(s1, 0);
}
else {
if ((iptr->val.l > 0) && (iptr->val.l <= 255)) {
- M_CMPLE(s1, iptr->val.l, REG_ITMP1, CONST);
+ M_CMPLE_IMM(s1, iptr->val.l, REG_ITMP1);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_CMPLE(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLE(s1, REG_ITMP2, REG_ITMP1);
}
- M_BEQZ(REG_ITMP1, REG);
+ M_BEQZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src, REG_ITMP1);
if (iptr->val.l == 0) {
- M_BGEZ(s1, REG);
+ M_BGEZ(s1, 0);
}
else {
if ((iptr->val.l > 0) && (iptr->val.l <= 255)) {
- M_CMPLT(s1, iptr->val.l, REG_ITMP1, CONST);
+ M_CMPLT_IMM(s1, iptr->val.l, REG_ITMP1);
}
else {
LCONST(REG_ITMP2, iptr->val.l);
- M_CMPLT(s1, REG_ITMP2, REG_ITMP1, REG);
+ M_CMPLT(s1, REG_ITMP2, REG_ITMP1);
}
- M_BEQZ(REG_ITMP1, REG);
+ M_BEQZ(REG_ITMP1, 0);
}
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
- M_CMPEQ(s1, s2, REG_ITMP1, REG);
- M_BNEZ(REG_ITMP1, REG);
+ M_CMPEQ(s1, s2, REG_ITMP1);
+ M_BNEZ(REG_ITMP1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
- M_CMPEQ(s1, s2, REG_ITMP1, REG);
- M_BEQZ(REG_ITMP1, REG);
+ M_CMPEQ(s1, s2, REG_ITMP1);
+ M_BEQZ(REG_ITMP1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
- M_CMPLT(s1, s2, REG_ITMP1, REG);
- M_BNEZ(REG_ITMP1, REG);
+ M_CMPLT(s1, s2, REG_ITMP1);
+ M_BNEZ(REG_ITMP1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
- M_CMPLE(s1, s2, REG_ITMP1, REG);
- M_BEQZ(REG_ITMP1, REG);
+ M_CMPLE(s1, s2, REG_ITMP1);
+ M_BEQZ(REG_ITMP1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
- M_CMPLE(s1, s2, REG_ITMP1, REG);
- M_BNEZ(REG_ITMP1, REG);
+ M_CMPLE(s1, s2, REG_ITMP1);
+ M_BNEZ(REG_ITMP1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
var_to_reg_int(s1, src->prev, REG_ITMP1);
var_to_reg_int(s2, src, REG_ITMP2);
- M_CMPLT(s1, s2, REG_ITMP1, 0);
- M_BEQZ(REG_ITMP1, REG);
+ M_CMPLT(s1, s2, REG_ITMP1);
+ M_BEQZ(REG_ITMP1, 0);
mcode_addreference(BlockPtrOfPC(iptr->op1), mcodeptr);
break;
a = iptr->val.i;
if (iptr[1].opc == ICMD_ELSE_ICONST) {
if ((a == 1) && (iptr[1].val.i == 0)) {
- M_CMPEQ(s1, REG_ZERO, d, 0);
+ M_CMPEQ(s1, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
if ((a == 0) && (iptr[1].val.i == 1)) {
- M_CMPEQ(s1, REG_ZERO, d, 0);
- M_XOR(d, 1, d, CONST);
+ M_CMPEQ(s1, REG_ZERO, d);
+ M_XOR_IMM(d, 1, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
ICONST(d, iptr[1].val.i);
}
if ((a >= 0) && (a <= 255)) {
- M_CMOVEQ(s1, a, d, CONST);
+ M_CMOVEQ_IMM(s1, a, d);
}
else {
ICONST(REG_ITMP2, a);
- M_CMOVEQ(s1, REG_ITMP2, d, REG);
+ M_CMOVEQ(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
a = iptr->val.i;
if (iptr[1].opc == ICMD_ELSE_ICONST) {
if ((a == 0) && (iptr[1].val.i == 1)) {
- M_CMPEQ(s1, REG_ZERO, d, 0);
+ M_CMPEQ(s1, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
if ((a == 1) && (iptr[1].val.i == 0)) {
- M_CMPEQ(s1, REG_ZERO, d, 0);
- M_XOR(d, 1, d, CONST);
+ M_CMPEQ(s1, REG_ZERO, d);
+ M_XOR_IMM(d, 1, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
ICONST(d, iptr[1].val.i);
}
if ((a >= 0) && (a <= 255)) {
- M_CMOVNE(s1, a, d, CONST);
+ M_CMOVNE_IMM(s1, a, d);
}
else {
ICONST(REG_ITMP2, a);
- M_CMOVNE(s1, REG_ITMP2, d, REG);
+ M_CMOVNE(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
a = iptr->val.i;
if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
if ((a == 1) && (iptr[1].val.i == 0)) {
- M_CMPLT(s1, REG_ZERO, d, 0);
+ M_CMPLT(s1, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
if ((a == 0) && (iptr[1].val.i == 1)) {
- M_CMPLE(REG_ZERO, s1, d, 0);
+ M_CMPLE(REG_ZERO, s1, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
ICONST(d, iptr[1].val.i);
}
if ((a >= 0) && (a <= 255)) {
- M_CMOVLT(s1, a, d, CONST);
+ M_CMOVLT_IMM(s1, a, d);
}
else {
ICONST(REG_ITMP2, a);
- M_CMOVLT(s1, REG_ITMP2, d, REG);
+ M_CMOVLT(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
a = iptr->val.i;
if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
if ((a == 1) && (iptr[1].val.i == 0)) {
- M_CMPLE(REG_ZERO, s1, d, 0);
+ M_CMPLE(REG_ZERO, s1, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
if ((a == 0) && (iptr[1].val.i == 1)) {
- M_CMPLT(s1, REG_ZERO, d, 0);
+ M_CMPLT(s1, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
ICONST(d, iptr[1].val.i);
}
if ((a >= 0) && (a <= 255)) {
- M_CMOVGE(s1, a, d, CONST);
+ M_CMOVGE_IMM(s1, a, d);
}
else {
ICONST(REG_ITMP2, a);
- M_CMOVGE(s1, REG_ITMP2, d, REG);
+ M_CMOVGE(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
a = iptr->val.i;
if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
if ((a == 1) && (iptr[1].val.i == 0)) {
- M_CMPLT(REG_ZERO, s1, d, 0);
+ M_CMPLT(REG_ZERO, s1, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
if ((a == 0) && (iptr[1].val.i == 1)) {
- M_CMPLE(s1, REG_ZERO, d, 0);
+ M_CMPLE(s1, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
ICONST(d, iptr[1].val.i);
}
if ((a >= 0) && (a <= 255)) {
- M_CMOVGT(s1, a, d, CONST);
+ M_CMOVGT_IMM(s1, a, d);
}
else {
ICONST(REG_ITMP2, a);
- M_CMOVGT(s1, REG_ITMP2, d, REG);
+ M_CMOVGT(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
a = iptr->val.i;
if ((iptr[1].opc == ICMD_ELSE_ICONST)) {
if ((a == 1) && (iptr[1].val.i == 0)) {
- M_CMPLE(s1, REG_ZERO, d, 0);
+ M_CMPLE(s1, REG_ZERO, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
if ((a == 0) && (iptr[1].val.i == 1)) {
- M_CMPLT(REG_ZERO, s1, d, 0);
+ M_CMPLT(REG_ZERO, s1, d);
store_reg_to_var_int(iptr->dst, d);
break;
}
ICONST(d, iptr[1].val.i);
}
if ((a >= 0) && (a <= 255)) {
- M_CMOVLE(s1, a, d, CONST);
+ M_CMOVLE_IMM(s1, a, d);
}
else {
ICONST(REG_ITMP2, a);
- M_CMOVLE(s1, REG_ITMP2, d, REG);
+ M_CMOVLE(s1, REG_ITMP2, d);
}
store_reg_to_var_int(iptr->dst, d);
break;
if (runverbose) {
M_LDA (REG_SP, REG_SP, -24);
- M_AST(REG_RA, REG_SP, REG);
+ M_AST(REG_RA, REG_SP, 0);
M_LST(REG_RESULT, REG_SP, 8);
M_DST(REG_FRESULT, REG_SP,16);
a = dseg_addaddress (method);
}
M_DLD(REG_FRESULT, REG_SP,16);
M_LLD(REG_RESULT, REG_SP, 8);
- M_ALD(REG_RA, REG_SP, REG);
+ M_ALD(REG_RA, REG_SP, 0);
M_LDA (REG_SP, REG_SP, 24);
}
/* range check */
if (i <= 256)
- M_CMPULE(REG_ITMP1, i - 1, REG_ITMP2, CONST);
+ M_CMPULE_IMM(REG_ITMP1, i - 1, REG_ITMP2);
else {
M_LDA(REG_ITMP2, REG_ZERO, i - 1);
- M_CMPULE(REG_ITMP1, REG_ITMP2, REG_ITMP2, REG);
+ M_CMPULE(REG_ITMP1, REG_ITMP2, REG_ITMP2);
}
- M_BEQZ(REG_ITMP2, REG);
+ M_BEQZ(REG_ITMP2, 0);
mcode_addreference(BlockPtrOfPC(s4ptr[0]), mcodeptr);
/* build jump table top down and use address of lowest entry */
/* length of dataseg after last dseg_addtarget is used by load */
- M_SAADDQ(REG_ITMP1, REG_PV, REG_ITMP2, REG);
+ M_SAADDQ(REG_ITMP1, REG_PV, REG_ITMP2);
M_ALD(REG_ITMP2, REG_ITMP2, -dseglen);
M_JMP(REG_ZERO, REG_ITMP2);
ALIGNCODENOP;
s4ptr += 2;
val = s4ptr[0];
if ((val >= 0) && (val <= 255)) {
- M_CMPEQ(s1, val, REG_ITMP2, CONST);
+ M_CMPEQ_IMM(s1, val, REG_ITMP2);
}
else {
if ((val >= -32768) && (val <= 32767)) {
a = dseg_adds4 (val);
M_ILD(REG_ITMP2, REG_PV, a);
}
- M_CMPEQ(s1, REG_ITMP2, REG_ITMP2, REG);
+ M_CMPEQ(s1, REG_ITMP2, REG_ITMP2);
}
- M_BNEZ(REG_ITMP2, REG);
+ M_BNEZ(REG_ITMP2, 0);
mcode_addreference(BlockPtrOfPC(s4ptr[1]), mcodeptr);
}
M_ALD(REG_ITMP1, REG_ITMP1,
OFFSET(vftbl, interfacetable[0]) -
super->index * sizeof(methodptr*));
- M_CMPULT(REG_ZERO, REG_ITMP1, d, REG); /* REG_ITMP1 != 0 */
+ M_CMPULT(REG_ZERO, REG_ITMP1, d); /* REG_ITMP1 != 0 */
}
else { /* class */
s2 = super->vftbl->diffval;
M_ILD(REG_ITMP1, REG_ITMP1, OFFSET(vftbl, baseval));
M_LDA(REG_ITMP1, REG_ITMP1, - super->vftbl->baseval);
if (s2 <= 255)
- M_CMPULE(REG_ITMP1, s2, d, CONST);
+ M_CMPULE_IMM(REG_ITMP1, s2, d);
else {
M_LDA(REG_ITMP2, REG_ZERO, s2);
- M_CMPULE(REG_ITMP1, REG_ITMP2, d, REG);
+ M_CMPULE(REG_ITMP1, REG_ITMP2, d);
}
}
}
M_ALD(REG_ITMP1, s1, OFFSET(java_objectheader, vftbl));
M_ILD(REG_ITMP2, REG_ITMP1, OFFSET(vftbl, interfacetablelength));
M_LDA(REG_ITMP2, REG_ITMP2, - super->index);
- M_BLEZ(REG_ITMP2, REG);
+ M_BLEZ(REG_ITMP2, 0);
mcode_addxcastrefs(mcodeptr);
M_ALD(REG_ITMP2, REG_ITMP1,
OFFSET(vftbl, interfacetable[0]) -
super->index * sizeof(methodptr*));
- M_BEQZ(REG_ITMP2, REG);
+ M_BEQZ(REG_ITMP2, 0);
mcode_addxcastrefs(mcodeptr);
}
else { /* class */
M_ILD(REG_ITMP1, REG_ITMP1, OFFSET(vftbl, baseval));
M_LDA(REG_ITMP1, REG_ITMP1, - super->vftbl->baseval);
if (s2 == 0) {
- M_BNEZ(REG_ITMP1, REG);
+ M_BNEZ(REG_ITMP1, 0);
}
else if (s2 <= 255) {
- M_CMPULE(REG_ITMP1, s2, REG_ITMP2, CONST);
- M_BEQZ(REG_ITMP2, REG);
+ M_CMPULE_IMM(REG_ITMP1, s2, REG_ITMP2);
+ M_BEQZ(REG_ITMP2, 0);
}
else {
M_LDA(REG_ITMP2, REG_ZERO, s2);
- M_CMPULE(REG_ITMP1, REG_ITMP2, REG_ITMP2, REG);
- M_BEQZ(REG_ITMP2, REG);
+ M_CMPULE(REG_ITMP1, REG_ITMP2, REG_ITMP2);
+ M_BEQZ(REG_ITMP2, 0);
}
mcode_addxcastrefs(mcodeptr);
}
case ICMD_CHECKASIZE: /* ..., size ==> ..., size */
var_to_reg_int(s1, src, REG_ITMP1);
- M_BLTZ(s1, REG);
+ M_BLTZ(s1, 0);
mcode_addxcheckarefs(mcodeptr);
break;
for (s1 = iptr->op1; --s1 >= 0; src = src->prev) {
var_to_reg_int(s2, src, REG_ITMP1);
- M_BLTZ(s2, REG);
+ M_BLTZ(s2, 0);
mcode_addxcheckarefs(mcodeptr);
/* copy sizes to stack (argument numbers >= INT_ARG_CNT) */
s4 *p = (s4*) s; /* code generation pointer */
M_LDA (REG_SP, REG_SP, -8); /* build up stackframe */
- M_AST (REG_RA, REG_SP, REG); /* store return address */
+ M_AST (REG_RA, REG_SP, 0); /* store return address */
M_ALD (REG_PV, REG_PV, 8*8); /* load adress of native method */
M_JSR (REG_RA, REG_PV); /* call native method */
M_LDA (REG_PV, REG_RA, -4*4); /* recompute pv from ra */
M_ALD (REG_ITMP3, REG_PV, 9*8); /* get address of exceptionptr */
- M_ALD (REG_RA, REG_SP, REG); /* load return address */
- M_ALD (REG_ITMP1, REG_ITMP3, REG); /* load exception into reg. itmp1 */
+ M_ALD (REG_RA, REG_SP, 0); /* load return address */
+ M_ALD (REG_ITMP1, REG_ITMP3, 0); /* load exception into reg. itmp1 */
M_LDA (REG_SP, REG_SP, 8); /* remove stackframe */
- M_BNEZ (REG_ITMP1, CONST); /* if no exception then return */
+ M_BNEZ (REG_ITMP1, 1); /* if no exception then return */
M_RET (REG_ZERO, REG_RA); /* return to caller */
- M_AST (REG_ZERO, REG_ITMP3, REG); /* store NULL into exceptionptr */
+ M_AST (REG_ZERO, REG_ITMP3, 0); /* store NULL into exceptionptr */
M_LDA (REG_ITMP2, REG_RA, -4); /* move fault address into reg. itmp2 */
M_ALD (REG_ITMP3, REG_PV,10*8); /* load asm exception handler address */
#define M_JSR(a,b) M_MEM (0x1a,a,b,0x4000) /* call sbr */
#define M_RET(a,b) M_MEM (0x1a,a,b,0x8000) /* return */
-#define M_IADD(a,b,c,const) M_OP3 (0x10,0x0, a,b,c,const) /* 32 add */
-#define M_LADD(a,b,c,const) M_OP3 (0x10,0x20, a,b,c,const) /* 64 add */
-#define M_ISUB(a,b,c,const) M_OP3 (0x10,0x09, a,b,c,const) /* 32 sub */
-#define M_LSUB(a,b,c,const) M_OP3 (0x10,0x29, a,b,c,const) /* 64 sub */
-#define M_IMUL(a,b,c,const) M_OP3 (0x13,0x00, a,b,c,const) /* 32 mul */
-#define M_LMUL(a,b,c,const) M_OP3 (0x13,0x20, a,b,c,const) /* 64 mul */
-
-#define M_CMPEQ(a,b,c,const) M_OP3 (0x10,0x2d, a,b,c,const) /* c = a == b */
-#define M_CMPLT(a,b,c,const) M_OP3 (0x10,0x4d, a,b,c,const) /* c = a < b */
-#define M_CMPLE(a,b,c,const) M_OP3 (0x10,0x6d, a,b,c,const) /* c = a <= b */
-
-#define M_CMPULE(a,b,c,const) M_OP3 (0x10,0x3d, a,b,c,const) /* c = a <= b */
-#define M_CMPULT(a,b,c,const) M_OP3 (0x10,0x1d, a,b,c,const) /* c = a <= b */
-
-#define M_AND(a,b,c,const) M_OP3 (0x11,0x00, a,b,c,const) /* c = a & b */
-#define M_OR(a,b,c,const) M_OP3 (0x11,0x20, a,b,c,const) /* c = a | b */
-#define M_XOR(a,b,c,const) M_OP3 (0x11,0x40, a,b,c,const) /* c = a ^ b */
-
-#define M_MOV(a,c) M_OR (a,a,c,0) /* c = a */
-#define M_CLR(c) M_OR (31,31,c,0) /* c = 0 */
-#define M_NOP M_OR (31,31,31,0) /* ; */
-
-#define M_SLL(a,b,c,const) M_OP3 (0x12,0x39, a,b,c,const) /* c = a << b */
-#define M_SRA(a,b,c,const) M_OP3 (0x12,0x3c, a,b,c,const) /* c = a >> b */
-#define M_SRL(a,b,c,const) M_OP3 (0x12,0x34, a,b,c,const) /* c = a >>>b */
+#define M_IADD(a,b,c) M_OP3 (0x10,0x0, a,b,c,0) /* 32 add */
+#define M_LADD(a,b,c) M_OP3 (0x10,0x20, a,b,c,0) /* 64 add */
+#define M_ISUB(a,b,c) M_OP3 (0x10,0x09, a,b,c,0) /* 32 sub */
+#define M_LSUB(a,b,c) M_OP3 (0x10,0x29, a,b,c,0) /* 64 sub */
+#define M_IMUL(a,b,c) M_OP3 (0x13,0x00, a,b,c,0) /* 32 mul */
+#define M_LMUL(a,b,c) M_OP3 (0x13,0x20, a,b,c,0) /* 64 mul */
+
+#define M_IADD_IMM(a,b,c) M_OP3 (0x10,0x0, a,b,c,1) /* 32 add */
+#define M_LADD_IMM(a,b,c) M_OP3 (0x10,0x20, a,b,c,1) /* 64 add */
+#define M_ISUB_IMM(a,b,c) M_OP3 (0x10,0x09, a,b,c,1) /* 32 sub */
+#define M_LSUB_IMM(a,b,c) M_OP3 (0x10,0x29, a,b,c,1) /* 64 sub */
+#define M_IMUL_IMM(a,b,c) M_OP3 (0x13,0x00, a,b,c,1) /* 32 mul */
+#define M_LMUL_IMM(a,b,c) M_OP3 (0x13,0x20, a,b,c,1) /* 64 mul */
+
+#define M_CMPEQ(a,b,c) M_OP3 (0x10,0x2d, a,b,c,0) /* c = a == b */
+#define M_CMPLT(a,b,c) M_OP3 (0x10,0x4d, a,b,c,0) /* c = a < b */
+#define M_CMPLE(a,b,c) M_OP3 (0x10,0x6d, a,b,c,0) /* c = a <= b */
+
+#define M_CMPULE(a,b,c) M_OP3 (0x10,0x3d, a,b,c,0) /* c = a <= b */
+#define M_CMPULT(a,b,c) M_OP3 (0x10,0x1d, a,b,c,0) /* c = a <= b */
+
+#define M_CMPEQ_IMM(a,b,c) M_OP3 (0x10,0x2d, a,b,c,1) /* c = a == b */
+#define M_CMPLT_IMM(a,b,c) M_OP3 (0x10,0x4d, a,b,c,1) /* c = a < b */
+#define M_CMPLE_IMM(a,b,c) M_OP3 (0x10,0x6d, a,b,c,1) /* c = a <= b */
+
+#define M_CMPULE_IMM(a,b,c) M_OP3 (0x10,0x3d, a,b,c,1) /* c = a <= b */
+#define M_CMPULT_IMM(a,b,c) M_OP3 (0x10,0x1d, a,b,c,1) /* c = a <= b */
+
+#define M_AND(a,b,c) M_OP3 (0x11,0x00, a,b,c,0) /* c = a & b */
+#define M_OR( a,b,c) M_OP3 (0x11,0x20, a,b,c,0) /* c = a | b */
+#define M_XOR(a,b,c) M_OP3 (0x11,0x40, a,b,c,0) /* c = a ^ b */
+
+#define M_AND_IMM(a,b,c) M_OP3 (0x11,0x00, a,b,c,1) /* c = a & b */
+#define M_OR_IMM( a,b,c) M_OP3 (0x11,0x20, a,b,c,1) /* c = a | b */
+#define M_XOR_IMM(a,b,c) M_OP3 (0x11,0x40, a,b,c,1) /* c = a ^ b */
+
+#define M_MOV(a,c) M_OR (a,a,c) /* c = a */
+#define M_CLR(c) M_OR (31,31,c) /* c = 0 */
+#define M_NOP M_OR (31,31,31) /* ; */
+
+#define M_SLL(a,b,c) M_OP3 (0x12,0x39, a,b,c,0) /* c = a << b */
+#define M_SRA(a,b,c) M_OP3 (0x12,0x3c, a,b,c,0) /* c = a >> b */
+#define M_SRL(a,b,c) M_OP3 (0x12,0x34, a,b,c,0) /* c = a >>>b */
+
+#define M_SLL_IMM(a,b,c) M_OP3 (0x12,0x39, a,b,c,1) /* c = a << b */
+#define M_SRA_IMM(a,b,c) M_OP3 (0x12,0x3c, a,b,c,1) /* c = a >> b */
+#define M_SRL_IMM(a,b,c) M_OP3 (0x12,0x34, a,b,c,1) /* c = a >>>b */
#define M_FLD(a,b,disp) M_MEM (0x22,a,b,disp) /* load flt */
#define M_DLD(a,b,disp) M_MEM (0x23,a,b,disp) /* load dbl */
#define M_FDIVS(a,b,c) M_FOP3 (0x16, 0x583, a,b,c) /* flt div */
#define M_DDIVS(a,b,c) M_FOP3 (0x16, 0x5a3, a,b,c) /* dbl div */
-#define M_CVTDF(a,b,c) M_FOP3 (0x16, 0x0ac, a,b,c) /* dbl2long */
-#define M_CVTLF(a,b,c) M_FOP3 (0x16, 0x0bc, a,b,c) /* long2flt */
-#define M_CVTLD(a,b,c) M_FOP3 (0x16, 0x0be, a,b,c) /* long2dbl */
-#define M_CVTDL(a,b,c) M_FOP3 (0x16, 0x1af, a,b,c) /* dbl2long */
-#define M_CVTDL_C(a,b,c) M_FOP3 (0x16, 0x12f, a,b,c) /* dbl2long */
-#define M_CVTLI(a,b) M_FOP3 (0x17, 0x130, 31,a,b) /* long2int */
+#define M_CVTDF(b,c) M_FOP3 (0x16, 0x0ac, 31,b,c) /* dbl2long */
+#define M_CVTLF(b,c) M_FOP3 (0x16, 0x0bc, 31,b,c) /* long2flt */
+#define M_CVTLD(b,c) M_FOP3 (0x16, 0x0be, 31,b,c) /* long2dbl */
+#define M_CVTDL(b,c) M_FOP3 (0x16, 0x1af, 31,b,c) /* dbl2long */
+#define M_CVTDL_C(b,c) M_FOP3 (0x16, 0x12f, 31,b,c) /* dbl2long */
+#define M_CVTLI(b,c) M_FOP3 (0x17, 0x130, 31,b,c) /* long2int */
-#define M_CVTDFS(a,b,c) M_FOP3 (0x16, 0x5ac, a,b,c) /* dbl2long */
-#define M_CVTDLS(a,b,c) M_FOP3 (0x16, 0x5af, a,b,c) /* dbl2long */
-#define M_CVTDL_CS(a,b,c) M_FOP3 (0x16, 0x52f, a,b,c) /* dbl2long */
-#define M_CVTLIS(a,b) M_FOP3 (0x17, 0x530, 31,a,b) /* long2int */
+#define M_CVTDFS(b,c) M_FOP3 (0x16, 0x5ac, 31,b,c) /* dbl2long */
+#define M_CVTDLS(b,c) M_FOP3 (0x16, 0x5af, 31,b,c) /* dbl2long */
+#define M_CVTDL_CS(b,c) M_FOP3 (0x16, 0x52f, 31,b,c) /* dbl2long */
+#define M_CVTLIS(b,c) M_FOP3 (0x17, 0x530, 31,b,c) /* long2int */
#define M_FCMPEQ(a,b,c) M_FOP3 (0x16, 0x0a5, a,b,c) /* c = a==b */
#define M_FCMPLT(a,b,c) M_FOP3 (0x16, 0x0a6, a,b,c) /* c = a<b */
#define M_TRAPB M_MEM (0x18,0,0,0x0000) /* trap barrier*/
-#define M_S4ADDL(a,b,c,const) M_OP3 (0x10,0x02, a,b,c,const) /* c = a*4 + b */
-#define M_S4ADDQ(a,b,c,const) M_OP3 (0x10,0x22, a,b,c,const) /* c = a*4 + b */
-#define M_S4SUBL(a,b,c,const) M_OP3 (0x10,0x0b, a,b,c,const) /* c = a*4 - b */
-#define M_S4SUBQ(a,b,c,const) M_OP3 (0x10,0x2b, a,b,c,const) /* c = a*4 - b */
-#define M_S8ADDL(a,b,c,const) M_OP3 (0x10,0x12, a,b,c,const) /* c = a*8 + b */
-#define M_S8ADDQ(a,b,c,const) M_OP3 (0x10,0x32, a,b,c,const) /* c = a*8 + b */
-#define M_S8SUBL(a,b,c,const) M_OP3 (0x10,0x1b, a,b,c,const) /* c = a*8 - b */
-#define M_S8SUBQ(a,b,c,const) M_OP3 (0x10,0x3b, a,b,c,const) /* c = a*8 - b */
-#define M_SAADDQ(a,b,c,const) M_S8ADDQ(a,b,c,const) /* c = a*8 + b */
+#define M_S4ADDL(a,b,c) M_OP3 (0x10,0x02, a,b,c,0) /* c = a*4 + b */
+#define M_S4ADDQ(a,b,c) M_OP3 (0x10,0x22, a,b,c,0) /* c = a*4 + b */
+#define M_S4SUBL(a,b,c) M_OP3 (0x10,0x0b, a,b,c,0) /* c = a*4 - b */
+#define M_S4SUBQ(a,b,c) M_OP3 (0x10,0x2b, a,b,c,0) /* c = a*4 - b */
+#define M_S8ADDL(a,b,c) M_OP3 (0x10,0x12, a,b,c,0) /* c = a*8 + b */
+#define M_S8ADDQ(a,b,c) M_OP3 (0x10,0x32, a,b,c,0) /* c = a*8 + b */
+#define M_S8SUBL(a,b,c) M_OP3 (0x10,0x1b, a,b,c,0) /* c = a*8 - b */
+#define M_S8SUBQ(a,b,c) M_OP3 (0x10,0x3b, a,b,c,0) /* c = a*8 - b */
+#define M_SAADDQ(a,b,c) M_S8ADDQ(a,b,c) /* c = a*8 + b */
+
+#define M_S4ADDL_IMM(a,b,c) M_OP3 (0x10,0x02, a,b,c,1) /* c = a*4 + b */
+#define M_S4ADDQ_IMM(a,b,c) M_OP3 (0x10,0x22, a,b,c,1) /* c = a*4 + b */
+#define M_S4SUBL_IMM(a,b,c) M_OP3 (0x10,0x0b, a,b,c,1) /* c = a*4 - b */
+#define M_S4SUBQ_IMM(a,b,c) M_OP3 (0x10,0x2b, a,b,c,1) /* c = a*4 - b */
+#define M_S8ADDL_IMM(a,b,c) M_OP3 (0x10,0x12, a,b,c,1) /* c = a*8 + b */
+#define M_S8ADDQ_IMM(a,b,c) M_OP3 (0x10,0x32, a,b,c,1) /* c = a*8 + b */
+#define M_S8SUBL_IMM(a,b,c) M_OP3 (0x10,0x1b, a,b,c,1) /* c = a*8 - b */
+#define M_S8SUBQ_IMM(a,b,c) M_OP3 (0x10,0x3b, a,b,c,1) /* c = a*8 - b */
#define M_LLD_U(a,b,disp) M_MEM (0x0b,a,b,disp) /* unalign ld */
#define M_LST_U(a,b,disp) M_MEM (0x0f,a,b,disp) /* unalign st */
-#define M_ZAP(a,b,c,const) M_OP3 (0x12,0x30, a,b,c,const)
-#define M_ZAPNOT(a,b,c,const) M_OP3 (0x12,0x31, a,b,c,const)
-
-#define M_BZEXT(a,b) M_ZAPNOT(a, 0x01, b, CONST) /* 8 zeroext */
-#define M_CZEXT(a,b) M_ZAPNOT(a, 0x03, b, CONST) /* 16 zeroext */
-#define M_IZEXT(a,b) M_ZAPNOT(a, 0x0f, b, CONST) /* 32 zeroext */
-
-#define M_EXTBL(a,b,c,const) M_OP3 (0x12,0x06, a,b,c,const)
-#define M_EXTWL(a,b,c,const) M_OP3 (0x12,0x16, a,b,c,const)
-#define M_EXTLL(a,b,c,const) M_OP3 (0x12,0x26, a,b,c,const)
-#define M_EXTQL(a,b,c,const) M_OP3 (0x12,0x36, a,b,c,const)
-#define M_EXTWH(a,b,c,const) M_OP3 (0x12,0x5a, a,b,c,const)
-#define M_EXTLH(a,b,c,const) M_OP3 (0x12,0x6a, a,b,c,const)
-#define M_EXTQH(a,b,c,const) M_OP3 (0x12,0x7a, a,b,c,const)
-#define M_INSBL(a,b,c,const) M_OP3 (0x12,0x0b, a,b,c,const)
-#define M_INSWL(a,b,c,const) M_OP3 (0x12,0x1b, a,b,c,const)
-#define M_INSLL(a,b,c,const) M_OP3 (0x12,0x2b, a,b,c,const)
-#define M_INSQL(a,b,c,const) M_OP3 (0x12,0x3b, a,b,c,const)
-#define M_INSWH(a,b,c,const) M_OP3 (0x12,0x57, a,b,c,const)
-#define M_INSLH(a,b,c,const) M_OP3 (0x12,0x67, a,b,c,const)
-#define M_INSQH(a,b,c,const) M_OP3 (0x12,0x77, a,b,c,const)
-#define M_MSKBL(a,b,c,const) M_OP3 (0x12,0x02, a,b,c,const)
-#define M_MSKWL(a,b,c,const) M_OP3 (0x12,0x12, a,b,c,const)
-#define M_MSKLL(a,b,c,const) M_OP3 (0x12,0x22, a,b,c,const)
-#define M_MSKQL(a,b,c,const) M_OP3 (0x12,0x32, a,b,c,const)
-#define M_MSKWH(a,b,c,const) M_OP3 (0x12,0x52, a,b,c,const)
-#define M_MSKLH(a,b,c,const) M_OP3 (0x12,0x62, a,b,c,const)
-#define M_MSKQH(a,b,c,const) M_OP3 (0x12,0x72, a,b,c,const)
-
-#define M_UMULH(a,b,c,const) M_OP3 (0x13,0x30, a,b,c,const) /* 64 umulh */
+#define M_ZAP(a,b,c) M_OP3 (0x12,0x30, a,b,c,0)
+#define M_ZAPNOT(a,b,c) M_OP3 (0x12,0x31, a,b,c,0)
+
+#define M_ZAP_IMM(a,b,c) M_OP3 (0x12,0x30, a,b,c,1)
+#define M_ZAPNOT_IMM(a,b,c) M_OP3 (0x12,0x31, a,b,c,1)
+
+#define M_BZEXT(a,b) M_ZAPNOT_IMM(a, 0x01, b) /* 8 zeroext */
+#define M_CZEXT(a,b) M_ZAPNOT_IMM(a, 0x03, b) /* 16 zeroext */
+#define M_IZEXT(a,b) M_ZAPNOT_IMM(a, 0x0f, b) /* 32 zeroext */
+
+#define M_EXTBL(a,b,c) M_OP3 (0x12,0x06, a,b,c,0)
+#define M_EXTWL(a,b,c) M_OP3 (0x12,0x16, a,b,c,0)
+#define M_EXTLL(a,b,c) M_OP3 (0x12,0x26, a,b,c,0)
+#define M_EXTQL(a,b,c) M_OP3 (0x12,0x36, a,b,c,0)
+#define M_EXTWH(a,b,c) M_OP3 (0x12,0x5a, a,b,c,0)
+#define M_EXTLH(a,b,c) M_OP3 (0x12,0x6a, a,b,c,0)
+#define M_EXTQH(a,b,c) M_OP3 (0x12,0x7a, a,b,c,0)
+#define M_INSBL(a,b,c) M_OP3 (0x12,0x0b, a,b,c,0)
+#define M_INSWL(a,b,c) M_OP3 (0x12,0x1b, a,b,c,0)
+#define M_INSLL(a,b,c) M_OP3 (0x12,0x2b, a,b,c,0)
+#define M_INSQL(a,b,c) M_OP3 (0x12,0x3b, a,b,c,0)
+#define M_INSWH(a,b,c) M_OP3 (0x12,0x57, a,b,c,0)
+#define M_INSLH(a,b,c) M_OP3 (0x12,0x67, a,b,c,0)
+#define M_INSQH(a,b,c) M_OP3 (0x12,0x77, a,b,c,0)
+#define M_MSKBL(a,b,c) M_OP3 (0x12,0x02, a,b,c,0)
+#define M_MSKWL(a,b,c) M_OP3 (0x12,0x12, a,b,c,0)
+#define M_MSKLL(a,b,c) M_OP3 (0x12,0x22, a,b,c,0)
+#define M_MSKQL(a,b,c) M_OP3 (0x12,0x32, a,b,c,0)
+#define M_MSKWH(a,b,c) M_OP3 (0x12,0x52, a,b,c,0)
+#define M_MSKLH(a,b,c) M_OP3 (0x12,0x62, a,b,c,0)
+#define M_MSKQH(a,b,c) M_OP3 (0x12,0x72, a,b,c,0)
+
+#define M_EXTBL_IMM(a,b,c) M_OP3 (0x12,0x06, a,b,c,1)
+#define M_EXTWL_IMM(a,b,c) M_OP3 (0x12,0x16, a,b,c,1)
+#define M_EXTLL_IMM(a,b,c) M_OP3 (0x12,0x26, a,b,c,1)
+#define M_EXTQL_IMM(a,b,c) M_OP3 (0x12,0x36, a,b,c,1)
+#define M_EXTWH_IMM(a,b,c) M_OP3 (0x12,0x5a, a,b,c,1)
+#define M_EXTLH_IMM(a,b,c) M_OP3 (0x12,0x6a, a,b,c,1)
+#define M_EXTQH_IMM(a,b,c) M_OP3 (0x12,0x7a, a,b,c,1)
+#define M_INSBL_IMM(a,b,c) M_OP3 (0x12,0x0b, a,b,c,1)
+#define M_INSWL_IMM(a,b,c) M_OP3 (0x12,0x1b, a,b,c,1)
+#define M_INSLL_IMM(a,b,c) M_OP3 (0x12,0x2b, a,b,c,1)
+#define M_INSQL_IMM(a,b,c) M_OP3 (0x12,0x3b, a,b,c,1)
+#define M_INSWH_IMM(a,b,c) M_OP3 (0x12,0x57, a,b,c,1)
+#define M_INSLH_IMM(a,b,c) M_OP3 (0x12,0x67, a,b,c,1)
+#define M_INSQH_IMM(a,b,c) M_OP3 (0x12,0x77, a,b,c,1)
+#define M_MSKBL_IMM(a,b,c) M_OP3 (0x12,0x02, a,b,c,1)
+#define M_MSKWL_IMM(a,b,c) M_OP3 (0x12,0x12, a,b,c,1)
+#define M_MSKLL_IMM(a,b,c) M_OP3 (0x12,0x22, a,b,c,1)
+#define M_MSKQL_IMM(a,b,c) M_OP3 (0x12,0x32, a,b,c,1)
+#define M_MSKWH_IMM(a,b,c) M_OP3 (0x12,0x52, a,b,c,1)
+#define M_MSKLH_IMM(a,b,c) M_OP3 (0x12,0x62, a,b,c,1)
+#define M_MSKQH_IMM(a,b,c) M_OP3 (0x12,0x72, a,b,c,1)
+
+#define M_UMULH(a,b,c) M_OP3 (0x13,0x30, a,b,c,0) /* 64 umulh */
+
+#define M_UMULH_IMM(a,b,c) M_OP3 (0x13,0x30, a,b,c,1) /* 64 umulh */
+
+#define M_CMOVEQ(a,b,c) M_OP3 (0x11,0x24, a,b,c,0) /* a==0 ? c=b */
+#define M_CMOVNE(a,b,c) M_OP3 (0x11,0x26, a,b,c,0) /* a!=0 ? c=b */
+#define M_CMOVLT(a,b,c) M_OP3 (0x11,0x44, a,b,c,0) /* a< 0 ? c=b */
+#define M_CMOVGE(a,b,c) M_OP3 (0x11,0x46, a,b,c,0) /* a>=0 ? c=b */
+#define M_CMOVLE(a,b,c) M_OP3 (0x11,0x64, a,b,c,0) /* a<=0 ? c=b */
+#define M_CMOVGT(a,b,c) M_OP3 (0x11,0x66, a,b,c,0) /* a> 0 ? c=b */
+
+#define M_CMOVEQ_IMM(a,b,c) M_OP3 (0x11,0x24, a,b,c,1) /* a==0 ? c=b */
+#define M_CMOVNE_IMM(a,b,c) M_OP3 (0x11,0x26, a,b,c,1) /* a!=0 ? c=b */
+#define M_CMOVLT_IMM(a,b,c) M_OP3 (0x11,0x44, a,b,c,1) /* a< 0 ? c=b */
+#define M_CMOVGE_IMM(a,b,c) M_OP3 (0x11,0x46, a,b,c,1) /* a>=0 ? c=b */
+#define M_CMOVLE_IMM(a,b,c) M_OP3 (0x11,0x64, a,b,c,1) /* a<=0 ? c=b */
+#define M_CMOVGT_IMM(a,b,c) M_OP3 (0x11,0x66, a,b,c,1) /* a> 0 ? c=b */
/* macros for unused commands (see an Alpha-manual for description) ***********/
#define M_ORNOT(a,b,c,const) M_OP3 (0x11,0x28, a,b,c,const) /* c = a |~ b */
#define M_XORNOT(a,b,c,const) M_OP3 (0x11,0x48, a,b,c,const) /* c = a ^~ b */
-#define M_CMOVEQ(a,b,c,const) M_OP3 (0x11,0x24, a,b,c,const) /* a==0 ? c=b */
-#define M_CMOVNE(a,b,c,const) M_OP3 (0x11,0x26, a,b,c,const) /* a!=0 ? c=b */
-#define M_CMOVLT(a,b,c,const) M_OP3 (0x11,0x44, a,b,c,const) /* a< 0 ? c=b */
-#define M_CMOVGE(a,b,c,const) M_OP3 (0x11,0x46, a,b,c,const) /* a>=0 ? c=b */
-#define M_CMOVLE(a,b,c,const) M_OP3 (0x11,0x64, a,b,c,const) /* a<=0 ? c=b */
-#define M_CMOVGT(a,b,c,const) M_OP3 (0x11,0x66, a,b,c,const) /* a> 0 ? c=b */
-
#define M_CMPBGE(a,b,c,const) M_OP3 (0x10,0x0f, a,b,c,const)
#define M_FCMPUN(a,b,c) M_FOP3 (0x16, 0x0a4, a,b,c) /* unordered */