[ARM] More MVE compare vector splat combines for ANDs
[llvm-complete.git] / test / CodeGen / MIR / AMDGPU / machine-function-info-no-ir.mir
blob4523af65645baf162e65c22697723697e7a04672
1 # RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=none -verify-machineinstrs %s -o - | FileCheck -check-prefixes=FULL,ALL %s
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -run-pass=none -simplify-mir -verify-machineinstrs %s -o - | FileCheck -check-prefixes=SIMPLE,ALL %s
5 ---
6 # ALL-LABEL: name: kernel0
7 # FULL: machineFunctionInfo:
8 # FULL-NEXT: explicitKernArgSize: 128
9 # FULL-NEXT: maxKernArgAlign: 64
10 # FULL-NEXT: ldsSize: 2048
11 # FULL-NEXT: isEntryFunction: true
12 # FULL-NEXT: noSignedZerosFPMath: false
13 # FULL-NEXT: memoryBound:     true
14 # FULL-NEXT: waveLimiter:     true
15 # FULL-NEXT: scratchRSrcReg:  '$sgpr8_sgpr9_sgpr10_sgpr11'
16 # FULL-NEXT: scratchWaveOffsetReg:  '$sgpr12'
17 # FULL-NEXT: frameOffsetReg:  '$sgpr12'
18 # FULL-NEXT: stackPtrOffsetReg:  '$sgpr13'
19 # FULL-NEXT: argumentInfo:
20 # FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
21 # FULL-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
22 # FULL-NEXT: workGroupIDX: { reg: '$sgpr6' }
23 # FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' }
24 # FULL-NEXT: workItemIDX: { reg: '$vgpr0' }
25 # FULL-NEXT: mode:
26 # FULL-NEXT: ieee: true
27 # FULL-NEXT: dx10-clamp: true
28 # FULL-NEXT: body:
30 # SIMPLE: machineFunctionInfo:
31 # SIMPLE-NEXT: explicitKernArgSize: 128
32 # SIMPLE-NEXT: maxKernArgAlign: 64
33 # SIMPLE-NEXT: ldsSize: 2048
34 # SIMPLE-NEXT: isEntryFunction: true
35 # SIMPLE-NEXT: memoryBound: true
36 # SIMPLE-NEXT: waveLimiter: true
37 # SIMPLE-NEXT: scratchRSrcReg: '$sgpr8_sgpr9_sgpr10_sgpr11'
38 # SIMPLE-NEXT: scratchWaveOffsetReg:  '$sgpr12'
39 # SIMPLE-NEXT: frameOffsetReg:  '$sgpr12'
40 # SIMPLE-NEXT: stackPtrOffsetReg:  '$sgpr13'
41 # SIMPLE-NEXT: argumentInfo:
42 # SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
43 # SIMPLE-NEXT: kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
44 # SIMPLE-NEXT: workGroupIDX: { reg: '$sgpr6' }
45 # SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr7' }
46 # SIMPLE-NEXT: workItemIDX: { reg: '$vgpr0' }
47 # SIMPLE-NEXT: body:
48 name: kernel0
49 machineFunctionInfo:
50   explicitKernArgSize: 128
51   maxKernArgAlign: 64
52   ldsSize: 2048
53   isEntryFunction: true
54   noSignedZerosFPMath: false
55   memoryBound:     true
56   waveLimiter:     true
57   scratchRSrcReg:  '$sgpr8_sgpr9_sgpr10_sgpr11'
58   scratchWaveOffsetReg:  '$sgpr12'
59   frameOffsetReg: '$sgpr12'
60   stackPtrOffsetReg:  '$sgpr13'
61   argumentInfo:
62     privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
63     kernargSegmentPtr: { reg: '$sgpr4_sgpr5' }
64     workGroupIDX:    { reg: '$sgpr6' }
65     privateSegmentWaveByteOffset: { reg: '$sgpr7' }
66     workItemIDX:     { reg: '$vgpr0' }
67 body:             |
68   bb.0:
69     S_ENDPGM 0
71 ...
73 # FIXME: Should be able to not print section for simple
74 ---
75 # ALL-LABEL: name: no_mfi
76 # FULL: machineFunctionInfo:
77 # FULL-NEXT: explicitKernArgSize: 0
78 # FULL-NEXT: maxKernArgAlign: 0
79 # FULL-NEXT: ldsSize: 0
80 # FULL-NEXT: isEntryFunction: false
81 # FULL-NEXT: noSignedZerosFPMath: false
82 # FULL-NEXT: memoryBound:     false
83 # FULL-NEXT: waveLimiter:     false
84 # FULL-NEXT: scratchRSrcReg:  '$private_rsrc_reg'
85 # FULL-NEXT: scratchWaveOffsetReg:  '$scratch_wave_offset_reg'
86 # FULL-NEXT: frameOffsetReg:  '$fp_reg'
87 # FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
88 # FULL-NEXT: argumentInfo:
89 # FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
90 # FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
91 # FULL-NEXT: mode:
92 # FULL-NEXT: ieee: true
93 # FULL-NEXT: dx10-clamp: true
94 # FULL-NEXT: body:
96 # SIMPLE: machineFunctionInfo:
97 # SIMPLE-NEXT: argumentInfo:
98 # SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
99 # SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
100 # SIMPLE-NEXT: body:
102 name: no_mfi
103 body:             |
104   bb.0:
105     S_ENDPGM 0
110 # ALL-LABEL: name: empty_mfi
111 # FULL: machineFunctionInfo:
112 # FULL-NEXT: explicitKernArgSize: 0
113 # FULL-NEXT: maxKernArgAlign: 0
114 # FULL-NEXT: ldsSize: 0
115 # FULL-NEXT: isEntryFunction: false
116 # FULL-NEXT: noSignedZerosFPMath: false
117 # FULL-NEXT: memoryBound:     false
118 # FULL-NEXT: waveLimiter:     false
119 # FULL-NEXT: scratchRSrcReg:  '$private_rsrc_reg'
120 # FULL-NEXT: scratchWaveOffsetReg:  '$scratch_wave_offset_reg'
121 # FULL-NEXT: frameOffsetReg:  '$fp_reg'
122 # FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
123 # FULL-NEXT: argumentInfo:
124 # FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
125 # FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
126 # FULL-NEXT: mode:
127 # FULL-NEXT: ieee: true
128 # FULL-NEXT: dx10-clamp: true
129 # FULL-NEXT: body:
131 # SIMPLE: machineFunctionInfo:
132 # SIMPLE-NEXT: argumentInfo:
133 # SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
134 # SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
135 # SIMPLE-NEXT: body:
137 name: empty_mfi
138 machineFunctionInfo:
139 body:             |
140   bb.0:
141     S_ENDPGM 0
146 # ALL-LABEL: name: empty_mfi_entry_func
147 # FULL: machineFunctionInfo:
148 # FULL-NEXT: explicitKernArgSize: 0
149 # FULL-NEXT: maxKernArgAlign: 0
150 # FULL-NEXT: ldsSize: 0
151 # FULL-NEXT: isEntryFunction: true
152 # FULL-NEXT: noSignedZerosFPMath: false
153 # FULL-NEXT: memoryBound:     false
154 # FULL-NEXT: waveLimiter:     false
155 # FULL-NEXT: scratchRSrcReg:  '$private_rsrc_reg'
156 # FULL-NEXT: scratchWaveOffsetReg:  '$scratch_wave_offset_reg'
157 # FULL-NEXT: frameOffsetReg:  '$fp_reg'
158 # FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
159 # FULL-NEXT: argumentInfo:
160 # FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
161 # FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
162 # FULL-NEXT: mode:
163 # FULL-NEXT: ieee: true
164 # FULL-NEXT: dx10-clamp: true
165 # FULL-NEXT: body:
167 # SIMPLE: machineFunctionInfo:
168 # SIMPLE-NEXT: isEntryFunction: true
169 # SIMPLE-NEXT: argumentInfo:
170 # SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
171 # SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
172 # SIMPLE-NEXT: body:
174 name: empty_mfi_entry_func
175 machineFunctionInfo:
176   isEntryFunction: true
177 body:             |
178   bb.0:
179     S_ENDPGM 0
184 # ALL-LABEL: name: default_regs_mfi
186 # FULL: scratchRSrcReg:  '$private_rsrc_reg'
187 # FULL-NEXT: scratchWaveOffsetReg:  '$scratch_wave_offset_reg'
188 # FULL-NEXT: frameOffsetReg:  '$fp_reg'
189 # FULL-NEXT: stackPtrOffsetReg:  '$sp_reg'
191 # SIMPLE-NOT: scratchRSrcReg
192 # SIMPLE-NOT: scratchWaveOffsetReg
193 # SIMPLE-NOT:: stackPtrOffsetReg
194 name: default_regs_mfi
195 machineFunctionInfo:
196   scratchRSrcReg:  '$private_rsrc_reg'
198 body:             |
199   bb.0:
200     S_ENDPGM 0
205 # ALL-LABEL: name: fake_stack_arginfo
207 # FULL: argumentInfo:
208 # FULL-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
209 # FULL-NEXT: flatScratchInit: { offset: 4 }
210 # FULL-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
211 # FULL-NEXT: workItemIDY: { reg: '$vgpr0', mask: 65280 }
213 # SIMPLE: argumentInfo:
214 # SIMPLE-NEXT: privateSegmentBuffer: { reg: '$sgpr0_sgpr1_sgpr2_sgpr3' }
215 # SIMPLE-NEXT: flatScratchInit: { offset: 4 }
216 # SIMPLE-NEXT: privateSegmentWaveByteOffset: { reg: '$sgpr33' }
217 # SIMPLE-NEXT: workItemIDY: { reg: '$vgpr0', mask: 65280 }
218 name: fake_stack_arginfo
219 machineFunctionInfo:
220   argumentInfo:
221     flatScratchInit: { offset: 4 }
222     workItemIDY:     { reg: '$vgpr0' , mask: 0xff00 }
224 body:             |
225   bb.0:
226     S_ENDPGM 0
231 # ALL-LABEL: name: parse_mode
232 # ALL: mode:
233 # ALL-NEXT: ieee: false
234 # ALL-NEXT: dx10-clamp: false
235 name: parse_mode
236 machineFunctionInfo:
237   mode:
238     ieee: false
239     dx10-clamp: false
241 body:             |
242   bb.0:
243     S_ENDPGM 0