|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2
|
2 |
| -; RUN: opt -S -mcpu=gfx900 -amdgpu-lower-buffer-fat-pointers < %s | FileCheck %s |
3 |
| -; RUN: opt -S -mcpu=gfx900 -passes=amdgpu-lower-buffer-fat-pointers < %s | FileCheck %s |
| 2 | +; FIXME: Currently generates invalid IR for ptrtoaddr |
| 3 | +; RUN: opt -S -mcpu=gfx900 -amdgpu-lower-buffer-fat-pointers -disable-verify < %s | FileCheck %s |
| 4 | +; RUN: opt -S -mcpu=gfx900 -passes=amdgpu-lower-buffer-fat-pointers -disable-verify < %s | FileCheck %s |
4 | 5 |
|
5 | 6 | target triple = "amdgcn--"
|
6 | 7 |
|
@@ -255,6 +256,56 @@ define i32 @ptrtoint_offset(ptr addrspace(7) %ptr) {
|
255 | 256 | ret i32 %ret
|
256 | 257 | }
|
257 | 258 |
|
| 259 | +;; FIXME: this currently generates invalid IR |
| 260 | +define i32 @ptrtoaddr(ptr addrspace(7) %ptr) { |
| 261 | +; CHECK-LABEL: define i32 @ptrtoaddr |
| 262 | +; CHECK-SAME: ({ ptr addrspace(8), i32 } [[PTR:%.*]]) #[[ATTR0]] { |
| 263 | +; CHECK-NEXT: [[RET:%.*]] = ptrtoaddr { ptr addrspace(8), i32 } [[PTR]] to i32 |
| 264 | +; CHECK-NEXT: ret i32 [[RET]] |
| 265 | +; |
| 266 | + %ret = ptrtoaddr ptr addrspace(7) %ptr to i32 |
| 267 | + ret i32 %ret |
| 268 | +} |
| 269 | + |
| 270 | +;; FIXME: this currently generates invalid IR |
| 271 | +define <2 x i32> @ptrtoaddr_vec(<2 x ptr addrspace(7)> %ptr) { |
| 272 | +; CHECK-LABEL: define <2 x i32> @ptrtoaddr_vec |
| 273 | +; CHECK-SAME: ({ <2 x ptr addrspace(8)>, <2 x i32> } [[PTR:%.*]]) #[[ATTR0]] { |
| 274 | +; CHECK-NEXT: [[RET:%.*]] = ptrtoaddr { <2 x ptr addrspace(8)>, <2 x i32> } [[PTR]] to <2 x i32> |
| 275 | +; CHECK-NEXT: ret <2 x i32> [[RET]] |
| 276 | +; |
| 277 | + %ret = ptrtoaddr <2 x ptr addrspace(7)> %ptr to <2 x i32> |
| 278 | + ret <2 x i32> %ret |
| 279 | +} |
| 280 | + |
| 281 | +;; Check that we extend the offset to i160. |
| 282 | +;; FIXME: this currently generates invalid IR |
| 283 | +define i160 @ptrtoaddr_ext(ptr addrspace(7) %ptr) { |
| 284 | +; CHECK-LABEL: define i160 @ptrtoaddr_ext |
| 285 | +; CHECK-SAME: ({ ptr addrspace(8), i32 } [[PTR:%.*]]) #[[ATTR0]] { |
| 286 | +; CHECK-NEXT: [[ADDR:%.*]] = ptrtoaddr { ptr addrspace(8), i32 } [[PTR]] to i32 |
| 287 | +; CHECK-NEXT: [[EXT:%.*]] = zext i32 [[ADDR]] to i160 |
| 288 | +; CHECK-NEXT: ret i160 [[EXT]] |
| 289 | +; |
| 290 | + %addr = ptrtoaddr ptr addrspace(7) %ptr to i32 |
| 291 | + %ext = zext i32 %addr to i160 |
| 292 | + ret i160 %ext |
| 293 | +} |
| 294 | + |
| 295 | +;; FIXME: this currently generates invalid IR |
| 296 | +;; Check that we truncate the offset to i16. |
| 297 | +define i16 @ptrtoaddr_trunc(ptr addrspace(7) %ptr) { |
| 298 | +; CHECK-LABEL: define i16 @ptrtoaddr_trunc |
| 299 | +; CHECK-SAME: ({ ptr addrspace(8), i32 } [[PTR:%.*]]) #[[ATTR0]] { |
| 300 | +; CHECK-NEXT: [[ADDR:%.*]] = ptrtoaddr { ptr addrspace(8), i32 } [[PTR]] to i32 |
| 301 | +; CHECK-NEXT: [[TRUNC:%.*]] = trunc i32 [[ADDR]] to i16 |
| 302 | +; CHECK-NEXT: ret i16 [[TRUNC]] |
| 303 | +; |
| 304 | + %addr = ptrtoaddr ptr addrspace(7) %ptr to i32 |
| 305 | + %trunc = trunc i32 %addr to i16 |
| 306 | + ret i16 %trunc |
| 307 | +} |
| 308 | + |
258 | 309 | define ptr addrspace(7) @inttoptr(i160 %v) {
|
259 | 310 | ; CHECK-LABEL: define { ptr addrspace(8), i32 } @inttoptr
|
260 | 311 | ; CHECK-SAME: (i160 [[V:%.*]]) #[[ATTR0]] {
|
|
0 commit comments