1acce4010SAhsan Saghir; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2acce4010SAhsan Saghir; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \ 3acce4010SAhsan Saghir; RUN: -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \ 4acce4010SAhsan Saghir; RUN: FileCheck %s --check-prefix=CHECK-LE 5acce4010SAhsan Saghir; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \ 6acce4010SAhsan Saghir; RUN: -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \ 7acce4010SAhsan Saghir; RUN: FileCheck %s --check-prefix=CHECK-BE 8acce4010SAhsan Saghir; RUN: opt --passes=sroa,loop-vectorize,loop-unroll,instcombine -S \ 9acce4010SAhsan Saghir; RUN: -vectorizer-maximize-bandwidth --mtriple=powerpc64le-- -mcpu=pwr10 < %s | \ 10acce4010SAhsan Saghir; RUN: FileCheck %s --check-prefix=CHECK-OPT 11acce4010SAhsan Saghir 12acce4010SAhsan Saghirtarget datalayout = "e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512" 13acce4010SAhsan Saghir 14acce4010SAhsan Saghirdefine dso_local signext i32 @test_32byte_vector() nounwind { 15acce4010SAhsan Saghir; CHECK-LE-LABEL: test_32byte_vector: 16acce4010SAhsan Saghir; CHECK-LE: # %bb.0: # %entry 17acce4010SAhsan Saghir; CHECK-LE-NEXT: mflr r0 18acce4010SAhsan Saghir; CHECK-LE-NEXT: std r30, -16(r1) 19acce4010SAhsan Saghir; CHECK-LE-NEXT: mr r30, r1 20acce4010SAhsan Saghir; CHECK-LE-NEXT: std r0, 16(r1) 21acce4010SAhsan Saghir; CHECK-LE-NEXT: clrldi r0, r1, 59 22acce4010SAhsan Saghir; CHECK-LE-NEXT: subfic r0, r0, -96 23acce4010SAhsan Saghir; CHECK-LE-NEXT: stdux r1, r1, r0 24acce4010SAhsan Saghir; CHECK-LE-NEXT: addis r3, r2, .LCPI0_0@toc@ha 25acce4010SAhsan Saghir; CHECK-LE-NEXT: addis r4, r2, .LCPI0_1@toc@ha 26acce4010SAhsan Saghir; CHECK-LE-NEXT: addi r3, r3, .LCPI0_0@toc@l 27acce4010SAhsan Saghir; CHECK-LE-NEXT: addi r4, r4, .LCPI0_1@toc@l 28*335e8bf1SQuinn Pham; CHECK-LE-NEXT: lxvd2x vs0, 0, r3 29*335e8bf1SQuinn Pham; CHECK-LE-NEXT: lxvd2x vs1, 0, r4 30acce4010SAhsan Saghir; CHECK-LE-NEXT: addi r4, r1, 48 31acce4010SAhsan Saghir; CHECK-LE-NEXT: addi r3, r1, 32 32*335e8bf1SQuinn Pham; CHECK-LE-NEXT: stxvd2x vs0, 0, r4 33*335e8bf1SQuinn Pham; CHECK-LE-NEXT: stxvd2x vs1, 0, r3 34acce4010SAhsan Saghir; CHECK-LE-NEXT: bl test 35acce4010SAhsan Saghir; CHECK-LE-NEXT: nop 36acce4010SAhsan Saghir; CHECK-LE-NEXT: lwa r3, 32(r1) 37acce4010SAhsan Saghir; CHECK-LE-NEXT: mr r1, r30 38acce4010SAhsan Saghir; CHECK-LE-NEXT: ld r0, 16(r1) 39acce4010SAhsan Saghir; CHECK-LE-NEXT: ld r30, -16(r1) 40acce4010SAhsan Saghir; CHECK-LE-NEXT: mtlr r0 41acce4010SAhsan Saghir; CHECK-LE-NEXT: blr 42acce4010SAhsan Saghir; 43acce4010SAhsan Saghir; CHECK-BE-LABEL: test_32byte_vector: 44acce4010SAhsan Saghir; CHECK-BE: # %bb.0: # %entry 45acce4010SAhsan Saghir; CHECK-BE-NEXT: mflr r0 46acce4010SAhsan Saghir; CHECK-BE-NEXT: std r30, -16(r1) 47acce4010SAhsan Saghir; CHECK-BE-NEXT: std r0, 16(r1) 48acce4010SAhsan Saghir; CHECK-BE-NEXT: clrldi r0, r1, 59 49acce4010SAhsan Saghir; CHECK-BE-NEXT: mr r30, r1 50acce4010SAhsan Saghir; CHECK-BE-NEXT: subfic r0, r0, -192 51acce4010SAhsan Saghir; CHECK-BE-NEXT: stdux r1, r1, r0 52acce4010SAhsan Saghir; CHECK-BE-NEXT: lis r3, -8192 53acce4010SAhsan Saghir; CHECK-BE-NEXT: li r4, 5 54acce4010SAhsan Saghir; CHECK-BE-NEXT: lis r5, -16384 55acce4010SAhsan Saghir; CHECK-BE-NEXT: lis r6, -32768 56acce4010SAhsan Saghir; CHECK-BE-NEXT: ori r3, r3, 1 57acce4010SAhsan Saghir; CHECK-BE-NEXT: rldic r4, r4, 32, 29 58acce4010SAhsan Saghir; CHECK-BE-NEXT: ori r5, r5, 1 59acce4010SAhsan Saghir; CHECK-BE-NEXT: ori r6, r6, 1 60acce4010SAhsan Saghir; CHECK-BE-NEXT: rldic r3, r3, 3, 29 61acce4010SAhsan Saghir; CHECK-BE-NEXT: ori r4, r4, 6 62acce4010SAhsan Saghir; CHECK-BE-NEXT: rldic r5, r5, 2, 30 63acce4010SAhsan Saghir; CHECK-BE-NEXT: rldic r6, r6, 1, 31 64acce4010SAhsan Saghir; CHECK-BE-NEXT: std r3, 152(r1) 65acce4010SAhsan Saghir; CHECK-BE-NEXT: addi r3, r1, 128 66acce4010SAhsan Saghir; CHECK-BE-NEXT: std r4, 144(r1) 67acce4010SAhsan Saghir; CHECK-BE-NEXT: std r5, 136(r1) 68acce4010SAhsan Saghir; CHECK-BE-NEXT: std r6, 128(r1) 69acce4010SAhsan Saghir; CHECK-BE-NEXT: bl test 70acce4010SAhsan Saghir; CHECK-BE-NEXT: nop 71acce4010SAhsan Saghir; CHECK-BE-NEXT: lwa r3, 128(r1) 72acce4010SAhsan Saghir; CHECK-BE-NEXT: mr r1, r30 73acce4010SAhsan Saghir; CHECK-BE-NEXT: ld r0, 16(r1) 74acce4010SAhsan Saghir; CHECK-BE-NEXT: ld r30, -16(r1) 75acce4010SAhsan Saghir; CHECK-BE-NEXT: mtlr r0 76acce4010SAhsan Saghir; CHECK-BE-NEXT: blr 77acce4010SAhsan Saghirentry: 78acce4010SAhsan Saghir %a = alloca <8 x i32>, align 32 79acce4010SAhsan Saghir %0 = bitcast <8 x i32>* %a to i8* 80acce4010SAhsan Saghir call void @llvm.lifetime.start.p0i8(i64 32, i8* %0) 81acce4010SAhsan Saghir store <8 x i32> <i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>, <8 x i32>* %a, align 32 82acce4010SAhsan Saghir call void @test(<8 x i32>* %a) 83acce4010SAhsan Saghir %1 = load <8 x i32>, <8 x i32>* %a, align 32 84acce4010SAhsan Saghir %vecext = extractelement <8 x i32> %1, i32 0 85acce4010SAhsan Saghir %2 = bitcast <8 x i32>* %a to i8* 86acce4010SAhsan Saghir call void @llvm.lifetime.end.p0i8(i64 32, i8* %2) 87acce4010SAhsan Saghir ret i32 %vecext 88acce4010SAhsan Saghir} 89acce4010SAhsan Saghir 90acce4010SAhsan Saghirdefine dso_local signext i32 @test_32byte_aligned_vector() nounwind { 91acce4010SAhsan Saghir; CHECK-LE-LABEL: test_32byte_aligned_vector: 92acce4010SAhsan Saghir; CHECK-LE: # %bb.0: # %entry 93acce4010SAhsan Saghir; CHECK-LE-NEXT: mflr r0 94acce4010SAhsan Saghir; CHECK-LE-NEXT: std r30, -16(r1) 95acce4010SAhsan Saghir; CHECK-LE-NEXT: mr r30, r1 96acce4010SAhsan Saghir; CHECK-LE-NEXT: std r0, 16(r1) 97acce4010SAhsan Saghir; CHECK-LE-NEXT: clrldi r0, r1, 59 98acce4010SAhsan Saghir; CHECK-LE-NEXT: subfic r0, r0, -64 99acce4010SAhsan Saghir; CHECK-LE-NEXT: stdux r1, r1, r0 100acce4010SAhsan Saghir; CHECK-LE-NEXT: addis r3, r2, .LCPI1_0@toc@ha 101acce4010SAhsan Saghir; CHECK-LE-NEXT: addi r3, r3, .LCPI1_0@toc@l 102*335e8bf1SQuinn Pham; CHECK-LE-NEXT: lxvd2x vs0, 0, r3 103acce4010SAhsan Saghir; CHECK-LE-NEXT: addi r3, r1, 32 104*335e8bf1SQuinn Pham; CHECK-LE-NEXT: stxvd2x vs0, 0, r3 105acce4010SAhsan Saghir; CHECK-LE-NEXT: bl test1 106acce4010SAhsan Saghir; CHECK-LE-NEXT: nop 107acce4010SAhsan Saghir; CHECK-LE-NEXT: lwa r3, 32(r1) 108acce4010SAhsan Saghir; CHECK-LE-NEXT: mr r1, r30 109acce4010SAhsan Saghir; CHECK-LE-NEXT: ld r0, 16(r1) 110acce4010SAhsan Saghir; CHECK-LE-NEXT: ld r30, -16(r1) 111acce4010SAhsan Saghir; CHECK-LE-NEXT: mtlr r0 112acce4010SAhsan Saghir; CHECK-LE-NEXT: blr 113acce4010SAhsan Saghir; 114acce4010SAhsan Saghir; CHECK-BE-LABEL: test_32byte_aligned_vector: 115acce4010SAhsan Saghir; CHECK-BE: # %bb.0: # %entry 116acce4010SAhsan Saghir; CHECK-BE-NEXT: mflr r0 117acce4010SAhsan Saghir; CHECK-BE-NEXT: std r30, -16(r1) 118acce4010SAhsan Saghir; CHECK-BE-NEXT: std r0, 16(r1) 119acce4010SAhsan Saghir; CHECK-BE-NEXT: clrldi r0, r1, 59 120acce4010SAhsan Saghir; CHECK-BE-NEXT: mr r30, r1 121acce4010SAhsan Saghir; CHECK-BE-NEXT: subfic r0, r0, -160 122acce4010SAhsan Saghir; CHECK-BE-NEXT: stdux r1, r1, r0 123acce4010SAhsan Saghir; CHECK-BE-NEXT: lis r3, -16384 124acce4010SAhsan Saghir; CHECK-BE-NEXT: lis r4, -32768 125acce4010SAhsan Saghir; CHECK-BE-NEXT: ori r3, r3, 1 126acce4010SAhsan Saghir; CHECK-BE-NEXT: ori r4, r4, 1 127acce4010SAhsan Saghir; CHECK-BE-NEXT: rldic r3, r3, 2, 30 128acce4010SAhsan Saghir; CHECK-BE-NEXT: rldic r4, r4, 1, 31 129acce4010SAhsan Saghir; CHECK-BE-NEXT: std r3, 136(r1) 130acce4010SAhsan Saghir; CHECK-BE-NEXT: addi r3, r1, 128 131acce4010SAhsan Saghir; CHECK-BE-NEXT: std r4, 128(r1) 132acce4010SAhsan Saghir; CHECK-BE-NEXT: bl test1 133acce4010SAhsan Saghir; CHECK-BE-NEXT: nop 134acce4010SAhsan Saghir; CHECK-BE-NEXT: lwa r3, 128(r1) 135acce4010SAhsan Saghir; CHECK-BE-NEXT: mr r1, r30 136acce4010SAhsan Saghir; CHECK-BE-NEXT: ld r0, 16(r1) 137acce4010SAhsan Saghir; CHECK-BE-NEXT: ld r30, -16(r1) 138acce4010SAhsan Saghir; CHECK-BE-NEXT: mtlr r0 139acce4010SAhsan Saghir; CHECK-BE-NEXT: blr 140acce4010SAhsan Saghirentry: 141acce4010SAhsan Saghir %a = alloca <4 x i32>, align 32 142acce4010SAhsan Saghir %0 = bitcast <4 x i32>* %a to i8* 143acce4010SAhsan Saghir call void @llvm.lifetime.start.p0i8(i64 16, i8* %0) 144acce4010SAhsan Saghir store <4 x i32> <i32 1, i32 2, i32 3, i32 4>, <4 x i32>* %a, align 32 145acce4010SAhsan Saghir call void @test1(<4 x i32>* %a) 146acce4010SAhsan Saghir %1 = load <4 x i32>, <4 x i32>* %a, align 32 147acce4010SAhsan Saghir %vecext = extractelement <4 x i32> %1, i32 0 148acce4010SAhsan Saghir %2 = bitcast <4 x i32>* %a to i8* 149acce4010SAhsan Saghir call void @llvm.lifetime.end.p0i8(i64 16, i8* %2) 150acce4010SAhsan Saghir ret i32 %vecext 151acce4010SAhsan Saghir} 152acce4010SAhsan Saghir 153acce4010SAhsan Saghir 154acce4010SAhsan Saghir@Arr1 = dso_local global [64 x i8] zeroinitializer, align 1 155acce4010SAhsan Saghir 156acce4010SAhsan Saghirdefine dso_local void @test_Array() nounwind { 157acce4010SAhsan Saghir; CHECK-OPT-LABEL: @test_Array( 158acce4010SAhsan Saghir; CHECK-OPT-NEXT: entry: 159acce4010SAhsan Saghir; CHECK-OPT-NEXT: %Arr2 = alloca [64 x i16], align 2 160acce4010SAhsan Saghir; CHECK-OPT: store <16 x i16> [[TMP0:%.*]], <16 x i16>* [[TMP0:%.*]], align 2 161*335e8bf1SQuinn Pham; CHECK-LE-LABEL: test_Array: 162*335e8bf1SQuinn Pham; CHECK-LE: # %bb.0: # %entry 163*335e8bf1SQuinn Pham; CHECK-LE-NEXT: mflr r0 164*335e8bf1SQuinn Pham; CHECK-LE-NEXT: std r0, 16(r1) 165*335e8bf1SQuinn Pham; CHECK-LE-NEXT: stdu r1, -176(r1) 166*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addis r4, r2, Arr1@toc@ha 167*335e8bf1SQuinn Pham; CHECK-LE-NEXT: li r3, 0 168*335e8bf1SQuinn Pham; CHECK-LE-NEXT: li r6, 65 169*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r5, r1, 46 170*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r4, r4, Arr1@toc@l 171*335e8bf1SQuinn Pham; CHECK-LE-NEXT: stw r3, 44(r1) 172*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r4, r4, -1 173*335e8bf1SQuinn Pham; CHECK-LE-NEXT: mtctr r6 174*335e8bf1SQuinn Pham; CHECK-LE-NEXT: bdz .LBB2_2 175*335e8bf1SQuinn Pham; CHECK-LE-NEXT: .p2align 5 176*335e8bf1SQuinn Pham; CHECK-LE-NEXT: .LBB2_1: # %for.body 177*335e8bf1SQuinn Pham; CHECK-LE-NEXT: # 178*335e8bf1SQuinn Pham; CHECK-LE-NEXT: lbz r6, 1(r4) 179*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r7, r5, 2 180*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r4, r4, 1 181*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r3, r3, 1 182*335e8bf1SQuinn Pham; CHECK-LE-NEXT: sth r6, 2(r5) 183*335e8bf1SQuinn Pham; CHECK-LE-NEXT: mr r5, r7 184*335e8bf1SQuinn Pham; CHECK-LE-NEXT: bdnz .LBB2_1 185*335e8bf1SQuinn Pham; CHECK-LE-NEXT: .LBB2_2: # %for.cond.cleanup 186*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r3, r1, 48 187*335e8bf1SQuinn Pham; CHECK-LE-NEXT: bl test_arr 188*335e8bf1SQuinn Pham; CHECK-LE-NEXT: nop 189*335e8bf1SQuinn Pham; CHECK-LE-NEXT: addi r1, r1, 176 190*335e8bf1SQuinn Pham; CHECK-LE-NEXT: ld r0, 16(r1) 191*335e8bf1SQuinn Pham; CHECK-LE-NEXT: mtlr r0 192*335e8bf1SQuinn Pham; CHECK-LE-NEXT: blr 193*335e8bf1SQuinn Pham; 194*335e8bf1SQuinn Pham; CHECK-BE-LABEL: test_Array: 195*335e8bf1SQuinn Pham; CHECK-BE: # %bb.0: # %entry 196*335e8bf1SQuinn Pham; CHECK-BE-NEXT: mflr r0 197*335e8bf1SQuinn Pham; CHECK-BE-NEXT: std r0, 16(r1) 198*335e8bf1SQuinn Pham; CHECK-BE-NEXT: stdu r1, -256(r1) 199*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addis r5, r2, Arr1@toc@ha 200*335e8bf1SQuinn Pham; CHECK-BE-NEXT: li r3, 0 201*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r5, r5, Arr1@toc@l 202*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r4, r1, 126 203*335e8bf1SQuinn Pham; CHECK-BE-NEXT: li r6, 65 204*335e8bf1SQuinn Pham; CHECK-BE-NEXT: stw r3, 124(r1) 205*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r5, r5, -1 206*335e8bf1SQuinn Pham; CHECK-BE-NEXT: mtctr r6 207*335e8bf1SQuinn Pham; CHECK-BE-NEXT: bdz .LBB2_2 208*335e8bf1SQuinn Pham; CHECK-BE-NEXT: .LBB2_1: # %for.body 209*335e8bf1SQuinn Pham; CHECK-BE-NEXT: # 210*335e8bf1SQuinn Pham; CHECK-BE-NEXT: lbz r6, 1(r5) 211*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r5, r5, 1 212*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r3, r3, 1 213*335e8bf1SQuinn Pham; CHECK-BE-NEXT: sth r6, 2(r4) 214*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r4, r4, 2 215*335e8bf1SQuinn Pham; CHECK-BE-NEXT: bdnz .LBB2_1 216*335e8bf1SQuinn Pham; CHECK-BE-NEXT: .LBB2_2: # %for.cond.cleanup 217*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r3, r1, 128 218*335e8bf1SQuinn Pham; CHECK-BE-NEXT: bl test_arr 219*335e8bf1SQuinn Pham; CHECK-BE-NEXT: nop 220*335e8bf1SQuinn Pham; CHECK-BE-NEXT: addi r1, r1, 256 221*335e8bf1SQuinn Pham; CHECK-BE-NEXT: ld r0, 16(r1) 222*335e8bf1SQuinn Pham; CHECK-BE-NEXT: mtlr r0 223*335e8bf1SQuinn Pham; CHECK-BE-NEXT: blr 224acce4010SAhsan Saghirentry: 225acce4010SAhsan Saghir %Arr2 = alloca [64 x i16], align 2 226acce4010SAhsan Saghir %i = alloca i32, align 4 227acce4010SAhsan Saghir %0 = bitcast [64 x i16]* %Arr2 to i8* 228acce4010SAhsan Saghir call void @llvm.lifetime.start.p0i8(i64 128, i8* %0) 229acce4010SAhsan Saghir %1 = bitcast i32* %i to i8* 230acce4010SAhsan Saghir call void @llvm.lifetime.start.p0i8(i64 4, i8* %1) 231acce4010SAhsan Saghir store i32 0, i32* %i, align 4 232acce4010SAhsan Saghir br label %for.cond 233acce4010SAhsan Saghir 234acce4010SAhsan Saghirfor.cond: ; preds = %for.inc, %entry 235acce4010SAhsan Saghir %2 = load i32, i32* %i, align 4 236acce4010SAhsan Saghir %cmp = icmp slt i32 %2, 64 237acce4010SAhsan Saghir br i1 %cmp, label %for.body, label %for.cond.cleanup 238acce4010SAhsan Saghir 239acce4010SAhsan Saghirfor.cond.cleanup: ; preds = %for.cond 240acce4010SAhsan Saghir %3 = bitcast i32* %i to i8* 241acce4010SAhsan Saghir call void @llvm.lifetime.end.p0i8(i64 4, i8* %3) 242acce4010SAhsan Saghir br label %for.end 243acce4010SAhsan Saghir 244acce4010SAhsan Saghirfor.body: ; preds = %for.cond 245acce4010SAhsan Saghir %4 = load i32, i32* %i, align 4 246acce4010SAhsan Saghir %idxprom = sext i32 %4 to i64 247acce4010SAhsan Saghir %arrayidx = getelementptr inbounds [64 x i8], [64 x i8]* @Arr1, i64 0, i64 %idxprom 248acce4010SAhsan Saghir %5 = load i8, i8* %arrayidx, align 1 249acce4010SAhsan Saghir %conv = zext i8 %5 to i16 250acce4010SAhsan Saghir %6 = load i32, i32* %i, align 4 251acce4010SAhsan Saghir %idxprom1 = sext i32 %6 to i64 252acce4010SAhsan Saghir %arrayidx2 = getelementptr inbounds [64 x i16], [64 x i16]* %Arr2, i64 0, i64 %idxprom1 253acce4010SAhsan Saghir store i16 %conv, i16* %arrayidx2, align 2 254acce4010SAhsan Saghir br label %for.inc 255acce4010SAhsan Saghir 256acce4010SAhsan Saghirfor.inc: ; preds = %for.body 257acce4010SAhsan Saghir %7 = load i32, i32* %i, align 4 258acce4010SAhsan Saghir %inc = add nsw i32 %7, 1 259acce4010SAhsan Saghir store i32 %inc, i32* %i, align 4 260acce4010SAhsan Saghir br label %for.cond 261acce4010SAhsan Saghir 262acce4010SAhsan Saghirfor.end: ; preds = %for.cond.cleanup 263acce4010SAhsan Saghir %arraydecay = getelementptr inbounds [64 x i16], [64 x i16]* %Arr2, i64 0, i64 0 264acce4010SAhsan Saghir call void @test_arr(i16* %arraydecay) 265acce4010SAhsan Saghir %8 = bitcast [64 x i16]* %Arr2 to i8* 266acce4010SAhsan Saghir call void @llvm.lifetime.end.p0i8(i64 128, i8* %8) 267acce4010SAhsan Saghir ret void 268acce4010SAhsan Saghir} 269acce4010SAhsan Saghir 270acce4010SAhsan Saghirdeclare void @llvm.lifetime.start.p0i8(i64 immarg, i8* nocapture) nounwind 271acce4010SAhsan Saghir 272acce4010SAhsan Saghirdeclare void @test(<8 x i32>*) nounwind 273acce4010SAhsan Saghirdeclare void @test1(<4 x i32>*) nounwind 274acce4010SAhsan Saghirdeclare void @test_arr(i16*) 275acce4010SAhsan Saghir 276acce4010SAhsan Saghirdeclare void @llvm.lifetime.end.p0i8(i64 immarg, i8* nocapture) nounwind 277