mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-12-25 01:01:04 +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_OPERATION, // Sec 3.6
|
||||||
SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_IMPORTED_ENTITY, // Sec 3.7
|
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.
|
// This is a sentinel value, and does not represent an operand type.
|
||||||
// It should come last.
|
// It should come last.
|
||||||
SPV_OPERAND_TYPE_NUM_OPERAND_TYPES,
|
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_COMPOSITE_TYPE:
|
||||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_TYPE_QUALIFIER:
|
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_TYPE_QUALIFIER:
|
||||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_OPERATION:
|
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.
|
// A single word that is a plain enum value.
|
||||||
|
|
||||||
// Map an optional operand type to its corresponding concrete type.
|
// 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_COMPOSITE_TYPE:
|
||||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_TYPE_QUALIFIER:
|
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_TYPE_QUALIFIER:
|
||||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_OPERATION:
|
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;
|
spv_operand_desc entry;
|
||||||
if (grammar_.lookupOperand(operand.type, word, &entry))
|
if (grammar_.lookupOperand(operand.type, word, &entry))
|
||||||
assert(false && "should have caught this earlier");
|
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:
|
case SPV_OPERAND_TYPE_IMAGE_CHANNEL_DATA_TYPE:
|
||||||
return "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:
|
case SPV_OPERAND_TYPE_NONE:
|
||||||
return "NONE";
|
return "NONE";
|
||||||
default:
|
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_TYPE_QUALIFIER:
|
||||||
case SPV_OPERAND_TYPE_CLDEBUG100_DEBUG_OPERATION:
|
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:
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user