1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Machine Code Emitter *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* *|
7\*===----------------------------------------------------------------------===*/
8
9uint64_t R600MCCodeEmitter::getBinaryCodeForInstr(const MCInst &MI,
10 SmallVectorImpl<MCFixup> &Fixups,
11 const MCSubtargetInfo &STI) const {
12 static const uint64_t InstBits[] = {
13 UINT64_C(0),
14 UINT64_C(0),
15 UINT64_C(0),
16 UINT64_C(0),
17 UINT64_C(0),
18 UINT64_C(0),
19 UINT64_C(0),
20 UINT64_C(0),
21 UINT64_C(0),
22 UINT64_C(0),
23 UINT64_C(0),
24 UINT64_C(0),
25 UINT64_C(0),
26 UINT64_C(0),
27 UINT64_C(0),
28 UINT64_C(0),
29 UINT64_C(0),
30 UINT64_C(0),
31 UINT64_C(0),
32 UINT64_C(0),
33 UINT64_C(0),
34 UINT64_C(0),
35 UINT64_C(0),
36 UINT64_C(0),
37 UINT64_C(0),
38 UINT64_C(0),
39 UINT64_C(0),
40 UINT64_C(0),
41 UINT64_C(0),
42 UINT64_C(0),
43 UINT64_C(0),
44 UINT64_C(0),
45 UINT64_C(0),
46 UINT64_C(0),
47 UINT64_C(0),
48 UINT64_C(0),
49 UINT64_C(0),
50 UINT64_C(0),
51 UINT64_C(0),
52 UINT64_C(0),
53 UINT64_C(0),
54 UINT64_C(0),
55 UINT64_C(0),
56 UINT64_C(0),
57 UINT64_C(0),
58 UINT64_C(0),
59 UINT64_C(0),
60 UINT64_C(0),
61 UINT64_C(0),
62 UINT64_C(0),
63 UINT64_C(0),
64 UINT64_C(0),
65 UINT64_C(0),
66 UINT64_C(0),
67 UINT64_C(0),
68 UINT64_C(0),
69 UINT64_C(0),
70 UINT64_C(0),
71 UINT64_C(0),
72 UINT64_C(0),
73 UINT64_C(0),
74 UINT64_C(0),
75 UINT64_C(0),
76 UINT64_C(0),
77 UINT64_C(0),
78 UINT64_C(0),
79 UINT64_C(0),
80 UINT64_C(0),
81 UINT64_C(0),
82 UINT64_C(0),
83 UINT64_C(0),
84 UINT64_C(0),
85 UINT64_C(0),
86 UINT64_C(0),
87 UINT64_C(0),
88 UINT64_C(0),
89 UINT64_C(0),
90 UINT64_C(0),
91 UINT64_C(0),
92 UINT64_C(0),
93 UINT64_C(0),
94 UINT64_C(0),
95 UINT64_C(0),
96 UINT64_C(0),
97 UINT64_C(0),
98 UINT64_C(0),
99 UINT64_C(0),
100 UINT64_C(0),
101 UINT64_C(0),
102 UINT64_C(0),
103 UINT64_C(0),
104 UINT64_C(0),
105 UINT64_C(0),
106 UINT64_C(0),
107 UINT64_C(0),
108 UINT64_C(0),
109 UINT64_C(0),
110 UINT64_C(0),
111 UINT64_C(0),
112 UINT64_C(0),
113 UINT64_C(0),
114 UINT64_C(0),
115 UINT64_C(0),
116 UINT64_C(0),
117 UINT64_C(0),
118 UINT64_C(0),
119 UINT64_C(0),
120 UINT64_C(0),
121 UINT64_C(0),
122 UINT64_C(0),
123 UINT64_C(0),
124 UINT64_C(0),
125 UINT64_C(0),
126 UINT64_C(0),
127 UINT64_C(0),
128 UINT64_C(0),
129 UINT64_C(0),
130 UINT64_C(0),
131 UINT64_C(0),
132 UINT64_C(0),
133 UINT64_C(0),
134 UINT64_C(0),
135 UINT64_C(0),
136 UINT64_C(0),
137 UINT64_C(0),
138 UINT64_C(0),
139 UINT64_C(0),
140 UINT64_C(0),
141 UINT64_C(0),
142 UINT64_C(0),
143 UINT64_C(0),
144 UINT64_C(0),
145 UINT64_C(0),
146 UINT64_C(0),
147 UINT64_C(0),
148 UINT64_C(0),
149 UINT64_C(0),
150 UINT64_C(0),
151 UINT64_C(0),
152 UINT64_C(0),
153 UINT64_C(0),
154 UINT64_C(0),
155 UINT64_C(0),
156 UINT64_C(0),
157 UINT64_C(0),
158 UINT64_C(0),
159 UINT64_C(0),
160 UINT64_C(0),
161 UINT64_C(0),
162 UINT64_C(0),
163 UINT64_C(0),
164 UINT64_C(0),
165 UINT64_C(0),
166 UINT64_C(0),
167 UINT64_C(0),
168 UINT64_C(0),
169 UINT64_C(0),
170 UINT64_C(0),
171 UINT64_C(0),
172 UINT64_C(0),
173 UINT64_C(0),
174 UINT64_C(0),
175 UINT64_C(0),
176 UINT64_C(0),
177 UINT64_C(0),
178 UINT64_C(0),
179 UINT64_C(0),
180 UINT64_C(0),
181 UINT64_C(0),
182 UINT64_C(0),
183 UINT64_C(0),
184 UINT64_C(0),
185 UINT64_C(0),
186 UINT64_C(0),
187 UINT64_C(0),
188 UINT64_C(0),
189 UINT64_C(0),
190 UINT64_C(0),
191 UINT64_C(0),
192 UINT64_C(0),
193 UINT64_C(0),
194 UINT64_C(0),
195 UINT64_C(0),
196 UINT64_C(0),
197 UINT64_C(0),
198 UINT64_C(0),
199 UINT64_C(0),
200 UINT64_C(0),
201 UINT64_C(0),
202 UINT64_C(0),
203 UINT64_C(0),
204 UINT64_C(0),
205 UINT64_C(0),
206 UINT64_C(0),
207 UINT64_C(0),
208 UINT64_C(0),
209 UINT64_C(0),
210 UINT64_C(0),
211 UINT64_C(0),
212 UINT64_C(0),
213 UINT64_C(0),
214 UINT64_C(0),
215 UINT64_C(0),
216 UINT64_C(0),
217 UINT64_C(0),
218 UINT64_C(0),
219 UINT64_C(0),
220 UINT64_C(0),
221 UINT64_C(0),
222 UINT64_C(0),
223 UINT64_C(0),
224 UINT64_C(0),
225 UINT64_C(0),
226 UINT64_C(0),
227 UINT64_C(0),
228 UINT64_C(0),
229 UINT64_C(0),
230 UINT64_C(0),
231 UINT64_C(0),
232 UINT64_C(0),
233 UINT64_C(0),
234 UINT64_C(0),
235 UINT64_C(0),
236 UINT64_C(0),
237 UINT64_C(0),
238 UINT64_C(0),
239 UINT64_C(0),
240 UINT64_C(0),
241 UINT64_C(0),
242 UINT64_C(0),
243 UINT64_C(0),
244 UINT64_C(0),
245 UINT64_C(0),
246 UINT64_C(0),
247 UINT64_C(0),
248 UINT64_C(0),
249 UINT64_C(0),
250 UINT64_C(0),
251 UINT64_C(0),
252 UINT64_C(0),
253 UINT64_C(0),
254 UINT64_C(0),
255 UINT64_C(0),
256 UINT64_C(0),
257 UINT64_C(0),
258 UINT64_C(0),
259 UINT64_C(0),
260 UINT64_C(0),
261 UINT64_C(0),
262 UINT64_C(0),
263 UINT64_C(0),
264 UINT64_C(0),
265 UINT64_C(0),
266 UINT64_C(0),
267 UINT64_C(0),
268 UINT64_C(0),
269 UINT64_C(0),
270 UINT64_C(0),
271 UINT64_C(0),
272 UINT64_C(0),
273 UINT64_C(0),
274 UINT64_C(0),
275 UINT64_C(0),
276 UINT64_C(0),
277 UINT64_C(0),
278 UINT64_C(0),
279 UINT64_C(0),
280 UINT64_C(0),
281 UINT64_C(0),
282 UINT64_C(0),
283 UINT64_C(0),
284 UINT64_C(0),
285 UINT64_C(0),
286 UINT64_C(0),
287 UINT64_C(0),
288 UINT64_C(0),
289 UINT64_C(0),
290 UINT64_C(0),
291 UINT64_C(0),
292 UINT64_C(0),
293 UINT64_C(0),
294 UINT64_C(0),
295 UINT64_C(0),
296 UINT64_C(0),
297 UINT64_C(0),
298 UINT64_C(0),
299 UINT64_C(0),
300 UINT64_C(0),
301 UINT64_C(0),
302 UINT64_C(0),
303 UINT64_C(0),
304 UINT64_C(0),
305 UINT64_C(0),
306 UINT64_C(0),
307 UINT64_C(0),
308 UINT64_C(0),
309 UINT64_C(0),
310 UINT64_C(0),
311 UINT64_C(0),
312 UINT64_C(0),
313 UINT64_C(0),
314 UINT64_C(0),
315 UINT64_C(0),
316 UINT64_C(0),
317 UINT64_C(0),
318 UINT64_C(0),
319 UINT64_C(0),
320 UINT64_C(0),
321 UINT64_C(0),
322 UINT64_C(0),
323 UINT64_C(0),
324 UINT64_C(0),
325 UINT64_C(0),
326 UINT64_C(0),
327 UINT64_C(0),
328 UINT64_C(0),
329 UINT64_C(0),
330 UINT64_C(0),
331 UINT64_C(0),
332 UINT64_C(0),
333 UINT64_C(0),
334 UINT64_C(0),
335 UINT64_C(0),
336 UINT64_C(0),
337 UINT64_C(0),
338 UINT64_C(0),
339 UINT64_C(0),
340 UINT64_C(0),
341 UINT64_C(0),
342 UINT64_C(0),
343 UINT64_C(0),
344 UINT64_C(0),
345 UINT64_C(0),
346 UINT64_C(0),
347 UINT64_C(0),
348 UINT64_C(0),
349 UINT64_C(0),
350 UINT64_C(0),
351 UINT64_C(0),
352 UINT64_C(0),
353 UINT64_C(0),
354 UINT64_C(0),
355 UINT64_C(0),
356 UINT64_C(0),
357 UINT64_C(0),
358 UINT64_C(0),
359 UINT64_C(0),
360 UINT64_C(0),
361 UINT64_C(0),
362 UINT64_C(0),
363 UINT64_C(0),
364 UINT64_C(0),
365 UINT64_C(0),
366 UINT64_C(0), // ADD
367 UINT64_C(45079976738816), // ADDC_UINT
368 UINT64_C(28587302322176), // ADD_INT
369 UINT64_C(0), // ALU_CLAUSE
370 UINT64_C(26388279066624), // AND_INT
371 UINT64_C(11544872091648), // ASHR_eg
372 UINT64_C(61572651155456), // ASHR_r600
373 UINT64_C(93458488360960), // BCNT_INT
374 UINT64_C(175921860444160), // BFE_INT_eg
375 UINT64_C(140737488355328), // BFE_UINT_eg
376 UINT64_C(211106232532992), // BFI_INT_eg
377 UINT64_C(87960930222080), // BFM_INT_eg
378 UINT64_C(422212465065984), // BIT_ALIGN_INT_eg
379 UINT64_C(9895604649984), // CEIL
380 UINT64_C(11529215046068469760), // CF_ALU
381 UINT64_C(13258597302978740224), // CF_ALU_BREAK
382 UINT64_C(12970366926827028480), // CF_ALU_CONTINUE
383 UINT64_C(13546827679130451968), // CF_ALU_ELSE_AFTER
384 UINT64_C(12105675798371893248), // CF_ALU_POP_AFTER
385 UINT64_C(11817445422220181504), // CF_ALU_PUSH_BEFORE
386 UINT64_C(9565645608534933504), // CF_CALL_FS_EG
387 UINT64_C(9907919180215091200), // CF_CALL_FS_R600
388 UINT64_C(9367487224930631680), // CF_CONTINUE_EG
389 UINT64_C(9511602413006487552), // CF_CONTINUE_R600
390 UINT64_C(9457559217478041600), // CF_ELSE_EG
391 UINT64_C(9691746398101307392), // CF_ELSE_R600
392 UINT64_C(9799832789158199296), // CF_END_CM
393 UINT64_C(9232379236109516800), // CF_END_EG
394 UINT64_C(9232379236109516800), // CF_END_R600
395 UINT64_C(9403516021949595648), // CF_JUMP_EG
396 UINT64_C(9583660007044415488), // CF_JUMP_R600
397 UINT64_C(9421530420459077632), // CF_PUSH_EG
398 UINT64_C(9655717601082343424), // CF_PUSH_ELSE_R600
399 UINT64_C(9241386435364257792), // CF_TC_EG
400 UINT64_C(9259400833873739776), // CF_TC_R600
401 UINT64_C(9259400833873739776), // CF_VC_EG
402 UINT64_C(9295429630892703744), // CF_VC_R600
403 UINT64_C(985162418487296), // CNDE_INT
404 UINT64_C(879609302220800), // CNDE_eg
405 UINT64_C(844424930131968), // CNDE_r600
406 UINT64_C(1055531162664960), // CNDGE_INT
407 UINT64_C(949978046398464), // CNDGE_eg
408 UINT64_C(914793674309632), // CNDGE_r600
409 UINT64_C(1020346790576128), // CNDGT_INT
410 UINT64_C(914793674309632), // CNDGT_eg
411 UINT64_C(879609302220800), // CNDGT_r600
412 UINT64_C(78065325572096), // COS_cm
413 UINT64_C(78065325572096), // COS_eg
414 UINT64_C(61022895341568), // COS_r600
415 UINT64_C(61022895341568), // COS_r700
416 UINT64_C(105553116266496), // CUBE_eg_real
417 UINT64_C(45079976738816), // CUBE_r600_real
418 UINT64_C(104453604638720), // DOT4_eg
419 UINT64_C(43980465111040), // DOT4_r600
420 UINT64_C(9223372036854775808), // EG_ExportBuf
421 UINT64_C(9223372040076001280), // EG_ExportSwz
422 UINT64_C(9313444029402185728), // END_LOOP_EG
423 UINT64_C(9403516021949595648), // END_LOOP_R600
424 UINT64_C(70918499991552), // EXP_IEEE_cm
425 UINT64_C(70918499991552), // EXP_IEEE_eg
426 UINT64_C(53326313947136), // EXP_IEEE_r600
427 UINT64_C(0), // FETCH_CLAUSE
428 UINT64_C(94008244174848), // FFBH_UINT
429 UINT64_C(94557999988736), // FFBL_INT
430 UINT64_C(10995116277760), // FLOOR
431 UINT64_C(89610197663744), // FLT16_TO_FLT32
432 UINT64_C(89060441849856), // FLT32_TO_FLT16
433 UINT64_C(43980465111040), // FLT_TO_INT_eg
434 UINT64_C(58823872086016), // FLT_TO_INT_r600
435 UINT64_C(84662395338752), // FLT_TO_UINT_eg
436 UINT64_C(66520453480448), // FLT_TO_UINT_r600
437 UINT64_C(246290604621824), // FMA_eg
438 UINT64_C(8796093022208), // FRACT
439 UINT64_C(46181635850240), // GROUP_BARRIER
440 UINT64_C(123145302310912), // INTERP_LOAD_P0
441 UINT64_C(4294967295), // INTERP_PAIR_XY
442 UINT64_C(4294967295), // INTERP_PAIR_ZW
443 UINT64_C(4294967295), // INTERP_VEC_LOAD
444 UINT64_C(5747147278385152), // INTERP_XY
445 UINT64_C(5747697034199040), // INTERP_ZW
446 UINT64_C(85212151152640), // INT_TO_FLT_eg
447 UINT64_C(59373627899904), // INT_TO_FLT_r600
448 UINT64_C(24739011624960), // KILLGT
449 UINT64_C(598134325510144), // LDS_ADD
450 UINT64_C(288828510477221888), // LDS_ADD_RET
451 UINT64_C(81662927618179072), // LDS_AND
452 UINT64_C(369893303769890816), // LDS_AND_RET
453 UINT64_C(486986894081523712), // LDS_BYTE_READ_RET
454 UINT64_C(162727720910848000), // LDS_BYTE_WRITE
455 UINT64_C(144713322401366016), // LDS_CMPST
456 UINT64_C(432943698553077760), // LDS_CMPST_RET
457 UINT64_C(54641329853956096), // LDS_MAX_INT
458 UINT64_C(342871706005667840), // LDS_MAX_INT_RET
459 UINT64_C(72655728363438080), // LDS_MAX_UINT
460 UINT64_C(360886104515149824), // LDS_MAX_UINT_RET
461 UINT64_C(45634130599215104), // LDS_MIN_INT
462 UINT64_C(333864506750926848), // LDS_MIN_INT_RET
463 UINT64_C(63648529108697088), // LDS_MIN_UINT
464 UINT64_C(351878905260408832), // LDS_MIN_UINT_RET
465 UINT64_C(90670126872920064), // LDS_OR
466 UINT64_C(378900503024631808), // LDS_OR_RET
467 UINT64_C(450958097062559744), // LDS_READ_RET
468 UINT64_C(505001292591005696), // LDS_SHORT_READ_RET
469 UINT64_C(171734920165588992), // LDS_SHORT_WRITE
470 UINT64_C(9605333580251136), // LDS_SUB
471 UINT64_C(297835709731962880), // LDS_SUB_RET
472 UINT64_C(495994093336264704), // LDS_UBYTE_READ_RET
473 UINT64_C(514008491845746688), // LDS_USHORT_READ_RET
474 UINT64_C(117691724637143040), // LDS_WRITE
475 UINT64_C(117691724637143040), // LDS_WRXCHG
476 UINT64_C(405922100788854784), // LDS_WRXCHG_RET
477 UINT64_C(99677326127661056), // LDS_XOR
478 UINT64_C(387907702279372800), // LDS_XOR_RET
479 UINT64_C(0), // LITERALS
480 UINT64_C(71468255805440), // LOG_CLAMPED_eg
481 UINT64_C(53876069761024), // LOG_CLAMPED_r600
482 UINT64_C(72018011619328), // LOG_IEEE_cm
483 UINT64_C(72018011619328), // LOG_IEEE_eg
484 UINT64_C(54425825574912), // LOG_IEEE_r600
485 UINT64_C(9385501623440113664), // LOOP_BREAK_EG
486 UINT64_C(9547631210025451520), // LOOP_BREAK_R600
487 UINT64_C(12644383719424), // LSHL_eg
488 UINT64_C(62672162783232), // LSHL_r600
489 UINT64_C(12094627905536), // LSHR_eg
490 UINT64_C(62122406969344), // LSHR_r600
491 UINT64_C(1649267441664), // MAX
492 UINT64_C(2748779069440), // MAX_DX10
493 UINT64_C(29686813949952), // MAX_INT
494 UINT64_C(30786325577728), // MAX_UINT
495 UINT64_C(2199023255552), // MIN
496 UINT64_C(3298534883328), // MIN_DX10
497 UINT64_C(30236569763840), // MIN_INT
498 UINT64_C(31336081391616), // MIN_UINT
499 UINT64_C(13743895347200), // MOV
500 UINT64_C(112150186033152), // MOVA_INT_eg
501 UINT64_C(549755813888), // MUL
502 UINT64_C(844424930131968), // MULADD_IEEE_eg
503 UINT64_C(703687441776640), // MULADD_IEEE_r600
504 UINT64_C(281474976710656), // MULADD_INT24_cm
505 UINT64_C(562949953421312), // MULADD_UINT24_eg
506 UINT64_C(703687441776640), // MULADD_eg
507 UINT64_C(562949953421312), // MULADD_r600
508 UINT64_C(79164837199872), // MULHI_INT_cm
509 UINT64_C(50577534877696), // MULHI_INT_cm24
510 UINT64_C(79164837199872), // MULHI_INT_eg
511 UINT64_C(63771674411008), // MULHI_INT_r600
512 UINT64_C(97856534872064), // MULHI_UINT24_eg
513 UINT64_C(80264348827648), // MULHI_UINT_cm
514 UINT64_C(97856534872064), // MULHI_UINT_cm24
515 UINT64_C(80264348827648), // MULHI_UINT_eg
516 UINT64_C(64871186038784), // MULHI_UINT_r600
517 UINT64_C(78615081385984), // MULLO_INT_cm
518 UINT64_C(78615081385984), // MULLO_INT_eg
519 UINT64_C(63221918597120), // MULLO_INT_r600
520 UINT64_C(79714593013760), // MULLO_UINT_cm
521 UINT64_C(79714593013760), // MULLO_UINT_eg
522 UINT64_C(64321430224896), // MULLO_UINT_r600
523 UINT64_C(1099511627776), // MUL_IEEE
524 UINT64_C(50027779063808), // MUL_INT24_cm
525 UINT64_C(1090715534753792), // MUL_LIT_eg
526 UINT64_C(422212465065984), // MUL_LIT_r600
527 UINT64_C(99505802313728), // MUL_UINT24_eg
528 UINT64_C(28037546508288), // NOT_INT
529 UINT64_C(26938034880512), // OR_INT
530 UINT64_C(0), // PAD
531 UINT64_C(9475573615987523584), // POP_EG
532 UINT64_C(9727775195120271360), // POP_R600
533 UINT64_C(17592186044416), // PRED_SETE
534 UINT64_C(36283883716608), // PRED_SETE_INT
535 UINT64_C(18691697672192), // PRED_SETGE
536 UINT64_C(37383395344384), // PRED_SETGE_INT
537 UINT64_C(18141941858304), // PRED_SETGT
538 UINT64_C(36833639530496), // PRED_SETGT_INT
539 UINT64_C(19241453486080), // PRED_SETNE
540 UINT64_C(37933151158272), // PRED_SETNE_INT
541 UINT64_C(9223372036854775808), // R600_ExportBuf
542 UINT64_C(9223372040076001280), // R600_ExportSwz
543 UINT64_C(10772874191460901488), // RAT_ATOMIC_ADD_NORET
544 UINT64_C(10772874191460900976), // RAT_ATOMIC_ADD_RTN
545 UINT64_C(10772874191460901600), // RAT_ATOMIC_AND_NORET
546 UINT64_C(10772874191460901088), // RAT_ATOMIC_AND_RTN
547 UINT64_C(10772874191460901440), // RAT_ATOMIC_CMPXCHG_INT_NORET
548 UINT64_C(10772874191460900928), // RAT_ATOMIC_CMPXCHG_INT_RTN
549 UINT64_C(10772874191460901680), // RAT_ATOMIC_DEC_UINT_NORET
550 UINT64_C(10772874191460901168), // RAT_ATOMIC_DEC_UINT_RTN
551 UINT64_C(10772874191460901664), // RAT_ATOMIC_INC_UINT_NORET
552 UINT64_C(10772874191460901152), // RAT_ATOMIC_INC_UINT_RTN
553 UINT64_C(10772874191460901568), // RAT_ATOMIC_MAX_INT_NORET
554 UINT64_C(10772874191460901056), // RAT_ATOMIC_MAX_INT_RTN
555 UINT64_C(10772874191460901584), // RAT_ATOMIC_MAX_UINT_NORET
556 UINT64_C(10772874191460901072), // RAT_ATOMIC_MAX_UINT_RTN
557 UINT64_C(10772874191460901536), // RAT_ATOMIC_MIN_INT_NORET
558 UINT64_C(10772874191460901024), // RAT_ATOMIC_MIN_INT_RTN
559 UINT64_C(10772874191460901552), // RAT_ATOMIC_MIN_UINT_NORET
560 UINT64_C(10772874191460901040), // RAT_ATOMIC_MIN_UINT_RTN
561 UINT64_C(10772874191460901616), // RAT_ATOMIC_OR_NORET
562 UINT64_C(10772874191460901104), // RAT_ATOMIC_OR_RTN
563 UINT64_C(10772874191460901520), // RAT_ATOMIC_RSUB_NORET
564 UINT64_C(10772874191460901008), // RAT_ATOMIC_RSUB_RTN
565 UINT64_C(10772874191460901504), // RAT_ATOMIC_SUB_NORET
566 UINT64_C(10772874191460900992), // RAT_ATOMIC_SUB_RTN
567 UINT64_C(10772874191460901408), // RAT_ATOMIC_XCHG_INT_NORET
568 UINT64_C(10772874191460900880), // RAT_ATOMIC_XCHG_INT_RTN
569 UINT64_C(10772874191460901632), // RAT_ATOMIC_XOR_NORET
570 UINT64_C(10772874191460901120), // RAT_ATOMIC_XOR_RTN
571 UINT64_C(10772874191460901136), // RAT_MSKOR
572 UINT64_C(10790888589970383168), // RAT_STORE_DWORD128
573 UINT64_C(10790642299365761344), // RAT_STORE_DWORD32
574 UINT64_C(10790677483737850176), // RAT_STORE_DWORD64
575 UINT64_C(10772874191460900880), // RAT_STORE_TYPED_cm
576 UINT64_C(10772874191460900880), // RAT_STORE_TYPED_eg
577 UINT64_C(10790888589970382880), // RAT_WRITE_CACHELESS_128_eg
578 UINT64_C(10790642299365761056), // RAT_WRITE_CACHELESS_32_eg
579 UINT64_C(10790677483737849888), // RAT_WRITE_CACHELESS_64_eg
580 UINT64_C(74217034874880), // RECIPSQRT_CLAMPED_cm
581 UINT64_C(74217034874880), // RECIPSQRT_CLAMPED_eg
582 UINT64_C(56624848830464), // RECIPSQRT_CLAMPED_r600
583 UINT64_C(75316546502656), // RECIPSQRT_IEEE_cm
584 UINT64_C(75316546502656), // RECIPSQRT_IEEE_eg
585 UINT64_C(57724360458240), // RECIPSQRT_IEEE_r600
586 UINT64_C(72567767433216), // RECIP_CLAMPED_cm
587 UINT64_C(72567767433216), // RECIP_CLAMPED_eg
588 UINT64_C(54975581388800), // RECIP_CLAMPED_r600
589 UINT64_C(73667279060992), // RECIP_IEEE_cm
590 UINT64_C(73667279060992), // RECIP_IEEE_eg
591 UINT64_C(56075093016576), // RECIP_IEEE_r600
592 UINT64_C(81363860455424), // RECIP_UINT_eg
593 UINT64_C(65970697666560), // RECIP_UINT_r600
594 UINT64_C(10445360463872), // RNDNE
595 UINT64_C(4398046511104), // SETE
596 UINT64_C(6597069766656), // SETE_DX10
597 UINT64_C(31885837205504), // SETE_INT
598 UINT64_C(7696581394432), // SETGE_DX10
599 UINT64_C(32985348833280), // SETGE_INT
600 UINT64_C(34634616274944), // SETGE_UINT
601 UINT64_C(7146825580544), // SETGT_DX10
602 UINT64_C(32435593019392), // SETGT_INT
603 UINT64_C(34084860461056), // SETGT_UINT
604 UINT64_C(8246337208320), // SETNE_DX10
605 UINT64_C(33535104647168), // SETNE_INT
606 UINT64_C(5497558138880), // SGE
607 UINT64_C(4947802324992), // SGT
608 UINT64_C(77515569758208), // SIN_cm
609 UINT64_C(77515569758208), // SIN_eg
610 UINT64_C(60473139527680), // SIN_r600
611 UINT64_C(60473139527680), // SIN_r700
612 UINT64_C(6047313952768), // SNE
613 UINT64_C(45629732552704), // SUBB_UINT
614 UINT64_C(29137058136064), // SUB_INT
615 UINT64_C(7), // TEX_GET_GRADIENTS_H
616 UINT64_C(8), // TEX_GET_GRADIENTS_V
617 UINT64_C(4), // TEX_GET_TEXTURE_RESINFO
618 UINT64_C(3), // TEX_LD
619 UINT64_C(35), // TEX_LDPTR
620 UINT64_C(16), // TEX_SAMPLE
621 UINT64_C(24), // TEX_SAMPLE_C
622 UINT64_C(28), // TEX_SAMPLE_C_G
623 UINT64_C(25), // TEX_SAMPLE_C_L
624 UINT64_C(26), // TEX_SAMPLE_C_LB
625 UINT64_C(20), // TEX_SAMPLE_G
626 UINT64_C(17), // TEX_SAMPLE_L
627 UINT64_C(18), // TEX_SAMPLE_LB
628 UINT64_C(11), // TEX_SET_GRADIENTS_H
629 UINT64_C(12), // TEX_SET_GRADIENTS_V
630 UINT64_C(16775081780284751936), // TEX_VTX_CONSTBUF
631 UINT64_C(9236056004066541632), // TEX_VTX_TEXBUF
632 UINT64_C(9345848836096), // TRUNC
633 UINT64_C(85761906966528), // UINT_TO_FLT_eg
634 UINT64_C(59923383713792), // UINT_TO_FLT_r600
635 UINT64_C(1769087820812517440), // VTX_READ_128_cm
636 UINT64_C(1769087821886259264), // VTX_READ_128_eg
637 UINT64_C(1251983104222953536), // VTX_READ_16_cm
638 UINT64_C(1251983104357171264), // VTX_READ_16_eg
639 UINT64_C(1396098292298809408), // VTX_READ_32_cm
640 UINT64_C(1396098292567244864), // VTX_READ_32_eg
641 UINT64_C(1684223115334254656), // VTX_READ_64_cm
642 UINT64_C(1684223115871125568), // VTX_READ_64_eg
643 UINT64_C(1179925510185025600), // VTX_READ_8_cm
644 UINT64_C(1179925510252134464), // VTX_READ_8_eg
645 UINT64_C(9331458427911667712), // WHILE_LOOP_EG
646 UINT64_C(9439544818968559616), // WHILE_LOOP_R600
647 UINT64_C(27487790694400), // XOR_INT
648 UINT64_C(0)
649 };
650 const unsigned opcode = MI.getOpcode();
651 uint64_t Value = InstBits[opcode];
652 uint64_t op = 0;
653 (void)op; // suppress warning
654 switch (opcode) {
655 case R600::CF_CALL_FS_EG:
656 case R600::CF_CALL_FS_R600:
657 case R600::CF_END_CM:
658 case R600::CF_END_EG:
659 case R600::CF_END_R600:
660 case R600::GROUP_BARRIER:
661 case R600::INTERP_PAIR_XY:
662 case R600::INTERP_PAIR_ZW:
663 case R600::INTERP_VEC_LOAD:
664 case R600::PAD: {
665 break;
666 }
667 case R600::CF_CONTINUE_EG:
668 case R600::END_LOOP_EG:
669 case R600::LOOP_BREAK_EG:
670 case R600::WHILE_LOOP_EG: {
671 // op: ADDR
672 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
673 op &= UINT64_C(16777215);
674 Value |= op;
675 break;
676 }
677 case R600::CF_TC_EG:
678 case R600::CF_VC_EG: {
679 // op: ADDR
680 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
681 op &= UINT64_C(16777215);
682 Value |= op;
683 // op: COUNT
684 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
685 op &= UINT64_C(63);
686 op <<= 42;
687 Value |= op;
688 break;
689 }
690 case R600::CF_ELSE_EG:
691 case R600::CF_JUMP_EG:
692 case R600::CF_PUSH_EG:
693 case R600::POP_EG: {
694 // op: ADDR
695 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
696 op &= UINT64_C(16777215);
697 Value |= op;
698 // op: POP_COUNT
699 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
700 op &= UINT64_C(7);
701 op <<= 32;
702 Value |= op;
703 break;
704 }
705 case R600::CF_ALU:
706 case R600::CF_ALU_BREAK:
707 case R600::CF_ALU_CONTINUE:
708 case R600::CF_ALU_ELSE_AFTER:
709 case R600::CF_ALU_POP_AFTER:
710 case R600::CF_ALU_PUSH_BEFORE: {
711 // op: ADDR
712 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
713 op &= UINT64_C(4194303);
714 Value |= op;
715 // op: KCACHE_BANK0
716 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
717 op &= UINT64_C(15);
718 op <<= 22;
719 Value |= op;
720 // op: KCACHE_BANK1
721 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
722 op &= UINT64_C(15);
723 op <<= 26;
724 Value |= op;
725 // op: KCACHE_MODE0
726 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
727 op &= UINT64_C(3);
728 op <<= 30;
729 Value |= op;
730 // op: KCACHE_MODE1
731 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
732 op &= UINT64_C(3);
733 op <<= 32;
734 Value |= op;
735 // op: KCACHE_ADDR0
736 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
737 op &= UINT64_C(255);
738 op <<= 34;
739 Value |= op;
740 // op: KCACHE_ADDR1
741 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
742 op &= UINT64_C(255);
743 op <<= 42;
744 Value |= op;
745 // op: COUNT
746 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
747 op &= UINT64_C(127);
748 op <<= 50;
749 Value |= op;
750 break;
751 }
752 case R600::CF_CONTINUE_R600:
753 case R600::CF_PUSH_ELSE_R600:
754 case R600::END_LOOP_R600:
755 case R600::LOOP_BREAK_R600:
756 case R600::WHILE_LOOP_R600: {
757 // op: ADDR
758 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
759 op &= UINT64_C(4294967295);
760 Value |= op;
761 break;
762 }
763 case R600::CF_TC_R600:
764 case R600::CF_VC_R600: {
765 // op: ADDR
766 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
767 op &= UINT64_C(4294967295);
768 Value |= op;
769 // op: CNT
770 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
771 Value |= (op & UINT64_C(8)) << 48;
772 Value |= (op & UINT64_C(7)) << 42;
773 break;
774 }
775 case R600::CF_ELSE_R600:
776 case R600::CF_JUMP_R600:
777 case R600::POP_R600: {
778 // op: ADDR
779 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
780 op &= UINT64_C(4294967295);
781 Value |= op;
782 // op: POP_COUNT
783 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
784 op &= UINT64_C(7);
785 op <<= 32;
786 Value |= op;
787 break;
788 }
789 case R600::TEX_GET_GRADIENTS_H:
790 case R600::TEX_GET_GRADIENTS_V:
791 case R600::TEX_GET_TEXTURE_RESINFO:
792 case R600::TEX_LD:
793 case R600::TEX_LDPTR:
794 case R600::TEX_SAMPLE:
795 case R600::TEX_SAMPLE_C:
796 case R600::TEX_SAMPLE_C_G:
797 case R600::TEX_SAMPLE_C_L:
798 case R600::TEX_SAMPLE_C_LB:
799 case R600::TEX_SAMPLE_G:
800 case R600::TEX_SAMPLE_L:
801 case R600::TEX_SAMPLE_LB:
802 case R600::TEX_SET_GRADIENTS_H:
803 case R600::TEX_SET_GRADIENTS_V: {
804 // op: RESOURCE_ID
805 op = getMachineOpValue(MI, MO: MI.getOperand(i: 13), Fixups, STI);
806 op &= UINT64_C(255);
807 op <<= 8;
808 Value |= op;
809 // op: SRC_GPR
810 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
811 op &= UINT64_C(127);
812 op <<= 16;
813 Value |= op;
814 // op: DST_GPR
815 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
816 op &= UINT64_C(127);
817 op <<= 32;
818 Value |= op;
819 // op: DST_SEL_X
820 op = getMachineOpValue(MI, MO: MI.getOperand(i: 9), Fixups, STI);
821 op &= UINT64_C(7);
822 op <<= 41;
823 Value |= op;
824 // op: DST_SEL_Y
825 op = getMachineOpValue(MI, MO: MI.getOperand(i: 10), Fixups, STI);
826 op &= UINT64_C(7);
827 op <<= 44;
828 Value |= op;
829 // op: DST_SEL_Z
830 op = getMachineOpValue(MI, MO: MI.getOperand(i: 11), Fixups, STI);
831 op &= UINT64_C(7);
832 op <<= 47;
833 Value |= op;
834 // op: DST_SEL_W
835 op = getMachineOpValue(MI, MO: MI.getOperand(i: 12), Fixups, STI);
836 op &= UINT64_C(7);
837 op <<= 50;
838 Value |= op;
839 // op: COORD_TYPE_X
840 op = getMachineOpValue(MI, MO: MI.getOperand(i: 15), Fixups, STI);
841 op &= UINT64_C(1);
842 op <<= 60;
843 Value |= op;
844 // op: COORD_TYPE_Y
845 op = getMachineOpValue(MI, MO: MI.getOperand(i: 16), Fixups, STI);
846 op &= UINT64_C(1);
847 op <<= 61;
848 Value |= op;
849 // op: COORD_TYPE_Z
850 op = getMachineOpValue(MI, MO: MI.getOperand(i: 17), Fixups, STI);
851 op &= UINT64_C(1);
852 op <<= 62;
853 Value |= op;
854 // op: COORD_TYPE_W
855 op = getMachineOpValue(MI, MO: MI.getOperand(i: 18), Fixups, STI);
856 op &= UINT64_C(1);
857 op <<= 63;
858 Value |= op;
859 break;
860 }
861 case R600::ALU_CLAUSE:
862 case R600::FETCH_CLAUSE: {
863 // op: addr
864 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
865 op &= UINT64_C(255);
866 Value |= op;
867 break;
868 }
869 case R600::EG_ExportBuf: {
870 // op: arraybase
871 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
872 op &= UINT64_C(8191);
873 Value |= op;
874 // op: type
875 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
876 op &= UINT64_C(3);
877 op <<= 13;
878 Value |= op;
879 // op: gpr
880 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
881 op &= UINT64_C(127);
882 op <<= 15;
883 Value |= op;
884 // op: arraySize
885 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
886 op &= UINT64_C(4095);
887 op <<= 32;
888 Value |= op;
889 // op: compMask
890 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
891 op &= UINT64_C(15);
892 op <<= 44;
893 Value |= op;
894 // op: eop
895 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
896 op &= UINT64_C(1);
897 op <<= 53;
898 Value |= op;
899 // op: inst
900 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
901 op &= UINT64_C(255);
902 op <<= 54;
903 Value |= op;
904 break;
905 }
906 case R600::R600_ExportBuf: {
907 // op: arraybase
908 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
909 op &= UINT64_C(8191);
910 Value |= op;
911 // op: type
912 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
913 op &= UINT64_C(3);
914 op <<= 13;
915 Value |= op;
916 // op: gpr
917 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
918 op &= UINT64_C(127);
919 op <<= 15;
920 Value |= op;
921 // op: arraySize
922 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
923 op &= UINT64_C(4095);
924 op <<= 32;
925 Value |= op;
926 // op: compMask
927 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
928 op &= UINT64_C(15);
929 op <<= 44;
930 Value |= op;
931 // op: eop
932 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
933 op &= UINT64_C(1);
934 op <<= 53;
935 Value |= op;
936 // op: inst
937 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
938 op &= UINT64_C(255);
939 op <<= 55;
940 Value |= op;
941 break;
942 }
943 case R600::EG_ExportSwz: {
944 // op: arraybase
945 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
946 op &= UINT64_C(8191);
947 Value |= op;
948 // op: type
949 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
950 op &= UINT64_C(3);
951 op <<= 13;
952 Value |= op;
953 // op: gpr
954 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
955 op &= UINT64_C(127);
956 op <<= 15;
957 Value |= op;
958 // op: sw_x
959 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
960 op &= UINT64_C(7);
961 op <<= 32;
962 Value |= op;
963 // op: sw_y
964 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
965 op &= UINT64_C(7);
966 op <<= 35;
967 Value |= op;
968 // op: sw_z
969 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
970 op &= UINT64_C(7);
971 op <<= 38;
972 Value |= op;
973 // op: sw_w
974 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
975 op &= UINT64_C(7);
976 op <<= 41;
977 Value |= op;
978 // op: eop
979 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
980 op &= UINT64_C(1);
981 op <<= 53;
982 Value |= op;
983 // op: inst
984 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
985 op &= UINT64_C(255);
986 op <<= 54;
987 Value |= op;
988 break;
989 }
990 case R600::R600_ExportSwz: {
991 // op: arraybase
992 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
993 op &= UINT64_C(8191);
994 Value |= op;
995 // op: type
996 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
997 op &= UINT64_C(3);
998 op <<= 13;
999 Value |= op;
1000 // op: gpr
1001 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1002 op &= UINT64_C(127);
1003 op <<= 15;
1004 Value |= op;
1005 // op: sw_x
1006 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1007 op &= UINT64_C(7);
1008 op <<= 32;
1009 Value |= op;
1010 // op: sw_y
1011 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1012 op &= UINT64_C(7);
1013 op <<= 35;
1014 Value |= op;
1015 // op: sw_z
1016 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1017 op &= UINT64_C(7);
1018 op <<= 38;
1019 Value |= op;
1020 // op: sw_w
1021 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
1022 op &= UINT64_C(7);
1023 op <<= 41;
1024 Value |= op;
1025 // op: eop
1026 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1027 op &= UINT64_C(1);
1028 op <<= 53;
1029 Value |= op;
1030 // op: inst
1031 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1032 op &= UINT64_C(255);
1033 op <<= 55;
1034 Value |= op;
1035 break;
1036 }
1037 case R600::TEX_VTX_CONSTBUF:
1038 case R600::TEX_VTX_TEXBUF: {
1039 // op: dst_gpr
1040 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1041 op &= UINT64_C(127);
1042 op <<= 32;
1043 Value |= op;
1044 // op: src_gpr
1045 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1046 op &= UINT64_C(127);
1047 op <<= 16;
1048 Value |= op;
1049 // op: buffer_id
1050 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1051 op &= UINT64_C(255);
1052 op <<= 8;
1053 Value |= op;
1054 break;
1055 }
1056 case R600::LITERALS: {
1057 // op: literal1
1058 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1059 op &= UINT64_C(4294967295);
1060 Value |= op;
1061 // op: literal2
1062 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1063 op &= UINT64_C(4294967295);
1064 op <<= 32;
1065 Value |= op;
1066 break;
1067 }
1068 case R600::RAT_STORE_TYPED_cm: {
1069 // op: rat_id
1070 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1071 op &= UINT64_C(15);
1072 Value |= op;
1073 // op: rw_gpr
1074 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1075 op &= UINT64_C(127);
1076 op <<= 15;
1077 Value |= op;
1078 // op: index_gpr
1079 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1080 op &= UINT64_C(127);
1081 op <<= 23;
1082 Value |= op;
1083 break;
1084 }
1085 case R600::RAT_STORE_TYPED_eg: {
1086 // op: rat_id
1087 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1088 op &= UINT64_C(15);
1089 Value |= op;
1090 // op: rw_gpr
1091 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1092 op &= UINT64_C(127);
1093 op <<= 15;
1094 Value |= op;
1095 // op: index_gpr
1096 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1097 op &= UINT64_C(127);
1098 op <<= 23;
1099 Value |= op;
1100 // op: eop
1101 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1102 op &= UINT64_C(1);
1103 op <<= 53;
1104 Value |= op;
1105 break;
1106 }
1107 case R600::RAT_MSKOR:
1108 case R600::RAT_STORE_DWORD32:
1109 case R600::RAT_STORE_DWORD64:
1110 case R600::RAT_STORE_DWORD128: {
1111 // op: rw_gpr
1112 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1113 op &= UINT64_C(127);
1114 op <<= 15;
1115 Value |= op;
1116 // op: index_gpr
1117 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1118 op &= UINT64_C(127);
1119 op <<= 23;
1120 Value |= op;
1121 break;
1122 }
1123 case R600::RAT_WRITE_CACHELESS_32_eg:
1124 case R600::RAT_WRITE_CACHELESS_64_eg:
1125 case R600::RAT_WRITE_CACHELESS_128_eg: {
1126 // op: rw_gpr
1127 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1128 op &= UINT64_C(127);
1129 op <<= 15;
1130 Value |= op;
1131 // op: index_gpr
1132 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1133 op &= UINT64_C(127);
1134 op <<= 23;
1135 Value |= op;
1136 // op: eop
1137 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1138 op &= UINT64_C(1);
1139 op <<= 53;
1140 Value |= op;
1141 break;
1142 }
1143 case R600::RAT_ATOMIC_ADD_NORET:
1144 case R600::RAT_ATOMIC_ADD_RTN:
1145 case R600::RAT_ATOMIC_AND_NORET:
1146 case R600::RAT_ATOMIC_AND_RTN:
1147 case R600::RAT_ATOMIC_CMPXCHG_INT_NORET:
1148 case R600::RAT_ATOMIC_CMPXCHG_INT_RTN:
1149 case R600::RAT_ATOMIC_DEC_UINT_NORET:
1150 case R600::RAT_ATOMIC_DEC_UINT_RTN:
1151 case R600::RAT_ATOMIC_INC_UINT_NORET:
1152 case R600::RAT_ATOMIC_INC_UINT_RTN:
1153 case R600::RAT_ATOMIC_MAX_INT_NORET:
1154 case R600::RAT_ATOMIC_MAX_INT_RTN:
1155 case R600::RAT_ATOMIC_MAX_UINT_NORET:
1156 case R600::RAT_ATOMIC_MAX_UINT_RTN:
1157 case R600::RAT_ATOMIC_MIN_INT_NORET:
1158 case R600::RAT_ATOMIC_MIN_INT_RTN:
1159 case R600::RAT_ATOMIC_MIN_UINT_NORET:
1160 case R600::RAT_ATOMIC_MIN_UINT_RTN:
1161 case R600::RAT_ATOMIC_OR_NORET:
1162 case R600::RAT_ATOMIC_OR_RTN:
1163 case R600::RAT_ATOMIC_RSUB_NORET:
1164 case R600::RAT_ATOMIC_RSUB_RTN:
1165 case R600::RAT_ATOMIC_SUB_NORET:
1166 case R600::RAT_ATOMIC_SUB_RTN:
1167 case R600::RAT_ATOMIC_XCHG_INT_NORET:
1168 case R600::RAT_ATOMIC_XCHG_INT_RTN:
1169 case R600::RAT_ATOMIC_XOR_NORET:
1170 case R600::RAT_ATOMIC_XOR_RTN: {
1171 // op: rw_gpr
1172 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1173 op &= UINT64_C(127);
1174 op <<= 15;
1175 Value |= op;
1176 // op: index_gpr
1177 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1178 op &= UINT64_C(127);
1179 op <<= 23;
1180 Value |= op;
1181 break;
1182 }
1183 case R600::LDS_CMPST: {
1184 // op: src0
1185 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1186 Value |= (op & UINT64_C(1536)) << 1;
1187 Value |= (op & UINT64_C(511));
1188 // op: src0_rel
1189 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1190 op &= UINT64_C(1);
1191 op <<= 9;
1192 Value |= op;
1193 // op: src1
1194 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1195 Value |= (op & UINT64_C(1536)) << 14;
1196 Value |= (op & UINT64_C(511)) << 13;
1197 // op: src1_rel
1198 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1199 op &= UINT64_C(1);
1200 op <<= 22;
1201 Value |= op;
1202 // op: pred_sel
1203 op = getMachineOpValue(MI, MO: MI.getOperand(i: 10), Fixups, STI);
1204 op &= UINT64_C(3);
1205 op <<= 29;
1206 Value |= op;
1207 // op: last
1208 op = getMachineOpValue(MI, MO: MI.getOperand(i: 9), Fixups, STI);
1209 op &= UINT64_C(1);
1210 op <<= 31;
1211 Value |= op;
1212 // op: src2
1213 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
1214 Value |= (op & UINT64_C(1536)) << 33;
1215 Value |= (op & UINT64_C(511)) << 32;
1216 // op: src2_rel
1217 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1218 op &= UINT64_C(1);
1219 op <<= 41;
1220 Value |= op;
1221 // op: bank_swizzle
1222 op = getMachineOpValue(MI, MO: MI.getOperand(i: 11), Fixups, STI);
1223 op &= UINT64_C(7);
1224 op <<= 50;
1225 Value |= op;
1226 break;
1227 }
1228 case R600::LDS_ADD:
1229 case R600::LDS_AND:
1230 case R600::LDS_BYTE_WRITE:
1231 case R600::LDS_MAX_INT:
1232 case R600::LDS_MAX_UINT:
1233 case R600::LDS_MIN_INT:
1234 case R600::LDS_MIN_UINT:
1235 case R600::LDS_OR:
1236 case R600::LDS_SHORT_WRITE:
1237 case R600::LDS_SUB:
1238 case R600::LDS_WRITE:
1239 case R600::LDS_WRXCHG:
1240 case R600::LDS_XOR: {
1241 // op: src0
1242 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1243 Value |= (op & UINT64_C(1536)) << 1;
1244 Value |= (op & UINT64_C(511));
1245 // op: src0_rel
1246 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1247 op &= UINT64_C(1);
1248 op <<= 9;
1249 Value |= op;
1250 // op: src1
1251 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1252 Value |= (op & UINT64_C(1536)) << 14;
1253 Value |= (op & UINT64_C(511)) << 13;
1254 // op: src1_rel
1255 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1256 op &= UINT64_C(1);
1257 op <<= 22;
1258 Value |= op;
1259 // op: pred_sel
1260 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1261 op &= UINT64_C(3);
1262 op <<= 29;
1263 Value |= op;
1264 // op: last
1265 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
1266 op &= UINT64_C(1);
1267 op <<= 31;
1268 Value |= op;
1269 // op: bank_swizzle
1270 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1271 op &= UINT64_C(7);
1272 op <<= 50;
1273 Value |= op;
1274 break;
1275 }
1276 case R600::LDS_BYTE_READ_RET:
1277 case R600::LDS_READ_RET:
1278 case R600::LDS_SHORT_READ_RET:
1279 case R600::LDS_UBYTE_READ_RET:
1280 case R600::LDS_USHORT_READ_RET: {
1281 // op: src0
1282 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1283 Value |= (op & UINT64_C(1536)) << 1;
1284 Value |= (op & UINT64_C(511));
1285 // op: src0_rel
1286 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1287 op &= UINT64_C(1);
1288 op <<= 9;
1289 Value |= op;
1290 // op: pred_sel
1291 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1292 op &= UINT64_C(3);
1293 op <<= 29;
1294 Value |= op;
1295 // op: last
1296 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1297 op &= UINT64_C(1);
1298 op <<= 31;
1299 Value |= op;
1300 // op: bank_swizzle
1301 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
1302 op &= UINT64_C(7);
1303 op <<= 50;
1304 Value |= op;
1305 break;
1306 }
1307 case R600::LDS_CMPST_RET: {
1308 // op: src0
1309 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1310 Value |= (op & UINT64_C(1536)) << 1;
1311 Value |= (op & UINT64_C(511));
1312 // op: src0_rel
1313 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1314 op &= UINT64_C(1);
1315 op <<= 9;
1316 Value |= op;
1317 // op: src1
1318 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1319 Value |= (op & UINT64_C(1536)) << 14;
1320 Value |= (op & UINT64_C(511)) << 13;
1321 // op: src1_rel
1322 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1323 op &= UINT64_C(1);
1324 op <<= 22;
1325 Value |= op;
1326 // op: pred_sel
1327 op = getMachineOpValue(MI, MO: MI.getOperand(i: 11), Fixups, STI);
1328 op &= UINT64_C(3);
1329 op <<= 29;
1330 Value |= op;
1331 // op: last
1332 op = getMachineOpValue(MI, MO: MI.getOperand(i: 10), Fixups, STI);
1333 op &= UINT64_C(1);
1334 op <<= 31;
1335 Value |= op;
1336 // op: src2
1337 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1338 Value |= (op & UINT64_C(1536)) << 33;
1339 Value |= (op & UINT64_C(511)) << 32;
1340 // op: src2_rel
1341 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1342 op &= UINT64_C(1);
1343 op <<= 41;
1344 Value |= op;
1345 // op: bank_swizzle
1346 op = getMachineOpValue(MI, MO: MI.getOperand(i: 12), Fixups, STI);
1347 op &= UINT64_C(7);
1348 op <<= 50;
1349 Value |= op;
1350 break;
1351 }
1352 case R600::LDS_ADD_RET:
1353 case R600::LDS_AND_RET:
1354 case R600::LDS_MAX_INT_RET:
1355 case R600::LDS_MAX_UINT_RET:
1356 case R600::LDS_MIN_INT_RET:
1357 case R600::LDS_MIN_UINT_RET:
1358 case R600::LDS_OR_RET:
1359 case R600::LDS_SUB_RET:
1360 case R600::LDS_WRXCHG_RET:
1361 case R600::LDS_XOR_RET: {
1362 // op: src0
1363 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1364 Value |= (op & UINT64_C(1536)) << 1;
1365 Value |= (op & UINT64_C(511));
1366 // op: src0_rel
1367 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1368 op &= UINT64_C(1);
1369 op <<= 9;
1370 Value |= op;
1371 // op: src1
1372 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1373 Value |= (op & UINT64_C(1536)) << 14;
1374 Value |= (op & UINT64_C(511)) << 13;
1375 // op: src1_rel
1376 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1377 op &= UINT64_C(1);
1378 op <<= 22;
1379 Value |= op;
1380 // op: pred_sel
1381 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1382 op &= UINT64_C(3);
1383 op <<= 29;
1384 Value |= op;
1385 // op: last
1386 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1387 op &= UINT64_C(1);
1388 op <<= 31;
1389 Value |= op;
1390 // op: bank_swizzle
1391 op = getMachineOpValue(MI, MO: MI.getOperand(i: 9), Fixups, STI);
1392 op &= UINT64_C(7);
1393 op <<= 50;
1394 Value |= op;
1395 break;
1396 }
1397 case R600::BFE_INT_eg:
1398 case R600::BFE_UINT_eg:
1399 case R600::BFI_INT_eg:
1400 case R600::BIT_ALIGN_INT_eg:
1401 case R600::CNDE_INT:
1402 case R600::CNDE_eg:
1403 case R600::CNDE_r600:
1404 case R600::CNDGE_INT:
1405 case R600::CNDGE_eg:
1406 case R600::CNDGE_r600:
1407 case R600::CNDGT_INT:
1408 case R600::CNDGT_eg:
1409 case R600::CNDGT_r600:
1410 case R600::FMA_eg:
1411 case R600::MULADD_IEEE_eg:
1412 case R600::MULADD_IEEE_r600:
1413 case R600::MULADD_INT24_cm:
1414 case R600::MULADD_UINT24_eg:
1415 case R600::MULADD_eg:
1416 case R600::MULADD_r600:
1417 case R600::MUL_LIT_eg:
1418 case R600::MUL_LIT_r600: {
1419 // op: src0
1420 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1421 Value |= (op & UINT64_C(1536)) << 1;
1422 Value |= (op & UINT64_C(511));
1423 // op: src0_rel
1424 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1425 op &= UINT64_C(1);
1426 op <<= 9;
1427 Value |= op;
1428 // op: src1
1429 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1430 Value |= (op & UINT64_C(1536)) << 14;
1431 Value |= (op & UINT64_C(511)) << 13;
1432 // op: src1_rel
1433 op = getMachineOpValue(MI, MO: MI.getOperand(i: 9), Fixups, STI);
1434 op &= UINT64_C(1);
1435 op <<= 22;
1436 Value |= op;
1437 // op: pred_sel
1438 op = getMachineOpValue(MI, MO: MI.getOperand(i: 16), Fixups, STI);
1439 op &= UINT64_C(3);
1440 op <<= 29;
1441 Value |= op;
1442 // op: last
1443 op = getMachineOpValue(MI, MO: MI.getOperand(i: 15), Fixups, STI);
1444 op &= UINT64_C(1);
1445 op <<= 31;
1446 Value |= op;
1447 // op: src0_neg
1448 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1449 op &= UINT64_C(1);
1450 op <<= 12;
1451 Value |= op;
1452 // op: src1_neg
1453 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1454 op &= UINT64_C(1);
1455 op <<= 25;
1456 Value |= op;
1457 // op: dst
1458 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1459 Value |= (op & UINT64_C(1536)) << 52;
1460 Value |= (op & UINT64_C(127)) << 53;
1461 // op: bank_swizzle
1462 op = getMachineOpValue(MI, MO: MI.getOperand(i: 18), Fixups, STI);
1463 op &= UINT64_C(7);
1464 op <<= 50;
1465 Value |= op;
1466 // op: dst_rel
1467 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1468 op &= UINT64_C(1);
1469 op <<= 60;
1470 Value |= op;
1471 // op: clamp
1472 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1473 op &= UINT64_C(1);
1474 op <<= 63;
1475 Value |= op;
1476 // op: src2
1477 op = getMachineOpValue(MI, MO: MI.getOperand(i: 11), Fixups, STI);
1478 Value |= (op & UINT64_C(1536)) << 33;
1479 Value |= (op & UINT64_C(511)) << 32;
1480 // op: src2_rel
1481 op = getMachineOpValue(MI, MO: MI.getOperand(i: 13), Fixups, STI);
1482 op &= UINT64_C(1);
1483 op <<= 41;
1484 Value |= op;
1485 // op: src2_neg
1486 op = getMachineOpValue(MI, MO: MI.getOperand(i: 12), Fixups, STI);
1487 op &= UINT64_C(1);
1488 op <<= 44;
1489 Value |= op;
1490 break;
1491 }
1492 case R600::BCNT_INT:
1493 case R600::CEIL:
1494 case R600::COS_cm:
1495 case R600::COS_eg:
1496 case R600::COS_r600:
1497 case R600::COS_r700:
1498 case R600::EXP_IEEE_cm:
1499 case R600::EXP_IEEE_eg:
1500 case R600::EXP_IEEE_r600:
1501 case R600::FFBH_UINT:
1502 case R600::FFBL_INT:
1503 case R600::FLOOR:
1504 case R600::FLT16_TO_FLT32:
1505 case R600::FLT32_TO_FLT16:
1506 case R600::FLT_TO_INT_eg:
1507 case R600::FLT_TO_INT_r600:
1508 case R600::FLT_TO_UINT_eg:
1509 case R600::FLT_TO_UINT_r600:
1510 case R600::FRACT:
1511 case R600::INTERP_LOAD_P0:
1512 case R600::INT_TO_FLT_eg:
1513 case R600::INT_TO_FLT_r600:
1514 case R600::LOG_CLAMPED_eg:
1515 case R600::LOG_CLAMPED_r600:
1516 case R600::LOG_IEEE_cm:
1517 case R600::LOG_IEEE_eg:
1518 case R600::LOG_IEEE_r600:
1519 case R600::MOV:
1520 case R600::MOVA_INT_eg:
1521 case R600::NOT_INT:
1522 case R600::RECIPSQRT_CLAMPED_cm:
1523 case R600::RECIPSQRT_CLAMPED_eg:
1524 case R600::RECIPSQRT_CLAMPED_r600:
1525 case R600::RECIPSQRT_IEEE_cm:
1526 case R600::RECIPSQRT_IEEE_eg:
1527 case R600::RECIPSQRT_IEEE_r600:
1528 case R600::RECIP_CLAMPED_cm:
1529 case R600::RECIP_CLAMPED_eg:
1530 case R600::RECIP_CLAMPED_r600:
1531 case R600::RECIP_IEEE_cm:
1532 case R600::RECIP_IEEE_eg:
1533 case R600::RECIP_IEEE_r600:
1534 case R600::RECIP_UINT_eg:
1535 case R600::RECIP_UINT_r600:
1536 case R600::RNDNE:
1537 case R600::SIN_cm:
1538 case R600::SIN_eg:
1539 case R600::SIN_r600:
1540 case R600::SIN_r700:
1541 case R600::TRUNC:
1542 case R600::UINT_TO_FLT_eg:
1543 case R600::UINT_TO_FLT_r600: {
1544 // op: src0
1545 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1546 Value |= (op & UINT64_C(1536)) << 1;
1547 Value |= (op & UINT64_C(511));
1548 // op: src0_rel
1549 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1550 op &= UINT64_C(1);
1551 op <<= 9;
1552 Value |= op;
1553 // op: pred_sel
1554 op = getMachineOpValue(MI, MO: MI.getOperand(i: 11), Fixups, STI);
1555 op &= UINT64_C(3);
1556 op <<= 29;
1557 Value |= op;
1558 // op: last
1559 op = getMachineOpValue(MI, MO: MI.getOperand(i: 10), Fixups, STI);
1560 op &= UINT64_C(1);
1561 op <<= 31;
1562 Value |= op;
1563 // op: src0_neg
1564 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
1565 op &= UINT64_C(1);
1566 op <<= 12;
1567 Value |= op;
1568 // op: dst
1569 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1570 Value |= (op & UINT64_C(1536)) << 52;
1571 Value |= (op & UINT64_C(127)) << 53;
1572 // op: bank_swizzle
1573 op = getMachineOpValue(MI, MO: MI.getOperand(i: 13), Fixups, STI);
1574 op &= UINT64_C(7);
1575 op <<= 50;
1576 Value |= op;
1577 // op: dst_rel
1578 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1579 op &= UINT64_C(1);
1580 op <<= 60;
1581 Value |= op;
1582 // op: clamp
1583 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1584 op &= UINT64_C(1);
1585 op <<= 63;
1586 Value |= op;
1587 // op: src0_abs
1588 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1589 op &= UINT64_C(1);
1590 op <<= 32;
1591 Value |= op;
1592 // op: write
1593 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1594 op &= UINT64_C(1);
1595 op <<= 36;
1596 Value |= op;
1597 // op: omod
1598 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1599 op &= UINT64_C(3);
1600 op <<= 37;
1601 Value |= op;
1602 break;
1603 }
1604 case R600::ADD:
1605 case R600::ADDC_UINT:
1606 case R600::ADD_INT:
1607 case R600::AND_INT:
1608 case R600::ASHR_eg:
1609 case R600::ASHR_r600:
1610 case R600::BFM_INT_eg:
1611 case R600::CUBE_eg_real:
1612 case R600::CUBE_r600_real:
1613 case R600::DOT4_eg:
1614 case R600::DOT4_r600:
1615 case R600::KILLGT:
1616 case R600::LSHL_eg:
1617 case R600::LSHL_r600:
1618 case R600::LSHR_eg:
1619 case R600::LSHR_r600:
1620 case R600::MAX:
1621 case R600::MAX_DX10:
1622 case R600::MAX_INT:
1623 case R600::MAX_UINT:
1624 case R600::MIN:
1625 case R600::MIN_DX10:
1626 case R600::MIN_INT:
1627 case R600::MIN_UINT:
1628 case R600::MUL:
1629 case R600::MULHI_INT_cm:
1630 case R600::MULHI_INT_cm24:
1631 case R600::MULHI_INT_eg:
1632 case R600::MULHI_INT_r600:
1633 case R600::MULHI_UINT24_eg:
1634 case R600::MULHI_UINT_cm:
1635 case R600::MULHI_UINT_cm24:
1636 case R600::MULHI_UINT_eg:
1637 case R600::MULHI_UINT_r600:
1638 case R600::MULLO_INT_cm:
1639 case R600::MULLO_INT_eg:
1640 case R600::MULLO_INT_r600:
1641 case R600::MULLO_UINT_cm:
1642 case R600::MULLO_UINT_eg:
1643 case R600::MULLO_UINT_r600:
1644 case R600::MUL_IEEE:
1645 case R600::MUL_INT24_cm:
1646 case R600::MUL_UINT24_eg:
1647 case R600::OR_INT:
1648 case R600::PRED_SETE:
1649 case R600::PRED_SETE_INT:
1650 case R600::PRED_SETGE:
1651 case R600::PRED_SETGE_INT:
1652 case R600::PRED_SETGT:
1653 case R600::PRED_SETGT_INT:
1654 case R600::PRED_SETNE:
1655 case R600::PRED_SETNE_INT:
1656 case R600::SETE:
1657 case R600::SETE_DX10:
1658 case R600::SETE_INT:
1659 case R600::SETGE_DX10:
1660 case R600::SETGE_INT:
1661 case R600::SETGE_UINT:
1662 case R600::SETGT_DX10:
1663 case R600::SETGT_INT:
1664 case R600::SETGT_UINT:
1665 case R600::SETNE_DX10:
1666 case R600::SETNE_INT:
1667 case R600::SGE:
1668 case R600::SGT:
1669 case R600::SNE:
1670 case R600::SUBB_UINT:
1671 case R600::SUB_INT:
1672 case R600::XOR_INT: {
1673 // op: src0
1674 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1675 Value |= (op & UINT64_C(1536)) << 1;
1676 Value |= (op & UINT64_C(511));
1677 // op: src0_rel
1678 op = getMachineOpValue(MI, MO: MI.getOperand(i: 9), Fixups, STI);
1679 op &= UINT64_C(1);
1680 op <<= 9;
1681 Value |= op;
1682 // op: src1
1683 op = getMachineOpValue(MI, MO: MI.getOperand(i: 12), Fixups, STI);
1684 Value |= (op & UINT64_C(1536)) << 14;
1685 Value |= (op & UINT64_C(511)) << 13;
1686 // op: src1_rel
1687 op = getMachineOpValue(MI, MO: MI.getOperand(i: 14), Fixups, STI);
1688 op &= UINT64_C(1);
1689 op <<= 22;
1690 Value |= op;
1691 // op: pred_sel
1692 op = getMachineOpValue(MI, MO: MI.getOperand(i: 18), Fixups, STI);
1693 op &= UINT64_C(3);
1694 op <<= 29;
1695 Value |= op;
1696 // op: last
1697 op = getMachineOpValue(MI, MO: MI.getOperand(i: 17), Fixups, STI);
1698 op &= UINT64_C(1);
1699 op <<= 31;
1700 Value |= op;
1701 // op: src0_neg
1702 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1703 op &= UINT64_C(1);
1704 op <<= 12;
1705 Value |= op;
1706 // op: src1_neg
1707 op = getMachineOpValue(MI, MO: MI.getOperand(i: 13), Fixups, STI);
1708 op &= UINT64_C(1);
1709 op <<= 25;
1710 Value |= op;
1711 // op: dst
1712 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1713 Value |= (op & UINT64_C(1536)) << 52;
1714 Value |= (op & UINT64_C(127)) << 53;
1715 // op: bank_swizzle
1716 op = getMachineOpValue(MI, MO: MI.getOperand(i: 20), Fixups, STI);
1717 op &= UINT64_C(7);
1718 op <<= 50;
1719 Value |= op;
1720 // op: dst_rel
1721 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1722 op &= UINT64_C(1);
1723 op <<= 60;
1724 Value |= op;
1725 // op: clamp
1726 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
1727 op &= UINT64_C(1);
1728 op <<= 63;
1729 Value |= op;
1730 // op: src0_abs
1731 op = getMachineOpValue(MI, MO: MI.getOperand(i: 10), Fixups, STI);
1732 op &= UINT64_C(1);
1733 op <<= 32;
1734 Value |= op;
1735 // op: src1_abs
1736 op = getMachineOpValue(MI, MO: MI.getOperand(i: 15), Fixups, STI);
1737 op &= UINT64_C(1);
1738 op <<= 33;
1739 Value |= op;
1740 // op: update_exec_mask
1741 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1742 op &= UINT64_C(1);
1743 op <<= 34;
1744 Value |= op;
1745 // op: update_pred
1746 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1747 op &= UINT64_C(1);
1748 op <<= 35;
1749 Value |= op;
1750 // op: write
1751 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1752 op &= UINT64_C(1);
1753 op <<= 36;
1754 Value |= op;
1755 // op: omod
1756 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1757 op &= UINT64_C(3);
1758 op <<= 37;
1759 Value |= op;
1760 break;
1761 }
1762 case R600::INTERP_XY:
1763 case R600::INTERP_ZW: {
1764 // op: src0
1765 op = getMachineOpValue(MI, MO: MI.getOperand(i: 7), Fixups, STI);
1766 Value |= (op & UINT64_C(1536)) << 1;
1767 Value |= (op & UINT64_C(511));
1768 // op: src0_rel
1769 op = getMachineOpValue(MI, MO: MI.getOperand(i: 9), Fixups, STI);
1770 op &= UINT64_C(1);
1771 op <<= 9;
1772 Value |= op;
1773 // op: src1
1774 op = getMachineOpValue(MI, MO: MI.getOperand(i: 12), Fixups, STI);
1775 Value |= (op & UINT64_C(1536)) << 14;
1776 Value |= (op & UINT64_C(511)) << 13;
1777 // op: src1_rel
1778 op = getMachineOpValue(MI, MO: MI.getOperand(i: 14), Fixups, STI);
1779 op &= UINT64_C(1);
1780 op <<= 22;
1781 Value |= op;
1782 // op: pred_sel
1783 op = getMachineOpValue(MI, MO: MI.getOperand(i: 18), Fixups, STI);
1784 op &= UINT64_C(3);
1785 op <<= 29;
1786 Value |= op;
1787 // op: last
1788 op = getMachineOpValue(MI, MO: MI.getOperand(i: 17), Fixups, STI);
1789 op &= UINT64_C(1);
1790 op <<= 31;
1791 Value |= op;
1792 // op: src0_neg
1793 op = getMachineOpValue(MI, MO: MI.getOperand(i: 8), Fixups, STI);
1794 op &= UINT64_C(1);
1795 op <<= 12;
1796 Value |= op;
1797 // op: src1_neg
1798 op = getMachineOpValue(MI, MO: MI.getOperand(i: 13), Fixups, STI);
1799 op &= UINT64_C(1);
1800 op <<= 25;
1801 Value |= op;
1802 // op: dst
1803 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1804 Value |= (op & UINT64_C(1536)) << 52;
1805 Value |= (op & UINT64_C(127)) << 53;
1806 // op: dst_rel
1807 op = getMachineOpValue(MI, MO: MI.getOperand(i: 5), Fixups, STI);
1808 op &= UINT64_C(1);
1809 op <<= 60;
1810 Value |= op;
1811 // op: clamp
1812 op = getMachineOpValue(MI, MO: MI.getOperand(i: 6), Fixups, STI);
1813 op &= UINT64_C(1);
1814 op <<= 63;
1815 Value |= op;
1816 // op: src0_abs
1817 op = getMachineOpValue(MI, MO: MI.getOperand(i: 10), Fixups, STI);
1818 op &= UINT64_C(1);
1819 op <<= 32;
1820 Value |= op;
1821 // op: src1_abs
1822 op = getMachineOpValue(MI, MO: MI.getOperand(i: 15), Fixups, STI);
1823 op &= UINT64_C(1);
1824 op <<= 33;
1825 Value |= op;
1826 // op: update_exec_mask
1827 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1828 op &= UINT64_C(1);
1829 op <<= 34;
1830 Value |= op;
1831 // op: update_pred
1832 op = getMachineOpValue(MI, MO: MI.getOperand(i: 2), Fixups, STI);
1833 op &= UINT64_C(1);
1834 op <<= 35;
1835 Value |= op;
1836 // op: write
1837 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1838 op &= UINT64_C(1);
1839 op <<= 36;
1840 Value |= op;
1841 // op: omod
1842 op = getMachineOpValue(MI, MO: MI.getOperand(i: 4), Fixups, STI);
1843 op &= UINT64_C(3);
1844 op <<= 37;
1845 Value |= op;
1846 break;
1847 }
1848 case R600::VTX_READ_8_cm:
1849 case R600::VTX_READ_8_eg:
1850 case R600::VTX_READ_16_cm:
1851 case R600::VTX_READ_16_eg:
1852 case R600::VTX_READ_32_cm:
1853 case R600::VTX_READ_32_eg:
1854 case R600::VTX_READ_64_cm:
1855 case R600::VTX_READ_64_eg:
1856 case R600::VTX_READ_128_cm:
1857 case R600::VTX_READ_128_eg: {
1858 // op: src_gpr
1859 op = getMachineOpValue(MI, MO: MI.getOperand(i: 1), Fixups, STI);
1860 op &= UINT64_C(127);
1861 op <<= 16;
1862 Value |= op;
1863 // op: buffer_id
1864 op = getMachineOpValue(MI, MO: MI.getOperand(i: 3), Fixups, STI);
1865 op &= UINT64_C(255);
1866 op <<= 8;
1867 Value |= op;
1868 // op: dst_gpr
1869 op = getMachineOpValue(MI, MO: MI.getOperand(i: 0), Fixups, STI);
1870 op &= UINT64_C(127);
1871 op <<= 32;
1872 Value |= op;
1873 break;
1874 }
1875 default:
1876 std::string msg;
1877 raw_string_ostream Msg(msg);
1878 Msg << "Not supported instr: " << MI;
1879 report_fatal_error(reason: Msg.str().c_str());
1880 }
1881 return Value;
1882}
1883
1884#ifdef GET_OPERAND_BIT_OFFSET
1885#undef GET_OPERAND_BIT_OFFSET
1886
1887uint32_t R600MCCodeEmitter::getOperandBitOffset(const MCInst &MI,
1888 unsigned OpNum,
1889 const MCSubtargetInfo &STI) const {
1890 switch (MI.getOpcode()) {
1891 case R600::CF_CALL_FS_EG:
1892 case R600::CF_CALL_FS_R600:
1893 case R600::CF_END_CM:
1894 case R600::CF_END_EG:
1895 case R600::CF_END_R600:
1896 case R600::GROUP_BARRIER:
1897 case R600::INTERP_PAIR_XY:
1898 case R600::INTERP_PAIR_ZW:
1899 case R600::INTERP_VEC_LOAD:
1900 case R600::PAD: {
1901 break;
1902 }
1903 case R600::CF_TC_R600:
1904 case R600::CF_VC_R600: {
1905 switch (OpNum) {
1906 case 0:
1907 // op: ADDR
1908 return 0;
1909 case 1:
1910 // op: CNT
1911 return 42;
1912 }
1913 break;
1914 }
1915 case R600::CF_TC_EG:
1916 case R600::CF_VC_EG: {
1917 switch (OpNum) {
1918 case 0:
1919 // op: ADDR
1920 return 0;
1921 case 1:
1922 // op: COUNT
1923 return 42;
1924 }
1925 break;
1926 }
1927 case R600::CF_ALU:
1928 case R600::CF_ALU_BREAK:
1929 case R600::CF_ALU_CONTINUE:
1930 case R600::CF_ALU_ELSE_AFTER:
1931 case R600::CF_ALU_POP_AFTER:
1932 case R600::CF_ALU_PUSH_BEFORE: {
1933 switch (OpNum) {
1934 case 0:
1935 // op: ADDR
1936 return 0;
1937 case 1:
1938 // op: KCACHE_BANK0
1939 return 22;
1940 case 2:
1941 // op: KCACHE_BANK1
1942 return 26;
1943 case 3:
1944 // op: KCACHE_MODE0
1945 return 30;
1946 case 4:
1947 // op: KCACHE_MODE1
1948 return 32;
1949 case 5:
1950 // op: KCACHE_ADDR0
1951 return 34;
1952 case 6:
1953 // op: KCACHE_ADDR1
1954 return 42;
1955 case 7:
1956 // op: COUNT
1957 return 50;
1958 }
1959 break;
1960 }
1961 case R600::CF_ELSE_EG:
1962 case R600::CF_ELSE_R600:
1963 case R600::CF_JUMP_EG:
1964 case R600::CF_JUMP_R600:
1965 case R600::CF_PUSH_EG:
1966 case R600::POP_EG:
1967 case R600::POP_R600: {
1968 switch (OpNum) {
1969 case 0:
1970 // op: ADDR
1971 return 0;
1972 case 1:
1973 // op: POP_COUNT
1974 return 32;
1975 }
1976 break;
1977 }
1978 case R600::CF_CONTINUE_EG:
1979 case R600::CF_CONTINUE_R600:
1980 case R600::CF_PUSH_ELSE_R600:
1981 case R600::END_LOOP_EG:
1982 case R600::END_LOOP_R600:
1983 case R600::LOOP_BREAK_EG:
1984 case R600::LOOP_BREAK_R600:
1985 case R600::WHILE_LOOP_EG:
1986 case R600::WHILE_LOOP_R600: {
1987 switch (OpNum) {
1988 case 0:
1989 // op: ADDR
1990 return 0;
1991 }
1992 break;
1993 }
1994 case R600::ALU_CLAUSE:
1995 case R600::FETCH_CLAUSE: {
1996 switch (OpNum) {
1997 case 0:
1998 // op: addr
1999 return 0;
2000 }
2001 break;
2002 }
2003 case R600::TEX_VTX_CONSTBUF:
2004 case R600::TEX_VTX_TEXBUF: {
2005 switch (OpNum) {
2006 case 0:
2007 // op: dst_gpr
2008 return 32;
2009 case 1:
2010 // op: src_gpr
2011 return 16;
2012 case 3:
2013 // op: buffer_id
2014 return 8;
2015 }
2016 break;
2017 }
2018 case R600::LITERALS: {
2019 switch (OpNum) {
2020 case 0:
2021 // op: literal1
2022 return 0;
2023 case 1:
2024 // op: literal2
2025 return 32;
2026 }
2027 break;
2028 }
2029 case R600::RAT_WRITE_CACHELESS_32_eg:
2030 case R600::RAT_WRITE_CACHELESS_64_eg:
2031 case R600::RAT_WRITE_CACHELESS_128_eg: {
2032 switch (OpNum) {
2033 case 0:
2034 // op: rw_gpr
2035 return 15;
2036 case 1:
2037 // op: index_gpr
2038 return 23;
2039 case 2:
2040 // op: eop
2041 return 53;
2042 }
2043 break;
2044 }
2045 case R600::RAT_MSKOR:
2046 case R600::RAT_STORE_DWORD32:
2047 case R600::RAT_STORE_DWORD64:
2048 case R600::RAT_STORE_DWORD128: {
2049 switch (OpNum) {
2050 case 0:
2051 // op: rw_gpr
2052 return 15;
2053 case 1:
2054 // op: index_gpr
2055 return 23;
2056 }
2057 break;
2058 }
2059 case R600::LDS_CMPST: {
2060 switch (OpNum) {
2061 case 0:
2062 // op: src0
2063 return 0;
2064 case 1:
2065 // op: src0_rel
2066 return 9;
2067 case 3:
2068 // op: src1
2069 return 13;
2070 case 4:
2071 // op: src1_rel
2072 return 22;
2073 case 10:
2074 // op: pred_sel
2075 return 29;
2076 case 9:
2077 // op: last
2078 return 31;
2079 case 6:
2080 // op: src2
2081 return 32;
2082 case 7:
2083 // op: src2_rel
2084 return 41;
2085 case 11:
2086 // op: bank_swizzle
2087 return 50;
2088 }
2089 break;
2090 }
2091 case R600::LDS_ADD:
2092 case R600::LDS_AND:
2093 case R600::LDS_BYTE_WRITE:
2094 case R600::LDS_MAX_INT:
2095 case R600::LDS_MAX_UINT:
2096 case R600::LDS_MIN_INT:
2097 case R600::LDS_MIN_UINT:
2098 case R600::LDS_OR:
2099 case R600::LDS_SHORT_WRITE:
2100 case R600::LDS_SUB:
2101 case R600::LDS_WRITE:
2102 case R600::LDS_WRXCHG:
2103 case R600::LDS_XOR: {
2104 switch (OpNum) {
2105 case 0:
2106 // op: src0
2107 return 0;
2108 case 1:
2109 // op: src0_rel
2110 return 9;
2111 case 3:
2112 // op: src1
2113 return 13;
2114 case 4:
2115 // op: src1_rel
2116 return 22;
2117 case 7:
2118 // op: pred_sel
2119 return 29;
2120 case 6:
2121 // op: last
2122 return 31;
2123 case 8:
2124 // op: bank_swizzle
2125 return 50;
2126 }
2127 break;
2128 }
2129 case R600::TEX_GET_GRADIENTS_H:
2130 case R600::TEX_GET_GRADIENTS_V:
2131 case R600::TEX_GET_TEXTURE_RESINFO:
2132 case R600::TEX_LD:
2133 case R600::TEX_LDPTR:
2134 case R600::TEX_SAMPLE:
2135 case R600::TEX_SAMPLE_C:
2136 case R600::TEX_SAMPLE_C_G:
2137 case R600::TEX_SAMPLE_C_L:
2138 case R600::TEX_SAMPLE_C_LB:
2139 case R600::TEX_SAMPLE_G:
2140 case R600::TEX_SAMPLE_L:
2141 case R600::TEX_SAMPLE_LB:
2142 case R600::TEX_SET_GRADIENTS_H:
2143 case R600::TEX_SET_GRADIENTS_V: {
2144 switch (OpNum) {
2145 case 13:
2146 // op: RESOURCE_ID
2147 return 8;
2148 case 1:
2149 // op: SRC_GPR
2150 return 16;
2151 case 0:
2152 // op: DST_GPR
2153 return 32;
2154 case 9:
2155 // op: DST_SEL_X
2156 return 41;
2157 case 10:
2158 // op: DST_SEL_Y
2159 return 44;
2160 case 11:
2161 // op: DST_SEL_Z
2162 return 47;
2163 case 12:
2164 // op: DST_SEL_W
2165 return 50;
2166 case 15:
2167 // op: COORD_TYPE_X
2168 return 60;
2169 case 16:
2170 // op: COORD_TYPE_Y
2171 return 61;
2172 case 17:
2173 // op: COORD_TYPE_Z
2174 return 62;
2175 case 18:
2176 // op: COORD_TYPE_W
2177 return 63;
2178 }
2179 break;
2180 }
2181 case R600::RAT_ATOMIC_ADD_NORET:
2182 case R600::RAT_ATOMIC_ADD_RTN:
2183 case R600::RAT_ATOMIC_AND_NORET:
2184 case R600::RAT_ATOMIC_AND_RTN:
2185 case R600::RAT_ATOMIC_CMPXCHG_INT_NORET:
2186 case R600::RAT_ATOMIC_CMPXCHG_INT_RTN:
2187 case R600::RAT_ATOMIC_DEC_UINT_NORET:
2188 case R600::RAT_ATOMIC_DEC_UINT_RTN:
2189 case R600::RAT_ATOMIC_INC_UINT_NORET:
2190 case R600::RAT_ATOMIC_INC_UINT_RTN:
2191 case R600::RAT_ATOMIC_MAX_INT_NORET:
2192 case R600::RAT_ATOMIC_MAX_INT_RTN:
2193 case R600::RAT_ATOMIC_MAX_UINT_NORET:
2194 case R600::RAT_ATOMIC_MAX_UINT_RTN:
2195 case R600::RAT_ATOMIC_MIN_INT_NORET:
2196 case R600::RAT_ATOMIC_MIN_INT_RTN:
2197 case R600::RAT_ATOMIC_MIN_UINT_NORET:
2198 case R600::RAT_ATOMIC_MIN_UINT_RTN:
2199 case R600::RAT_ATOMIC_OR_NORET:
2200 case R600::RAT_ATOMIC_OR_RTN:
2201 case R600::RAT_ATOMIC_RSUB_NORET:
2202 case R600::RAT_ATOMIC_RSUB_RTN:
2203 case R600::RAT_ATOMIC_SUB_NORET:
2204 case R600::RAT_ATOMIC_SUB_RTN:
2205 case R600::RAT_ATOMIC_XCHG_INT_NORET:
2206 case R600::RAT_ATOMIC_XCHG_INT_RTN:
2207 case R600::RAT_ATOMIC_XOR_NORET:
2208 case R600::RAT_ATOMIC_XOR_RTN: {
2209 switch (OpNum) {
2210 case 1:
2211 // op: rw_gpr
2212 return 15;
2213 case 2:
2214 // op: index_gpr
2215 return 23;
2216 }
2217 break;
2218 }
2219 case R600::LDS_CMPST_RET: {
2220 switch (OpNum) {
2221 case 1:
2222 // op: src0
2223 return 0;
2224 case 2:
2225 // op: src0_rel
2226 return 9;
2227 case 4:
2228 // op: src1
2229 return 13;
2230 case 5:
2231 // op: src1_rel
2232 return 22;
2233 case 11:
2234 // op: pred_sel
2235 return 29;
2236 case 10:
2237 // op: last
2238 return 31;
2239 case 7:
2240 // op: src2
2241 return 32;
2242 case 8:
2243 // op: src2_rel
2244 return 41;
2245 case 12:
2246 // op: bank_swizzle
2247 return 50;
2248 }
2249 break;
2250 }
2251 case R600::LDS_ADD_RET:
2252 case R600::LDS_AND_RET:
2253 case R600::LDS_MAX_INT_RET:
2254 case R600::LDS_MAX_UINT_RET:
2255 case R600::LDS_MIN_INT_RET:
2256 case R600::LDS_MIN_UINT_RET:
2257 case R600::LDS_OR_RET:
2258 case R600::LDS_SUB_RET:
2259 case R600::LDS_WRXCHG_RET:
2260 case R600::LDS_XOR_RET: {
2261 switch (OpNum) {
2262 case 1:
2263 // op: src0
2264 return 0;
2265 case 2:
2266 // op: src0_rel
2267 return 9;
2268 case 4:
2269 // op: src1
2270 return 13;
2271 case 5:
2272 // op: src1_rel
2273 return 22;
2274 case 8:
2275 // op: pred_sel
2276 return 29;
2277 case 7:
2278 // op: last
2279 return 31;
2280 case 9:
2281 // op: bank_swizzle
2282 return 50;
2283 }
2284 break;
2285 }
2286 case R600::LDS_BYTE_READ_RET:
2287 case R600::LDS_READ_RET:
2288 case R600::LDS_SHORT_READ_RET:
2289 case R600::LDS_UBYTE_READ_RET:
2290 case R600::LDS_USHORT_READ_RET: {
2291 switch (OpNum) {
2292 case 1:
2293 // op: src0
2294 return 0;
2295 case 2:
2296 // op: src0_rel
2297 return 9;
2298 case 5:
2299 // op: pred_sel
2300 return 29;
2301 case 4:
2302 // op: last
2303 return 31;
2304 case 6:
2305 // op: bank_swizzle
2306 return 50;
2307 }
2308 break;
2309 }
2310 case R600::VTX_READ_8_cm:
2311 case R600::VTX_READ_8_eg:
2312 case R600::VTX_READ_16_cm:
2313 case R600::VTX_READ_16_eg:
2314 case R600::VTX_READ_32_cm:
2315 case R600::VTX_READ_32_eg:
2316 case R600::VTX_READ_64_cm:
2317 case R600::VTX_READ_64_eg:
2318 case R600::VTX_READ_128_cm:
2319 case R600::VTX_READ_128_eg: {
2320 switch (OpNum) {
2321 case 1:
2322 // op: src_gpr
2323 return 16;
2324 case 3:
2325 // op: buffer_id
2326 return 8;
2327 case 0:
2328 // op: dst_gpr
2329 return 32;
2330 }
2331 break;
2332 }
2333 case R600::EG_ExportBuf: {
2334 switch (OpNum) {
2335 case 2:
2336 // op: arraybase
2337 return 0;
2338 case 1:
2339 // op: type
2340 return 13;
2341 case 0:
2342 // op: gpr
2343 return 15;
2344 case 3:
2345 // op: arraySize
2346 return 32;
2347 case 4:
2348 // op: compMask
2349 return 44;
2350 case 6:
2351 // op: eop
2352 return 53;
2353 case 5:
2354 // op: inst
2355 return 54;
2356 }
2357 break;
2358 }
2359 case R600::R600_ExportBuf: {
2360 switch (OpNum) {
2361 case 2:
2362 // op: arraybase
2363 return 0;
2364 case 1:
2365 // op: type
2366 return 13;
2367 case 0:
2368 // op: gpr
2369 return 15;
2370 case 3:
2371 // op: arraySize
2372 return 32;
2373 case 4:
2374 // op: compMask
2375 return 44;
2376 case 6:
2377 // op: eop
2378 return 53;
2379 case 5:
2380 // op: inst
2381 return 55;
2382 }
2383 break;
2384 }
2385 case R600::EG_ExportSwz: {
2386 switch (OpNum) {
2387 case 2:
2388 // op: arraybase
2389 return 0;
2390 case 1:
2391 // op: type
2392 return 13;
2393 case 0:
2394 // op: gpr
2395 return 15;
2396 case 3:
2397 // op: sw_x
2398 return 32;
2399 case 4:
2400 // op: sw_y
2401 return 35;
2402 case 5:
2403 // op: sw_z
2404 return 38;
2405 case 6:
2406 // op: sw_w
2407 return 41;
2408 case 8:
2409 // op: eop
2410 return 53;
2411 case 7:
2412 // op: inst
2413 return 54;
2414 }
2415 break;
2416 }
2417 case R600::R600_ExportSwz: {
2418 switch (OpNum) {
2419 case 2:
2420 // op: arraybase
2421 return 0;
2422 case 1:
2423 // op: type
2424 return 13;
2425 case 0:
2426 // op: gpr
2427 return 15;
2428 case 3:
2429 // op: sw_x
2430 return 32;
2431 case 4:
2432 // op: sw_y
2433 return 35;
2434 case 5:
2435 // op: sw_z
2436 return 38;
2437 case 6:
2438 // op: sw_w
2439 return 41;
2440 case 8:
2441 // op: eop
2442 return 53;
2443 case 7:
2444 // op: inst
2445 return 55;
2446 }
2447 break;
2448 }
2449 case R600::RAT_STORE_TYPED_eg: {
2450 switch (OpNum) {
2451 case 2:
2452 // op: rat_id
2453 return 0;
2454 case 0:
2455 // op: rw_gpr
2456 return 15;
2457 case 1:
2458 // op: index_gpr
2459 return 23;
2460 case 3:
2461 // op: eop
2462 return 53;
2463 }
2464 break;
2465 }
2466 case R600::RAT_STORE_TYPED_cm: {
2467 switch (OpNum) {
2468 case 2:
2469 // op: rat_id
2470 return 0;
2471 case 0:
2472 // op: rw_gpr
2473 return 15;
2474 case 1:
2475 // op: index_gpr
2476 return 23;
2477 }
2478 break;
2479 }
2480 case R600::BFE_INT_eg:
2481 case R600::BFE_UINT_eg:
2482 case R600::BFI_INT_eg:
2483 case R600::BIT_ALIGN_INT_eg:
2484 case R600::CNDE_INT:
2485 case R600::CNDE_eg:
2486 case R600::CNDE_r600:
2487 case R600::CNDGE_INT:
2488 case R600::CNDGE_eg:
2489 case R600::CNDGE_r600:
2490 case R600::CNDGT_INT:
2491 case R600::CNDGT_eg:
2492 case R600::CNDGT_r600:
2493 case R600::FMA_eg:
2494 case R600::MULADD_IEEE_eg:
2495 case R600::MULADD_IEEE_r600:
2496 case R600::MULADD_INT24_cm:
2497 case R600::MULADD_UINT24_eg:
2498 case R600::MULADD_eg:
2499 case R600::MULADD_r600:
2500 case R600::MUL_LIT_eg:
2501 case R600::MUL_LIT_r600: {
2502 switch (OpNum) {
2503 case 3:
2504 // op: src0
2505 return 0;
2506 case 5:
2507 // op: src0_rel
2508 return 9;
2509 case 7:
2510 // op: src1
2511 return 13;
2512 case 9:
2513 // op: src1_rel
2514 return 22;
2515 case 16:
2516 // op: pred_sel
2517 return 29;
2518 case 15:
2519 // op: last
2520 return 31;
2521 case 4:
2522 // op: src0_neg
2523 return 12;
2524 case 8:
2525 // op: src1_neg
2526 return 25;
2527 case 0:
2528 // op: dst
2529 return 53;
2530 case 18:
2531 // op: bank_swizzle
2532 return 50;
2533 case 1:
2534 // op: dst_rel
2535 return 60;
2536 case 2:
2537 // op: clamp
2538 return 63;
2539 case 11:
2540 // op: src2
2541 return 32;
2542 case 13:
2543 // op: src2_rel
2544 return 41;
2545 case 12:
2546 // op: src2_neg
2547 return 44;
2548 }
2549 break;
2550 }
2551 case R600::BCNT_INT:
2552 case R600::CEIL:
2553 case R600::COS_cm:
2554 case R600::COS_eg:
2555 case R600::COS_r600:
2556 case R600::COS_r700:
2557 case R600::EXP_IEEE_cm:
2558 case R600::EXP_IEEE_eg:
2559 case R600::EXP_IEEE_r600:
2560 case R600::FFBH_UINT:
2561 case R600::FFBL_INT:
2562 case R600::FLOOR:
2563 case R600::FLT16_TO_FLT32:
2564 case R600::FLT32_TO_FLT16:
2565 case R600::FLT_TO_INT_eg:
2566 case R600::FLT_TO_INT_r600:
2567 case R600::FLT_TO_UINT_eg:
2568 case R600::FLT_TO_UINT_r600:
2569 case R600::FRACT:
2570 case R600::INTERP_LOAD_P0:
2571 case R600::INT_TO_FLT_eg:
2572 case R600::INT_TO_FLT_r600:
2573 case R600::LOG_CLAMPED_eg:
2574 case R600::LOG_CLAMPED_r600:
2575 case R600::LOG_IEEE_cm:
2576 case R600::LOG_IEEE_eg:
2577 case R600::LOG_IEEE_r600:
2578 case R600::MOV:
2579 case R600::MOVA_INT_eg:
2580 case R600::NOT_INT:
2581 case R600::RECIPSQRT_CLAMPED_cm:
2582 case R600::RECIPSQRT_CLAMPED_eg:
2583 case R600::RECIPSQRT_CLAMPED_r600:
2584 case R600::RECIPSQRT_IEEE_cm:
2585 case R600::RECIPSQRT_IEEE_eg:
2586 case R600::RECIPSQRT_IEEE_r600:
2587 case R600::RECIP_CLAMPED_cm:
2588 case R600::RECIP_CLAMPED_eg:
2589 case R600::RECIP_CLAMPED_r600:
2590 case R600::RECIP_IEEE_cm:
2591 case R600::RECIP_IEEE_eg:
2592 case R600::RECIP_IEEE_r600:
2593 case R600::RECIP_UINT_eg:
2594 case R600::RECIP_UINT_r600:
2595 case R600::RNDNE:
2596 case R600::SIN_cm:
2597 case R600::SIN_eg:
2598 case R600::SIN_r600:
2599 case R600::SIN_r700:
2600 case R600::TRUNC:
2601 case R600::UINT_TO_FLT_eg:
2602 case R600::UINT_TO_FLT_r600: {
2603 switch (OpNum) {
2604 case 5:
2605 // op: src0
2606 return 0;
2607 case 7:
2608 // op: src0_rel
2609 return 9;
2610 case 11:
2611 // op: pred_sel
2612 return 29;
2613 case 10:
2614 // op: last
2615 return 31;
2616 case 6:
2617 // op: src0_neg
2618 return 12;
2619 case 0:
2620 // op: dst
2621 return 53;
2622 case 13:
2623 // op: bank_swizzle
2624 return 50;
2625 case 3:
2626 // op: dst_rel
2627 return 60;
2628 case 4:
2629 // op: clamp
2630 return 63;
2631 case 8:
2632 // op: src0_abs
2633 return 32;
2634 case 1:
2635 // op: write
2636 return 36;
2637 case 2:
2638 // op: omod
2639 return 37;
2640 }
2641 break;
2642 }
2643 case R600::ADD:
2644 case R600::ADDC_UINT:
2645 case R600::ADD_INT:
2646 case R600::AND_INT:
2647 case R600::ASHR_eg:
2648 case R600::ASHR_r600:
2649 case R600::BFM_INT_eg:
2650 case R600::CUBE_eg_real:
2651 case R600::CUBE_r600_real:
2652 case R600::DOT4_eg:
2653 case R600::DOT4_r600:
2654 case R600::KILLGT:
2655 case R600::LSHL_eg:
2656 case R600::LSHL_r600:
2657 case R600::LSHR_eg:
2658 case R600::LSHR_r600:
2659 case R600::MAX:
2660 case R600::MAX_DX10:
2661 case R600::MAX_INT:
2662 case R600::MAX_UINT:
2663 case R600::MIN:
2664 case R600::MIN_DX10:
2665 case R600::MIN_INT:
2666 case R600::MIN_UINT:
2667 case R600::MUL:
2668 case R600::MULHI_INT_cm:
2669 case R600::MULHI_INT_cm24:
2670 case R600::MULHI_INT_eg:
2671 case R600::MULHI_INT_r600:
2672 case R600::MULHI_UINT24_eg:
2673 case R600::MULHI_UINT_cm:
2674 case R600::MULHI_UINT_cm24:
2675 case R600::MULHI_UINT_eg:
2676 case R600::MULHI_UINT_r600:
2677 case R600::MULLO_INT_cm:
2678 case R600::MULLO_INT_eg:
2679 case R600::MULLO_INT_r600:
2680 case R600::MULLO_UINT_cm:
2681 case R600::MULLO_UINT_eg:
2682 case R600::MULLO_UINT_r600:
2683 case R600::MUL_IEEE:
2684 case R600::MUL_INT24_cm:
2685 case R600::MUL_UINT24_eg:
2686 case R600::OR_INT:
2687 case R600::PRED_SETE:
2688 case R600::PRED_SETE_INT:
2689 case R600::PRED_SETGE:
2690 case R600::PRED_SETGE_INT:
2691 case R600::PRED_SETGT:
2692 case R600::PRED_SETGT_INT:
2693 case R600::PRED_SETNE:
2694 case R600::PRED_SETNE_INT:
2695 case R600::SETE:
2696 case R600::SETE_DX10:
2697 case R600::SETE_INT:
2698 case R600::SETGE_DX10:
2699 case R600::SETGE_INT:
2700 case R600::SETGE_UINT:
2701 case R600::SETGT_DX10:
2702 case R600::SETGT_INT:
2703 case R600::SETGT_UINT:
2704 case R600::SETNE_DX10:
2705 case R600::SETNE_INT:
2706 case R600::SGE:
2707 case R600::SGT:
2708 case R600::SNE:
2709 case R600::SUBB_UINT:
2710 case R600::SUB_INT:
2711 case R600::XOR_INT: {
2712 switch (OpNum) {
2713 case 7:
2714 // op: src0
2715 return 0;
2716 case 9:
2717 // op: src0_rel
2718 return 9;
2719 case 12:
2720 // op: src1
2721 return 13;
2722 case 14:
2723 // op: src1_rel
2724 return 22;
2725 case 18:
2726 // op: pred_sel
2727 return 29;
2728 case 17:
2729 // op: last
2730 return 31;
2731 case 8:
2732 // op: src0_neg
2733 return 12;
2734 case 13:
2735 // op: src1_neg
2736 return 25;
2737 case 0:
2738 // op: dst
2739 return 53;
2740 case 20:
2741 // op: bank_swizzle
2742 return 50;
2743 case 5:
2744 // op: dst_rel
2745 return 60;
2746 case 6:
2747 // op: clamp
2748 return 63;
2749 case 10:
2750 // op: src0_abs
2751 return 32;
2752 case 15:
2753 // op: src1_abs
2754 return 33;
2755 case 1:
2756 // op: update_exec_mask
2757 return 34;
2758 case 2:
2759 // op: update_pred
2760 return 35;
2761 case 3:
2762 // op: write
2763 return 36;
2764 case 4:
2765 // op: omod
2766 return 37;
2767 }
2768 break;
2769 }
2770 case R600::INTERP_XY:
2771 case R600::INTERP_ZW: {
2772 switch (OpNum) {
2773 case 7:
2774 // op: src0
2775 return 0;
2776 case 9:
2777 // op: src0_rel
2778 return 9;
2779 case 12:
2780 // op: src1
2781 return 13;
2782 case 14:
2783 // op: src1_rel
2784 return 22;
2785 case 18:
2786 // op: pred_sel
2787 return 29;
2788 case 17:
2789 // op: last
2790 return 31;
2791 case 8:
2792 // op: src0_neg
2793 return 12;
2794 case 13:
2795 // op: src1_neg
2796 return 25;
2797 case 0:
2798 // op: dst
2799 return 53;
2800 case 5:
2801 // op: dst_rel
2802 return 60;
2803 case 6:
2804 // op: clamp
2805 return 63;
2806 case 10:
2807 // op: src0_abs
2808 return 32;
2809 case 15:
2810 // op: src1_abs
2811 return 33;
2812 case 1:
2813 // op: update_exec_mask
2814 return 34;
2815 case 2:
2816 // op: update_pred
2817 return 35;
2818 case 3:
2819 // op: write
2820 return 36;
2821 case 4:
2822 // op: omod
2823 return 37;
2824 }
2825 break;
2826 }
2827 }
2828 std::string msg;
2829 raw_string_ostream Msg(msg);
2830 Msg << "Not supported instr[opcode]: " << MI << "[" << OpNum << "]";
2831 report_fatal_error(Msg.str().c_str());
2832}
2833
2834#endif // GET_OPERAND_BIT_OFFSET
2835
2836