|
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