llvm/llvm/test/CodeGen/AMDGPU/rewrite-partial-reg-uses-gen.mir

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=amdgcn-amd-amdhsa -amdgpu-enable-rewrite-partial-reg-uses=true -verify-machineinstrs -start-before=rename-independent-subregs -stop-after=rewrite-partial-reg-uses %s -o - | FileCheck -check-prefix=CHECK %s
---
name: test_subregs_composition_vreg_1024
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_subregs_composition_vreg_1024
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0_sub1
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub1_sub2
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub0_sub1_sub2
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1_sub2_sub3
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 21, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub0_sub1_sub2_sub3
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub1_sub2_sub3_sub4
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_3:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 31, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_3:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 32, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_3]].sub0_sub1_sub2_sub3_sub4
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_3]].sub1_sub2_sub3_sub4_sub5
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_4:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 41, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_4:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 43, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_4]].sub0_sub1_sub2_sub3_sub4_sub5
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_4]].sub2_sub3_sub4_sub5_sub6_sub7
    undef %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub1_sub2
    S_NOP 0, implicit %0.sub2_sub3

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3
    S_NOP 0, implicit %1.sub2_sub3_sub4

    undef %2.sub1:vreg_1024 = V_MOV_B32_e32 21, implicit $exec
    %2.sub2:vreg_1024 = V_MOV_B32_e32 22, implicit $exec
    S_NOP 0, implicit %2.sub1_sub2_sub3_sub4
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5

    undef %3.sub1:vreg_1024 = V_MOV_B32_e32 31, implicit $exec
    %3.sub2:vreg_1024 = V_MOV_B32_e32 32, implicit $exec
    S_NOP 0, implicit %3.sub1_sub2_sub3_sub4_sub5
    S_NOP 0, implicit %3.sub2_sub3_sub4_sub5_sub6

    undef %4.sub1:vreg_1024 = V_MOV_B32_e32 41, implicit $exec
    %4.sub3:vreg_1024 = V_MOV_B32_e32 43, implicit $exec
    S_NOP 0, implicit %4.sub1_sub2_sub3_sub4_sub5_sub6
    S_NOP 0, implicit %4.sub3_sub4_sub5_sub6_sub7_sub8

...
---
name: test_vreg_64_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_64_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_64 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

...
---
name: test_vreg_96_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_96_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_96 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub2:vreg_96 = V_MOV_B32_e32 22, implicit $exec
    S_NOP 0, implicit %2.sub2

...
---
name: test_vreg_96_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_96_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_96 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_96 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

...
---
name: test_vreg_128_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_128_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_128 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub3:vreg_128 = V_MOV_B32_e32 23, implicit $exec
    S_NOP 0, implicit %2.sub3

...
---
name: test_vreg_128_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_128_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_128 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_128 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub2:vreg_128 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_128 = V_MOV_B32_e32 23, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3

...
---
name: test_vreg_128_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_128_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_128 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_128 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_128 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

...
---
name: test_vreg_160_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_160_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_160 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub4:vreg_160 = V_MOV_B32_e32 24, implicit $exec
    S_NOP 0, implicit %2.sub4

...
---
name: test_vreg_160_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_160_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_160 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_160 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub3:vreg_160 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_160 = V_MOV_B32_e32 24, implicit $exec
    S_NOP 0, implicit %2.sub3_sub4

...
---
name: test_vreg_160_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_160_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_160 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_160 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_160 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub2:vreg_160 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_160 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_160 = V_MOV_B32_e32 24, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4

...
---
name: test_vreg_160_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_160_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_160 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_160 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_160 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_160 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

...
---
name: test_vreg_192_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_192 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub5:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    S_NOP 0, implicit %2.sub5

...
---
name: test_vreg_192_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_192 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_192 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub4:vreg_192 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5

...
---
name: test_vreg_192_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_192 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_192 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_192 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub3:vreg_192 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_192 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    S_NOP 0, implicit %2.sub3_sub4_sub5

...
---
name: test_vreg_192_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_192 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_192 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_192 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_192 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub2:vreg_192 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_192 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_192 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5

...
---
name: test_vreg_192_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_192 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_192 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_192 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_192 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_192 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

...
---
name: test_vreg_224_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_224 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_224 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub6:vreg_224 = V_MOV_B32_e32 26, implicit $exec
    S_NOP 0, implicit %2.sub6

...
---
name: test_vreg_224_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_224 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_224 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_224 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_224 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub5:vreg_224 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_224 = V_MOV_B32_e32 26, implicit $exec
    S_NOP 0, implicit %2.sub5_sub6

...
---
name: test_vreg_224_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_224 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_224 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_224 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_224 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_224 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_224 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub4:vreg_224 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_224 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_224 = V_MOV_B32_e32 26, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6

...
---
name: test_vreg_224_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_224 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_224 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_224 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_224 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_224 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_224 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_224 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_224 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub3:vreg_224 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_224 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_224 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_224 = V_MOV_B32_e32 26, implicit $exec
    S_NOP 0, implicit %2.sub3_sub4_sub5_sub6

...
---
name: test_vreg_224_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_224 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_224 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_224 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_224 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_224 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_224 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_224 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_224 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_224 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_224 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub2:vreg_224 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_224 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_224 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_224 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_224 = V_MOV_B32_e32 26, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5_sub6

...
---
name: test_vreg_224_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_224 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_224 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_224 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_224 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_224 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_224 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_224 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_224 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_224 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_224 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_224 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_224 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

...
---
name: test_vreg_256_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub7:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub7

...
---
name: test_vreg_256_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub6:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7

...
---
name: test_vreg_256_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_256 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub5:vreg_256 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub5_sub6_sub7

...
---
name: test_vreg_256_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_256 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_256 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub4:vreg_256 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_256 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7

...
---
name: test_vreg_256_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_256 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_256 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_256 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub3:vreg_256 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_256 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_256 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub3_sub4_sub5_sub6_sub7

...
---
name: test_vreg_256_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_256 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_256 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_256 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_256 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_256 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

    undef %2.sub2:vreg_256 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_256 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_256 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_256 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5_sub6_sub7

...
---
name: test_vreg_288_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_288 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub8:vreg_288 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub8

...
---
name: test_vreg_288_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_288 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_288 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub7:vreg_288 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_288 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub7_sub8

...
---
name: test_vreg_288_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_288 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_288 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_288 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_288 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub6:vreg_288 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_288 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_288 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8

...
---
name: test_vreg_288_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_288 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_288 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_288 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_288 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_288 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_288 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub5:vreg_288 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_288 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_288 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_288 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub5_sub6_sub7_sub8

...
---
name: test_vreg_288_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_288 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_288 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_288 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_288 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_288 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_288 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_288 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_288 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub4:vreg_288 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_288 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_288 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_288 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_288 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8

...
---
name: test_vreg_288_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_288 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_288 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_288 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_288 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_288 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_288 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_288 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_288 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_288 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_288 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

    undef %2.sub3:vreg_288 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_288 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_288 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_288 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_288 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_288 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub3_sub4_sub5_sub6_sub7_sub8

...
---
name: test_vreg_288_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_288 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_288 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_288 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_288 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_288 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_288 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_288 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub1:vreg_288 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_288 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_288 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_288 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_288 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_288 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_288 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_288 = V_MOV_B32_e32 18, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8

...
---
name: test_vreg_320_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_320 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub9:vreg_320 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub9

...
---
name: test_vreg_320_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_320 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_320 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub8:vreg_320 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9

...
---
name: test_vreg_320_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_320 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_320 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub7:vreg_320 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_320 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub7_sub8_sub9

...
---
name: test_vreg_320_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_320 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_320 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_320 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_320 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub6:vreg_320 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_320 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_320 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8_sub9

...
---
name: test_vreg_320_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_320 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_320 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_320 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_320 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_320 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_320 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub5:vreg_320 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_320 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_320 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_320 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub5_sub6_sub7_sub8_sub9

...
---
name: test_vreg_320_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_320 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_320 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_320 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_320 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_320 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_320 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_320 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_320 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

    undef %2.sub4:vreg_320 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_320 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_320 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_320 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_320 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8_sub9

...
---
name: test_vreg_320_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_320 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_320 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_320 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_320 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_320 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub1:vreg_320 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_320 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_320 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_320 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_320 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_320 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_320 = V_MOV_B32_e32 18, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8

    undef %2.sub2:vreg_320 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_320 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_320 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_320 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_320 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_320 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_320 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9

...
---
name: test_vreg_352_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_352 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub10:vreg_352 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub10

...
---
name: test_vreg_352_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_352 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_352 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub9:vreg_352 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub9_sub10

...
---
name: test_vreg_352_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_352 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_352 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_352 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_352 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub8:vreg_352 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_352 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9_sub10

...
---
name: test_vreg_352_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_352 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_352 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_352 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_352 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_352 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_352 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub7:vreg_352 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_352 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_352 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub7_sub8_sub9_sub10

...
---
name: test_vreg_352_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_352 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_352 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_352 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_352 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_352 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_352 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_352 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_352 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub6:vreg_352 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_352 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_352 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_352 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8_sub9_sub10

...
---
name: test_vreg_352_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_352 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_352 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_352 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_352 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_352 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_352 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_352 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_352 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_352 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_352 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

    undef %2.sub5:vreg_352 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_352 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_352 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_352 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_352 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub5_sub6_sub7_sub8_sub9_sub10

...
---
name: test_vreg_352_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_352 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_352 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_352 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_352 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_352 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_352 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub1:vreg_352 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_352 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_352 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_352 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_352 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_352 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_352 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_352 = V_MOV_B32_e32 18, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8

    undef %2.sub3:vreg_352 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_352 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_352 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_352 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_352 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_352 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_352 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10

...
---
name: test_vreg_384_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_384 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub11:vreg_384 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub11

...
---
name: test_vreg_384_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_384 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_384 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub10:vreg_384 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub10_sub11

