mirror of https://github.com/bkaradzic/bgfx
Updated spirv-tools.
This commit is contained in:
parent
95e262634b
commit
e9091ebd3e
|
@ -1 +1 @@
|
|||
"v2023.5", "SPIRV-Tools v2023.5 v2022.4-368-g9e3a4402"
|
||||
"v2023.5", "SPIRV-Tools v2023.5 v2023.5.rc1-29-g40753f37"
|
||||
|
|
|
@ -708,18 +708,18 @@ const char* CapabilityToString(spv::Capability capability) {
|
|||
return "BFloat16ConversionINTEL";
|
||||
case spv::Capability::SplitBarrierINTEL:
|
||||
return "SplitBarrierINTEL";
|
||||
case spv::Capability::GlobalVariableFPGADecorationsINTEL:
|
||||
return "GlobalVariableFPGADecorationsINTEL";
|
||||
case spv::Capability::FPGAKernelAttributesv2INTEL:
|
||||
return "FPGAKernelAttributesv2INTEL";
|
||||
case spv::Capability::GlobalVariableHostAccessINTEL:
|
||||
return "GlobalVariableHostAccessINTEL";
|
||||
case spv::Capability::FPMaxErrorINTEL:
|
||||
return "FPMaxErrorINTEL";
|
||||
case spv::Capability::FPGALatencyControlINTEL:
|
||||
return "FPGALatencyControlINTEL";
|
||||
case spv::Capability::FPGAArgumentInterfacesINTEL:
|
||||
return "FPGAArgumentInterfacesINTEL";
|
||||
case spv::Capability::GlobalVariableHostAccessINTEL:
|
||||
return "GlobalVariableHostAccessINTEL";
|
||||
case spv::Capability::GlobalVariableFPGADecorationsINTEL:
|
||||
return "GlobalVariableFPGADecorationsINTEL";
|
||||
case spv::Capability::GroupUniformArithmeticKHR:
|
||||
return "GroupUniformArithmeticKHR";
|
||||
case spv::Capability::CacheControlsINTEL:
|
||||
|
|
|
@ -888,9 +888,6 @@ static const spv_operand_desc_t pygen_variable_DecorationEntries[] = {
|
|||
{"SingleElementVectorINTEL", 6085, 1, pygen_variable_caps_VectorComputeINTEL, 0, nullptr, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"VectorComputeCallableFunctionINTEL", 6087, 1, pygen_variable_caps_VectorComputeINTEL, 0, nullptr, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"MediaBlockIOINTEL", 6140, 1, pygen_variable_caps_VectorComputeINTEL, 0, nullptr, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"InitModeINTEL", 6147, 1, pygen_variable_caps_GlobalVariableFPGADecorationsINTEL, 0, nullptr, {SPV_OPERAND_TYPE_INITIALIZATION_MODE_QUALIFIER}, 0xffffffffu, 0xffffffffu},
|
||||
{"ImplementInRegisterMapINTEL", 6148, 1, pygen_variable_caps_GlobalVariableFPGADecorationsINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER}, 0xffffffffu, 0xffffffffu},
|
||||
{"HostAccessINTEL", 6168, 1, pygen_variable_caps_GlobalVariableHostAccessINTEL, 0, nullptr, {SPV_OPERAND_TYPE_HOST_ACCESS_QUALIFIER, SPV_OPERAND_TYPE_LITERAL_STRING}, 0xffffffffu, 0xffffffffu},
|
||||
{"FPMaxErrorDecorationINTEL", 6170, 1, pygen_variable_caps_FPMaxErrorINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_FLOAT}, 0xffffffffu, 0xffffffffu},
|
||||
{"LatencyControlLabelINTEL", 6172, 1, pygen_variable_caps_FPGALatencyControlINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER}, 0xffffffffu, 0xffffffffu},
|
||||
{"LatencyControlConstraintINTEL", 6173, 1, pygen_variable_caps_FPGALatencyControlINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LITERAL_INTEGER}, 0xffffffffu, 0xffffffffu},
|
||||
|
@ -903,6 +900,9 @@ static const spv_operand_desc_t pygen_variable_DecorationEntries[] = {
|
|||
{"MMHostInterfaceMaxBurstINTEL", 6181, 1, pygen_variable_caps_FPGAArgumentInterfacesINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER}, 0xffffffffu, 0xffffffffu},
|
||||
{"MMHostInterfaceWaitRequestINTEL", 6182, 1, pygen_variable_caps_FPGAArgumentInterfacesINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER}, 0xffffffffu, 0xffffffffu},
|
||||
{"StableKernelArgumentINTEL", 6183, 1, pygen_variable_caps_FPGAArgumentInterfacesINTEL, 0, nullptr, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"HostAccessINTEL", 6188, 1, pygen_variable_caps_GlobalVariableHostAccessINTEL, 0, nullptr, {SPV_OPERAND_TYPE_HOST_ACCESS_QUALIFIER, SPV_OPERAND_TYPE_LITERAL_STRING}, 0xffffffffu, 0xffffffffu},
|
||||
{"InitModeINTEL", 6190, 1, pygen_variable_caps_GlobalVariableFPGADecorationsINTEL, 0, nullptr, {SPV_OPERAND_TYPE_INITIALIZATION_MODE_QUALIFIER}, 0xffffffffu, 0xffffffffu},
|
||||
{"ImplementInRegisterMapINTEL", 6191, 1, pygen_variable_caps_GlobalVariableFPGADecorationsINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER}, 0xffffffffu, 0xffffffffu},
|
||||
{"CacheControlLoadINTEL", 6442, 1, pygen_variable_caps_CacheControlsINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_LOAD_CACHE_CONTROL}, 0xffffffffu, 0xffffffffu},
|
||||
{"CacheControlStoreINTEL", 6443, 1, pygen_variable_caps_CacheControlsINTEL, 0, nullptr, {SPV_OPERAND_TYPE_LITERAL_INTEGER, SPV_OPERAND_TYPE_STORE_CACHE_CONTROL}, 0xffffffffu, 0xffffffffu}
|
||||
};
|
||||
|
@ -1155,7 +1155,7 @@ static const spv_operand_desc_t pygen_variable_CapabilityEntries[] = {
|
|||
{"DrawParameters", 4427, 1, pygen_variable_caps_Shader, 1, pygen_variable_exts_SPV_KHR_shader_draw_parameters, {}, SPV_SPIRV_VERSION_WORD(1,3), 0xffffffffu},
|
||||
{"WorkgroupMemoryExplicitLayoutKHR", 4428, 1, pygen_variable_caps_Shader, 1, pygen_variable_exts_SPV_KHR_workgroup_memory_explicit_layout, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"WorkgroupMemoryExplicitLayout8BitAccessKHR", 4429, 1, pygen_variable_caps_WorkgroupMemoryExplicitLayoutKHR, 1, pygen_variable_exts_SPV_KHR_workgroup_memory_explicit_layout, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"WorkgroupMemoryExplicitLayout16BitAccessKHR", 4430, 1, pygen_variable_caps_Shader, 1, pygen_variable_exts_SPV_KHR_workgroup_memory_explicit_layout, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"WorkgroupMemoryExplicitLayout16BitAccessKHR", 4430, 1, pygen_variable_caps_WorkgroupMemoryExplicitLayoutKHR, 1, pygen_variable_exts_SPV_KHR_workgroup_memory_explicit_layout, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"SubgroupVoteKHR", 4431, 0, nullptr, 1, pygen_variable_exts_SPV_KHR_subgroup_vote, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"StorageBuffer16BitAccess", 4433, 0, nullptr, 1, pygen_variable_exts_SPV_KHR_16bit_storage, {}, SPV_SPIRV_VERSION_WORD(1,3), 0xffffffffu},
|
||||
{"StorageUniformBufferBlock16", 4433, 0, nullptr, 1, pygen_variable_exts_SPV_KHR_16bit_storage, {}, SPV_SPIRV_VERSION_WORD(1,3), 0xffffffffu},
|
||||
|
@ -1319,12 +1319,12 @@ static const spv_operand_desc_t pygen_variable_CapabilityEntries[] = {
|
|||
{"DebugInfoModuleINTEL", 6114, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_debug_module, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"BFloat16ConversionINTEL", 6115, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_bfloat16_conversion, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"SplitBarrierINTEL", 6141, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_split_barrier, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"GlobalVariableFPGADecorationsINTEL", 6146, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_global_variable_fpga_decorations, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"FPGAKernelAttributesv2INTEL", 6161, 1, pygen_variable_caps_FPGAKernelAttributesINTEL, 1, pygen_variable_exts_SPV_INTEL_kernel_attributes, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"GlobalVariableHostAccessINTEL", 6167, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_global_variable_host_access, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"FPMaxErrorINTEL", 6169, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_fp_max_error, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"FPGALatencyControlINTEL", 6171, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_fpga_latency_control, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"FPGAArgumentInterfacesINTEL", 6174, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_fpga_argument_interfaces, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"GlobalVariableHostAccessINTEL", 6187, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_global_variable_host_access, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"GlobalVariableFPGADecorationsINTEL", 6189, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_global_variable_fpga_decorations, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"GroupUniformArithmeticKHR", 6400, 0, nullptr, 1, pygen_variable_exts_SPV_KHR_uniform_group_instructions, {}, 0xffffffffu, 0xffffffffu},
|
||||
{"CacheControlsINTEL", 6441, 0, nullptr, 1, pygen_variable_exts_SPV_INTEL_cache_controls, {}, 0xffffffffu, 0xffffffffu}
|
||||
};
|
||||
|
|
|
@ -213,7 +213,8 @@ bool DeadInsertElimPass::EliminateDeadInsertsOnePass(Function* func) {
|
|||
} break;
|
||||
default: {
|
||||
// Mark inserts in chain for all components
|
||||
MarkInsertChain(&*ii, nullptr, 0, nullptr);
|
||||
std::unordered_set<uint32_t> visited_phis;
|
||||
MarkInsertChain(&*ii, nullptr, 0, &visited_phis);
|
||||
} break;
|
||||
}
|
||||
});
|
||||
|
|
|
@ -446,6 +446,11 @@ bool Optimizer::RegisterPassFromFlag(const std::string& flag) {
|
|||
} else if (pass_name == "relax-float-ops") {
|
||||
RegisterPass(CreateRelaxFloatOpsPass());
|
||||
} else if (pass_name == "inst-debug-printf") {
|
||||
// This private option is not for user consumption.
|
||||
// It is here to assist in debugging and fixing the debug printf
|
||||
// instrumentation pass.
|
||||
// For users who wish to utilize debug printf, see the white paper at
|
||||
// https://www.lunarg.com/wp-content/uploads/2021/08/Using-Debug-Printf-02August2021.pdf
|
||||
RegisterPass(CreateInstDebugPrintfPass(7, 23));
|
||||
} else if (pass_name == "simplify-instructions") {
|
||||
RegisterPass(CreateSimplificationPass());
|
||||
|
|
|
@ -42,9 +42,13 @@ constexpr uint32_t kTypeArrayTypeIndex = 0;
|
|||
constexpr uint32_t kOpTypeScalarBitWidthIndex = 0;
|
||||
constexpr uint32_t kTypePointerTypeIdInIndex = 1;
|
||||
constexpr uint32_t kOpTypeIntSizeIndex = 0;
|
||||
constexpr uint32_t kOpTypeImageArrayedIndex = 3;
|
||||
constexpr uint32_t kOpTypeImageDimIndex = 1;
|
||||
constexpr uint32_t kOpTypeImageArrayedIndex = kOpTypeImageDimIndex + 2;
|
||||
constexpr uint32_t kOpTypeImageMSIndex = kOpTypeImageArrayedIndex + 1;
|
||||
constexpr uint32_t kOpTypeImageSampledIndex = kOpTypeImageMSIndex + 1;
|
||||
constexpr uint32_t kOpTypeImageFormatIndex = kOpTypeImageSampledIndex + 1;
|
||||
constexpr uint32_t kOpImageReadImageIndex = 0;
|
||||
constexpr uint32_t kOpImageSparseReadImageIndex = 0;
|
||||
|
||||
// DFS visit of the type defined by `instruction`.
|
||||
// If `condition` is true, children of the current node are visited.
|
||||
|
@ -296,17 +300,59 @@ static std::optional<spv::Capability> Handler_OpTypeImage_ImageMSArray(
|
|||
: std::nullopt;
|
||||
}
|
||||
|
||||
static std::optional<spv::Capability>
|
||||
Handler_OpImageRead_StorageImageReadWithoutFormat(
|
||||
const Instruction* instruction) {
|
||||
assert(instruction->opcode() == spv::Op::OpImageRead &&
|
||||
"This handler only support OpImageRead opcodes.");
|
||||
const auto* def_use_mgr = instruction->context()->get_def_use_mgr();
|
||||
|
||||
const uint32_t image_index =
|
||||
instruction->GetSingleWordInOperand(kOpImageReadImageIndex);
|
||||
const uint32_t type_index = def_use_mgr->GetDef(image_index)->type_id();
|
||||
const Instruction* type = def_use_mgr->GetDef(type_index);
|
||||
const uint32_t dim = type->GetSingleWordInOperand(kOpTypeImageDimIndex);
|
||||
const uint32_t format = type->GetSingleWordInOperand(kOpTypeImageFormatIndex);
|
||||
|
||||
const bool is_unknown = spv::ImageFormat(format) == spv::ImageFormat::Unknown;
|
||||
const bool requires_capability_for_unknown =
|
||||
spv::Dim(dim) != spv::Dim::SubpassData;
|
||||
return is_unknown && requires_capability_for_unknown
|
||||
? std::optional(spv::Capability::StorageImageReadWithoutFormat)
|
||||
: std::nullopt;
|
||||
}
|
||||
|
||||
static std::optional<spv::Capability>
|
||||
Handler_OpImageSparseRead_StorageImageReadWithoutFormat(
|
||||
const Instruction* instruction) {
|
||||
assert(instruction->opcode() == spv::Op::OpImageSparseRead &&
|
||||
"This handler only support OpImageSparseRead opcodes.");
|
||||
const auto* def_use_mgr = instruction->context()->get_def_use_mgr();
|
||||
|
||||
const uint32_t image_index =
|
||||
instruction->GetSingleWordInOperand(kOpImageSparseReadImageIndex);
|
||||
const uint32_t type_index = def_use_mgr->GetDef(image_index)->type_id();
|
||||
const Instruction* type = def_use_mgr->GetDef(type_index);
|
||||
const uint32_t format = type->GetSingleWordInOperand(kOpTypeImageFormatIndex);
|
||||
|
||||
return spv::ImageFormat(format) == spv::ImageFormat::Unknown
|
||||
? std::optional(spv::Capability::StorageImageReadWithoutFormat)
|
||||
: std::nullopt;
|
||||
}
|
||||
|
||||
// Opcode of interest to determine capabilities requirements.
|
||||
constexpr std::array<std::pair<spv::Op, OpcodeHandler>, 8> kOpcodeHandlers{{
|
||||
constexpr std::array<std::pair<spv::Op, OpcodeHandler>, 10> kOpcodeHandlers{{
|
||||
// clang-format off
|
||||
{spv::Op::OpTypeFloat, Handler_OpTypeFloat_Float64 },
|
||||
{spv::Op::OpTypeImage, Handler_OpTypeImage_ImageMSArray},
|
||||
{spv::Op::OpTypeInt, Handler_OpTypeInt_Int64 },
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageInputOutput16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StoragePushConstant16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageUniform16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageUniform16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageUniformBufferBlock16},
|
||||
{spv::Op::OpImageRead, Handler_OpImageRead_StorageImageReadWithoutFormat},
|
||||
{spv::Op::OpImageSparseRead, Handler_OpImageSparseRead_StorageImageReadWithoutFormat},
|
||||
{spv::Op::OpTypeFloat, Handler_OpTypeFloat_Float64 },
|
||||
{spv::Op::OpTypeImage, Handler_OpTypeImage_ImageMSArray},
|
||||
{spv::Op::OpTypeInt, Handler_OpTypeInt_Int64 },
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageInputOutput16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StoragePushConstant16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageUniform16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageUniform16},
|
||||
{spv::Op::OpTypePointer, Handler_OpTypePointer_StorageUniformBufferBlock16},
|
||||
// clang-format on
|
||||
}};
|
||||
|
||||
|
|
|
@ -74,26 +74,28 @@ class TrimCapabilitiesPass : public Pass {
|
|||
// contains unsupported instruction, the pass could yield bad results.
|
||||
static constexpr std::array kSupportedCapabilities{
|
||||
// clang-format off
|
||||
spv::Capability::ComputeDerivativeGroupLinearNV,
|
||||
spv::Capability::ComputeDerivativeGroupQuadsNV,
|
||||
spv::Capability::Float64,
|
||||
spv::Capability::FragmentShaderPixelInterlockEXT,
|
||||
spv::Capability::FragmentShaderSampleInterlockEXT,
|
||||
spv::Capability::FragmentShaderShadingRateInterlockEXT,
|
||||
spv::Capability::Groups,
|
||||
spv::Capability::ImageMSArray,
|
||||
spv::Capability::Int64,
|
||||
spv::Capability::Linkage,
|
||||
spv::Capability::MinLod,
|
||||
spv::Capability::PhysicalStorageBufferAddresses,
|
||||
spv::Capability::RayQueryKHR,
|
||||
spv::Capability::RayTracingKHR,
|
||||
spv::Capability::RayTraversalPrimitiveCullingKHR,
|
||||
spv::Capability::Shader,
|
||||
spv::Capability::ShaderClockKHR,
|
||||
spv::Capability::StorageImageReadWithoutFormat,
|
||||
spv::Capability::StorageInputOutput16,
|
||||
spv::Capability::StoragePushConstant16,
|
||||
spv::Capability::StorageUniform16,
|
||||
spv::Capability::StorageUniformBufferBlock16,
|
||||
spv::Capability::ImageMSArray,
|
||||
spv::Capability::ComputeDerivativeGroupQuadsNV,
|
||||
spv::Capability::ComputeDerivativeGroupLinearNV
|
||||
spv::Capability::StorageUniformBufferBlock16
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
|
|
|
@ -482,8 +482,8 @@ spv_result_t ValidateClspvReflectionArgumentBuffer(ValidationState_t& _,
|
|||
return SPV_SUCCESS;
|
||||
}
|
||||
|
||||
spv_result_t ValidateClspvReflectionArgumentOffsetBuffer(ValidationState_t& _,
|
||||
const Instruction* inst) {
|
||||
spv_result_t ValidateClspvReflectionArgumentOffsetBuffer(
|
||||
ValidationState_t& _, const Instruction* inst) {
|
||||
const auto num_operands = inst->operands().size();
|
||||
if (auto error = ValidateKernelDecl(_, inst)) {
|
||||
return error;
|
||||
|
@ -802,7 +802,7 @@ spv_result_t ValidateClspvReflectionPushConstantData(ValidationState_t& _,
|
|||
}
|
||||
|
||||
spv_result_t ValidateClspvReflectionPrintfInfo(ValidationState_t& _,
|
||||
const Instruction* inst) {
|
||||
const Instruction* inst) {
|
||||
if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
|
||||
return _.diag(SPV_ERROR_INVALID_ID, inst)
|
||||
<< "PrintfID must be a 32-bit unsigned integer OpConstant";
|
||||
|
@ -823,8 +823,8 @@ spv_result_t ValidateClspvReflectionPrintfInfo(ValidationState_t& _,
|
|||
return SPV_SUCCESS;
|
||||
}
|
||||
|
||||
spv_result_t ValidateClspvReflectionPrintfStorageBuffer(ValidationState_t& _,
|
||||
const Instruction* inst) {
|
||||
spv_result_t ValidateClspvReflectionPrintfStorageBuffer(
|
||||
ValidationState_t& _, const Instruction* inst) {
|
||||
if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
|
||||
return _.diag(SPV_ERROR_INVALID_ID, inst)
|
||||
<< "DescriptorSet must be a 32-bit unsigned integer OpConstant";
|
||||
|
@ -843,8 +843,8 @@ spv_result_t ValidateClspvReflectionPrintfStorageBuffer(ValidationState_t& _,
|
|||
return SPV_SUCCESS;
|
||||
}
|
||||
|
||||
spv_result_t ValidateClspvReflectionPrintfPushConstant(ValidationState_t& _,
|
||||
const Instruction* inst) {
|
||||
spv_result_t ValidateClspvReflectionPrintfPushConstant(
|
||||
ValidationState_t& _, const Instruction* inst) {
|
||||
if (!IsUint32Constant(_, inst->GetOperandAs<uint32_t>(4))) {
|
||||
return _.diag(SPV_ERROR_INVALID_ID, inst)
|
||||
<< "Offset must be a 32-bit unsigned integer OpConstant";
|
||||
|
@ -3168,16 +3168,16 @@ spv_result_t ValidateExtInst(ValidationState_t& _, const Instruction* inst) {
|
|||
break;
|
||||
}
|
||||
case CommonDebugInfoDebugTypePointer: {
|
||||
auto validate_base_type =
|
||||
ValidateOperandBaseType(_, inst, 5, ext_inst_name);
|
||||
auto validate_base_type = ValidateOperandDebugType(
|
||||
_, "Base Type", inst, 5, ext_inst_name, false);
|
||||
if (validate_base_type != SPV_SUCCESS) return validate_base_type;
|
||||
CHECK_CONST_UINT_OPERAND("Storage Class", 6);
|
||||
CHECK_CONST_UINT_OPERAND("Flags", 7);
|
||||
break;
|
||||
}
|
||||
case CommonDebugInfoDebugTypeQualifier: {
|
||||
auto validate_base_type =
|
||||
ValidateOperandBaseType(_, inst, 5, ext_inst_name);
|
||||
auto validate_base_type = ValidateOperandDebugType(
|
||||
_, "Base Type", inst, 5, ext_inst_name, false);
|
||||
if (validate_base_type != SPV_SUCCESS) return validate_base_type;
|
||||
CHECK_CONST_UINT_OPERAND("Type Qualifier", 6);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue