RFR: 8348868: AArch64: Add backend support for SelectFromTwoVector [v15]

Andrew Haley aph at openjdk.org
Tue Jul 15 12:48:47 UTC 2025


On Tue, 15 Jul 2025 12:30:33 GMT, Bhavana Kilambi <bkilambi at openjdk.org> wrote:

>> src/hotspot/cpu/aarch64/c2_MacroAssembler_aarch64.cpp line 2912:
>> 
>>> 2910:   // If control reaches here, then the Neon instructions would be executed and
>>> 2911:   // one of these conditions must satisfy -
>>> 2912:   // UseSVE == 0 || (UseSVE == 1 && length_in_bytes == 16)
>> 
>> Why? Can't you make this logic correct regardless of `UseSVE`?
>
> So the Neon implementation gets kicked in when SVE is not available (UseSVE == 0) whether the vector length is 8 or 16 but we emit Neon instructions for UseSVE ==1 and vector length == 16 only. I am not sure how I can eliminate `UseSVE` here.
> 
> When the vector length == 8 with SVE1, we generate the SVE `tbl` instruction (with single input). This is done for `T_INT` and `T_FLOAT` types so that we avoid generating the `mulv`/`addv` instructions for the Neon `tbl` instruction.

But why would the Neon implementation fail if UseSVE ==1? Surely it would still work, and if it still works this comment is wrong.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23570#discussion_r2207381415


More information about the hotspot-compiler-dev mailing list