diff options
author | Nikita Popov <npopov@redhat.com> | 2024-05-21 15:16:55 +0200 |
---|---|---|
committer | Nikita Popov <npopov@redhat.com> | 2024-05-21 15:21:31 +0200 |
commit | 557a0be3af798cf55b1ef54fc98a84fa5a4ade42 (patch) | |
tree | b78e99ba1a0d6eedc952c6d4430ec345cad03d30 | |
parent | c1b5b7c19b76f8d153f7ae9350d217b74888ed93 (diff) | |
download | llvm-557a0be3af798cf55b1ef54fc98a84fa5a4ade42.zip llvm-557a0be3af798cf55b1ef54fc98a84fa5a4ade42.tar.gz llvm-557a0be3af798cf55b1ef54fc98a84fa5a4ade42.tar.bz2 |
[InstCombine] Add test for splat shuffle miscompile (NFC)
-rw-r--r-- | llvm/test/Transforms/InstCombine/vec_shuffle.ll | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/vec_shuffle.ll b/llvm/test/Transforms/InstCombine/vec_shuffle.ll index d36ada7..7428f7a 100644 --- a/llvm/test/Transforms/InstCombine/vec_shuffle.ll +++ b/llvm/test/Transforms/InstCombine/vec_shuffle.ll @@ -2345,3 +2345,27 @@ define i16 @pr92887(<2 x i16> %v) { %extract = extractelement <4 x i16> %shuf, i32 2 ret i16 %extract } + +; FIXME: This is a miscompile. +define <2 x i32> @not_splat_shuffle1(i32 %x) { +; CHECK-LABEL: @not_splat_shuffle1( +; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x i32> poison, i32 [[X:%.*]], i64 0 +; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <2 x i32> [[TMP1]], <2 x i32> poison, <2 x i32> zeroinitializer +; CHECK-NEXT: ret <2 x i32> [[SHUF]] +; + %vec = insertelement <2 x i32> undef, i32 %x, i32 1 + %shuf = shufflevector <2 x i32> %vec, <2 x i32> poison, <2 x i32> <i32 1, i32 0> + ret <2 x i32> %shuf +} + +; FIXME: This is a miscompile. +define <2 x i32> @not_splat_shuffle2(i32 %x) { +; CHECK-LABEL: @not_splat_shuffle2( +; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x i32> poison, i32 [[X:%.*]], i64 0 +; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <2 x i32> [[TMP1]], <2 x i32> poison, <2 x i32> zeroinitializer +; CHECK-NEXT: ret <2 x i32> [[SHUF]] +; + %vec = insertelement <2 x i32> poison, i32 %x, i32 1 + %shuf = shufflevector <2 x i32> %vec, <2 x i32> undef, <2 x i32> <i32 1, i32 3> + ret <2 x i32> %shuf +} |