< prev index next >

src/hotspot/share/opto/vectornode.cpp

Print this page

        

*** 194,203 **** --- 194,205 ---- case Op_StoreI: case Op_StoreL: case Op_StoreF: case Op_StoreD: return Op_StoreVector; + case Op_MulAddS2I: + return Op_MulAddVS2VI; default: return 0; // Unimplemented } }
*** 212,221 **** --- 214,242 ---- return vopc > 0 && Matcher::match_rule_supported_vector(vopc, vlen); } 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: case Op_LShiftL: case Op_RShiftI:
*** 275,284 **** --- 296,306 ---- case Op_MulI: case Op_MulL: case Op_MulF: case Op_MulD: case Op_DivF: case Op_DivD: 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; case Op_CMoveI: case Op_CMoveL: case Op_CMoveF: case Op_CMoveD: *start = 2;
*** 352,361 **** --- 374,385 ---- case Op_URShiftVL: return new URShiftVLNode(n1, n2, vt); 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; } }
< prev index next >