1807 // expand a value to signed Int so such right shifts can't be used |
1807 // expand a value to signed Int so such right shifts can't be used |
1808 // because vector elements do not have upper bits of Int. |
1808 // because vector elements do not have upper bits of Int. |
1809 const Type* vt = vtn; |
1809 const Type* vt = vtn; |
1810 if (VectorNode::is_shift(in)) { |
1810 if (VectorNode::is_shift(in)) { |
1811 Node* load = in->in(1); |
1811 Node* load = in->in(1); |
1812 if (load->is_Load() && (velt_type(load)->basic_type() == T_INT)) { |
1812 if (load->is_Load() && in_bb(load) && (velt_type(load)->basic_type() == T_INT)) { |
1813 vt = velt_type(load); |
1813 vt = velt_type(load); |
1814 } else if (in->Opcode() != Op_LShiftI) { |
1814 } else if (in->Opcode() != Op_LShiftI) { |
1815 // Widen type to Int to avoid creation of right shift vector |
1815 // Widen type to Int to avoid creation of right shift vector |
1816 // (align + data_size(s1) check in stmts_can_pack() will fail). |
1816 // (align + data_size(s1) check in stmts_can_pack() will fail). |
1817 // Note, left shifts work regardless type. |
1817 // Note, left shifts work regardless type. |