hotspot/src/share/vm/c1/c1_LIRGenerator.cpp
changeset 42063 dca9294d9f59
parent 42037 6269c5b5b651
child 42544 58de8aaf9365
--- a/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp	Thu Sep 22 18:23:15 2016 +0200
+++ b/hotspot/src/share/vm/c1/c1_LIRGenerator.cpp	Thu Sep 22 18:29:15 2016 +0200
@@ -606,7 +606,10 @@
 
 
 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;