diff --git a/src/compiler/spirv/spirv.core.grammar.json b/src/compiler/spirv/spirv.core.grammar.json index 753d2b35401..1c3ed72f840 100644 --- a/src/compiler/spirv/spirv.core.grammar.json +++ b/src/compiler/spirv/spirv.core.grammar.json @@ -1359,6 +1359,7 @@ { "kind" : "IdResult" }, { "kind" : "IdRef", "name" : "Value" } ], + "capabilities" : [ "Shader" ], "version": "1.0" }, { @@ -4706,6 +4707,20 @@ { "kind" : "IdRef", "quantifier" : "?", "name" : "Cache Type" } ] }, + { + "opname" : "OpFmaKHR", + "class" : "Arithmetic", + "opcode" : 4427, + "operands" : [ + { "kind" : "IdResultType" }, + { "kind" : "IdResult" }, + { "kind" : "IdRef", "name" : "Operand 1" }, + { "kind" : "IdRef", "name" : "Operand 2" }, + { "kind" : "IdRef", "name" : "Operand 3" } + ], + "capabilities" : [ "FMAKHR" ], + "version" : "None" + }, { "opname" : "OpSubgroupAllKHR", "class" : "Group", @@ -6503,8 +6518,9 @@ "version" : "None" }, { - "opname" : "OpRayQueryGetClusterIdNV", + "opname" : "OpRayQueryGetIntersectionClusterIdNV", "class" : "Reserved", + "aliases" : ["OpRayQueryGetClusterIdNV"], "opcode" : 5345, "operands" : [ { "kind" : "IdResultType" }, @@ -9154,19 +9170,19 @@ }, { "opname" : "OpVariableLengthArrayINTEL", - "class" : "@exclude", + "class" : "Memory", "opcode" : 5818, "operands" : [ { "kind" : "IdResultType" }, { "kind" : "IdResult" }, - { "kind" : "IdRef", "name" : "Lenght" } + { "kind" : "IdRef", "name" : "Length" } ], "capabilities" : [ "VariableLengthArrayINTEL" ], "version" : "None" }, { "opname" : "OpSaveMemoryINTEL", - "class" : "@exclude", + "class" : "Memory", "opcode" : 5819, "operands" : [ { "kind" : "IdResultType" }, @@ -9177,7 +9193,7 @@ }, { "opname" : "OpRestoreMemoryINTEL", - "class" : "@exclude", + "class" : "Memory", "opcode" : 5820, "operands" : [ { "kind" : "IdRef", "name" : "Ptr" } @@ -10838,6 +10854,19 @@ "capabilities" : [ "TernaryBitwiseFunctionINTEL" ], "version" : "None" }, + { + "opname" : "OpUntypedVariableLengthArrayINTEL", + "class" : "Memory", + "opcode" : 6244, + "operands" : [ + { "kind" : "IdResultType" }, + { "kind" : "IdResult" }, + { "kind" : "IdRef", "name" : "Element Type" }, + { "kind" : "IdRef", "name" : "Length" } + ], + "capabilities" : [ "UntypedVariableLengthArrayINTEL" ], + "version" : "None" + }, { "opname" : "OpConditionalExtensionINTEL", "class" : "Extension", @@ -12647,7 +12676,7 @@ "enumerant" : "DerivativeGroupQuadsKHR", "aliases" : ["DerivativeGroupQuadsNV"], "value" : 5289, - "capabilities" : [ "ComputeDerivativeGroupQuadsNV", "ComputeDerivativeGroupQuadsKHR" ], + "capabilities" : [ "ComputeDerivativeGroupQuadsKHR" ], "extensions" : [ "SPV_NV_compute_shader_derivatives", "SPV_KHR_compute_shader_derivatives" ], "version" : "None" }, @@ -12655,7 +12684,7 @@ "enumerant" : "DerivativeGroupLinearKHR", "aliases" : ["DerivativeGroupLinearNV"], "value" : 5290, - "capabilities" : [ "ComputeDerivativeGroupLinearNV", "ComputeDerivativeGroupLinearKHR" ], + "capabilities" : [ "ComputeDerivativeGroupLinearKHR" ], "extensions" : [ "SPV_NV_compute_shader_derivatives", "SPV_KHR_compute_shader_derivatives" ], "version" : "None" }, @@ -17592,6 +17621,12 @@ "extensions" : [ "SPV_KHR_float_controls2" ], "version" : "None" }, + { + "enumerant" : "FMAKHR", + "value" : 6030, + "extensions" : [ "SPV_KHR_fma" ], + "version" : "None" + }, { "enumerant" : "AtomicFloat32AddEXT", "value" : 6033, @@ -17735,6 +17770,13 @@ "extensions" : [ "SPV_INTEL_ternary_bitwise_function"], "version" : "None" }, + { + "enumerant" : "UntypedVariableLengthArrayINTEL", + "value" : 6243, + "capabilities" : [ "VariableLengthArrayINTEL", "UntypedPointersKHR" ], + "extensions" : [ "SPV_INTEL_variable_length_array" ], + "version" : "None" + }, { "enumerant" : "SpecConditionalINTEL", "value" : 6245, diff --git a/src/compiler/spirv/spirv.h b/src/compiler/spirv/spirv.h index cf23bade20a..26bc6d9d8b8 100644 --- a/src/compiler/spirv/spirv.h +++ b/src/compiler/spirv/spirv.h @@ -1260,6 +1260,7 @@ typedef enum SpvCapability_ { SpvCapabilityBitInstructions = 6025, SpvCapabilityGroupNonUniformRotateKHR = 6026, SpvCapabilityFloatControls2 = 6029, + SpvCapabilityFMAKHR = 6030, SpvCapabilityAtomicFloat32AddEXT = 6033, SpvCapabilityAtomicFloat64AddEXT = 6034, SpvCapabilityLongCompositesINTEL = 6089, @@ -1284,6 +1285,7 @@ typedef enum SpvCapability_ { SpvCapabilitySubgroup2DBlockTransposeINTEL = 6230, SpvCapabilitySubgroupMatrixMultiplyAccumulateINTEL = 6236, SpvCapabilityTernaryBitwiseFunctionINTEL = 6241, + SpvCapabilityUntypedVariableLengthArrayINTEL = 6243, SpvCapabilitySpecConditionalINTEL = 6245, SpvCapabilityFunctionVariantsINTEL = 6246, SpvCapabilityGroupUniformArithmeticKHR = 6400, @@ -1974,6 +1976,7 @@ typedef enum SpvOp_ { SpvOpUntypedInBoundsPtrAccessChainKHR = 4424, SpvOpUntypedArrayLengthKHR = 4425, SpvOpUntypedPrefetchKHR = 4426, + SpvOpFmaKHR = 4427, SpvOpSubgroupAllKHR = 4428, SpvOpSubgroupAnyKHR = 4429, SpvOpSubgroupAllEqualKHR = 4430, @@ -2106,6 +2109,7 @@ typedef enum SpvOp_ { SpvOpTypeAccelerationStructureNV = 5341, SpvOpExecuteCallableNV = 5344, SpvOpRayQueryGetClusterIdNV = 5345, + SpvOpRayQueryGetIntersectionClusterIdNV = 5345, SpvOpHitObjectGetClusterIdNV = 5346, SpvOpTypeCooperativeMatrixNV = 5358, SpvOpCooperativeMatrixLoadNV = 5359, @@ -2415,6 +2419,7 @@ typedef enum SpvOp_ { SpvOpSubgroup2DBlockStoreINTEL = 6235, SpvOpSubgroupMatrixMultiplyAccumulateINTEL = 6237, SpvOpBitwiseFunctionINTEL = 6242, + SpvOpUntypedVariableLengthArrayINTEL = 6244, SpvOpConditionalExtensionINTEL = 6248, SpvOpConditionalEntryPointINTEL = 6249, SpvOpConditionalCapabilityINTEL = 6250, @@ -2816,6 +2821,7 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy case SpvOpUntypedInBoundsPtrAccessChainKHR: *hasResult = true; *hasResultType = true; break; case SpvOpUntypedArrayLengthKHR: *hasResult = true; *hasResultType = true; break; case SpvOpUntypedPrefetchKHR: *hasResult = false; *hasResultType = false; break; + case SpvOpFmaKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; @@ -2939,7 +2945,7 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy case SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break; case SpvOpTypeAccelerationStructureKHR: *hasResult = true; *hasResultType = false; break; case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; - case SpvOpRayQueryGetClusterIdNV: *hasResult = true; *hasResultType = true; break; + case SpvOpRayQueryGetIntersectionClusterIdNV: *hasResult = true; *hasResultType = true; break; case SpvOpHitObjectGetClusterIdNV: *hasResult = true; *hasResultType = true; break; case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; case SpvOpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; @@ -3246,6 +3252,7 @@ inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultTy case SpvOpSubgroup2DBlockStoreINTEL: *hasResult = false; *hasResultType = false; break; case SpvOpSubgroupMatrixMultiplyAccumulateINTEL: *hasResult = true; *hasResultType = true; break; case SpvOpBitwiseFunctionINTEL: *hasResult = true; *hasResultType = true; break; + case SpvOpUntypedVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; case SpvOpConditionalExtensionINTEL: *hasResult = false; *hasResultType = false; break; case SpvOpConditionalEntryPointINTEL: *hasResult = false; *hasResultType = false; break; case SpvOpConditionalCapabilityINTEL: *hasResult = false; *hasResultType = false; break; @@ -4211,6 +4218,7 @@ inline const char* SpvCapabilityToString(SpvCapability value) { case SpvCapabilityBitInstructions: return "BitInstructions"; case SpvCapabilityGroupNonUniformRotateKHR: return "GroupNonUniformRotateKHR"; case SpvCapabilityFloatControls2: return "FloatControls2"; + case SpvCapabilityFMAKHR: return "FMAKHR"; case SpvCapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; case SpvCapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; case SpvCapabilityLongCompositesINTEL: return "LongCompositesINTEL"; @@ -4234,6 +4242,7 @@ inline const char* SpvCapabilityToString(SpvCapability value) { case SpvCapabilitySubgroup2DBlockTransposeINTEL: return "Subgroup2DBlockTransposeINTEL"; case SpvCapabilitySubgroupMatrixMultiplyAccumulateINTEL: return "SubgroupMatrixMultiplyAccumulateINTEL"; case SpvCapabilityTernaryBitwiseFunctionINTEL: return "TernaryBitwiseFunctionINTEL"; + case SpvCapabilityUntypedVariableLengthArrayINTEL: return "UntypedVariableLengthArrayINTEL"; case SpvCapabilitySpecConditionalINTEL: return "SpecConditionalINTEL"; case SpvCapabilityFunctionVariantsINTEL: return "FunctionVariantsINTEL"; case SpvCapabilityGroupUniformArithmeticKHR: return "GroupUniformArithmeticKHR"; @@ -4805,6 +4814,7 @@ inline const char* SpvOpToString(SpvOp value) { case SpvOpUntypedInBoundsPtrAccessChainKHR: return "OpUntypedInBoundsPtrAccessChainKHR"; case SpvOpUntypedArrayLengthKHR: return "OpUntypedArrayLengthKHR"; case SpvOpUntypedPrefetchKHR: return "OpUntypedPrefetchKHR"; + case SpvOpFmaKHR: return "OpFmaKHR"; case SpvOpSubgroupAllKHR: return "OpSubgroupAllKHR"; case SpvOpSubgroupAnyKHR: return "OpSubgroupAnyKHR"; case SpvOpSubgroupAllEqualKHR: return "OpSubgroupAllEqualKHR"; @@ -5235,6 +5245,7 @@ inline const char* SpvOpToString(SpvOp value) { case SpvOpSubgroup2DBlockStoreINTEL: return "OpSubgroup2DBlockStoreINTEL"; case SpvOpSubgroupMatrixMultiplyAccumulateINTEL: return "OpSubgroupMatrixMultiplyAccumulateINTEL"; case SpvOpBitwiseFunctionINTEL: return "OpBitwiseFunctionINTEL"; + case SpvOpUntypedVariableLengthArrayINTEL: return "OpUntypedVariableLengthArrayINTEL"; case SpvOpConditionalExtensionINTEL: return "OpConditionalExtensionINTEL"; case SpvOpConditionalEntryPointINTEL: return "OpConditionalEntryPointINTEL"; case SpvOpConditionalCapabilityINTEL: return "OpConditionalCapabilityINTEL";