|
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