86 lines
3 KiB
YAML
86 lines
3 KiB
YAML
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
|
|
# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -run-pass=prologepilog -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
|
|
|
|
# VGPR spill code in the prolog sets the `IsKill` flag for the spilled register
|
|
# based on the entry block's livein info.
|
|
|
|
---
|
|
name: vgpr_use_after_prolog_spill
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
|
frameOffsetReg: '$sgpr33'
|
|
stackPtrOffsetReg: '$sgpr32'
|
|
body: |
|
|
bb.0:
|
|
liveins: $sgpr42, $vgpr0, $sgpr30_sgpr31
|
|
|
|
; GCN-LABEL: name: vgpr_use_after_prolog_spill
|
|
; GCN: liveins: $sgpr42, $vgpr0, $sgpr30_sgpr31
|
|
; GCN-NEXT: {{ $}}
|
|
; GCN-NEXT: $vgpr0 = V_ADD_U32_e32 8192, killed $vgpr0, implicit $exec
|
|
; GCN-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr0
|
|
; GCN-NEXT: S_NOP 0, implicit-def $vgpr0
|
|
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31
|
|
$vgpr0 = V_ADD_U32_e32 8192, killed $vgpr0, implicit $exec
|
|
$vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr0
|
|
S_NOP 0, implicit-def $vgpr0
|
|
S_SETPC_B64_return $sgpr30_sgpr31
|
|
...
|
|
|
|
---
|
|
name: livein_vgpr_def_after_prolog_spill
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
|
frameOffsetReg: '$sgpr33'
|
|
stackPtrOffsetReg: '$sgpr32'
|
|
body: |
|
|
bb.0:
|
|
liveins: $sgpr42, $vgpr0, $vgpr1, $sgpr30_sgpr31
|
|
|
|
; GCN-LABEL: name: livein_vgpr_def_after_prolog_spill
|
|
; GCN: liveins: $sgpr42, $vgpr0, $vgpr1, $sgpr30_sgpr31
|
|
; GCN-NEXT: {{ $}}
|
|
; GCN-NEXT: $vgpr0 = V_ADD_U32_e32 8192, killed $vgpr1, implicit $exec
|
|
; GCN-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr0
|
|
; GCN-NEXT: S_NOP 0, implicit-def $vgpr0
|
|
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31
|
|
$vgpr0 = V_ADD_U32_e32 8192, killed $vgpr1, implicit $exec
|
|
$vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr0
|
|
S_NOP 0, implicit-def $vgpr0
|
|
S_SETPC_B64_return $sgpr30_sgpr31
|
|
...
|
|
|
|
---
|
|
name: livein_vgpr_not_referred_in_entry_bb
|
|
tracksRegLiveness: true
|
|
machineFunctionInfo:
|
|
scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'
|
|
frameOffsetReg: '$sgpr33'
|
|
stackPtrOffsetReg: '$sgpr32'
|
|
body: |
|
|
; GCN-LABEL: name: livein_vgpr_not_referred_in_entry_bb
|
|
; GCN: bb.0:
|
|
; GCN-NEXT: successors: %bb.1(0x80000000)
|
|
; GCN-NEXT: liveins: $sgpr42, $vgpr0, $sgpr30_sgpr31
|
|
; GCN-NEXT: {{ $}}
|
|
; GCN-NEXT: S_NOP 0
|
|
; GCN-NEXT: S_BRANCH %bb.1
|
|
; GCN-NEXT: {{ $}}
|
|
; GCN-NEXT: bb.1:
|
|
; GCN-NEXT: liveins: $sgpr42, $vgpr0, $sgpr30_sgpr31
|
|
; GCN-NEXT: {{ $}}
|
|
; GCN-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr0
|
|
; GCN-NEXT: S_NOP 0, implicit-def $vgpr0
|
|
; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr31
|
|
bb.0:
|
|
liveins: $sgpr42, $vgpr0, $sgpr30_sgpr31
|
|
S_NOP 0
|
|
S_BRANCH %bb.1
|
|
bb.1:
|
|
liveins: $sgpr42, $vgpr0, $sgpr30_sgpr31
|
|
$vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr0
|
|
S_NOP 0, implicit-def $vgpr0
|
|
S_SETPC_B64_return $sgpr30_sgpr31
|
|
...
|