...
---
name: test_vreg_384_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_384 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_384 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub9:vreg_384 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub9_sub10_sub11

...
---
name: test_vreg_384_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_384 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_384 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_384 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_384 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub8:vreg_384 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_384 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9_sub10_sub11

...
---
name: test_vreg_384_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_384 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_384 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_384 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_384 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_384 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_384 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub7:vreg_384 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_384 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_384 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub7_sub8_sub9_sub10_sub11

...
---
name: test_vreg_384_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_384 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_384 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_384 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_384 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_384 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_384 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_384 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_384 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

    undef %2.sub6:vreg_384 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_384 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_384 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_384 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8_sub9_sub10_sub11

...
---
name: test_vreg_384_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_384 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_384 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_384 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_384 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_384 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub1:vreg_384 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_384 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_384 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_384 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_384 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_384 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_384 = V_MOV_B32_e32 18, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8

    undef %2.sub4:vreg_384 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_384 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_384 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_384 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_384 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_384 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11

...
---
name: test_vreg_512_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub15:vreg_512 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub15

...
---
name: test_vreg_512_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub14:vreg_512 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_512 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub14_sub15

...
---
name: test_vreg_512_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 213, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_512 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub13:vreg_512 = V_MOV_B32_e32 213, implicit $exec
    %2.sub14:vreg_512 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_512 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub13_sub14_sub15

...
---
name: test_vreg_512_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 212, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 213, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_512 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_512 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_512 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub12:vreg_512 = V_MOV_B32_e32 212, implicit $exec
    %2.sub13:vreg_512 = V_MOV_B32_e32 213, implicit $exec
    %2.sub14:vreg_512 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_512 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub12_sub13_sub14_sub15

...
---
name: test_vreg_512_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 212, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 213, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_512 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_512 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_512 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_512 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_512 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub11:vreg_512 = V_MOV_B32_e32 211, implicit $exec
    %2.sub12:vreg_512 = V_MOV_B32_e32 212, implicit $exec
    %2.sub13:vreg_512 = V_MOV_B32_e32 213, implicit $exec
    %2.sub14:vreg_512 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_512 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub11_sub12_sub13_sub14_sub15

...
---
name: test_vreg_512_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 212, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 213, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_512 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_512 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_512 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_512 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_512 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_512 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_512 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

    undef %2.sub10:vreg_512 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_512 = V_MOV_B32_e32 211, implicit $exec
    %2.sub12:vreg_512 = V_MOV_B32_e32 212, implicit $exec
    %2.sub13:vreg_512 = V_MOV_B32_e32 213, implicit $exec
    %2.sub14:vreg_512 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_512 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub10_sub11_sub12_sub13_sub14_sub15

...
---
name: test_vreg_512_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 212, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 213, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_512 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_512 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_512 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_512 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_512 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub1:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_512 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_512 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_512 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_512 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_512 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_512 = V_MOV_B32_e32 18, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8

    undef %2.sub8:vreg_512 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_512 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_512 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_512 = V_MOV_B32_e32 211, implicit $exec
    %2.sub12:vreg_512 = V_MOV_B32_e32 212, implicit $exec
    %2.sub13:vreg_512 = V_MOV_B32_e32 213, implicit $exec
    %2.sub14:vreg_512 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_512 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15

...
---
name: test_vreg_1024_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w32
    ; CHECK: [[V_MOV_B32_e32_:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]]:vgpr_32 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub31

...
---
name: test_vreg_1024_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2

    undef %2.sub30:vreg_1024 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub30_sub31

...
---
name: test_vreg_1024_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3

    undef %2.sub29:vreg_1024 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub29_sub30_sub31

...
---
name: test_vreg_1024_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4

    undef %2.sub28:vreg_1024 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub28_sub29_sub30_sub31

...
---
name: test_vreg_1024_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160 = V_MOV_B32_e32 227, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_1024 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_1024 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5

    undef %2.sub27:vreg_1024 = V_MOV_B32_e32 227, implicit $exec
    %2.sub28:vreg_1024 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub27_sub28_sub29_sub30_sub31

...
---
name: test_vreg_1024_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192 = V_MOV_B32_e32 226, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192 = V_MOV_B32_e32 227, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_1024 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_1024 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_1024 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_1024 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6

    undef %2.sub26:vreg_1024 = V_MOV_B32_e32 226, implicit $exec
    %2.sub27:vreg_1024 = V_MOV_B32_e32 227, implicit $exec
    %2.sub28:vreg_1024 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub26_sub27_sub28_sub29_sub30_sub31

...
---
name: test_vreg_1024_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256 = V_MOV_B32_e32 224, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256 = V_MOV_B32_e32 225, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256 = V_MOV_B32_e32 226, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256 = V_MOV_B32_e32 227, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_1024 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_1024 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_1024 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_1024 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_1024 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_1024 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_1024 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_1024 = V_MOV_B32_e32 18, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8

    undef %2.sub24:vreg_1024 = V_MOV_B32_e32 224, implicit $exec
    %2.sub25:vreg_1024 = V_MOV_B32_e32 225, implicit $exec
    %2.sub26:vreg_1024 = V_MOV_B32_e32 226, implicit $exec
    %2.sub27:vreg_1024 = V_MOV_B32_e32 227, implicit $exec
    %2.sub28:vreg_1024 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31

...
---
name: test_vreg_1024_w512
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_w512
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_512 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_512 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_512 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_512 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_512 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_512 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_512 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_512 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub8:vreg_512 = V_MOV_B32_e32 8, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub9:vreg_512 = V_MOV_B32_e32 9, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub10:vreg_512 = V_MOV_B32_e32 10, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub11:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub12:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub13:vreg_512 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub14:vreg_512 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub15:vreg_512 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_512 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_512 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_512 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_512 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_512 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_512 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_512 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_512 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub8:vreg_512 = V_MOV_B32_e32 19, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub9:vreg_512 = V_MOV_B32_e32 110, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub10:vreg_512 = V_MOV_B32_e32 111, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub11:vreg_512 = V_MOV_B32_e32 112, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub12:vreg_512 = V_MOV_B32_e32 113, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub13:vreg_512 = V_MOV_B32_e32 114, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub14:vreg_512 = V_MOV_B32_e32 115, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub15:vreg_512 = V_MOV_B32_e32 116, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_512 = V_MOV_B32_e32 216, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_512 = V_MOV_B32_e32 217, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_512 = V_MOV_B32_e32 218, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_512 = V_MOV_B32_e32 219, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_512 = V_MOV_B32_e32 220, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_512 = V_MOV_B32_e32 221, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_512 = V_MOV_B32_e32 222, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_512 = V_MOV_B32_e32 223, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub8:vreg_512 = V_MOV_B32_e32 224, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub9:vreg_512 = V_MOV_B32_e32 225, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub10:vreg_512 = V_MOV_B32_e32 226, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub11:vreg_512 = V_MOV_B32_e32 227, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub12:vreg_512 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub13:vreg_512 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub14:vreg_512 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub15:vreg_512 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_1024 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_1024 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_1024 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_1024 = V_MOV_B32_e32 07, implicit $exec
    %0.sub8:vreg_1024 = V_MOV_B32_e32 08, implicit $exec
    %0.sub9:vreg_1024 = V_MOV_B32_e32 09, implicit $exec
    %0.sub10:vreg_1024 = V_MOV_B32_e32 010, implicit $exec
    %0.sub11:vreg_1024 = V_MOV_B32_e32 011, implicit $exec
    %0.sub12:vreg_1024 = V_MOV_B32_e32 012, implicit $exec
    %0.sub13:vreg_1024 = V_MOV_B32_e32 013, implicit $exec
    %0.sub14:vreg_1024 = V_MOV_B32_e32 014, implicit $exec
    %0.sub15:vreg_1024 = V_MOV_B32_e32 015, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15

    undef %1.sub1:vreg_1024 = V_MOV_B32_e32 11, implicit $exec
    %1.sub2:vreg_1024 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_1024 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_1024 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_1024 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_1024 = V_MOV_B32_e32 18, implicit $exec
    %1.sub9:vreg_1024 = V_MOV_B32_e32 19, implicit $exec
    %1.sub10:vreg_1024 = V_MOV_B32_e32 110, implicit $exec
    %1.sub11:vreg_1024 = V_MOV_B32_e32 111, implicit $exec
    %1.sub12:vreg_1024 = V_MOV_B32_e32 112, implicit $exec
    %1.sub13:vreg_1024 = V_MOV_B32_e32 113, implicit $exec
    %1.sub14:vreg_1024 = V_MOV_B32_e32 114, implicit $exec
    %1.sub15:vreg_1024 = V_MOV_B32_e32 115, implicit $exec
    %1.sub16:vreg_1024 = V_MOV_B32_e32 116, implicit $exec
    S_NOP 0, implicit %1.sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15_sub16

    undef %2.sub16:vreg_1024 = V_MOV_B32_e32 216, implicit $exec
    %2.sub17:vreg_1024 = V_MOV_B32_e32 217, implicit $exec
    %2.sub18:vreg_1024 = V_MOV_B32_e32 218, implicit $exec
    %2.sub19:vreg_1024 = V_MOV_B32_e32 219, implicit $exec
    %2.sub20:vreg_1024 = V_MOV_B32_e32 220, implicit $exec
    %2.sub21:vreg_1024 = V_MOV_B32_e32 221, implicit $exec
    %2.sub22:vreg_1024 = V_MOV_B32_e32 222, implicit $exec
    %2.sub23:vreg_1024 = V_MOV_B32_e32 223, implicit $exec
    %2.sub24:vreg_1024 = V_MOV_B32_e32 224, implicit $exec
    %2.sub25:vreg_1024 = V_MOV_B32_e32 225, implicit $exec
    %2.sub26:vreg_1024 = V_MOV_B32_e32 226, implicit $exec
    %2.sub27:vreg_1024 = V_MOV_B32_e32 227, implicit $exec
    %2.sub28:vreg_1024 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31

...
---
name: test_subregs_composition_vreg_1024_align2
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_subregs_composition_vreg_1024_align2
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0_sub1_sub2
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub2_sub3_sub4
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub0_sub1_sub2_sub3
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub2_sub3_sub4_sub5
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_224_align2 = V_MOV_B32_e32 32, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_224_align2 = V_MOV_B32_e32 34, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub0_sub1_sub2_sub3_sub4
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub2_sub3_sub4_sub5_sub6
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_3:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 42, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_3:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 44, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_3]].sub0_sub1_sub2_sub3_sub4_sub5
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_3]].sub2_sub3_sub4_sub5_sub6_sub7
    undef %1.sub2:vreg_1024_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub4:vreg_1024_align2 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4
    S_NOP 0, implicit %1.sub4_sub5_sub6

    undef %2.sub2:vreg_1024_align2 = V_MOV_B32_e32 22, implicit $exec
    %2.sub4:vreg_1024_align2 = V_MOV_B32_e32 24, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7

    undef %3.sub2:vreg_1024_align2 = V_MOV_B32_e32 32, implicit $exec
    %3.sub4:vreg_1024_align2 = V_MOV_B32_e32 34, implicit $exec
    S_NOP 0, implicit %3.sub2_sub3_sub4_sub5_sub6
    S_NOP 0, implicit %3.sub4_sub5_sub6_sub7_sub8

    undef %4.sub2:vreg_1024_align2 = V_MOV_B32_e32 42, implicit $exec
    %4.sub4:vreg_1024_align2 = V_MOV_B32_e32 44, implicit $exec
    S_NOP 0, implicit %4.sub2_sub3_sub4_sub5_sub6_sub7
    S_NOP 0, implicit %4.sub4_sub5_sub6_sub7_sub8_sub9

...
---
name: test_vreg_64_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_64_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    undef %0.sub0:vreg_64_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_64_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

...
---
name: test_vreg_96_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_96_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub2
    undef %0.sub0:vreg_96_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_96_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub2:vreg_96_align2 = V_MOV_B32_e32 22, implicit $exec
    S_NOP 0, implicit %2.sub2

...
# Skip test_vreg_96_align2_w64: the 64-bit subreg isn't fully supported for the regclass vreg_96_align2
---
name: test_vreg_128_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_128_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub3
    undef %0.sub0:vreg_128_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_128_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub3:vreg_128_align2 = V_MOV_B32_e32 23, implicit $exec
    S_NOP 0, implicit %2.sub3

...
---
name: test_vreg_128_align2_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_128_align2_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_128_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_128_align2 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:vreg_128_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_128_align2 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3

...
# Skip test_vreg_128_align2_w96: the 96-bit subreg isn't fully supported for the regclass vreg_128_align2
---
name: test_vreg_160_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_160_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub4
    undef %0.sub0:vreg_160_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_160_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub4:vreg_160_align2 = V_MOV_B32_e32 24, implicit $exec
    S_NOP 0, implicit %2.sub4

...
# Skip test_vreg_160_align2_w64: the 64-bit subreg isn't fully supported for the regclass vreg_160_align2
---
name: test_vreg_160_align2_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_160_align2_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_160_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_160_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_160_align2 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub2:vreg_160_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_160_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_160_align2 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4

...
# Skip test_vreg_160_align2_w128: the 128-bit subreg isn't fully supported for the regclass vreg_160_align2
---
name: test_vreg_192_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub5
    undef %0.sub0:vreg_192_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_192_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub5:vreg_192_align2 = V_MOV_B32_e32 25, implicit $exec
    S_NOP 0, implicit %2.sub5

...
---
name: test_vreg_192_align2_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_align2_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_192_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_192_align2 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:vreg_192_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_192_align2 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub4:vreg_192_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_192_align2 = V_MOV_B32_e32 25, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5

...
# Skip test_vreg_192_align2_w96: the 96-bit subreg isn't fully supported for the regclass vreg_192_align2
---
name: test_vreg_192_align2_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_192_align2_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_192_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_192_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_192_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_192_align2 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub2:vreg_192_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_192_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_192_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_192_align2 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5

...
# Skip test_vreg_192_align2_w160: the 160-bit subreg isn't fully supported for the regclass vreg_192_align2
---
name: test_vreg_224_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_224_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_224_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_224_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub6
    undef %0.sub0:vreg_224_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_224_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub6:vreg_224_align2 = V_MOV_B32_e32 26, implicit $exec
    S_NOP 0, implicit %2.sub6

...
# Skip test_vreg_224_align2_w64: the 64-bit subreg isn't fully supported for the regclass vreg_224_align2
---
name: test_vreg_224_align2_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_align2_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_224_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_224_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_224_align2 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub2:vreg_224_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_224_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_224_align2 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4

    undef %2.sub4:vreg_224_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_224_align2 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_224_align2 = V_MOV_B32_e32 26, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6

...
# Skip test_vreg_224_align2_w128: the 128-bit subreg isn't fully supported for the regclass vreg_224_align2
---
name: test_vreg_224_align2_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_224_align2_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_224_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_224_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_224_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_224_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_224_align2 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub2:vreg_224_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_224_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_224_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_224_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_224_align2 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6

...
# Skip test_vreg_224_align2_w192: the 192-bit subreg isn't fully supported for the regclass vreg_224_align2
---
name: test_vreg_256_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub7
    undef %0.sub0:vreg_256_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_256_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub7:vreg_256_align2 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub7

...
---
name: test_vreg_256_align2_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_align2_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256_align2 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:vreg_256_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_256_align2 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub6:vreg_256_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_256_align2 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7

...
# Skip test_vreg_256_align2_w96: the 96-bit subreg isn't fully supported for the regclass vreg_256_align2
---
name: test_vreg_256_align2_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_align2_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_256_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_256_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_256_align2 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub2:vreg_256_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_256_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_256_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_256_align2 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5

    undef %2.sub4:vreg_256_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_256_align2 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_256_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_256_align2 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7

...
# Skip test_vreg_256_align2_w160: the 160-bit subreg isn't fully supported for the regclass vreg_256_align2
---
name: test_vreg_256_align2_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_256_align2_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_256_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_256_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_256_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_256_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_256_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_256_align2 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub2:vreg_256_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_256_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_256_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_256_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_256_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_256_align2 = V_MOV_B32_e32 17, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7

...
---
name: test_vreg_288_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_288_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_288_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub8:vreg_288_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub8
    undef %0.sub0:vreg_288_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_288_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub8:vreg_288_align2 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub8

...
# Skip test_vreg_288_align2_w64: the 64-bit subreg isn't fully supported for the regclass vreg_288_align2
---
name: test_vreg_288_align2_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_align2_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_288_align2 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub2:vreg_288_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_288_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_288_align2 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4

    undef %2.sub6:vreg_288_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_288_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_288_align2 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8

...
# Skip test_vreg_288_align2_w128: the 128-bit subreg isn't fully supported for the regclass vreg_288_align2
---
name: test_vreg_288_align2_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_288_align2_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_288_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_288_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_288_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_288_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_288_align2 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub2:vreg_288_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_288_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_288_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_288_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_288_align2 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6

    undef %2.sub4:vreg_288_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_288_align2 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_288_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_288_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_288_align2 = V_MOV_B32_e32 28, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8

...
# Skip test_vreg_288_align2_w192: the 192-bit subreg isn't fully supported for the regclass vreg_288_align2
# Skip test_vreg_288_align2_w256: the 256-bit subreg isn't fully supported for the regclass vreg_288_align2
---
name: test_vreg_320_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_320_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_320_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub9:vreg_320_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub9
    undef %0.sub0:vreg_320_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_320_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub9:vreg_320_align2 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub9

...
---
name: test_vreg_320_align2_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_align2_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320_align2 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:vreg_320_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320_align2 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub8:vreg_320_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320_align2 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9

...
# Skip test_vreg_320_align2_w96: the 96-bit subreg isn't fully supported for the regclass vreg_320_align2
---
name: test_vreg_320_align2_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_align2_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_320_align2 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub2:vreg_320_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_320_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_320_align2 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5

    undef %2.sub6:vreg_320_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_320_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_320_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320_align2 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8_sub9

...
# Skip test_vreg_320_align2_w160: the 160-bit subreg isn't fully supported for the regclass vreg_320_align2
---
name: test_vreg_320_align2_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_align2_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_320_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_320_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_320_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_320_align2 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub2:vreg_320_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_320_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_320_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_320_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_320_align2 = V_MOV_B32_e32 17, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7

    undef %2.sub4:vreg_320_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_320_align2 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_320_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_320_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_320_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_320_align2 = V_MOV_B32_e32 29, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8_sub9

...
---
name: test_vreg_320_align2_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_320_align2_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 19, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    undef %0.sub0:vreg_320_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_320_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_320_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_320_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_320_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_320_align2 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_320_align2 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_320_align2 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub2:vreg_320_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_320_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_320_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_320_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_320_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_320_align2 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_320_align2 = V_MOV_B32_e32 18, implicit $exec
    %1.sub9:vreg_320_align2 = V_MOV_B32_e32 19, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9

...
---
name: test_vreg_352_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_352_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_352_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub10:vreg_352_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub10
    undef %0.sub0:vreg_352_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_352_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub10:vreg_352_align2 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub10

...
# Skip test_vreg_352_align2_w64: the 64-bit subreg isn't fully supported for the regclass vreg_352_align2
---
name: test_vreg_352_align2_w96
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_align2_w96
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_96_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_96_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_96_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_352_align2 = V_MOV_B32_e32 02, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2

    undef %1.sub2:vreg_352_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_352_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_352_align2 = V_MOV_B32_e32 14, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4

    undef %2.sub8:vreg_352_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_352_align2 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352_align2 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9_sub10

