[PATCH] D137704: [RISCV] Make lowerVECTOR_SHUFFLEAsVNSRL support more vnsrl shuffle pattern.
Han-Kuan Chen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Nov 13 22:50:48 PST 2022
HanKuanChen added a comment.
In D137704#3924061 <https://reviews.llvm.org/D137704#3924061>, @craig.topper wrote:
> In D137704#3924035 <https://reviews.llvm.org/D137704#3924035>, @HanKuanChen wrote:
>
>> In D137704#3924007 <https://reviews.llvm.org/D137704#3924007>, @craig.topper wrote:
>>
>>> This test crashes
>>>
>>> define void @vnsrl_2_undef_float(ptr %in, ptr %out) {
>>> entry:
>>> %0 = load <32 x float>, ptr %in, align 4
>>> %1 = shufflevector <32 x float> %0, <32 x float> poison, <16 x i32> <i32 1, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
>>> store <16 x float> %1, ptr %out, align 4
>>> ret void
>>> }
>>
>> I will merge and close https://reviews.llvm.org/D137904 to solve this test.
>
> How does D137904 <https://reviews.llvm.org/D137904> solve this? That patch is marked NFC
t7: v32f32,ch = load<(load (s1024) from %ir.in, align 4)> t0, t2, undef:i64
t9: v16f32 = extract_subvector t7, Constant:i64<0>
t11: v16f32 = vector_shuffle<1,3,u,u,u,u,u,u,u,u,u,u,u,u,u,u> t9, undef:v16f32
I expect we use `getSingleShuffleSource` to get `t7` instead of `t9`. Then we check whether the type of source and destination can match vnsrl rule.
This test has a 2 `Difference`, and source is `v32f32` and destination is `v16f32`, which is valid.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137704/new/
https://reviews.llvm.org/D137704
More information about the llvm-commits
mailing list