blob: 2034c8f74133e124a42fbd1ff38fc548158ba04e [file] [edit]
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -mtriple=amdgpu11.00 -run-pass=machine-scheduler %s -o - | FileCheck %s
# Each bundle defines one lane of %0. PressureDiffs do not track lanes, so the
# scheduler must not use them for these bundles. The BUNDLE header only has
# implicit operands, so the instructions inside the bundle have to be checked.
# Previously the cached PressureDiff counted each partial def as a def of the
# whole register and tripped the EXPENSIVE_CHECKS pressure cross-check in
# GCNSchedStrategy.
---
name: bundle_subreg_defs
tracksRegLiveness: true
body: |
bb.0:
liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0_sgpr1
; CHECK-LABEL: name: bundle_subreg_defs
; CHECK: liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3, $sgpr0_sgpr1
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: BUNDLE implicit-def undef %0.sub3, implicit $vgpr3, implicit $exec {
; CHECK-NEXT: undef [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 $vgpr3, implicit $exec
; CHECK-NEXT: }
; CHECK-NEXT: BUNDLE implicit-def [[V_MOV_B32_e32_]].sub2, implicit $vgpr2, implicit $exec {
; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 $vgpr2, implicit $exec
; CHECK-NEXT: }
; CHECK-NEXT: BUNDLE implicit-def [[V_MOV_B32_e32_]].sub1, implicit $vgpr1, implicit $exec {
; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 $vgpr1, implicit $exec
; CHECK-NEXT: }
; CHECK-NEXT: BUNDLE implicit-def [[V_MOV_B32_e32_]].sub0, implicit $vgpr0, implicit $exec {
; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 $vgpr0, implicit $exec
; CHECK-NEXT: }
; CHECK-NEXT: GLOBAL_STORE_DWORDX4_SADDR undef %1:vgpr_32, [[V_MOV_B32_e32_]], $sgpr0_sgpr1, 0, 0, implicit $exec
; CHECK-NEXT: S_ENDPGM 0
BUNDLE implicit-def undef %0.sub3, implicit $vgpr3, implicit $exec {
undef %0.sub3:vreg_128 = V_MOV_B32_e32 $vgpr3, implicit $exec
}
BUNDLE implicit-def %0.sub2, implicit $vgpr2, implicit $exec {
%0.sub2:vreg_128 = V_MOV_B32_e32 $vgpr2, implicit $exec
}
BUNDLE implicit-def %0.sub1, implicit $vgpr1, implicit $exec {
%0.sub1:vreg_128 = V_MOV_B32_e32 $vgpr1, implicit $exec
}
BUNDLE implicit-def %0.sub0, implicit $vgpr0, implicit $exec {
%0.sub0:vreg_128 = V_MOV_B32_e32 $vgpr0, implicit $exec
}
GLOBAL_STORE_DWORDX4_SADDR undef %1:vgpr_32, %0, $sgpr0_sgpr1, 0, 0, implicit $exec
S_ENDPGM 0
...