|  | 
| 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