Files
TheRock/compiler/amd-llvm/llvm/test/DebugInfo/AMDGPU/heterogeneous-dwarf-pointer-parameters-regalloc-fast.mir
derek.holloway 7502bf64a4
CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

270 lines
19 KiB
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5
# RUN: llc -x mir -O0 -mtriple=amdgcn -mcpu=gfx1100 -start-before=regallocfast,0 -stop-after=virtregrewriter,2 -verify-machineinstrs < %s | FileCheck %s
--- |
define void @_QFPadd(ptr %0, ptr %1) #0 !dbg !3 {
#dbg_declare(ptr %0, !7, !DIExpression(DIOpArg(0, ptr), DIOpDeref(ptr)), !8)
#dbg_declare(ptr %1, !9, !DIExpression(DIOpArg(0, ptr), DIOpDeref(ptr)), !8)
%3 = load i32, ptr %0, align 4, !dbg !10
%4 = load i32, ptr %1, align 4, !dbg !10
%5 = icmp sle i32 %3, %4, !dbg !10
%6 = call { i1, i32 } @llvm.amdgcn.if.i32(i1 %5), !dbg !10
%7 = extractvalue { i1, i32 } %6, 0, !dbg !10
%8 = extractvalue { i1, i32 } %6, 1, !dbg !10
br i1 %7, label %15, label %Flow, !dbg !10
Flow: ; preds = %15, %2
%9 = call { i1, i32 } @llvm.amdgcn.else.i32.i32(i32 %8)
%10 = extractvalue { i1, i32 } %9, 0
%11 = extractvalue { i1, i32 } %9, 1
br i1 %10, label %12, label %18
12: ; preds = %Flow
%13 = load i32, ptr %0, align 4, !dbg !11
%14 = add i32 %13, 1, !dbg !11
store i32 %14, ptr %1, align 4, !dbg !11
br label %18, !dbg !10, !amdgpu.uniform !12
15: ; preds = %2
%16 = load i32, ptr %1, align 4, !dbg !13
%17 = add i32 %16, 1, !dbg !13
store i32 %17, ptr %1, align 4, !dbg !13
br label %Flow, !dbg !10, !amdgpu.uniform !12
18: ; preds = %12, %Flow
call void @llvm.amdgcn.end.cf.i32(i32 %11)
ret void, !dbg !14
}
; Function Attrs: nocallback nofree nounwind willreturn
declare { i1, i32 } @llvm.amdgcn.if.i32(i1) #1
; Function Attrs: nocallback nofree nounwind willreturn
declare { i1, i32 } @llvm.amdgcn.else.i32.i32(i32) #1
; Function Attrs: nocallback nofree nounwind willreturn
declare void @llvm.amdgcn.end.cf.i32(i32) #1
attributes #0 = { "target-cpu"="gfx1100" }
attributes #1 = { nocallback nofree nounwind willreturn }
!llvm.module.flags = !{!0}
!llvm.dbg.cu = !{!1}
!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = distinct !DICompileUnit(language: DW_LANG_Fortran95, file: !2, producer: "flang", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
!2 = !DIFile(filename: "target14.f90", directory: "")
!3 = distinct !DISubprogram(name: "add", linkageName: "_QFPadd", scope: !2, file: !2, line: 16, type: !4, scopeLine: 16, spFlags: DISPFlagDefinition, unit: !1)
!4 = !DISubroutineType(cc: DW_CC_normal, types: !5)
!5 = !{null, !6, !6}
!6 = !DIBasicType(name: "integer", size: 32, encoding: DW_ATE_signed)
!7 = !DILocalVariable(name: "a", arg: 1, scope: !3, file: !2, line: 17, type: !6)
!8 = !DILocation(line: 16, column: 7, scope: !3)
!9 = !DILocalVariable(name: "b", arg: 2, scope: !3, file: !2, line: 17, type: !6)
!10 = !DILocation(line: 20, column: 7, scope: !3)
!11 = !DILocation(line: 21, column: 7, scope: !3)
!12 = !{}
!13 = !DILocation(line: 23, column: 7, scope: !3)
!14 = !DILocation(line: 25, column: 7, scope: !3)
...
---
name: _QFPadd
tracksRegLiveness: true
noPhis: true
machineFunctionInfo:
scratchRSrcReg: '$private_rsrc_reg'
frameOffsetReg: '$sgpr33'
stackPtrOffsetReg: '$sgpr32'
sgprForEXECCopy: '$sgpr105'
body: |
; CHECK-LABEL: name: _QFPadd
; CHECK: bb.0 (%ir-block.2):
; CHECK-NEXT: successors: %bb.3(0x40000000), %bb.1(0x40000000)
; CHECK-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: frame-setup CFI_INSTRUCTION escape 0x0f, 0x09, 0x90, 0x40, 0x94, 0x04, 0x35, 0x24, 0x36, 0xe9, 0x02
; CHECK-NEXT: frame-setup CFI_INSTRUCTION llvm_register_pair $pc_reg, $sgpr30, 32, $sgpr31, 32
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr0
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr1
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr2
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr3
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr4
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr5
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr6
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $vgpr7
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $sgpr0
; CHECK-NEXT: frame-setup CFI_INSTRUCTION undefined $sgpr1
; CHECK-NEXT: S_WAITCNT .Vmcnt_0_Expcnt_0_Lgkmcnt_0
; CHECK-NEXT: $sgpr0 = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec
; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR killed $vgpr7, $sgpr32, 28, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" store (s32) into %stack.7, addrspace 5)
; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $vgpr7, 896
; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr0
; CHECK-NEXT: $vgpr4 = V_MOV_B32_e32 killed $vgpr3, implicit $exec, implicit $exec
; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr2, $sgpr32, 24, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" store (s32) into %stack.6, addrspace 5)
; CHECK-NEXT: $vgpr2 = V_MOV_B32_e32 $vgpr1, implicit $exec, implicit $exec
; CHECK-NEXT: $vgpr1 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 24, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" load (s32) from %stack.6, addrspace 5)
; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR $vgpr2, $sgpr32, 20, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" store (s32) into %stack.5, addrspace 5)
; CHECK-NEXT: $vgpr3 = V_MOV_B32_e32 $vgpr0, implicit $exec, implicit $exec
; CHECK-NEXT: $vgpr0 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 20, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" load (s32) from %stack.5, addrspace 5)
; CHECK-NEXT: dead renamable $sgpr0 = IMPLICIT_DEF
; CHECK-NEXT: dead renamable $sgpr0 = IMPLICIT_DEF
; CHECK-NEXT: undef renamable $vgpr1 = KILL killed renamable $vgpr1, implicit-def $vgpr1_vgpr2, implicit $exec
; CHECK-NEXT: $vgpr2 = V_MOV_B32_e32 killed $vgpr4, implicit $exec, implicit $exec
; CHECK-NEXT: dead renamable $sgpr0 = IMPLICIT_DEF
; CHECK-NEXT: dead renamable $sgpr0 = IMPLICIT_DEF
; CHECK-NEXT: undef renamable $vgpr3 = KILL killed renamable $vgpr3, implicit-def $vgpr3_vgpr4, implicit $exec
; CHECK-NEXT: S_WAITCNT .Vmcnt_0
; CHECK-NEXT: $vgpr4 = V_MOV_B32_e32 killed $vgpr0, implicit $exec, implicit $exec
; CHECK-NEXT: $vgpr6 = V_MOV_B32_e32 $vgpr2, implicit $exec, implicit-def $vgpr5_vgpr6, implicit $vgpr1_vgpr2
; CHECK-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr1, implicit $exec, implicit $vgpr1_vgpr2, implicit $exec
; CHECK-NEXT: SCRATCH_STORE_DWORDX2_SADDR killed $vgpr5_vgpr6, $sgpr32, 12, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" store (s64) into %stack.4, align 4, addrspace 5)
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !9, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 12), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: DBG_VALUE renamable $vgpr5_vgpr6, 0, !9, !DIExpression(DIOpArg(0, ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: $vgpr6 = V_MOV_B32_e32 $vgpr4, implicit $exec, implicit-def $vgpr5_vgpr6, implicit $vgpr3_vgpr4
; CHECK-NEXT: $vgpr5 = V_MOV_B32_e32 $vgpr3, implicit $exec, implicit $vgpr3_vgpr4, implicit $exec
; CHECK-NEXT: SCRATCH_STORE_DWORDX2_SADDR killed $vgpr5_vgpr6, $sgpr32, 4, 0, implicit $exec, implicit $flat_scr, debug-location !10 :: ("amdgpu-thread-private" store (s64) into %stack.3, align 4, addrspace 5)
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !7, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 4), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: DBG_VALUE renamable $vgpr5_vgpr6, 0, !7, !DIExpression(DIOpArg(0, ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: renamable $vgpr0 = FLAT_LOAD_DWORD killed renamable $vgpr3_vgpr4, 0, 0, implicit $exec, implicit $flat_scr, debug-location !10 :: (load (s32) from %ir.0)
; CHECK-NEXT: renamable $vgpr1 = FLAT_LOAD_DWORD killed renamable $vgpr1_vgpr2, 0, 0, implicit $exec, implicit $flat_scr, debug-location !10 :: (load (s32) from %ir.1)
; CHECK-NEXT: S_WAITCNT .Vmcnt_0_Lgkmcnt_0, debug-location !10
; CHECK-NEXT: renamable $sgpr0 = V_CMP_LE_I32_e64 killed $vgpr0, killed $vgpr1, implicit $exec, debug-location !10
; CHECK-NEXT: $sgpr1 = S_MOV_B32 $exec_lo, implicit-def $exec_lo, debug-location !10
; CHECK-NEXT: renamable $sgpr0 = S_AND_B32 renamable $sgpr1, killed renamable $sgpr0, implicit-def dead $scc, debug-location !10
; CHECK-NEXT: renamable $sgpr1 = S_XOR_B32 renamable $sgpr0, killed renamable $sgpr1, implicit-def dead $scc, debug-location !10
; CHECK-NEXT: $vgpr7 = IMPLICIT_DEF debug-location !10
; CHECK-NEXT: $vgpr7 = V_WRITELANE_B32 killed $sgpr1, 0, $vgpr7, debug-location !10
; CHECK-NEXT: $sgpr3 = S_OR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec, debug-location !10
; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR killed $vgpr7, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr, debug-location !10 :: ("amdgpu-thread-private" store (s32) into %stack.2, addrspace 5)
; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr3, debug-location !10
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !7, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 4), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !9, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 12), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: $exec_lo = S_MOV_B32 killed renamable $sgpr0, debug-location !10
; CHECK-NEXT: S_CBRANCH_EXECZ %bb.1, implicit $exec, debug-location !10
; CHECK-NEXT: S_BRANCH %bb.3, debug-location !10
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.1.Flow:
; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.4(0x40000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !7, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 4), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !9, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 12), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: $sgpr3 = S_OR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec
; CHECK-NEXT: $vgpr7 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" load (s32) from %stack.2, addrspace 5)
; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr3
; CHECK-NEXT: S_WAITCNT .Vmcnt_0
; CHECK-NEXT: $sgpr0 = V_READLANE_B32 $vgpr7, 0
; CHECK-NEXT: renamable $sgpr0 = S_OR_SAVEEXEC_B32 killed renamable $sgpr0, implicit-def $exec, implicit-def dead $scc, implicit $exec
; CHECK-NEXT: renamable $sgpr0 = S_AND_B32 $exec_lo, killed renamable $sgpr0, implicit-def dead $scc
; CHECK-NEXT: $vgpr7 = V_WRITELANE_B32 $sgpr0, 1, $vgpr7
; CHECK-NEXT: $sgpr3 = S_OR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec
; CHECK-NEXT: SCRATCH_STORE_DWORD_SADDR killed $vgpr7, $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" store (s32) into %stack.2, addrspace 5)
; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr3
; CHECK-NEXT: $exec_lo = S_XOR_B32 $exec_lo, killed renamable $sgpr0, implicit-def dead $scc
; CHECK-NEXT: S_CBRANCH_EXECZ %bb.4, implicit $exec
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.2 (%ir-block.12):
; CHECK-NEXT: successors: %bb.4(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !7, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 4), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !9, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 12), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: $vgpr0_vgpr1 = SCRATCH_LOAD_DWORDX2_SADDR $sgpr32, 12, 0, implicit $exec, implicit $flat_scr, debug-location !11 :: ("amdgpu-thread-private" load (s64) from %stack.4, align 4, addrspace 5)
; CHECK-NEXT: $vgpr2_vgpr3 = SCRATCH_LOAD_DWORDX2_SADDR $sgpr32, 4, 0, implicit $exec, implicit $flat_scr, debug-location !11 :: ("amdgpu-thread-private" load (s64) from %stack.3, align 4, addrspace 5)
; CHECK-NEXT: S_WAITCNT .Vmcnt_0, debug-location !11
; CHECK-NEXT: renamable $vgpr2 = FLAT_LOAD_DWORD renamable $vgpr2_vgpr3, 0, 0, implicit $exec, implicit $flat_scr, debug-location !11 :: (load (s32) from %ir.0)
; CHECK-NEXT: renamable $sgpr0 = S_MOV_B32 1
; CHECK-NEXT: S_WAITCNT .Vmcnt_0_Lgkmcnt_0, debug-location !11
; CHECK-NEXT: renamable $vgpr2 = V_ADD_U32_e64 killed $vgpr2, killed $sgpr0, 0, implicit $exec, debug-location !11
; CHECK-NEXT: FLAT_STORE_DWORD renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr, debug-location !11 :: (store (s32) into %ir.1)
; CHECK-NEXT: S_BRANCH %bb.4, debug-location !10
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.3 (%ir-block.15):
; CHECK-NEXT: successors: %bb.1(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !7, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 4), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !9, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 12), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: $vgpr0_vgpr1 = SCRATCH_LOAD_DWORDX2_SADDR $sgpr32, 12, 0, implicit $exec, implicit $flat_scr, debug-location !13 :: ("amdgpu-thread-private" load (s64) from %stack.4, align 4, addrspace 5)
; CHECK-NEXT: S_WAITCNT .Vmcnt_0, debug-location !13
; CHECK-NEXT: renamable $vgpr2 = FLAT_LOAD_DWORD renamable $vgpr0_vgpr1, 0, 0, implicit $exec, implicit $flat_scr, debug-location !13 :: (load (s32) from %ir.1)
; CHECK-NEXT: renamable $sgpr0 = S_MOV_B32 1
; CHECK-NEXT: S_WAITCNT .Vmcnt_0_Lgkmcnt_0, debug-location !13
; CHECK-NEXT: renamable $vgpr2 = V_ADD_U32_e64 killed $vgpr2, killed $sgpr0, 0, implicit $exec, debug-location !13
; CHECK-NEXT: FLAT_STORE_DWORD renamable $vgpr0_vgpr1, killed renamable $vgpr2, 0, 0, implicit $exec, implicit $flat_scr, debug-location !13 :: (store (s32) into %ir.1)
; CHECK-NEXT: S_BRANCH %bb.1, debug-location !10
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: bb.4 (%ir-block.18):
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !7, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 4), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: DBG_VALUE $sgpr32, 0, !9, !DIExpression(DIOpArg(0, ptr addrspace(5)), DIOpReinterpret(i32), DIOpConstant(i32 12), DIOpAdd(), DIOpReinterpret(ptr addrspace(5)), DIOpDeref(ptr), DIOpDeref(ptr)), debug-location !8
; CHECK-NEXT: $sgpr3 = S_OR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec
; CHECK-NEXT: $vgpr7 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 0, 0, implicit $exec, implicit $flat_scr :: ("amdgpu-thread-private" load (s32) from %stack.2, addrspace 5)
; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr3
; CHECK-NEXT: S_WAITCNT .Vmcnt_0
; CHECK-NEXT: $sgpr0 = V_READLANE_B32 killed $vgpr7, 1
; CHECK-NEXT: $exec_lo = S_OR_B32 $exec_lo, killed renamable $sgpr0, implicit-def dead $scc
; CHECK-NEXT: $sgpr0 = S_XOR_SAVEEXEC_B32 -1, implicit-def $exec, implicit-def dead $scc, implicit $exec, debug-location !14
; CHECK-NEXT: $vgpr7 = SCRATCH_LOAD_DWORD_SADDR $sgpr32, 28, 0, implicit $exec, implicit $flat_scr, debug-location !14 :: ("amdgpu-thread-private" load (s32) from %stack.7, addrspace 5)
; CHECK-NEXT: $exec_lo = S_MOV_B32 killed $sgpr0, debug-location !14
; CHECK-NEXT: S_WAITCNT .Vmcnt_0_Lgkmcnt_0, debug-location !14
; CHECK-NEXT: S_SETPC_B64_return undef $sgpr30_sgpr31, debug-location !14
bb.0 (%ir-block.2):
successors: %bb.3(0x40000000), %bb.1(0x40000000)
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3
%13:vgpr_32 = COPY $vgpr3
%12:vgpr_32 = COPY $vgpr2
%11:vgpr_32 = COPY $vgpr1
%10:vgpr_32 = COPY $vgpr0
dead %29:sgpr_32 = IMPLICIT_DEF
dead %30:sgpr_32 = IMPLICIT_DEF
undef %34.sub0:vreg_64 = COPY %12
%34.sub1:vreg_64 = COPY %13
dead %31:sgpr_32 = IMPLICIT_DEF
dead %32:sgpr_32 = IMPLICIT_DEF
undef %33.sub0:vreg_64 = COPY %10
%33.sub1:vreg_64 = COPY %11
%15:vreg_64 = COPY %34
DBG_VALUE %15, 0, !9, !DIExpression(DIOpArg(0, ptr), DIOpDeref(ptr)), debug-location !8
%14:vreg_64 = COPY %33
DBG_VALUE %14, 0, !7, !DIExpression(DIOpArg(0, ptr), DIOpDeref(ptr)), debug-location !8
%19:vreg_64 = COPY %33, debug-location !10
%18:vgpr_32 = FLAT_LOAD_DWORD %19, 0, 0, implicit $exec, implicit $flat_scr, debug-location !10 :: (load (s32) from %ir.0)
%21:vreg_64 = COPY %34, debug-location !10
%20:vgpr_32 = FLAT_LOAD_DWORD %21, 0, 0, implicit $exec, implicit $flat_scr, debug-location !10 :: (load (s32) from %ir.1)
%22:sreg_32 = V_CMP_LE_I32_e64 %18, %20, implicit $exec, debug-location !10
%35:sreg_32 = COPY $exec_lo, implicit-def $exec_lo, debug-location !10
%36:sreg_32 = S_AND_B32 %35, %22, implicit-def dead $scc, debug-location !10
%0:sreg_32 = S_XOR_B32 %36, %35, implicit-def dead $scc, debug-location !10
$exec_lo = S_MOV_B32_term %36, debug-location !10
S_CBRANCH_EXECZ %bb.1, implicit $exec, debug-location !10
S_BRANCH %bb.3, debug-location !10
bb.1.Flow:
successors: %bb.2(0x40000000), %bb.4(0x40000000)
%37:sreg_32 = S_OR_SAVEEXEC_B32 %0, implicit-def $exec, implicit-def $scc, implicit $exec
%1:sreg_32 = S_AND_B32 $exec_lo, %37, implicit-def $scc
$exec_lo = S_XOR_B32_term $exec_lo, %1, implicit-def $scc
S_CBRANCH_EXECZ %bb.4, implicit $exec
S_BRANCH %bb.2
bb.2 (%ir-block.12):
successors: %bb.4(0x80000000)
%26:vgpr_32 = FLAT_LOAD_DWORD %14, 0, 0, implicit $exec, implicit $flat_scr, debug-location !11 :: (load (s32) from %ir.0)
%27:sreg_32 = S_MOV_B32 1
%28:vgpr_32 = V_ADD_U32_e64 %26, %27, 0, implicit $exec, debug-location !11
FLAT_STORE_DWORD %15, %28, 0, 0, implicit $exec, implicit $flat_scr, debug-location !11 :: (store (s32) into %ir.1)
S_BRANCH %bb.4, debug-location !10
bb.3 (%ir-block.15):
successors: %bb.1(0x80000000)
%23:vgpr_32 = FLAT_LOAD_DWORD %15, 0, 0, implicit $exec, implicit $flat_scr, debug-location !13 :: (load (s32) from %ir.1)
%24:sreg_32 = S_MOV_B32 1
%25:vgpr_32 = V_ADD_U32_e64 %23, %24, 0, implicit $exec, debug-location !13
FLAT_STORE_DWORD %15, %25, 0, 0, implicit $exec, implicit $flat_scr, debug-location !13 :: (store (s32) into %ir.1)
S_BRANCH %bb.1, debug-location !10
bb.4 (%ir-block.18):
$exec_lo = S_OR_B32 $exec_lo, %1, implicit-def $scc
SI_RETURN debug-location !14
...