mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-12-24 16:51:06 +00:00
Support pending Intel extensions (#4116)
This patch supports new Intel extensions added via https://github.com/KhronosGroup/SPIRV-Headers/pull/176 SPV_INTEL_fooat_controls2 requires extra support to add two new operand types: SPV_OPERAND_TYPE_FPDENORM_MODE SPV_OPERAND_TYPE_FPOPERATION_MODE
This commit is contained in:
parent
56f8ed48ef
commit
1bd539b9bf
@ -260,6 +260,11 @@ typedef enum spv_operand_type_t {
|
||||
SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_OPERATION, // Sec 3.6
|
||||
SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_IMPORTED_ENTITY, // Sec 3.7
|
||||
|
||||
// The following are concrete enum types from SPV_INTEL_float_controls2
|
||||
// https://github.com/intel/llvm/blob/39fa9b0cbfbae88327118990a05c5b387b56d2ef/sycl/doc/extensions/SPIRV/SPV_INTEL_float_controls2.asciidoc
|
||||
SPV_OPERAND_TYPE_FPDENORM_MODE, // Sec 3.17 FP Denorm Mode
|
||||
SPV_OPERAND_TYPE_FPOPERATION_MODE, // Sec 3.18 FP Operation Mode
|
||||
|
||||
// This is a sentinel value, and does not represent an operand type.
|
||||
// It should come last.
|
||||
SPV_OPERAND_TYPE_NUM_OPERAND_TYPES,
|
||||
|
@ -655,7 +655,9 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_COMPOSITE_TYPE:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_TYPE_QUALIFIER:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_OPERATION:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_IMPORTED_ENTITY: {
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_IMPORTED_ENTITY:
|
||||
case SPV_OPERAND_TYPE_FPDENORM_MODE:
|
||||
case SPV_OPERAND_TYPE_FPOPERATION_MODE: {
|
||||
// A single word that is a plain enum value.
|
||||
|
||||
// Map an optional operand type to its corresponding concrete type.
|
||||
|
@ -326,7 +326,9 @@ void Disassembler::EmitOperand(const spv_parsed_instruction_t& inst,
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_COMPOSITE_TYPE:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_TYPE_QUALIFIER:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_OPERATION:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_IMPORTED_ENTITY: {
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_IMPORTED_ENTITY:
|
||||
case SPV_OPERAND_TYPE_FPDENORM_MODE:
|
||||
case SPV_OPERAND_TYPE_FPOPERATION_MODE: {
|
||||
spv_operand_desc entry;
|
||||
if (grammar_.lookupOperand(operand.type, word, &entry))
|
||||
assert(false && "should have caught this earlier");
|
||||
|
@ -265,6 +265,11 @@ const char* spvOperandTypeStr(spv_operand_type_t type) {
|
||||
case SPV_OPERAND_TYPE_IMAGE_CHANNEL_DATA_TYPE:
|
||||
return "image channel data type";
|
||||
|
||||
case SPV_OPERAND_TYPE_FPDENORM_MODE:
|
||||
return "FP denorm mode";
|
||||
case SPV_OPERAND_TYPE_FPOPERATION_MODE:
|
||||
return "FP operation mode";
|
||||
|
||||
case SPV_OPERAND_TYPE_NONE:
|
||||
return "NONE";
|
||||
default:
|
||||
@ -348,6 +353,8 @@ bool spvOperandIsConcrete(spv_operand_type_t type) {
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_TYPE_QUALIFIER:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_OPERATION:
|
||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_IMPORTED_ENTITY:
|
||||
case SPV_OPERAND_TYPE_FPDENORM_MODE:
|
||||
case SPV_OPERAND_TYPE_FPOPERATION_MODE:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user