blob: b08528e1c3c67572ad9abb606c328cf5fc7fdf21 [file] [log] [blame]
Justin Holewinski7d8895e2011-04-20 15:37:17 +00001; RUN: llc < %s -march=ptx32 | FileCheck %s
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +00002
Justin Holewinskifbc8d302011-03-14 15:40:11 +00003;CHECK: .extern .global .b8 array_i16[20];
Che-Liang Chiou65b14762011-03-02 03:20:28 +00004@array_i16 = external global [10 x i16]
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +00005
Justin Holewinskifbc8d302011-03-14 15:40:11 +00006;CHECK: .extern .const .b8 array_constant_i16[20];
Che-Liang Chiou65b14762011-03-02 03:20:28 +00007@array_constant_i16 = external addrspace(1) constant [10 x i16]
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +00008
Justin Holewinskifbc8d302011-03-14 15:40:11 +00009;CHECK: .extern .local .b8 array_local_i16[20];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000010@array_local_i16 = external addrspace(2) global [10 x i16]
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +000011
Justin Holewinskifbc8d302011-03-14 15:40:11 +000012;CHECK: .extern .shared .b8 array_shared_i16[20];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000013@array_shared_i16 = external addrspace(4) global [10 x i16]
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +000014
Justin Holewinskifbc8d302011-03-14 15:40:11 +000015;CHECK: .extern .global .b8 array_i32[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000016@array_i32 = external global [10 x i32]
17
Justin Holewinskifbc8d302011-03-14 15:40:11 +000018;CHECK: .extern .const .b8 array_constant_i32[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000019@array_constant_i32 = external addrspace(1) constant [10 x i32]
20
Justin Holewinskifbc8d302011-03-14 15:40:11 +000021;CHECK: .extern .local .b8 array_local_i32[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000022@array_local_i32 = external addrspace(2) global [10 x i32]
23
Justin Holewinskifbc8d302011-03-14 15:40:11 +000024;CHECK: .extern .shared .b8 array_shared_i32[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000025@array_shared_i32 = external addrspace(4) global [10 x i32]
26
Justin Holewinskifbc8d302011-03-14 15:40:11 +000027;CHECK: .extern .global .b8 array_i64[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000028@array_i64 = external global [10 x i64]
29
Justin Holewinskifbc8d302011-03-14 15:40:11 +000030;CHECK: .extern .const .b8 array_constant_i64[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000031@array_constant_i64 = external addrspace(1) constant [10 x i64]
32
Justin Holewinskifbc8d302011-03-14 15:40:11 +000033;CHECK: .extern .local .b8 array_local_i64[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000034@array_local_i64 = external addrspace(2) global [10 x i64]
35
Justin Holewinskifbc8d302011-03-14 15:40:11 +000036;CHECK: .extern .shared .b8 array_shared_i64[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000037@array_shared_i64 = external addrspace(4) global [10 x i64]
38
Justin Holewinskifbc8d302011-03-14 15:40:11 +000039;CHECK: .extern .global .b8 array_float[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000040@array_float = external global [10 x float]
41
Justin Holewinskifbc8d302011-03-14 15:40:11 +000042;CHECK: .extern .const .b8 array_constant_float[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000043@array_constant_float = external addrspace(1) constant [10 x float]
44
Justin Holewinskifbc8d302011-03-14 15:40:11 +000045;CHECK: .extern .local .b8 array_local_float[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000046@array_local_float = external addrspace(2) global [10 x float]
47
Justin Holewinskifbc8d302011-03-14 15:40:11 +000048;CHECK: .extern .shared .b8 array_shared_float[40];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000049@array_shared_float = external addrspace(4) global [10 x float]
50
Justin Holewinskifbc8d302011-03-14 15:40:11 +000051;CHECK: .extern .global .b8 array_double[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000052@array_double = external global [10 x double]
53
Justin Holewinskifbc8d302011-03-14 15:40:11 +000054;CHECK: .extern .const .b8 array_constant_double[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000055@array_constant_double = external addrspace(1) constant [10 x double]
56
Justin Holewinskifbc8d302011-03-14 15:40:11 +000057;CHECK: .extern .local .b8 array_local_double[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000058@array_local_double = external addrspace(2) global [10 x double]
59
Justin Holewinskifbc8d302011-03-14 15:40:11 +000060;CHECK: .extern .shared .b8 array_shared_double[80];
Che-Liang Chiou65b14762011-03-02 03:20:28 +000061@array_shared_double = external addrspace(4) global [10 x double]
62
63
64define ptx_device void @t1_u16(i16* %p, i16 %x) {
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +000065entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +000066;CHECK: st.global.u16 [r{{[0-9]+}}], rh{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +000067;CHECK-NEXT: ret;
68 store i16 %x, i16* %p
69 ret void
70}
71
72define ptx_device void @t1_u32(i32* %p, i32 %x) {
73entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +000074;CHECK: st.global.u32 [r{{[0-9]+}}], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +000075;CHECK-NEXT: ret;
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +000076 store i32 %x, i32* %p
77 ret void
78}
79
Che-Liang Chiou65b14762011-03-02 03:20:28 +000080define ptx_device void @t1_u64(i64* %p, i64 %x) {
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +000081entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +000082;CHECK: st.global.u64 [r{{[0-9]+}}], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +000083;CHECK-NEXT: ret;
84 store i64 %x, i64* %p
85 ret void
86}
87
88define ptx_device void @t1_f32(float* %p, float %x) {
89entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +000090;CHECK: st.global.f32 [r{{[0-9]+}}], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +000091;CHECK-NEXT: ret;
92 store float %x, float* %p
93 ret void
94}
95
96define ptx_device void @t1_f64(double* %p, double %x) {
97entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +000098;CHECK: st.global.f64 [r{{[0-9]+}}], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +000099;CHECK-NEXT: ret;
100 store double %x, double* %p
101 ret void
102}
103
104define ptx_device void @t2_u16(i16* %p, i16 %x) {
105entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000106;CHECK: st.global.u16 [r{{[0-9]+}}+2], rh{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000107;CHECK-NEXT: ret;
108 %i = getelementptr i16* %p, i32 1
109 store i16 %x, i16* %i
110 ret void
111}
112
113define ptx_device void @t2_u32(i32* %p, i32 %x) {
114entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000115;CHECK: st.global.u32 [r{{[0-9]+}}+4], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000116;CHECK-NEXT: ret;
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000117 %i = getelementptr i32* %p, i32 1
118 store i32 %x, i32* %i
119 ret void
120}
121
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000122define ptx_device void @t2_u64(i64* %p, i64 %x) {
123entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000124;CHECK: st.global.u64 [r{{[0-9]+}}+8], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000125;CHECK-NEXT: ret;
126 %i = getelementptr i64* %p, i32 1
127 store i64 %x, i64* %i
128 ret void
129}
130
131define ptx_device void @t2_f32(float* %p, float %x) {
132entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000133;CHECK: st.global.f32 [r{{[0-9]+}}+4], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000134;CHECK-NEXT: ret;
135 %i = getelementptr float* %p, i32 1
136 store float %x, float* %i
137 ret void
138}
139
140define ptx_device void @t2_f64(double* %p, double %x) {
141entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000142;CHECK: st.global.f64 [r{{[0-9]+}}+8], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000143;CHECK-NEXT: ret;
144 %i = getelementptr double* %p, i32 1
145 store double %x, double* %i
146 ret void
147}
148
149define ptx_device void @t3_u16(i16* %p, i32 %q, i16 %x) {
150entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000151;CHECK: shl.b32 r[[R0:[0-9]+]], r{{[0-9]+}}, 1;
152;CHECK-NEXT: add.u32 r[[R0]], r{{[0-9]+}}, r[[R0]];
153;CHECK-NEXT: st.global.u16 [r[[R0]]], rh{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000154;CHECK-NEXT: ret;
155 %i = getelementptr i16* %p, i32 %q
156 store i16 %x, i16* %i
157 ret void
158}
159
160define ptx_device void @t3_u32(i32* %p, i32 %q, i32 %x) {
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000161entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000162;CHECK: shl.b32 r[[R0:[0-9]+]], r{{[0-9]+}}, 2;
163;CHECK-NEXT: add.u32 r[[R0]], r{{[0-9]+}}, r[[R0]];
164;CHECK-NEXT: st.global.u32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000165;CHECK-NEXT: ret;
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000166 %i = getelementptr i32* %p, i32 %q
167 store i32 %x, i32* %i
168 ret void
169}
170
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000171define ptx_device void @t3_u64(i64* %p, i32 %q, i64 %x) {
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000172entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000173;CHECK: shl.b32 r[[R0:[0-9]+]], r{{[0-9]+}}, 3;
174;CHECK-NEXT: add.u32 r[[R0]], r{{[0-9]+}}, r[[R0]];
175;CHECK-NEXT: st.global.u64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000176;CHECK-NEXT: ret;
177 %i = getelementptr i64* %p, i32 %q
178 store i64 %x, i64* %i
179 ret void
180}
181
182define ptx_device void @t3_f32(float* %p, i32 %q, float %x) {
183entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000184;CHECK: shl.b32 r[[R0:[0-9]+]], r{{[0-9]+}}, 2;
185;CHECK-NEXT: add.u32 r[[R0]], r{{[0-9]+}}, r[[R0]];
186;CHECK-NEXT: st.global.f32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000187;CHECK-NEXT: ret;
188 %i = getelementptr float* %p, i32 %q
189 store float %x, float* %i
190 ret void
191}
192
193define ptx_device void @t3_f64(double* %p, i32 %q, double %x) {
194entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000195;CHECK: shl.b32 r[[R0:[0-9]+]], r{{[0-9]+}}, 3;
196;CHECK-NEXT: add.u32 r[[R0]], r{{[0-9]+}}, r[[R0]];
197;CHECK-NEXT: st.global.f64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000198;CHECK-NEXT: ret;
199 %i = getelementptr double* %p, i32 %q
200 store double %x, double* %i
201 ret void
202}
203
204define ptx_device void @t4_global_u16(i16 %x) {
205entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000206;CHECK: mov.u32 r[[R0:[0-9]+]], array_i16;
207;CHECK-NEXT: st.global.u16 [r[[R0]]], rh{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000208;CHECK-NEXT: ret;
209 %i = getelementptr [10 x i16]* @array_i16, i16 0, i16 0
210 store i16 %x, i16* %i
211 ret void
212}
213
214define ptx_device void @t4_global_u32(i32 %x) {
215entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000216;CHECK: mov.u32 r[[R0:[0-9]+]], array_i32;
217;CHECK-NEXT: st.global.u32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000218;CHECK-NEXT: ret;
219 %i = getelementptr [10 x i32]* @array_i32, i32 0, i32 0
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000220 store i32 %x, i32* %i
221 ret void
222}
223
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000224define ptx_device void @t4_global_u64(i64 %x) {
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000225entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000226;CHECK: mov.u32 r[[R0:[0-9]+]], array_i64;
227;CHECK-NEXT: st.global.u64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000228;CHECK-NEXT: ret;
229 %i = getelementptr [10 x i64]* @array_i64, i32 0, i32 0
230 store i64 %x, i64* %i
231 ret void
232}
233
234define ptx_device void @t4_global_f32(float %x) {
235entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000236;CHECK: mov.u32 r[[R0:[0-9]+]], array_float;
237;CHECK-NEXT: st.global.f32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000238;CHECK-NEXT: ret;
239 %i = getelementptr [10 x float]* @array_float, i32 0, i32 0
240 store float %x, float* %i
241 ret void
242}
243
244define ptx_device void @t4_global_f64(double %x) {
245entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000246;CHECK: mov.u32 r[[R0:[0-9]+]], array_double;
247;CHECK-NEXT: st.global.f64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000248;CHECK-NEXT: ret;
249 %i = getelementptr [10 x double]* @array_double, i32 0, i32 0
250 store double %x, double* %i
251 ret void
252}
253
254define ptx_device void @t4_local_u16(i16 %x) {
255entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000256;CHECK: mov.u32 r[[R0:[0-9]+]], array_local_i16;
257;CHECK-NEXT: st.local.u16 [r[[R0]]], rh{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000258;CHECK-NEXT: ret;
259 %i = getelementptr [10 x i16] addrspace(2)* @array_local_i16, i32 0, i32 0
260 store i16 %x, i16 addrspace(2)* %i
261 ret void
262}
263
264define ptx_device void @t4_local_u32(i32 %x) {
265entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000266;CHECK: mov.u32 r[[R0:[0-9]+]], array_local_i32;
267;CHECK-NEXT: st.local.u32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000268;CHECK-NEXT: ret;
269 %i = getelementptr [10 x i32] addrspace(2)* @array_local_i32, i32 0, i32 0
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000270 store i32 %x, i32 addrspace(2)* %i
271 ret void
272}
273
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000274define ptx_device void @t4_local_u64(i64 %x) {
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000275entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000276;CHECK: mov.u32 r[[R0:[0-9]+]], array_local_i64;
277;CHECK-NEXT: st.local.u64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000278;CHECK-NEXT: ret;
279 %i = getelementptr [10 x i64] addrspace(2)* @array_local_i64, i32 0, i32 0
280 store i64 %x, i64 addrspace(2)* %i
281 ret void
282}
283
284define ptx_device void @t4_local_f32(float %x) {
285entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000286;CHECK: mov.u32 r[[R0:[0-9]+]], array_local_float;
287;CHECK-NEXT: st.local.f32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000288;CHECK-NEXT: ret;
289 %i = getelementptr [10 x float] addrspace(2)* @array_local_float, i32 0, i32 0
290 store float %x, float addrspace(2)* %i
291 ret void
292}
293
294define ptx_device void @t4_local_f64(double %x) {
295entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000296;CHECK: mov.u32 r[[R0:[0-9]+]], array_local_double;
297;CHECK-NEXT: st.local.f64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000298;CHECK-NEXT: ret;
299 %i = getelementptr [10 x double] addrspace(2)* @array_local_double, i32 0, i32 0
300 store double %x, double addrspace(2)* %i
301 ret void
302}
303
304define ptx_device void @t4_shared_u16(i16 %x) {
305entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000306;CHECK: mov.u32 r[[R0:[0-9]+]], array_shared_i16;
307;CHECK-NEXT: st.shared.u16 [r[[R0]]], rh{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000308;CHECK-NEXT: ret;
309 %i = getelementptr [10 x i16] addrspace(4)* @array_shared_i16, i32 0, i32 0
310 store i16 %x, i16 addrspace(4)* %i
311 ret void
312}
313
314define ptx_device void @t4_shared_u32(i32 %x) {
315entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000316;CHECK: mov.u32 r[[R0:[0-9]+]], array_shared_i32;
317;CHECK-NEXT: st.shared.u32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000318;CHECK-NEXT: ret;
319 %i = getelementptr [10 x i32] addrspace(4)* @array_shared_i32, i32 0, i32 0
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000320 store i32 %x, i32 addrspace(4)* %i
321 ret void
322}
323
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000324define ptx_device void @t4_shared_u64(i64 %x) {
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000325entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000326;CHECK: mov.u32 r[[R0:[0-9]+]], array_shared_i64;
327;CHECK-NEXT: st.shared.u64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000328;CHECK-NEXT: ret;
329 %i = getelementptr [10 x i64] addrspace(4)* @array_shared_i64, i32 0, i32 0
330 store i64 %x, i64 addrspace(4)* %i
331 ret void
332}
333
334define ptx_device void @t4_shared_f32(float %x) {
335entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000336;CHECK: mov.u32 r[[R0:[0-9]+]], array_shared_float;
337;CHECK-NEXT: st.shared.f32 [r[[R0]]], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000338;CHECK-NEXT: ret;
339 %i = getelementptr [10 x float] addrspace(4)* @array_shared_float, i32 0, i32 0
340 store float %x, float addrspace(4)* %i
341 ret void
342}
343
344define ptx_device void @t4_shared_f64(double %x) {
345entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000346;CHECK: mov.u32 r[[R0:[0-9]+]], array_shared_double;
347;CHECK-NEXT: st.shared.f64 [r[[R0]]], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000348;CHECK-NEXT: ret;
349 %i = getelementptr [10 x double] addrspace(4)* @array_shared_double, i32 0, i32 0
350 store double %x, double addrspace(4)* %i
351 ret void
352}
353
354define ptx_device void @t5_u16(i16 %x) {
355entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000356;CHECK: mov.u32 r[[R0:[0-9]+]], array_i16;
357;CHECK-NEXT: st.global.u16 [r[[R0]]+2], rh{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000358;CHECK-NEXT: ret;
359 %i = getelementptr [10 x i16]* @array_i16, i32 0, i32 1
360 store i16 %x, i16* %i
361 ret void
362}
363
364define ptx_device void @t5_u32(i32 %x) {
365entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000366;CHECK: mov.u32 r[[R0:[0-9]+]], array_i32;
367;CHECK-NEXT: st.global.u32 [r[[R0]]+4], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000368;CHECK-NEXT: ret;
369 %i = getelementptr [10 x i32]* @array_i32, i32 0, i32 1
Che-Liang Chiou15e8d2c2011-01-01 10:50:37 +0000370 store i32 %x, i32* %i
371 ret void
372}
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000373
374define ptx_device void @t5_u64(i64 %x) {
375entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000376;CHECK: mov.u32 r[[R0:[0-9]+]], array_i64;
377;CHECK-NEXT: st.global.u64 [r[[R0]]+8], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000378;CHECK-NEXT: ret;
379 %i = getelementptr [10 x i64]* @array_i64, i32 0, i32 1
380 store i64 %x, i64* %i
381 ret void
382}
383
384define ptx_device void @t5_f32(float %x) {
385entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000386;CHECK: mov.u32 r[[R0:[0-9]+]], array_float;
387;CHECK-NEXT: st.global.f32 [r[[R0]]+4], r{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000388;CHECK-NEXT: ret;
389 %i = getelementptr [10 x float]* @array_float, i32 0, i32 1
390 store float %x, float* %i
391 ret void
392}
393
394define ptx_device void @t5_f64(double %x) {
395entry:
Justin Holewinski6cdd72a2011-06-23 18:10:13 +0000396;CHECK: mov.u32 r[[R0:[0-9]+]], array_double;
397;CHECK-NEXT: st.global.f64 [r[[R0]]+8], rd{{[0-9]+}};
Che-Liang Chiou65b14762011-03-02 03:20:28 +0000398;CHECK-NEXT: ret;
399 %i = getelementptr [10 x double]* @array_double, i32 0, i32 1
400 store double %x, double* %i
401 ret void
402}