diff -r bf2ff45e592f -r b242a1e3f9cf src/hotspot/share/opto/vectornode.cpp --- a/src/hotspot/share/opto/vectornode.cpp Tue Mar 13 17:13:35 2018 +0100 +++ b/src/hotspot/share/opto/vectornode.cpp Tue Mar 13 10:22:15 2018 -0700 @@ -122,6 +122,13 @@ case Op_SqrtD: assert(bt == T_DOUBLE, "must be"); return Op_SqrtVD; + case Op_PopCountI: + if (bt == T_INT) { + return Op_PopCountVI; + } + // Unimplemented for subword types since bit count changes + // depending on size of lane (and sign bit). + return 0; case Op_LShiftI: switch (bt) { case T_BOOLEAN: @@ -325,6 +332,8 @@ case Op_SqrtVF: return new SqrtVFNode(n1, vt); case Op_SqrtVD: return new SqrtVDNode(n1, vt); + case Op_PopCountVI: return new PopCountVINode(n1, vt); + case Op_LShiftVB: return new LShiftVBNode(n1, n2, vt); case Op_LShiftVS: return new LShiftVSNode(n1, n2, vt); case Op_LShiftVI: return new LShiftVINode(n1, n2, vt);