--- 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);