annotate llvm/test/CodeGen/AMDGPU/shrink-vop3-carry-out.mir @ 206:f17a3b42b08b

Added tag before-12 for changeset b7591485f4cd
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 07 Jun 2021 21:25:57 +0900
parents 0572611fdcc8
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 # RUN: llc -verify-machineinstrs -march=amdgcn -run-pass si-shrink-instructions -o - %s | FileCheck -check-prefix=GCN %s
anatofuz
parents:
diff changeset
2 # Check that add with carry out isn't incorrectly reduced to e32 when
anatofuz
parents:
diff changeset
3 # the carry out is a virtual register.
anatofuz
parents:
diff changeset
4
anatofuz
parents:
diff changeset
5 # TODO: We should run this test until the end of codegen to make sure
anatofuz
parents:
diff changeset
6 # that the post-RA run does manage to shrink it, but right now the
anatofuz
parents:
diff changeset
7 # resume crashes
anatofuz
parents:
diff changeset
8
anatofuz
parents:
diff changeset
9 ...
anatofuz
parents:
diff changeset
10 # GCN-LABEL: name: shrink_add_vop3{{$}}
anatofuz
parents:
diff changeset
11 # GCN: %29:vgpr_32, %9:sreg_64_xexec = V_ADD_I32_e64 %19, %17, 0, implicit $exec
anatofuz
parents:
diff changeset
12 # GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed %9, implicit $exec
anatofuz
parents:
diff changeset
13 name: shrink_add_vop3
anatofuz
parents:
diff changeset
14 alignment: 1
anatofuz
parents:
diff changeset
15 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
16 legalized: false
anatofuz
parents:
diff changeset
17 regBankSelected: false
anatofuz
parents:
diff changeset
18 selected: false
anatofuz
parents:
diff changeset
19 tracksRegLiveness: true
anatofuz
parents:
diff changeset
20 registers:
anatofuz
parents:
diff changeset
21 - { id: 0, class: sgpr_64 }
anatofuz
parents:
diff changeset
22 - { id: 1, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
23 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
24 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
25 - { id: 4, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
26 - { id: 5, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
27 - { id: 6, class: sreg_32 }
anatofuz
parents:
diff changeset
28 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
29 - { id: 8, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
30 - { id: 9, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
31 - { id: 10, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
32 - { id: 11, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
33 - { id: 12, class: sgpr_64 }
anatofuz
parents:
diff changeset
34 - { id: 13, class: sgpr_128 }
anatofuz
parents:
diff changeset
35 - { id: 14, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
36 - { id: 15, class: sreg_64 }
anatofuz
parents:
diff changeset
37 - { id: 16, class: sgpr_128 }
anatofuz
parents:
diff changeset
38 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
39 - { id: 18, class: vreg_64 }
anatofuz
parents:
diff changeset
40 - { id: 19, class: vgpr_32 }
anatofuz
parents:
diff changeset
41 - { id: 20, class: vreg_64 }
anatofuz
parents:
diff changeset
42 - { id: 21, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
43 - { id: 22, class: sreg_32 }
anatofuz
parents:
diff changeset
44 - { id: 23, class: sreg_32 }
anatofuz
parents:
diff changeset
45 - { id: 24, class: vgpr_32 }
anatofuz
parents:
diff changeset
46 - { id: 25, class: vreg_64 }
anatofuz
parents:
diff changeset
47 - { id: 26, class: vgpr_32 }
anatofuz
parents:
diff changeset
48 - { id: 27, class: vreg_64 }
anatofuz
parents:
diff changeset
49 - { id: 28, class: vreg_64 }
anatofuz
parents:
diff changeset
50 - { id: 29, class: vgpr_32 }
anatofuz
parents:
diff changeset
51 liveins:
anatofuz
parents:
diff changeset
52 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
anatofuz
parents:
diff changeset
53 - { reg: '$vgpr0', virtual-reg: '%3' }
anatofuz
parents:
diff changeset
54 frameInfo:
anatofuz
parents:
diff changeset
55 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
56 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
57 hasStackMap: false
anatofuz
parents:
diff changeset
58 hasPatchPoint: false
anatofuz
parents:
diff changeset
59 stackSize: 0
anatofuz
parents:
diff changeset
60 offsetAdjustment: 0
anatofuz
parents:
diff changeset
61 maxAlignment: 0
anatofuz
parents:
diff changeset
62 adjustsStack: false
anatofuz
parents:
diff changeset
63 hasCalls: false
anatofuz
parents:
diff changeset
64 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
65 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
66 hasVAStart: false
anatofuz
parents:
diff changeset
67 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
68 body: |
anatofuz
parents:
diff changeset
69 bb.0:
anatofuz
parents:
diff changeset
70 liveins: $sgpr0_sgpr1, $vgpr0
anatofuz
parents:
diff changeset
71
anatofuz
parents:
diff changeset
72 %3 = COPY $vgpr0
anatofuz
parents:
diff changeset
73 %0 = COPY $sgpr0_sgpr1
anatofuz
parents:
diff changeset
74 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0, 0
anatofuz
parents:
diff changeset
75 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0, 0
anatofuz
parents:
diff changeset
76 %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
anatofuz
parents:
diff changeset
77 %27 = REG_SEQUENCE %3, 1, %26, 2
anatofuz
parents:
diff changeset
78 %10 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
79 %11 = S_MOV_B32 0
anatofuz
parents:
diff changeset
80 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
anatofuz
parents:
diff changeset
81 %13 = REG_SEQUENCE killed %5, 17, %12, 18
anatofuz
parents:
diff changeset
82 %28 = V_LSHL_B64 killed %27, 2, implicit $exec
anatofuz
parents:
diff changeset
83 %16 = REG_SEQUENCE killed %4, 17, %12, 18
anatofuz
parents:
diff changeset
84 %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
85 %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
86 %29, %9 = V_ADD_I32_e64 %19, %17, 0, implicit $exec
anatofuz
parents:
diff changeset
87 %24 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed %9, implicit $exec
anatofuz
parents:
diff changeset
88 BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
89 S_ENDPGM 0
anatofuz
parents:
diff changeset
90
anatofuz
parents:
diff changeset
91 ...
anatofuz
parents:
diff changeset
92 ---
anatofuz
parents:
diff changeset
93 # GCN-LABEL: name: shrink_sub_vop3{{$}}
anatofuz
parents:
diff changeset
94 # GCN: %29:vgpr_32, %9:sreg_64_xexec = V_SUB_I32_e64 %19, %17, 0, implicit $exec
anatofuz
parents:
diff changeset
95 # GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed %9, implicit $exec
anatofuz
parents:
diff changeset
96
anatofuz
parents:
diff changeset
97 name: shrink_sub_vop3
anatofuz
parents:
diff changeset
98 alignment: 1
anatofuz
parents:
diff changeset
99 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
100 legalized: false
anatofuz
parents:
diff changeset
101 regBankSelected: false
anatofuz
parents:
diff changeset
102 selected: false
anatofuz
parents:
diff changeset
103 tracksRegLiveness: true
anatofuz
parents:
diff changeset
104 registers:
anatofuz
parents:
diff changeset
105 - { id: 0, class: sgpr_64 }
anatofuz
parents:
diff changeset
106 - { id: 1, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
107 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
108 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
109 - { id: 4, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
110 - { id: 5, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
111 - { id: 6, class: sreg_32 }
anatofuz
parents:
diff changeset
112 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
113 - { id: 8, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
114 - { id: 9, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
115 - { id: 10, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
116 - { id: 11, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
117 - { id: 12, class: sgpr_64 }
anatofuz
parents:
diff changeset
118 - { id: 13, class: sgpr_128 }
anatofuz
parents:
diff changeset
119 - { id: 14, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
120 - { id: 15, class: sreg_64 }
anatofuz
parents:
diff changeset
121 - { id: 16, class: sgpr_128 }
anatofuz
parents:
diff changeset
122 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
123 - { id: 18, class: vreg_64 }
anatofuz
parents:
diff changeset
124 - { id: 19, class: vgpr_32 }
anatofuz
parents:
diff changeset
125 - { id: 20, class: vreg_64 }
anatofuz
parents:
diff changeset
126 - { id: 21, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
127 - { id: 22, class: sreg_32 }
anatofuz
parents:
diff changeset
128 - { id: 23, class: sreg_32 }
anatofuz
parents:
diff changeset
129 - { id: 24, class: vgpr_32 }
anatofuz
parents:
diff changeset
130 - { id: 25, class: vreg_64 }
anatofuz
parents:
diff changeset
131 - { id: 26, class: vgpr_32 }
anatofuz
parents:
diff changeset
132 - { id: 27, class: vreg_64 }
anatofuz
parents:
diff changeset
133 - { id: 28, class: vreg_64 }
anatofuz
parents:
diff changeset
134 - { id: 29, class: vgpr_32 }
anatofuz
parents:
diff changeset
135 liveins:
anatofuz
parents:
diff changeset
136 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
anatofuz
parents:
diff changeset
137 - { reg: '$vgpr0', virtual-reg: '%3' }
anatofuz
parents:
diff changeset
138 frameInfo:
anatofuz
parents:
diff changeset
139 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
140 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
141 hasStackMap: false
anatofuz
parents:
diff changeset
142 hasPatchPoint: false
anatofuz
parents:
diff changeset
143 stackSize: 0
anatofuz
parents:
diff changeset
144 offsetAdjustment: 0
anatofuz
parents:
diff changeset
145 maxAlignment: 0
anatofuz
parents:
diff changeset
146 adjustsStack: false
anatofuz
parents:
diff changeset
147 hasCalls: false
anatofuz
parents:
diff changeset
148 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
149 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
150 hasVAStart: false
anatofuz
parents:
diff changeset
151 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
152 body: |
anatofuz
parents:
diff changeset
153 bb.0:
anatofuz
parents:
diff changeset
154 liveins: $sgpr0_sgpr1, $vgpr0
anatofuz
parents:
diff changeset
155
anatofuz
parents:
diff changeset
156 %3 = COPY $vgpr0
anatofuz
parents:
diff changeset
157 %0 = COPY $sgpr0_sgpr1
anatofuz
parents:
diff changeset
158 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0, 0
anatofuz
parents:
diff changeset
159 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0, 0
anatofuz
parents:
diff changeset
160 %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
anatofuz
parents:
diff changeset
161 %27 = REG_SEQUENCE %3, 1, %26, 2
anatofuz
parents:
diff changeset
162 %10 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
163 %11 = S_MOV_B32 0
anatofuz
parents:
diff changeset
164 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
anatofuz
parents:
diff changeset
165 %13 = REG_SEQUENCE killed %5, 17, %12, 18
anatofuz
parents:
diff changeset
166 %28 = V_LSHL_B64 killed %27, 2, implicit $exec
anatofuz
parents:
diff changeset
167 %16 = REG_SEQUENCE killed %4, 17, %12, 18
anatofuz
parents:
diff changeset
168 %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
169 %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
170 %29, %9 = V_SUB_I32_e64 %19, %17, 0, implicit $exec
anatofuz
parents:
diff changeset
171 %24 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed %9, implicit $exec
anatofuz
parents:
diff changeset
172 BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
173 S_ENDPGM 0
anatofuz
parents:
diff changeset
174
anatofuz
parents:
diff changeset
175 ...
anatofuz
parents:
diff changeset
176 ---
anatofuz
parents:
diff changeset
177 # GCN-LABEL: name: shrink_subrev_vop3{{$}}
anatofuz
parents:
diff changeset
178 # GCN: %29:vgpr_32, %9:sreg_64_xexec = V_SUBREV_I32_e64 %19, %17, 0, implicit $exec
anatofuz
parents:
diff changeset
179 # GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed %9, implicit $exec
anatofuz
parents:
diff changeset
180
anatofuz
parents:
diff changeset
181 name: shrink_subrev_vop3
anatofuz
parents:
diff changeset
182 alignment: 1
anatofuz
parents:
diff changeset
183 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
184 legalized: false
anatofuz
parents:
diff changeset
185 regBankSelected: false
anatofuz
parents:
diff changeset
186 selected: false
anatofuz
parents:
diff changeset
187 tracksRegLiveness: true
anatofuz
parents:
diff changeset
188 registers:
anatofuz
parents:
diff changeset
189 - { id: 0, class: sgpr_64 }
anatofuz
parents:
diff changeset
190 - { id: 1, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
191 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
192 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
193 - { id: 4, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
194 - { id: 5, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
195 - { id: 6, class: sreg_32 }
anatofuz
parents:
diff changeset
196 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
197 - { id: 8, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
198 - { id: 9, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
199 - { id: 10, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
200 - { id: 11, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
201 - { id: 12, class: sgpr_64 }
anatofuz
parents:
diff changeset
202 - { id: 13, class: sgpr_128 }
anatofuz
parents:
diff changeset
203 - { id: 14, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
204 - { id: 15, class: sreg_64 }
anatofuz
parents:
diff changeset
205 - { id: 16, class: sgpr_128 }
anatofuz
parents:
diff changeset
206 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
207 - { id: 18, class: vreg_64 }
anatofuz
parents:
diff changeset
208 - { id: 19, class: vgpr_32 }
anatofuz
parents:
diff changeset
209 - { id: 20, class: vreg_64 }
anatofuz
parents:
diff changeset
210 - { id: 21, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
211 - { id: 22, class: sreg_32 }
anatofuz
parents:
diff changeset
212 - { id: 23, class: sreg_32 }
anatofuz
parents:
diff changeset
213 - { id: 24, class: vgpr_32 }
anatofuz
parents:
diff changeset
214 - { id: 25, class: vreg_64 }
anatofuz
parents:
diff changeset
215 - { id: 26, class: vgpr_32 }
anatofuz
parents:
diff changeset
216 - { id: 27, class: vreg_64 }
anatofuz
parents:
diff changeset
217 - { id: 28, class: vreg_64 }
anatofuz
parents:
diff changeset
218 - { id: 29, class: vgpr_32 }
anatofuz
parents:
diff changeset
219 liveins:
anatofuz
parents:
diff changeset
220 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
anatofuz
parents:
diff changeset
221 - { reg: '$vgpr0', virtual-reg: '%3' }
anatofuz
parents:
diff changeset
222 frameInfo:
anatofuz
parents:
diff changeset
223 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
224 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
225 hasStackMap: false
anatofuz
parents:
diff changeset
226 hasPatchPoint: false
anatofuz
parents:
diff changeset
227 stackSize: 0
anatofuz
parents:
diff changeset
228 offsetAdjustment: 0
anatofuz
parents:
diff changeset
229 maxAlignment: 0
anatofuz
parents:
diff changeset
230 adjustsStack: false
anatofuz
parents:
diff changeset
231 hasCalls: false
anatofuz
parents:
diff changeset
232 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
233 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
234 hasVAStart: false
anatofuz
parents:
diff changeset
235 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
236 body: |
anatofuz
parents:
diff changeset
237 bb.0:
anatofuz
parents:
diff changeset
238 liveins: $sgpr0_sgpr1, $vgpr0
anatofuz
parents:
diff changeset
239
anatofuz
parents:
diff changeset
240 %3 = COPY $vgpr0
anatofuz
parents:
diff changeset
241 %0 = COPY $sgpr0_sgpr1
anatofuz
parents:
diff changeset
242 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0, 0
anatofuz
parents:
diff changeset
243 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0, 0
anatofuz
parents:
diff changeset
244 %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
anatofuz
parents:
diff changeset
245 %27 = REG_SEQUENCE %3, 1, %26, 2
anatofuz
parents:
diff changeset
246 %10 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
247 %11 = S_MOV_B32 0
anatofuz
parents:
diff changeset
248 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
anatofuz
parents:
diff changeset
249 %13 = REG_SEQUENCE killed %5, 17, %12, 18
anatofuz
parents:
diff changeset
250 %28 = V_LSHL_B64 killed %27, 2, implicit $exec
anatofuz
parents:
diff changeset
251 %16 = REG_SEQUENCE killed %4, 17, %12, 18
anatofuz
parents:
diff changeset
252 %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
253 %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
254 %29, %9 = V_SUBREV_I32_e64 %19, %17, 0, implicit $exec
anatofuz
parents:
diff changeset
255 %24 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed %9, implicit $exec
anatofuz
parents:
diff changeset
256 BUFFER_STORE_DWORD_ADDR64 %29, %28, killed %16, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
257 S_ENDPGM 0
anatofuz
parents:
diff changeset
258
anatofuz
parents:
diff changeset
259 ...
anatofuz
parents:
diff changeset
260 ---
anatofuz
parents:
diff changeset
261 # GCN-LABEL: name: check_addc_src2_vop3{{$}}
anatofuz
parents:
diff changeset
262 # GCN: %29:vgpr_32, $vcc = V_ADDC_U32_e64 %19, %17, %9, 0, implicit $exec
anatofuz
parents:
diff changeset
263 # GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $vcc, implicit $exec
anatofuz
parents:
diff changeset
264 name: check_addc_src2_vop3
anatofuz
parents:
diff changeset
265 alignment: 1
anatofuz
parents:
diff changeset
266 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
267 legalized: false
anatofuz
parents:
diff changeset
268 regBankSelected: false
anatofuz
parents:
diff changeset
269 selected: false
anatofuz
parents:
diff changeset
270 tracksRegLiveness: true
anatofuz
parents:
diff changeset
271 registers:
anatofuz
parents:
diff changeset
272 - { id: 0, class: sgpr_64 }
anatofuz
parents:
diff changeset
273 - { id: 1, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
274 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
275 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
276 - { id: 4, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
277 - { id: 5, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
278 - { id: 6, class: sreg_32 }
anatofuz
parents:
diff changeset
279 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
280 - { id: 8, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
281 - { id: 9, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
282 - { id: 10, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
283 - { id: 11, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
284 - { id: 12, class: sgpr_64 }
anatofuz
parents:
diff changeset
285 - { id: 13, class: sgpr_128 }
anatofuz
parents:
diff changeset
286 - { id: 14, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
287 - { id: 15, class: sreg_64 }
anatofuz
parents:
diff changeset
288 - { id: 16, class: sgpr_128 }
anatofuz
parents:
diff changeset
289 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
290 - { id: 18, class: vreg_64 }
anatofuz
parents:
diff changeset
291 - { id: 19, class: vgpr_32 }
anatofuz
parents:
diff changeset
292 - { id: 20, class: vreg_64 }
anatofuz
parents:
diff changeset
293 - { id: 21, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
294 - { id: 22, class: sreg_32 }
anatofuz
parents:
diff changeset
295 - { id: 23, class: sreg_32 }
anatofuz
parents:
diff changeset
296 - { id: 24, class: vgpr_32 }
anatofuz
parents:
diff changeset
297 - { id: 25, class: vreg_64 }
anatofuz
parents:
diff changeset
298 - { id: 26, class: vgpr_32 }
anatofuz
parents:
diff changeset
299 - { id: 27, class: vreg_64 }
anatofuz
parents:
diff changeset
300 - { id: 28, class: vreg_64 }
anatofuz
parents:
diff changeset
301 - { id: 29, class: vgpr_32 }
anatofuz
parents:
diff changeset
302 liveins:
anatofuz
parents:
diff changeset
303 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
anatofuz
parents:
diff changeset
304 - { reg: '$vgpr0', virtual-reg: '%3' }
anatofuz
parents:
diff changeset
305 frameInfo:
anatofuz
parents:
diff changeset
306 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
307 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
308 hasStackMap: false
anatofuz
parents:
diff changeset
309 hasPatchPoint: false
anatofuz
parents:
diff changeset
310 stackSize: 0
anatofuz
parents:
diff changeset
311 offsetAdjustment: 0
anatofuz
parents:
diff changeset
312 maxAlignment: 0
anatofuz
parents:
diff changeset
313 adjustsStack: false
anatofuz
parents:
diff changeset
314 hasCalls: false
anatofuz
parents:
diff changeset
315 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
316 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
317 hasVAStart: false
anatofuz
parents:
diff changeset
318 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
319 body: |
anatofuz
parents:
diff changeset
320 bb.0:
anatofuz
parents:
diff changeset
321 liveins: $sgpr0_sgpr1, $vgpr0
anatofuz
parents:
diff changeset
322
anatofuz
parents:
diff changeset
323 %3 = COPY $vgpr0
anatofuz
parents:
diff changeset
324 %0 = COPY $sgpr0_sgpr1
anatofuz
parents:
diff changeset
325 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0, 0
anatofuz
parents:
diff changeset
326 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0, 0
anatofuz
parents:
diff changeset
327 %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
anatofuz
parents:
diff changeset
328 %27 = REG_SEQUENCE %3, 1, %26, 2
anatofuz
parents:
diff changeset
329 %10 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
330 %11 = S_MOV_B32 0
anatofuz
parents:
diff changeset
331 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
anatofuz
parents:
diff changeset
332 %13 = REG_SEQUENCE killed %5, 17, %12, 18
anatofuz
parents:
diff changeset
333 %28 = V_LSHL_B64 killed %27, 2, implicit $exec
anatofuz
parents:
diff changeset
334 %16 = REG_SEQUENCE killed %4, 17, %12, 18
anatofuz
parents:
diff changeset
335 %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
336 %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
337 %9 = S_MOV_B64 0
anatofuz
parents:
diff changeset
338 %29, $vcc = V_ADDC_U32_e64 %19, %17, %9, 0, implicit $exec
anatofuz
parents:
diff changeset
339 %24 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $vcc, implicit $exec
anatofuz
parents:
diff changeset
340 BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
341 S_ENDPGM 0
anatofuz
parents:
diff changeset
342
anatofuz
parents:
diff changeset
343 ...
anatofuz
parents:
diff changeset
344 ---
anatofuz
parents:
diff changeset
345 # GCN-LABEL: name: shrink_addc_vop3{{$}}
anatofuz
parents:
diff changeset
346 # GCN: %29:vgpr_32 = V_ADDC_U32_e32 %19, %17, implicit-def $vcc, implicit $vcc, implicit $exec
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
347 # GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $vcc, implicit $exec
150
anatofuz
parents:
diff changeset
348
anatofuz
parents:
diff changeset
349 name: shrink_addc_vop3
anatofuz
parents:
diff changeset
350 alignment: 1
anatofuz
parents:
diff changeset
351 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
352 legalized: false
anatofuz
parents:
diff changeset
353 regBankSelected: false
anatofuz
parents:
diff changeset
354 selected: false
anatofuz
parents:
diff changeset
355 tracksRegLiveness: true
anatofuz
parents:
diff changeset
356 registers:
anatofuz
parents:
diff changeset
357 - { id: 0, class: sgpr_64 }
anatofuz
parents:
diff changeset
358 - { id: 1, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
359 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
360 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
361 - { id: 4, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
362 - { id: 5, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
363 - { id: 6, class: sreg_32 }
anatofuz
parents:
diff changeset
364 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
365 - { id: 8, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
366 - { id: 9, class: sreg_64 }
anatofuz
parents:
diff changeset
367 - { id: 10, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
368 - { id: 11, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
369 - { id: 12, class: sgpr_64 }
anatofuz
parents:
diff changeset
370 - { id: 13, class: sgpr_128 }
anatofuz
parents:
diff changeset
371 - { id: 14, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
372 - { id: 15, class: sreg_64 }
anatofuz
parents:
diff changeset
373 - { id: 16, class: sgpr_128 }
anatofuz
parents:
diff changeset
374 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
375 - { id: 18, class: vreg_64 }
anatofuz
parents:
diff changeset
376 - { id: 19, class: vgpr_32 }
anatofuz
parents:
diff changeset
377 - { id: 20, class: vreg_64 }
anatofuz
parents:
diff changeset
378 - { id: 21, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
379 - { id: 22, class: sreg_32 }
anatofuz
parents:
diff changeset
380 - { id: 23, class: sreg_32 }
anatofuz
parents:
diff changeset
381 - { id: 24, class: vgpr_32 }
anatofuz
parents:
diff changeset
382 - { id: 25, class: vreg_64 }
anatofuz
parents:
diff changeset
383 - { id: 26, class: vgpr_32 }
anatofuz
parents:
diff changeset
384 - { id: 27, class: vreg_64 }
anatofuz
parents:
diff changeset
385 - { id: 28, class: vreg_64 }
anatofuz
parents:
diff changeset
386 - { id: 29, class: vgpr_32 }
anatofuz
parents:
diff changeset
387 liveins:
anatofuz
parents:
diff changeset
388 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
anatofuz
parents:
diff changeset
389 - { reg: '$vgpr0', virtual-reg: '%3' }
anatofuz
parents:
diff changeset
390 frameInfo:
anatofuz
parents:
diff changeset
391 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
392 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
393 hasStackMap: false
anatofuz
parents:
diff changeset
394 hasPatchPoint: false
anatofuz
parents:
diff changeset
395 stackSize: 0
anatofuz
parents:
diff changeset
396 offsetAdjustment: 0
anatofuz
parents:
diff changeset
397 maxAlignment: 0
anatofuz
parents:
diff changeset
398 adjustsStack: false
anatofuz
parents:
diff changeset
399 hasCalls: false
anatofuz
parents:
diff changeset
400 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
401 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
402 hasVAStart: false
anatofuz
parents:
diff changeset
403 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
404 body: |
anatofuz
parents:
diff changeset
405 bb.0:
anatofuz
parents:
diff changeset
406 liveins: $sgpr0_sgpr1, $vgpr0
anatofuz
parents:
diff changeset
407
anatofuz
parents:
diff changeset
408 %3 = COPY $vgpr0
anatofuz
parents:
diff changeset
409 %0 = COPY $sgpr0_sgpr1
anatofuz
parents:
diff changeset
410 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0, 0
anatofuz
parents:
diff changeset
411 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0, 0
anatofuz
parents:
diff changeset
412 %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
anatofuz
parents:
diff changeset
413 %27 = REG_SEQUENCE %3, 1, %26, 2
anatofuz
parents:
diff changeset
414 %10 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
415 %11 = S_MOV_B32 0
anatofuz
parents:
diff changeset
416 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
anatofuz
parents:
diff changeset
417 %13 = REG_SEQUENCE killed %5, 17, %12, 18
anatofuz
parents:
diff changeset
418 %28 = V_LSHL_B64 killed %27, 2, implicit $exec
anatofuz
parents:
diff changeset
419 %16 = REG_SEQUENCE killed %4, 17, %12, 18
anatofuz
parents:
diff changeset
420 %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
421 %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
422 $vcc = S_MOV_B64 0
anatofuz
parents:
diff changeset
423 %29, $vcc = V_ADDC_U32_e64 %19, %17, $vcc, 0, implicit $exec
anatofuz
parents:
diff changeset
424 %24 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $vcc, implicit $exec
anatofuz
parents:
diff changeset
425 BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
426 S_ENDPGM 0
anatofuz
parents:
diff changeset
427
anatofuz
parents:
diff changeset
428 ...
anatofuz
parents:
diff changeset
429
anatofuz
parents:
diff changeset
430 ---
anatofuz
parents:
diff changeset
431 # GCN-LABEL: name: shrink_addc_undef_vcc{{$}}
anatofuz
parents:
diff changeset
432 # GCN: %29:vgpr_32 = V_ADDC_U32_e32 %19, %17, implicit-def $vcc, implicit undef $vcc, implicit $exec
anatofuz
parents:
diff changeset
433 # GCN: %24:vgpr_32 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $vcc, implicit $exec
anatofuz
parents:
diff changeset
434 name: shrink_addc_undef_vcc
anatofuz
parents:
diff changeset
435 alignment: 1
anatofuz
parents:
diff changeset
436 exposesReturnsTwice: false
anatofuz
parents:
diff changeset
437 legalized: false
anatofuz
parents:
diff changeset
438 regBankSelected: false
anatofuz
parents:
diff changeset
439 selected: false
anatofuz
parents:
diff changeset
440 tracksRegLiveness: true
anatofuz
parents:
diff changeset
441 registers:
anatofuz
parents:
diff changeset
442 - { id: 0, class: sgpr_64 }
anatofuz
parents:
diff changeset
443 - { id: 1, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
444 - { id: 2, class: sgpr_32 }
anatofuz
parents:
diff changeset
445 - { id: 3, class: vgpr_32 }
anatofuz
parents:
diff changeset
446 - { id: 4, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
447 - { id: 5, class: sreg_64_xexec }
anatofuz
parents:
diff changeset
448 - { id: 6, class: sreg_32 }
anatofuz
parents:
diff changeset
449 - { id: 7, class: sreg_32 }
anatofuz
parents:
diff changeset
450 - { id: 8, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
451 - { id: 9, class: sreg_64 }
anatofuz
parents:
diff changeset
452 - { id: 10, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
453 - { id: 11, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
454 - { id: 12, class: sgpr_64 }
anatofuz
parents:
diff changeset
455 - { id: 13, class: sgpr_128 }
anatofuz
parents:
diff changeset
456 - { id: 14, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
457 - { id: 15, class: sreg_64 }
anatofuz
parents:
diff changeset
458 - { id: 16, class: sgpr_128 }
anatofuz
parents:
diff changeset
459 - { id: 17, class: vgpr_32 }
anatofuz
parents:
diff changeset
460 - { id: 18, class: vreg_64 }
anatofuz
parents:
diff changeset
461 - { id: 19, class: vgpr_32 }
anatofuz
parents:
diff changeset
462 - { id: 20, class: vreg_64 }
anatofuz
parents:
diff changeset
463 - { id: 21, class: sreg_32_xm0 }
anatofuz
parents:
diff changeset
464 - { id: 22, class: sreg_32 }
anatofuz
parents:
diff changeset
465 - { id: 23, class: sreg_32 }
anatofuz
parents:
diff changeset
466 - { id: 24, class: vgpr_32 }
anatofuz
parents:
diff changeset
467 - { id: 25, class: vreg_64 }
anatofuz
parents:
diff changeset
468 - { id: 26, class: vgpr_32 }
anatofuz
parents:
diff changeset
469 - { id: 27, class: vreg_64 }
anatofuz
parents:
diff changeset
470 - { id: 28, class: vreg_64 }
anatofuz
parents:
diff changeset
471 - { id: 29, class: vgpr_32 }
anatofuz
parents:
diff changeset
472 liveins:
anatofuz
parents:
diff changeset
473 - { reg: '$sgpr0_sgpr1', virtual-reg: '%0' }
anatofuz
parents:
diff changeset
474 - { reg: '$vgpr0', virtual-reg: '%3' }
anatofuz
parents:
diff changeset
475 frameInfo:
anatofuz
parents:
diff changeset
476 isFrameAddressTaken: false
anatofuz
parents:
diff changeset
477 isReturnAddressTaken: false
anatofuz
parents:
diff changeset
478 hasStackMap: false
anatofuz
parents:
diff changeset
479 hasPatchPoint: false
anatofuz
parents:
diff changeset
480 stackSize: 0
anatofuz
parents:
diff changeset
481 offsetAdjustment: 0
anatofuz
parents:
diff changeset
482 maxAlignment: 0
anatofuz
parents:
diff changeset
483 adjustsStack: false
anatofuz
parents:
diff changeset
484 hasCalls: false
anatofuz
parents:
diff changeset
485 maxCallFrameSize: 0
anatofuz
parents:
diff changeset
486 hasOpaqueSPAdjustment: false
anatofuz
parents:
diff changeset
487 hasVAStart: false
anatofuz
parents:
diff changeset
488 hasMustTailInVarArgFunc: false
anatofuz
parents:
diff changeset
489 body: |
anatofuz
parents:
diff changeset
490 bb.0:
anatofuz
parents:
diff changeset
491 liveins: $sgpr0_sgpr1, $vgpr0
anatofuz
parents:
diff changeset
492
anatofuz
parents:
diff changeset
493 %3 = COPY $vgpr0
anatofuz
parents:
diff changeset
494 %0 = COPY $sgpr0_sgpr1
anatofuz
parents:
diff changeset
495 %4 = S_LOAD_DWORDX2_IMM %0, 9, 0, 0
anatofuz
parents:
diff changeset
496 %5 = S_LOAD_DWORDX2_IMM %0, 11, 0, 0
anatofuz
parents:
diff changeset
497 %26 = V_ASHRREV_I32_e32 31, %3, implicit $exec
anatofuz
parents:
diff changeset
498 %27 = REG_SEQUENCE %3, 1, %26, 2
anatofuz
parents:
diff changeset
499 %10 = S_MOV_B32 61440
anatofuz
parents:
diff changeset
500 %11 = S_MOV_B32 0
anatofuz
parents:
diff changeset
501 %12 = REG_SEQUENCE killed %11, 1, killed %10, 2
anatofuz
parents:
diff changeset
502 %13 = REG_SEQUENCE killed %5, 17, %12, 18
anatofuz
parents:
diff changeset
503 %28 = V_LSHL_B64 killed %27, 2, implicit $exec
anatofuz
parents:
diff changeset
504 %16 = REG_SEQUENCE killed %4, 17, %12, 18
anatofuz
parents:
diff changeset
505 %17 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
506 %19 = BUFFER_LOAD_DWORD_ADDR64 %28, %13, 0, 4, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
507 %29, $vcc = V_ADDC_U32_e64 %19, %17, undef $vcc, 0, implicit $exec
anatofuz
parents:
diff changeset
508 %24 = V_CNDMASK_B32_e64 0, 0, 0, 1, killed $vcc, implicit $exec
anatofuz
parents:
diff changeset
509 BUFFER_STORE_DWORD_ADDR64 %24, %28, killed %16, 0, 0, 0, 0, 0, 0, 0, implicit $exec
anatofuz
parents:
diff changeset
510 S_ENDPGM 0
anatofuz
parents:
diff changeset
511
anatofuz
parents:
diff changeset
512 ...