1 ; RUN: llc -O0 < %s -march=nvptx -mcpu=sm_20 | FileCheck %s -check-prefixes=ALL,CLS32,G32
2 ; RUN: llc -O0 < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s -check-prefixes=ALL,NOPTRCONV,CLS64,G64
3 ; RUN: llc -O0 < %s -march=nvptx64 -mcpu=sm_20 --nvptx-short-ptr| FileCheck %s -check-prefixes=ALL,PTRCONV,CLS64,G64
6 define i32 @conv1(i32 addrspace(1)* %ptr) {
11 %genptr = addrspacecast i32 addrspace(1)* %ptr to i32*
12 %val = load i32, i32* %genptr
17 define i32 @conv2(i32 addrspace(3)* %ptr) {
18 ; CLS32: cvta.shared.u32
19 ; PTRCONV: cvt.u64.u32
20 ; NOPTRCONV-NOT: cvt.u64.u32
21 ; CLS64: cvta.shared.u64
23 %genptr = addrspacecast i32 addrspace(3)* %ptr to i32*
24 %val = load i32, i32* %genptr
29 define i32 @conv3(i32 addrspace(4)* %ptr) {
30 ; CLS32: cvta.const.u32
31 ; PTRCONV: cvt.u64.u32
32 ; NOPTRCONV-NOT: cvt.u64.u32
33 ; CLS64: cvta.const.u64
35 %genptr = addrspacecast i32 addrspace(4)* %ptr to i32*
36 %val = load i32, i32* %genptr
41 define i32 @conv4(i32 addrspace(5)* %ptr) {
42 ; CLS32: cvta.local.u32
43 ; PTRCONV: cvt.u64.u32
44 ; NOPTRCONV-NOT: cvt.u64.u32
45 ; CLS64: cvta.local.u64
47 %genptr = addrspacecast i32 addrspace(5)* %ptr to i32*
48 %val = load i32, i32* %genptr
53 define i32 @conv5(i32* %ptr) {
54 ; CLS32: cvta.to.global.u32
55 ; ALL-NOT: cvt.u64.u32
56 ; CLS64: cvta.to.global.u64
58 %specptr = addrspacecast i32* %ptr to i32 addrspace(1)*
59 %val = load i32, i32 addrspace(1)* %specptr
64 define i32 @conv6(i32* %ptr) {
65 ; CLS32: cvta.to.shared.u32
66 ; CLS64: cvta.to.shared.u64
67 ; PTRCONV: cvt.u32.u64
68 ; NOPTRCONV-NOT: cvt.u32.u64
70 %specptr = addrspacecast i32* %ptr to i32 addrspace(3)*
71 %val = load i32, i32 addrspace(3)* %specptr
76 define i32 @conv7(i32* %ptr) {
77 ; CLS32: cvta.to.const.u32
78 ; CLS64: cvta.to.const.u64
79 ; PTRCONV: cvt.u32.u64
80 ; NOPTRCONV-NOT: cvt.u32.u64
82 %specptr = addrspacecast i32* %ptr to i32 addrspace(4)*
83 %val = load i32, i32 addrspace(4)* %specptr
88 define i32 @conv8(i32* %ptr) {
89 ; CLS32: cvta.to.local.u32
90 ; CLS64: cvta.to.local.u64
91 ; PTRCONV: cvt.u32.u64
92 ; NOPTRCONV-NOT: cvt.u32.u64
94 %specptr = addrspacecast i32* %ptr to i32 addrspace(5)*
95 %val = load i32, i32 addrspace(5)* %specptr