1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
llvm-mirror/test/CodeGen/AMDGPU/post-ra-sched-kill-bundle-use-inst.mir
Matt Arsenault 562e34ab2e ScheduleDAG: Fix incorrectly killing registers in bundles
When looking for uses/defs to add kill flags, the iterator was double
incremented, skipping the first instruction in the bundle. The use
register in the first bundle instruction was then incorrectly killed.
The "First" instruction should be the BUNDLE itself as the proper
reverse iterator endpoint.

llvm-svn: 365216
2019-07-05 15:32:28 +00:00

43 lines
1.7 KiB
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=post-RA-sched -verify-machineinstrs -o - %s | FileCheck %s
# The scheduler was not inspecting the first instruction in the bundle
# when adding kill flags, so it would incorrectly mark the first use
# of $vgpr0 as killed.
---
name: kill_flag_use_first_bundle_inst
tracksRegLiveness: true
machineFunctionInfo:
isEntryFunction: true
body: |
bb.0:
liveins: $sgpr4_sgpr5, $sgpr7
; CHECK-LABEL: name: kill_flag_use_first_bundle_inst
; CHECK: liveins: $sgpr4_sgpr5, $sgpr7
; CHECK: renamable $sgpr0 = S_LOAD_DWORD_IMM killed renamable $sgpr4_sgpr5, 0, 0, 0
; CHECK: $m0 = S_MOV_B32 -1
; CHECK: $vgpr0 = V_MOV_B32_e32 killed $sgpr0, implicit $exec, implicit $exec
; CHECK: BUNDLE implicit $vgpr0, implicit $m0, implicit $exec {
; CHECK: DS_GWS_INIT $vgpr0, 8, -1, implicit $m0, implicit $exec
; CHECK: S_WAITCNT 0
; CHECK: }
; CHECK: BUNDLE implicit killed $vgpr0, implicit $m0, implicit $exec {
; CHECK: DS_GWS_BARRIER killed $vgpr0, 8, -1, implicit $m0, implicit $exec
; CHECK: S_WAITCNT 0
; CHECK: }
renamable $sgpr0 = S_LOAD_DWORD_IMM killed renamable $sgpr4_sgpr5, 0, 0, 0
$m0 = S_MOV_B32 -1
$vgpr0 = V_MOV_B32_e32 $sgpr0, implicit $exec, implicit $exec
BUNDLE implicit $vgpr0, implicit $m0, implicit $exec {
DS_GWS_INIT $vgpr0, 8, -1, implicit $m0, implicit $exec
S_WAITCNT 0
}
BUNDLE implicit killed $vgpr0, implicit $m0, implicit $exec {
DS_GWS_BARRIER $vgpr0, 8, -1, implicit $m0, implicit $exec
S_WAITCNT 0
}
...