1 ; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s --check-prefix=PTX32
2 ; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s --check-prefix=PTX64
7 define void @st_global_i8(i8 addrspace(1)* %ptr, i8 %a) {
8 ; PTX32: st.global.u8 [%r{{[0-9]+}}], %rs{{[0-9]+}}
10 ; PTX64: st.global.u8 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
12 store i8 %a, i8 addrspace(1)* %ptr
16 define void @st_shared_i8(i8 addrspace(3)* %ptr, i8 %a) {
17 ; PTX32: st.shared.u8 [%r{{[0-9]+}}], %rs{{[0-9]+}}
19 ; PTX64: st.shared.u8 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
21 store i8 %a, i8 addrspace(3)* %ptr
25 define void @st_local_i8(i8 addrspace(5)* %ptr, i8 %a) {
26 ; PTX32: st.local.u8 [%r{{[0-9]+}}], %rs{{[0-9]+}}
28 ; PTX64: st.local.u8 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
30 store i8 %a, i8 addrspace(5)* %ptr
36 define void @st_global_i16(i16 addrspace(1)* %ptr, i16 %a) {
37 ; PTX32: st.global.u16 [%r{{[0-9]+}}], %rs{{[0-9]+}}
39 ; PTX64: st.global.u16 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
41 store i16 %a, i16 addrspace(1)* %ptr
45 define void @st_shared_i16(i16 addrspace(3)* %ptr, i16 %a) {
46 ; PTX32: st.shared.u16 [%r{{[0-9]+}}], %rs{{[0-9]+}}
48 ; PTX64: st.shared.u16 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
50 store i16 %a, i16 addrspace(3)* %ptr
54 define void @st_local_i16(i16 addrspace(5)* %ptr, i16 %a) {
55 ; PTX32: st.local.u16 [%r{{[0-9]+}}], %rs{{[0-9]+}}
57 ; PTX64: st.local.u16 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
59 store i16 %a, i16 addrspace(5)* %ptr
65 define void @st_global_i32(i32 addrspace(1)* %ptr, i32 %a) {
66 ; PTX32: st.global.u32 [%r{{[0-9]+}}], %r{{[0-9]+}}
68 ; PTX64: st.global.u32 [%rd{{[0-9]+}}], %r{{[0-9]+}}
70 store i32 %a, i32 addrspace(1)* %ptr
74 define void @st_shared_i32(i32 addrspace(3)* %ptr, i32 %a) {
75 ; PTX32: st.shared.u32 [%r{{[0-9]+}}], %r{{[0-9]+}}
77 ; PTX64: st.shared.u32 [%rd{{[0-9]+}}], %r{{[0-9]+}}
79 store i32 %a, i32 addrspace(3)* %ptr
83 define void @st_local_i32(i32 addrspace(5)* %ptr, i32 %a) {
84 ; PTX32: st.local.u32 [%r{{[0-9]+}}], %r{{[0-9]+}}
86 ; PTX64: st.local.u32 [%rd{{[0-9]+}}], %r{{[0-9]+}}
88 store i32 %a, i32 addrspace(5)* %ptr
94 define void @st_global_i64(i64 addrspace(1)* %ptr, i64 %a) {
95 ; PTX32: st.global.u64 [%r{{[0-9]+}}], %rd{{[0-9]+}}
97 ; PTX64: st.global.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
99 store i64 %a, i64 addrspace(1)* %ptr
103 define void @st_shared_i64(i64 addrspace(3)* %ptr, i64 %a) {
104 ; PTX32: st.shared.u64 [%r{{[0-9]+}}], %rd{{[0-9]+}}
106 ; PTX64: st.shared.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
108 store i64 %a, i64 addrspace(3)* %ptr
112 define void @st_local_i64(i64 addrspace(5)* %ptr, i64 %a) {
113 ; PTX32: st.local.u64 [%r{{[0-9]+}}], %rd{{[0-9]+}}
115 ; PTX64: st.local.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
117 store i64 %a, i64 addrspace(5)* %ptr
123 define void @st_global_f32(float addrspace(1)* %ptr, float %a) {
124 ; PTX32: st.global.f32 [%r{{[0-9]+}}], %f{{[0-9]+}}
126 ; PTX64: st.global.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
128 store float %a, float addrspace(1)* %ptr
132 define void @st_shared_f32(float addrspace(3)* %ptr, float %a) {
133 ; PTX32: st.shared.f32 [%r{{[0-9]+}}], %f{{[0-9]+}}
135 ; PTX64: st.shared.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
137 store float %a, float addrspace(3)* %ptr
141 define void @st_local_f32(float addrspace(5)* %ptr, float %a) {
142 ; PTX32: st.local.f32 [%r{{[0-9]+}}], %f{{[0-9]+}}
144 ; PTX64: st.local.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
146 store float %a, float addrspace(5)* %ptr
152 define void @st_global_f64(double addrspace(1)* %ptr, double %a) {
153 ; PTX32: st.global.f64 [%r{{[0-9]+}}], %fd{{[0-9]+}}
155 ; PTX64: st.global.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
157 store double %a, double addrspace(1)* %ptr
161 define void @st_shared_f64(double addrspace(3)* %ptr, double %a) {
162 ; PTX32: st.shared.f64 [%r{{[0-9]+}}], %fd{{[0-9]+}}
164 ; PTX64: st.shared.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
166 store double %a, double addrspace(3)* %ptr
170 define void @st_local_f64(double addrspace(5)* %ptr, double %a) {
171 ; PTX32: st.local.f64 [%r{{[0-9]+}}], %fd{{[0-9]+}}
173 ; PTX64: st.local.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
175 store double %a, double addrspace(5)* %ptr