--- a/src/hotspot/share/opto/vectornode.cpp Wed Dec 12 15:35:20 2018 -0500
+++ b/src/hotspot/share/opto/vectornode.cpp Wed Dec 12 14:48:34 2018 -0800
@@ -196,6 +196,8 @@
case Op_StoreF:
case Op_StoreD:
return Op_StoreVector;
+ case Op_MulAddS2I:
+ return Op_MulAddVS2VI;
default:
return 0; // Unimplemented
@@ -214,6 +216,25 @@
return false;
}
+bool VectorNode::is_type_transition_short_to_int(Node* n) {
+ switch (n->Opcode()) {
+ case Op_MulAddS2I:
+ return true;
+ }
+ return false;
+}
+
+bool VectorNode::is_type_transition_to_int(Node* n) {
+ return is_type_transition_short_to_int(n);
+}
+
+bool VectorNode::is_muladds2i(Node* n) {
+ if (n->Opcode() == Op_MulAddS2I) {
+ return true;
+ }
+ return false;
+}
+
bool VectorNode::is_shift(Node* n) {
switch (n->Opcode()) {
case Op_LShiftI:
@@ -277,6 +298,7 @@
case Op_AndI: case Op_AndL:
case Op_OrI: case Op_OrL:
case Op_XorI: case Op_XorL:
+ case Op_MulAddS2I:
*start = 1;
*end = 3; // 2 vector operands
break;
@@ -354,6 +376,8 @@
case Op_AndV: return new AndVNode(n1, n2, vt);
case Op_OrV: return new OrVNode (n1, n2, vt);
case Op_XorV: return new XorVNode(n1, n2, vt);
+
+ case Op_MulAddVS2VI: return new MulAddVS2VINode(n1, n2, vt);
default:
fatal("Missed vector creation for '%s'", NodeClassNames[vopc]);
return NULL;