[MachineScheduler] Fix physreg dependencies of ExitSU (#123541)
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / greedy-instruction-split-subrange.mir
blobc76a84cb1c5d4cbcfb7843f32517f9a5df7dbca7
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -verify-regalloc -stress-regalloc=3 -start-before=greedy,1 -stop-before=virtregrewriter,1 -o - %s | FileCheck %s
3 ---
4 name: split_instruction_subranges
5 alignment:       1
6 tracksRegLiveness: true
7 frameInfo:
8   maxAlignment:    1
9   hasCalls:        true
10 machineFunctionInfo:
11   maxKernArgAlign: 1
12   isEntryFunction: true
13   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
14   stackPtrOffsetReg: '$sgpr32'
15   argumentInfo:
16     privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
17     privateSegmentWaveByteOffset: { reg: '$sgpr17' }
18   occupancy:       8
19 body:             |
20   bb.0:
21     ; CHECK-LABEL: name: split_instruction_subranges
22     ; CHECK: [[GLOBAL_LOAD_DWORDX2_SADDR:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %1:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)
23     ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %3:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)
24     ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)
25     ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR]].sub1
26     ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR1]].sub0
27     ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR2]].sub1
28     ; CHECK-NEXT: S_ENDPGM 0
29     %1:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %4:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)
30     %2:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)
31     %3:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %6:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)
32     S_NOP 0, implicit %1.sub1
33     S_NOP 0, implicit %2.sub0
34     S_NOP 0, implicit %3.sub1
35     S_ENDPGM 0
37 ...
39 ---
40 name: split_instruction_subranges_use_is_subreg_def
41 alignment:       1
42 tracksRegLiveness: true
43 frameInfo:
44   maxAlignment:    1
45   hasCalls:        true
46 machineFunctionInfo:
47   maxKernArgAlign: 1
48   isEntryFunction: true
49   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
50   stackPtrOffsetReg: '$sgpr32'
51   argumentInfo:
52     privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
53     privateSegmentWaveByteOffset: { reg: '$sgpr17' }
54   occupancy:       8
55 body:             |
56   bb.0:
57     ; CHECK-LABEL: name: split_instruction_subranges_use_is_subreg_def
58     ; CHECK: [[GLOBAL_LOAD_DWORDX2_SADDR:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %1:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)
59     ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR1:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %3:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)
60     ; CHECK-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR2:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)
61     ; CHECK-NEXT: S_NOP 0, implicit-def [[GLOBAL_LOAD_DWORDX2_SADDR]].sub0
62     ; CHECK-NEXT: S_NOP 0, implicit-def [[GLOBAL_LOAD_DWORDX2_SADDR1]].sub1
63     ; CHECK-NEXT: S_NOP 0, implicit-def [[GLOBAL_LOAD_DWORDX2_SADDR2]].sub0
64     ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR]].sub1
65     ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR1]].sub0
66     ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR2]].sub1
67     ; CHECK-NEXT: S_ENDPGM 0
68     %1:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %4:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)
69     %2:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)
70     %3:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %6:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)
71     S_NOP 0, implicit-def %1.sub0
72     S_NOP 0, implicit-def %2.sub1
73     S_NOP 0, implicit-def %3.sub0
74     S_NOP 0, implicit %1.sub1
75     S_NOP 0, implicit %2.sub0
76     S_NOP 0, implicit %3.sub1
77     S_ENDPGM 0
79 ...