...
# Skip test_vreg_352_align2_w128: the 128-bit subreg isn't fully supported for the regclass vreg_352_align2
---
name: test_vreg_352_align2_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_352_align2_w160
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_160_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_160_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_160_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_160_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_160_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_352_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_352_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_352_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_352_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_352_align2 = V_MOV_B32_e32 04, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub2:vreg_352_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_352_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_352_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_352_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_352_align2 = V_MOV_B32_e32 16, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6

    undef %2.sub6:vreg_352_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_352_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_352_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_352_align2 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_352_align2 = V_MOV_B32_e32 210, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8_sub9_sub10

...
# Skip test_vreg_352_align2_w192: the 192-bit subreg isn't fully supported for the regclass vreg_352_align2
# Skip test_vreg_352_align2_w256: the 256-bit subreg isn't fully supported for the regclass vreg_352_align2
---
name: test_vreg_384_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_384_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_384_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub11:vreg_384_align2 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub11
    undef %0.sub0:vreg_384_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_384_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub11:vreg_384_align2 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub11

...
---
name: test_vreg_384_align2_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_align2_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 110, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 111, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384_align2 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub10:vreg_384_align2 = V_MOV_B32_e32 110, implicit $exec
    %1.sub11:vreg_384_align2 = V_MOV_B32_e32 111, implicit $exec
    S_NOP 0, implicit %1.sub10_sub11

    undef %2.sub2:vreg_384_align2 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_384_align2 = V_MOV_B32_e32 23, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3

...
# Skip test_vreg_384_align2_w96: the 96-bit subreg isn't fully supported for the regclass vreg_384_align2
---
name: test_vreg_384_align2_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_align2_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_384_align2 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub2:vreg_384_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_384_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_384_align2 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5

    undef %2.sub8:vreg_384_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_384_align2 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384_align2 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384_align2 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9_sub10_sub11

...
# Skip test_vreg_384_align2_w160: the 160-bit subreg isn't fully supported for the regclass vreg_384_align2
---
name: test_vreg_384_align2_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_align2_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_384_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_384_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_384_align2 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub2:vreg_384_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_384_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_384_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_384_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_384_align2 = V_MOV_B32_e32 17, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7

    undef %2.sub6:vreg_384_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_384_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_384_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_384_align2 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384_align2 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384_align2 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub6_sub7_sub8_sub9_sub10_sub11

...
---
name: test_vreg_384_align2_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_384_align2_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 19, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_384_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_384_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_384_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_384_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_384_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_384_align2 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_384_align2 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_384_align2 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub2:vreg_384_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_384_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_384_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_384_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_384_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_384_align2 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_384_align2 = V_MOV_B32_e32 18, implicit $exec
    %1.sub9:vreg_384_align2 = V_MOV_B32_e32 19, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9

    undef %2.sub4:vreg_384_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_384_align2 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_384_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_384_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_384_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_384_align2 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_384_align2 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_384_align2 = V_MOV_B32_e32 211, implicit $exec
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11

...
---
name: test_vreg_512_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_512_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_512_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub15:vreg_512_align2 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub15
    undef %0.sub0:vreg_512_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_512_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub15:vreg_512_align2 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub15

...
---
name: test_vreg_512_align2_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_align2_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 114, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 115, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512_align2 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub14:vreg_512_align2 = V_MOV_B32_e32 114, implicit $exec
    %1.sub15:vreg_512_align2 = V_MOV_B32_e32 115, implicit $exec
    S_NOP 0, implicit %1.sub14_sub15

    undef %2.sub2:vreg_512_align2 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_512_align2 = V_MOV_B32_e32 23, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3

...
# Skip test_vreg_512_align2_w96: the 96-bit subreg isn't fully supported for the regclass vreg_512_align2
---
name: test_vreg_512_align2_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_align2_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 112, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 113, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 114, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 115, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_512_align2 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub12:vreg_512_align2 = V_MOV_B32_e32 112, implicit $exec
    %1.sub13:vreg_512_align2 = V_MOV_B32_e32 113, implicit $exec
    %1.sub14:vreg_512_align2 = V_MOV_B32_e32 114, implicit $exec
    %1.sub15:vreg_512_align2 = V_MOV_B32_e32 115, implicit $exec
    S_NOP 0, implicit %1.sub12_sub13_sub14_sub15

    undef %2.sub2:vreg_512_align2 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_512_align2 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_512_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_512_align2 = V_MOV_B32_e32 25, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5

...
# Skip test_vreg_512_align2_w160: the 160-bit subreg isn't fully supported for the regclass vreg_512_align2
---
name: test_vreg_512_align2_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_align2_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 110, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 111, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 112, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 113, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 114, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 115, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_512_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_512_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_512_align2 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub10:vreg_512_align2 = V_MOV_B32_e32 110, implicit $exec
    %1.sub11:vreg_512_align2 = V_MOV_B32_e32 111, implicit $exec
    %1.sub12:vreg_512_align2 = V_MOV_B32_e32 112, implicit $exec
    %1.sub13:vreg_512_align2 = V_MOV_B32_e32 113, implicit $exec
    %1.sub14:vreg_512_align2 = V_MOV_B32_e32 114, implicit $exec
    %1.sub15:vreg_512_align2 = V_MOV_B32_e32 115, implicit $exec
    S_NOP 0, implicit %1.sub10_sub11_sub12_sub13_sub14_sub15

    undef %2.sub2:vreg_512_align2 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_512_align2 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_512_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_512_align2 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_512_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_512_align2 = V_MOV_B32_e32 27, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5_sub6_sub7

...
---
name: test_vreg_512_align2_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_512_align2_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 19, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 212, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 213, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_512_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_512_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_512_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_512_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_512_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_512_align2 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_512_align2 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_512_align2 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub2:vreg_512_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_512_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_512_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_512_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_512_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_512_align2 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_512_align2 = V_MOV_B32_e32 18, implicit $exec
    %1.sub9:vreg_512_align2 = V_MOV_B32_e32 19, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9

    undef %2.sub8:vreg_512_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_512_align2 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_512_align2 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_512_align2 = V_MOV_B32_e32 211, implicit $exec
    %2.sub12:vreg_512_align2 = V_MOV_B32_e32 212, implicit $exec
    %2.sub13:vreg_512_align2 = V_MOV_B32_e32 213, implicit $exec
    %2.sub14:vreg_512_align2 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_512_align2 = V_MOV_B32_e32 215, implicit $exec
    S_NOP 0, implicit %2.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15

...
---
name: test_vreg_1024_align2_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_align2_w32
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_1024_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]].sub0
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_1024_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]].sub1
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub31:vreg_1024_align2 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]].sub31
    undef %0.sub0:vreg_1024_align2 = V_MOV_B32_e32 00, implicit $exec
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:vreg_1024_align2 = V_MOV_B32_e32 11, implicit $exec
    S_NOP 0, implicit %1.sub1

    undef %2.sub31:vreg_1024_align2 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub31

...
---
name: test_vreg_1024_align2_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_align2_w64
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_64_align2 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_64_align2 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024_align2 = V_MOV_B32_e32 01, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:vreg_1024_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024_align2 = V_MOV_B32_e32 13, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub30:vreg_1024_align2 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024_align2 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub30_sub31

...
# Skip test_vreg_1024_align2_w96: the 96-bit subreg isn't fully supported for the regclass vreg_1024_align2
---
name: test_vreg_1024_align2_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_align2_w128
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_128_align2 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_128_align2 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_128_align2 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_128_align2 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024_align2 = V_MOV_B32_e32 03, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub2:vreg_1024_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_1024_align2 = V_MOV_B32_e32 15, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5

    undef %2.sub28:vreg_1024_align2 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024_align2 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024_align2 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024_align2 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub28_sub29_sub30_sub31

...
# Skip test_vreg_1024_align2_w160: the 160-bit subreg isn't fully supported for the regclass vreg_1024_align2
---
name: test_vreg_1024_align2_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_align2_w192
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_192_align2 = V_MOV_B32_e32 226, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_192_align2 = V_MOV_B32_e32 227, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_192_align2 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_192_align2 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_192_align2 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_192_align2 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_1024_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_1024_align2 = V_MOV_B32_e32 05, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub2:vreg_1024_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_1024_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_1024_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_1024_align2 = V_MOV_B32_e32 17, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7

    undef %2.sub26:vreg_1024_align2 = V_MOV_B32_e32 226, implicit $exec
    %2.sub27:vreg_1024_align2 = V_MOV_B32_e32 227, implicit $exec
    %2.sub28:vreg_1024_align2 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024_align2 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024_align2 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024_align2 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub26_sub27_sub28_sub29_sub30_sub31

...
---
name: test_vreg_1024_align2_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_align2_w256
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 16, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 17, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 18, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 19, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_256_align2 = V_MOV_B32_e32 224, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_256_align2 = V_MOV_B32_e32 225, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_256_align2 = V_MOV_B32_e32 226, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_256_align2 = V_MOV_B32_e32 227, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_256_align2 = V_MOV_B32_e32 228, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_256_align2 = V_MOV_B32_e32 229, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_256_align2 = V_MOV_B32_e32 230, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_256_align2 = V_MOV_B32_e32 231, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_1024_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_1024_align2 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_1024_align2 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_1024_align2 = V_MOV_B32_e32 07, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub2:vreg_1024_align2 = V_MOV_B32_e32 12, implicit $exec
    %1.sub3:vreg_1024_align2 = V_MOV_B32_e32 13, implicit $exec
    %1.sub4:vreg_1024_align2 = V_MOV_B32_e32 14, implicit $exec
    %1.sub5:vreg_1024_align2 = V_MOV_B32_e32 15, implicit $exec
    %1.sub6:vreg_1024_align2 = V_MOV_B32_e32 16, implicit $exec
    %1.sub7:vreg_1024_align2 = V_MOV_B32_e32 17, implicit $exec
    %1.sub8:vreg_1024_align2 = V_MOV_B32_e32 18, implicit $exec
    %1.sub9:vreg_1024_align2 = V_MOV_B32_e32 19, implicit $exec
    S_NOP 0, implicit %1.sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9

    undef %2.sub24:vreg_1024_align2 = V_MOV_B32_e32 224, implicit $exec
    %2.sub25:vreg_1024_align2 = V_MOV_B32_e32 225, implicit $exec
    %2.sub26:vreg_1024_align2 = V_MOV_B32_e32 226, implicit $exec
    %2.sub27:vreg_1024_align2 = V_MOV_B32_e32 227, implicit $exec
    %2.sub28:vreg_1024_align2 = V_MOV_B32_e32 228, implicit $exec
    %2.sub29:vreg_1024_align2 = V_MOV_B32_e32 229, implicit $exec
    %2.sub30:vreg_1024_align2 = V_MOV_B32_e32 230, implicit $exec
    %2.sub31:vreg_1024_align2 = V_MOV_B32_e32 231, implicit $exec
    S_NOP 0, implicit %2.sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31

