src/hotspot/share/opto/vectornode.cpp
changeset 49384 b242a1e3f9cf
parent 48309 1a0499fd252e
child 50525 767cdb97f103
--- 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);