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