...
---
name: test_vreg_1024_align2_w512
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_vreg_1024_align2_w512
    ; CHECK: undef [[V_MOV_B32_e32_:%[0-9]+]].sub0:vreg_512_align2 = V_MOV_B32_e32 0, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub1:vreg_512_align2 = V_MOV_B32_e32 1, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub2:vreg_512_align2 = V_MOV_B32_e32 2, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub3:vreg_512_align2 = V_MOV_B32_e32 3, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub4:vreg_512_align2 = V_MOV_B32_e32 4, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub5:vreg_512_align2 = V_MOV_B32_e32 5, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub6:vreg_512_align2 = V_MOV_B32_e32 6, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub7:vreg_512_align2 = V_MOV_B32_e32 7, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub8:vreg_512_align2 = V_MOV_B32_e32 8, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub9:vreg_512_align2 = V_MOV_B32_e32 9, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub10:vreg_512_align2 = V_MOV_B32_e32 10, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub11:vreg_512_align2 = V_MOV_B32_e32 11, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub12:vreg_512_align2 = V_MOV_B32_e32 12, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub13:vreg_512_align2 = V_MOV_B32_e32 13, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub14:vreg_512_align2 = V_MOV_B32_e32 14, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_:%[0-9]+]].sub15:vreg_512_align2 = V_MOV_B32_e32 15, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_1:%[0-9]+]].sub0:vreg_512_align2 = V_MOV_B32_e32 116, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub1:vreg_512_align2 = V_MOV_B32_e32 117, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub2:vreg_512_align2 = V_MOV_B32_e32 118, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub3:vreg_512_align2 = V_MOV_B32_e32 119, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub4:vreg_512_align2 = V_MOV_B32_e32 120, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub5:vreg_512_align2 = V_MOV_B32_e32 121, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub6:vreg_512_align2 = V_MOV_B32_e32 122, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub7:vreg_512_align2 = V_MOV_B32_e32 123, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub8:vreg_512_align2 = V_MOV_B32_e32 124, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub9:vreg_512_align2 = V_MOV_B32_e32 125, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub10:vreg_512_align2 = V_MOV_B32_e32 126, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub11:vreg_512_align2 = V_MOV_B32_e32 127, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub12:vreg_512_align2 = V_MOV_B32_e32 128, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub13:vreg_512_align2 = V_MOV_B32_e32 129, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub14:vreg_512_align2 = V_MOV_B32_e32 130, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_1:%[0-9]+]].sub15:vreg_512_align2 = V_MOV_B32_e32 131, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_1]]
    ; CHECK-NEXT: undef [[V_MOV_B32_e32_2:%[0-9]+]].sub0:vreg_512_align2 = V_MOV_B32_e32 22, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub1:vreg_512_align2 = V_MOV_B32_e32 23, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub2:vreg_512_align2 = V_MOV_B32_e32 24, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub3:vreg_512_align2 = V_MOV_B32_e32 25, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub4:vreg_512_align2 = V_MOV_B32_e32 26, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub5:vreg_512_align2 = V_MOV_B32_e32 27, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub6:vreg_512_align2 = V_MOV_B32_e32 28, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub7:vreg_512_align2 = V_MOV_B32_e32 29, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub8:vreg_512_align2 = V_MOV_B32_e32 210, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub9:vreg_512_align2 = V_MOV_B32_e32 211, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub10:vreg_512_align2 = V_MOV_B32_e32 212, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub11:vreg_512_align2 = V_MOV_B32_e32 213, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub12:vreg_512_align2 = V_MOV_B32_e32 214, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub13:vreg_512_align2 = V_MOV_B32_e32 215, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub14:vreg_512_align2 = V_MOV_B32_e32 216, implicit $exec
    ; CHECK-NEXT: [[V_MOV_B32_e32_2:%[0-9]+]].sub15:vreg_512_align2 = V_MOV_B32_e32 217, implicit $exec
    ; CHECK-NEXT: S_NOP 0, implicit [[V_MOV_B32_e32_2]]
    undef %0.sub0:vreg_1024_align2 = V_MOV_B32_e32 00, implicit $exec
    %0.sub1:vreg_1024_align2 = V_MOV_B32_e32 01, implicit $exec
    %0.sub2:vreg_1024_align2 = V_MOV_B32_e32 02, implicit $exec
    %0.sub3:vreg_1024_align2 = V_MOV_B32_e32 03, implicit $exec
    %0.sub4:vreg_1024_align2 = V_MOV_B32_e32 04, implicit $exec
    %0.sub5:vreg_1024_align2 = V_MOV_B32_e32 05, implicit $exec
    %0.sub6:vreg_1024_align2 = V_MOV_B32_e32 06, implicit $exec
    %0.sub7:vreg_1024_align2 = V_MOV_B32_e32 07, implicit $exec
    %0.sub8:vreg_1024_align2 = V_MOV_B32_e32 08, implicit $exec
    %0.sub9:vreg_1024_align2 = V_MOV_B32_e32 09, implicit $exec
    %0.sub10:vreg_1024_align2 = V_MOV_B32_e32 010, implicit $exec
    %0.sub11:vreg_1024_align2 = V_MOV_B32_e32 011, implicit $exec
    %0.sub12:vreg_1024_align2 = V_MOV_B32_e32 012, implicit $exec
    %0.sub13:vreg_1024_align2 = V_MOV_B32_e32 013, implicit $exec
    %0.sub14:vreg_1024_align2 = V_MOV_B32_e32 014, implicit $exec
    %0.sub15:vreg_1024_align2 = V_MOV_B32_e32 015, implicit $exec
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15

    undef %1.sub16:vreg_1024_align2 = V_MOV_B32_e32 116, implicit $exec
    %1.sub17:vreg_1024_align2 = V_MOV_B32_e32 117, implicit $exec
    %1.sub18:vreg_1024_align2 = V_MOV_B32_e32 118, implicit $exec
    %1.sub19:vreg_1024_align2 = V_MOV_B32_e32 119, implicit $exec
    %1.sub20:vreg_1024_align2 = V_MOV_B32_e32 120, implicit $exec
    %1.sub21:vreg_1024_align2 = V_MOV_B32_e32 121, implicit $exec
    %1.sub22:vreg_1024_align2 = V_MOV_B32_e32 122, implicit $exec
    %1.sub23:vreg_1024_align2 = V_MOV_B32_e32 123, implicit $exec
    %1.sub24:vreg_1024_align2 = V_MOV_B32_e32 124, implicit $exec
    %1.sub25:vreg_1024_align2 = V_MOV_B32_e32 125, implicit $exec
    %1.sub26:vreg_1024_align2 = V_MOV_B32_e32 126, implicit $exec
    %1.sub27:vreg_1024_align2 = V_MOV_B32_e32 127, implicit $exec
    %1.sub28:vreg_1024_align2 = V_MOV_B32_e32 128, implicit $exec
    %1.sub29:vreg_1024_align2 = V_MOV_B32_e32 129, implicit $exec
    %1.sub30:vreg_1024_align2 = V_MOV_B32_e32 130, implicit $exec
    %1.sub31:vreg_1024_align2 = V_MOV_B32_e32 131, implicit $exec
    S_NOP 0, implicit %1.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31

    undef %2.sub2:vreg_1024_align2 = V_MOV_B32_e32 22, implicit $exec
    %2.sub3:vreg_1024_align2 = V_MOV_B32_e32 23, implicit $exec
    %2.sub4:vreg_1024_align2 = V_MOV_B32_e32 24, implicit $exec
    %2.sub5:vreg_1024_align2 = V_MOV_B32_e32 25, implicit $exec
    %2.sub6:vreg_1024_align2 = V_MOV_B32_e32 26, implicit $exec
    %2.sub7:vreg_1024_align2 = V_MOV_B32_e32 27, implicit $exec
    %2.sub8:vreg_1024_align2 = V_MOV_B32_e32 28, implicit $exec
    %2.sub9:vreg_1024_align2 = V_MOV_B32_e32 29, implicit $exec
    %2.sub10:vreg_1024_align2 = V_MOV_B32_e32 210, implicit $exec
    %2.sub11:vreg_1024_align2 = V_MOV_B32_e32 211, implicit $exec
    %2.sub12:vreg_1024_align2 = V_MOV_B32_e32 212, implicit $exec
    %2.sub13:vreg_1024_align2 = V_MOV_B32_e32 213, implicit $exec
    %2.sub14:vreg_1024_align2 = V_MOV_B32_e32 214, implicit $exec
    %2.sub15:vreg_1024_align2 = V_MOV_B32_e32 215, implicit $exec
    %2.sub16:vreg_1024_align2 = V_MOV_B32_e32 216, implicit $exec
    %2.sub17:vreg_1024_align2 = V_MOV_B32_e32 217, implicit $exec
    S_NOP 0, implicit %2.sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15_sub16_sub17

