[llvm] 07c5e17 - [PhaseOrdering] Add test case for Issue #61061
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 1 05:27:27 PDT 2023
Author: Simon Pilgrim
Date: 2023-04-01T13:27:16+01:00
New Revision: 07c5e175f64ddacc550e535e0697fd31919843ff
URL: https://github.com/llvm/llvm-project/commit/07c5e175f64ddacc550e535e0697fd31919843ff
DIFF: https://github.com/llvm/llvm-project/commit/07c5e175f64ddacc550e535e0697fd31919843ff.diff
LOG: [PhaseOrdering] Add test case for Issue #61061
Added:
llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll b/llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll
new file mode 100644
index 0000000000000..658388c216427
--- /dev/null
+++ b/llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll
@@ -0,0 +1,69 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
+; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64 | FileCheck %s
+; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64-v2 | FileCheck %s
+; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64-v3 | FileCheck %s
+; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64-v4 | FileCheck %s
+
+define <2 x i64> @PR61061(<2 x i64> noundef %vect) {
+; CHECK-LABEL: define <2 x i64> @PR61061
+; CHECK-SAME: (<2 x i64> noundef [[VECT:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {
+; CHECK-NEXT: [[BC0:%.*]] = bitcast <2 x i64> [[VECT]] to <16 x i8>
+; CHECK-NEXT: [[PTR_SROA_0_15_VEC_INSERT:%.*]] = shufflevector <16 x i8> [[BC0]], <16 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
+; CHECK-NEXT: [[TMP1:%.*]] = bitcast <16 x i8> [[PTR_SROA_0_15_VEC_INSERT]] to <2 x i64>
+; CHECK-NEXT: ret <2 x i64> [[TMP1]]
+;
+ %ptr = alloca <2 x i64>, align 16
+ call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ptr)
+ %bc0 = bitcast <2 x i64> %vect to <16 x i8>
+ %bc1 = bitcast <2 x i64> %vect to <16 x i8>
+ %bc2 = bitcast <2 x i64> %vect to <16 x i8>
+ %bc3 = bitcast <2 x i64> %vect to <16 x i8>
+ %bc4 = bitcast <2 x i64> %vect to <16 x i8>
+ %bc5 = bitcast <2 x i64> %vect to <16 x i8>
+ %bc6 = bitcast <2 x i64> %vect to <16 x i8>
+ %bc7 = bitcast <2 x i64> %vect to <16 x i8>
+ %elt0 = extractelement <16 x i8> %bc0, i64 0
+ %elt1 = extractelement <16 x i8> %bc1, i64 1
+ %elt2 = extractelement <16 x i8> %bc2, i64 2
+ %elt3 = extractelement <16 x i8> %bc3, i64 3
+ %elt4 = extractelement <16 x i8> %bc4, i64 4
+ %elt5 = extractelement <16 x i8> %bc5, i64 5
+ %elt6 = extractelement <16 x i8> %bc6, i64 6
+ %elt7 = extractelement <16 x i8> %bc7, i64 7
+ %ptr1 = getelementptr inbounds i8, ptr %ptr, i64 1
+ %ptr2 = getelementptr inbounds i8, ptr %ptr, i64 2
+ %ptr3 = getelementptr inbounds i8, ptr %ptr, i64 3
+ %ptr4 = getelementptr inbounds i8, ptr %ptr, i64 4
+ %ptr5 = getelementptr inbounds i8, ptr %ptr, i64 5
+ %ptr6 = getelementptr inbounds i8, ptr %ptr, i64 6
+ %ptr7 = getelementptr inbounds i8, ptr %ptr, i64 7
+ %ptr8 = getelementptr inbounds i8, ptr %ptr, i64 8
+ %ptr9 = getelementptr inbounds i8, ptr %ptr, i64 9
+ %ptr10 = getelementptr inbounds i8, ptr %ptr, i64 10
+ %ptr11 = getelementptr inbounds i8, ptr %ptr, i64 11
+ %ptr12 = getelementptr inbounds i8, ptr %ptr, i64 12
+ %ptr13 = getelementptr inbounds i8, ptr %ptr, i64 13
+ %ptr14 = getelementptr inbounds i8, ptr %ptr, i64 14
+ %ptr15 = getelementptr inbounds i8, ptr %ptr, i64 15
+ store i8 %elt0, ptr %ptr, align 16
+ store i8 %elt1, ptr %ptr1, align 1
+ store i8 %elt2, ptr %ptr2, align 2
+ store i8 %elt3, ptr %ptr3, align 1
+ store i8 %elt0, ptr %ptr4, align 4
+ store i8 %elt1, ptr %ptr5, align 1
+ store i8 %elt2, ptr %ptr6, align 2
+ store i8 %elt3, ptr %ptr7, align 1
+ store i8 %elt4, ptr %ptr8, align 8
+ store i8 %elt5, ptr %ptr9, align 1
+ store i8 %elt6, ptr %ptr10, align 2
+ store i8 %elt7, ptr %ptr11, align 1
+ store i8 %elt0, ptr %ptr12, align 4
+ store i8 %elt1, ptr %ptr13, align 1
+ store i8 %elt2, ptr %ptr14, align 2
+ store i8 %elt3, ptr %ptr15, align 1
+ %base = load <2 x i64>, ptr %ptr, align 16
+ call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ptr)
+ ret <2 x i64> %base
+}
+declare void @llvm.lifetime.start.p0(i64, ptr)
+declare void @llvm.lifetime.end.p0(i64, ptr)
More information about the llvm-commits
mailing list