Skip to content

Commit 8f5f42d

Browse files
arichardsongithub-actions[bot]
authored andcommitted
Automerge: [AMDGPU] Baseline test for ptrtoaddr in lower-buffer-fat-pointers
We should only be extracting the 32-bit offset in the ptrtoaddr case. Reviewed By: arsenm Pull Request: llvm/llvm-project#143812
2 parents 7d1e85f + 4cdfc0d commit 8f5f42d

File tree

1 file changed

+53
-2
lines changed

1 file changed

+53
-2
lines changed

llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-pointer-ops.ll

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
; 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
45

56
target triple = "amdgcn--"
67

@@ -255,6 +256,56 @@ define i32 @ptrtoint_offset(ptr addrspace(7) %ptr) {
255256
ret i32 %ret
256257
}
257258

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+
258309
define ptr addrspace(7) @inttoptr(i160 %v) {
259310
; CHECK-LABEL: define { ptr addrspace(8), i32 } @inttoptr
260311
; CHECK-SAME: (i160 [[V:%.*]]) #[[ATTR0]] {

0 commit comments

Comments
 (0)