blob: 34a83f3433246423b79cdb582205d23a6dc78d8f [file] [log] [blame]
Justin Holewinskiae556d32012-05-04 20:18:50 +00001; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s --check-prefix=PTX32
Justin Holewinskiae556d32012-05-04 20:18:50 +00002; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s --check-prefix=PTX64
3
4
5;; i8
6
7define void @st_global_i8(i8 addrspace(1)* %ptr, i8 %a) {
Justin Holewinskif8f70912013-06-28 17:57:59 +00008; PTX32: st.global.u8 [%r{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +00009; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000010; PTX64: st.global.u8 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000011; PTX64: ret
12 store i8 %a, i8 addrspace(1)* %ptr
13 ret void
14}
15
16define void @st_shared_i8(i8 addrspace(3)* %ptr, i8 %a) {
Justin Holewinskif8f70912013-06-28 17:57:59 +000017; PTX32: st.shared.u8 [%r{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000018; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000019; PTX64: st.shared.u8 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000020; PTX64: ret
21 store i8 %a, i8 addrspace(3)* %ptr
22 ret void
23}
24
25define void @st_local_i8(i8 addrspace(5)* %ptr, i8 %a) {
Justin Holewinskif8f70912013-06-28 17:57:59 +000026; PTX32: st.local.u8 [%r{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000027; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000028; PTX64: st.local.u8 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000029; PTX64: ret
30 store i8 %a, i8 addrspace(5)* %ptr
31 ret void
32}
33
34;; i16
35
36define void @st_global_i16(i16 addrspace(1)* %ptr, i16 %a) {
37; PTX32: st.global.u16 [%r{{[0-9]+}}], %rs{{[0-9]+}}
38; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000039; PTX64: st.global.u16 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000040; PTX64: ret
41 store i16 %a, i16 addrspace(1)* %ptr
42 ret void
43}
44
45define void @st_shared_i16(i16 addrspace(3)* %ptr, i16 %a) {
46; PTX32: st.shared.u16 [%r{{[0-9]+}}], %rs{{[0-9]+}}
47; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000048; PTX64: st.shared.u16 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000049; PTX64: ret
50 store i16 %a, i16 addrspace(3)* %ptr
51 ret void
52}
53
54define void @st_local_i16(i16 addrspace(5)* %ptr, i16 %a) {
55; PTX32: st.local.u16 [%r{{[0-9]+}}], %rs{{[0-9]+}}
56; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000057; PTX64: st.local.u16 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000058; PTX64: ret
59 store i16 %a, i16 addrspace(5)* %ptr
60 ret void
61}
62
63;; i32
64
65define void @st_global_i32(i32 addrspace(1)* %ptr, i32 %a) {
66; PTX32: st.global.u32 [%r{{[0-9]+}}], %r{{[0-9]+}}
67; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000068; PTX64: st.global.u32 [%rd{{[0-9]+}}], %r{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000069; PTX64: ret
70 store i32 %a, i32 addrspace(1)* %ptr
71 ret void
72}
73
74define void @st_shared_i32(i32 addrspace(3)* %ptr, i32 %a) {
75; PTX32: st.shared.u32 [%r{{[0-9]+}}], %r{{[0-9]+}}
76; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000077; PTX64: st.shared.u32 [%rd{{[0-9]+}}], %r{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000078; PTX64: ret
79 store i32 %a, i32 addrspace(3)* %ptr
80 ret void
81}
82
83define void @st_local_i32(i32 addrspace(5)* %ptr, i32 %a) {
84; PTX32: st.local.u32 [%r{{[0-9]+}}], %r{{[0-9]+}}
85; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000086; PTX64: st.local.u32 [%rd{{[0-9]+}}], %r{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000087; PTX64: ret
88 store i32 %a, i32 addrspace(5)* %ptr
89 ret void
90}
91
92;; i64
93
94define void @st_global_i64(i64 addrspace(1)* %ptr, i64 %a) {
Justin Holewinski3e037d92014-07-16 16:26:58 +000095; PTX32: st.global.u64 [%r{{[0-9]+}}], %rd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000096; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +000097; PTX64: st.global.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +000098; PTX64: ret
99 store i64 %a, i64 addrspace(1)* %ptr
100 ret void
101}
102
103define void @st_shared_i64(i64 addrspace(3)* %ptr, i64 %a) {
Justin Holewinski3e037d92014-07-16 16:26:58 +0000104; PTX32: st.shared.u64 [%r{{[0-9]+}}], %rd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000105; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000106; PTX64: st.shared.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000107; PTX64: ret
108 store i64 %a, i64 addrspace(3)* %ptr
109 ret void
110}
111
112define void @st_local_i64(i64 addrspace(5)* %ptr, i64 %a) {
Justin Holewinski3e037d92014-07-16 16:26:58 +0000113; PTX32: st.local.u64 [%r{{[0-9]+}}], %rd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000114; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000115; PTX64: st.local.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000116; PTX64: ret
117 store i64 %a, i64 addrspace(5)* %ptr
118 ret void
119}
120
121;; f32
122
123define void @st_global_f32(float addrspace(1)* %ptr, float %a) {
124; PTX32: st.global.f32 [%r{{[0-9]+}}], %f{{[0-9]+}}
125; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000126; PTX64: st.global.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000127; PTX64: ret
128 store float %a, float addrspace(1)* %ptr
129 ret void
130}
131
132define void @st_shared_f32(float addrspace(3)* %ptr, float %a) {
133; PTX32: st.shared.f32 [%r{{[0-9]+}}], %f{{[0-9]+}}
134; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000135; PTX64: st.shared.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000136; PTX64: ret
137 store float %a, float addrspace(3)* %ptr
138 ret void
139}
140
141define void @st_local_f32(float addrspace(5)* %ptr, float %a) {
142; PTX32: st.local.f32 [%r{{[0-9]+}}], %f{{[0-9]+}}
143; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000144; PTX64: st.local.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000145; PTX64: ret
146 store float %a, float addrspace(5)* %ptr
147 ret void
148}
149
150;; f64
151
152define void @st_global_f64(double addrspace(1)* %ptr, double %a) {
Justin Holewinski3e037d92014-07-16 16:26:58 +0000153; PTX32: st.global.f64 [%r{{[0-9]+}}], %fd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000154; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000155; PTX64: st.global.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000156; PTX64: ret
157 store double %a, double addrspace(1)* %ptr
158 ret void
159}
160
161define void @st_shared_f64(double addrspace(3)* %ptr, double %a) {
Justin Holewinski3e037d92014-07-16 16:26:58 +0000162; PTX32: st.shared.f64 [%r{{[0-9]+}}], %fd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000163; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000164; PTX64: st.shared.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000165; PTX64: ret
166 store double %a, double addrspace(3)* %ptr
167 ret void
168}
169
170define void @st_local_f64(double addrspace(5)* %ptr, double %a) {
Justin Holewinski3e037d92014-07-16 16:26:58 +0000171; PTX32: st.local.f64 [%r{{[0-9]+}}], %fd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000172; PTX32: ret
Justin Holewinski3e037d92014-07-16 16:26:58 +0000173; PTX64: st.local.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
Justin Holewinskiae556d32012-05-04 20:18:50 +0000174; PTX64: ret
175 store double %a, double addrspace(5)* %ptr
176 ret void
177}