Lines Matching full:definitions
108 unsigned pck_defs = instr_info.definitions[(int)instr->opcode]; in validate_ir()
119 check(i == instr->definitions.size(), "Too many definitions", instr.get()); in validate_ir()
122 check(i < instr->definitions.size(), "Too few definitions", instr.get()); in validate_ir()
123 if (i >= instr->definitions.size()) in validate_ir()
128 check(instr->definitions[i].isFixed() && instr->definitions[i].physReg() == m0, in validate_ir()
131 check(instr->definitions[i].isFixed() && instr->definitions[i].physReg() == scc, in validate_ir()
135 check(instr->definitions[i].isFixed() && in validate_ir()
136 instr->definitions[i].physReg() == exec && in validate_ir()
137 instr->definitions[i].regClass() == rc, in validate_ir()
140 check(instr->definitions[i].isFixed() && in validate_ir()
141 instr->definitions[i].physReg() == exec_lo && in validate_ir()
142 instr->definitions[i].regClass() == s1, in validate_ir()
145 check(instr->definitions[i].regClass() == program->lane_mask, in validate_ir()
147 check(!instr->definitions[i].isFixed() || in validate_ir()
148 instr->definitions[i].physReg() == vcc || instr->isVOP3() || in validate_ir()
152 check(instr->definitions[i].size() == def, "Definition has wrong size", in validate_ir()
264 check((instr->definitions[0].isFixed() && instr->definitions[0].physReg() == vcc) || in validate_ir()
268 const Definition& def = instr->definitions[0]; in validate_ir()
269 check(def.bytes() <= 4, "SDWA definitions must not be larger than 4 bytes", in validate_ir()
279 "SDWA dst_sel size must be definition size for subdword definitions", in validate_ir()
282 "SDWA dst_sel offset must be 0 for subdword definitions", instr.get()); in validate_ir()
299 if (instr->definitions.size() >= 2) { in validate_ir()
300 check(instr->definitions[1].isFixed() && instr->definitions[1].physReg() == vcc, in validate_ir()
342 if (instr->definitions[0].regClass().is_subdword() && !instr->definitions[0].isFixed()) in validate_ir()
347 check(instr->definitions[0].regClass() == in validate_ir()
358 check(instr->definitions[0].regClass() == v1 || in validate_ir()
386 /* check subdword definitions */ in validate_ir()
387 for (unsigned i = 0; i < instr->definitions.size(); i++) { in validate_ir()
388 if (instr->definitions[i].regClass().is_subdword()) in validate_ir()
389 check(instr->definitions[i].bytes() <= 4 || instr->isPseudo() || instr->isVMEM(), in validate_ir()
436 check(instr->definitions[0].regClass().type() == RegType::sgpr, in validate_ir()
439 check(instr->definitions[0].regClass().type() == RegType::vgpr, in validate_ir()
518 if (!instr->definitions.empty()) in validate_ir()
519 check(instr->definitions[0].regClass().type() == RegType::sgpr, in validate_ir()
536 check(size == instr->definitions[0].bytes(), in validate_ir()
538 if (instr->definitions[0].regClass().type() == RegType::sgpr) { in validate_ir()
547 check((instr->operands[1].constantValue() + 1) * instr->definitions[0].bytes() <= in validate_ir()
550 check(instr->definitions[0].regClass().type() == RegType::vgpr || in validate_ir()
554 !instr->definitions[0].regClass().is_subdword() || in validate_ir()
560 for (const Definition& def : instr->definitions) { in validate_ir()
566 for (const Definition& def : instr->definitions) in validate_ir()
570 for (const Definition& def : instr->definitions) in validate_ir()
575 check(instr->definitions.size() == instr->operands.size(), in validate_ir()
576 "Number of Operands does not match number of Definitions", instr.get()); in validate_ir()
578 check(instr->definitions[i].bytes() == instr->operands[i].bytes(), in validate_ir()
581 check((instr->definitions[i].regClass().type() == in validate_ir()
583 (instr->definitions[i].regClass().type() == RegType::vgpr && in validate_ir()
586 check(instr->definitions[i].regClass().is_linear_vgpr() == in validate_ir()
590 check(!instr->definitions[i].regClass().is_linear_vgpr(), in validate_ir()
598 check(instr->definitions[0].regClass().type() == RegType::vgpr, in validate_ir()
601 check(instr->definitions[0].size() == op.size(), in validate_ir()
607 check(instr->definitions[0].size() == op.size(), in validate_ir()
621 check(instr->definitions[0].regClass().type() != RegType::sgpr || in validate_ir()
626 check(instr->operands[0].bytes() == instr->definitions[0].bytes(), in validate_ir()
629 if (instr->definitions[0].regClass().type() == RegType::sgpr) in validate_ir()
630 check(instr->definitions.size() >= 2 && instr->definitions[1].isFixed() && in validate_ir()
631 instr->definitions[1].physReg() == scc, in validate_ir()
651 check(instr->definitions.size() == 0, "p_jump_to_epilog must have 0 definitions", in validate_ir()
664 check(instr->definitions.size() == 6, in validate_ir()
665 "p_dual_src_export_gfx11 must have 6 definitions", instr.get()); in validate_ir()
666 check(instr->definitions[2].regClass() == program->lane_mask, in validate_ir()
669 check(instr->definitions[3].regClass() == program->lane_mask, in validate_ir()
672 check(instr->definitions[4].physReg() == vcc, in validate_ir()
674 check(instr->definitions[5].physReg() == scc, in validate_ir()
684 check(instr->definitions.size() == 1, "Must have one definition", instr.get()); in validate_ir()
686 if (!instr->definitions.empty()) in validate_ir()
687 check(instr->definitions[0].regClass().is_linear_vgpr(), in validate_ir()
689 if (!instr->definitions.empty() && !instr->operands.empty()) in validate_ir()
690 check(instr->definitions[0].bytes() == instr->operands[0].bytes(), in validate_ir()
703 check(instr->definitions[0].regClass().type() == RegType::sgpr || in validate_ir()
707 check(instr->definitions[0].regClass().type() == RegType::vgpr, in validate_ir()
720 if (!instr->definitions.empty()) in validate_ir()
721 check(instr->definitions[0].regClass().type() == RegType::sgpr, in validate_ir()
758 if (instr->definitions.size()) { in validate_ir()
759 check(instr->definitions[0].regClass().type() == RegType::vgpr, in validate_ir()
760 "VMEM definitions[0] (VDATA) must be VGPR", instr.get()); in validate_ir()
761 check(d16 || !instr->definitions[0].regClass().is_subdword(), in validate_ir()
763 check(instr->definitions[0].bytes() <= 8 || !d16, in validate_ir()
780 check(instr->definitions.empty() || in validate_ir()
781 (instr->definitions[0].regClass() == instr->operands[2].regClass() || in validate_ir()
783 "MIMG operands[2] (VDATA) must be the same as definitions[0] for atomics and " in validate_ir()
823 if (instr->definitions.size()) { in validate_ir()
824 check(instr->definitions[0].regClass().type() == RegType::vgpr, in validate_ir()
825 "MIMG definitions[0] (VDATA) must be VGPR", instr.get()); in validate_ir()
826 check(instr->mimg().d16 || !instr->definitions[0].regClass().is_subdword(), in validate_ir()
828 check(instr->definitions[0].bytes() <= 8 || !instr->mimg().d16, in validate_ir()
838 if (!instr->definitions.empty()) in validate_ir()
839 check(instr->definitions[0].regClass().type() == RegType::vgpr, in validate_ir()
865 if (!instr->definitions.empty()) in validate_ir()
866 check(instr->definitions[0].regClass().type() == RegType::vgpr, in validate_ir()
874 check(instr->definitions.size() == 1 && instr->definitions[0].regClass() == v1, in validate_ir()
1060 Definition def = instr->definitions[0]; in validate_subdword_definition()
1095 Definition def = instr->definitions[index]; in get_subdword_bytes_written()
1154 for (unsigned i = 0; i < instr->definitions.size(); i++) { in validate_instr_defs()
1155 Definition& def = instr->definitions[i]; in validate_instr_defs()
1183 for (const Definition& def : instr->definitions) { in validate_instr_defs()
1254 for (unsigned i = 0; i < instr->definitions.size(); i++) { in validate_ra()
1255 Definition& def = instr->definitions[i]; in validate_ra()
1331 for (const Definition& def : instr->definitions) { in validate_ra()