Lines Matching full:encoding
114 uint32_t encoding = (0b10 << 30); in emit_instruction() local
115 encoding |= opcode << 23; in emit_instruction()
116 encoding |= !instr->definitions.empty() ? instr->definitions[0].physReg() << 16 : 0; in emit_instruction()
117 encoding |= instr->operands.size() >= 2 ? instr->operands[1].physReg() << 8 : 0; in emit_instruction()
118 encoding |= !instr->operands.empty() ? instr->operands[0].physReg() : 0; in emit_instruction()
119 out.push_back(encoding); in emit_instruction()
139 uint32_t encoding = (0b1011 << 28); in emit_instruction() local
140 encoding |= opcode << 23; in emit_instruction()
141 encoding |= !instr->definitions.empty() && !(instr->definitions[0].physReg() == scc) in emit_instruction()
146 encoding |= sopk.imm; in emit_instruction()
147 out.push_back(encoding); in emit_instruction()
151 uint32_t encoding = (0b101111101 << 23); in emit_instruction() local
152 encoding |= !instr->definitions.empty() ? instr->definitions[0].physReg() << 16 : 0; in emit_instruction()
153 encoding |= opcode << 8; in emit_instruction()
154 encoding |= !instr->operands.empty() ? instr->operands[0].physReg() : 0; in emit_instruction()
155 out.push_back(encoding); in emit_instruction()
159 uint32_t encoding = (0b101111110 << 23); in emit_instruction() local
160 encoding |= opcode << 16; in emit_instruction()
161 encoding |= instr->operands.size() == 2 ? instr->operands[1].physReg() << 8 : 0; in emit_instruction()
162 encoding |= !instr->operands.empty() ? instr->operands[0].physReg() : 0; in emit_instruction()
163 out.push_back(encoding); in emit_instruction()
168 uint32_t encoding = (0b101111111 << 23); in emit_instruction() local
169 encoding |= opcode << 16; in emit_instruction()
170 encoding |= (uint16_t)sopp.imm; in emit_instruction()
175 out.push_back(encoding); in emit_instruction()
182 uint32_t encoding = 0; in emit_instruction() local
185 encoding = (0b11000 << 27); in emit_instruction()
186 encoding |= opcode << 22; in emit_instruction()
187 encoding |= instr->definitions.size() ? instr->definitions[0].physReg() << 15 : 0; in emit_instruction()
188 encoding |= instr->operands.size() ? (instr->operands[0].physReg() >> 1) << 9 : 0; in emit_instruction()
191 encoding |= instr->operands[1].physReg().reg(); in emit_instruction()
193 encoding |= 255; /* SQ_SRC_LITERAL */ in emit_instruction()
195 encoding |= instr->operands[1].constantValue() >> 2; in emit_instruction()
196 encoding |= 1 << 8; in emit_instruction()
199 out.push_back(encoding); in emit_instruction()
208 encoding = (0b110000 << 26); in emit_instruction()
210 encoding |= smem.nv ? 1 << 15 : 0; in emit_instruction()
212 encoding = (0b111101 << 26); in emit_instruction()
214 encoding |= smem.dlc ? 1 << 14 : 0; in emit_instruction()
217 encoding |= opcode << 18; in emit_instruction()
218 encoding |= smem.glc ? 1 << 16 : 0; in emit_instruction()
222 encoding |= instr->operands[1].isConstant() ? 1 << 17 : 0; /* IMM - immediate enable */ in emit_instruction()
225 encoding |= soe ? 1 << 14 : 0; in emit_instruction()
229 encoding |= (is_load ? instr->definitions[0].physReg() : instr->operands[2].physReg()) in emit_instruction()
233 encoding |= instr->operands[0].physReg() >> 1; in emit_instruction()
236 out.push_back(encoding); in emit_instruction()
237 encoding = 0; in emit_instruction()
267 encoding |= offset; in emit_instruction()
268 encoding |= soffset << 25; in emit_instruction()
270 out.push_back(encoding); in emit_instruction()
274 uint32_t encoding = 0; in emit_instruction() local
275 encoding |= opcode << 25; in emit_instruction()
276 encoding |= (0xFF & instr->definitions[0].physReg()) << 17; in emit_instruction()
277 encoding |= (0xFF & instr->operands[1].physReg()) << 9; in emit_instruction()
278 encoding |= instr->operands[0].physReg(); in emit_instruction()
279 out.push_back(encoding); in emit_instruction()
283 uint32_t encoding = (0b0111111 << 25); in emit_instruction() local
285 encoding |= (0xFF & instr->definitions[0].physReg()) << 17; in emit_instruction()
286 encoding |= opcode << 9; in emit_instruction()
288 encoding |= instr->operands[0].physReg(); in emit_instruction()
289 out.push_back(encoding); in emit_instruction()
293 uint32_t encoding = (0b0111110 << 25); in emit_instruction() local
294 encoding |= opcode << 17; in emit_instruction()
295 encoding |= (0xFF & instr->operands[1].physReg()) << 9; in emit_instruction()
296 encoding |= instr->operands[0].physReg(); in emit_instruction()
297 out.push_back(encoding); in emit_instruction()
302 uint32_t encoding = 0; in emit_instruction() local
309 encoding = (0b110100 << 26); in emit_instruction()
311 encoding = (0b110101 << 26); in emit_instruction()
316 encoding |= opcode << 16; in emit_instruction()
317 encoding |= (0xFF & instr->definitions[0].physReg()); in emit_instruction()
318 out.push_back(encoding); in emit_instruction()
320 encoding = 0; in emit_instruction()
321 encoding |= interp.attribute; in emit_instruction()
322 encoding |= interp.component << 6; in emit_instruction()
323 encoding |= instr->operands[0].physReg() << 9; in emit_instruction()
327 encoding |= instr->operands[2].physReg() << 18; in emit_instruction()
329 out.push_back(encoding); in emit_instruction()
332 encoding = (0b110101 << 26); /* Vega ISA doc says 110010 but it's wrong */ in emit_instruction()
334 encoding = (0b110010 << 26); in emit_instruction()
337 assert(encoding); in emit_instruction()
338 encoding |= (0xFF & instr->definitions[0].physReg()) << 18; in emit_instruction()
339 encoding |= opcode << 16; in emit_instruction()
340 encoding |= interp.attribute << 10; in emit_instruction()
341 encoding |= interp.component << 8; in emit_instruction()
343 encoding |= (0x3 & instr->operands[0].constantValue()); in emit_instruction()
345 encoding |= (0xFF & instr->operands[0].physReg()); in emit_instruction()
346 out.push_back(encoding); in emit_instruction()
352 uint32_t encoding = (0b110110 << 26); in emit_instruction() local
354 encoding |= opcode << 17; in emit_instruction()
355 encoding |= (ds.gds ? 1 : 0) << 16; in emit_instruction()
357 encoding |= opcode << 18; in emit_instruction()
358 encoding |= (ds.gds ? 1 : 0) << 17; in emit_instruction()
360 encoding |= ((0xFF & ds.offset1) << 8); in emit_instruction()
361 encoding |= (0xFFFF & ds.offset0); in emit_instruction()
362 out.push_back(encoding); in emit_instruction()
363 encoding = 0; in emit_instruction()
365 encoding |= (0xFF & reg) << 24; in emit_instruction()
369 encoding |= (0xFF & reg) << 16; in emit_instruction()
373 encoding |= (0xFF & reg) << 8; in emit_instruction()
374 encoding |= (0xFF & instr->operands[0].physReg()); in emit_instruction()
375 out.push_back(encoding); in emit_instruction()
380 uint32_t encoding = (0b111000 << 26); in emit_instruction() local
381 encoding |= opcode << 18; in emit_instruction()
382 encoding |= (mubuf.lds ? 1 : 0) << 16; in emit_instruction()
383 encoding |= (mubuf.glc ? 1 : 0) << 14; in emit_instruction()
384 encoding |= (mubuf.idxen ? 1 : 0) << 13; in emit_instruction()
387 encoding |= (mubuf.addr64 ? 1 : 0) << 15; in emit_instruction()
388 encoding |= (mubuf.offen ? 1 : 0) << 12; in emit_instruction()
391 encoding |= (mubuf.slc ? 1 : 0) << 17; in emit_instruction()
393 encoding |= (mubuf.dlc ? 1 : 0) << 15; in emit_instruction()
395 encoding |= 0x0FFF & mubuf.offset; in emit_instruction()
396 out.push_back(encoding); in emit_instruction()
397 encoding = 0; in emit_instruction()
399 encoding |= (mubuf.slc ? 1 : 0) << 22; in emit_instruction()
401 encoding |= instr->operands[2].physReg() << 24; in emit_instruction()
402 encoding |= (mubuf.tfe ? 1 : 0) << 23; in emit_instruction()
403 encoding |= (instr->operands[0].physReg() >> 2) << 16; in emit_instruction()
406 encoding |= (0xFF & reg) << 8; in emit_instruction()
407 encoding |= (0xFF & instr->operands[1].physReg()); in emit_instruction()
408 out.push_back(encoding); in emit_instruction()
415 uint32_t encoding = (0b111010 << 26); in emit_instruction() local
418 encoding |= (mtbuf.dlc ? 1 : 0) << 15; /* DLC bit replaces one bit of the OPCODE on GFX10 */ in emit_instruction()
419 encoding |= (mtbuf.glc ? 1 : 0) << 14; in emit_instruction()
420 encoding |= (mtbuf.idxen ? 1 : 0) << 13; in emit_instruction()
421 encoding |= (mtbuf.offen ? 1 : 0) << 12; in emit_instruction()
422 encoding |= 0x0FFF & mtbuf.offset; in emit_instruction()
423 encoding |= (img_format << 19); /* Handles both the GFX10 FORMAT and the old NFMT+DFMT */ in emit_instruction()
426 encoding |= opcode << 15; in emit_instruction()
428 encoding |= (opcode & 0x07) << 16; /* 3 LSBs of 4-bit OPCODE */ in emit_instruction()
431 out.push_back(encoding); in emit_instruction()
432 encoding = 0; in emit_instruction()
434 encoding |= instr->operands[2].physReg() << 24; in emit_instruction()
435 encoding |= (mtbuf.tfe ? 1 : 0) << 23; in emit_instruction()
436 encoding |= (mtbuf.slc ? 1 : 0) << 22; in emit_instruction()
437 encoding |= (instr->operands[0].physReg() >> 2) << 16; in emit_instruction()
440 encoding |= (0xFF & reg) << 8; in emit_instruction()
441 encoding |= (0xFF & instr->operands[1].physReg()); in emit_instruction()
444 encoding |= (((opcode & 0x08) >> 3) << 21); /* MSB of 4-bit OPCODE */ in emit_instruction()
447 out.push_back(encoding); in emit_instruction()
455 uint32_t encoding = (0b111100 << 26); in emit_instruction() local
456 encoding |= mimg.slc ? 1 << 25 : 0; in emit_instruction()
457 encoding |= (opcode & 0x7f) << 18; in emit_instruction()
458 encoding |= (opcode >> 7) & 1; in emit_instruction()
459 encoding |= mimg.lwe ? 1 << 17 : 0; in emit_instruction()
460 encoding |= mimg.tfe ? 1 << 16 : 0; in emit_instruction()
461 encoding |= mimg.glc ? 1 << 13 : 0; in emit_instruction()
462 encoding |= mimg.unrm ? 1 << 12 : 0; in emit_instruction()
466 encoding |= mimg.a16 ? 1 << 15 : 0; in emit_instruction()
467 encoding |= mimg.da ? 1 << 14 : 0; in emit_instruction()
469 encoding |= mimg.r128 ? 1 << 15 in emit_instruction()
471 encoding |= nsa_dwords << 1; in emit_instruction()
472 encoding |= mimg.dim << 3; /* GFX10: dimensionality instead of declare array */ in emit_instruction()
473 encoding |= mimg.dlc ? 1 << 7 : 0; in emit_instruction()
475 encoding |= (0xF & mimg.dmask) << 8; in emit_instruction()
476 out.push_back(encoding); in emit_instruction()
477 encoding = (0xFF & instr->operands[3].physReg()); /* VADDR */ in emit_instruction()
479 encoding |= (0xFF & instr->definitions[0].physReg()) << 8; /* VDATA */ in emit_instruction()
481 encoding |= (0xFF & instr->operands[2].physReg()) << 8; /* VDATA */ in emit_instruction()
483 encoding |= (0x1F & (instr->operands[0].physReg() >> 2)) << 16; /* T# (resource) */ in emit_instruction()
485 encoding |= (0x1F & (instr->operands[1].physReg() >> 2)) << 21; /* sampler */ in emit_instruction()
488 encoding |= mimg.d16 ? 1 << 31 : 0; in emit_instruction()
491 encoding |= mimg.a16 ? 1 << 30 : 0; in emit_instruction()
494 out.push_back(encoding); in emit_instruction()
508 uint32_t encoding = (0b110111 << 26); in emit_instruction() local
509 encoding |= opcode << 18; in emit_instruction()
515 encoding |= flat.offset & 0x1fff; in emit_instruction()
523 encoding |= flat.offset & 0xfff; in emit_instruction()
526 encoding |= 1 << 14; in emit_instruction()
528 encoding |= 2 << 14; in emit_instruction()
529 encoding |= flat.lds ? 1 << 13 : 0; in emit_instruction()
530 encoding |= flat.glc ? 1 << 16 : 0; in emit_instruction()
531 encoding |= flat.slc ? 1 << 17 : 0; in emit_instruction()
534 encoding |= flat.dlc ? 1 << 12 : 0; in emit_instruction()
538 out.push_back(encoding); in emit_instruction()
539 encoding = (0xFF & instr->operands[0].physReg()); in emit_instruction()
541 encoding |= (0xFF & instr->definitions[0].physReg()) << 24; in emit_instruction()
543 encoding |= (0xFF & instr->operands[2].physReg()) << 8; in emit_instruction()
547 encoding |= instr->operands[1].physReg() << 16; in emit_instruction()
555 encoding |= 0x7F << 16; in emit_instruction()
557 encoding |= sgpr_null << 16; in emit_instruction()
559 encoding |= flat.nv ? 1 << 23 : 0; in emit_instruction()
560 out.push_back(encoding); in emit_instruction()
565 uint32_t encoding; in emit_instruction() local
567 encoding = (0b110001 << 26); in emit_instruction()
569 encoding = (0b111110 << 26); in emit_instruction()
572 encoding |= exp.valid_mask ? 0b1 << 12 : 0; in emit_instruction()
573 encoding |= exp.done ? 0b1 << 11 : 0; in emit_instruction()
574 encoding |= exp.compressed ? 0b1 << 10 : 0; in emit_instruction()
575 encoding |= exp.dest << 4; in emit_instruction()
576 encoding |= exp.enabled_mask; in emit_instruction()
577 out.push_back(encoding); in emit_instruction()
578 encoding = 0xFF & exp.operands[0].physReg(); in emit_instruction()
579 encoding |= (0xFF & exp.operands[1].physReg()) << 8; in emit_instruction()
580 encoding |= (0xFF & exp.operands[2].physReg()) << 16; in emit_instruction()
581 encoding |= (0xFF & exp.operands[3].physReg()) << 24; in emit_instruction()
582 out.push_back(encoding); in emit_instruction()
607 uint32_t encoding; in emit_instruction() local
609 encoding = (0b110100 << 26); in emit_instruction()
611 encoding = (0b110101 << 26); in emit_instruction()
617 encoding |= opcode << 17; in emit_instruction()
618 encoding |= (vop3.clamp ? 1 : 0) << 11; in emit_instruction()
620 encoding |= opcode << 16; in emit_instruction()
621 encoding |= (vop3.clamp ? 1 : 0) << 15; in emit_instruction()
623 encoding |= vop3.opsel << 11; in emit_instruction()
625 encoding |= vop3.abs[i] << (8 + i); in emit_instruction()
627 encoding |= instr->definitions[1].physReg() << 8; in emit_instruction()
628 encoding |= (0xFF & instr->definitions[0].physReg()); in emit_instruction()
629 out.push_back(encoding); in emit_instruction()
630 encoding = 0; in emit_instruction()
632 encoding = 0x3 & instr->operands[0].constantValue(); in emit_instruction()
634 encoding |= instr->operands[0].physReg() << 0; in emit_instruction()
635 encoding |= instr->operands[1].physReg() << 9; in emit_instruction()
636 /* Encoding src2 works fine with hardware but breaks some disassemblers. */ in emit_instruction()
639 encoding |= instr->operands[i].physReg() << (i * 9); in emit_instruction()
641 encoding |= vop3.omod << 27; in emit_instruction()
643 encoding |= vop3.neg[i] << (29 + i); in emit_instruction()
644 out.push_back(encoding); in emit_instruction()
649 uint32_t encoding; in emit_instruction() local
651 encoding = (0b110100111 << 23); in emit_instruction()
653 encoding = (0b110011 << 26); in emit_instruction()
658 encoding |= opcode << 16; in emit_instruction()
659 encoding |= (vop3.clamp ? 1 : 0) << 15; in emit_instruction()
660 encoding |= vop3.opsel_lo << 11; in emit_instruction()
661 encoding |= ((vop3.opsel_hi & 0x4) ? 1 : 0) << 14; in emit_instruction()
663 encoding |= vop3.neg_hi[i] << (8 + i); in emit_instruction()
664 encoding |= (0xFF & instr->definitions[0].physReg()); in emit_instruction()
665 out.push_back(encoding); in emit_instruction()
666 encoding = 0; in emit_instruction()
668 encoding |= instr->operands[i].physReg() << (i * 9); in emit_instruction()
669 encoding |= (vop3.opsel_hi & 0x3) << 27; in emit_instruction()
671 encoding |= vop3.neg_lo[i] << (29 + i); in emit_instruction()
672 out.push_back(encoding); in emit_instruction()
683 uint32_t encoding = (0xF & dpp.row_mask) << 28; in emit_instruction() local
684 encoding |= (0xF & dpp.bank_mask) << 24; in emit_instruction()
685 encoding |= dpp.abs[1] << 23; in emit_instruction()
686 encoding |= dpp.neg[1] << 22; in emit_instruction()
687 encoding |= dpp.abs[0] << 21; in emit_instruction()
688 encoding |= dpp.neg[0] << 20; in emit_instruction()
690 encoding |= 1 << 18; /* set Fetch Inactive to match GFX9 behaviour */ in emit_instruction()
691 encoding |= dpp.bound_ctrl << 19; in emit_instruction()
692 encoding |= dpp.dpp_ctrl << 8; in emit_instruction()
693 encoding |= (0xFF) & dpp_op.physReg(); in emit_instruction()
694 out.push_back(encoding); in emit_instruction()
705 uint32_t encoding = (0xFF) & dpp_op.physReg(); in emit_instruction() local
707 encoding |= dpp.lane_sel[i] << (8 + i * 3); in emit_instruction()
708 out.push_back(encoding); in emit_instruction()
720 uint32_t encoding = 0; in emit_instruction() local
724 encoding |= instr->definitions[0].physReg() << 8; in emit_instruction()
725 encoding |= 1 << 15; in emit_instruction()
727 encoding |= (sdwa.clamp ? 1 : 0) << 13; in emit_instruction()
729 encoding |= sdwa.dst_sel.to_sdwa_sel(instr->definitions[0].physReg().byte()) << 8; in emit_instruction()
733 encoding |= dst_u << 11; in emit_instruction()
734 encoding |= (sdwa.clamp ? 1 : 0) << 13; in emit_instruction()
735 encoding |= sdwa.omod << 14; in emit_instruction()
738 encoding |= sdwa.sel[0].to_sdwa_sel(sdwa_op.physReg().byte()) << 16; in emit_instruction()
739 encoding |= sdwa.sel[0].sign_extend() ? 1 << 19 : 0; in emit_instruction()
740 encoding |= sdwa.abs[0] << 21; in emit_instruction()
741 encoding |= sdwa.neg[0] << 20; in emit_instruction()
744 encoding |= sdwa.sel[1].to_sdwa_sel(instr->operands[1].physReg().byte()) << 24; in emit_instruction()
745 encoding |= sdwa.sel[1].sign_extend() ? 1 << 27 : 0; in emit_instruction()
746 encoding |= sdwa.abs[1] << 29; in emit_instruction()
747 encoding |= sdwa.neg[1] << 28; in emit_instruction()
750 encoding |= 0xFF & sdwa_op.physReg(); in emit_instruction()
751 encoding |= (sdwa_op.physReg() < 256) << 23; in emit_instruction()
753 encoding |= (instr->operands[1].physReg() < 256) << 31; in emit_instruction()
754 out.push_back(encoding); in emit_instruction()
776 std::cerr << "Encoding:\t" << std::endl; in emit_block()
783 …std::cerr << "encoding: " << "0x" << std::setfill('0') << std::setw(8) << std::hex << out[i] << st… in emit_block()