llvm-project/llvm/test/CodeGen/AMDGPU/lds-mixed-absolute-dynlds.ll
Vigneshwar Jayakumar d2c817df84
[AMDGPU] Fix DynLDS causing crash when LowerLDS is run at fullLTO pipeline (#96038)
Direct mapped dynamic LDS is not lowered in the LowerLDSModule pass.
Hence it is not marked with an absolute symbol. When the LowerLDS pass is
rerun in LTO, compilation fails with an assert "cannot mix abs and non-abs LDVs".
This patch adds an additional check for direct mapped dynLDS to skip the assert.

Fixes SWDEV-454281
2024-06-28 21:05:48 -05:00

26 lines
1.0 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S -mtriple=amdgcn-- -amdgpu-lower-module-lds < %s 2>&1 | FileCheck %s
; RUN: opt -S -mtriple=amdgcn-- -passes=amdgpu-lower-module-lds < %s 2>&1 | FileCheck %s
; Dynamic LDS that are direct mapped are not lowered in LowerModuleLDS pass.
; In such cases, LowerModuleLDS is free to leave it in and ignore it, and we want to make sure
; LowerModuleLDS doesn't crash if it re-runs on such modules.
@loweredlds = addrspace(3) global i32 poison, !absolute_symbol !0
@dynlds = external addrspace(3) global [0 x i32]
define amdgpu_kernel void @kern(i32 %val0) {
; CHECK-LABEL: define amdgpu_kernel void @kern(
; CHECK-SAME: i32 [[VAL0:%.*]]) {
; CHECK-NEXT: store i32 0, ptr addrspace(3) @loweredlds, align 4
; CHECK-NEXT: store i32 1, ptr addrspace(3) @dynlds, align 4
; CHECK-NEXT: ret void
;
store i32 0, ptr addrspace(3) @loweredlds
store i32 1, ptr addrspace(3) @dynlds
ret void
}
!0 = !{i32 0, i32 1}