< prev index next >

src/hotspot/share/opto/compile.cpp

Print this page

        

@@ -2851,10 +2851,13 @@
 
     const char* field_name = "vec";
     if (from_kls->is_vectormask()) {
       field_name = "bits";
       bt = T_BOOLEAN;
+    } else if (from_kls->is_vectorshuffle()) {
+      field_name = "reorder";
+      bt = T_BYTE;
     }
 
     ciField* field = from_kls->get_field_by_name(ciSymbol::make(field_name),
       ciSymbol::make(TypeArrayKlass::external_name(bt)), false);
 

@@ -2886,10 +2889,13 @@
     vec_val_load = gvn.transform(vec_val_load);
 
     if (from_kls->is_vectormask() && masktype != T_BOOLEAN) {
       assert(vec_unbox->bottom_type()->is_vect()->element_basic_type() == masktype, "expect mask type consistency");
       vec_val_load = gvn.transform(new VectorLoadMaskNode(vec_val_load, TypeVect::make(masktype, num_elem)));
+    } else if (from_kls->is_vectorshuffle()) {
+      assert(vec_unbox->bottom_type()->is_vect()->element_basic_type() == masktype, "expect shuffle type consistency");
+      vec_val_load = gvn.transform(new VectorLoadShuffleNode(vec_val_load, TypeVect::make(masktype, num_elem)));
     }
 
     gvn.hash_delete(vec_unbox);
     vec_unbox->disconnect_inputs(NULL, C);
     C->gvn_replace_by(vec_unbox, vec_val_load);
< prev index next >