RFR: 8310886: C2 SuperWord: Two nodes should be isomorphic if they are loop invariant but pinned at different nodes outside the loop [v4]

Christian Hagedorn chagedorn at openjdk.org
Wed Nov 8 09:57:12 UTC 2023


On Fri, 22 Sep 2023 07:39:49 GMT, Emanuel Peter <epeter at openjdk.org> wrote:

>> Christian Hagedorn has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Restrict test to aarch64 and x86_64 since match rule for Op_MulAddVS2VI is only defined on these platforms
>
> test/hotspot/jtreg/compiler/loopopts/superword/TestMulAddS2I.java line 83:
> 
>> 81:         failOn = {IRNode.MUL_ADD_VS2VI}, // Can only pack LoadS if UseUnalignedLoadStores is true (default if sse4.2)
>> 82:         counts = {IRNode.MUL_ADD_S2I, "> 0"})
>> 83:     @IR(applyIfCPUFeature = {"asimd", "true"}, applyIf = {"MaxVectorSize", "16"},
> 
> Why `"MaxVectorSize", "16"`?

The AD file enforces it:
https://github.com/openjdk/jdk/blob/5350fd617390aaaedf8dd8821418c796cb1c38b3/src/hotspot/cpu/aarch64/aarch64_vector.ad#L182-L185

I'm not sure if that limitation is too restrictive. I could be investigated in a separate RFE. But I think to ensure the correctness of this rule, we need this constraint for aarch64.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15842#discussion_r1386301744


More information about the hotspot-compiler-dev mailing list