aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2024-05-21 15:16:55 +0200
committerNikita Popov <npopov@redhat.com>2024-05-21 15:21:31 +0200
commit557a0be3af798cf55b1ef54fc98a84fa5a4ade42 (patch)
treeb78e99ba1a0d6eedc952c6d4430ec345cad03d30
parentc1b5b7c19b76f8d153f7ae9350d217b74888ed93 (diff)
downloadllvm-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.ll24
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
+}