< prev index next >

src/share/vm/c1/c1_LIRGenerator.cpp

Print this page
rev 12121 : [mq]: all_changes.patch

@@ -604,11 +604,14 @@
   arithmetic_op(code, result, left, right, is_strictfp, tmp);
 }
 
 
 void LIRGenerator::shift_op(Bytecodes::Code code, LIR_Opr result_op, LIR_Opr value, LIR_Opr count, LIR_Opr tmp) {
-  if (TwoOperandLIRForm && value != result_op) {
+
+  if (TwoOperandLIRForm && value != result_op
+      // Only 32bit right shifts require two operand form on S390.
+      S390_ONLY(&& (code == Bytecodes::_ishr || code == Bytecodes::_iushr))) {
     assert(count != result_op, "malformed");
     __ move(value, result_op);
     value = result_op;
   }
 
< prev index next >