RFR: 8282528: AArch64: Incorrect replicate2L_zero rule
Andrew Haley
aph at openjdk.java.net
Thu Mar 24 09:50:49 UTC 2022
On Thu, 24 Mar 2022 09:42:32 GMT, Andrew Haley <aph 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.
>
> src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp line 1363:
>
>> 1361: tmp = tmp >> 8;
>> 1362: }
>> 1363:
>
> This logic should be in a separate function.
I think we need a `can_encode(imm, arrangement)` function.
-------------
PR: https://git.openjdk.java.net/jdk/pull/7939
More information about the hotspot-dev
mailing list