Converts AMDGPUResourceUsageAnalysis pass from Module to MachineFunction pass. Moves function resource info propagation to to MC layer (through helpers in AMDGPUMCResourceInfo) by generating MCExprs for every function resource which the emitters have been prepped for. Fixes https://github.com/llvm/llvm-project/issues/64863
45 lines
2.0 KiB
LLVM
45 lines
2.0 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: opt -S -mtriple=amdgcn-- -amdgpu-lower-module-lds < %s --amdgpu-lower-module-lds-strategy=module | FileCheck -check-prefix=OPT %s
|
|
; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-module-lds < %s --amdgpu-lower-module-lds-strategy=module | FileCheck -check-prefix=OPT %s
|
|
; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s --amdgpu-lower-module-lds-strategy=module | FileCheck -check-prefix=GCN %s
|
|
|
|
; Check that module LDS is allocated at address 0 and kernel starts its
|
|
; allocation past module LDS when a call is present.
|
|
|
|
@lds.size.1.align.1 = internal unnamed_addr addrspace(3) global [1 x i8] undef, align 1
|
|
@lds.size.16.align.16 = internal unnamed_addr addrspace(3) global [16 x i8] undef, align 16
|
|
|
|
; GCN-LABEL: {{^}}f0:
|
|
; GCN-DAG: v_mov_b32_e32 [[NULL:v[0-9]+]], 0
|
|
; GCN-DAG: v_mov_b32_e32 [[TREE:v[0-9]+]], 3
|
|
; GCN: ds_write_b8 [[NULL]], [[TREE]]
|
|
define void @f0() {
|
|
; OPT-LABEL: @f0() {
|
|
; OPT-NEXT: store i8 3, ptr addrspace(3) @llvm.amdgcn.module.lds, align 1
|
|
; OPT-NEXT: ret void
|
|
;
|
|
store i8 3, ptr addrspace(3) @lds.size.1.align.1, align 1
|
|
ret void
|
|
}
|
|
|
|
; GCN-LABEL: {{^}}k0:
|
|
; GCN-DAG: v_mov_b32_e32 [[NULL:v[0-9]+]], 0
|
|
; GCN-DAG: v_mov_b32_e32 [[ONE:v[0-9]+]], 1
|
|
; GCN: ds_write_b8 [[NULL]], [[ONE]]
|
|
; GCN: v_mov_b32_e32 [[TWO:v[0-9]+]], 2
|
|
; GCN: ds_write_b8 [[NULL]], [[TWO]] offset:16
|
|
define amdgpu_kernel void @k0() {
|
|
; OPT-LABEL: @k0(
|
|
; OPT-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.kernel.k0.lds) ]
|
|
; OPT-NEXT: call void @llvm.donothing() [ "ExplicitUse"(ptr addrspace(3) @llvm.amdgcn.module.lds) ]
|
|
; OPT-NEXT: store i8 1, ptr addrspace(3) @llvm.amdgcn.module.lds, align 1
|
|
; OPT-NEXT: store i8 2, ptr addrspace(3) @llvm.amdgcn.kernel.k0.lds, align 16
|
|
; OPT-NEXT: call void @f0()
|
|
; OPT-NEXT: ret void
|
|
;
|
|
store i8 1, ptr addrspace(3) @lds.size.1.align.1, align 1
|
|
store i8 2, ptr addrspace(3) @lds.size.16.align.16, align 16
|
|
call void @f0()
|
|
ret void
|
|
}
|