blob: b29ad7e3ab01591c4680423d7f044ef8ec827e11 [file] [log] [blame]
Tom Stellard1c8788e2014-03-07 20:12:33 +00001; RUN: llc < %s -march=r600 -mcpu=redwood | FileCheck --check-prefix=EG-CHECK --check-prefix=FUNC %s
2; RUN: llc < %s -march=r600 -mcpu=cayman | FileCheck --check-prefix=CM-CHECK --check-prefix=FUNC %s
3; RUN: llc < %s -march=r600 -mcpu=verde -verify-machineinstrs | FileCheck --check-prefix=SI-CHECK --check-prefix=FUNC %s
Tom Stellard754f80f2013-04-05 23:31:51 +00004
Tom Stellardd3ee8c12013-08-16 01:12:06 +00005;===------------------------------------------------------------------------===;
6; Global Address Space
7;===------------------------------------------------------------------------===;
Tom Stellard1c8788e2014-03-07 20:12:33 +00008; FUNC-LABEL: @store_i1
9; EG-CHECK: MEM_RAT MSKOR
10; SI-CHECK: BUFFER_STORE_BYTE
11define void @store_i1(i1 addrspace(1)* %out) {
12entry:
13 store i1 true, i1 addrspace(1)* %out
14 ret void
15}
Tom Stellardd3ee8c12013-08-16 01:12:06 +000016
17; i8 store
Tom Stellardaf775432013-10-23 00:44:32 +000018; EG-CHECK-LABEL: @store_i8
Tom Stellardd3ee8c12013-08-16 01:12:06 +000019; EG-CHECK: MEM_RAT MSKOR T[[RW_GPR:[0-9]]].XW, T{{[0-9]}}.X
20; EG-CHECK: VTX_READ_8 [[VAL:T[0-9]\.X]], [[VAL]]
Vincent Lejeune7e2c8322013-09-04 19:53:46 +000021; IG 0: Get the byte index and truncate the value
22; EG-CHECK: AND_INT T{{[0-9]}}.[[BI_CHAN:[XYZW]]], KC0[2].Y, literal.x
23; EG-CHECK-NEXT: AND_INT * T{{[0-9]}}.[[TRUNC_CHAN:[XYZW]]], [[VAL]], literal.y
24; EG-CHECK-NEXT: 3(4.203895e-45), 255(3.573311e-43)
25; IG 1: Truncate the calculated the shift amount for the mask
26; EG-CHECK: LSHL * T{{[0-9]}}.[[SHIFT_CHAN:[XYZW]]], PV.[[BI_CHAN]], literal.x
Tom Stellardd3ee8c12013-08-16 01:12:06 +000027; EG-CHECK-NEXT: 3
Tom Stellardd3ee8c12013-08-16 01:12:06 +000028; IG 2: Shift the value and the mask
Vincent Lejeune7e2c8322013-09-04 19:53:46 +000029; EG-CHECK: LSHL T[[RW_GPR]].X, T{{[0-9]}}.[[TRUNC_CHAN]], PV.[[SHIFT_CHAN]]
Tom Stellardd3ee8c12013-08-16 01:12:06 +000030; EG-CHECK: LSHL * T[[RW_GPR]].W, literal.x, PV.[[SHIFT_CHAN]]
31; EG-CHECK-NEXT: 255
32; IG 3: Initialize the Y and Z channels to zero
33; XXX: An optimal scheduler should merge this into one of the prevous IGs.
34; EG-CHECK: MOV T[[RW_GPR]].Y, 0.0
35; EG-CHECK: MOV * T[[RW_GPR]].Z, 0.0
36
Tom Stellardaf775432013-10-23 00:44:32 +000037; SI-CHECK-LABEL: @store_i8
Tom Stellardd3ee8c12013-08-16 01:12:06 +000038; SI-CHECK: BUFFER_STORE_BYTE
39
40define void @store_i8(i8 addrspace(1)* %out, i8 %in) {
41entry:
42 store i8 %in, i8 addrspace(1)* %out
43 ret void
44}
45
46; i16 store
Tom Stellardaf775432013-10-23 00:44:32 +000047; EG-CHECK-LABEL: @store_i16
Tom Stellardd3ee8c12013-08-16 01:12:06 +000048; EG-CHECK: MEM_RAT MSKOR T[[RW_GPR:[0-9]]].XW, T{{[0-9]}}.X
49; EG-CHECK: VTX_READ_16 [[VAL:T[0-9]\.X]], [[VAL]]
Vincent Lejeune7e2c8322013-09-04 19:53:46 +000050; IG 0: Get the byte index and truncate the value
51; EG-CHECK: AND_INT T{{[0-9]}}.[[BI_CHAN:[XYZW]]], KC0[2].Y, literal.x
52; EG-CHECK: AND_INT * T{{[0-9]}}.[[TRUNC_CHAN:[XYZW]]], [[VAL]], literal.y
53; EG-CHECK-NEXT: 3(4.203895e-45), 65535(9.183409e-41)
54; IG 1: Truncate the calculated the shift amount for the mask
55; EG-CHECK: LSHL * T{{[0-9]}}.[[SHIFT_CHAN:[XYZW]]], PV.[[BI_CHAN]], literal.x
56; EG-CHECK: 3
Tom Stellardd3ee8c12013-08-16 01:12:06 +000057; IG 2: Shift the value and the mask
Vincent Lejeune7e2c8322013-09-04 19:53:46 +000058; EG-CHECK: LSHL T[[RW_GPR]].X, T{{[0-9]}}.[[TRUNC_CHAN]], PV.[[SHIFT_CHAN]]
Tom Stellardd3ee8c12013-08-16 01:12:06 +000059; EG-CHECK: LSHL * T[[RW_GPR]].W, literal.x, PV.[[SHIFT_CHAN]]
60; EG-CHECK-NEXT: 65535
61; IG 3: Initialize the Y and Z channels to zero
62; XXX: An optimal scheduler should merge this into one of the prevous IGs.
63; EG-CHECK: MOV T[[RW_GPR]].Y, 0.0
64; EG-CHECK: MOV * T[[RW_GPR]].Z, 0.0
65
Tom Stellardaf775432013-10-23 00:44:32 +000066; SI-CHECK-LABEL: @store_i16
Tom Stellardd3ee8c12013-08-16 01:12:06 +000067; SI-CHECK: BUFFER_STORE_SHORT
68define void @store_i16(i16 addrspace(1)* %out, i16 %in) {
69entry:
70 store i16 %in, i16 addrspace(1)* %out
71 ret void
72}
73
Tom Stellardaf775432013-10-23 00:44:32 +000074; EG-CHECK-LABEL: @store_v2i8
Tom Stellardfbab8272013-08-16 01:12:11 +000075; EG-CHECK: MEM_RAT MSKOR
76; EG-CHECK-NOT: MEM_RAT MSKOR
Tom Stellardaf775432013-10-23 00:44:32 +000077; SI-CHECK-LABEL: @store_v2i8
Tom Stellardfbab8272013-08-16 01:12:11 +000078; SI-CHECK: BUFFER_STORE_BYTE
79; SI-CHECK: BUFFER_STORE_BYTE
80define void @store_v2i8(<2 x i8> addrspace(1)* %out, <2 x i32> %in) {
81entry:
82 %0 = trunc <2 x i32> %in to <2 x i8>
83 store <2 x i8> %0, <2 x i8> addrspace(1)* %out
84 ret void
85}
86
87
Tom Stellardaf775432013-10-23 00:44:32 +000088; EG-CHECK-LABEL: @store_v2i16
Tom Stellardfbab8272013-08-16 01:12:11 +000089; EG-CHECK: MEM_RAT_CACHELESS STORE_RAW
Tom Stellardaf775432013-10-23 00:44:32 +000090; CM-CHECK-LABEL: @store_v2i16
Tom Stellardfbab8272013-08-16 01:12:11 +000091; CM-CHECK: MEM_RAT_CACHELESS STORE_DWORD
Tom Stellardaf775432013-10-23 00:44:32 +000092; SI-CHECK-LABEL: @store_v2i16
93; SI-CHECK: BUFFER_STORE_SHORT
94; SI-CHECK: BUFFER_STORE_SHORT
Tom Stellardfbab8272013-08-16 01:12:11 +000095define void @store_v2i16(<2 x i16> addrspace(1)* %out, <2 x i32> %in) {
96entry:
97 %0 = trunc <2 x i32> %in to <2 x i16>
98 store <2 x i16> %0, <2 x i16> addrspace(1)* %out
99 ret void
100}
101
Tom Stellardaf775432013-10-23 00:44:32 +0000102; EG-CHECK-LABEL: @store_v4i8
Tom Stellardfbab8272013-08-16 01:12:11 +0000103; EG-CHECK: MEM_RAT_CACHELESS STORE_RAW
Tom Stellardaf775432013-10-23 00:44:32 +0000104; CM-CHECK-LABEL: @store_v4i8
Tom Stellardfbab8272013-08-16 01:12:11 +0000105; CM-CHECK: MEM_RAT_CACHELESS STORE_DWORD
Tom Stellardaf775432013-10-23 00:44:32 +0000106; SI-CHECK-LABEL: @store_v4i8
Tom Stellardfbab8272013-08-16 01:12:11 +0000107; SI-CHECK: BUFFER_STORE_BYTE
108; SI-CHECK: BUFFER_STORE_BYTE
109; SI-CHECK: BUFFER_STORE_BYTE
110; SI-CHECK: BUFFER_STORE_BYTE
111define void @store_v4i8(<4 x i8> addrspace(1)* %out, <4 x i32> %in) {
112entry:
113 %0 = trunc <4 x i32> %in to <4 x i8>
114 store <4 x i8> %0, <4 x i8> addrspace(1)* %out
115 ret void
116}
117
Tom Stellard5a6b0d82013-04-19 02:10:53 +0000118; floating-point store
Tom Stellardaf775432013-10-23 00:44:32 +0000119; EG-CHECK-LABEL: @store_f32
Tom Stellardac00f9d2013-08-16 01:11:46 +0000120; EG-CHECK: MEM_RAT_CACHELESS STORE_RAW T{{[0-9]+\.X, T[0-9]+\.X}}, 1
Tom Stellardaf775432013-10-23 00:44:32 +0000121; CM-CHECK-LABEL: @store_f32
Tom Stellardac00f9d2013-08-16 01:11:46 +0000122; CM-CHECK: MEM_RAT_CACHELESS STORE_DWORD T{{[0-9]+\.X, T[0-9]+\.X}}
Tom Stellardaf775432013-10-23 00:44:32 +0000123; SI-CHECK-LABEL: @store_f32
Tom Stellard754f80f2013-04-05 23:31:51 +0000124; SI-CHECK: BUFFER_STORE_DWORD
125
Tom Stellard5a6b0d82013-04-19 02:10:53 +0000126define void @store_f32(float addrspace(1)* %out, float %in) {
Tom Stellard754f80f2013-04-05 23:31:51 +0000127 store float %in, float addrspace(1)* %out
128 ret void
129}
Tom Stellard0125f2a2013-06-25 02:39:35 +0000130
Tom Stellardaf775432013-10-23 00:44:32 +0000131; EG-CHECK-LABEL: @store_v4i16
Tom Stellardfbab8272013-08-16 01:12:11 +0000132; EG-CHECK: MEM_RAT MSKOR
133; EG-CHECK: MEM_RAT MSKOR
134; EG-CHECK: MEM_RAT MSKOR
135; EG-CHECK: MEM_RAT MSKOR
136; EG-CHECK-NOT: MEM_RAT MSKOR
Tom Stellardaf775432013-10-23 00:44:32 +0000137; SI-CHECK-LABEL: @store_v4i16
Tom Stellardfbab8272013-08-16 01:12:11 +0000138; SI-CHECK: BUFFER_STORE_SHORT
139; SI-CHECK: BUFFER_STORE_SHORT
140; SI-CHECK: BUFFER_STORE_SHORT
141; SI-CHECK: BUFFER_STORE_SHORT
142; SI-CHECK-NOT: BUFFER_STORE_BYTE
143define void @store_v4i16(<4 x i16> addrspace(1)* %out, <4 x i32> %in) {
144entry:
145 %0 = trunc <4 x i32> %in to <4 x i16>
146 store <4 x i16> %0, <4 x i16> addrspace(1)* %out
147 ret void
148}
149
Tom Stellarded2f6142013-07-18 21:43:42 +0000150; vec2 floating-point stores
Tom Stellardaf775432013-10-23 00:44:32 +0000151; EG-CHECK-LABEL: @store_v2f32
Tom Stellardac00f9d2013-08-16 01:11:46 +0000152; EG-CHECK: MEM_RAT_CACHELESS STORE_RAW
Tom Stellardaf775432013-10-23 00:44:32 +0000153; CM-CHECK-LABEL: @store_v2f32
Tom Stellardac00f9d2013-08-16 01:11:46 +0000154; CM-CHECK: MEM_RAT_CACHELESS STORE_DWORD
Tom Stellardaf775432013-10-23 00:44:32 +0000155; SI-CHECK-LABEL: @store_v2f32
Tom Stellarded2f6142013-07-18 21:43:42 +0000156; SI-CHECK: BUFFER_STORE_DWORDX2
157
158define void @store_v2f32(<2 x float> addrspace(1)* %out, float %a, float %b) {
159entry:
160 %0 = insertelement <2 x float> <float 0.0, float 0.0>, float %a, i32 0
Tom Stellard8e5da412013-08-14 23:24:32 +0000161 %1 = insertelement <2 x float> %0, float %b, i32 1
Tom Stellarded2f6142013-07-18 21:43:42 +0000162 store <2 x float> %1, <2 x float> addrspace(1)* %out
163 ret void
164}
165
Tom Stellardaf775432013-10-23 00:44:32 +0000166; EG-CHECK-LABEL: @store_v4i32
Tom Stellard6d1379e2013-08-16 01:12:00 +0000167; EG-CHECK: MEM_RAT_CACHELESS STORE_RAW
168; EG-CHECK-NOT: MEM_RAT_CACHELESS STORE_RAW
Tom Stellardaf775432013-10-23 00:44:32 +0000169; CM-CHECK-LABEL: @store_v4i32
Tom Stellard6d1379e2013-08-16 01:12:00 +0000170; CM-CHECK: MEM_RAT_CACHELESS STORE_DWORD
171; CM-CHECK-NOT: MEM_RAT_CACHELESS STORE_DWORD
Tom Stellardaf775432013-10-23 00:44:32 +0000172; SI-CHECK-LABEL: @store_v4i32
Tom Stellard6d1379e2013-08-16 01:12:00 +0000173; SI-CHECK: BUFFER_STORE_DWORDX4
174define void @store_v4i32(<4 x i32> addrspace(1)* %out, <4 x i32> %in) {
175entry:
176 store <4 x i32> %in, <4 x i32> addrspace(1)* %out
177 ret void
178}
179
Tom Stellard2ffc3302013-08-26 15:05:44 +0000180;===------------------------------------------------------------------------===;
181; Local Address Space
182;===------------------------------------------------------------------------===;
183
Tom Stellard1c8788e2014-03-07 20:12:33 +0000184; FUNC-LABEL: @store_local_i1
185; EG-CHECK: LDS_BYTE_WRITE
186; SI-CHECK: DS_WRITE_B8
187define void @store_local_i1(i1 addrspace(3)* %out) {
188entry:
189 store i1 true, i1 addrspace(3)* %out
190 ret void
191}
192
Tom Stellardaf775432013-10-23 00:44:32 +0000193; EG-CHECK-LABEL: @store_local_i8
Tom Stellardf3d166a2013-08-26 15:05:49 +0000194; EG-CHECK: LDS_BYTE_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000195; SI-CHECK-LABEL: @store_local_i8
Tom Stellardf3d166a2013-08-26 15:05:49 +0000196; SI-CHECK: DS_WRITE_B8
197define void @store_local_i8(i8 addrspace(3)* %out, i8 %in) {
198 store i8 %in, i8 addrspace(3)* %out
199 ret void
200}
201
Tom Stellardaf775432013-10-23 00:44:32 +0000202; EG-CHECK-LABEL: @store_local_i16
Tom Stellardf3d166a2013-08-26 15:05:49 +0000203; EG-CHECK: LDS_SHORT_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000204; SI-CHECK-LABEL: @store_local_i16
Tom Stellardf3d166a2013-08-26 15:05:49 +0000205; SI-CHECK: DS_WRITE_B16
206define void @store_local_i16(i16 addrspace(3)* %out, i16 %in) {
207 store i16 %in, i16 addrspace(3)* %out
208 ret void
209}
210
Tom Stellardaf775432013-10-23 00:44:32 +0000211; EG-CHECK-LABEL: @store_local_v2i16
Tom Stellard2ffc3302013-08-26 15:05:44 +0000212; EG-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000213; CM-CHECK-LABEL: @store_local_v2i16
Tom Stellard2ffc3302013-08-26 15:05:44 +0000214; CM-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000215; SI-CHECK-LABEL: @store_local_v2i16
216; SI-CHECK: DS_WRITE_B16
217; SI-CHECK: DS_WRITE_B16
Tom Stellard2ffc3302013-08-26 15:05:44 +0000218define void @store_local_v2i16(<2 x i16> addrspace(3)* %out, <2 x i16> %in) {
219entry:
220 store <2 x i16> %in, <2 x i16> addrspace(3)* %out
221 ret void
222}
223
Tom Stellardaf775432013-10-23 00:44:32 +0000224; EG-CHECK-LABEL: @store_local_v4i8
Tom Stellard7da047c2013-08-26 15:05:55 +0000225; EG-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000226; CM-CHECK-LABEL: @store_local_v4i8
Tom Stellard7da047c2013-08-26 15:05:55 +0000227; CM-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000228; SI-CHECK-LABEL: @store_local_v4i8
Tom Stellard7da047c2013-08-26 15:05:55 +0000229; SI-CHECK: DS_WRITE_B8
230; SI-CHECK: DS_WRITE_B8
231; SI-CHECK: DS_WRITE_B8
232; SI-CHECK: DS_WRITE_B8
233define void @store_local_v4i8(<4 x i8> addrspace(3)* %out, <4 x i8> %in) {
234entry:
235 store <4 x i8> %in, <4 x i8> addrspace(3)* %out
236 ret void
237}
238
Tom Stellardaf775432013-10-23 00:44:32 +0000239; EG-CHECK-LABEL: @store_local_v2i32
Tom Stellard2ffc3302013-08-26 15:05:44 +0000240; EG-CHECK: LDS_WRITE
241; EG-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000242; CM-CHECK-LABEL: @store_local_v2i32
Tom Stellard2ffc3302013-08-26 15:05:44 +0000243; CM-CHECK: LDS_WRITE
244; CM-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000245; SI-CHECK-LABEL: @store_local_v2i32
Tom Stellard2ffc3302013-08-26 15:05:44 +0000246; SI-CHECK: DS_WRITE_B32
247; SI-CHECK: DS_WRITE_B32
248define void @store_local_v2i32(<2 x i32> addrspace(3)* %out, <2 x i32> %in) {
249entry:
250 store <2 x i32> %in, <2 x i32> addrspace(3)* %out
251 ret void
252}
253
Tom Stellardaf775432013-10-23 00:44:32 +0000254; EG-CHECK-LABEL: @store_local_v4i32
Tom Stellard2ffc3302013-08-26 15:05:44 +0000255; EG-CHECK: LDS_WRITE
256; EG-CHECK: LDS_WRITE
257; EG-CHECK: LDS_WRITE
258; EG-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000259; CM-CHECK-LABEL: @store_local_v4i32
Tom Stellard2ffc3302013-08-26 15:05:44 +0000260; CM-CHECK: LDS_WRITE
261; CM-CHECK: LDS_WRITE
262; CM-CHECK: LDS_WRITE
263; CM-CHECK: LDS_WRITE
Tom Stellardaf775432013-10-23 00:44:32 +0000264; SI-CHECK-LABEL: @store_local_v4i32
Tom Stellard2ffc3302013-08-26 15:05:44 +0000265; SI-CHECK: DS_WRITE_B32
266; SI-CHECK: DS_WRITE_B32
267; SI-CHECK: DS_WRITE_B32
268; SI-CHECK: DS_WRITE_B32
269define void @store_local_v4i32(<4 x i32> addrspace(3)* %out, <4 x i32> %in) {
270entry:
271 store <4 x i32> %in, <4 x i32> addrspace(3)* %out
272 ret void
273}
274
Tom Stellard0125f2a2013-06-25 02:39:35 +0000275; The stores in this function are combined by the optimizer to create a
276; 64-bit store with 32-bit alignment. This is legal for SI and the legalizer
277; should not try to split the 64-bit store back into 2 32-bit stores.
278;
279; Evergreen / Northern Islands don't support 64-bit stores yet, so there should
280; be two 32-bit stores.
281
Tom Stellardaf775432013-10-23 00:44:32 +0000282; EG-CHECK-LABEL: @vecload2
Tom Stellardac00f9d2013-08-16 01:11:46 +0000283; EG-CHECK: MEM_RAT_CACHELESS STORE_RAW
Tom Stellardaf775432013-10-23 00:44:32 +0000284; CM-CHECK-LABEL: @vecload2
Tom Stellardac00f9d2013-08-16 01:11:46 +0000285; CM-CHECK: MEM_RAT_CACHELESS STORE_DWORD
Tom Stellardaf775432013-10-23 00:44:32 +0000286; SI-CHECK-LABEL: @vecload2
Tom Stellard0125f2a2013-06-25 02:39:35 +0000287; SI-CHECK: BUFFER_STORE_DWORDX2
288define void @vecload2(i32 addrspace(1)* nocapture %out, i32 addrspace(2)* nocapture %mem) #0 {
289entry:
Manman Ren1047fe42013-09-30 18:17:35 +0000290 %0 = load i32 addrspace(2)* %mem, align 4
Tom Stellard0125f2a2013-06-25 02:39:35 +0000291 %arrayidx1.i = getelementptr inbounds i32 addrspace(2)* %mem, i64 1
Manman Ren1047fe42013-09-30 18:17:35 +0000292 %1 = load i32 addrspace(2)* %arrayidx1.i, align 4
293 store i32 %0, i32 addrspace(1)* %out, align 4
Tom Stellard0125f2a2013-06-25 02:39:35 +0000294 %arrayidx1 = getelementptr inbounds i32 addrspace(1)* %out, i64 1
Manman Ren1047fe42013-09-30 18:17:35 +0000295 store i32 %1, i32 addrspace(1)* %arrayidx1, align 4
Tom Stellard0125f2a2013-06-25 02:39:35 +0000296 ret void
297}
298
Bill Wendling187d3dd2013-08-22 21:28:54 +0000299attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
Tom Stellard868fd922014-04-17 21:00:11 +0000300
301; When i128 was a legal type this program generated cannot select errors:
302
303; FUNC-LABEL: @i128-const-store
304; FIXME: We should be able to to this with one store instruction
305; EG-CHECK: STORE_RAW
306; EG-CHECK: STORE_RAW
307; EG-CHECK: STORE_RAW
308; EG-CHECK: STORE_RAW
309; CM-CHECK: STORE_DWORD
310; CM-CHECK: STORE_DWORD
311; CM-CHECK: STORE_DWORD
312; CM-CHECK: STORE_DWORD
313; SI: BUFFER_STORE_DWORDX2
314; SI: BUFFER_STORE_DWORDX2
315define void @i128-const-store(i32 addrspace(1)* %out) {
316entry:
317 store i32 1, i32 addrspace(1)* %out, align 4
318 %arrayidx2 = getelementptr inbounds i32 addrspace(1)* %out, i64 1
319 store i32 1, i32 addrspace(1)* %arrayidx2, align 4
320 %arrayidx4 = getelementptr inbounds i32 addrspace(1)* %out, i64 2
321 store i32 2, i32 addrspace(1)* %arrayidx4, align 4
322 %arrayidx6 = getelementptr inbounds i32 addrspace(1)* %out, i64 3
323 store i32 2, i32 addrspace(1)* %arrayidx6, align 4
324 ret void
325}