...
---
name: test_subregs_composition_sgpr_1024
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_subregs_composition_sgpr_1024
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_288 = S_MOV_B32 34
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub4:sgpr_288 = S_MOV_B32 38
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]].sub0_sub1_sub2_sub3_sub4
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]].sub4_sub5_sub6_sub7_sub8
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_320 = S_MOV_B32 44
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub4:sgpr_320 = S_MOV_B32 48
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]].sub0_sub1_sub2_sub3_sub4_sub5
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]].sub4_sub5_sub6_sub7_sub8_sub9
    undef %3.sub4:sgpr_1024 = S_MOV_B32 34
    %3.sub8:sgpr_1024 = S_MOV_B32 38
    S_NOP 0, implicit %3.sub4_sub5_sub6_sub7_sub8
    S_NOP 0, implicit %3.sub8_sub9_sub10_sub11_sub12

    undef %4.sub4:sgpr_1024 = S_MOV_B32 44
    %4.sub8:sgpr_1024 = S_MOV_B32 48
    S_NOP 0, implicit %4.sub4_sub5_sub6_sub7_sub8_sub9
    S_NOP 0, implicit %4.sub8_sub9_sub10_sub11_sub12_sub13

...
---
name: test_sgpr_64_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_64_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    undef %0.sub0:sgpr_64 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_64 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

...
---
name: test_sgpr_96_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_96_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 22
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_96 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_96 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub2:sgpr_96 = S_MOV_B32 22
    S_NOP 0, implicit %2.sub2

...
# Skip test_sgpr_96_w64: the 64-bit subreg isn't fully supported for the regclass sgpr_96
---
name: test_sgpr_128_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_128_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 23
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_128 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_128 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub3:sgpr_128 = S_MOV_B32 23
    S_NOP 0, implicit %2.sub3

...
---
name: test_sgpr_128_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_128_w64
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 1
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 12
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 13
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    undef %0.sub0:sgpr_128 = S_MOV_B32 00
    %0.sub1:sgpr_128 = S_MOV_B32 01
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:sgpr_128 = S_MOV_B32 12
    %1.sub3:sgpr_128 = S_MOV_B32 13
    S_NOP 0, implicit %1.sub2_sub3

...
# Skip test_sgpr_128_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_128
---
name: test_sgpr_160_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_160_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 24
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_160 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_160 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub4:sgpr_160 = S_MOV_B32 24
    S_NOP 0, implicit %2.sub4

...
# Skip test_sgpr_160_w64: the 64-bit subreg isn't fully supported for the regclass sgpr_160
# Skip test_sgpr_160_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_160
# Skip test_sgpr_160_w128: the 128-bit subreg isn't fully supported for the regclass sgpr_160
---
name: test_sgpr_192_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_192_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 25
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_192 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_192 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub5:sgpr_192 = S_MOV_B32 25
    S_NOP 0, implicit %2.sub5

...
---
name: test_sgpr_192_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_192_w64
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 1
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 12
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 13
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 24
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 25
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_192 = S_MOV_B32 00
    %0.sub1:sgpr_192 = S_MOV_B32 01
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:sgpr_192 = S_MOV_B32 12
    %1.sub3:sgpr_192 = S_MOV_B32 13
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub4:sgpr_192 = S_MOV_B32 24
    %2.sub5:sgpr_192 = S_MOV_B32 25
    S_NOP 0, implicit %2.sub4_sub5

...
# Skip test_sgpr_192_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_192
# Skip test_sgpr_192_w128: the 128-bit subreg isn't fully supported for the regclass sgpr_192
# Skip test_sgpr_192_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_192
---
name: test_sgpr_224_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_224_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 26
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_224 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_224 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub6:sgpr_224 = S_MOV_B32 26
    S_NOP 0, implicit %2.sub6

...
# Skip test_sgpr_224_w64: the 64-bit subreg isn't fully supported for the regclass sgpr_224
# Skip test_sgpr_224_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_224
# Skip test_sgpr_224_w128: the 128-bit subreg isn't fully supported for the regclass sgpr_224
# Skip test_sgpr_224_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_224
# Skip test_sgpr_224_w192: the 192-bit subreg isn't fully supported for the regclass sgpr_224
---
name: test_sgpr_256_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_256_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 27
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_256 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_256 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub7:sgpr_256 = S_MOV_B32 27
    S_NOP 0, implicit %2.sub7

...
---
name: test_sgpr_256_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_256_w64
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 1
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 12
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 13
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 26
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 27
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_256 = S_MOV_B32 00
    %0.sub1:sgpr_256 = S_MOV_B32 01
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:sgpr_256 = S_MOV_B32 12
    %1.sub3:sgpr_256 = S_MOV_B32 13
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub6:sgpr_256 = S_MOV_B32 26
    %2.sub7:sgpr_256 = S_MOV_B32 27
    S_NOP 0, implicit %2.sub6_sub7

...
# Skip test_sgpr_256_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_256
---
name: test_sgpr_256_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_256_w128
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 3
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 14
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 15
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 16
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 17
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    undef %0.sub0:sgpr_256 = S_MOV_B32 00
    %0.sub1:sgpr_256 = S_MOV_B32 01
    %0.sub2:sgpr_256 = S_MOV_B32 02
    %0.sub3:sgpr_256 = S_MOV_B32 03
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub4:sgpr_256 = S_MOV_B32 14
    %1.sub5:sgpr_256 = S_MOV_B32 15
    %1.sub6:sgpr_256 = S_MOV_B32 16
    %1.sub7:sgpr_256 = S_MOV_B32 17
    S_NOP 0, implicit %1.sub4_sub5_sub6_sub7

...
# Skip test_sgpr_256_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_256
# Skip test_sgpr_256_w192: the 192-bit subreg isn't fully supported for the regclass sgpr_256
---
name: test_sgpr_288_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_288_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 28
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_288 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_288 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub8:sgpr_288 = S_MOV_B32 28
    S_NOP 0, implicit %2.sub8

...
# Skip test_sgpr_288_w64: the 64-bit subreg isn't fully supported for the regclass sgpr_288
# Skip test_sgpr_288_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_288
# Skip test_sgpr_288_w128: the 128-bit subreg isn't fully supported for the regclass sgpr_288
---
name: test_sgpr_288_w160
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_288_w160
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_160 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_160 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_160 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_160 = S_MOV_B32 3
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub4:sgpr_160 = S_MOV_B32 4
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_160 = S_MOV_B32 14
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_160 = S_MOV_B32 15
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_160 = S_MOV_B32 16
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_160 = S_MOV_B32 17
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub4:sgpr_160 = S_MOV_B32 18
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    undef %0.sub0:sgpr_288 = S_MOV_B32 00
    %0.sub1:sgpr_288 = S_MOV_B32 01
    %0.sub2:sgpr_288 = S_MOV_B32 02
    %0.sub3:sgpr_288 = S_MOV_B32 03
    %0.sub4:sgpr_288 = S_MOV_B32 04
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4

    undef %1.sub4:sgpr_288 = S_MOV_B32 14
    %1.sub5:sgpr_288 = S_MOV_B32 15
    %1.sub6:sgpr_288 = S_MOV_B32 16
    %1.sub7:sgpr_288 = S_MOV_B32 17
    %1.sub8:sgpr_288 = S_MOV_B32 18
    S_NOP 0, implicit %1.sub4_sub5_sub6_sub7_sub8

...
# Skip test_sgpr_288_w192: the 192-bit subreg isn't fully supported for the regclass sgpr_288
# Skip test_sgpr_288_w256: the 256-bit subreg isn't fully supported for the regclass sgpr_288
---
name: test_sgpr_320_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_320_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 29
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_320 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_320 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub9:sgpr_320 = S_MOV_B32 29
    S_NOP 0, implicit %2.sub9

...
---
name: test_sgpr_320_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_320_w64
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 1
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 12
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 13
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 28
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 29
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_320 = S_MOV_B32 00
    %0.sub1:sgpr_320 = S_MOV_B32 01
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:sgpr_320 = S_MOV_B32 12
    %1.sub3:sgpr_320 = S_MOV_B32 13
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub8:sgpr_320 = S_MOV_B32 28
    %2.sub9:sgpr_320 = S_MOV_B32 29
    S_NOP 0, implicit %2.sub8_sub9

...
# Skip test_sgpr_320_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_320
# Skip test_sgpr_320_w128: the 128-bit subreg isn't fully supported for the regclass sgpr_320
# Skip test_sgpr_320_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_320
---
name: test_sgpr_320_w192
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_320_w192
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_192 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_192 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_192 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_192 = S_MOV_B32 3
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub4:sgpr_192 = S_MOV_B32 4
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub5:sgpr_192 = S_MOV_B32 5
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_192 = S_MOV_B32 14
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_192 = S_MOV_B32 15
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_192 = S_MOV_B32 16
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_192 = S_MOV_B32 17
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub4:sgpr_192 = S_MOV_B32 18
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub5:sgpr_192 = S_MOV_B32 19
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    undef %0.sub0:sgpr_320 = S_MOV_B32 00
    %0.sub1:sgpr_320 = S_MOV_B32 01
    %0.sub2:sgpr_320 = S_MOV_B32 02
    %0.sub3:sgpr_320 = S_MOV_B32 03
    %0.sub4:sgpr_320 = S_MOV_B32 04
    %0.sub5:sgpr_320 = S_MOV_B32 05
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5

    undef %1.sub4:sgpr_320 = S_MOV_B32 14
    %1.sub5:sgpr_320 = S_MOV_B32 15
    %1.sub6:sgpr_320 = S_MOV_B32 16
    %1.sub7:sgpr_320 = S_MOV_B32 17
    %1.sub8:sgpr_320 = S_MOV_B32 18
    %1.sub9:sgpr_320 = S_MOV_B32 19
    S_NOP 0, implicit %1.sub4_sub5_sub6_sub7_sub8_sub9

...
# Skip test_sgpr_320_w256: the 256-bit subreg isn't fully supported for the regclass sgpr_320
---
name: test_sgpr_352_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_352_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 210
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_352 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_352 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub10:sgpr_352 = S_MOV_B32 210
    S_NOP 0, implicit %2.sub10

