Lines Matching refs:encoding

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