1122 }
1123 }
1124 } else {
1125 // FPU stack float instruction
1126 switch (op->code()) {
1127 case lir_add:
1128 case lir_sub:
1129 case lir_mul:
1130 case lir_div:
1131 {
1132 assert(op->as_Op2() != NULL, "must be LIR_Op2");
1133 LIR_Op2* op2 = (LIR_Op2*)op;
1134 if (op2->in_opr1() != op2->in_opr2() && op2->in_opr2() == opr) {
1135 assert((op2->result_opr()->is_register() || op->code() == lir_cmp) && op2->in_opr1()->is_register(), "cannot mark second operand as stack if others are not in register");
1136 return shouldHaveRegister;
1137 }
1138 }
1139 }
1140 }
1141
1142 } else if (opr_type != T_LONG) {
1143 // integer instruction (note: long operands must always be in register)
1144 switch (op->code()) {
1145 case lir_cmp:
1146 case lir_add:
1147 case lir_sub:
1148 case lir_logic_and:
1149 case lir_logic_or:
1150 case lir_logic_xor:
1151 {
1152 assert(op->as_Op2() != NULL, "must be LIR_Op2");
1153 LIR_Op2* op2 = (LIR_Op2*)op;
1154 if (op2->in_opr1() != op2->in_opr2() && op2->in_opr2() == opr) {
1155 assert((op2->result_opr()->is_register() || op->code() == lir_cmp) && op2->in_opr1()->is_register(), "cannot mark second operand as stack if others are not in register");
1156 return shouldHaveRegister;
1157 }
1158 }
1159 }
1160 }
1161 #endif // X86
1162
|
1122 }
1123 }
1124 } else {
1125 // FPU stack float instruction
1126 switch (op->code()) {
1127 case lir_add:
1128 case lir_sub:
1129 case lir_mul:
1130 case lir_div:
1131 {
1132 assert(op->as_Op2() != NULL, "must be LIR_Op2");
1133 LIR_Op2* op2 = (LIR_Op2*)op;
1134 if (op2->in_opr1() != op2->in_opr2() && op2->in_opr2() == opr) {
1135 assert((op2->result_opr()->is_register() || op->code() == lir_cmp) && op2->in_opr1()->is_register(), "cannot mark second operand as stack if others are not in register");
1136 return shouldHaveRegister;
1137 }
1138 }
1139 }
1140 }
1141
1142 } else if (opr_type != T_LONG && LP64_ONLY(opr_type != T_OBJECT) NOT_LP64(true)) {
1143 // integer instruction (note: long operands must always be in register)
1144 switch (op->code()) {
1145 case lir_cmp:
1146 case lir_add:
1147 case lir_sub:
1148 case lir_logic_and:
1149 case lir_logic_or:
1150 case lir_logic_xor:
1151 {
1152 assert(op->as_Op2() != NULL, "must be LIR_Op2");
1153 LIR_Op2* op2 = (LIR_Op2*)op;
1154 if (op2->in_opr1() != op2->in_opr2() && op2->in_opr2() == opr) {
1155 assert((op2->result_opr()->is_register() || op->code() == lir_cmp) && op2->in_opr1()->is_register(), "cannot mark second operand as stack if others are not in register");
1156 return shouldHaveRegister;
1157 }
1158 }
1159 }
1160 }
1161 #endif // X86
1162
|