70 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 22; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64 | FileCheck %s3; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64-v2 | FileCheck %s4; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64-v3 | FileCheck %s5; RUN: opt < %s -O3 -S -mtriple=x86_64-- -mcpu=x86-64-v4 | FileCheck %s6 7define <2 x i64> @PR61061(<2 x i64> noundef %vect) {8; CHECK-LABEL: define <2 x i64> @PR610619; CHECK-SAME: (<2 x i64> noundef [[VECT:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] {10; CHECK-NEXT: [[BC0:%.*]] = bitcast <2 x i64> [[VECT]] to <16 x i8>11; CHECK-NEXT: [[PTR_SROA_0_15_VEC_INSERT:%.*]] = shufflevector <16 x i8> [[BC0]], <16 x i8> poison, <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>12; CHECK-NEXT: [[TMP1:%.*]] = bitcast <16 x i8> [[PTR_SROA_0_15_VEC_INSERT]] to <2 x i64>13; CHECK-NEXT: ret <2 x i64> [[TMP1]]14;15 %ptr = alloca <2 x i64>, align 1616 call void @llvm.lifetime.start.p0(ptr nonnull %ptr)17 %bc0 = bitcast <2 x i64> %vect to <16 x i8>18 %bc1 = bitcast <2 x i64> %vect to <16 x i8>19 %bc2 = bitcast <2 x i64> %vect to <16 x i8>20 %bc3 = bitcast <2 x i64> %vect to <16 x i8>21 %bc4 = bitcast <2 x i64> %vect to <16 x i8>22 %bc5 = bitcast <2 x i64> %vect to <16 x i8>23 %bc6 = bitcast <2 x i64> %vect to <16 x i8>24 %bc7 = bitcast <2 x i64> %vect to <16 x i8>25 %elt0 = extractelement <16 x i8> %bc0, i64 026 %elt1 = extractelement <16 x i8> %bc1, i64 127 %elt2 = extractelement <16 x i8> %bc2, i64 228 %elt3 = extractelement <16 x i8> %bc3, i64 329 %elt4 = extractelement <16 x i8> %bc4, i64 430 %elt5 = extractelement <16 x i8> %bc5, i64 531 %elt6 = extractelement <16 x i8> %bc6, i64 632 %elt7 = extractelement <16 x i8> %bc7, i64 733 %ptr1 = getelementptr inbounds i8, ptr %ptr, i64 134 %ptr2 = getelementptr inbounds i8, ptr %ptr, i64 235 %ptr3 = getelementptr inbounds i8, ptr %ptr, i64 336 %ptr4 = getelementptr inbounds i8, ptr %ptr, i64 437 %ptr5 = getelementptr inbounds i8, ptr %ptr, i64 538 %ptr6 = getelementptr inbounds i8, ptr %ptr, i64 639 %ptr7 = getelementptr inbounds i8, ptr %ptr, i64 740 %ptr8 = getelementptr inbounds i8, ptr %ptr, i64 841 %ptr9 = getelementptr inbounds i8, ptr %ptr, i64 942 %ptr10 = getelementptr inbounds i8, ptr %ptr, i64 1043 %ptr11 = getelementptr inbounds i8, ptr %ptr, i64 1144 %ptr12 = getelementptr inbounds i8, ptr %ptr, i64 1245 %ptr13 = getelementptr inbounds i8, ptr %ptr, i64 1346 %ptr14 = getelementptr inbounds i8, ptr %ptr, i64 1447 %ptr15 = getelementptr inbounds i8, ptr %ptr, i64 1548 store i8 %elt0, ptr %ptr, align 1649 store i8 %elt1, ptr %ptr1, align 150 store i8 %elt2, ptr %ptr2, align 251 store i8 %elt3, ptr %ptr3, align 152 store i8 %elt0, ptr %ptr4, align 453 store i8 %elt1, ptr %ptr5, align 154 store i8 %elt2, ptr %ptr6, align 255 store i8 %elt3, ptr %ptr7, align 156 store i8 %elt4, ptr %ptr8, align 857 store i8 %elt5, ptr %ptr9, align 158 store i8 %elt6, ptr %ptr10, align 259 store i8 %elt7, ptr %ptr11, align 160 store i8 %elt0, ptr %ptr12, align 461 store i8 %elt1, ptr %ptr13, align 162 store i8 %elt2, ptr %ptr14, align 263 store i8 %elt3, ptr %ptr15, align 164 %base = load <2 x i64>, ptr %ptr, align 1665 call void @llvm.lifetime.end.p0(ptr nonnull %ptr)66 ret <2 x i64> %base67}68declare void @llvm.lifetime.start.p0(ptr)69declare void @llvm.lifetime.end.p0(ptr)70