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