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