< prev index next >

src/hotspot/share/opto/vectornode.cpp

Print this page
rev 53101 : 8214922: Add vectorization support for fmin/fmax
Reviewed-by: duke

*** 176,185 **** --- 176,197 ---- case Op_OrL: return Op_OrV; case Op_XorI: case Op_XorL: return Op_XorV; + case Op_MinF: + assert(bt == T_FLOAT, "must be"); + return Op_MinV; + case Op_MinD: + assert(bt == T_DOUBLE, "must be"); + return Op_MinV; + case Op_MaxF: + assert(bt == T_FLOAT, "must be"); + return Op_MaxV; + case Op_MaxD: + assert(bt == T_DOUBLE, "must be"); + return Op_MaxV; case Op_LoadB: case Op_LoadUB: case Op_LoadUS: case Op_LoadS:
*** 375,384 **** --- 387,399 ---- 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_MinV: return new MinVNode(n1, n2, vt); + case Op_MaxV: return new MaxVNode(n1, n2, vt); + case Op_MulAddVS2VI: return new MulAddVS2VINode(n1, n2, vt); default: fatal("Missed vector creation for '%s'", NodeClassNames[vopc]); return NULL; }
*** 580,589 **** --- 595,620 ---- break; case Op_MulD: assert(bt == T_DOUBLE, "must be"); vopc = Op_MulReductionVD; break; + case Op_MinF: + assert(bt == T_FLOAT, "must be"); + vopc = Op_MinReductionV; + break; + case Op_MinD: + assert(bt == T_DOUBLE, "must be"); + vopc = Op_MaxReductionV; + break; + case Op_MaxF: + assert(bt == T_FLOAT, "must be"); + vopc = Op_MinReductionV; + break; + case Op_MaxD: + assert(bt == T_DOUBLE, "must be"); + vopc = Op_MaxReductionV; + break; // TODO: add MulL for targets that support it default: break; } return vopc;
*** 604,613 **** --- 635,646 ---- case Op_AddReductionVD: return new AddReductionVDNode(ctrl, n1, n2); case Op_MulReductionVI: return new MulReductionVINode(ctrl, n1, n2); case Op_MulReductionVL: return new MulReductionVLNode(ctrl, n1, n2); case Op_MulReductionVF: return new MulReductionVFNode(ctrl, n1, n2); case Op_MulReductionVD: return new MulReductionVDNode(ctrl, n1, n2); + case Op_MinReductionV: return new MinReductionVNode(ctrl, n1, n2); + case Op_MaxReductionV: return new MaxReductionVNode(ctrl, n1, n2); default: fatal("Missed vector creation for '%s'", NodeClassNames[vopc]); return NULL; } }
< prev index next >