Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / greedy-instruction-split-subrange.mir
blob742498cdd8bd14285f26a858de239866c5bfed96
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: SI_SPILL_V64_SAVE [[GLOBAL_LOAD_DWORDX2_SADDR1]], %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)
25     ; 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)
26     ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub1:vreg_64 = COPY [[GLOBAL_LOAD_DWORDX2_SADDR]].sub1
27     ; CHECK-NEXT: S_NOP 0, implicit [[COPY]].sub1
28     ; CHECK-NEXT: [[SI_SPILL_V64_RESTORE:%[0-9]+]]:vreg_64 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)
29     ; CHECK-NEXT: S_NOP 0, implicit [[SI_SPILL_V64_RESTORE]].sub0
30     ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub1:vreg_64 = COPY [[GLOBAL_LOAD_DWORDX2_SADDR2]].sub1
31     ; CHECK-NEXT: S_NOP 0, implicit [[COPY1]].sub1
32     ; CHECK-NEXT: S_ENDPGM 0
33     %1:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %4:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)
34     %2:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)
35     %3:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %6:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)
36     S_NOP 0, implicit %1.sub1
37     S_NOP 0, implicit %2.sub0
38     S_NOP 0, implicit %3.sub1
39     S_ENDPGM 0
41 ...
43 ---
44 name: split_instruction_subranges_use_is_subreg_def
45 alignment:       1
46 tracksRegLiveness: true
47 frameInfo:
48   maxAlignment:    1
49   hasCalls:        true
50 machineFunctionInfo:
51   maxKernArgAlign: 1
52   isEntryFunction: true
53   scratchRSrcReg:  '$sgpr0_sgpr1_sgpr2_sgpr3'
54   stackPtrOffsetReg: '$sgpr32'
55   argumentInfo:
56     privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
57     privateSegmentWaveByteOffset: { reg: '$sgpr17' }
58   occupancy:       8
59 body:             |
60   bb.0:
61     ; CHECK-LABEL: name: split_instruction_subranges_use_is_subreg_def
62     ; 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)
63     ; 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)
64     ; CHECK-NEXT: SI_SPILL_V64_SAVE [[GLOBAL_LOAD_DWORDX2_SADDR1]], %stack.1, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.1, align 4, addrspace 5)
65     ; 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)
66     ; CHECK-NEXT: SI_SPILL_V64_SAVE [[GLOBAL_LOAD_DWORDX2_SADDR2]], %stack.0, $sgpr32, 0, implicit $exec :: (store (s64) into %stack.0, align 4, addrspace 5)
67     ; CHECK-NEXT: S_NOP 0, implicit-def [[GLOBAL_LOAD_DWORDX2_SADDR]].sub0
68     ; CHECK-NEXT: [[SI_SPILL_V64_RESTORE:%[0-9]+]]:vreg_64 = SI_SPILL_V64_RESTORE %stack.1, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.1, align 4, addrspace 5)
69     ; CHECK-NEXT: undef [[COPY:%[0-9]+]].sub0:vreg_64 = COPY [[SI_SPILL_V64_RESTORE]].sub0
70     ; CHECK-NEXT: S_NOP 0, implicit-def [[COPY]].sub1
71     ; CHECK-NEXT: undef [[COPY1:%[0-9]+]].sub0:vreg_64 = COPY [[COPY]].sub0
72     ; CHECK-NEXT: [[SI_SPILL_V64_RESTORE1:%[0-9]+]]:vreg_64 = SI_SPILL_V64_RESTORE %stack.0, $sgpr32, 0, implicit $exec :: (load (s64) from %stack.0, align 4, addrspace 5)
73     ; CHECK-NEXT: undef [[COPY2:%[0-9]+]].sub1:vreg_64 = COPY [[SI_SPILL_V64_RESTORE1]].sub1
74     ; CHECK-NEXT: S_NOP 0, implicit-def [[COPY2]].sub0
75     ; CHECK-NEXT: undef [[COPY3:%[0-9]+]].sub1:vreg_64 = COPY [[COPY2]].sub1
76     ; CHECK-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORDX2_SADDR]].sub1
77     ; CHECK-NEXT: undef [[COPY4:%[0-9]+]].sub0:vreg_64 = COPY [[COPY1]].sub0
78     ; CHECK-NEXT: S_NOP 0, implicit [[COPY4]].sub0
79     ; CHECK-NEXT: undef [[COPY5:%[0-9]+]].sub1:vreg_64 = COPY [[COPY3]].sub1
80     ; CHECK-NEXT: S_NOP 0, implicit [[COPY5]].sub1
81     ; CHECK-NEXT: S_ENDPGM 0
82     %1:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %4:vgpr_32, 0, 0, implicit $exec :: (load (s64), addrspace 1)
83     %2:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %5:vgpr_32, 4, 0, implicit $exec :: (load (s64), addrspace 1)
84     %3:vreg_64 = GLOBAL_LOAD_DWORDX2_SADDR undef $sgpr0_sgpr1, undef %6:vgpr_32, 8, 0, implicit $exec :: (load (s64), addrspace 1)
85     S_NOP 0, implicit-def %1.sub0
86     S_NOP 0, implicit-def %2.sub1
87     S_NOP 0, implicit-def %3.sub0
88     S_NOP 0, implicit %1.sub1
89     S_NOP 0, implicit %2.sub0
90     S_NOP 0, implicit %3.sub1
91     S_ENDPGM 0
93 ...