On Fri, 13 Sep 2024 18:24:04 GMT, Sandhya Viswanathan <sviswanat...@openjdk.org> wrote:
>> src/hotspot/share/opto/vectorIntrinsics.cpp line 2206: >> >>> 2204: const Type * byte_bt = Type::get_const_basic_type(T_BYTE); >>> 2205: const TypeVect * byte_vt = TypeVect::make(byte_bt, num_elem); >>> 2206: Node* byte_shuffle = >>> gvn().transform(VectorCastNode::make(cast_vopc, v1, T_BYTE, num_elem)); >> >> We can be optimal here and prevent down casting and subsequent load shuffles >> in applicable scenarios, e.g. indexes held in integral vectors. > > @jatin-bhateja If you could expand on this comment with specific cases it > will be helpful. The loadShuffle generation is needed for platform specific > handling of shuffles and cannot be optimized out here. Hi @sviswa7, I was suggesting emitting toShuffle() + toVector() only if it's needed under a target specific hook, since indexes are anyways passed though vector. Please let me know if you find blow explanation too constraining. https://github.com/openjdk/jdk/pull/20508#issuecomment-2349801299 ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/20634#discussion_r1759345567