RFR: 8282528: AArch64: Incorrect replicate2L_zero rule [v2]

Andrew Haley aph at openjdk.java.net
Fri Apr 8 09:12:41 UTC 2022


On Wed, 6 Apr 2022 03:38:27 GMT, Eric Liu <eliu at openjdk.org> wrote:

>> This patch fixes the wrong matching rule of replicate2L_zero. It was
>> matched "ReplicateI" by mistake so that long immediates(not only zero)
>> had to be moved to register first and matched to replicate2L finally. To
>> fix this trivial bug, this patch fixes the typo and extends the rule of
>> replicate2L_zero to replicate2L_imm, which now supports all possible
>> long immediate values.
>> 
>> The final code changes are shown as below:
>> 
>> replicate2L_imm:
>> 
>>         mov   x13, #0xff
>>         movk  x13, #0xff, lsl #16
>>         movk  x13, #0xff, lsl #32
>>         dup   v16.2d, x13
>> 
>>         =>
>> 
>>         movi  v16.2d, #0xff00ff00ff
>> 
>> [Test]
>> test/jdk/jdk/incubator/vector, test/hotspot/jtreg/compiler/vectorapi
>> passed without failure.
>
> Eric Liu has updated the pull request incrementally with one additional commit since the last revision:
> 
>   fix comment
>   
>   Change-Id: Ic51820391d19b61e37847cc04375ecd79fc86779

src/hotspot/cpu/aarch64/aarch64_neon_ad.m4 line 1571:

> 1569:             `$3 $4', `I _imm', ` '$con$$constant,
> 1570:             `$3 $4', `L _imm', ` '$con$$constant,
> 1571:             `$6', vRegF,`

This `ifelse` is rather confusing. Can't the '& 0xff' be passed as arguments into `VREPLICATE`?

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

PR: https://git.openjdk.java.net/jdk/pull/7939


More information about the hotspot-dev mailing list