|
1 |
| -; RUN: llc -O0 < %s -mtriple=nvptx -mcpu=sm_20 | FileCheck %s -check-prefixes=ALL,CLS32,G32 |
2 |
| -; RUN: llc -O0 < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s -check-prefixes=ALL,NOPTRCONV,CLS64,G64 |
3 |
| -; RUN: llc -O0 < %s -mtriple=nvptx64 -mcpu=sm_20 --nvptx-short-ptr| FileCheck %s -check-prefixes=ALL,PTRCONV,CLS64,G64 |
| 1 | +; RUN: llc -O0 < %s -mtriple=nvptx -mcpu=sm_20 | FileCheck %s -check-prefixes=ALL,CLS32 |
| 2 | +; RUN: llc -O0 < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s -check-prefixes=ALL,NOPTRCONV,CLS64 |
| 3 | +; RUN: llc -O0 < %s -mtriple=nvptx64 -mcpu=sm_20 --nvptx-short-ptr | FileCheck %s -check-prefixes=ALL,PTRCONV,CLS64 |
4 | 4 | ; RUN: %if ptxas && !ptxas-12.0 %{ llc -O0 < %s -mtriple=nvptx -mcpu=sm_20 | %ptxas-verify %}
|
5 | 5 | ; RUN: %if ptxas %{ llc -O0 < %s -mtriple=nvptx64 -mcpu=sm_20 | %ptxas-verify %}
|
6 | 6 | ; RUN: %if ptxas %{ llc -O0 < %s -mtriple=nvptx64 -mcpu=sm_20 --nvptx-short-ptr | %ptxas-verify %}
|
7 | 7 |
|
8 | 8 | ; ALL-LABEL: conv1
|
9 | 9 | define i32 @conv1(ptr addrspace(1) %ptr) {
|
10 |
| -; G32: cvta.global.u32 |
| 10 | +; CLS32: cvta.global.u32 |
11 | 11 | ; ALL-NOT: cvt.u64.u32
|
12 |
| -; G64: cvta.global.u64 |
| 12 | +; CLS64: cvta.global.u64 |
13 | 13 | ; ALL: ld.u32
|
14 | 14 | %genptr = addrspacecast ptr addrspace(1) %ptr to ptr
|
15 | 15 | %val = load i32, ptr %genptr
|
@@ -99,6 +99,17 @@ define i32 @conv8(ptr %ptr) {
|
99 | 99 | ret i32 %val
|
100 | 100 | }
|
101 | 101 |
|
| 102 | +; ALL-LABEL: conv9 |
| 103 | +define i32 @conv9(ptr addrspace(1) %ptr) { |
| 104 | +; CLS32: // implicit-def: %[[ADDR:r[0-9]+]] |
| 105 | +; PTRCONV: // implicit-def: %[[ADDR:r[0-9]+]] |
| 106 | +; NOPTRCONV: // implicit-def: %[[ADDR:rd[0-9]+]] |
| 107 | +; ALL: ld.shared.u32 %r{{[0-9]+}}, [%[[ADDR]]] |
| 108 | + %specptr = addrspacecast ptr addrspace(1) %ptr to ptr addrspace(3) |
| 109 | + %val = load i32, ptr addrspace(3) %specptr |
| 110 | + ret i32 %val |
| 111 | +} |
| 112 | + |
102 | 113 | ; Check that we support addrspacecast when splitting the vector
|
103 | 114 | ; result (<2 x ptr> => 2 x <1 x ptr>).
|
104 | 115 | ; This also checks that scalarization works for addrspacecast
|
|
0 commit comments