Files
clang-p2996/llvm/test/CodeGen/AMDGPU/nullptr.ll
Jessica Del 32f9983c06 [AMDGPU] - Add address space for strided buffers (#74471)
This is an experimental address space for strided buffers. These buffers
can have structs as elements and
a stride > 1.
These pointers allow the indexed access in units of stride, i.e., they
point at `buffer[index * stride]`.
Thus, we can use the `idxen` modifier for buffer loads.

We assign address space 9 to 192-bit buffer pointers which contain a
128-bit descriptor, a 32-bit offset and a 32-bit index. Essentially,
they are fat buffer pointers with an additional 32-bit index.
2023-12-15 15:49:25 +01:00

121 lines
4.1 KiB
LLVM

;RUN: llc < %s -mtriple=amdgcn-- -verify-machineinstrs | FileCheck -check-prefixes=CHECK,GCN %s
;RUN: llc < %s -march=r600 -mtriple=r600-- -verify-machineinstrs | FileCheck -check-prefixes=CHECK,R600 %s
%struct.S = type { ptr addrspace(5), ptr addrspace(1), ptr addrspace(4), ptr addrspace(3), ptr, ptr addrspace(2)}
; CHECK-LABEL: nullptr_priv:
; CHECK-NEXT: .long -1
@nullptr_priv = global ptr addrspace(5) addrspacecast (ptr null to ptr addrspace(5))
; CHECK-LABEL: nullptr_glob:
; GCN-NEXT: .quad 0
; R600-NEXT: .long 0
@nullptr_glob = global ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1))
; CHECK-LABEL: nullptr_const:
; GCN-NEXT: .quad 0
; R600-NEXT: .long 0
@nullptr_const = global ptr addrspace(4) addrspacecast (ptr null to ptr addrspace(4))
; CHECK-LABEL: nullptr_local:
; CHECK-NEXT: .long -1
@nullptr_local = global ptr addrspace(3) addrspacecast (ptr null to ptr addrspace(3))
; CHECK-LABEL: nullptr_region:
; CHECK-NEXT: .long -1
@nullptr_region = global ptr addrspace(2) addrspacecast (ptr null to ptr addrspace(2))
; CHECK-LABEL: nullptr6:
; R600-NEXT: .long 0
@nullptr6 = global ptr addrspace(6) addrspacecast (ptr null to ptr addrspace(6))
; FIXME: AsmPrinter can't handle 128-bit constants
; FIXME-LABEL: nullptr7:
; FIXME-R600-NEXT: .long 0
; FIXME @nullptr7 = global ptr addrspace(7) addrspacecast (ptr null to ptr addrspace(7))
; FIXME-LABEL: nullptr8:
; FIXME-R600-NEXT: .long 0
; FIXME @nullptr8 = global ptr addrspace(8) addrspacecast (ptr null to ptr addrspace(8))
; FIXME-LABEL: nullptr9:
; FIXME-R600-NEXT: .long 0
; FIXME @nullptr9 = global ptr addrspace(9) addrspacecast (ptr null to ptr addrspace(9))
; CHECK-LABEL: nullptr10:
; R600-NEXT: .long 0
@nullptr10 = global ptr addrspace(10) addrspacecast (ptr null to ptr addrspace(10))
; CHECK-LABEL: nullptr11:
; R600-NEXT: .long 0
@nullptr11 = global ptr addrspace(11) addrspacecast (ptr null to ptr addrspace(11))
; CHECK-LABEL: nullptr12:
; R600-NEXT: .long 0
@nullptr12 = global ptr addrspace(12) addrspacecast (ptr null to ptr addrspace(12))
; CHECK-LABEL: nullptr13:
; R600-NEXT: .long 0
@nullptr13 = global ptr addrspace(13) addrspacecast (ptr null to ptr addrspace(13))
; CHECK-LABEL: nullptr14:
; R600-NEXT: .long 0
@nullptr14 = global ptr addrspace(14) addrspacecast (ptr null to ptr addrspace(14))
; CHECK-LABEL: nullptr15:
; R600-NEXT: .long 0
@nullptr15 = global ptr addrspace(15) addrspacecast (ptr null to ptr addrspace(15))
; CHECK-LABEL: nullptr16:
; R600-NEXT: .long 0
@nullptr16 = global ptr addrspace(16) addrspacecast (ptr null to ptr addrspace(16))
; CHECK-LABEL: nullptr17:
; R600-NEXT: .long 0
@nullptr17 = global ptr addrspace(17) addrspacecast (ptr null to ptr addrspace(17))
; CHECK-LABEL: nullptr18:
; R600-NEXT: .long 0
@nullptr18 = global ptr addrspace(18) addrspacecast (ptr null to ptr addrspace(18))
; CHECK-LABEL: nullptr19:
; R600-NEXT: .long 0
@nullptr19 = global ptr addrspace(19) addrspacecast (ptr null to ptr addrspace(19))
; CHECK-LABEL: nullptr20:
; R600-NEXT: .long 0
@nullptr20 = global ptr addrspace(20) addrspacecast (ptr null to ptr addrspace(20))
; CHECK-LABEL: nullptr21:
; R600-NEXT: .long 0
@nullptr21 = global ptr addrspace(21) addrspacecast (ptr null to ptr addrspace(21))
; CHECK-LABEL: nullptr22:
; R600-NEXT: .long 0
@nullptr22 = global ptr addrspace(22) addrspacecast (ptr null to ptr addrspace(22))
; CHECK-LABEL: nullptr23:
; R600-NEXT: .long 0
@nullptr23 = global ptr addrspace(23) addrspacecast (ptr null to ptr addrspace(23))
; CHECK-LABEL: structWithPointers:
; CHECK-NEXT: .long -1
; GCN-NEXT: .zero 4
; GCN-NEXT: .quad 0
; R600-NEXT: .long 0
; GCN-NEXT: .quad 0
; R600-NEXT: .long 0
; CHECK-NEXT: .long -1
; GCN-NEXT: .zero 4
; GCN-NEXT: .quad 0
; R600-NEXT: .long 0
; CHECK-NEXT: .long -1
; GCN-NEXT: .zero 4
@structWithPointers = addrspace(1) global %struct.S {
ptr addrspace(5) addrspacecast (ptr null to ptr addrspace(5)),
ptr addrspace(1) addrspacecast (ptr null to ptr addrspace(1)),
ptr addrspace(4) addrspacecast (ptr null to ptr addrspace(4)),
ptr addrspace(3) addrspacecast (ptr null to ptr addrspace(3)),
ptr null,
ptr addrspace(2) addrspacecast (ptr null to ptr addrspace(2))}, align 4