| # 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 | |
| ... |