RFR: 8338023: Support two vector selectFrom API [v10]
Jatin Bhateja
jbhateja at openjdk.org
Tue Sep 17 07:10:54 UTC 2024
On Mon, 16 Sep 2024 07:45:51 GMT, Emanuel Peter <epeter at openjdk.org> wrote:
>> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Disabling VectorLoadShuffle bypassing optimization to comply with rearrange semantics at IR level.
>
> src/hotspot/share/opto/vectornode.cpp line 2122:
>
>> 2120: // index format by subsequent VectorLoadShuffle.
>> 2121: int cast_vopc = VectorCastNode::opcode(0, index_elem_bt, true);
>> 2122: Node* index_byte_vec = phase->transform(VectorCastNode::make(cast_vopc, index_vec, T_BYTE, num_elem));
>
> This cast assumes that the indices cannot have more than 8 bits. This would allow vector lengths of up to 256. This is fine for intel. But as far as I know ARM has in principle longer vectors - up to 2048 bytes. Should we maybe add some assert here to make sure we never badly truncate the index?
Shuffle overall is on our todo list, its a know limitation which we tried lifting once, yes you read it correctly, its a limitation for AARCH64 SVE once a 2048 bits vector systems are available, IIRC current max vector size on any available AARCH64 system is 256 bits, with Neoverse V2 they shrink the vector size back to 16 bytes.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/20508#discussion_r1762504446
More information about the core-libs-dev
mailing list