Lines Matching refs:inst

42 std::string GetIdDesc(const Instruction& inst) {
44 ss << "ID <" << inst.id() << "> (Op" << spvOpcodeString(inst.opcode()) << ")";
60 const Instruction& inst,
63 if (inst.opcode() != spv::Op::OpTypeStruct) {
64 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
65 << GetIdDesc(inst)
69 *underlying_type = inst.word(decoration.struct_member_index() + 2);
73 if (inst.opcode() == spv::Op::OpTypeStruct) {
74 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
75 << GetIdDesc(inst)
80 if (spvOpcodeIsConstant(inst.opcode())) {
81 *underlying_type = inst.type_id();
86 if (!_.GetPointerTypeInfo(inst.type_id(), underlying_type, &storage_class)) {
87 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
88 << GetIdDesc(inst)
97 spv::StorageClass GetStorageClass(const Instruction& inst) {
98 switch (inst.opcode()) {
101 return spv::StorageClass(inst.word(2));
104 return spv::StorageClass(inst.word(3));
107 return spv::StorageClass(inst.word(4));
262 const Instruction& inst);
265 // by |inst| is decorated with BuiltIn |decoration|.
270 const Decoration& decoration, const Instruction& inst);
272 const Instruction& inst);
274 const Instruction& inst);
276 const Instruction& inst);
278 const Decoration& decoration, const Instruction& inst);
280 const Instruction& inst);
282 const Instruction& inst);
284 const Decoration& decoration, const Instruction& inst);
286 const Instruction& inst);
288 const Instruction& inst);
290 const Instruction& inst);
292 const Instruction& inst);
294 const Instruction& inst);
296 const Instruction& inst);
298 const Instruction& inst);
300 const Instruction& inst);
302 const Instruction& inst);
304 const Instruction& inst);
306 const Instruction& inst);
308 const Instruction& inst);
310 const Instruction& inst);
312 const Decoration& decoration, const Instruction& inst);
314 const Instruction& inst);
316 const Decoration& decoration, const Instruction& inst);
318 const Instruction& inst);
320 const Instruction& inst);
322 const Instruction& inst);
324 const Instruction& inst);
326 const Instruction& inst);
328 const Instruction& inst);
330 const Instruction& inst);
333 const Decoration& decoration, const Instruction& inst);
335 const Instruction& inst);
338 const Decoration& decoration, const Instruction& inst);
342 const Instruction& inst);
345 const Instruction& inst);
348 const Instruction& inst);
351 const Decoration& decoration, const Instruction& inst);
354 const Instruction& inst);
357 const Decoration& decoration, const Instruction& inst);
569 const Decoration& decoration, const Instruction& inst,
572 const Decoration& decoration, const Instruction& inst,
575 const Decoration& decoration, const Instruction& inst,
578 const Decoration& decoration, const Instruction& inst,
582 const Decoration& decoration, const Instruction& inst,
585 const Decoration& decoration, const Instruction& inst,
588 const Decoration& decoration, const Instruction& inst,
592 const Decoration& decoration, const Instruction& inst,
595 const Decoration& decoration, const Instruction& inst,
598 const Decoration& decoration, const Instruction& inst,
602 const Decoration& decoration, const Instruction& inst,
606 const Decoration& decoration, const Instruction& inst,
610 const Decoration& decoration, const Instruction& inst,
616 const Decoration& decoration, const Instruction& inst,
620 const Decoration& decoration, const Instruction& inst,
624 const Decoration& decoration, const Instruction& inst,
629 const Decoration& decoration, const Instruction& inst,
635 const Instruction& inst) const;
647 std::string GetStorageClassDesc(const Instruction& inst) const;
651 void Update(const Instruction& inst);
675 void BuiltInsValidator::Update(const Instruction& inst) {
676 const spv::Op opcode = inst.opcode();
680 function_id_ = inst.id();
702 const Decoration& decoration, const Instruction& inst) const {
705 assert(inst.opcode() == spv::Op::OpTypeStruct);
707 ss << " of struct ID <" << inst.id() << ">";
709 ss << GetIdDesc(inst);
741 const Instruction& inst) const {
743 ss << GetIdDesc(inst) << " uses storage class ";
745 uint32_t(GetStorageClass(inst)));
751 const Decoration& decoration, const Instruction& inst,
755 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
760 return diag(GetDefinitionDesc(decoration, inst) + " is not a bool scalar.");
767 const Decoration& decoration, const Instruction& inst,
771 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
776 return diag(GetDefinitionDesc(decoration, inst) + " is not an int scalar.");
783 const Decoration& decoration, const Instruction& inst,
787 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
791 return ValidateI32Helper(decoration, inst, diag, underlying_type);
795 const Decoration& decoration, const Instruction& inst,
799 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
808 return ValidateI32Helper(decoration, inst, diag, underlying_type);
812 const Decoration& decoration, const Instruction& inst,
816 return diag(GetDefinitionDesc(decoration, inst) + " is not an int scalar.");
822 ss << GetDefinitionDesc(decoration, inst) << " has bit width " << bit_width
831 const Decoration& decoration, const Instruction& inst,
835 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
844 return ValidateF32Helper(decoration, inst, diag, underlying_type);
848 const Decoration& decoration, const Instruction& inst,
852 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
856 return ValidateF32Helper(decoration, inst, diag, underlying_type);
860 const Decoration& decoration, const Instruction& inst,
864 return diag(GetDefinitionDesc(decoration, inst) +
871 ss << GetDefinitionDesc(decoration, inst) << " has bit width " << bit_width
880 const Decoration& decoration, const Instruction& inst,
885 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
890 return diag(GetDefinitionDesc(decoration, inst) + " is not an int vector.");
896 ss << GetDefinitionDesc(decoration, inst) << " has "
904 ss << GetDefinitionDesc(decoration, inst)
913 const Decoration& decoration, const Instruction& inst,
918 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
927 return ValidateF32VecHelper(decoration, inst, num_components, diag,
932 const Decoration& decoration, const Instruction& inst,
937 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
941 return ValidateF32VecHelper(decoration, inst, num_components, diag,
946 const Decoration& decoration, const Instruction& inst,
951 return diag(GetDefinitionDesc(decoration, inst) +
958 ss << GetDefinitionDesc(decoration, inst) << " has "
966 ss << GetDefinitionDesc(decoration, inst)
975 const Decoration& decoration, const Instruction& inst,
979 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
985 return diag(GetDefinitionDesc(decoration, inst) + " is not an array.");
990 return diag(GetDefinitionDesc(decoration, inst) +
997 ss << GetDefinitionDesc(decoration, inst)
1006 const Decoration& decoration, const Instruction& inst,
1011 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
1015 return ValidateF32ArrHelper(decoration, inst, num_components, diag,
1020 const Decoration& decoration, const Instruction& inst,
1025 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
1037 return ValidateF32ArrHelper(decoration, inst, num_components, diag,
1042 const Decoration& decoration, const Instruction& inst,
1048 return diag(GetDefinitionDesc(decoration, inst) + " is not an array.");
1053 return diag(GetDefinitionDesc(decoration, inst) +
1060 ss << GetDefinitionDesc(decoration, inst)
1072 ss << GetDefinitionDesc(decoration, inst) << " has "
1082 const Decoration& decoration, const Instruction& inst,
1091 GetUnderlyingType(_, decoration, inst, &underlying_type)) {
1098 ss << GetDefinitionDesc(decoration, inst) << " has columns " << num_cols
1104 return ValidateF32VecHelper(decoration, inst, req_num_rows, diag, col_type);
1139 const Decoration& decoration, const Instruction& inst) {
1141 return ValidateClipOrCullDistanceAtReference(decoration, inst, inst, inst);
1310 const Decoration& decoration, const Instruction& inst) {
1313 decoration, inst, 4,
1314 [this, &inst](const std::string& message) -> spv_result_t {
1315 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1328 return ValidateFragCoordAtReference(decoration, inst, inst, inst);
1372 const Decoration& decoration, const Instruction& inst) {
1375 decoration, inst,
1376 [this, &inst](const std::string& message) -> spv_result_t {
1377 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1389 return ValidateFragDepthAtReference(decoration, inst, inst, inst);
1448 const Decoration& decoration, const Instruction& inst) {
1451 decoration, inst,
1452 [this, &inst](const std::string& message) -> spv_result_t {
1453 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1465 return ValidateFrontFacingAtReference(decoration, inst, inst, inst);
1509 const Decoration& decoration, const Instruction& inst) {
1512 decoration, inst,
1513 [this, &inst](const std::string& message) -> spv_result_t {
1514 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1525 return ValidateHelperInvocationAtReference(decoration, inst, inst, inst);
1569 const Decoration& decoration, const Instruction& inst) {
1572 decoration, inst,
1573 [this, &inst](const std::string& message) -> spv_result_t {
1574 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1585 return ValidateInvocationIdAtReference(decoration, inst, inst, inst);
1629 const Decoration& decoration, const Instruction& inst) {
1632 decoration, inst,
1633 [this, &inst](const std::string& message) -> spv_result_t {
1634 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1646 return ValidateInstanceIndexAtReference(decoration, inst, inst, inst);
1690 const Decoration& decoration, const Instruction& inst) {
1693 decoration, inst,
1694 [this, &inst](const std::string& message) -> spv_result_t {
1695 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1706 return ValidatePatchVerticesAtReference(decoration, inst, inst, inst);
1751 const Decoration& decoration, const Instruction& inst) {
1754 decoration, inst, 2,
1755 [this, &inst](const std::string& message) -> spv_result_t {
1756 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
1768 return ValidatePointCoordAtReference(decoration, inst, inst, inst);
1811 const Decoration& decoration, const Instruction& inst) {
1813 return ValidatePointSizeAtReference(decoration, inst, inst, inst);
1929 const Decoration& decoration, const Instruction& inst) {
1931 return ValidatePositionAtReference(decoration, inst, inst, inst);
2063 const Decoration& decoration, const Instruction& inst) {
2070 decoration, inst,
2071 [this, &inst](const std::string& message) -> spv_result_t {
2072 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2082 decoration, inst,
2083 [this, &inst](const std::string& message) -> spv_result_t {
2084 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2096 return ValidatePrimitiveIdAtReference(decoration, inst, inst, inst);
2202 const Decoration& decoration, const Instruction& inst) {
2205 decoration, inst,
2206 [this, &inst](const std::string& message) -> spv_result_t {
2207 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2218 return ValidateSampleIdAtReference(decoration, inst, inst, inst);
2261 const Decoration& decoration, const Instruction& inst) {
2264 decoration, inst,
2265 [this, &inst](const std::string& message) -> spv_result_t {
2266 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2277 return ValidateSampleMaskAtReference(decoration, inst, inst, inst);
2322 const Decoration& decoration, const Instruction& inst) {
2325 decoration, inst, 2,
2326 [this, &inst](const std::string& message) -> spv_result_t {
2327 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2339 return ValidateSamplePositionAtReference(decoration, inst, inst, inst);
2384 const Decoration& decoration, const Instruction& inst) {
2387 decoration, inst, 3,
2388 [this, &inst](const std::string& message) -> spv_result_t {
2389 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2401 return ValidateTessCoordAtReference(decoration, inst, inst, inst);
2444 const Decoration& decoration, const Instruction& inst) {
2447 decoration, inst, 4,
2448 [this, &inst](const std::string& message) -> spv_result_t {
2449 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2461 return ValidateTessLevelAtReference(decoration, inst, inst, inst);
2465 const Decoration& decoration, const Instruction& inst) {
2468 decoration, inst, 2,
2469 [this, &inst](const std::string& message) -> spv_result_t {
2470 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2482 return ValidateTessLevelAtReference(decoration, inst, inst, inst);
2566 const Decoration& decoration, const Instruction& inst) {
2569 decoration, inst,
2570 [this, &inst](const std::string& message) -> spv_result_t {
2571 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2583 return ValidateVertexIndexAtReference(decoration, inst, inst, inst);
2587 const Decoration& decoration, const Instruction& inst) {
2590 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2599 const Decoration& decoration, const Instruction& inst) {
2601 return ValidateLocalInvocationIndexAtReference(decoration, inst, inst, inst);
2660 const Decoration& decoration, const Instruction& inst) {
2667 decoration, inst,
2669 &inst](const std::string& message) -> spv_result_t {
2672 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2684 decoration, inst,
2686 &inst](const std::string& message) -> spv_result_t {
2689 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2703 return ValidateLayerOrViewportIndexAtReference(decoration, inst, inst, inst);
2822 const Decoration& decoration, const Instruction& inst) {
2826 decoration, inst, 3,
2827 [this, &inst, builtin](const std::string& message) -> spv_result_t {
2829 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2844 return ValidateFragmentShaderF32Vec3InputAtReference(decoration, inst, inst,
2845 inst);
2896 const Decoration& decoration, const Instruction& inst) {
2900 decoration, inst, 3,
2901 [this, &inst, builtin](const std::string& message) -> spv_result_t {
2903 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2918 return ValidateComputeShaderI32Vec3InputAtReference(decoration, inst, inst,
2919 inst);
2976 const Decoration& decoration, const Instruction& inst) {
2980 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
2986 decoration, inst,
2987 [this, &inst, builtin](const std::string& message) -> spv_result_t {
2989 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3004 return ValidateComputeI32InputAtReference(decoration, inst, inst, inst);
3061 const Decoration& decoration, const Instruction& inst) {
3065 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3071 decoration, inst,
3072 [this, &inst, builtin](const std::string& message) -> spv_result_t {
3074 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3085 const spv::StorageClass storage_class = GetStorageClass(inst);
3089 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3095 << GetReferenceDesc(decoration, inst, inst, inst) << " "
3096 << GetStorageClassDesc(inst);
3104 const Decoration& decoration, const Instruction& inst) {
3108 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3114 decoration, inst, 4,
3115 [this, &inst, builtin](const std::string& message) -> spv_result_t {
3117 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3130 const spv::StorageClass storage_class = GetStorageClass(inst);
3134 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3140 << GetReferenceDesc(decoration, inst, inst, inst) << " "
3141 << GetStorageClassDesc(inst);
3149 const Decoration& decoration, const Instruction& inst) {
3152 !spvOpcodeIsConstant(inst.opcode())) {
3153 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3157 << GetIdDesc(inst) << " is not a constant.";
3161 decoration, inst, 3,
3162 [this, &inst](const std::string& message) -> spv_result_t {
3163 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3175 return ValidateWorkgroupSizeAtReference(decoration, inst, inst, inst);
3214 const Decoration& decoration, const Instruction& inst) {
3217 decoration, inst,
3218 [this, &inst,
3223 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3235 return ValidateBaseInstanceOrVertexAtReference(decoration, inst, inst, inst);
3284 const Decoration& decoration, const Instruction& inst) {
3287 decoration, inst,
3288 [this, &inst,
3290 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3302 return ValidateDrawIndexAtReference(decoration, inst, inst, inst);
3354 const Decoration& decoration, const Instruction& inst) {
3357 decoration, inst,
3358 [this, &inst,
3360 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3372 return ValidateViewIndexAtReference(decoration, inst, inst, inst);
3418 const Decoration& decoration, const Instruction& inst) {
3421 decoration, inst,
3422 [this, &inst,
3424 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3436 return ValidateDeviceIndexAtReference(decoration, inst, inst, inst);
3470 const Instruction& inst) {
3475 decoration, inst,
3476 [this, &inst, &builtin](const std::string& message) -> spv_result_t {
3478 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3491 return ValidateFragInvocationCountAtReference(decoration, inst, inst, inst);
3541 const Instruction& inst) {
3545 decoration, inst, 2,
3546 [this, &inst, &builtin](const std::string& message) -> spv_result_t {
3548 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3561 return ValidateFragSizeAtReference(decoration, inst, inst, inst);
3611 const Instruction& inst) {
3615 decoration, inst,
3616 [this, &inst, &builtin](const std::string& message) -> spv_result_t {
3618 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3631 return ValidateFragStencilRefAtReference(decoration, inst, inst, inst);
3681 const Instruction& inst) {
3685 decoration, inst,
3686 [this, &inst, &builtin](const std::string& message) -> spv_result_t {
3688 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3701 return ValidateFullyCoveredAtReference(decoration, inst, inst, inst);
3751 const Decoration& decoration, const Instruction& inst) {
3754 decoration, inst,
3755 [this, &inst,
3757 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3771 return ValidateNVSMOrARMCoreBuiltinsAtReference(decoration, inst, inst, inst);
3806 const Decoration& decoration, const Instruction& inst) {
3809 decoration, inst,
3810 [this, &inst,
3812 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3825 return ValidatePrimitiveShadingRateAtReference(decoration, inst, inst, inst);
3879 const Decoration& decoration, const Instruction& inst) {
3882 decoration, inst,
3883 [this, &inst,
3885 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3898 return ValidateShadingRateAtReference(decoration, inst, inst, inst);
3943 const Decoration& decoration, const Instruction& inst) {
3952 decoration, inst,
3953 [this, &inst,
3956 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3975 decoration, inst,
3976 [this, &inst,
3979 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
3996 decoration, inst, 3,
3997 [this, &inst,
4000 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
4016 decoration, inst, 3,
4017 [this, &inst,
4020 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
4036 decoration, inst, 3, 4,
4037 [this, &inst,
4040 return _.diag(SPV_ERROR_INVALID_DATA, &inst)
4060 return ValidateRayTracingBuiltinsAtReference(decoration, inst, inst, inst);
4112 const Decoration& decoration, const Instruction& inst) {
4132 return ValidateClipOrCullDistanceAtDefinition(decoration, inst);
4135 return ValidateFragCoordAtDefinition(decoration, inst);
4138 return ValidateFragDepthAtDefinition(decoration, inst);
4141 return ValidateFrontFacingAtDefinition(decoration, inst);
4147 return ValidateComputeShaderI32Vec3InputAtDefinition(decoration, inst);
4151 return ValidateFragmentShaderF32Vec3InputAtDefinition(decoration, inst);
4154 return ValidateHelperInvocationAtDefinition(decoration, inst);
4157 return ValidateInvocationIdAtDefinition(decoration, inst);
4160 return ValidateInstanceIndexAtDefinition(decoration, inst);
4164 return ValidateLayerOrViewportIndexAtDefinition(decoration, inst);
4167 return ValidatePatchVerticesAtDefinition(decoration, inst);
4170 return ValidatePointCoordAtDefinition(decoration, inst);
4173 return ValidatePointSizeAtDefinition(decoration, inst);
4176 return ValidatePositionAtDefinition(decoration, inst);
4179 return ValidatePrimitiveIdAtDefinition(decoration, inst);
4182 return ValidateSampleIdAtDefinition(decoration, inst);
4185 return ValidateSampleMaskAtDefinition(decoration, inst);
4188 return ValidateSamplePositionAtDefinition(decoration, inst);
4192 return ValidateComputeI32InputAtDefinition(decoration, inst);
4196 return ValidateI32InputAtDefinition(decoration, inst);
4203 return ValidateI32Vec4InputAtDefinition(decoration, inst);
4206 return ValidateTessCoordAtDefinition(decoration, inst);
4209 return ValidateTessLevelOuterAtDefinition(decoration, inst);
4212 return ValidateTessLevelInnerAtDefinition(decoration, inst);
4215 return ValidateVertexIndexAtDefinition(decoration, inst);
4218 return ValidateWorkgroupSizeAtDefinition(decoration, inst);
4221 return ValidateVertexIdAtDefinition(decoration, inst);
4224 return ValidateLocalInvocationIndexAtDefinition(decoration, inst);
4235 return ValidateNVSMOrARMCoreBuiltinsAtDefinition(decoration, inst);
4239 return ValidateBaseInstanceOrVertexAtDefinition(decoration, inst);
4242 return ValidateDrawIndexAtDefinition(decoration, inst);
4245 return ValidateViewIndexAtDefinition(decoration, inst);
4248 return ValidateDeviceIndexAtDefinition(decoration, inst);
4252 return ValidateFragInvocationCountAtDefinition(decoration, inst);
4256 return ValidateFragSizeAtDefinition(decoration, inst);
4259 return ValidateFragStencilRefAtDefinition(decoration, inst);
4262 return ValidateFullyCoveredAtDefinition(decoration, inst);
4284 return ValidateRayTracingBuiltinsAtDefinition(decoration, inst);
4287 return ValidatePrimitiveShadingRateAtDefinition(decoration, inst);
4290 return ValidateShadingRateAtDefinition(decoration, inst);
4307 const Instruction* inst = _.FindDef(id);
4308 assert(inst);
4316 ValidateSingleBuiltInAtDefinition(decoration, *inst)) {
4339 for (const Instruction& inst : _.ordered_instructions()) {
4340 Update(inst);
4344 for (const auto& operand : inst.operands()) {
4350 const uint32_t id = inst.word(operand.offset);
4351 if (id == inst.id()) {
4367 if (spv_result_t error = check(inst)) {