...
# Skip test_sgpr_352_w64: the 64-bit subreg isn't fully supported for the regclass sgpr_352
# Skip test_sgpr_352_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_352
# Skip test_sgpr_352_w128: the 128-bit subreg isn't fully supported for the regclass sgpr_352
# Skip test_sgpr_352_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_352
# Skip test_sgpr_352_w192: the 192-bit subreg isn't fully supported for the regclass sgpr_352
# Skip test_sgpr_352_w256: the 256-bit subreg isn't fully supported for the regclass sgpr_352
---
name: test_sgpr_384_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_384_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 211
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_384 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_384 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub11:sgpr_384 = S_MOV_B32 211
    S_NOP 0, implicit %2.sub11

...
---
name: test_sgpr_384_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_384_w64
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 1
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 110
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 111
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 22
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 23
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_384 = S_MOV_B32 00
    %0.sub1:sgpr_384 = S_MOV_B32 01
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub10:sgpr_384 = S_MOV_B32 110
    %1.sub11:sgpr_384 = S_MOV_B32 111
    S_NOP 0, implicit %1.sub10_sub11

    undef %2.sub2:sgpr_384 = S_MOV_B32 22
    %2.sub3:sgpr_384 = S_MOV_B32 23
    S_NOP 0, implicit %2.sub2_sub3

...
# Skip test_sgpr_384_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_384
---
name: test_sgpr_384_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_384_w128
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 3
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 14
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 15
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 16
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 17
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 28
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 29
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 210
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 211
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_384 = S_MOV_B32 00
    %0.sub1:sgpr_384 = S_MOV_B32 01
    %0.sub2:sgpr_384 = S_MOV_B32 02
    %0.sub3:sgpr_384 = S_MOV_B32 03
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub4:sgpr_384 = S_MOV_B32 14
    %1.sub5:sgpr_384 = S_MOV_B32 15
    %1.sub6:sgpr_384 = S_MOV_B32 16
    %1.sub7:sgpr_384 = S_MOV_B32 17
    S_NOP 0, implicit %1.sub4_sub5_sub6_sub7

    undef %2.sub8:sgpr_384 = S_MOV_B32 28
    %2.sub9:sgpr_384 = S_MOV_B32 29
    %2.sub10:sgpr_384 = S_MOV_B32 210
    %2.sub11:sgpr_384 = S_MOV_B32 211
    S_NOP 0, implicit %2.sub8_sub9_sub10_sub11

...
# Skip test_sgpr_384_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_384
# Skip test_sgpr_384_w192: the 192-bit subreg isn't fully supported for the regclass sgpr_384
---
name: test_sgpr_384_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_384_w256
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 3
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 4
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 5
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 6
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 7
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 14
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 15
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 16
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 17
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 18
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 19
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 110
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 111
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    undef %0.sub0:sgpr_384 = S_MOV_B32 00
    %0.sub1:sgpr_384 = S_MOV_B32 01
    %0.sub2:sgpr_384 = S_MOV_B32 02
    %0.sub3:sgpr_384 = S_MOV_B32 03
    %0.sub4:sgpr_384 = S_MOV_B32 04
    %0.sub5:sgpr_384 = S_MOV_B32 05
    %0.sub6:sgpr_384 = S_MOV_B32 06
    %0.sub7:sgpr_384 = S_MOV_B32 07
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub4:sgpr_384 = S_MOV_B32 14
    %1.sub5:sgpr_384 = S_MOV_B32 15
    %1.sub6:sgpr_384 = S_MOV_B32 16
    %1.sub7:sgpr_384 = S_MOV_B32 17
    %1.sub8:sgpr_384 = S_MOV_B32 18
    %1.sub9:sgpr_384 = S_MOV_B32 19
    %1.sub10:sgpr_384 = S_MOV_B32 110
    %1.sub11:sgpr_384 = S_MOV_B32 111
    S_NOP 0, implicit %1.sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11

...
---
name: test_sgpr_512_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_512_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 215
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_512 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_512 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub15:sgpr_512 = S_MOV_B32 215
    S_NOP 0, implicit %2.sub15

...
---
name: test_sgpr_512_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_512_w64
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 1
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 114
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 115
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 22
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 23
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_512 = S_MOV_B32 00
    %0.sub1:sgpr_512 = S_MOV_B32 01
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub14:sgpr_512 = S_MOV_B32 114
    %1.sub15:sgpr_512 = S_MOV_B32 115
    S_NOP 0, implicit %1.sub14_sub15

    undef %2.sub2:sgpr_512 = S_MOV_B32 22
    %2.sub3:sgpr_512 = S_MOV_B32 23
    S_NOP 0, implicit %2.sub2_sub3

...
# Skip test_sgpr_512_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_512
---
name: test_sgpr_512_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_512_w128
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 3
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 112
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 113
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 114
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 115
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 24
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 25
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 26
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 27
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_512 = S_MOV_B32 00
    %0.sub1:sgpr_512 = S_MOV_B32 01
    %0.sub2:sgpr_512 = S_MOV_B32 02
    %0.sub3:sgpr_512 = S_MOV_B32 03
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub12:sgpr_512 = S_MOV_B32 112
    %1.sub13:sgpr_512 = S_MOV_B32 113
    %1.sub14:sgpr_512 = S_MOV_B32 114
    %1.sub15:sgpr_512 = S_MOV_B32 115
    S_NOP 0, implicit %1.sub12_sub13_sub14_sub15

    undef %2.sub4:sgpr_512 = S_MOV_B32 24
    %2.sub5:sgpr_512 = S_MOV_B32 25
    %2.sub6:sgpr_512 = S_MOV_B32 26
    %2.sub7:sgpr_512 = S_MOV_B32 27
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7

...
# Skip test_sgpr_512_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_512
# Skip test_sgpr_512_w192: the 192-bit subreg isn't fully supported for the regclass sgpr_512
---
name: test_sgpr_512_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_512_w256
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 3
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 4
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 5
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 6
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 7
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 14
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 15
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 16
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 17
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 18
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 19
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 110
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 111
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 28
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 29
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 210
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 211
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 212
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 213
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 214
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 215
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_512 = S_MOV_B32 00
    %0.sub1:sgpr_512 = S_MOV_B32 01
    %0.sub2:sgpr_512 = S_MOV_B32 02
    %0.sub3:sgpr_512 = S_MOV_B32 03
    %0.sub4:sgpr_512 = S_MOV_B32 04
    %0.sub5:sgpr_512 = S_MOV_B32 05
    %0.sub6:sgpr_512 = S_MOV_B32 06
    %0.sub7:sgpr_512 = S_MOV_B32 07
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub4:sgpr_512 = S_MOV_B32 14
    %1.sub5:sgpr_512 = S_MOV_B32 15
    %1.sub6:sgpr_512 = S_MOV_B32 16
    %1.sub7:sgpr_512 = S_MOV_B32 17
    %1.sub8:sgpr_512 = S_MOV_B32 18
    %1.sub9:sgpr_512 = S_MOV_B32 19
    %1.sub10:sgpr_512 = S_MOV_B32 110
    %1.sub11:sgpr_512 = S_MOV_B32 111
    S_NOP 0, implicit %1.sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11

    undef %2.sub8:sgpr_512 = S_MOV_B32 28
    %2.sub9:sgpr_512 = S_MOV_B32 29
    %2.sub10:sgpr_512 = S_MOV_B32 210
    %2.sub11:sgpr_512 = S_MOV_B32 211
    %2.sub12:sgpr_512 = S_MOV_B32 212
    %2.sub13:sgpr_512 = S_MOV_B32 213
    %2.sub14:sgpr_512 = S_MOV_B32 214
    %2.sub15:sgpr_512 = S_MOV_B32 215
    S_NOP 0, implicit %2.sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15

...
---
name: test_sgpr_1024_w32
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_1024_w32
    ; CHECK: [[S_MOV_B32_:%[0-9]+]]:sgpr_32 = S_MOV_B32 0
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sgpr_32 = S_MOV_B32 11
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]]:sgpr_32 = S_MOV_B32 231
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_1024 = S_MOV_B32 00
    S_NOP 0, implicit %0.sub0

    undef %1.sub1:sgpr_1024 = S_MOV_B32 11
    S_NOP 0, implicit %1.sub1

    undef %2.sub31:sgpr_1024 = S_MOV_B32 231
    S_NOP 0, implicit %2.sub31

...
---
name: test_sgpr_1024_w64
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_1024_w64
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 1
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 12
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 13
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_64 = S_MOV_B32 230
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_64 = S_MOV_B32 231
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_1024 = S_MOV_B32 00
    %0.sub1:sgpr_1024 = S_MOV_B32 01
    S_NOP 0, implicit %0.sub0_sub1

    undef %1.sub2:sgpr_1024 = S_MOV_B32 12
    %1.sub3:sgpr_1024 = S_MOV_B32 13
    S_NOP 0, implicit %1.sub2_sub3

    undef %2.sub30:sgpr_1024 = S_MOV_B32 230
    %2.sub31:sgpr_1024 = S_MOV_B32 231
    S_NOP 0, implicit %2.sub30_sub31

...
# Skip test_sgpr_1024_w96: the 96-bit subreg isn't fully supported for the regclass sgpr_1024
---
name: test_sgpr_1024_w128
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_1024_w128
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 3
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 128
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 129
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 130
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 131
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_128 = S_MOV_B32 24
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_128 = S_MOV_B32 25
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub2:sgpr_128 = S_MOV_B32 26
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub3:sgpr_128 = S_MOV_B32 27
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_1024 = S_MOV_B32 00
    %0.sub1:sgpr_1024 = S_MOV_B32 01
    %0.sub2:sgpr_1024 = S_MOV_B32 02
    %0.sub3:sgpr_1024 = S_MOV_B32 03
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3

    undef %1.sub28:sgpr_1024 = S_MOV_B32 128
    %1.sub29:sgpr_1024 = S_MOV_B32 129
    %1.sub30:sgpr_1024 = S_MOV_B32 130
    %1.sub31:sgpr_1024 = S_MOV_B32 131
    S_NOP 0, implicit %1.sub28_sub29_sub30_sub31

    undef %2.sub4:sgpr_1024 = S_MOV_B32 24
    %2.sub5:sgpr_1024 = S_MOV_B32 25
    %2.sub6:sgpr_1024 = S_MOV_B32 26
    %2.sub7:sgpr_1024 = S_MOV_B32 27
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7

