xref: /llvm-project/llvm/test/CodeGen/NVPTX/st-generic.ll (revision b279f6b098d3849f7f1c1f539b108307d5f8ae2d)
1; RUN: llc < %s -mtriple=nvptx -mcpu=sm_20 | FileCheck %s --check-prefix=PTX32
2; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s --check-prefix=PTX64
3; RUN: %if ptxas && !ptxas-12.0 %{ llc < %s -mtriple=nvptx -mcpu=sm_20 | %ptxas-verify %}
4; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
5
6;; i8
7
8define void @st_global_i8(ptr addrspace(0) %ptr, i8 %a) {
9; PTX32: st.u8 [%r{{[0-9]+}}], %rs{{[0-9]+}}
10; PTX32: ret
11; PTX64: st.u8 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
12; PTX64: ret
13  store i8 %a, ptr addrspace(0) %ptr
14  ret void
15}
16
17;; i16
18
19define void @st_global_i16(ptr addrspace(0) %ptr, i16 %a) {
20; PTX32: st.u16 [%r{{[0-9]+}}], %rs{{[0-9]+}}
21; PTX32: ret
22; PTX64: st.u16 [%rd{{[0-9]+}}], %rs{{[0-9]+}}
23; PTX64: ret
24  store i16 %a, ptr addrspace(0) %ptr
25  ret void
26}
27
28;; i32
29
30define void @st_global_i32(ptr addrspace(0) %ptr, i32 %a) {
31; PTX32: st.u32 [%r{{[0-9]+}}], %r{{[0-9]+}}
32; PTX32: ret
33; PTX64: st.u32 [%rd{{[0-9]+}}], %r{{[0-9]+}}
34; PTX64: ret
35  store i32 %a, ptr addrspace(0) %ptr
36  ret void
37}
38
39;; i64
40
41define void @st_global_i64(ptr addrspace(0) %ptr, i64 %a) {
42; PTX32: st.u64 [%r{{[0-9]+}}], %rd{{[0-9]+}}
43; PTX32: ret
44; PTX64: st.u64 [%rd{{[0-9]+}}], %rd{{[0-9]+}}
45; PTX64: ret
46  store i64 %a, ptr addrspace(0) %ptr
47  ret void
48}
49
50;; f32
51
52define void @st_global_f32(ptr addrspace(0) %ptr, float %a) {
53; PTX32: st.f32 [%r{{[0-9]+}}], %f{{[0-9]+}}
54; PTX32: ret
55; PTX64: st.f32 [%rd{{[0-9]+}}], %f{{[0-9]+}}
56; PTX64: ret
57  store float %a, ptr addrspace(0) %ptr
58  ret void
59}
60
61;; f64
62
63define void @st_global_f64(ptr addrspace(0) %ptr, double %a) {
64; PTX32: st.f64 [%r{{[0-9]+}}], %fd{{[0-9]+}}
65; PTX32: ret
66; PTX64: st.f64 [%rd{{[0-9]+}}], %fd{{[0-9]+}}
67; PTX64: ret
68  store double %a, ptr addrspace(0) %ptr
69  ret void
70}
71