Lines Matching refs:inst
39 const Instruction* inst) {
42 inst->word(4), &desc) != SPV_SUCCESS ||
75 auto inst = _.FindDef(id);
76 if (!inst || inst->opcode() != spv::Op::OpConstant) {
80 return IsIntScalar(_, inst->type_id(), true, true);
84 auto inst = _.FindDef(id);
85 return inst->word(3);
88 // Check that the operand of a debug info instruction |inst| at |word_index|
92 spv::Op expected_opcode, const Instruction* inst, uint32_t word_index,
94 auto* operand = _.FindDef(inst->word(word_index));
99 return _.diag(SPV_ERROR_INVALID_DATA, inst)
103 return _.diag(SPV_ERROR_INVALID_DATA, inst)
112 // instruction |inst| at |word_index| is a result id of a 32-bit integer
117 const Instruction* inst, uint32_t word_index,
119 if (!IsUint32Constant(_, inst->word(word_index))) {
120 return _.diag(SPV_ERROR_INVALID_DATA, inst)
129 auto result = ValidateOperandForDebugInfo(_, NAME, opcode, inst, index, \
137 _, NAME, inst, index, ext_inst_name); \
141 // True if the operand of a debug info instruction |inst| at |word_index|
147 const Instruction* inst, uint32_t word_index) {
148 if (inst->words().size() <= word_index) return false;
149 auto* debug_inst = _.FindDef(inst->word(word_index));
165 const Instruction* inst, uint32_t word_index) {
166 if (inst->words().size() <= word_index) return false;
167 auto* debug_inst = _.FindDef(inst->word(word_index));
178 // Check that the operand of a debug info instruction |inst| at |word_index|
183 CommonDebugInfoInstructions expected_debug_inst, const Instruction* inst,
189 if (DoesDebugInfoOperandMatchExpectation(_, expectation, inst, word_index))
193 if (_.grammar().lookupExtInst(inst->ext_inst_type(), expected_debug_inst,
196 return _.diag(SPV_ERROR_INVALID_DATA, inst)
200 return _.diag(SPV_ERROR_INVALID_DATA, inst)
208 auto result = ValidateDebugInfoOperand(_, NAME, debug_opcode, inst, index, \
213 // Check that the operand of a debug info instruction |inst| at |word_index|
216 ValidationState_t& _, const Instruction* inst, uint32_t word_index,
219 inst, word_index, ext_inst_name);
222 // Check that the operand of a debug info instruction |inst| at |word_index|
228 const Instruction* inst, uint32_t word_index,
237 if (DoesDebugInfoOperandMatchExpectation(_, expectation, inst, word_index))
240 return _.diag(SPV_ERROR_INVALID_DATA, inst)
246 // Check that the operand of a debug info instruction |inst| at |word_index|
251 const Instruction* inst, uint32_t word_index,
255 if (inst->ext_inst_type() ==
261 if (DoesDebugInfoOperandMatchExpectation(_, expectation, inst, word_index))
276 if (DoesDebugInfoOperandMatchExpectation(_, expectation, inst, word_index))
279 return _.diag(SPV_ERROR_INVALID_DATA, inst)
286 const Instruction* inst,
288 const auto inst_name = ReflectionInstructionName(_, inst);
289 const auto kernel_id = inst->GetOperandAs<uint32_t>(4);
292 return _.diag(SPV_ERROR_INVALID_ID, inst)
304 return _.diag(SPV_ERROR_INVALID_ID, inst)
310 return _.diag(SPV_ERROR_INVALID_ID, inst)
315 return _.diag(SPV_ERROR_INVALID_ID, inst)
320 auto name = _.FindDef(inst->GetOperandAs<uint32_t>(5));
322 return _.diag(SPV_ERROR_INVALID_ID, inst) << "Name must be an OpString";
334 return _.diag(SPV_ERROR_INVALID_ID, inst)
338 const auto num_operands = inst->operands().size();
340 return _.diag(SPV_ERROR_INVALID_ID, inst)
346 const auto num_args_id = inst->GetOperandAs<uint32_t>(6);
348 return _.diag(SPV_ERROR_INVALID_ID, inst)
354 const auto flags_id = inst->GetOperandAs<uint32_t>(7);
356 return _.diag(SPV_ERROR_INVALID_ID, inst)
362 const auto atts_id = inst->GetOperandAs<uint32_t>(8);
364 return _.diag(SPV_ERROR_INVALID_ID, inst)
373 const Instruction* inst) {
374 const auto num_operands = inst->operands().size();
375 if (_.GetIdOpcode(inst->GetOperandAs<uint32_t>(4)) != spv::Op::OpString) {
376 return _.diag(SPV_ERROR_INVALID_ID, inst) << "Name must be an OpString";
379 if (_.GetIdOpcode(inst->GetOperandAs<uint32_t>(5)) != spv::Op::OpString) {
380 return _.diag(SPV_ERROR_INVALID_ID, inst)
385 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
386 return _.diag(SPV_ERROR_INVALID_ID, inst)
392 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
393 return _.diag(SPV_ERROR_INVALID_ID, inst)
399 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(8))) {
400 return _.diag(SPV_ERROR_INVALID_ID, inst)
409 spv_result_t ValidateKernelDecl(ValidationState_t& _, const Instruction* inst) {
410 const auto decl_id = inst->GetOperandAs<uint32_t>(4);
413 return _.diag(SPV_ERROR_INVALID_ID, inst)
417 if (decl->GetOperandAs<uint32_t>(2) != inst->GetOperandAs<uint32_t>(2)) {
418 return _.diag(SPV_ERROR_INVALID_ID, inst)
425 return _.diag(SPV_ERROR_INVALID_ID, inst)
432 spv_result_t ValidateArgInfo(ValidationState_t& _, const Instruction* inst,
434 auto info = _.FindDef(inst->GetOperandAs<uint32_t>(info_index));
436 return _.diag(SPV_ERROR_INVALID_ID, inst)
440 if (info->GetOperandAs<uint32_t>(2) != inst->GetOperandAs<uint32_t>(2)) {
441 return _.diag(SPV_ERROR_INVALID_ID, inst)
447 return _.diag(SPV_ERROR_INVALID_ID, inst)
455 const Instruction* inst) {
456 const auto num_operands = inst->operands().size();
457 if (auto error = ValidateKernelDecl(_, inst)) {
461 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
462 return _.diag(SPV_ERROR_INVALID_ID, inst)
466 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
467 return _.diag(SPV_ERROR_INVALID_ID, inst)
471 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
472 return _.diag(SPV_ERROR_INVALID_ID, inst)
477 if (auto error = ValidateArgInfo(_, inst, 8)) {
486 ValidationState_t& _, const Instruction* inst) {
487 const auto num_operands = inst->operands().size();
488 if (auto error = ValidateKernelDecl(_, inst)) {
492 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
493 return _.diag(SPV_ERROR_INVALID_ID, inst)
497 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
498 return _.diag(SPV_ERROR_INVALID_ID, inst)
502 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
503 return _.diag(SPV_ERROR_INVALID_ID, inst)
507 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(8))) {
508 return _.diag(SPV_ERROR_INVALID_ID, inst)
512 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(9))) {
513 return _.diag(SPV_ERROR_INVALID_ID, inst)
518 if (auto error = ValidateArgInfo(_, inst, 10)) {
527 ValidationState_t& _, const Instruction* inst) {
528 const auto num_operands = inst->operands().size();
529 if (auto error = ValidateKernelDecl(_, inst)) {
533 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
534 return _.diag(SPV_ERROR_INVALID_ID, inst)
538 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
539 return _.diag(SPV_ERROR_INVALID_ID, inst)
543 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
544 return _.diag(SPV_ERROR_INVALID_ID, inst)
549 if (auto error = ValidateArgInfo(_, inst, 8)) {
558 const Instruction* inst) {
559 const auto num_operands = inst->operands().size();
560 if (auto error = ValidateKernelDecl(_, inst)) {
564 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
565 return _.diag(SPV_ERROR_INVALID_ID, inst)
569 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
570 return _.diag(SPV_ERROR_INVALID_ID, inst)
574 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
575 return _.diag(SPV_ERROR_INVALID_ID, inst)
580 if (auto error = ValidateArgInfo(_, inst, 8)) {
589 ValidationState_t& _, const Instruction* inst) {
590 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
591 return _.diag(SPV_ERROR_INVALID_ID, inst)
595 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
596 return _.diag(SPV_ERROR_INVALID_ID, inst)
600 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
601 return _.diag(SPV_ERROR_INVALID_ID, inst)
609 ValidationState_t& _, const Instruction* inst) {
610 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
611 return _.diag(SPV_ERROR_INVALID_ID, inst)
619 const Instruction* inst) {
620 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
621 return _.diag(SPV_ERROR_INVALID_ID, inst)
625 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
626 return _.diag(SPV_ERROR_INVALID_ID, inst)
634 const Instruction* inst) {
635 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
636 return _.diag(SPV_ERROR_INVALID_ID, inst)
640 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
641 return _.diag(SPV_ERROR_INVALID_ID, inst)
645 if (_.GetIdOpcode(inst->GetOperandAs<uint32_t>(6)) != spv::Op::OpString) {
646 return _.diag(SPV_ERROR_INVALID_ID, inst) << "Data must be an OpString";
653 const Instruction* inst) {
654 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
655 return _.diag(SPV_ERROR_INVALID_ID, inst)
659 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
660 return _.diag(SPV_ERROR_INVALID_ID, inst)
664 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
665 return _.diag(SPV_ERROR_INVALID_ID, inst)
673 ValidationState_t& _, const Instruction* inst) {
674 if (auto error = ValidateKernelDecl(_, inst)) {
678 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
679 return _.diag(SPV_ERROR_INVALID_ID, inst)
683 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
684 return _.diag(SPV_ERROR_INVALID_ID, inst)
688 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
689 return _.diag(SPV_ERROR_INVALID_ID, inst)
697 const Instruction* inst) {
698 const auto size_id = inst->GetOperandAs<uint32_t>(4);
700 return _.diag(SPV_ERROR_INVALID_ID, inst)
708 const Instruction* inst) {
709 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
710 return _.diag(SPV_ERROR_INVALID_ID, inst)
714 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
715 return _.diag(SPV_ERROR_INVALID_ID, inst)
719 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
720 return _.diag(SPV_ERROR_INVALID_ID, inst)
728 ValidationState_t& _, const Instruction* inst) {
729 if (auto error = ValidateKernelDecl(_, inst)) {
733 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
734 return _.diag(SPV_ERROR_INVALID_ID, inst)
738 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
739 return _.diag(SPV_ERROR_INVALID_ID, inst)
743 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
744 return _.diag(SPV_ERROR_INVALID_ID, inst)
752 ValidationState_t& _, const Instruction* inst) {
753 if (auto error = ValidateKernelDecl(_, inst)) {
757 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
758 return _.diag(SPV_ERROR_INVALID_ID, inst)
762 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
763 return _.diag(SPV_ERROR_INVALID_ID, inst)
767 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(7))) {
768 return _.diag(SPV_ERROR_INVALID_ID, inst)
772 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(8))) {
773 return _.diag(SPV_ERROR_INVALID_ID, inst)
777 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(9))) {
778 return _.diag(SPV_ERROR_INVALID_ID, inst)
786 const Instruction* inst) {
787 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
788 return _.diag(SPV_ERROR_INVALID_ID, inst)
792 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
793 return _.diag(SPV_ERROR_INVALID_ID, inst)
797 if (_.GetIdOpcode(inst->GetOperandAs<uint32_t>(6)) != spv::Op::OpString) {
798 return _.diag(SPV_ERROR_INVALID_ID, inst) << "Data must be an OpString";
805 const Instruction* inst) {
806 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
807 return _.diag(SPV_ERROR_INVALID_ID, inst)
811 if (_.GetIdOpcode(inst->GetOperandAs<uint32_t>(5)) != spv::Op::OpString) {
812 return _.diag(SPV_ERROR_INVALID_ID, inst)
816 for (size_t i = 6; i < inst->operands().size(); ++i) {
817 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(i))) {
818 return _.diag(SPV_ERROR_INVALID_ID, inst)
827 ValidationState_t& _, const Instruction* inst) {
828 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
829 return _.diag(SPV_ERROR_INVALID_ID, inst)
833 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
834 return _.diag(SPV_ERROR_INVALID_ID, inst)
838 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
839 return _.diag(SPV_ERROR_INVALID_ID, inst)
847 ValidationState_t& _, const Instruction* inst) {
848 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
849 return _.diag(SPV_ERROR_INVALID_ID, inst)
853 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(5))) {
854 return _.diag(SPV_ERROR_INVALID_ID, inst)
858 if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(6))) {
859 return _.diag(SPV_ERROR_INVALID_ID, inst)
867 const Instruction* inst,
869 if (!_.IsVoidType(inst->type_id())) {
870 return _.diag(SPV_ERROR_INVALID_ID, inst)
876 inst->GetOperandAs<NonSemanticClspvReflectionInstructions>(3);
932 return _.diag(SPV_ERROR_INVALID_ID, inst)
933 << ReflectionInstructionName(_, inst) << " requires version "
939 return ValidateClspvReflectionKernel(_, inst, version);
941 return ValidateClspvReflectionArgumentInfo(_, inst);
949 return ValidateClspvReflectionArgumentBuffer(_, inst);
953 return ValidateClspvReflectionArgumentOffsetBuffer(_, inst);
956 return ValidateClspvReflectionArgumentPushConstant(_, inst);
958 return ValidateClspvReflectionArgumentWorkgroup(_, inst);
961 return ValidateClspvReflectionSpecConstantTriple(_, inst);
963 return ValidateClspvReflectionSpecConstantWorkDim(_, inst);
970 return ValidateClspvReflectionPushConstant(_, inst);
974 return ValidateClspvReflectionInitializedData(_, inst);
976 return ValidateClspvReflectionSampler(_, inst);
978 return ValidateClspvReflectionPropertyRequiredWorkgroupSize(_, inst);
980 return ValidateClspvReflectionSubgroupMaxSize(_, inst);
982 return ValidateClspvReflectionPointerRelocation(_, inst);
985 return ValidateClspvReflectionImageMetadataPushConstant(_, inst);
988 return ValidateClspvReflectionImageMetadataUniform(_, inst);
991 return ValidateClspvReflectionPushConstantData(_, inst);
993 return ValidateClspvReflectionPrintfInfo(_, inst);
995 return ValidateClspvReflectionPrintfStorageBuffer(_, inst);
997 return ValidateClspvReflectionPrintfPushConstant(_, inst);
1013 bool IsConstWithIntScalarType(ValidationState_t& _, const Instruction* inst,
1015 auto* int_scalar_const = _.FindDef(inst->word(word_index));
1024 const Instruction* inst,
1026 auto* dbg_int_scalar_var = _.FindDef(inst->word(word_index));
1035 spv_ext_inst_type_t(inst->ext_inst_type());
1054 spv_result_t ValidateExtension(ValidationState_t& _, const Instruction* inst) {
1056 std::string extension = GetExtensionString(&(inst->c_inst()));
1061 return _.diag(SPV_ERROR_WRONG_VERSION, inst)
1070 const Instruction* inst) {
1074 const std::string name = inst->GetOperandAs<std::string>(name_id);
1076 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1085 spv_result_t ValidateExtInst(ValidationState_t& _, const Instruction* inst) {
1086 const uint32_t result_type = inst->type_id();
1087 const uint32_t num_operands = static_cast<uint32_t>(inst->operands().size());
1089 const uint32_t ext_inst_set = inst->word(3);
1090 const uint32_t ext_inst_index = inst->word(4);
1092 spv_ext_inst_type_t(inst->ext_inst_type());
1140 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1147 const uint32_t operand_type = _.GetOperandTypeId(inst, operand_index);
1149 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1170 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1180 const uint32_t operand_type = _.GetOperandTypeId(inst, operand_index);
1182 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1188 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1195 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1204 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1235 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1243 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1251 const uint32_t operand_type = _.GetOperandTypeId(inst, operand_index);
1253 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1263 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1271 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1277 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1293 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1298 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1300 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1309 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1314 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1315 const uint32_t i_type = _.GetOperandTypeId(inst, 5);
1318 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1326 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1332 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1346 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1352 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1354 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1364 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1369 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1370 const uint32_t exp_type = _.GetOperandTypeId(inst, 5);
1373 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1382 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1393 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1403 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1414 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1419 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1420 const uint32_t exp_type = _.GetOperandTypeId(inst, 5);
1423 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1429 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1436 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1458 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1469 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1471 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1483 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1488 const uint32_t v_type = _.GetOperandTypeId(inst, 4);
1491 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1503 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1508 const uint32_t v_type = _.GetOperandTypeId(inst, 4);
1511 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1521 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1526 const uint32_t v_type = _.GetOperandTypeId(inst, 4);
1529 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1541 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1547 const uint32_t v_type = _.GetOperandTypeId(inst, 4);
1549 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1562 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1568 const uint32_t v_type = _.GetOperandTypeId(inst, 4);
1570 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1581 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1587 const uint32_t v_type = _.GetOperandTypeId(inst, 4);
1589 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1598 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1603 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1605 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1611 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1621 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1626 const uint32_t p0_type = _.GetOperandTypeId(inst, 4);
1628 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1634 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1640 const uint32_t p1_type = _.GetOperandTypeId(inst, 5);
1642 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1648 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1655 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1665 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1671 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1676 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1677 const uint32_t y_type = _.GetOperandTypeId(inst, 5);
1680 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1686 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1695 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1700 const uint32_t i_type = _.GetOperandTypeId(inst, 4);
1701 const uint32_t n_type = _.GetOperandTypeId(inst, 5);
1702 const uint32_t eta_type = _.GetOperandTypeId(inst, 6);
1705 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1711 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1717 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1728 return _.diag(SPV_ERROR_INVALID_CAPABILITY, inst)
1735 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1744 uint32_t interp_id = inst->GetOperandAs<uint32_t>(4);
1749 : _.GetOperandTypeId(inst, 4);
1755 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1761 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1767 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1773 const uint32_t sample_type = _.GetOperandTypeId(inst, 5);
1776 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1783 const uint32_t offset_type = _.GetOperandTypeId(inst, 5);
1787 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1793 _.function(inst->function()->id())
1802 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1807 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1914 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1921 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1929 const uint32_t operand_type = _.GetOperandTypeId(inst, operand_index);
1931 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1944 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1951 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1957 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
1959 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1964 const uint32_t p_type = _.GetOperandTypeId(inst, 5);
1968 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1977 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1984 return _.diag(SPV_ERROR_INVALID_DATA, inst)
1996 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2003 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2010 const uint32_t x_type = _.GetOperandTypeId(inst, operand_index++);
2012 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2018 const uint32_t y_type = _.GetOperandTypeId(inst, operand_index++);
2020 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2026 const uint32_t p_type = _.GetOperandTypeId(inst, operand_index++);
2030 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2039 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2047 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2054 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2065 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2073 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2079 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
2081 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2087 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2099 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2106 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2112 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
2114 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2119 const uint32_t exp_type = _.GetOperandTypeId(inst, 5);
2122 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2128 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2138 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2145 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2151 const uint32_t nancode_type = _.GetOperandTypeId(inst, 4);
2153 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2159 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2166 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2203 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2210 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2218 const uint32_t operand_type = _.GetOperandTypeId(inst, operand_index);
2220 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2232 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2241 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2250 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2256 const uint32_t hi_type = _.GetOperandTypeId(inst, 4);
2257 const uint32_t lo_type = _.GetOperandTypeId(inst, 5);
2260 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2266 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2273 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2287 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2295 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2303 const uint32_t operand_type = _.GetOperandTypeId(inst, operand_index);
2305 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2316 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2323 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2328 const uint32_t x_type = _.GetOperandTypeId(inst, 4);
2329 const uint32_t y_type = _.GetOperandTypeId(inst, 5);
2332 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2338 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2348 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2353 const uint32_t p0_type = _.GetOperandTypeId(inst, 4);
2355 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2362 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2368 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2374 const uint32_t p1_type = _.GetOperandTypeId(inst, 5);
2376 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2386 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2391 const uint32_t p_type = _.GetOperandTypeId(inst, 4);
2393 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2400 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2406 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2417 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2424 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2429 const uint32_t p_type = _.GetOperandTypeId(inst, 4);
2431 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2441 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2449 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2457 const uint32_t operand_type = _.GetOperandTypeId(inst, operand_index);
2459 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2471 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2479 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2485 const uint32_t a_type = _.GetOperandTypeId(inst, 4);
2486 const uint32_t b_type = _.GetOperandTypeId(inst, 5);
2487 const uint32_t c_type = _.GetOperandTypeId(inst, 6);
2490 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2496 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2502 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2508 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2515 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2526 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2533 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2538 const uint32_t offset_type = _.GetOperandTypeId(inst, 4);
2539 const uint32_t p_type = _.GetOperandTypeId(inst, 5);
2543 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2550 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2560 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2570 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2577 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2583 const uint32_t n_value = inst->word(7);
2585 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2595 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2599 const uint32_t data_type = _.GetOperandTypeId(inst, 4);
2600 const uint32_t offset_type = _.GetOperandTypeId(inst, 5);
2601 const uint32_t p_type = _.GetOperandTypeId(inst, 6);
2604 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2611 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2618 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2625 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2635 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2644 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2651 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2661 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2666 const uint32_t offset_type = _.GetOperandTypeId(inst, 4);
2667 const uint32_t p_type = _.GetOperandTypeId(inst, 5);
2671 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2678 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2688 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2698 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2706 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2716 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2723 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2728 const uint32_t offset_type = _.GetOperandTypeId(inst, 4);
2729 const uint32_t p_type = _.GetOperandTypeId(inst, 5);
2733 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2740 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2750 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2760 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2768 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2773 const uint32_t n_value = inst->word(7);
2775 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2790 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2794 const uint32_t data_type = _.GetOperandTypeId(inst, 4);
2795 const uint32_t offset_type = _.GetOperandTypeId(inst, 5);
2796 const uint32_t p_type = _.GetOperandTypeId(inst, 6);
2803 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2810 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2818 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2826 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2833 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2843 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2852 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2860 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2873 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2881 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2887 const uint32_t x_type = _.GetOperandTypeId(inst, operand_index++);
2890 const uint32_t y_type = _.GetOperandTypeId(inst, operand_index++);
2892 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2899 _.GetOperandTypeId(inst, operand_index++);
2902 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2910 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2918 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2925 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2931 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2939 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2950 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2955 const uint32_t format_type = _.GetOperandTypeId(inst, 4);
2960 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2966 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2973 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2982 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2986 const uint32_t p_type = _.GetOperandTypeId(inst, 4);
2987 const uint32_t num_elements_type = _.GetOperandTypeId(inst, 5);
2992 return _.diag(SPV_ERROR_INVALID_DATA, inst)
2998 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3005 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3013 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3021 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3028 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3041 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3050 auto num_words = inst->words().size();
3101 uint32_t vector_count = inst->word(6);
3104 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3111 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3172 _, "Base Type", inst, 5, ext_inst_name, false);
3180 _, "Base Type", inst, 5, ext_inst_name, false);
3187 ValidateOperandBaseType(_, inst, 5, ext_inst_name);
3191 uint32_t component_count = inst->word(6);
3195 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3203 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3211 _, "Base Type", inst, 5, ext_inst_name, false);
3215 auto* component_count = _.FindDef(inst->word(i));
3257 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3271 ValidateOperandBaseType(_, inst, 6, ext_inst_name);
3277 ValidateOperandLexicalScope(_, "Parent", inst, 10, ext_inst_name);
3283 auto* return_type = _.FindDef(inst->word(6));
3288 _, "Return Type", inst, 6, ext_inst_name, true);
3293 _, "Parameter Types", inst, word_index, ext_inst_name, true);
3305 inst, 6)) {
3307 _, "Underlying Types", inst, 6, ext_inst_name, false);
3315 ValidateOperandLexicalScope(_, "Parent", inst, 10, ext_inst_name);
3318 auto* size = _.FindDef(inst->word(11));
3320 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3338 ValidateOperandLexicalScope(_, "Parent", inst, 10, ext_inst_name);
3346 inst, 12)) {
3358 inst, word_index)) {
3359 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3373 ValidateOperandDebugType(_, "Type", inst, 6, ext_inst_name, true);
3398 auto* debug_inst = _.FindDef(inst->word(5));
3403 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3409 debug_inst = _.FindDef(inst->word(6));
3414 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3426 auto validate_type = ValidateOperandDebugType(_, "Type", inst, 6,
3433 ValidateOperandLexicalScope(_, "Parent", inst, 10, ext_inst_name);
3451 inst, 14)) {
3463 auto validate_type = ValidateOperandDebugType(_, "Type", inst, 6,
3470 ValidateOperandLexicalScope(_, "Parent", inst, 10, ext_inst_name);
3481 ValidateOperandLexicalScope(_, "Parent", inst, 8, ext_inst_name);
3488 ValidateOperandLexicalScope(_, "Scope", inst, 5, ext_inst_name);
3500 ValidateOperandDebugType(_, "Type", inst, 6, ext_inst_name, true);
3506 ValidateOperandLexicalScope(_, "Parent", inst, 10, ext_inst_name);
3517 auto* operand = _.FindDef(inst->word(6));
3520 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3531 auto index_inst = _.FindDef(inst->word(word_index));
3534 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3555 inst, 5)) {
3556 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3570 inst, word_index)) {
3571 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3583 _, "Actual Type", inst, 6, ext_inst_name, false);
3590 inst, 7)) {
3600 auto validate_type = ValidateOperandDebugType(_, "Type", inst, 6,
3607 ValidateOperandLexicalScope(_, "Scope", inst, 10, ext_inst_name);
3615 inst, 12)) {
3616 auto* operand = _.FindDef(inst->word(12));
3619 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3634 ValidateOperandLexicalScope(_, "Scope", inst, 6, ext_inst_name);
3651 if (!IsConstWithIntScalarType(_, inst, word_index) &&
3652 !IsDebugVariableWithIntScalarType(_, inst, word_index)) {
3653 return _.diag(SPV_ERROR_INVALID_DATA, inst)
3678 auto import_inst = _.FindDef(inst->GetOperandAs<uint32_t>(2));
3699 return ValidateClspvReflectionInstruction(_, inst, version);
3705 spv_result_t ExtensionPass(ValidationState_t& _, const Instruction* inst) {
3706 const spv::Op opcode = inst->opcode();
3707 if (opcode == spv::Op::OpExtension) return ValidateExtension(_, inst);
3708 if (opcode == spv::Op::OpExtInstImport) return ValidateExtInstImport(_, inst);
3709 if (opcode == spv::Op::OpExtInst) return ValidateExtInst(_, inst);