87 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx906 -run-pass=prologepilog -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s3 4# VGPR spill code in the prolog sets the `IsKill` flag for the spilled register5# based on the entry block's livein info.6 7---8name: vgpr_use_after_prolog_spill9tracksRegLiveness: true10machineFunctionInfo:11 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'12 frameOffsetReg: '$sgpr33'13 stackPtrOffsetReg: '$sgpr32'14body: |15 bb.0:16 liveins: $sgpr42, $vgpr0, $sgpr30_sgpr3117 18 ; GCN-LABEL: name: vgpr_use_after_prolog_spill19 ; GCN: liveins: $sgpr42, $vgpr0, $sgpr30_sgpr3120 ; GCN-NEXT: {{ $}}21 ; GCN-NEXT: $vgpr0 = V_ADD_U32_e32 8192, killed $vgpr0, implicit $exec22 ; GCN-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr023 ; GCN-NEXT: S_NOP 0, implicit-def $vgpr024 ; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr3125 $vgpr0 = V_ADD_U32_e32 8192, killed $vgpr0, implicit $exec26 $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr027 S_NOP 0, implicit-def $vgpr028 S_SETPC_B64_return $sgpr30_sgpr3129...30 31---32name: livein_vgpr_def_after_prolog_spill33tracksRegLiveness: true34machineFunctionInfo:35 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'36 frameOffsetReg: '$sgpr33'37 stackPtrOffsetReg: '$sgpr32'38body: |39 bb.0:40 liveins: $sgpr42, $vgpr0, $vgpr1, $sgpr30_sgpr3141 42 ; GCN-LABEL: name: livein_vgpr_def_after_prolog_spill43 ; GCN: liveins: $sgpr42, $vgpr0, $vgpr1, $sgpr30_sgpr3144 ; GCN-NEXT: {{ $}}45 ; GCN-NEXT: $vgpr0 = V_ADD_U32_e32 8192, killed $vgpr1, implicit $exec46 ; GCN-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr047 ; GCN-NEXT: S_NOP 0, implicit-def $vgpr048 ; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr3149 $vgpr0 = V_ADD_U32_e32 8192, killed $vgpr1, implicit $exec50 $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr051 S_NOP 0, implicit-def $vgpr052 S_SETPC_B64_return $sgpr30_sgpr3153...54 55---56name: livein_vgpr_not_referred_in_entry_bb57tracksRegLiveness: true58machineFunctionInfo:59 scratchRSrcReg: '$sgpr0_sgpr1_sgpr2_sgpr3'60 frameOffsetReg: '$sgpr33'61 stackPtrOffsetReg: '$sgpr32'62body: |63 ; GCN-LABEL: name: livein_vgpr_not_referred_in_entry_bb64 ; GCN: bb.0:65 ; GCN-NEXT: successors: %bb.1(0x80000000)66 ; GCN-NEXT: liveins: $sgpr42, $vgpr0, $sgpr30_sgpr3167 ; GCN-NEXT: {{ $}}68 ; GCN-NEXT: S_NOP 069 ; GCN-NEXT: S_BRANCH %bb.170 ; GCN-NEXT: {{ $}}71 ; GCN-NEXT: bb.1:72 ; GCN-NEXT: liveins: $sgpr42, $vgpr0, $sgpr30_sgpr3173 ; GCN-NEXT: {{ $}}74 ; GCN-NEXT: $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr075 ; GCN-NEXT: S_NOP 0, implicit-def $vgpr076 ; GCN-NEXT: S_SETPC_B64_return $sgpr30_sgpr3177 bb.0:78 liveins: $sgpr42, $vgpr0, $sgpr30_sgpr3179 S_NOP 080 S_BRANCH %bb.181 bb.1:82 liveins: $sgpr42, $vgpr0, $sgpr30_sgpr3183 $vgpr0 = V_WRITELANE_B32 killed $sgpr42, 0, $vgpr084 S_NOP 0, implicit-def $vgpr085 S_SETPC_B64_return $sgpr30_sgpr3186...87