--- a/hotspot/src/share/vm/opto/superword.cpp Fri Oct 09 20:45:45 2015 +0000
+++ b/hotspot/src/share/vm/opto/superword.cpp Thu Oct 15 13:28:22 2015 +0200
@@ -1858,8 +1858,8 @@
vn = VectorNode::make(opc, in1, in2, vlen, velt_basic_type(n));
vlen_in_bytes = vn->as_Vector()->length_in_bytes();
}
- } else if (opc == Op_SqrtD) {
- // Promote operand to vector (Sqrt is a 2 address instruction)
+ } else if (opc == Op_SqrtD || opc == Op_AbsF || opc == Op_AbsD || opc == Op_NegF || opc == Op_NegD) {
+ // Promote operand to vector (Sqrt/Abs/Neg are 2 address instructions)
Node* in = vector_opd(p, 1);
vn = VectorNode::make(opc, in, NULL, vlen, velt_basic_type(n));
vlen_in_bytes = vn->as_Vector()->length_in_bytes();