...
# Skip test_sgpr_1024_w160: the 160-bit subreg isn't fully supported for the regclass sgpr_1024
# Skip test_sgpr_1024_w192: the 192-bit subreg isn't fully supported for the regclass sgpr_1024
---
name: test_sgpr_1024_w256
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_1024_w256
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 3
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 4
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 5
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 6
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 7
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 124
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 125
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 126
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 127
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 128
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 129
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 130
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 131
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_256 = S_MOV_B32 24
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_256 = S_MOV_B32 25
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub2:sgpr_256 = S_MOV_B32 26
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub3:sgpr_256 = S_MOV_B32 27
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub4:sgpr_256 = S_MOV_B32 28
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub5:sgpr_256 = S_MOV_B32 29
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub6:sgpr_256 = S_MOV_B32 210
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub7:sgpr_256 = S_MOV_B32 211
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_1024 = S_MOV_B32 00
    %0.sub1:sgpr_1024 = S_MOV_B32 01
    %0.sub2:sgpr_1024 = S_MOV_B32 02
    %0.sub3:sgpr_1024 = S_MOV_B32 03
    %0.sub4:sgpr_1024 = S_MOV_B32 04
    %0.sub5:sgpr_1024 = S_MOV_B32 05
    %0.sub6:sgpr_1024 = S_MOV_B32 06
    %0.sub7:sgpr_1024 = S_MOV_B32 07
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7

    undef %1.sub24:sgpr_1024 = S_MOV_B32 124
    %1.sub25:sgpr_1024 = S_MOV_B32 125
    %1.sub26:sgpr_1024 = S_MOV_B32 126
    %1.sub27:sgpr_1024 = S_MOV_B32 127
    %1.sub28:sgpr_1024 = S_MOV_B32 128
    %1.sub29:sgpr_1024 = S_MOV_B32 129
    %1.sub30:sgpr_1024 = S_MOV_B32 130
    %1.sub31:sgpr_1024 = S_MOV_B32 131
    S_NOP 0, implicit %1.sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31

    undef %2.sub4:sgpr_1024 = S_MOV_B32 24
    %2.sub5:sgpr_1024 = S_MOV_B32 25
    %2.sub6:sgpr_1024 = S_MOV_B32 26
    %2.sub7:sgpr_1024 = S_MOV_B32 27
    %2.sub8:sgpr_1024 = S_MOV_B32 28
    %2.sub9:sgpr_1024 = S_MOV_B32 29
    %2.sub10:sgpr_1024 = S_MOV_B32 210
    %2.sub11:sgpr_1024 = S_MOV_B32 211
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11

...
---
name: test_sgpr_1024_w512
tracksRegLiveness: true
body:             |
  bb.0:
    ; CHECK-LABEL: name: test_sgpr_1024_w512
    ; CHECK: undef [[S_MOV_B32_:%[0-9]+]].sub0:sgpr_512 = S_MOV_B32 0
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub1:sgpr_512 = S_MOV_B32 1
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub2:sgpr_512 = S_MOV_B32 2
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub3:sgpr_512 = S_MOV_B32 3
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub4:sgpr_512 = S_MOV_B32 4
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub5:sgpr_512 = S_MOV_B32 5
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub6:sgpr_512 = S_MOV_B32 6
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub7:sgpr_512 = S_MOV_B32 7
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub8:sgpr_512 = S_MOV_B32 8
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub9:sgpr_512 = S_MOV_B32 9
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub10:sgpr_512 = S_MOV_B32 10
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub11:sgpr_512 = S_MOV_B32 11
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub12:sgpr_512 = S_MOV_B32 12
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub13:sgpr_512 = S_MOV_B32 13
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub14:sgpr_512 = S_MOV_B32 14
    ; CHECK-NEXT: [[S_MOV_B32_:%[0-9]+]].sub15:sgpr_512 = S_MOV_B32 15
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_]]
    ; CHECK-NEXT: undef [[S_MOV_B32_1:%[0-9]+]].sub0:sgpr_512 = S_MOV_B32 116
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub1:sgpr_512 = S_MOV_B32 117
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub2:sgpr_512 = S_MOV_B32 118
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub3:sgpr_512 = S_MOV_B32 119
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub4:sgpr_512 = S_MOV_B32 120
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub5:sgpr_512 = S_MOV_B32 121
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub6:sgpr_512 = S_MOV_B32 122
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub7:sgpr_512 = S_MOV_B32 123
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub8:sgpr_512 = S_MOV_B32 124
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub9:sgpr_512 = S_MOV_B32 125
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub10:sgpr_512 = S_MOV_B32 126
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub11:sgpr_512 = S_MOV_B32 127
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub12:sgpr_512 = S_MOV_B32 128
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub13:sgpr_512 = S_MOV_B32 129
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub14:sgpr_512 = S_MOV_B32 130
    ; CHECK-NEXT: [[S_MOV_B32_1:%[0-9]+]].sub15:sgpr_512 = S_MOV_B32 131
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_1]]
    ; CHECK-NEXT: undef [[S_MOV_B32_2:%[0-9]+]].sub0:sgpr_512 = S_MOV_B32 24
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub1:sgpr_512 = S_MOV_B32 25
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub2:sgpr_512 = S_MOV_B32 26
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub3:sgpr_512 = S_MOV_B32 27
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub4:sgpr_512 = S_MOV_B32 28
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub5:sgpr_512 = S_MOV_B32 29
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub6:sgpr_512 = S_MOV_B32 210
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub7:sgpr_512 = S_MOV_B32 211
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub8:sgpr_512 = S_MOV_B32 212
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub9:sgpr_512 = S_MOV_B32 213
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub10:sgpr_512 = S_MOV_B32 214
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub11:sgpr_512 = S_MOV_B32 215
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub12:sgpr_512 = S_MOV_B32 216
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub13:sgpr_512 = S_MOV_B32 217
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub14:sgpr_512 = S_MOV_B32 218
    ; CHECK-NEXT: [[S_MOV_B32_2:%[0-9]+]].sub15:sgpr_512 = S_MOV_B32 219
    ; CHECK-NEXT: S_NOP 0, implicit [[S_MOV_B32_2]]
    undef %0.sub0:sgpr_1024 = S_MOV_B32 00
    %0.sub1:sgpr_1024 = S_MOV_B32 01
    %0.sub2:sgpr_1024 = S_MOV_B32 02
    %0.sub3:sgpr_1024 = S_MOV_B32 03
    %0.sub4:sgpr_1024 = S_MOV_B32 04
    %0.sub5:sgpr_1024 = S_MOV_B32 05
    %0.sub6:sgpr_1024 = S_MOV_B32 06
    %0.sub7:sgpr_1024 = S_MOV_B32 07
    %0.sub8:sgpr_1024 = S_MOV_B32 08
    %0.sub9:sgpr_1024 = S_MOV_B32 09
    %0.sub10:sgpr_1024 = S_MOV_B32 010
    %0.sub11:sgpr_1024 = S_MOV_B32 011
    %0.sub12:sgpr_1024 = S_MOV_B32 012
    %0.sub13:sgpr_1024 = S_MOV_B32 013
    %0.sub14:sgpr_1024 = S_MOV_B32 014
    %0.sub15:sgpr_1024 = S_MOV_B32 015
    S_NOP 0, implicit %0.sub0_sub1_sub2_sub3_sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15

    undef %1.sub16:sgpr_1024 = S_MOV_B32 116
    %1.sub17:sgpr_1024 = S_MOV_B32 117
    %1.sub18:sgpr_1024 = S_MOV_B32 118
    %1.sub19:sgpr_1024 = S_MOV_B32 119
    %1.sub20:sgpr_1024 = S_MOV_B32 120
    %1.sub21:sgpr_1024 = S_MOV_B32 121
    %1.sub22:sgpr_1024 = S_MOV_B32 122
    %1.sub23:sgpr_1024 = S_MOV_B32 123
    %1.sub24:sgpr_1024 = S_MOV_B32 124
    %1.sub25:sgpr_1024 = S_MOV_B32 125
    %1.sub26:sgpr_1024 = S_MOV_B32 126
    %1.sub27:sgpr_1024 = S_MOV_B32 127
    %1.sub28:sgpr_1024 = S_MOV_B32 128
    %1.sub29:sgpr_1024 = S_MOV_B32 129
    %1.sub30:sgpr_1024 = S_MOV_B32 130
    %1.sub31:sgpr_1024 = S_MOV_B32 131
    S_NOP 0, implicit %1.sub16_sub17_sub18_sub19_sub20_sub21_sub22_sub23_sub24_sub25_sub26_sub27_sub28_sub29_sub30_sub31

    undef %2.sub4:sgpr_1024 = S_MOV_B32 24
    %2.sub5:sgpr_1024 = S_MOV_B32 25
    %2.sub6:sgpr_1024 = S_MOV_B32 26
    %2.sub7:sgpr_1024 = S_MOV_B32 27
    %2.sub8:sgpr_1024 = S_MOV_B32 28
    %2.sub9:sgpr_1024 = S_MOV_B32 29
    %2.sub10:sgpr_1024 = S_MOV_B32 210
    %2.sub11:sgpr_1024 = S_MOV_B32 211
    %2.sub12:sgpr_1024 = S_MOV_B32 212
    %2.sub13:sgpr_1024 = S_MOV_B32 213
    %2.sub14:sgpr_1024 = S_MOV_B32 214
    %2.sub15:sgpr_1024 = S_MOV_B32 215
    %2.sub16:sgpr_1024 = S_MOV_B32 216
    %2.sub17:sgpr_1024 = S_MOV_B32 217
    %2.sub18:sgpr_1024 = S_MOV_B32 218
    %2.sub19:sgpr_1024 = S_MOV_B32 219
    S_NOP 0, implicit %2.sub4_sub5_sub6_sub7_sub8_sub9_sub10_sub11_sub12_sub13_sub14_sub15_sub16_sub17_sub18_sub19

...