|  | 
| 1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2 | 
| 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 | 
|  | 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 | 
| 5 | 4 | 
 | 
| 6 | 5 | target triple = "amdgcn--" | 
| 7 | 6 | 
 | 
| @@ -256,50 +255,50 @@ define i32 @ptrtoint_offset(ptr addrspace(7) %ptr) { | 
| 256 | 255 |  ret i32 %ret | 
| 257 | 256 | } | 
| 258 | 257 | 
 | 
| 259 |  | -;; FIXME: this currently generates invalid IR | 
| 260 | 258 | define i32 @ptrtoaddr(ptr addrspace(7) %ptr) { | 
| 261 | 259 | ; CHECK-LABEL: define i32 @ptrtoaddr | 
| 262 | 260 | ; CHECK-SAME: ({ ptr addrspace(8), i32 } [[PTR:%.*]]) #[[ATTR0]] { | 
| 263 |  | -; CHECK-NEXT: [[RET:%.*]] = ptrtoaddr { ptr addrspace(8), i32 } [[PTR]] to i32 | 
|  | 261 | +; CHECK-NEXT: [[PTR_RSRC:%.*]] = extractvalue { ptr addrspace(8), i32 } [[PTR]], 0 | 
|  | 262 | +; CHECK-NEXT: [[RET:%.*]] = extractvalue { ptr addrspace(8), i32 } [[PTR]], 1 | 
| 264 | 263 | ; CHECK-NEXT: ret i32 [[RET]] | 
| 265 | 264 | ; | 
| 266 | 265 |  %ret = ptrtoaddr ptr addrspace(7) %ptr to i32 | 
| 267 | 266 |  ret i32 %ret | 
| 268 | 267 | } | 
| 269 | 268 | 
 | 
| 270 |  | -;; FIXME: this currently generates invalid IR | 
| 271 | 269 | define <2 x i32> @ptrtoaddr_vec(<2 x ptr addrspace(7)> %ptr) { | 
| 272 | 270 | ; CHECK-LABEL: define <2 x i32> @ptrtoaddr_vec | 
| 273 | 271 | ; 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> | 
|  | 272 | +; CHECK-NEXT: [[PTR_RSRC:%.*]] = extractvalue { <2 x ptr addrspace(8)>, <2 x i32> } [[PTR]], 0 | 
|  | 273 | +; CHECK-NEXT: [[RET:%.*]] = extractvalue { <2 x ptr addrspace(8)>, <2 x i32> } [[PTR]], 1 | 
| 275 | 274 | ; CHECK-NEXT: ret <2 x i32> [[RET]] | 
| 276 | 275 | ; | 
| 277 | 276 |  %ret = ptrtoaddr <2 x ptr addrspace(7)> %ptr to <2 x i32> | 
| 278 | 277 |  ret <2 x i32> %ret | 
| 279 | 278 | } | 
| 280 | 279 | 
 | 
| 281 | 280 | ;; Check that we extend the offset to i160. | 
| 282 |  | -;; FIXME: this currently generates invalid IR | 
| 283 | 281 | define i160 @ptrtoaddr_ext(ptr addrspace(7) %ptr) { | 
| 284 | 282 | ; CHECK-LABEL: define i160 @ptrtoaddr_ext | 
| 285 | 283 | ; 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]] | 
|  | 284 | +; CHECK-NEXT: [[PTR_RSRC:%.*]] = extractvalue { ptr addrspace(8), i32 } [[PTR]], 0 | 
|  | 285 | +; CHECK-NEXT: [[PTR_OFF:%.*]] = extractvalue { ptr addrspace(8), i32 } [[PTR]], 1 | 
|  | 286 | +; CHECK-NEXT: [[RET:%.*]] = zext i32 [[PTR_OFF]] to i160 | 
|  | 287 | +; CHECK-NEXT: ret i160 [[RET]] | 
| 289 | 288 | ; | 
| 290 | 289 |  %addr = ptrtoaddr ptr addrspace(7) %ptr to i32 | 
| 291 | 290 |  %ext = zext i32 %addr to i160 | 
| 292 | 291 |  ret i160 %ext | 
| 293 | 292 | } | 
| 294 | 293 | 
 | 
| 295 |  | -;; FIXME: this currently generates invalid IR | 
| 296 | 294 | ;; Check that we truncate the offset to i16. | 
| 297 | 295 | define i16 @ptrtoaddr_trunc(ptr addrspace(7) %ptr) { | 
| 298 | 296 | ; CHECK-LABEL: define i16 @ptrtoaddr_trunc | 
| 299 | 297 | ; 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]] | 
|  | 298 | +; CHECK-NEXT: [[PTR_RSRC:%.*]] = extractvalue { ptr addrspace(8), i32 } [[PTR]], 0 | 
|  | 299 | +; CHECK-NEXT: [[PTR_OFF:%.*]] = extractvalue { ptr addrspace(8), i32 } [[PTR]], 1 | 
|  | 300 | +; CHECK-NEXT: [[RET:%.*]] = trunc i32 [[PTR_OFF]] to i16 | 
|  | 301 | +; CHECK-NEXT: ret i16 [[RET]] | 
| 303 | 302 | ; | 
| 304 | 303 |  %addr = ptrtoaddr ptr addrspace(7) %ptr to i32 | 
| 305 | 304 |  %trunc = trunc i32 %addr to i16 | 
|  | 
0 commit comments