diff --git a/renderdoc/driver/shaders/spirv/gen_spirv_code.py b/renderdoc/driver/shaders/spirv/gen_spirv_code.py
index abf3d1211..8dffb8332 100644
--- a/renderdoc/driver/shaders/spirv/gen_spirv_code.py
+++ b/renderdoc/driver/shaders/spirv/gen_spirv_code.py
@@ -355,7 +355,10 @@ for operand_kind in spirv['operand_kinds']:
'''.format(name = name, values = decl.rstrip()))
- cpp.write('''template <>
+ if stringise.strip() == '':
+ cpp.write(f"template <>\nrdcstr DoStringise(const rdcspv::{name} &el) {{ return \"?\"; }}\n\n")
+ else:
+ cpp.write('''template <>
rdcstr DoStringise(const rdcspv::{name} &el)
{{
BEGIN_ENUM_STRINGISE(rdcspv::{name});
@@ -385,7 +388,10 @@ rdcstr DoStringise(const rdcspv::{name} &el)
decl = ''
stringise = ''
for value in operand_kind['enumerants']:
- decl += ' {} = {},\n'.format(value['enumerant'], value['value'])
+ value_name = value['enumerant']
+ if value_name[0].isdigit():
+ value_name = '_' + value_name
+ decl += ' {} = {},\n'.format(value_name, value['value'])
if value['value'] in used:
continue
@@ -395,7 +401,7 @@ rdcstr DoStringise(const rdcspv::{name} &el)
if value['enumerant'] == none:
stringise += ' STRINGISE_BITFIELD_CLASS_VALUE({});\n\n'.format(none)
else:
- stringise += ' STRINGISE_BITFIELD_CLASS_BIT({});\n'.format(value['enumerant'])
+ stringise += ' STRINGISE_BITFIELD_CLASS_BIT({});\n'.format(value_name)
header.write('''enum class {name} : uint32_t
{{
@@ -408,7 +414,10 @@ BITMASK_OPERATORS({name});
'''.format(name = name, values = decl.rstrip()))
- cpp.write('''template <>
+ if stringise.strip() == '':
+ cpp.write(f"template <>\nrdcstr DoStringise(const rdcspv::{name} &el) {{ return \"?\"; }}\n\n")
+ else:
+ cpp.write('''template <>
rdcstr DoStringise(const rdcspv::{name} &el)
{{
BEGIN_BITFIELD_STRINGISE(rdcspv::{name});
diff --git a/renderdoc/driver/shaders/spirv/spir-v.xml b/renderdoc/driver/shaders/spirv/spir-v.xml
index f9b23ac41..01d1512e8 100644
--- a/renderdoc/driver/shaders/spirv/spir-v.xml
+++ b/renderdoc/driver/shaders/spirv/spir-v.xml
@@ -64,7 +64,7 @@
-
+
@@ -72,7 +72,7 @@
-
+
@@ -94,7 +94,10 @@
-
+
+
+
+
@@ -151,13 +154,14 @@
+
-
+
@@ -184,13 +188,14 @@
+
-
+
@@ -272,7 +277,8 @@
-
+
+
diff --git a/renderdoc/driver/shaders/spirv/spirv.core.grammar.json b/renderdoc/driver/shaders/spirv/spirv.core.grammar.json
index 980b5dc3a..f839eaf82 100644
--- a/renderdoc/driver/shaders/spirv/spirv.core.grammar.json
+++ b/renderdoc/driver/shaders/spirv/spirv.core.grammar.json
@@ -27,7 +27,7 @@
"magic_number" : "0x07230203",
"major_version" : 1,
"minor_version" : 6,
- "revision" : 1,
+ "revision" : 4,
"instruction_printing_class" : [
{
"tag" : "@exclude"
@@ -330,7 +330,8 @@
"opcode" : 22,
"operands" : [
{ "kind" : "IdResult" },
- { "kind" : "LiteralInteger", "name" : "'Width'" }
+ { "kind" : "LiteralInteger", "name" : "'Width'" },
+ { "kind" : "FPEncoding", "quantifier" : "?", "name" : "'Floating Point Encoding'" }
],
"version": "1.0"
},
@@ -753,7 +754,10 @@
{ "kind" : "MemoryAccess", "quantifier" : "?" },
{ "kind" : "MemoryAccess", "quantifier" : "?" }
],
- "capabilities" : [ "Addresses" ],
+ "capabilities" : [
+ "Addresses",
+ "UntypedPointersKHR"
+ ],
"version": "1.0"
},
{
@@ -4439,6 +4443,65 @@
"capabilities" : [ "Shader" ],
"version" : "1.6"
},
+ {
+ "opname" : "OpTypeUntypedPointerKHR",
+ "class" : "Type-Declaration",
+ "opcode" : 4417,
+ "capabilities" : [
+ "UntypedPointersKHR"
+ ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdResult" },
+ { "kind" : "StorageClass" }
+ ]
+ },
+ {
+ "opname" : "OpUntypedVariableKHR",
+ "class" : "Memory",
+ "opcode" : 4418,
+ "capabilities" : [ "UntypedPointersKHR" ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "StorageClass" },
+ { "kind" : "IdRef", "quantifier" : "?", "name" : "'Data Type'" },
+ { "kind" : "IdRef", "quantifier" : "?", "name" : "'Initializer'" }
+ ]
+ },
+ {
+ "opname" : "OpUntypedAccessChainKHR",
+ "class" : "Memory",
+ "opcode" : 4419,
+ "capabilities" : [ "UntypedPointersKHR" ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Base Type'" },
+ { "kind" : "IdRef", "name" : "'Base'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Indexes'" }
+ ]
+ },
+ {
+ "opname" : "OpUntypedInBoundsAccessChainKHR",
+ "class" : "Memory",
+ "opcode" : 4420,
+ "capabilities" : [ "UntypedPointersKHR" ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Base Type'" },
+ { "kind" : "IdRef", "name" : "'Base'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Indexes'" }
+ ]
+ },
{
"opname" : "OpSubgroupBallotKHR",
"class" : "Group",
@@ -4465,6 +4528,68 @@
"extensions" : [ "SPV_KHR_shader_ballot" ],
"version" : "None"
},
+ {
+ "opname" : "OpUntypedPtrAccessChainKHR",
+ "class" : "Memory",
+ "opcode" : 4423,
+ "capabilities" : [ "UntypedPointersKHR" ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Base Type'" },
+ { "kind" : "IdRef", "name" : "'Base'" },
+ { "kind" : "IdRef", "name" : "'Element'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Indexes'" }
+ ]
+ },
+ {
+ "opname" : "OpUntypedInBoundsPtrAccessChainKHR",
+ "class" : "Memory",
+ "opcode" : 4424,
+ "capabilities" : [ "UntypedPointersKHR" ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Base Type'" },
+ { "kind" : "IdRef", "name" : "'Base'" },
+ { "kind" : "IdRef", "name" : "'Element'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Indexes'" }
+ ]
+ },
+ {
+ "opname" : "OpUntypedArrayLengthKHR",
+ "class" : "Memory",
+ "opcode" : 4425,
+ "capabilities" : [ "UntypedPointersKHR" ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Structure'" },
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "LiteralInteger", "name" : "'Array member'" }
+ ]
+ },
+ {
+ "opname" : "OpUntypedPrefetchKHR",
+ "class" : "Memory",
+ "opcode" : 4426,
+ "capabilities" : [ "UntypedPointersKHR" ],
+ "provisional" : true,
+ "version" : "None",
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Pointer Type'" },
+ { "kind" : "IdRef", "name" : "'Num Bytes'" },
+ { "kind" : "IdRef", "quantifier" : "?", "name" : "'RW'" },
+ { "kind" : "IdRef", "quantifier" : "?", "name" : "'Locality'" },
+ { "kind" : "IdRef", "quantifier" : "?", "name" : "'Cache Type'" }
+ ]
+ },
{
"opname" : "OpSubgroupAllKHR",
"class" : "Group",
@@ -4620,6 +4745,7 @@
{
"opname" : "OpSDot",
"class" : "Arithmetic",
+ "aliases" : ["OpSDotKHR"],
"opcode" : 4450,
"operands" : [
{ "kind" : "IdResultType" },
@@ -4629,26 +4755,13 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
- "version" : "1.6"
- },
- {
- "opname" : "OpSDotKHR",
- "class" : "Arithmetic",
- "opcode" : 4450,
- "operands" : [
- { "kind" : "IdResultType" },
- { "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'Vector 1'" },
- { "kind" : "IdRef", "name" : "'Vector 2'" },
- { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
- ],
- "capabilities" : [ "DotProductKHR" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpUDot",
"class" : "Arithmetic",
+ "aliases" : ["OpUDotKHR"],
"opcode" : 4451,
"operands" : [
{ "kind" : "IdResultType" },
@@ -4658,26 +4771,13 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
- "version" : "1.6"
- },
- {
- "opname" : "OpUDotKHR",
- "class" : "Arithmetic",
- "opcode" : 4451,
- "operands" : [
- { "kind" : "IdResultType" },
- { "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'Vector 1'" },
- { "kind" : "IdRef", "name" : "'Vector 2'" },
- { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
- ],
- "capabilities" : [ "DotProductKHR" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSUDot",
"class" : "Arithmetic",
+ "aliases" : ["OpSUDotKHR"],
"opcode" : 4452,
"operands" : [
{ "kind" : "IdResultType" },
@@ -4687,26 +4787,13 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
- "version" : "1.6"
- },
- {
- "opname" : "OpSUDotKHR",
- "class" : "Arithmetic",
- "opcode" : 4452,
- "operands" : [
- { "kind" : "IdResultType" },
- { "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'Vector 1'" },
- { "kind" : "IdRef", "name" : "'Vector 2'" },
- { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
- ],
- "capabilities" : [ "DotProductKHR" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSDotAccSat",
"class" : "Arithmetic",
+ "aliases" : ["OpSDotAccSatKHR"],
"opcode" : 4453,
"operands" : [
{ "kind" : "IdResultType" },
@@ -4717,27 +4804,13 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
- "version" : "1.6"
- },
- {
- "opname" : "OpSDotAccSatKHR",
- "class" : "Arithmetic",
- "opcode" : 4453,
- "operands" : [
- { "kind" : "IdResultType" },
- { "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'Vector 1'" },
- { "kind" : "IdRef", "name" : "'Vector 2'" },
- { "kind" : "IdRef", "name" : "'Accumulator'" },
- { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
- ],
- "capabilities" : [ "DotProductKHR" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpUDotAccSat",
"class" : "Arithmetic",
+ "aliases" : ["OpUDotAccSatKHR"],
"opcode" : 4454,
"operands" : [
{ "kind" : "IdResultType" },
@@ -4748,27 +4821,13 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
- "version" : "1.6"
- },
- {
- "opname" : "OpUDotAccSatKHR",
- "class" : "Arithmetic",
- "opcode" : 4454,
- "operands" : [
- { "kind" : "IdResultType" },
- { "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'Vector 1'" },
- { "kind" : "IdRef", "name" : "'Vector 2'" },
- { "kind" : "IdRef", "name" : "'Accumulator'" },
- { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
- ],
- "capabilities" : [ "DotProductKHR" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSUDotAccSat",
"class" : "Arithmetic",
+ "aliases" : ["OpSUDotAccSatKHR"],
"opcode" : 4455,
"operands" : [
{ "kind" : "IdResultType" },
@@ -4779,21 +4838,6 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProduct" ],
- "version" : "1.6"
- },
- {
- "opname" : "OpSUDotAccSatKHR",
- "class" : "Arithmetic",
- "opcode" : 4455,
- "operands" : [
- { "kind" : "IdResultType" },
- { "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'Vector 1'" },
- { "kind" : "IdRef", "name" : "'Vector 2'" },
- { "kind" : "IdRef", "name" : "'Accumulator'" },
- { "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
- ],
- "capabilities" : [ "DotProductKHR" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
@@ -5326,13 +5370,41 @@
"version" : "None"
},
{
- "opname" : "OpFinalizeNodePayloadsAMDX",
+ "opname" : "OpAllocateNodePayloadsAMDX",
+ "class" : "Reserved",
+ "opcode" : 5074,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdScope", "name" : "'Visibility'" },
+ { "kind" : "IdRef", "name": "'Payload Count'" },
+ { "kind" : "IdRef", "name": "'Node Index'" }
+ ],
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "opname" : "OpEnqueueNodePayloadsAMDX",
"class" : "Reserved",
"opcode" : 5075,
"operands" : [
{ "kind" : "IdRef", "name": "'Payload Array'" }
],
"capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTypeNodePayloadArrayAMDX",
+ "class" : "Reserved",
+ "opcode" : 5076,
+ "operands" : [
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name": "'Payload Type'" }
+ ],
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
"version" : "None"
},
{
@@ -5345,20 +5417,59 @@
{ "kind" : "IdRef", "name": "'Payload'" }
],
"capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
"version" : "None"
},
{
- "opname" : "OpInitializeNodePayloadsAMDX",
+ "opname" : "OpNodePayloadArrayLengthAMDX",
"class" : "Reserved",
"opcode" : 5090,
"operands" : [
- { "kind" : "IdRef", "name": "'Payload Array'" },
- { "kind" : "IdScope", "name": "'Visibility'" },
- { "kind" : "IdRef", "name": "'Payload Count'" },
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name": "'Payload Array'" }
+ ],
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "opname" : "OpIsNodePayloadValidAMDX",
+ "class" : "Reserved",
+ "opcode" : 5101,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name": "'Payload Type'" },
{ "kind" : "IdRef", "name": "'Node Index'" }
],
"capabilities" : [ "ShaderEnqueueAMDX" ],
- "version" : "None"
+ "provisional" : true,
+ "version": "None"
+ },
+ {
+ "opname" : "OpConstantStringAMDX",
+ "class" : "Reserved",
+ "opcode" : 5103,
+ "operands" : [
+ { "kind" : "IdResult" },
+ { "kind" : "LiteralString", "name": "'Literal String'" }
+ ],
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
+ "version": "None"
+ },
+ {
+ "opname" : "OpSpecConstantStringAMDX",
+ "class" : "Reserved",
+ "opcode" : 5104,
+ "operands" : [
+ { "kind" : "IdResult" },
+ { "kind" : "LiteralString", "name": "'Literal String'" }
+ ],
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
+ "version": "None"
},
{
"opname" : "OpGroupNonUniformQuadAllKHR",
@@ -5856,6 +5967,105 @@
"extensions" : [ "SPV_NV_shader_image_footprint" ],
"version" : "None"
},
+ {
+ "opname" : "OpTypeCooperativeVectorNV",
+ "class" : "Type-Declaration",
+ "opcode" : 5288,
+ "operands" : [
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Component Type'" },
+ { "kind" : "IdRef", "name" : "'Component Count'" }
+ ],
+ "capabilities" : [ "CooperativeVectorNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeVectorMatrixMulNV",
+ "class" : "Reserved",
+ "opcode" : 5289,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Input'" },
+ { "kind" : "IdRef", "name" : "'InputInterpretation'" },
+ { "kind" : "IdRef", "name" : "'Matrix'" },
+ { "kind" : "IdRef", "name" : "'MatrixOffset'" },
+ { "kind" : "IdRef", "name" : "'MatrixInterpretation'" },
+ { "kind" : "IdRef", "name" : "'M'" },
+ { "kind" : "IdRef", "name" : "'K'" },
+ { "kind" : "IdRef", "name" : "'MemoryLayout'" },
+ { "kind" : "IdRef", "name" : "'Transpose'" },
+ { "kind" : "IdRef", "name" : "'MatrixStride'", "quantifier": "?" },
+ { "kind" : "CooperativeMatrixOperands", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "CooperativeVectorNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeVectorOuterProductAccumulateNV",
+ "class" : "Reserved",
+ "opcode" : 5290,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "IdRef", "name" : "'Offset'" },
+ { "kind" : "IdRef", "name" : "'A'" },
+ { "kind" : "IdRef", "name" : "'B'" },
+ { "kind" : "IdRef", "name" : "'MemoryLayout'" },
+ { "kind" : "IdRef", "name" : "'MatrixInterpretation'" },
+ { "kind" : "IdRef", "name" : "'MatrixStride'", "quantifier": "?" }
+ ],
+ "capabilities" : [ "CooperativeVectorTrainingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeVectorReduceSumAccumulateNV",
+ "class" : "Reserved",
+ "opcode" : 5291,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "IdRef", "name" : "'Offset'" },
+ { "kind" : "IdRef", "name" : "'V'" }
+ ],
+ "capabilities" : [ "CooperativeVectorTrainingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeVectorMatrixMulAddNV",
+ "class" : "Reserved",
+ "opcode" : 5292,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Input'" },
+ { "kind" : "IdRef", "name" : "'InputInterpretation'" },
+ { "kind" : "IdRef", "name" : "'Matrix'" },
+ { "kind" : "IdRef", "name" : "'MatrixOffset'" },
+ { "kind" : "IdRef", "name" : "'MatrixInterpretation'" },
+ { "kind" : "IdRef", "name" : "'Bias'" },
+ { "kind" : "IdRef", "name" : "'BiasOffset'" },
+ { "kind" : "IdRef", "name" : "'BiasInterpretation'" },
+ { "kind" : "IdRef", "name" : "'M'" },
+ { "kind" : "IdRef", "name" : "'K'" },
+ { "kind" : "IdRef", "name" : "'MemoryLayout'" },
+ { "kind" : "IdRef", "name" : "'Transpose'" },
+ { "kind" : "IdRef", "name" : "'MatrixStride'", "quantifier": "?" },
+ { "kind" : "CooperativeMatrixOperands", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "CooperativeVectorNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeMatrixConvertNV",
+ "class" : "Conversion",
+ "opcode" : 5293,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Matrix'" }
+ ],
+ "capabilities" : [ "CooperativeMatrixConversionsNV" ],
+ "version" : "None"
+ },
{
"opname" : "OpEmitMeshTasksEXT",
"class" : "Reserved",
@@ -5938,22 +6148,36 @@
"version" : "None"
},
{
- "opname" : "OpReportIntersectionKHR",
- "class" : "Reserved",
- "opcode" : 5334,
+ "opname" : "OpCooperativeVectorLoadNV",
+ "class" : "Memory",
+ "opcode" : 5302,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
- { "kind" : "IdRef", "name" : "'Hit'" },
- { "kind" : "IdRef", "name" : "'HitKind'" }
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "IdRef", "name" : "'Offset'" },
+ { "kind" : "MemoryAccess", "quantifier" : "?" }
],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
+ "capabilities" : [ "CooperativeVectorNV" ],
"version" : "None"
},
{
- "opname" : "OpReportIntersectionNV",
+ "opname" : "OpCooperativeVectorStoreNV",
+ "class" : "Memory",
+ "opcode" : 5303,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "IdRef", "name" : "'Offset'" },
+ { "kind" : "IdRef", "name" : "'Object'" },
+ { "kind" : "MemoryAccess", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "CooperativeVectorNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpReportIntersectionKHR",
"class" : "Reserved",
+ "aliases" : ["OpReportIntersectionNV"],
"opcode" : 5334,
"operands" : [
{ "kind" : "IdResultType" },
@@ -6071,17 +6295,7 @@
{
"opname" : "OpTypeAccelerationStructureKHR",
"class" : "Type-Declaration",
- "opcode" : 5341,
- "operands" : [
- { "kind" : "IdResult" }
- ],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR", "RayQueryKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing", "SPV_KHR_ray_query" ],
- "version" : "None"
- },
- {
- "opname" : "OpTypeAccelerationStructureNV",
- "class" : "Type-Declaration",
+ "aliases" : ["OpTypeAccelerationStructureNV"],
"opcode" : 5341,
"operands" : [
{ "kind" : "IdResult" }
@@ -6103,6 +6317,37 @@
"extensions" : [ "SPV_NV_ray_tracing" ],
"version" : "None"
},
+ {
+ "opname" : "OpRayQueryGetClusterIdNV",
+ "class" : "Reserved",
+ "opcode" : 5345,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingClusterAccelerationStructureNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpHitObjectGetClusterIdNV",
+ "class" : "Reserved",
+ "opcode" : 5346,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Hit Object'" }
+ ],
+ "capabilities" : [ "RayTracingClusterAccelerationStructureNV" ],
+ "version" : "None"
+ },
{
"opname" : "OpTypeCooperativeMatrixNV",
"class" : "Type-Declaration",
@@ -6194,17 +6439,200 @@
"version" : "None"
},
{
- "opname" : "OpDemoteToHelperInvocation",
- "class" : "Control-Flow",
- "opcode" : 5380,
- "capabilities" : [ "DemoteToHelperInvocation" ],
- "version" : "1.6"
+ "opname" : "OpCooperativeMatrixReduceNV",
+ "class" : "Arithmetic",
+ "opcode" : 5366,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Matrix'" },
+ { "kind" : "CooperativeMatrixReduce", "name" : "'Reduce'" },
+ { "kind" : "IdRef", "name" : "'CombineFunc'" }
+ ],
+ "capabilities" : [ "CooperativeMatrixReductionsNV" ],
+ "version" : "None"
},
{
- "opname" : "OpDemoteToHelperInvocationEXT",
+ "opname" : "OpCooperativeMatrixLoadTensorNV",
+ "class" : "Memory",
+ "opcode" : 5367,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "IdRef", "name" : "'Object'" },
+ { "kind" : "IdRef", "name" : "'TensorLayout'" },
+ { "kind" : "MemoryAccess", "name" : "'Memory Operand'"},
+ { "kind" : "TensorAddressingOperands", "name" : "'Tensor Addressing Operands'"}
+ ],
+ "capabilities" : [ "CooperativeMatrixTensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeMatrixStoreTensorNV",
+ "class" : "Memory",
+ "opcode" : 5368,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Pointer'" },
+ { "kind" : "IdRef", "name" : "'Object'" },
+ { "kind" : "IdRef", "name" : "'TensorLayout'" },
+ { "kind" : "MemoryAccess", "name" : "'Memory Operand'"},
+ { "kind" : "TensorAddressingOperands", "name" : "'Tensor Addressing Operands'"}
+ ],
+ "capabilities" : [ "CooperativeMatrixTensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeMatrixPerElementOpNV",
+ "class" : "Function",
+ "opcode" : 5369,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Matrix'" },
+ { "kind" : "IdRef", "name" : "'Func'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operands'" }
+ ],
+ "capabilities" : [ "CooperativeMatrixPerElementOperationsNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTypeTensorLayoutNV",
+ "class" : "Type-Declaration",
+ "opcode" : 5370,
+ "operands" : [
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Dim'" },
+ { "kind" : "IdRef", "name" : "'ClampMode'" }
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTypeTensorViewNV",
+ "class" : "Type-Declaration",
+ "opcode" : 5371,
+ "operands" : [
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Dim'" },
+ { "kind" : "IdRef", "name" : "'HasDimensions'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'p'" }
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCreateTensorLayoutNV",
+ "class" : "Reserved",
+ "opcode" : 5372,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" }
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTensorLayoutSetDimensionNV",
+ "class" : "Reserved",
+ "opcode" : 5373,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorLayout'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Dim'" }
+
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTensorLayoutSetStrideNV",
+ "class" : "Reserved",
+ "opcode" : 5374,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorLayout'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Stride'" }
+
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTensorLayoutSliceNV",
+ "class" : "Reserved",
+ "opcode" : 5375,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorLayout'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Operands'" }
+
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTensorLayoutSetClampValueNV",
+ "class" : "Reserved",
+ "opcode" : 5376,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorLayout'" },
+ { "kind" : "IdRef", "name" : "'Value'" }
+
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCreateTensorViewNV",
+ "class" : "Reserved",
+ "opcode" : 5377,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" }
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTensorViewSetDimensionNV",
+ "class" : "Reserved",
+ "opcode" : 5378,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorView'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Dim'" }
+
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTensorViewSetStrideNV",
+ "class" : "Reserved",
+ "opcode" : 5379,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorView'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'Stride'" }
+
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpDemoteToHelperInvocation",
"class" : "Control-Flow",
+ "aliases" : ["OpDemoteToHelperInvocationEXT"],
"opcode" : 5380,
- "capabilities" : [ "DemoteToHelperInvocationEXT" ],
+ "capabilities" : [ "DemoteToHelperInvocation" ],
"version" : "1.6"
},
{
@@ -6215,10 +6643,52 @@
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" }
],
- "capabilities" : [ "DemoteToHelperInvocationEXT" ],
+ "capabilities" : [ "DemoteToHelperInvocation" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "None"
},
+ {
+ "opname" : "OpTensorViewSetClipNV",
+ "class" : "Reserved",
+ "opcode" : 5382,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorView'" },
+ { "kind" : "IdRef", "name" : "'ClipRowOffset'" },
+ { "kind" : "IdRef", "name" : "'ClipRowSpan'" },
+ { "kind" : "IdRef", "name" : "'ClipColOffset'" },
+ { "kind" : "IdRef", "name" : "'ClipColSpan'" }
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpTensorLayoutSetBlockSizeNV",
+ "class" : "Reserved",
+ "opcode" : 5384,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'TensorLayout'" },
+ { "kind" : "IdRef", "quantifier" : "*", "name" : "'BlockSize'" }
+
+ ],
+ "capabilities" : [ "TensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpCooperativeMatrixTransposeNV",
+ "class" : "Conversion",
+ "opcode" : 5390,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Matrix'" }
+ ],
+ "capabilities" : [ "CooperativeMatrixConversionsNV" ],
+ "version" : "None"
+ },
{
"opname" : "OpConvertUToImageNV",
"class" : "Reserved",
@@ -6319,6 +6789,211 @@
],
"version" : "None"
},
+ {
+ "opname" : "OpRayQueryGetIntersectionSpherePositionNV",
+ "class" : "Reserved",
+ "opcode" : 5427,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionSphereRadiusNV",
+ "class" : "Reserved",
+ "opcode" : 5428,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionLSSPositionsNV",
+ "class" : "Reserved",
+ "opcode" : 5429,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionLSSRadiiNV",
+ "class" : "Reserved",
+ "opcode" : 5430,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV"],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryGetIntersectionLSSHitValueNV",
+ "class" : "Reserved",
+ "opcode" : 5431,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpHitObjectGetSpherePositionNV",
+ "class" : "Reserved",
+ "opcode" : 5432,
+ "operands" : [
+ { "kind" : "IdResultType"},
+ { "kind" : "IdResult"},
+ { "kind" : "IdRef", "name" : "'Hit Object'" }
+ ],
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpHitObjectGetSphereRadiusNV",
+ "class" : "Reserved",
+ "opcode" : 5433,
+ "operands" : [
+ { "kind" : "IdResultType"},
+ { "kind" : "IdResult"},
+ { "kind" : "IdRef", "name" : "'Hit Object'" }
+ ],
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpHitObjectGetLSSPositionsNV",
+ "class" : "Reserved",
+ "opcode" : 5434,
+ "operands" : [
+ { "kind" : "IdResultType"},
+ { "kind" : "IdResult"},
+ { "kind" : "IdRef", "name" : "'Hit Object'" }
+ ],
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpHitObjectGetLSSRadiiNV",
+ "class" : "Reserved",
+ "opcode" : 5435,
+ "operands" : [
+ { "kind" : "IdResultType"},
+ { "kind" : "IdResult"},
+ { "kind" : "IdRef", "name" : "'Hit Object'" }
+ ],
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpHitObjectIsSphereHitNV",
+ "class" : "Reserved",
+ "opcode" : 5436,
+ "operands" : [
+ { "kind" : "IdResultType"},
+ { "kind" : "IdResult"},
+ { "kind" : "IdRef", "name" : "'Hit Object'" }
+ ],
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpHitObjectIsLSSHitNV",
+ "class" : "Reserved",
+ "opcode" : 5437,
+ "operands" : [
+ { "kind" : "IdResultType"},
+ { "kind" : "IdResult"},
+ { "kind" : "IdRef", "name" : "'Hit Object'" }
+ ],
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryIsSphereHitNV",
+ "class" : "Reserved",
+ "opcode" : 5438,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpRayQueryIsLSSHitNV",
+ "class" : "Reserved",
+ "opcode" : 5439,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ {
+ "kind" : "IdRef",
+ "name" : "'RayQuery'"
+ },
+ {
+ "kind" : "IdRef",
+ "name" : "'Intersection'"
+ }
+ ],
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "version" : "None"
+ },
{
"opname" : "OpSubgroupShuffleINTEL",
"class" : "Group",
@@ -6661,7 +7336,6 @@
"class" : "@exclude",
"opcode" : 5609,
"operands" : [
- { "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "LiteralString", "name" : "'Asm target'" }
],
@@ -6754,17 +7428,7 @@
{
"opname" : "OpDecorateString",
"class" : "Annotation",
- "opcode" : 5632,
- "operands" : [
- { "kind" : "IdRef", "name" : "'Target'" },
- { "kind" : "Decoration" }
- ],
- "extensions" : [ "SPV_GOOGLE_decorate_string", "SPV_GOOGLE_hlsl_functionality1" ],
- "version" : "1.4"
- },
- {
- "opname" : "OpDecorateStringGOOGLE",
- "class" : "Annotation",
+ "aliases" : ["OpDecorateStringGOOGLE"],
"opcode" : 5632,
"operands" : [
{ "kind" : "IdRef", "name" : "'Target'" },
@@ -6776,18 +7440,7 @@
{
"opname" : "OpMemberDecorateString",
"class" : "Annotation",
- "opcode" : 5633,
- "operands" : [
- { "kind" : "IdRef", "name" : "'Struct Type'" },
- { "kind" : "LiteralInteger", "name" : "'Member'" },
- { "kind" : "Decoration" }
- ],
- "extensions" : [ "SPV_GOOGLE_decorate_string", "SPV_GOOGLE_hlsl_functionality1" ],
- "version" : "1.4"
- },
- {
- "opname" : "OpMemberDecorateStringGOOGLE",
- "class" : "Annotation",
+ "aliases" : ["OpMemberDecorateStringGOOGLE"],
"opcode" : 5633,
"operands" : [
{ "kind" : "IdRef", "name" : "'Struct Type'" },
@@ -9803,6 +10456,140 @@
"capabilities" : [ "SplitBarrierINTEL" ],
"version" : "None"
},
+ {
+ "opname" : "OpArithmeticFenceEXT",
+ "class" : "Miscellaneous",
+ "opcode" : 6145,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'Target'" }
+ ],
+ "capabilities" : [ "ArithmeticFenceEXT" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSubgroupBlockPrefetchINTEL",
+ "class" : "Group",
+ "opcode" : 6221,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Ptr'" },
+ { "kind" : "IdRef", "name" : "'NumBytes'" },
+ { "kind" : "MemoryAccess", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "SubgroupBufferPrefetchINTEL" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSubgroup2DBlockLoadINTEL",
+ "class" : "Group",
+ "opcode" : 6231,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Element Size'" },
+ { "kind" : "IdRef", "name" : "'Block Width'" },
+ { "kind" : "IdRef", "name" : "'Block Height'" },
+ { "kind" : "IdRef", "name" : "'Block Count'" },
+ { "kind" : "IdRef", "name" : "'Src Base Pointer'" },
+ { "kind" : "IdRef", "name" : "'Memory Width'" },
+ { "kind" : "IdRef", "name" : "'Memory Height'" },
+ { "kind" : "IdRef", "name" : "'Memory Pitch'" },
+ { "kind" : "IdRef", "name" : "'Coordinate'" },
+ { "kind" : "IdRef", "name" : "'Dst Pointer'" }
+ ],
+ "capabilities" : [ "Subgroup2DBlockIOINTEL" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSubgroup2DBlockLoadTransformINTEL",
+ "class" : "Group",
+ "opcode" : 6232,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Element Size'" },
+ { "kind" : "IdRef", "name" : "'Block Width'" },
+ { "kind" : "IdRef", "name" : "'Block Height'" },
+ { "kind" : "IdRef", "name" : "'Block Count'" },
+ { "kind" : "IdRef", "name" : "'Src Base Pointer'" },
+ { "kind" : "IdRef", "name" : "'Memory Width'" },
+ { "kind" : "IdRef", "name" : "'Memory Height'" },
+ { "kind" : "IdRef", "name" : "'Memory Pitch'" },
+ { "kind" : "IdRef", "name" : "'Coordinate'" },
+ { "kind" : "IdRef", "name" : "'Dst Pointer'" }
+ ],
+ "capabilities" : [ "Subgroup2DBlockTransformINTEL" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSubgroup2DBlockLoadTransposeINTEL",
+ "class" : "Group",
+ "opcode" : 6233,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Element Size'" },
+ { "kind" : "IdRef", "name" : "'Block Width'" },
+ { "kind" : "IdRef", "name" : "'Block Height'" },
+ { "kind" : "IdRef", "name" : "'Block Count'" },
+ { "kind" : "IdRef", "name" : "'Src Base Pointer'" },
+ { "kind" : "IdRef", "name" : "'Memory Width'" },
+ { "kind" : "IdRef", "name" : "'Memory Height'" },
+ { "kind" : "IdRef", "name" : "'Memory Pitch'" },
+ { "kind" : "IdRef", "name" : "'Coordinate'" },
+ { "kind" : "IdRef", "name" : "'Dst Pointer'" }
+ ],
+ "capabilities" : [ "Subgroup2DBlockTransposeINTEL" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSubgroup2DBlockPrefetchINTEL",
+ "class" : "Group",
+ "opcode" : 6234,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Element Size'" },
+ { "kind" : "IdRef", "name" : "'Block Width'" },
+ { "kind" : "IdRef", "name" : "'Block Height'" },
+ { "kind" : "IdRef", "name" : "'Block Count'" },
+ { "kind" : "IdRef", "name" : "'Src Base Pointer'" },
+ { "kind" : "IdRef", "name" : "'Memory Width'" },
+ { "kind" : "IdRef", "name" : "'Memory Height'" },
+ { "kind" : "IdRef", "name" : "'Memory Pitch'" },
+ { "kind" : "IdRef", "name" : "'Coordinate'" }
+ ],
+ "capabilities" : [ "Subgroup2DBlockIOINTEL" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSubgroup2DBlockStoreINTEL",
+ "class" : "Group",
+ "opcode" : 6235,
+ "operands" : [
+ { "kind" : "IdRef", "name" : "'Element Size'" },
+ { "kind" : "IdRef", "name" : "'Block Width'" },
+ { "kind" : "IdRef", "name" : "'Block Height'" },
+ { "kind" : "IdRef", "name" : "'Block Count'" },
+ { "kind" : "IdRef", "name" : "'Src Pointer'" },
+ { "kind" : "IdRef", "name" : "'Dst Base Pointer'" },
+ { "kind" : "IdRef", "name" : "'Memory Width'" },
+ { "kind" : "IdRef", "name" : "'Memory Height'" },
+ { "kind" : "IdRef", "name" : "'Memory Pitch'" },
+ { "kind" : "IdRef", "name" : "'Coordinate'" }
+ ],
+ "capabilities" : [ "Subgroup2DBlockIOINTEL" ],
+ "version" : "None"
+ },
+ {
+ "opname" : "OpSubgroupMatrixMultiplyAccumulateINTEL",
+ "class" : "Group",
+ "opcode" : 6237,
+ "operands" : [
+ { "kind" : "IdResultType" },
+ { "kind" : "IdResult" },
+ { "kind" : "IdRef", "name" : "'K Dim'" },
+ { "kind" : "IdRef", "name" : "'Matrix A'" },
+ { "kind" : "IdRef", "name" : "'Matrix B'" },
+ { "kind" : "IdRef", "name" : "'Matrix C'" },
+ { "kind" : "MatrixMultiplyAccumulateOperands", "quantifier" : "?" }
+ ],
+ "capabilities" : [ "SubgroupMatrixMultiplyAccumulateINTEL" ],
+ "version" : "None"
+ },
{
"opname" : "OpGroupIMulKHR",
"class" : "Group",
@@ -10024,15 +10811,7 @@
},
{
"enumerant" : "MakeTexelAvailable",
- "value" : "0x0100",
- "capabilities" : [ "VulkanMemoryModel" ],
- "parameters" : [
- { "kind" : "IdScope" }
- ],
- "version" : "1.5"
- },
- {
- "enumerant" : "MakeTexelAvailableKHR",
+ "aliases" : [ "MakeTexelAvailableKHR" ],
"value" : "0x0100",
"capabilities" : [ "VulkanMemoryModel" ],
"parameters" : [
@@ -10043,15 +10822,7 @@
},
{
"enumerant" : "MakeTexelVisible",
- "value" : "0x0200",
- "capabilities" : [ "VulkanMemoryModel" ],
- "parameters" : [
- { "kind" : "IdScope" }
- ],
- "version" : "1.5"
- },
- {
- "enumerant" : "MakeTexelVisibleKHR",
+ "aliases" : [ "MakeTexelVisibleKHR" ],
"value" : "0x0200",
"capabilities" : [ "VulkanMemoryModel" ],
"parameters" : [
@@ -10062,12 +10833,7 @@
},
{
"enumerant" : "NonPrivateTexel",
- "value" : "0x0400",
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "NonPrivateTexelKHR",
+ "aliases" : [ "NonPrivateTexelKHR" ],
"value" : "0x0400",
"capabilities" : [ "VulkanMemoryModel" ],
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
@@ -10075,12 +10841,7 @@
},
{
"enumerant" : "VolatileTexel",
- "value" : "0x0800",
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "VolatileTexelKHR",
+ "aliases" : [ "VolatileTexelKHR" ],
"value" : "0x0800",
"capabilities" : [ "VulkanMemoryModel" ],
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
@@ -10147,24 +10908,14 @@
},
{
"enumerant" : "AllowContract",
- "value" : "0x10000",
- "capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
- "version" : "None"
- },
- {
- "enumerant" : "AllowContractFastINTEL",
+ "aliases" : ["AllowContractFastINTEL"],
"value" : "0x10000",
"capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
"version" : "None"
},
{
"enumerant" : "AllowReassoc",
- "value" : "0x20000",
- "capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
- "version" : "None"
- },
- {
- "enumerant" : "AllowReassocINTEL",
+ "aliases" : ["AllowReassocINTEL"],
"value" : "0x20000",
"capabilities" : [ "FloatControls2", "FPFastMathModeINTEL" ],
"version" : "None"
@@ -10389,9 +11140,10 @@
"version" : "1.0"
},
{
- "enumerant" : "OptNoneINTEL",
+ "enumerant" : "OptNoneEXT",
+ "aliases" : ["OptNoneINTEL"],
"value" : "0x10000",
- "capabilities" : [ "OptNoneINTEL" ],
+ "capabilities" : [ "OptNoneEXT" ],
"version" : "None"
}
]
@@ -10402,11 +11154,7 @@
"enumerants" : [
{
"enumerant" : "Relaxed",
- "value" : "0x0000",
- "version" : "1.0"
- },
- {
- "enumerant" : "None",
+ "aliases" : ["None"],
"value" : "0x0000",
"version" : "1.0"
},
@@ -10464,12 +11212,7 @@
},
{
"enumerant" : "OutputMemory",
- "value" : "0x1000",
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "OutputMemoryKHR",
+ "aliases" : ["OutputMemoryKHR"],
"value" : "0x1000",
"capabilities" : [ "VulkanMemoryModel" ],
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
@@ -10477,12 +11220,7 @@
},
{
"enumerant" : "MakeAvailable",
- "value" : "0x2000",
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "MakeAvailableKHR",
+ "aliases" : ["MakeAvailableKHR"],
"value" : "0x2000",
"capabilities" : [ "VulkanMemoryModel" ],
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
@@ -10490,12 +11228,7 @@
},
{
"enumerant" : "MakeVisible",
- "value" : "0x4000",
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "MakeVisibleKHR",
+ "aliases" : ["MakeVisibleKHR"],
"value" : "0x4000",
"capabilities" : [ "VulkanMemoryModel" ],
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
@@ -10539,15 +11272,7 @@
},
{
"enumerant" : "MakePointerAvailable",
- "value" : "0x0008",
- "parameters" : [
- { "kind" : "IdScope" }
- ],
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "MakePointerAvailableKHR",
+ "aliases" : ["MakePointerAvailableKHR"],
"value" : "0x0008",
"parameters" : [
{ "kind" : "IdScope" }
@@ -10558,15 +11283,7 @@
},
{
"enumerant" : "MakePointerVisible",
- "value" : "0x0010",
- "parameters" : [
- { "kind" : "IdScope" }
- ],
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "MakePointerVisibleKHR",
+ "aliases" : ["MakePointerVisibleKHR"],
"value" : "0x0010",
"parameters" : [
{ "kind" : "IdScope" }
@@ -10577,12 +11294,7 @@
},
{
"enumerant" : "NonPrivatePointer",
- "value" : "0x0020",
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "NonPrivatePointerKHR",
+ "aliases" : ["NonPrivatePointerKHR"],
"value" : "0x0020",
"capabilities" : [ "VulkanMemoryModel" ],
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
@@ -10687,6 +11399,7 @@
},
{
"enumerant" : "SkipTrianglesKHR",
+ "aliases" : ["SkipBuiltinPrimitivesNV"],
"value" : "0x0100",
"capabilities" : [ "RayTraversalPrimitiveCullingKHR" ],
"version" : "None"
@@ -10825,6 +11538,11 @@
"enumerant" : "Zig",
"value" : 12,
"version" : "1.0"
+ },
+ {
+ "enumerant" : "Rust",
+ "value" : 13,
+ "version" : "1.0"
}
]
},
@@ -10888,72 +11606,42 @@
},
{
"enumerant" : "RayGenerationKHR",
- "value" : 5313,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "RayGenerationNV",
+ "aliases" : ["RayGenerationNV"],
"value" : 5313,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"version" : "None"
},
{
"enumerant" : "IntersectionKHR",
- "value" : 5314,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "IntersectionNV",
+ "aliases" : ["IntersectionNV"],
"value" : 5314,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"version" : "None"
},
{
"enumerant" : "AnyHitKHR",
- "value" : 5315,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "AnyHitNV",
+ "aliases" : ["AnyHitNV"],
"value" : 5315,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"version" : "None"
},
{
"enumerant" : "ClosestHitKHR",
- "value" : 5316,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "ClosestHitNV",
+ "aliases" : ["ClosestHitNV"],
"value" : 5316,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"version" : "None"
},
{
"enumerant" : "MissKHR",
- "value" : 5317,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "MissNV",
+ "aliases" : ["MissNV"],
"value" : 5317,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"version" : "None"
},
{
"enumerant" : "CallableKHR",
- "value" : 5318,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "CallableNV",
+ "aliases" : ["CallableNV"],
"value" : 5318,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"version" : "None"
@@ -10995,17 +11683,11 @@
},
{
"enumerant" : "PhysicalStorageBuffer64",
+ "aliases" : ["PhysicalStorageBuffer64EXT"],
"value" : 5348,
"extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
"capabilities" : [ "PhysicalStorageBufferAddresses" ],
"version" : "1.5"
- },
- {
- "enumerant" : "PhysicalStorageBuffer64EXT",
- "value" : 5348,
- "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
- "capabilities" : [ "PhysicalStorageBufferAddresses" ],
- "version" : "1.5"
}
]
},
@@ -11033,12 +11715,7 @@
},
{
"enumerant" : "Vulkan",
- "value" : 3,
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "VulkanKHR",
+ "aliases" : ["VulkanKHR"],
"value" : 3,
"capabilities" : [ "VulkanMemoryModel" ],
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
@@ -11414,6 +12091,17 @@
"enumerant" : "CoalescingAMDX",
"value" : 5069,
"capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "IsApiEntryAMDX",
+ "value" : 5070,
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "parameters" : [
+ { "kind" : "IdRef", "name" : "'Is Entry'" }
+ ],
+ "provisional" : true,
"version" : "None"
},
{
@@ -11423,6 +12111,7 @@
"parameters" : [
{ "kind" : "IdRef", "name" : "'Number of recursions'" }
],
+ "provisional" : true,
"version" : "None"
},
{
@@ -11434,6 +12123,7 @@
{ "kind" : "IdRef", "name" : "'y size'" },
{ "kind" : "IdRef", "name" : "'z size'" }
],
+ "provisional" : true,
"version" : "None"
},
{
@@ -11443,6 +12133,7 @@
"parameters" : [
{ "kind" : "IdRef", "name" : "'Shader Index'" }
],
+ "provisional" : true,
"version" : "None"
},
{
@@ -11454,6 +12145,7 @@
{ "kind" : "IdRef", "name" : "'y size'" },
{ "kind" : "IdRef", "name" : "'z size'" }
],
+ "provisional" : true,
"version" : "None"
},
{
@@ -11511,14 +12203,19 @@
"version" : "None"
},
{
- "enumerant" : "OutputLinesEXT",
- "value" : 5269,
- "capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
- "extensions" : [ "SPV_NV_mesh_shader", "SPV_EXT_mesh_shader" ],
+ "enumerant" : "SharesInputWithAMDX",
+ "value" : 5102,
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "parameters" : [
+ { "kind" : "IdRef", "name" : "'Node Name'" },
+ { "kind" : "IdRef", "name" : "'Shader Index'" }
+ ],
+ "provisional" : true,
"version" : "None"
},
{
- "enumerant" : "OutputLinesNV",
+ "enumerant" : "OutputLinesEXT",
+ "aliases" : ["OutputLinesNV"],
"value" : 5269,
"capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
"extensions" : [ "SPV_NV_mesh_shader", "SPV_EXT_mesh_shader" ],
@@ -11526,6 +12223,7 @@
},
{
"enumerant" : "OutputPrimitivesEXT",
+ "aliases" : ["OutputPrimitivesNV"],
"value" : 5270,
"capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
"parameters" : [
@@ -11535,38 +12233,24 @@
"version" : "None"
},
{
- "enumerant" : "OutputPrimitivesNV",
- "value" : 5270,
- "capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
- "parameters" : [
- { "kind" : "LiteralInteger", "name" : "'Primitive count'" }
- ],
- "extensions" : [ "SPV_NV_mesh_shader", "SPV_EXT_mesh_shader" ],
- "version" : "None"
- },
- {
- "enumerant" : "DerivativeGroupQuadsNV",
+ "enumerant" : "DerivativeGroupQuadsKHR",
+ "aliases" : ["DerivativeGroupQuadsNV"],
"value" : 5289,
- "capabilities" : [ "ComputeDerivativeGroupQuadsNV" ],
- "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+ "capabilities" : [ "ComputeDerivativeGroupQuadsNV", "ComputeDerivativeGroupQuadsKHR" ],
+ "extensions" : [ "SPV_NV_compute_shader_derivatives", "SPV_KHR_compute_shader_derivatives" ],
"version" : "None"
},
{
- "enumerant" : "DerivativeGroupLinearNV",
+ "enumerant" : "DerivativeGroupLinearKHR",
+ "aliases" : ["DerivativeGroupLinearNV"],
"value" : 5290,
- "capabilities" : [ "ComputeDerivativeGroupLinearNV" ],
- "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+ "capabilities" : [ "ComputeDerivativeGroupLinearNV", "ComputeDerivativeGroupLinearKHR" ],
+ "extensions" : [ "SPV_NV_compute_shader_derivatives", "SPV_KHR_compute_shader_derivatives" ],
"version" : "None"
},
{
"enumerant" : "OutputTrianglesEXT",
- "value" : 5298,
- "capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
- "extensions" : [ "SPV_NV_mesh_shader", "SPV_EXT_mesh_shader" ],
- "version" : "None"
- },
- {
- "enumerant" : "OutputTrianglesNV",
+ "aliases" : ["OutputTrianglesNV"],
"value" : 5298,
"capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
"extensions" : [ "SPV_NV_mesh_shader", "SPV_EXT_mesh_shader" ],
@@ -11870,23 +12554,12 @@
"enumerant" : "NodePayloadAMDX",
"value" : 5068,
"capabilities" : [ "ShaderEnqueueAMDX" ],
- "version" : "None"
- },
- {
- "enumerant" : "NodeOutputPayloadAMDX",
- "value" : 5076,
- "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
"version" : "None"
},
{
"enumerant" : "CallableDataKHR",
- "value" : 5328,
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "CallableDataNV",
+ "aliases" : ["CallableDataNV"],
"value" : 5328,
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
@@ -11894,13 +12567,7 @@
},
{
"enumerant" : "IncomingCallableDataKHR",
- "value" : 5329,
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "IncomingCallableDataNV",
+ "aliases" : ["IncomingCallableDataNV"],
"value" : 5329,
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
@@ -11908,13 +12575,7 @@
},
{
"enumerant" : "RayPayloadKHR",
- "value" : 5338,
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "RayPayloadNV",
+ "aliases" : ["RayPayloadNV"],
"value" : 5338,
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
@@ -11922,13 +12583,7 @@
},
{
"enumerant" : "HitAttributeKHR",
- "value" : 5339,
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "HitAttributeNV",
+ "aliases" : ["HitAttributeNV"],
"value" : 5339,
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
@@ -11936,13 +12591,7 @@
},
{
"enumerant" : "IncomingRayPayloadKHR",
- "value" : 5342,
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "IncomingRayPayloadNV",
+ "aliases" : ["IncomingRayPayloadNV"],
"value" : 5342,
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
@@ -11950,13 +12599,7 @@
},
{
"enumerant" : "ShaderRecordBufferKHR",
- "value" : 5343,
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "version" : "None"
- },
- {
- "enumerant" : "ShaderRecordBufferNV",
+ "aliases" : ["ShaderRecordBufferNV"],
"value" : 5343,
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
@@ -11964,18 +12607,12 @@
},
{
"enumerant" : "PhysicalStorageBuffer",
+ "aliases" : ["PhysicalStorageBufferEXT"],
"value" : 5349,
"extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
"capabilities" : [ "PhysicalStorageBufferAddresses" ],
"version" : "1.5"
},
- {
- "enumerant" : "PhysicalStorageBufferEXT",
- "value" : 5349,
- "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
- "capabilities" : [ "PhysicalStorageBufferAddresses" ],
- "version" : "1.5"
- },
{
"enumerant" : "HitObjectAttributeNV",
"value" : 5385,
@@ -12576,6 +13213,11 @@
"enumerant" : "UnsignedIntRaw12EXT",
"value" : 20,
"version": "1.0"
+ },
+ {
+ "enumerant" : "UnormInt2_101010EXT",
+ "value" : 21,
+ "version": "1.0"
}
]
},
@@ -13254,8 +13896,9 @@
"value" : 5019,
"capabilities" : [ "ShaderEnqueueAMDX" ],
"parameters" : [
- { "kind" : "IdRef", "name" : "'Payload Array'" }
+ { "kind" : "IdRef", "name" : "'Payload Type'" }
],
+ "provisional" : true,
"version" : "None"
},
{
@@ -13265,12 +13908,14 @@
"parameters" : [
{ "kind" : "IdRef", "name" : "'Max number of payloads'" }
],
+ "provisional" : true,
"version" : "None"
},
{
"enumerant" : "TrackFinishWritingAMDX",
"value" : 5078,
"capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
"version" : "None"
},
{
@@ -13278,8 +13923,43 @@
"value" : 5091,
"capabilities" : [ "ShaderEnqueueAMDX" ],
"parameters" : [
- { "kind" : "LiteralString", "name" : "'Node Name'" }
+ { "kind" : "IdRef", "name" : "'Node Name'" }
],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "PayloadNodeBaseIndexAMDX",
+ "value" : 5098,
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "parameters" : [
+ { "kind" : "IdRef", "name" : "'Base Index'" }
+ ],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "PayloadNodeSparseArrayAMDX",
+ "value" : 5099,
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "PayloadNodeArraySizeAMDX",
+ "value" : 5100,
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "parameters" : [
+ { "kind" : "IdRef", "name" : "'Array Size'" }
+ ],
+ "provisional" : true,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "PayloadDispatchIndirectAMDX",
+ "value" : 5105,
+ "capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
"version" : "None"
},
{
@@ -13314,13 +13994,7 @@
},
{
"enumerant" : "PerPrimitiveEXT",
- "value" : 5271,
- "capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
- "extensions" : [ "SPV_NV_mesh_shader", "SPV_EXT_mesh_shader" ],
- "version" : "None"
- },
- {
- "enumerant" : "PerPrimitiveNV",
+ "aliases" : ["PerPrimitiveNV"],
"value" : 5271,
"capabilities" : [ "MeshShadingNV", "MeshShadingEXT" ],
"extensions" : [ "SPV_NV_mesh_shader", "SPV_EXT_mesh_shader" ],
@@ -13342,26 +14016,15 @@
},
{
"enumerant" : "PerVertexKHR",
+ "aliases" : ["PerVertexNV"],
"value" : 5285,
- "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
- "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
- "version" : "None"
- },
- {
- "enumerant" : "PerVertexNV",
- "value" : 5285,
- "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "capabilities" : [ "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "NonUniform",
- "value" : 5300,
- "capabilities" : [ "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "NonUniformEXT",
+ "aliases" : ["NonUniformEXT"],
"value" : 5300,
"capabilities" : [ "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -13369,32 +14032,20 @@
},
{
"enumerant" : "RestrictPointer",
+ "aliases" : ["RestrictPointerEXT"],
"value" : 5355,
"capabilities" : [ "PhysicalStorageBufferAddresses" ],
"extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
"version" : "1.5"
},
- {
- "enumerant" : "RestrictPointerEXT",
- "value" : 5355,
- "capabilities" : [ "PhysicalStorageBufferAddresses" ],
- "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
- "version" : "1.5"
- },
{
"enumerant" : "AliasedPointer",
+ "aliases" : ["AliasedPointerEXT"],
"value" : 5356,
"capabilities" : [ "PhysicalStorageBufferAddresses" ],
"extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
"version" : "1.5"
},
- {
- "enumerant" : "AliasedPointerEXT",
- "value" : 5356,
- "capabilities" : [ "PhysicalStorageBufferAddresses" ],
- "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
- "version" : "1.5"
- },
{
"enumerant" : "HitObjectShaderRecordBufferNV",
"value" : 5386,
@@ -13494,37 +14145,23 @@
},
{
"enumerant" : "CounterBuffer",
- "value" : 5634,
- "parameters" : [
- { "kind" : "IdRef", "name" : "'Counter Buffer'" }
- ],
- "version" : "1.4"
- },
- {
- "enumerant" : "HlslCounterBufferGOOGLE",
+ "aliases" : ["HlslCounterBufferGOOGLE"],
"value" : 5634,
"parameters" : [
{ "kind" : "IdRef", "name" : "'Counter Buffer'" }
],
"extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ],
- "version" : "None"
+ "version" : "1.4"
},
{
"enumerant" : "UserSemantic",
- "value" : 5635,
- "parameters" : [
- { "kind" : "LiteralString", "name" : "'Semantic'" }
- ],
- "version" : "1.4"
- },
- {
- "enumerant" : "HlslSemanticGOOGLE",
+ "aliases" : ["HlslSemanticGOOGLE"],
"value" : 5635,
"parameters" : [
{ "kind" : "LiteralString", "name" : "'Semantic'" }
],
"extensions" : [ "SPV_GOOGLE_hlsl_functionality1" ],
- "version" : "None"
+ "version" : "1.4"
},
{
"enumerant" : "UserTypeGOOGLE",
@@ -14264,12 +14901,7 @@
},
{
"enumerant" : "SubgroupEqMask",
- "value" : 4416,
- "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
- "version" : "1.3"
- },
- {
- "enumerant" : "SubgroupEqMaskKHR",
+ "aliases" : ["SubgroupEqMaskKHR"],
"value" : 4416,
"capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
"extensions" : [ "SPV_KHR_shader_ballot" ],
@@ -14277,12 +14909,7 @@
},
{
"enumerant" : "SubgroupGeMask",
- "value" : 4417,
- "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
- "version" : "1.3"
- },
- {
- "enumerant" : "SubgroupGeMaskKHR",
+ "aliases" : ["SubgroupGeMaskKHR"],
"value" : 4417,
"capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
"extensions" : [ "SPV_KHR_shader_ballot" ],
@@ -14290,12 +14917,7 @@
},
{
"enumerant" : "SubgroupGtMask",
- "value" : 4418,
- "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
- "version" : "1.3"
- },
- {
- "enumerant" : "SubgroupGtMaskKHR",
+ "aliases" : ["SubgroupGtMaskKHR"],
"value" : 4418,
"capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
"extensions" : [ "SPV_KHR_shader_ballot" ],
@@ -14303,12 +14925,7 @@
},
{
"enumerant" : "SubgroupLeMask",
- "value" : 4419,
- "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
- "version" : "1.3"
- },
- {
- "enumerant" : "SubgroupLeMaskKHR",
+ "aliases" : ["SubgroupLeMaskKHR"],
"value" : 4419,
"capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
"extensions" : [ "SPV_KHR_shader_ballot" ],
@@ -14316,12 +14933,7 @@
},
{
"enumerant" : "SubgroupLtMask",
- "value" : 4420,
- "capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
- "version" : "1.3"
- },
- {
- "enumerant" : "SubgroupLtMaskKHR",
+ "aliases" : ["SubgroupLtMaskKHR"],
"value" : 4420,
"capabilities" : [ "SubgroupBallotKHR", "GroupNonUniformBallot" ],
"extensions" : [ "SPV_KHR_shader_ballot" ],
@@ -14426,15 +15038,17 @@
"version" : "None"
},
{
- "enumerant" : "CoalescedInputCountAMDX",
+ "enumerant" : "RemainingRecursionLevelsAMDX",
"value" : 5021,
"capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
"version" : "None"
},
{
"enumerant" : "ShaderIndexAMDX",
"value" : 5073,
"capabilities" : [ "ShaderEnqueueAMDX" ],
+ "provisional" : true,
"version" : "None"
},
{
@@ -14537,60 +15151,36 @@
},
{
"enumerant" : "BaryCoordKHR",
+ "aliases" : ["BaryCoordNV"],
"value" : 5286,
- "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
- "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
- "version" : "None"
- },
- {
- "enumerant" : "BaryCoordNV",
- "value" : 5286,
- "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "capabilities" : [ "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNoPerspKHR",
+ "aliases" : ["BaryCoordNoPerspNV"],
"value" : 5287,
- "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
- "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
- "version" : "None"
- },
- {
- "enumerant" : "BaryCoordNoPerspNV",
- "value" : 5287,
- "capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
+ "capabilities" : [ "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "FragSizeEXT",
+ "aliases" : ["FragmentSizeNV"],
"value" : 5292 ,
- "capabilities" : [ "FragmentDensityEXT", "ShadingRateNV" ],
+ "capabilities" : [ "FragmentDensityEXT" ],
"extensions" : [ "SPV_EXT_fragment_invocation_density", "SPV_NV_shading_rate" ],
"version" : "None"
},
- {
- "enumerant" : "FragmentSizeNV",
- "value" : 5292 ,
- "capabilities" : [ "ShadingRateNV", "FragmentDensityEXT" ],
- "extensions" : [ "SPV_NV_shading_rate", "SPV_EXT_fragment_invocation_density" ],
- "version" : "None"
- },
{
"enumerant" : "FragInvocationCountEXT",
+ "aliases" : ["InvocationsPerPixelNV"],
"value" : 5293,
- "capabilities" : [ "FragmentDensityEXT", "ShadingRateNV" ],
+ "capabilities" : [ "FragmentDensityEXT" ],
"extensions" : [ "SPV_EXT_fragment_invocation_density", "SPV_NV_shading_rate" ],
"version" : "None"
},
- {
- "enumerant" : "InvocationsPerPixelNV",
- "value" : 5293,
- "capabilities" : [ "ShadingRateNV", "FragmentDensityEXT" ],
- "extensions" : [ "SPV_NV_shading_rate", "SPV_EXT_fragment_invocation_density" ],
- "version" : "None"
- },
{
"enumerant" : "PrimitivePointIndicesEXT",
"value" : 5294,
@@ -14621,13 +15211,7 @@
},
{
"enumerant" : "LaunchIdKHR",
- "value" : 5319,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "LaunchIdNV",
+ "aliases" : ["LaunchIdNV"],
"value" : 5319,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14635,13 +15219,7 @@
},
{
"enumerant" : "LaunchSizeKHR",
- "value" : 5320,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "LaunchSizeNV",
+ "aliases" : ["LaunchSizeNV"],
"value" : 5320,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14649,13 +15227,7 @@
},
{
"enumerant" : "WorldRayOriginKHR",
- "value" : 5321,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "WorldRayOriginNV",
+ "aliases" : ["WorldRayOriginNV"],
"value" : 5321,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14663,13 +15235,7 @@
},
{
"enumerant" : "WorldRayDirectionKHR",
- "value" : 5322,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "WorldRayDirectionNV",
+ "aliases" : ["WorldRayDirectionNV"],
"value" : 5322,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14677,13 +15243,7 @@
},
{
"enumerant" : "ObjectRayOriginKHR",
- "value" : 5323,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "ObjectRayOriginNV",
+ "aliases" : ["ObjectRayOriginNV"],
"value" : 5323,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14691,13 +15251,7 @@
},
{
"enumerant" : "ObjectRayDirectionKHR",
- "value" : 5324,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "ObjectRayDirectionNV",
+ "aliases" : ["ObjectRayDirectionNV"],
"value" : 5324,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14705,13 +15259,7 @@
},
{
"enumerant" : "RayTminKHR",
- "value" : 5325,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "RayTminNV",
+ "aliases" : ["RayTminNV"],
"value" : 5325,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14719,13 +15267,7 @@
},
{
"enumerant" : "RayTmaxKHR",
- "value" : 5326,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "RayTmaxNV",
+ "aliases" : ["RayTmaxNV"],
"value" : 5326,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14733,13 +15275,7 @@
},
{
"enumerant" : "InstanceCustomIndexKHR",
- "value" : 5327,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "InstanceCustomIndexNV",
+ "aliases" : ["InstanceCustomIndexNV"],
"value" : 5327,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14747,13 +15283,7 @@
},
{
"enumerant" : "ObjectToWorldKHR",
- "value" : 5330,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "ObjectToWorldNV",
+ "aliases" : ["ObjectToWorldNV"],
"value" : 5330,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14761,13 +15291,7 @@
},
{
"enumerant" : "WorldToObjectKHR",
- "value" : 5331,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "WorldToObjectNV",
+ "aliases" : ["WorldToObjectNV"],
"value" : 5331,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14782,13 +15306,7 @@
},
{
"enumerant" : "HitKindKHR",
- "value" : 5333,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "HitKindNV",
+ "aliases" : ["HitKindNV"],
"value" : 5333,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14821,13 +15339,7 @@
},
{
"enumerant" : "IncomingRayFlagsKHR",
- "value" : 5351,
- "capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
- "extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
- "version" : "None"
- },
- {
- "enumerant" : "IncomingRayFlagsNV",
+ "aliases" : ["IncomingRayFlagsNV"],
"value" : 5351,
"capabilities" : [ "RayTracingNV" , "RayTracingKHR" ],
"extensions" : [ "SPV_NV_ray_tracing" , "SPV_KHR_ray_tracing" ],
@@ -14840,6 +15352,27 @@
"extensions" : [ "SPV_KHR_ray_tracing" ],
"version" : "None"
},
+ {
+ "enumerant" : "HitIsSphereNV",
+ "value" : 5359,
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "HitIsLSSNV",
+ "value" : 5360,
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "HitSpherePositionNV",
+ "value" : 5361,
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
{
"enumerant" : "WarpsPerSMNV",
"value" : 5374,
@@ -14868,6 +15401,13 @@
"extensions" : [ "SPV_NV_shader_sm_builtins" ],
"version" : "None"
},
+ {
+ "enumerant" : "HitLSSPositionsNV",
+ "value" : 5396,
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
{
"enumerant" : "HitKindFrontFacingMicroTriangleNV",
"value" : 5405,
@@ -14880,6 +15420,27 @@
"capabilities" : [ "RayTracingDisplacementMicromapNV" ],
"version" : "None"
},
+ {
+ "enumerant" : "HitSphereRadiusNV",
+ "value" : 5420,
+ "capabilities" : [ "RayTracingSpheresGeometryNV" ],
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "HitLSSRadiiNV",
+ "value" : 5421,
+ "capabilities" : [ "RayTracingLinearSweptSpheresGeometryNV" ],
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ClusterIDNV",
+ "value" : 5436,
+ "capabilities" : [ "RayTracingClusterAccelerationStructureNV" ],
+ "extensions" : [ "SPV_NV_cluster_acceleration_structure" ],
+ "version" : "None"
+ },
{
"enumerant" : "CullMaskKHR",
"value" : 6021,
@@ -14920,12 +15481,7 @@
},
{
"enumerant" : "QueueFamily",
- "value" : 5,
- "capabilities" : [ "VulkanMemoryModel" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "QueueFamilyKHR",
+ "aliases" : ["QueueFamilyKHR"],
"value" : 5,
"capabilities" : [ "VulkanMemoryModel" ],
"version" : "1.5"
@@ -15501,33 +16057,16 @@
},
{
"enumerant" : "StorageBuffer16BitAccess",
- "value" : 4433,
- "extensions" : [ "SPV_KHR_16bit_storage" ],
- "version" : "1.3"
- },
- {
- "enumerant" : "StorageUniformBufferBlock16",
+ "aliases" : ["StorageUniformBufferBlock16"],
"value" : 4433,
"extensions" : [ "SPV_KHR_16bit_storage" ],
"version" : "1.3"
},
{
"enumerant" : "UniformAndStorageBuffer16BitAccess",
+ "aliases" : ["StorageUniform16"],
"value" : 4434,
- "capabilities" : [
- "StorageBuffer16BitAccess",
- "StorageUniformBufferBlock16"
- ],
- "extensions" : [ "SPV_KHR_16bit_storage" ],
- "version" : "1.3"
- },
- {
- "enumerant" : "StorageUniform16",
- "value" : 4434,
- "capabilities" : [
- "StorageBuffer16BitAccess",
- "StorageUniformBufferBlock16"
- ],
+ "capabilities" : [ "StorageBuffer16BitAccess" ],
"extensions" : [ "SPV_KHR_16bit_storage" ],
"version" : "1.3"
},
@@ -15645,6 +16184,13 @@
"extensions" : [ "SPV_KHR_ray_query" ],
"version" : "None"
},
+ {
+ "enumerant" : "UntypedPointersKHR",
+ "value" : 4473,
+ "extensions" : [ "SPV_KHR_untyped_pointers" ],
+ "provisional" : true,
+ "version" : "None"
+ },
{
"enumerant" : "RayTraversalPrimitiveCullingKHR",
"value" : 4478,
@@ -15736,6 +16282,7 @@
"value" : 5067,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_AMDX_shader_enqueue" ],
+ "provisional" : true,
"version" : "None"
},
{
@@ -15743,7 +16290,7 @@
"value" : 5087,
"extensions" : [ "SPV_KHR_quad_control" ],
"version" : "None"
- },
+ },
{
"enumerant" : "SampleMaskOverrideCoverageNV",
"value" : 5249,
@@ -15760,22 +16307,16 @@
},
{
"enumerant" : "ShaderViewportIndexLayerEXT",
+ "aliases" : ["ShaderViewportIndexLayerNV"],
"value" : 5254,
"capabilities" : [ "MultiViewport" ],
- "extensions" : [ "SPV_EXT_shader_viewport_index_layer" ],
- "version" : "None"
- },
- {
- "enumerant" : "ShaderViewportIndexLayerNV",
- "value" : 5254,
- "capabilities" : [ "MultiViewport" ],
- "extensions" : [ "SPV_NV_viewport_array2" ],
+ "extensions" : [ "SPV_EXT_shader_viewport_index_layer", "SPV_NV_viewport_array2" ],
"version" : "None"
},
{
"enumerant" : "ShaderViewportMaskNV",
"value" : 5255,
- "capabilities" : [ "ShaderViewportIndexLayerNV" ],
+ "capabilities" : [ "ShaderViewportIndexLayerEXT" ],
"extensions" : [ "SPV_NV_viewport_array2" ],
"version" : "None"
},
@@ -15822,36 +16363,27 @@
},
{
"enumerant" : "FragmentBarycentricKHR",
+ "aliases" : ["FragmentBarycentricNV"],
"value" : 5284,
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
- "enumerant" : "FragmentBarycentricNV",
- "value" : 5284,
- "extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
- "version" : "None"
- },
- {
- "enumerant" : "ComputeDerivativeGroupQuadsNV",
+ "enumerant" : "ComputeDerivativeGroupQuadsKHR",
+ "aliases" : ["ComputeDerivativeGroupQuadsNV"],
"value" : 5288,
- "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+ "capabilities" : [ "Shader" ],
+ "extensions" : [ "SPV_NV_compute_shader_derivatives", "SPV_KHR_compute_shader_derivatives" ],
"version" : "None"
},
{
"enumerant" : "FragmentDensityEXT",
+ "aliases" : ["ShadingRateNV"],
"value" : 5291,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_fragment_invocation_density", "SPV_NV_shading_rate" ],
"version" : "None"
},
- {
- "enumerant" : "ShadingRateNV",
- "value" : 5291,
- "capabilities" : [ "Shader" ],
- "extensions" : [ "SPV_NV_shading_rate", "SPV_EXT_fragment_invocation_density" ],
- "version" : "None"
- },
{
"enumerant" : "GroupNonUniformPartitionedNV",
"value" : 5297,
@@ -15860,12 +16392,7 @@
},
{
"enumerant" : "ShaderNonUniform",
- "value" : 5301,
- "capabilities" : [ "Shader" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "ShaderNonUniformEXT",
+ "aliases" : ["ShaderNonUniformEXT"],
"value" : 5301,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15873,12 +16400,7 @@
},
{
"enumerant" : "RuntimeDescriptorArray",
- "value" : 5302,
- "capabilities" : [ "Shader" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "RuntimeDescriptorArrayEXT",
+ "aliases" : ["RuntimeDescriptorArrayEXT"],
"value" : 5302,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15886,12 +16408,7 @@
},
{
"enumerant" : "InputAttachmentArrayDynamicIndexing",
- "value" : 5303,
- "capabilities" : [ "InputAttachment" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "InputAttachmentArrayDynamicIndexingEXT",
+ "aliases" : ["InputAttachmentArrayDynamicIndexingEXT"],
"value" : 5303,
"capabilities" : [ "InputAttachment" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15899,12 +16416,7 @@
},
{
"enumerant" : "UniformTexelBufferArrayDynamicIndexing",
- "value" : 5304,
- "capabilities" : [ "SampledBuffer" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "UniformTexelBufferArrayDynamicIndexingEXT",
+ "aliases" : ["UniformTexelBufferArrayDynamicIndexingEXT"],
"value" : 5304,
"capabilities" : [ "SampledBuffer" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15912,12 +16424,7 @@
},
{
"enumerant" : "StorageTexelBufferArrayDynamicIndexing",
- "value" : 5305,
- "capabilities" : [ "ImageBuffer" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "StorageTexelBufferArrayDynamicIndexingEXT",
+ "aliases" : ["StorageTexelBufferArrayDynamicIndexingEXT"],
"value" : 5305,
"capabilities" : [ "ImageBuffer" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15925,12 +16432,7 @@
},
{
"enumerant" : "UniformBufferArrayNonUniformIndexing",
- "value" : 5306,
- "capabilities" : [ "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "UniformBufferArrayNonUniformIndexingEXT",
+ "aliases" : ["UniformBufferArrayNonUniformIndexingEXT"],
"value" : 5306,
"capabilities" : [ "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15938,12 +16440,7 @@
},
{
"enumerant" : "SampledImageArrayNonUniformIndexing",
- "value" : 5307,
- "capabilities" : [ "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "SampledImageArrayNonUniformIndexingEXT",
+ "aliases" : ["SampledImageArrayNonUniformIndexingEXT"],
"value" : 5307,
"capabilities" : [ "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15951,12 +16448,7 @@
},
{
"enumerant" : "StorageBufferArrayNonUniformIndexing",
- "value" : 5308,
- "capabilities" : [ "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "StorageBufferArrayNonUniformIndexingEXT",
+ "aliases" : ["StorageBufferArrayNonUniformIndexingEXT"],
"value" : 5308,
"capabilities" : [ "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15964,12 +16456,7 @@
},
{
"enumerant" : "StorageImageArrayNonUniformIndexing",
- "value" : 5309,
- "capabilities" : [ "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "StorageImageArrayNonUniformIndexingEXT",
+ "aliases" : ["StorageImageArrayNonUniformIndexingEXT"],
"value" : 5309,
"capabilities" : [ "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15977,12 +16464,7 @@
},
{
"enumerant" : "InputAttachmentArrayNonUniformIndexing",
- "value" : 5310,
- "capabilities" : [ "InputAttachment", "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "InputAttachmentArrayNonUniformIndexingEXT",
+ "aliases" : ["InputAttachmentArrayNonUniformIndexingEXT"],
"value" : 5310,
"capabilities" : [ "InputAttachment", "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -15990,12 +16472,7 @@
},
{
"enumerant" : "UniformTexelBufferArrayNonUniformIndexing",
- "value" : 5311,
- "capabilities" : [ "SampledBuffer", "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "UniformTexelBufferArrayNonUniformIndexingEXT",
+ "aliases" : ["UniformTexelBufferArrayNonUniformIndexingEXT"],
"value" : 5311,
"capabilities" : [ "SampledBuffer", "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -16003,12 +16480,7 @@
},
{
"enumerant" : "StorageTexelBufferArrayNonUniformIndexing",
- "value" : 5312,
- "capabilities" : [ "ImageBuffer", "ShaderNonUniform" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "StorageTexelBufferArrayNonUniformIndexingEXT",
+ "aliases" : ["StorageTexelBufferArrayNonUniformIndexingEXT"],
"value" : 5312,
"capabilities" : [ "ImageBuffer", "ShaderNonUniform" ],
"extensions" : [ "SPV_EXT_descriptor_indexing" ],
@@ -16037,44 +16509,32 @@
},
{
"enumerant" : "VulkanMemoryModel",
- "value" : 5345,
- "version" : "1.5"
- },
- {
- "enumerant" : "VulkanMemoryModelKHR",
+ "aliases" : ["VulkanMemoryModelKHR"],
"value" : 5345,
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
"version" : "1.5"
},
{
"enumerant" : "VulkanMemoryModelDeviceScope",
- "value" : 5346,
- "version" : "1.5"
- },
- {
- "enumerant" : "VulkanMemoryModelDeviceScopeKHR",
+ "aliases" : ["VulkanMemoryModelDeviceScopeKHR"],
"value" : 5346,
"extensions" : [ "SPV_KHR_vulkan_memory_model" ],
"version" : "1.5"
},
{
"enumerant" : "PhysicalStorageBufferAddresses",
+ "aliases" : ["PhysicalStorageBufferAddressesEXT"],
"value" : 5347,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_physical_storage_buffer", "SPV_KHR_physical_storage_buffer" ],
"version" : "1.5"
},
{
- "enumerant" : "PhysicalStorageBufferAddressesEXT",
- "value" : 5347,
- "capabilities" : [ "Shader" ],
- "extensions" : [ "SPV_EXT_physical_storage_buffer" ],
- "version" : "1.5"
- },
- {
- "enumerant" : "ComputeDerivativeGroupLinearNV",
+ "enumerant" : "ComputeDerivativeGroupLinearKHR",
+ "aliases" : ["ComputeDerivativeGroupLinearNV"],
"value" : 5350,
- "extensions" : [ "SPV_NV_compute_shader_derivatives" ],
+ "capabilities" : [ "Shader" ],
+ "extensions" : [ "SPV_NV_compute_shader_derivatives", "SPV_KHR_compute_shader_derivatives" ],
"version" : "None"
},
{
@@ -16121,12 +16581,7 @@
},
{
"enumerant" : "DemoteToHelperInvocation",
- "value" : 5379,
- "capabilities" : [ "Shader" ],
- "version" : "1.6"
- },
- {
- "enumerant" : "DemoteToHelperInvocationEXT",
+ "aliases" : ["DemoteToHelperInvocationEXT"],
"value" : 5379,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
@@ -16166,6 +16621,12 @@
"extensions" : [ "SPV_KHR_ray_tracing_position_fetch" ],
"version" : "None"
},
+ {
+ "enumerant" : "CooperativeVectorNV",
+ "value" : 5394,
+ "extensions" : [ "SPV_NV_cooperative_vector" ],
+ "version" : "None"
+ },
{
"enumerant" : "AtomicFloat16VectorNV",
"value" : 5404,
@@ -16185,6 +16646,67 @@
"extensions" : [ "SPV_NV_raw_access_chains" ],
"version" : "None"
},
+ {
+ "enumerant" : "RayTracingSpheresGeometryNV",
+ "value" : 5418,
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayTracingLinearSweptSpheresGeometryNV",
+ "value" : 5419,
+ "extensions" : [ "SPV_NV_linear_swept_spheres" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CooperativeMatrixReductionsNV",
+ "value" : 5430,
+ "extensions" : [ "SPV_NV_cooperative_matrix2" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CooperativeMatrixConversionsNV",
+ "value" : 5431,
+ "extensions" : [ "SPV_NV_cooperative_matrix2" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CooperativeMatrixPerElementOperationsNV",
+ "value" : 5432,
+ "extensions" : [ "SPV_NV_cooperative_matrix2" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CooperativeMatrixTensorAddressingNV",
+ "value" : 5433,
+ "extensions" : [ "SPV_NV_cooperative_matrix2" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CooperativeMatrixBlockLoadsNV",
+ "value" : 5434,
+ "extensions" : [ "SPV_NV_cooperative_matrix2" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "CooperativeVectorTrainingNV",
+ "value" : 5435,
+ "extensions" : [ "SPV_NV_cooperative_vector" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "RayTracingClusterAccelerationStructureNV",
+ "value" : 5437,
+ "capabilities" : [ "RayTracingKHR" ],
+ "extensions" : [ "SPV_NV_cluster_acceleration_structure" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "TensorAddressingNV",
+ "value" : 5439,
+ "extensions" : [ "SPV_NV_tensor_addressing" ],
+ "version" : "None"
+ },
{
"enumerant" : "SubgroupShuffleINTEL",
"value" : 5568,
@@ -16224,7 +16746,6 @@
{
"enumerant" : "IntegerFunctions2INTEL",
"value" : 5584,
- "capabilities" : [ "Shader" ],
"extensions" : [ "SPV_INTEL_shader_integer_functions2" ],
"version" : "None"
},
@@ -16442,23 +16963,14 @@
},
{
"enumerant" : "DotProductInputAll",
- "value" : 6016,
- "version" : "1.6"
- },
- {
- "enumerant" : "DotProductInputAllKHR",
+ "aliases" : ["DotProductInputAllKHR"],
"value" : 6016,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8Bit",
- "value" : 6017,
- "capabilities" : [ "Int8" ],
- "version" : "1.6"
- },
- {
- "enumerant" : "DotProductInput4x8BitKHR",
+ "aliases" : ["DotProductInput4x8BitKHR"],
"value" : 6017,
"capabilities" : [ "Int8" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
@@ -16466,22 +16978,14 @@
},
{
"enumerant" : "DotProductInput4x8BitPacked",
- "value" : 6018,
- "version" : "1.6"
- },
- {
- "enumerant" : "DotProductInput4x8BitPackedKHR",
+ "aliases" : ["DotProductInput4x8BitPackedKHR"],
"value" : 6018,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"enumerant" : "DotProduct",
- "value" : 6019,
- "version" : "1.6"
- },
- {
- "enumerant" : "DotProductKHR",
+ "aliases" : ["DotProductKHR"],
"value" : 6019,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
@@ -16542,9 +17046,10 @@
"version" : "None"
},
{
- "enumerant" : "OptNoneINTEL",
+ "enumerant" : "OptNoneEXT",
+ "aliases" : ["OptNoneINTEL"],
"value" : 6094,
- "extensions" : [ "SPV_INTEL_optnone" ],
+ "extensions" : [ "SPV_EXT_optnone", "SPV_INTEL_optnone" ],
"version" : "None"
},
{
@@ -16571,6 +17076,12 @@
"extensions" : [ "SPV_INTEL_split_barrier" ],
"version" : "None"
},
+ {
+ "enumerant" : "ArithmeticFenceEXT",
+ "value" : 6144,
+ "extensions" : [ "SPV_EXT_arithmetic_fence" ],
+ "version" : "None"
+ },
{
"enumerant" : "FPGAClusterAttributesV2INTEL",
"value" : 6150,
@@ -16615,6 +17126,38 @@
"extensions": [ "SPV_INTEL_global_variable_fpga_decorations" ],
"version" : "None"
},
+ {
+ "enumerant" : "SubgroupBufferPrefetchINTEL",
+ "value" : 6220,
+ "extensions": [ "SPV_INTEL_subgroup_buffer_prefetch" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Subgroup2DBlockIOINTEL",
+ "value" : 6228,
+ "extensions": [ "SPV_INTEL_2d_block_io" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Subgroup2DBlockTransformINTEL",
+ "value" : 6229,
+ "capabilities" : [ "Subgroup2DBlockIOINTEL" ],
+ "extensions": [ "SPV_INTEL_2d_block_io" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Subgroup2DBlockTransposeINTEL",
+ "value" : 6230,
+ "capabilities" : [ "Subgroup2DBlockIOINTEL" ],
+ "extensions": [ "SPV_INTEL_2d_block_io" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SubgroupMatrixMultiplyAccumulateINTEL",
+ "value" : 6236,
+ "extensions": [ "SPV_INTEL_subgroup_matrix_multiply_accumulate" ],
+ "version" : "None"
+ },
{
"enumerant" : "GroupUniformArithmeticKHR",
"value" : 6400,
@@ -16623,9 +17166,9 @@
},
{
"enumerant" : "MaskedGatherScatterINTEL",
- "value" : 6427,
- "extensions" : [ "SPV_INTEL_masked_gather_scatter"],
- "version" : "None"
+ "value" : 6427,
+ "extensions" : [ "SPV_INTEL_masked_gather_scatter"],
+ "version" : "None"
},
{
"enumerant" : "CacheControlsINTEL",
@@ -16707,11 +17250,7 @@
"enumerants" : [
{
"enumerant" : "PackedVectorFormat4x8Bit",
- "value" : 0,
- "version" : "1.6"
- },
- {
- "enumerant" : "PackedVectorFormat4x8BitKHR",
+ "aliases" : ["PackedVectorFormat4x8BitKHR"],
"value" : 0,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
@@ -16801,6 +17340,87 @@
}
]
},
+ {
+ "category" : "BitEnum",
+ "kind" : "CooperativeMatrixReduce",
+ "enumerants" : [
+ {
+ "enumerant" : "Row",
+ "value" : "0x0001",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Column",
+ "value" : "0x0002",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "2x2",
+ "value" : "0x0004",
+ "version" : "None"
+ }
+ ]
+ },
+ {
+ "category" : "ValueEnum",
+ "kind" : "TensorClampMode",
+ "enumerants" : [
+ {
+ "enumerant" : "Undefined",
+ "value" : 0,
+ "version": "None"
+ },
+ {
+ "enumerant" : "Constant",
+ "value" : 1,
+ "version": "None"
+ },
+ {
+ "enumerant" : "ClampToEdge",
+ "value" : 2,
+ "version": "None"
+ },
+ {
+ "enumerant" : "Repeat",
+ "value" : 3,
+ "version": "None"
+ },
+ {
+ "enumerant" : "RepeatMirrored",
+ "value" : 4,
+ "version": "None"
+ }
+ ]
+ },
+ {
+ "category" : "BitEnum",
+ "kind" : "TensorAddressingOperands",
+ "enumerants" : [
+ {
+ "enumerant" : "None",
+ "value" : "0x0000",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "TensorView",
+ "value" : "0x0001",
+ "parameters" : [
+ { "kind" : "IdRef" }
+ ],
+ "capabilities" : [ "CooperativeMatrixTensorAddressingNV" ],
+ "version" : "None"
+ },
+ {
+ "enumerant" : "DecodeFunc",
+ "value" : "0x0002",
+ "parameters" : [
+ { "kind" : "IdRef" }
+ ],
+ "capabilities" : [ "CooperativeMatrixBlockLoadsNV" ],
+ "version" : "None"
+ }
+ ]
+ },
{
"category" : "ValueEnum",
"kind" : "InitializationModeQualifier",
@@ -16897,6 +17517,200 @@
}
]
},
+ {
+ "category" : "BitEnum",
+ "kind" : "MatrixMultiplyAccumulateOperands",
+ "enumerants" : [
+ {
+ "enumerant" : "None",
+ "value" : "0x0",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixASignedComponentsINTEL",
+ "value" : "0x1",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixBSignedComponentsINTEL",
+ "value" : "0x2",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixCBFloat16INTEL",
+ "value" : "0x4",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixResultBFloat16INTEL",
+ "value" : "0x8",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixAPackedInt8INTEL",
+ "value" : "0x10",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixBPackedInt8INTEL",
+ "value" : "0x20",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixAPackedInt4INTEL",
+ "value" : "0x40",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixBPackedInt4INTEL",
+ "value" : "0x80",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixATF32INTEL",
+ "value" : "0x100",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixBTF32INTEL",
+ "value" : "0x200",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixAPackedFloat16INTEL",
+ "value" : "0x400",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixBPackedFloat16INTEL",
+ "value" : "0x800",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixAPackedBFloat16INTEL",
+ "value" : "0x1000",
+ "version" : "None"
+ },
+ {
+ "enumerant" : "MatrixBPackedBFloat16INTEL",
+ "value" : "0x2000",
+ "version" : "None"
+ }
+ ]
+ },
+ {
+ "category" : "ValueEnum",
+ "kind" : "FPEncoding",
+ "enumerants" : [
+ ]
+ },
+ {
+ "category" : "ValueEnum",
+ "kind" : "CooperativeVectorMatrixLayout",
+ "enumerants" : [
+ {
+ "enumerant" : "RowMajorNV",
+ "value" : 0,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "ColumnMajorNV",
+ "value" : 1,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "InferencingOptimalNV",
+ "value" : 2,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "TrainingOptimalNV",
+ "value" : 3,
+ "version" : "None"
+ }
+ ]
+ },
+ {
+ "category" : "ValueEnum",
+ "kind" : "ComponentType",
+ "enumerants" : [
+ {
+ "enumerant" : "Float16NV",
+ "value" : 0,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Float32NV",
+ "value" : 1,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "Float64NV",
+ "value" : 2,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SignedInt8NV",
+ "value" : 3,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SignedInt16NV",
+ "value" : 4,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SignedInt32NV",
+ "value" : 5,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SignedInt64NV",
+ "value" : 6,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "UnsignedInt8NV",
+ "value" : 7,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "UnsignedInt16NV",
+ "value" : 8,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "UnsignedInt32NV",
+ "value" : 9,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "UnsignedInt64NV",
+ "value" : 10,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "SignedInt8PackedNV",
+ "value" : 1000491000,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "UnsignedInt8PackedNV",
+ "value" : 1000491001,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "FloatE4M3NV",
+ "value" : 1000491002,
+ "version" : "None"
+ },
+ {
+ "enumerant" : "FloatE5M2NV",
+ "value" : 1000491003,
+ "version" : "None"
+ }
+ ]
+ },
{
"category" : "Id",
"kind" : "IdResultType",
diff --git a/renderdoc/driver/shaders/spirv/spirv_debug.cpp b/renderdoc/driver/shaders/spirv/spirv_debug.cpp
index 06ce712c6..65b7ae143 100644
--- a/renderdoc/driver/shaders/spirv/spirv_debug.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_debug.cpp
@@ -3859,7 +3859,7 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
SetDst(opdata.result, result);
break;
}
- case Op::DemoteToHelperInvocationEXT:
+ case Op::DemoteToHelperInvocation:
{
helperInvocation = true;
break;
@@ -4387,12 +4387,12 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
}
// KHR_integer_dotproduct
- case Op::SDotKHR:
- case Op::UDotKHR:
- case Op::SUDotKHR:
- case Op::SDotAccSatKHR:
- case Op::UDotAccSatKHR:
- case Op::SUDotAccSatKHR:
+ case Op::SDot:
+ case Op::UDot:
+ case Op::SUDot:
+ case Op::SDotAccSat:
+ case Op::UDotAccSat:
+ case Op::SUDotAccSat:
// legacy/OpenCL/AMD group operations
case Op::GroupAll:
@@ -4602,9 +4602,9 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
case Op::ImageBlockMatchWindowSADQCOM:
case Op::ImageBlockMatchGatherSSDQCOM:
case Op::ImageBlockMatchGatherSADQCOM:
- case Op::FinalizeNodePayloadsAMDX:
+ case Op::AllocateNodePayloadsAMDX:
case Op::FinishWritingNodePayloadAMDX:
- case Op::InitializeNodePayloadsAMDX:
+ case Op::NodePayloadArrayLengthAMDX:
case Op::FetchMicroTriangleVertexBarycentricNV:
case Op::FetchMicroTriangleVertexPositionNV:
case Op::CompositeConstructContinuedINTEL:
@@ -4679,6 +4679,20 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
case Op::DecorateId:
case Op::ModuleProcessed:
case Op::ExecutionModeId:
+ case Op::TypeUntypedPointerKHR:
+ case Op::UntypedVariableKHR:
+ case Op::UntypedAccessChainKHR:
+ case Op::UntypedInBoundsAccessChainKHR:
+ case Op::UntypedInBoundsPtrAccessChainKHR:
+ case Op::UntypedPtrAccessChainKHR:
+ case Op::UntypedArrayLengthKHR:
+ case Op::UntypedPrefetchKHR:
+ case Op::TypeNodePayloadArrayAMDX:
+ case Op::ConstantStringAMDX:
+ case Op::SpecConstantStringAMDX:
+ case Op::TypeCooperativeVectorNV:
+ case Op::TypeTensorLayoutNV:
+ case Op::TypeTensorViewNV:
{
RDCERR("Encountered unexpected global SPIR-V operation %s", ToStr(opdata.op).c_str());
break;
@@ -4749,6 +4763,53 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray
case Op::WritePipeBlockingINTEL:
case Op::ControlBarrierArriveINTEL:
case Op::ControlBarrierWaitINTEL:
+ case Op::ArithmeticFenceEXT:
+ case Op::SubgroupMatrixMultiplyAccumulateINTEL:
+ case Op::EnqueueNodePayloadsAMDX:
+ case Op::IsNodePayloadValidAMDX:
+ case Op::SubgroupBlockPrefetchINTEL:
+ case Op::Subgroup2DBlockLoadINTEL:
+ case Op::Subgroup2DBlockLoadTransformINTEL:
+ case Op::Subgroup2DBlockLoadTransposeINTEL:
+ case Op::Subgroup2DBlockPrefetchINTEL:
+ case Op::Subgroup2DBlockStoreINTEL:
+ case Op::CreateTensorLayoutNV:
+ case Op::CreateTensorViewNV:
+ case Op::TensorViewSetClipNV:
+ case Op::TensorViewSetDimensionNV:
+ case Op::TensorViewSetStrideNV:
+ case Op::TensorLayoutSetDimensionNV:
+ case Op::TensorLayoutSetBlockSizeNV:
+ case Op::TensorLayoutSetClampValueNV:
+ case Op::TensorLayoutSetStrideNV:
+ case Op::TensorLayoutSliceNV:
+ case Op::RayQueryGetClusterIdNV:
+ case Op::RayQueryIsSphereHitNV:
+ case Op::RayQueryIsLSSHitNV:
+ case Op::RayQueryGetIntersectionLSSHitValueNV:
+ case Op::RayQueryGetIntersectionLSSPositionsNV:
+ case Op::RayQueryGetIntersectionLSSRadiiNV:
+ case Op::RayQueryGetIntersectionSpherePositionNV:
+ case Op::RayQueryGetIntersectionSphereRadiusNV:
+ case Op::HitObjectIsLSSHitNV:
+ case Op::HitObjectIsSphereHitNV:
+ case Op::HitObjectGetLSSPositionsNV:
+ case Op::HitObjectGetLSSRadiiNV:
+ case Op::HitObjectGetSpherePositionNV:
+ case Op::HitObjectGetSphereRadiusNV:
+ case Op::HitObjectGetClusterIdNV:
+ case Op::CooperativeMatrixConvertNV:
+ case Op::CooperativeMatrixReduceNV:
+ case Op::CooperativeMatrixLoadTensorNV:
+ case Op::CooperativeMatrixStoreTensorNV:
+ case Op::CooperativeMatrixPerElementOpNV:
+ case Op::CooperativeMatrixTransposeNV:
+ case Op::CooperativeVectorLoadNV:
+ case Op::CooperativeVectorStoreNV:
+ case Op::CooperativeVectorMatrixMulAddNV:
+ case Op::CooperativeVectorMatrixMulNV:
+ case Op::CooperativeVectorOuterProductAccumulateNV:
+ case Op::CooperativeVectorReduceSumAccumulateNV:
{
// these are kernel only
RDCERR("Encountered unexpected kernel SPIR-V operation %s", ToStr(opdata.op).c_str());
diff --git a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
index 1ef74a7a0..35027cd49 100644
--- a/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_debug_setup.cpp
@@ -575,7 +575,7 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::StorageTexelBufferArrayNonUniformIndexing:
case Capability::VulkanMemoryModel:
case Capability::VulkanMemoryModelDeviceScope:
- case Capability::DemoteToHelperInvocationEXT:
+ case Capability::DemoteToHelperInvocation:
case Capability::AtomicFloat32AddEXT:
case Capability::AtomicFloat32MinMaxEXT:
case Capability::AtomicFloat16AddEXT:
@@ -672,10 +672,10 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
}
// integer dot product
- case Capability::DotProductKHR:
- case Capability::DotProductInput4x8BitKHR:
- case Capability::DotProductInput4x8BitPackedKHR:
- case Capability::DotProductInputAllKHR:
+ case Capability::DotProduct:
+ case Capability::DotProductInput4x8Bit:
+ case Capability::DotProductInput4x8BitPacked:
+ case Capability::DotProductInputAll:
{
supported = false;
break;
@@ -696,6 +696,28 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
break;
}
+ // barycentric
+ case Capability::FragmentBarycentricKHR:
+ {
+ supported = false;
+ break;
+ }
+
+ // compute shader derivatives
+ case Capability::ComputeDerivativeGroupQuadsKHR:
+ case Capability::ComputeDerivativeGroupLinearKHR:
+ {
+ supported = false;
+ break;
+ }
+
+ // untyped pointers
+ case Capability::UntypedPointersKHR:
+ {
+ supported = false;
+ break;
+ }
+
// no plans to support these - mostly Kernel/OpenCL related or vendor extensions
case Capability::Addresses:
case Capability::Linkage:
@@ -722,11 +744,8 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::ShaderStereoViewNV:
case Capability::PerViewAttributesNV:
case Capability::MeshShadingNV:
- case Capability::FragmentBarycentricNV:
case Capability::ImageFootprintNV:
- case Capability::ComputeDerivativeGroupQuadsNV:
case Capability::GroupNonUniformPartitionedNV:
- case Capability::ComputeDerivativeGroupLinearNV:
case Capability::CooperativeMatrixNV:
case Capability::ShaderSMBuiltinsNV:
case Capability::SubgroupShuffleINTEL:
@@ -746,7 +765,6 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::UnstructuredLoopControlsINTEL:
case Capability::KernelAttributesINTEL:
case Capability::BlockingPipesINTEL:
- case Capability::OptNoneINTEL:
case Capability::RayTracingMotionBlurNV:
case Capability::RoundToInfinityINTEL:
case Capability::FloatingPointModeINTEL:
@@ -792,6 +810,13 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::AtomicFloat16VectorNV:
case Capability::RayTracingDisplacementMicromapNV:
case Capability::CooperativeMatrixKHR:
+ case Capability::CooperativeVectorNV:
+ case Capability::CooperativeVectorTrainingNV:
+ case Capability::CooperativeMatrixReductionsNV:
+ case Capability::CooperativeMatrixConversionsNV:
+ case Capability::CooperativeMatrixPerElementOperationsNV:
+ case Capability::CooperativeMatrixTensorAddressingNV:
+ case Capability::CooperativeMatrixBlockLoadsNV:
case Capability::FloatControls2:
case Capability::FPGAClusterAttributesV2INTEL:
case Capability::FPMaxErrorINTEL:
@@ -800,9 +825,20 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::CacheControlsINTEL:
case Capability::RegisterLimitsINTEL:
case Capability::GlobalVariableHostAccessINTEL:
+ case Capability::SubgroupBufferPrefetchINTEL:
+ case Capability::Subgroup2DBlockIOINTEL:
+ case Capability::Subgroup2DBlockTransformINTEL:
+ case Capability::Subgroup2DBlockTransposeINTEL:
+ case Capability::SubgroupMatrixMultiplyAccumulateINTEL:
case Capability::CooperativeMatrixLayoutsARM:
case Capability::RawAccessChainsNV:
case Capability::ReplicatedCompositesEXT:
+ case Capability::RayTracingSpheresGeometryNV:
+ case Capability::RayTracingLinearSweptSpheresGeometryNV:
+ case Capability::RayTracingClusterAccelerationStructureNV:
+ case Capability::TensorAddressingNV:
+ case Capability::OptNoneEXT:
+ case Capability::ArithmeticFenceEXT:
case Capability::Max:
case Capability::Invalid:
{
@@ -3598,8 +3634,7 @@ uint32_t Debugger::WalkVariable(
}
case DataType::PointerType:
{
- RDCASSERT((dataTypes[type.id].pointerType.storage == StorageClass::PhysicalStorageBuffer) ||
- (dataTypes[type.id].pointerType.storage == StorageClass::PhysicalStorageBufferEXT));
+ RDCASSERT(dataTypes[type.id].pointerType.storage == StorageClass::PhysicalStorageBuffer);
if(outVar)
{
outVar->type = VarType::GPUPointer;
diff --git a/renderdoc/driver/shaders/spirv/spirv_gen.cpp b/renderdoc/driver/shaders/spirv/spirv_gen.cpp
index 8cd9cdf19..579889ebd 100644
--- a/renderdoc/driver/shaders/spirv/spirv_gen.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_gen.cpp
@@ -162,7 +162,7 @@ rdcstr DoStringise(const rdcspv::FunctionControl &el)
STRINGISE_BITFIELD_CLASS_BIT(DontInline);
STRINGISE_BITFIELD_CLASS_BIT(Pure);
STRINGISE_BITFIELD_CLASS_BIT(Const);
- STRINGISE_BITFIELD_CLASS_BIT(OptNoneINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(OptNoneEXT);
}
END_BITFIELD_STRINGISE();
}
@@ -288,6 +288,7 @@ rdcstr DoStringise(const rdcspv::SourceLanguage &el)
STRINGISE_ENUM_CLASS(WGSL);
STRINGISE_ENUM_CLASS(Slang);
STRINGISE_ENUM_CLASS(Zig);
+ STRINGISE_ENUM_CLASS(Rust);
}
END_ENUM_STRINGISE();
}
@@ -398,6 +399,7 @@ rdcstr DoStringise(const rdcspv::ExecutionMode &el)
STRINGISE_ENUM_CLASS(EarlyAndLateFragmentTestsAMD);
STRINGISE_ENUM_CLASS(StencilRefReplacingEXT);
STRINGISE_ENUM_CLASS(CoalescingAMDX);
+ STRINGISE_ENUM_CLASS(IsApiEntryAMDX);
STRINGISE_ENUM_CLASS(MaxNodeRecursionAMDX);
STRINGISE_ENUM_CLASS(StaticNumWorkgroupsAMDX);
STRINGISE_ENUM_CLASS(ShaderIndexAMDX);
@@ -410,10 +412,11 @@ rdcstr DoStringise(const rdcspv::ExecutionMode &el)
STRINGISE_ENUM_CLASS(StencilRefLessBackAMD);
STRINGISE_ENUM_CLASS(QuadDerivativesKHR);
STRINGISE_ENUM_CLASS(RequireFullQuadsKHR);
+ STRINGISE_ENUM_CLASS(SharesInputWithAMDX);
STRINGISE_ENUM_CLASS(OutputLinesEXT);
STRINGISE_ENUM_CLASS(OutputPrimitivesEXT);
- STRINGISE_ENUM_CLASS(DerivativeGroupQuadsNV);
- STRINGISE_ENUM_CLASS(DerivativeGroupLinearNV);
+ STRINGISE_ENUM_CLASS(DerivativeGroupQuadsKHR);
+ STRINGISE_ENUM_CLASS(DerivativeGroupLinearKHR);
STRINGISE_ENUM_CLASS(OutputTrianglesEXT);
STRINGISE_ENUM_CLASS(PixelInterlockOrderedEXT);
STRINGISE_ENUM_CLASS(PixelInterlockUnorderedEXT);
@@ -463,7 +466,6 @@ rdcstr DoStringise(const rdcspv::StorageClass &el)
STRINGISE_ENUM_CLASS(StorageBuffer);
STRINGISE_ENUM_CLASS(TileImageEXT);
STRINGISE_ENUM_CLASS(NodePayloadAMDX);
- STRINGISE_ENUM_CLASS(NodeOutputPayloadAMDX);
STRINGISE_ENUM_CLASS(CallableDataKHR);
STRINGISE_ENUM_CLASS(IncomingCallableDataKHR);
STRINGISE_ENUM_CLASS(RayPayloadKHR);
@@ -626,6 +628,7 @@ rdcstr DoStringise(const rdcspv::ImageChannelDataType &el)
STRINGISE_ENUM_CLASS(UnormInt101010_2);
STRINGISE_ENUM_CLASS(UnsignedIntRaw10EXT);
STRINGISE_ENUM_CLASS(UnsignedIntRaw12EXT);
+ STRINGISE_ENUM_CLASS(UnormInt2_101010EXT);
}
END_ENUM_STRINGISE();
}
@@ -812,6 +815,10 @@ rdcstr DoStringise(const rdcspv::Decoration &el)
STRINGISE_ENUM_CLASS(NodeMaxPayloadsAMDX);
STRINGISE_ENUM_CLASS(TrackFinishWritingAMDX);
STRINGISE_ENUM_CLASS(PayloadNodeNameAMDX);
+ STRINGISE_ENUM_CLASS(PayloadNodeBaseIndexAMDX);
+ STRINGISE_ENUM_CLASS(PayloadNodeSparseArrayAMDX);
+ STRINGISE_ENUM_CLASS(PayloadNodeArraySizeAMDX);
+ STRINGISE_ENUM_CLASS(PayloadDispatchIndirectAMDX);
STRINGISE_ENUM_CLASS(OverrideCoverageNV);
STRINGISE_ENUM_CLASS(PassthroughNV);
STRINGISE_ENUM_CLASS(ViewportRelativeNV);
@@ -967,7 +974,7 @@ rdcstr DoStringise(const rdcspv::BuiltIn &el)
STRINGISE_ENUM_CLASS(BaryCoordSmoothSampleAMD);
STRINGISE_ENUM_CLASS(BaryCoordPullModelAMD);
STRINGISE_ENUM_CLASS(FragStencilRefEXT);
- STRINGISE_ENUM_CLASS(CoalescedInputCountAMDX);
+ STRINGISE_ENUM_CLASS(RemainingRecursionLevelsAMDX);
STRINGISE_ENUM_CLASS(ShaderIndexAMDX);
STRINGISE_ENUM_CLASS(ViewportMaskNV);
STRINGISE_ENUM_CLASS(SecondaryPositionNV);
@@ -1010,12 +1017,19 @@ rdcstr DoStringise(const rdcspv::BuiltIn &el)
STRINGISE_ENUM_CLASS(HitMicroTriangleVertexBarycentricsNV);
STRINGISE_ENUM_CLASS(IncomingRayFlagsKHR);
STRINGISE_ENUM_CLASS(RayGeometryIndexKHR);
+ STRINGISE_ENUM_CLASS(HitIsSphereNV);
+ STRINGISE_ENUM_CLASS(HitIsLSSNV);
+ STRINGISE_ENUM_CLASS(HitSpherePositionNV);
STRINGISE_ENUM_CLASS(WarpsPerSMNV);
STRINGISE_ENUM_CLASS(SMCountNV);
STRINGISE_ENUM_CLASS(WarpIDNV);
STRINGISE_ENUM_CLASS(SMIDNV);
+ STRINGISE_ENUM_CLASS(HitLSSPositionsNV);
STRINGISE_ENUM_CLASS(HitKindFrontFacingMicroTriangleNV);
STRINGISE_ENUM_CLASS(HitKindBackFacingMicroTriangleNV);
+ STRINGISE_ENUM_CLASS(HitSphereRadiusNV);
+ STRINGISE_ENUM_CLASS(HitLSSRadiiNV);
+ STRINGISE_ENUM_CLASS(ClusterIDNV);
STRINGISE_ENUM_CLASS(CullMaskKHR);
}
END_ENUM_STRINGISE();
@@ -1172,6 +1186,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(RoundingModeRTZ);
STRINGISE_ENUM_CLASS(RayQueryProvisionalKHR);
STRINGISE_ENUM_CLASS(RayQueryKHR);
+ STRINGISE_ENUM_CLASS(UntypedPointersKHR);
STRINGISE_ENUM_CLASS(RayTraversalPrimitiveCullingKHR);
STRINGISE_ENUM_CLASS(RayTracingKHR);
STRINGISE_ENUM_CLASS(TextureSampleWeightedQCOM);
@@ -1197,7 +1212,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(ImageFootprintNV);
STRINGISE_ENUM_CLASS(MeshShadingEXT);
STRINGISE_ENUM_CLASS(FragmentBarycentricKHR);
- STRINGISE_ENUM_CLASS(ComputeDerivativeGroupQuadsNV);
+ STRINGISE_ENUM_CLASS(ComputeDerivativeGroupQuadsKHR);
STRINGISE_ENUM_CLASS(FragmentDensityEXT);
STRINGISE_ENUM_CLASS(GroupNonUniformPartitionedNV);
STRINGISE_ENUM_CLASS(ShaderNonUniform);
@@ -1217,7 +1232,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(VulkanMemoryModel);
STRINGISE_ENUM_CLASS(VulkanMemoryModelDeviceScope);
STRINGISE_ENUM_CLASS(PhysicalStorageBufferAddresses);
- STRINGISE_ENUM_CLASS(ComputeDerivativeGroupLinearNV);
+ STRINGISE_ENUM_CLASS(ComputeDerivativeGroupLinearKHR);
STRINGISE_ENUM_CLASS(RayTracingProvisionalKHR);
STRINGISE_ENUM_CLASS(FragmentShaderSampleInterlockEXT);
STRINGISE_ENUM_CLASS(FragmentShaderShadingRateInterlockEXT);
@@ -1229,9 +1244,20 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(ShaderInvocationReorderNV);
STRINGISE_ENUM_CLASS(BindlessTextureNV);
STRINGISE_ENUM_CLASS(RayQueryPositionFetchKHR);
+ STRINGISE_ENUM_CLASS(CooperativeVectorNV);
STRINGISE_ENUM_CLASS(AtomicFloat16VectorNV);
STRINGISE_ENUM_CLASS(RayTracingDisplacementMicromapNV);
STRINGISE_ENUM_CLASS(RawAccessChainsNV);
+ STRINGISE_ENUM_CLASS(RayTracingSpheresGeometryNV);
+ STRINGISE_ENUM_CLASS(RayTracingLinearSweptSpheresGeometryNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixReductionsNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixConversionsNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixPerElementOperationsNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixTensorAddressingNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixBlockLoadsNV);
+ STRINGISE_ENUM_CLASS(CooperativeVectorTrainingNV);
+ STRINGISE_ENUM_CLASS(RayTracingClusterAccelerationStructureNV);
+ STRINGISE_ENUM_CLASS(TensorAddressingNV);
STRINGISE_ENUM_CLASS(SubgroupShuffleINTEL);
STRINGISE_ENUM_CLASS(SubgroupBufferBlockIOINTEL);
STRINGISE_ENUM_CLASS(SubgroupImageBlockIOINTEL);
@@ -1287,11 +1313,12 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(AtomicFloat32AddEXT);
STRINGISE_ENUM_CLASS(AtomicFloat64AddEXT);
STRINGISE_ENUM_CLASS(LongCompositesINTEL);
- STRINGISE_ENUM_CLASS(OptNoneINTEL);
+ STRINGISE_ENUM_CLASS(OptNoneEXT);
STRINGISE_ENUM_CLASS(AtomicFloat16AddEXT);
STRINGISE_ENUM_CLASS(DebugInfoModuleINTEL);
STRINGISE_ENUM_CLASS(BFloat16ConversionINTEL);
STRINGISE_ENUM_CLASS(SplitBarrierINTEL);
+ STRINGISE_ENUM_CLASS(ArithmeticFenceEXT);
STRINGISE_ENUM_CLASS(FPGAClusterAttributesV2INTEL);
STRINGISE_ENUM_CLASS(FPGAKernelAttributesv2INTEL);
STRINGISE_ENUM_CLASS(FPMaxErrorINTEL);
@@ -1299,6 +1326,11 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(FPGAArgumentInterfacesINTEL);
STRINGISE_ENUM_CLASS(GlobalVariableHostAccessINTEL);
STRINGISE_ENUM_CLASS(GlobalVariableFPGADecorationsINTEL);
+ STRINGISE_ENUM_CLASS(SubgroupBufferPrefetchINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockIOINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockTransformINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockTransposeINTEL);
+ STRINGISE_ENUM_CLASS(SubgroupMatrixMultiplyAccumulateINTEL);
STRINGISE_ENUM_CLASS(GroupUniformArithmeticKHR);
STRINGISE_ENUM_CLASS(MaskedGatherScatterINTEL);
STRINGISE_ENUM_CLASS(CacheControlsINTEL);
@@ -1392,6 +1424,45 @@ rdcstr DoStringise(const rdcspv::CooperativeMatrixUse &el)
END_ENUM_STRINGISE();
}
+template <>
+rdcstr DoStringise(const rdcspv::CooperativeMatrixReduce &el)
+{
+ BEGIN_BITFIELD_STRINGISE(rdcspv::CooperativeMatrixReduce);
+ {
+ STRINGISE_BITFIELD_CLASS_BIT(Row);
+ STRINGISE_BITFIELD_CLASS_BIT(Column);
+ STRINGISE_BITFIELD_CLASS_BIT(_2x2);
+ }
+ END_BITFIELD_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::TensorClampMode &el)
+{
+ BEGIN_ENUM_STRINGISE(rdcspv::TensorClampMode);
+ {
+ STRINGISE_ENUM_CLASS(Undefined);
+ STRINGISE_ENUM_CLASS(Constant);
+ STRINGISE_ENUM_CLASS(ClampToEdge);
+ STRINGISE_ENUM_CLASS(Repeat);
+ STRINGISE_ENUM_CLASS(RepeatMirrored);
+ }
+ END_ENUM_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::TensorAddressingOperands &el)
+{
+ BEGIN_BITFIELD_STRINGISE(rdcspv::TensorAddressingOperands);
+ {
+ STRINGISE_BITFIELD_CLASS_VALUE(None);
+
+ STRINGISE_BITFIELD_CLASS_BIT(TensorView);
+ STRINGISE_BITFIELD_CLASS_BIT(DecodeFunc);
+ }
+ END_BITFIELD_STRINGISE();
+}
+
template <>
rdcstr DoStringise(const rdcspv::InitializationModeQualifier &el)
{
@@ -1440,6 +1511,71 @@ rdcstr DoStringise(const rdcspv::NamedMaximumNumberOfRegisters &el)
END_ENUM_STRINGISE();
}
+template <>
+rdcstr DoStringise(const rdcspv::MatrixMultiplyAccumulateOperands &el)
+{
+ BEGIN_BITFIELD_STRINGISE(rdcspv::MatrixMultiplyAccumulateOperands);
+ {
+ STRINGISE_BITFIELD_CLASS_VALUE(None);
+
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixASignedComponentsINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixBSignedComponentsINTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixCBFloat16INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixResultBFloat16INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixAPackedInt8INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixBPackedInt8INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixAPackedInt4INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixBPackedInt4INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixATF32INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixBTF32INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixAPackedFloat16INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixBPackedFloat16INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixAPackedBFloat16INTEL);
+ STRINGISE_BITFIELD_CLASS_BIT(MatrixBPackedBFloat16INTEL);
+ }
+ END_BITFIELD_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::FPEncoding &el) { return "?"; }
+
+template <>
+rdcstr DoStringise(const rdcspv::CooperativeVectorMatrixLayout &el)
+{
+ BEGIN_ENUM_STRINGISE(rdcspv::CooperativeVectorMatrixLayout);
+ {
+ STRINGISE_ENUM_CLASS(RowMajorNV);
+ STRINGISE_ENUM_CLASS(ColumnMajorNV);
+ STRINGISE_ENUM_CLASS(InferencingOptimalNV);
+ STRINGISE_ENUM_CLASS(TrainingOptimalNV);
+ }
+ END_ENUM_STRINGISE();
+}
+
+template <>
+rdcstr DoStringise(const rdcspv::ComponentType &el)
+{
+ BEGIN_ENUM_STRINGISE(rdcspv::ComponentType);
+ {
+ STRINGISE_ENUM_CLASS(Float16NV);
+ STRINGISE_ENUM_CLASS(Float32NV);
+ STRINGISE_ENUM_CLASS(Float64NV);
+ STRINGISE_ENUM_CLASS(SignedInt8NV);
+ STRINGISE_ENUM_CLASS(SignedInt16NV);
+ STRINGISE_ENUM_CLASS(SignedInt32NV);
+ STRINGISE_ENUM_CLASS(SignedInt64NV);
+ STRINGISE_ENUM_CLASS(UnsignedInt8NV);
+ STRINGISE_ENUM_CLASS(UnsignedInt16NV);
+ STRINGISE_ENUM_CLASS(UnsignedInt32NV);
+ STRINGISE_ENUM_CLASS(UnsignedInt64NV);
+ STRINGISE_ENUM_CLASS(SignedInt8PackedNV);
+ STRINGISE_ENUM_CLASS(UnsignedInt8PackedNV);
+ STRINGISE_ENUM_CLASS(FloatE4M3NV);
+ STRINGISE_ENUM_CLASS(FloatE5M2NV);
+ }
+ END_ENUM_STRINGISE();
+}
+
template <>
rdcstr DoStringise(const rdcspv::Op &el)
{
@@ -1793,8 +1929,16 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(DepthAttachmentReadEXT);
STRINGISE_ENUM_CLASS(StencilAttachmentReadEXT);
STRINGISE_ENUM_CLASS(TerminateInvocation);
+ STRINGISE_ENUM_CLASS(TypeUntypedPointerKHR);
+ STRINGISE_ENUM_CLASS(UntypedVariableKHR);
+ STRINGISE_ENUM_CLASS(UntypedAccessChainKHR);
+ STRINGISE_ENUM_CLASS(UntypedInBoundsAccessChainKHR);
STRINGISE_ENUM_CLASS(SubgroupBallotKHR);
STRINGISE_ENUM_CLASS(SubgroupFirstInvocationKHR);
+ STRINGISE_ENUM_CLASS(UntypedPtrAccessChainKHR);
+ STRINGISE_ENUM_CLASS(UntypedInBoundsPtrAccessChainKHR);
+ STRINGISE_ENUM_CLASS(UntypedArrayLengthKHR);
+ STRINGISE_ENUM_CLASS(UntypedPrefetchKHR);
STRINGISE_ENUM_CLASS(SubgroupAllKHR);
STRINGISE_ENUM_CLASS(SubgroupAnyKHR);
STRINGISE_ENUM_CLASS(SubgroupAllEqualKHR);
@@ -1846,9 +1990,14 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(FragmentMaskFetchAMD);
STRINGISE_ENUM_CLASS(FragmentFetchAMD);
STRINGISE_ENUM_CLASS(ReadClockKHR);
- STRINGISE_ENUM_CLASS(FinalizeNodePayloadsAMDX);
+ STRINGISE_ENUM_CLASS(AllocateNodePayloadsAMDX);
+ STRINGISE_ENUM_CLASS(EnqueueNodePayloadsAMDX);
+ STRINGISE_ENUM_CLASS(TypeNodePayloadArrayAMDX);
STRINGISE_ENUM_CLASS(FinishWritingNodePayloadAMDX);
- STRINGISE_ENUM_CLASS(InitializeNodePayloadsAMDX);
+ STRINGISE_ENUM_CLASS(NodePayloadArrayLengthAMDX);
+ STRINGISE_ENUM_CLASS(IsNodePayloadValidAMDX);
+ STRINGISE_ENUM_CLASS(ConstantStringAMDX);
+ STRINGISE_ENUM_CLASS(SpecConstantStringAMDX);
STRINGISE_ENUM_CLASS(GroupNonUniformQuadAllKHR);
STRINGISE_ENUM_CLASS(GroupNonUniformQuadAnyKHR);
STRINGISE_ENUM_CLASS(HitObjectRecordHitMotionNV);
@@ -1885,12 +2034,20 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(ReorderThreadWithHintNV);
STRINGISE_ENUM_CLASS(TypeHitObjectNV);
STRINGISE_ENUM_CLASS(ImageSampleFootprintNV);
+ STRINGISE_ENUM_CLASS(TypeCooperativeVectorNV);
+ STRINGISE_ENUM_CLASS(CooperativeVectorMatrixMulNV);
+ STRINGISE_ENUM_CLASS(CooperativeVectorOuterProductAccumulateNV);
+ STRINGISE_ENUM_CLASS(CooperativeVectorReduceSumAccumulateNV);
+ STRINGISE_ENUM_CLASS(CooperativeVectorMatrixMulAddNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixConvertNV);
STRINGISE_ENUM_CLASS(EmitMeshTasksEXT);
STRINGISE_ENUM_CLASS(SetMeshOutputsEXT);
STRINGISE_ENUM_CLASS(GroupNonUniformPartitionNV);
STRINGISE_ENUM_CLASS(WritePackedPrimitiveIndices4x8NV);
STRINGISE_ENUM_CLASS(FetchMicroTriangleVertexPositionNV);
STRINGISE_ENUM_CLASS(FetchMicroTriangleVertexBarycentricNV);
+ STRINGISE_ENUM_CLASS(CooperativeVectorLoadNV);
+ STRINGISE_ENUM_CLASS(CooperativeVectorStoreNV);
STRINGISE_ENUM_CLASS(ReportIntersectionKHR);
STRINGISE_ENUM_CLASS(IgnoreIntersectionNV);
STRINGISE_ENUM_CLASS(TerminateRayNV);
@@ -1900,6 +2057,8 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(RayQueryGetIntersectionTriangleVertexPositionsKHR);
STRINGISE_ENUM_CLASS(TypeAccelerationStructureKHR);
STRINGISE_ENUM_CLASS(ExecuteCallableNV);
+ STRINGISE_ENUM_CLASS(RayQueryGetClusterIdNV);
+ STRINGISE_ENUM_CLASS(HitObjectGetClusterIdNV);
STRINGISE_ENUM_CLASS(TypeCooperativeMatrixNV);
STRINGISE_ENUM_CLASS(CooperativeMatrixLoadNV);
STRINGISE_ENUM_CLASS(CooperativeMatrixStoreNV);
@@ -1907,8 +2066,25 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(CooperativeMatrixLengthNV);
STRINGISE_ENUM_CLASS(BeginInvocationInterlockEXT);
STRINGISE_ENUM_CLASS(EndInvocationInterlockEXT);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixReduceNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixLoadTensorNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixStoreTensorNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixPerElementOpNV);
+ STRINGISE_ENUM_CLASS(TypeTensorLayoutNV);
+ STRINGISE_ENUM_CLASS(TypeTensorViewNV);
+ STRINGISE_ENUM_CLASS(CreateTensorLayoutNV);
+ STRINGISE_ENUM_CLASS(TensorLayoutSetDimensionNV);
+ STRINGISE_ENUM_CLASS(TensorLayoutSetStrideNV);
+ STRINGISE_ENUM_CLASS(TensorLayoutSliceNV);
+ STRINGISE_ENUM_CLASS(TensorLayoutSetClampValueNV);
+ STRINGISE_ENUM_CLASS(CreateTensorViewNV);
+ STRINGISE_ENUM_CLASS(TensorViewSetDimensionNV);
+ STRINGISE_ENUM_CLASS(TensorViewSetStrideNV);
STRINGISE_ENUM_CLASS(DemoteToHelperInvocation);
STRINGISE_ENUM_CLASS(IsHelperInvocationEXT);
+ STRINGISE_ENUM_CLASS(TensorViewSetClipNV);
+ STRINGISE_ENUM_CLASS(TensorLayoutSetBlockSizeNV);
+ STRINGISE_ENUM_CLASS(CooperativeMatrixTransposeNV);
STRINGISE_ENUM_CLASS(ConvertUToImageNV);
STRINGISE_ENUM_CLASS(ConvertUToSamplerNV);
STRINGISE_ENUM_CLASS(ConvertImageToUNV);
@@ -1917,6 +2093,19 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(ConvertSampledImageToUNV);
STRINGISE_ENUM_CLASS(SamplerImageAddressingModeNV);
STRINGISE_ENUM_CLASS(RawAccessChainNV);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionSpherePositionNV);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionSphereRadiusNV);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionLSSPositionsNV);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionLSSRadiiNV);
+ STRINGISE_ENUM_CLASS(RayQueryGetIntersectionLSSHitValueNV);
+ STRINGISE_ENUM_CLASS(HitObjectGetSpherePositionNV);
+ STRINGISE_ENUM_CLASS(HitObjectGetSphereRadiusNV);
+ STRINGISE_ENUM_CLASS(HitObjectGetLSSPositionsNV);
+ STRINGISE_ENUM_CLASS(HitObjectGetLSSRadiiNV);
+ STRINGISE_ENUM_CLASS(HitObjectIsSphereHitNV);
+ STRINGISE_ENUM_CLASS(HitObjectIsLSSHitNV);
+ STRINGISE_ENUM_CLASS(RayQueryIsSphereHitNV);
+ STRINGISE_ENUM_CLASS(RayQueryIsLSSHitNV);
STRINGISE_ENUM_CLASS(SubgroupShuffleINTEL);
STRINGISE_ENUM_CLASS(SubgroupShuffleDownINTEL);
STRINGISE_ENUM_CLASS(SubgroupShuffleUpINTEL);
@@ -1978,6 +2167,14 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(ConvertBF16ToFINTEL);
STRINGISE_ENUM_CLASS(ControlBarrierArriveINTEL);
STRINGISE_ENUM_CLASS(ControlBarrierWaitINTEL);
+ STRINGISE_ENUM_CLASS(ArithmeticFenceEXT);
+ STRINGISE_ENUM_CLASS(SubgroupBlockPrefetchINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockLoadINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockLoadTransformINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockLoadTransposeINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockPrefetchINTEL);
+ STRINGISE_ENUM_CLASS(Subgroup2DBlockStoreINTEL);
+ STRINGISE_ENUM_CLASS(SubgroupMatrixMultiplyAccumulateINTEL);
STRINGISE_ENUM_CLASS(GroupIMulKHR);
STRINGISE_ENUM_CLASS(GroupFMulKHR);
STRINGISE_ENUM_CLASS(GroupBitwiseAndKHR);
@@ -2187,6 +2384,8 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
ret += "(" + ToStr(el.roundingModeRTE) + ")"; break;
case ExecutionMode::RoundingModeRTZ:
ret += "(" + ToStr(el.roundingModeRTZ) + ")"; break;
+ case ExecutionMode::IsApiEntryAMDX:
+ ret += "(" + idName(el.isApiEntryAMDX) + ")"; break;
case ExecutionMode::MaxNodeRecursionAMDX:
ret += "(" + idName(el.maxNodeRecursionAMDX) + ")"; break;
case ExecutionMode::StaticNumWorkgroupsAMDX:
@@ -2195,6 +2394,8 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
ret += "(" + idName(el.shaderIndexAMDX) + ")"; break;
case ExecutionMode::MaxNumWorkgroupsAMDX:
ret += "(" + idName(el.maxNumWorkgroupsAMDX.xsize) + ", " + idName(el.maxNumWorkgroupsAMDX.ysize) + ", " + idName(el.maxNumWorkgroupsAMDX.zsize) + ")"; break;
+ case ExecutionMode::SharesInputWithAMDX:
+ ret += "(" + idName(el.sharesInputWithAMDX.nodeName) + ", " + idName(el.sharesInputWithAMDX.shaderIndex) + ")"; break;
case ExecutionMode::OutputPrimitivesEXT:
ret += "(" + ToStr(el.outputPrimitivesEXT) + ")"; break;
case ExecutionMode::SharedLocalMemorySizeINTEL:
@@ -2291,6 +2492,12 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
ret += "(" + idName(el.nodeSharesPayloadLimitsWithAMDX) + ")"; break;
case Decoration::NodeMaxPayloadsAMDX:
ret += "(" + idName(el.nodeMaxPayloadsAMDX) + ")"; break;
+ case Decoration::PayloadNodeNameAMDX:
+ ret += "(" + idName(el.payloadNodeNameAMDX) + ")"; break;
+ case Decoration::PayloadNodeBaseIndexAMDX:
+ ret += "(" + idName(el.payloadNodeBaseIndexAMDX) + ")"; break;
+ case Decoration::PayloadNodeArraySizeAMDX:
+ ret += "(" + idName(el.payloadNodeArraySizeAMDX) + ")"; break;
case Decoration::SecondaryViewportRelativeNV:
ret += "(" + ToStr(el.secondaryViewportRelativeNV) + ")"; break;
case Decoration::SIMTCallINTEL:
@@ -2376,6 +2583,25 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
return ret;
}
+template<>
+rdcstr ParamToStr(const std::function &idName, const rdcspv::TensorAddressingOperandsAndParamDatas &el)
+{
+ rdcstr ret;
+
+ if(el.flags & TensorAddressingOperands::None)
+ ret += "None" ", ";
+ if(el.flags & TensorAddressingOperands::TensorView)
+ ret += "TensorView" "(" + idName(el.tensorView) + ")" ", ";
+ if(el.flags & TensorAddressingOperands::DecodeFunc)
+ ret += "DecodeFunc" "(" + idName(el.decodeFunc) + ")" ", ";
+
+ // remove trailing ", "
+ if(ret.size() > 2)
+ ret.erase(ret.size()-2, 2);
+
+ return ret;
+}
+
void OpDecoder::ForEachID(const ConstIter &it, const std::function &callback)
{
if (rdcspv::ManualForEachID(it, callback))
@@ -4292,6 +4518,29 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function
inline MemoryAccessAndParamDatas DecodeParam(const ConstIter &it, uint32_t &word)
{
@@ -775,6 +773,19 @@ struct ExecutionModeParam
}
};
+template<>
+struct ExecutionModeParam
+{
+ Id isApiEntryAMDX;
+ ExecutionModeParam(Id isApiEntryAMDXParam) { isApiEntryAMDX = isApiEntryAMDXParam; }
+ operator ExecutionModeAndParamData()
+ {
+ ExecutionModeAndParamData ret(ExecutionMode::IsApiEntryAMDX);
+ ret.isApiEntryAMDX = isApiEntryAMDX;
+ return ret;
+ }
+};
+
template<>
struct ExecutionModeParam
{
@@ -831,6 +842,20 @@ struct ExecutionModeParam
}
};
+template<>
+struct ExecutionModeParam
+{
+ SharesInputWithAMDXParams sharesInputWithAMDX;
+ ExecutionModeParam(Id nodeName, Id shaderIndex) { sharesInputWithAMDX.nodeName = nodeName; sharesInputWithAMDX.shaderIndex = shaderIndex; }
+ operator ExecutionModeAndParamData()
+ {
+ ExecutionModeAndParamData ret(ExecutionMode::SharesInputWithAMDX);
+ ret.sharesInputWithAMDX.nodeName = sharesInputWithAMDX.nodeName;
+ ret.sharesInputWithAMDX.shaderIndex = sharesInputWithAMDX.shaderIndex;
+ return ret;
+ }
+};
+
template<>
struct ExecutionModeParam
{
@@ -1134,6 +1159,10 @@ inline ExecutionModeAndParamData DecodeParam(const ConstIter &it, uint32_t &word
ret.roundingModeRTZ = (uint32_t)it.word(word);
word += 1;
break;
+ case ExecutionMode::IsApiEntryAMDX:
+ ret.isApiEntryAMDX = Id::fromWord(it.word(word));
+ word += 1;
+ break;
case ExecutionMode::MaxNodeRecursionAMDX:
ret.maxNodeRecursionAMDX = Id::fromWord(it.word(word));
word += 1;
@@ -1154,6 +1183,11 @@ inline ExecutionModeAndParamData DecodeParam(const ConstIter &it, uint32_t &word
ret.maxNumWorkgroupsAMDX.zsize = Id::fromWord(it.word(word+2));
word += 3;
break;
+ case ExecutionMode::SharesInputWithAMDX:
+ ret.sharesInputWithAMDX.nodeName = Id::fromWord(it.word(word+0));
+ ret.sharesInputWithAMDX.shaderIndex = Id::fromWord(it.word(word+1));
+ word += 2;
+ break;
case ExecutionMode::OutputPrimitivesEXT:
ret.outputPrimitivesEXT = (uint32_t)it.word(word);
word += 1;
@@ -1288,6 +1322,9 @@ inline void EncodeParam(rdcarray &words, const ExecutionModeAndParamDa
case ExecutionMode::RoundingModeRTZ:
words.push_back((uint32_t)param.roundingModeRTZ);
break;
+ case ExecutionMode::IsApiEntryAMDX:
+ words.push_back(param.isApiEntryAMDX.value());
+ break;
case ExecutionMode::MaxNodeRecursionAMDX:
words.push_back(param.maxNodeRecursionAMDX.value());
break;
@@ -1304,6 +1341,10 @@ inline void EncodeParam(rdcarray &words, const ExecutionModeAndParamDa
words.push_back(param.maxNumWorkgroupsAMDX.ysize.value());
words.push_back(param.maxNumWorkgroupsAMDX.zsize.value());
break;
+ case ExecutionMode::SharesInputWithAMDX:
+ words.push_back(param.sharesInputWithAMDX.nodeName.value());
+ words.push_back(param.sharesInputWithAMDX.shaderIndex.value());
+ break;
case ExecutionMode::OutputPrimitivesEXT:
words.push_back((uint32_t)param.outputPrimitivesEXT);
break;
@@ -1381,10 +1422,12 @@ inline uint16_t ExtraWordCount(const ExecutionMode executionMode)
case ExecutionMode::SignedZeroInfNanPreserve: return 1;
case ExecutionMode::RoundingModeRTE: return 1;
case ExecutionMode::RoundingModeRTZ: return 1;
+ case ExecutionMode::IsApiEntryAMDX: return 1;
case ExecutionMode::MaxNodeRecursionAMDX: return 1;
case ExecutionMode::StaticNumWorkgroupsAMDX: return 3;
case ExecutionMode::ShaderIndexAMDX: return 1;
case ExecutionMode::MaxNumWorkgroupsAMDX: return 3;
+ case ExecutionMode::SharesInputWithAMDX: return 2;
case ExecutionMode::OutputPrimitivesEXT: return 1;
case ExecutionMode::SharedLocalMemorySizeINTEL: return 1;
case ExecutionMode::RoundingModeRTPINTEL: return 1;
@@ -1753,6 +1796,45 @@ struct DecorationParam
}
};
+template<>
+struct DecorationParam
+{
+ Id payloadNodeNameAMDX;
+ DecorationParam(Id payloadNodeNameAMDXParam) { payloadNodeNameAMDX = payloadNodeNameAMDXParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::PayloadNodeNameAMDX);
+ ret.payloadNodeNameAMDX = payloadNodeNameAMDX;
+ return ret;
+ }
+};
+
+template<>
+struct DecorationParam
+{
+ Id payloadNodeBaseIndexAMDX;
+ DecorationParam(Id payloadNodeBaseIndexAMDXParam) { payloadNodeBaseIndexAMDX = payloadNodeBaseIndexAMDXParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::PayloadNodeBaseIndexAMDX);
+ ret.payloadNodeBaseIndexAMDX = payloadNodeBaseIndexAMDX;
+ return ret;
+ }
+};
+
+template<>
+struct DecorationParam
+{
+ Id payloadNodeArraySizeAMDX;
+ DecorationParam(Id payloadNodeArraySizeAMDXParam) { payloadNodeArraySizeAMDX = payloadNodeArraySizeAMDXParam; }
+ operator DecorationAndParamData()
+ {
+ DecorationAndParamData ret(Decoration::PayloadNodeArraySizeAMDX);
+ ret.payloadNodeArraySizeAMDX = payloadNodeArraySizeAMDX;
+ return ret;
+ }
+};
+
template<>
struct DecorationParam
{
@@ -2375,6 +2457,18 @@ inline DecorationAndParamData DecodeParam(const ConstIter &it, uint32_t &word)
ret.nodeMaxPayloadsAMDX = Id::fromWord(it.word(word));
word += 1;
break;
+ case Decoration::PayloadNodeNameAMDX:
+ ret.payloadNodeNameAMDX = Id::fromWord(it.word(word));
+ word += 1;
+ break;
+ case Decoration::PayloadNodeBaseIndexAMDX:
+ ret.payloadNodeBaseIndexAMDX = Id::fromWord(it.word(word));
+ word += 1;
+ break;
+ case Decoration::PayloadNodeArraySizeAMDX:
+ ret.payloadNodeArraySizeAMDX = Id::fromWord(it.word(word));
+ word += 1;
+ break;
case Decoration::SecondaryViewportRelativeNV:
ret.secondaryViewportRelativeNV = (uint32_t)it.word(word);
word += 1;
@@ -2621,6 +2715,15 @@ inline void EncodeParam(rdcarray &words, const DecorationAndParamData
case Decoration::NodeMaxPayloadsAMDX:
words.push_back(param.nodeMaxPayloadsAMDX.value());
break;
+ case Decoration::PayloadNodeNameAMDX:
+ words.push_back(param.payloadNodeNameAMDX.value());
+ break;
+ case Decoration::PayloadNodeBaseIndexAMDX:
+ words.push_back(param.payloadNodeBaseIndexAMDX.value());
+ break;
+ case Decoration::PayloadNodeArraySizeAMDX:
+ words.push_back(param.payloadNodeArraySizeAMDX.value());
+ break;
case Decoration::SecondaryViewportRelativeNV:
words.push_back((uint32_t)param.secondaryViewportRelativeNV);
break;
@@ -2778,6 +2881,9 @@ inline uint16_t ExtraWordCount(const Decoration decoration)
case Decoration::MaxByteOffsetId: return 1;
case Decoration::NodeSharesPayloadLimitsWithAMDX: return 1;
case Decoration::NodeMaxPayloadsAMDX: return 1;
+ case Decoration::PayloadNodeNameAMDX: return 1;
+ case Decoration::PayloadNodeBaseIndexAMDX: return 1;
+ case Decoration::PayloadNodeArraySizeAMDX: return 1;
case Decoration::SecondaryViewportRelativeNV: return 1;
case Decoration::SIMTCallINTEL: return 1;
case Decoration::FuncParamIOKindINTEL: return 1;
@@ -2846,6 +2952,52 @@ inline uint16_t OptionalWordCount(const CooperativeMatrixLayout val) { return va
inline uint16_t OptionalWordCount(const CooperativeMatrixUse val) { return val != CooperativeMatrixUse::Invalid ? 1 : 0; }
+inline uint16_t OptionalWordCount(const TensorClampMode val) { return val != TensorClampMode::Invalid ? 1 : 0; }
+
+template<>
+inline TensorAddressingOperandsAndParamDatas DecodeParam(const ConstIter &it, uint32_t &word)
+{
+ if(word >= it.size()) return TensorAddressingOperandsAndParamDatas();
+
+ TensorAddressingOperandsAndParamDatas ret((TensorAddressingOperands)it.word(word));
+ word++;
+ if(ret.flags & TensorAddressingOperands::TensorView)
+ {
+ ret.tensorView = Id::fromWord(it.word(word));
+ word += 1;
+ }
+ if(ret.flags & TensorAddressingOperands::DecodeFunc)
+ {
+ ret.decodeFunc = Id::fromWord(it.word(word));
+ word += 1;
+ }
+ return ret;
+}
+
+inline void EncodeParam(rdcarray &words, const TensorAddressingOperandsAndParamDatas ¶m)
+{
+ words.push_back((uint32_t)param.flags);
+ if(param.flags & TensorAddressingOperands::TensorView)
+ {
+ words.push_back(param.tensorView.value());
+ }
+ if(param.flags & TensorAddressingOperands::DecodeFunc)
+ {
+ words.push_back(param.decodeFunc.value());
+ }
+}
+
+inline uint16_t ExtraWordCount(const TensorAddressingOperands tensorAddressingOperands)
+{
+ switch(tensorAddressingOperands)
+ {
+ case TensorAddressingOperands::TensorView: return 1;
+ case TensorAddressingOperands::DecodeFunc: return 1;
+ default: break;
+ }
+ return 0;
+}
+
inline uint16_t OptionalWordCount(const InitializationModeQualifier val) { return val != InitializationModeQualifier::Invalid ? 1 : 0; }
inline uint16_t OptionalWordCount(const LoadCacheControl val) { return val != LoadCacheControl::Invalid ? 1 : 0; }
@@ -2854,6 +3006,14 @@ inline uint16_t OptionalWordCount(const StoreCacheControl val) { return val != S
inline uint16_t OptionalWordCount(const NamedMaximumNumberOfRegisters val) { return val != NamedMaximumNumberOfRegisters::Invalid ? 1 : 0; }
+inline uint16_t OptionalWordCount(const MatrixMultiplyAccumulateOperands val) { return val != MatrixMultiplyAccumulateOperands::None ? 1 : 0; }
+
+inline uint16_t OptionalWordCount(const FPEncoding val) { return val != FPEncoding::Invalid ? 1 : 0; }
+
+inline uint16_t OptionalWordCount(const CooperativeVectorMatrixLayout val) { return val != CooperativeVectorMatrixLayout::Invalid ? 1 : 0; }
+
+inline uint16_t OptionalWordCount(const ComponentType val) { return val != ComponentType::Invalid ? 1 : 0; }
+
inline uint16_t ExtraWordCount(const rdcstr &val)
{
@@ -3422,22 +3582,39 @@ struct OpTypeFloat
{
OpTypeFloat(const ConstIter &it)
{
- memcpy(this, it.words(), sizeof(*this));
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->result = Id::fromWord(it.word(1));
+ this->width = (uint32_t)it.word(2);
+ this->floatingPointEncoding = (it.size() > 3) ? (FPEncoding)it.word(3) : FPEncoding::Invalid;
}
- OpTypeFloat(IdResult result, uint32_t width)
+ OpTypeFloat(IdResult result, uint32_t width, FPEncoding floatingPointEncoding = FPEncoding::Invalid)
: op(Op::TypeFloat)
- , wordCount(FixedWordSize)
+ , wordCount(MinWordSize + OptionalWordCount(floatingPointEncoding))
{
this->result = result;
this->width = width;
+ this->floatingPointEncoding = floatingPointEncoding;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(result.value());
+ words.push_back((uint32_t)width);
+ if(floatingPointEncoding != FPEncoding::Invalid) words.push_back((uint32_t)floatingPointEncoding);
+ return Operation(OpCode, words);
}
static constexpr Op OpCode = Op::TypeFloat;
- static constexpr uint16_t FixedWordSize = 3U;
+ static constexpr uint16_t MinWordSize = 3U;
Op op;
uint16_t wordCount;
IdResult result;
uint32_t width;
+ FPEncoding floatingPointEncoding;
+
+ bool HasFloatingPointEncoding() const { return wordCount > 3; }
};
struct OpTypeVector
@@ -13269,6 +13446,174 @@ struct OpTerminateInvocation
// no operands
};
+struct OpTypeUntypedPointerKHR
+{
+ OpTypeUntypedPointerKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTypeUntypedPointerKHR(IdResult result, StorageClass storageClass)
+ : op(Op::TypeUntypedPointerKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->result = result;
+ this->storageClass = storageClass;
+ }
+
+ static constexpr Op OpCode = Op::TypeUntypedPointerKHR;
+ static constexpr uint16_t FixedWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+ StorageClass storageClass;
+};
+
+struct OpUntypedVariableKHR
+{
+ OpUntypedVariableKHR(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->storageClass = (StorageClass)it.word(3);
+ this->dataType = (it.size() > 4) ? Id::fromWord(it.word(4)) : Id();
+ this->initializer = (it.size() > 5) ? Id::fromWord(it.word(5)) : Id();
+ }
+ OpUntypedVariableKHR(IdResultType resultType, IdResult result, StorageClass storageClass, Id dataType = Id(), Id initializer = Id())
+ : op(Op::UntypedVariableKHR)
+ , wordCount(MinWordSize + OptionalWordCount(dataType) + OptionalWordCount(initializer))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->storageClass = storageClass;
+ this->dataType = dataType;
+ this->initializer = initializer;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back((uint32_t)storageClass);
+ if(dataType != Id()) words.push_back(dataType.value());
+ if(initializer != Id()) words.push_back(initializer.value());
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::UntypedVariableKHR;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ StorageClass storageClass;
+ Id dataType;
+ Id initializer;
+
+ bool HasDataType() const { return wordCount > 4; }
+ bool HasInitializer() const { return wordCount > 5; }
+};
+
+struct OpUntypedAccessChainKHR
+{
+ OpUntypedAccessChainKHR(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->baseType = Id::fromWord(it.word(3));
+ this->base = Id::fromWord(it.word(4));
+ word = 5;
+ this->indexes = MultiParam(it, word);
+ }
+ OpUntypedAccessChainKHR(IdResultType resultType, IdResult result, Id baseType, Id base, const rdcarray &indexes = {})
+ : op(Op::UntypedAccessChainKHR)
+ , wordCount(MinWordSize + MultiWordCount(indexes))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->baseType = baseType;
+ this->base = base;
+ this->indexes = indexes;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(baseType.value());
+ words.push_back(base.value());
+ for(size_t i=0; i < indexes.size(); i++)
+ {
+ words.push_back(indexes[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::UntypedAccessChainKHR;
+ static constexpr uint16_t MinWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id baseType;
+ Id base;
+ rdcarray indexes;
+};
+
+struct OpUntypedInBoundsAccessChainKHR
+{
+ OpUntypedInBoundsAccessChainKHR(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->baseType = Id::fromWord(it.word(3));
+ this->base = Id::fromWord(it.word(4));
+ word = 5;
+ this->indexes = MultiParam(it, word);
+ }
+ OpUntypedInBoundsAccessChainKHR(IdResultType resultType, IdResult result, Id baseType, Id base, const rdcarray &indexes = {})
+ : op(Op::UntypedInBoundsAccessChainKHR)
+ , wordCount(MinWordSize + MultiWordCount(indexes))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->baseType = baseType;
+ this->base = base;
+ this->indexes = indexes;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(baseType.value());
+ words.push_back(base.value());
+ for(size_t i=0; i < indexes.size(); i++)
+ {
+ words.push_back(indexes[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::UntypedInBoundsAccessChainKHR;
+ static constexpr uint16_t MinWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id baseType;
+ Id base;
+ rdcarray indexes;
+};
+
struct OpSubgroupBallotKHR
{
OpSubgroupBallotKHR(const ConstIter &it)
@@ -13317,6 +13662,189 @@ struct OpSubgroupFirstInvocationKHR
Id value;
};
+struct OpUntypedPtrAccessChainKHR
+{
+ OpUntypedPtrAccessChainKHR(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->baseType = Id::fromWord(it.word(3));
+ this->base = Id::fromWord(it.word(4));
+ this->element = Id::fromWord(it.word(5));
+ word = 6;
+ this->indexes = MultiParam(it, word);
+ }
+ OpUntypedPtrAccessChainKHR(IdResultType resultType, IdResult result, Id baseType, Id base, Id element, const rdcarray &indexes = {})
+ : op(Op::UntypedPtrAccessChainKHR)
+ , wordCount(MinWordSize + MultiWordCount(indexes))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->baseType = baseType;
+ this->base = base;
+ this->element = element;
+ this->indexes = indexes;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(baseType.value());
+ words.push_back(base.value());
+ words.push_back(element.value());
+ for(size_t i=0; i < indexes.size(); i++)
+ {
+ words.push_back(indexes[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::UntypedPtrAccessChainKHR;
+ static constexpr uint16_t MinWordSize = 6U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id baseType;
+ Id base;
+ Id element;
+ rdcarray indexes;
+};
+
+struct OpUntypedInBoundsPtrAccessChainKHR
+{
+ OpUntypedInBoundsPtrAccessChainKHR(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->baseType = Id::fromWord(it.word(3));
+ this->base = Id::fromWord(it.word(4));
+ this->element = Id::fromWord(it.word(5));
+ word = 6;
+ this->indexes = MultiParam(it, word);
+ }
+ OpUntypedInBoundsPtrAccessChainKHR(IdResultType resultType, IdResult result, Id baseType, Id base, Id element, const rdcarray &indexes = {})
+ : op(Op::UntypedInBoundsPtrAccessChainKHR)
+ , wordCount(MinWordSize + MultiWordCount(indexes))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->baseType = baseType;
+ this->base = base;
+ this->element = element;
+ this->indexes = indexes;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(baseType.value());
+ words.push_back(base.value());
+ words.push_back(element.value());
+ for(size_t i=0; i < indexes.size(); i++)
+ {
+ words.push_back(indexes[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::UntypedInBoundsPtrAccessChainKHR;
+ static constexpr uint16_t MinWordSize = 6U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id baseType;
+ Id base;
+ Id element;
+ rdcarray indexes;
+};
+
+struct OpUntypedArrayLengthKHR
+{
+ OpUntypedArrayLengthKHR(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpUntypedArrayLengthKHR(IdResultType resultType, IdResult result, Id structure, Id pointer, uint32_t arraymember)
+ : op(Op::UntypedArrayLengthKHR)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->structure = structure;
+ this->pointer = pointer;
+ this->arraymember = arraymember;
+ }
+
+ static constexpr Op OpCode = Op::UntypedArrayLengthKHR;
+ static constexpr uint16_t FixedWordSize = 6U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id structure;
+ Id pointer;
+ uint32_t arraymember;
+};
+
+struct OpUntypedPrefetchKHR
+{
+ OpUntypedPrefetchKHR(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->pointerType = Id::fromWord(it.word(1));
+ this->numBytes = Id::fromWord(it.word(2));
+ this->rW = (it.size() > 3) ? Id::fromWord(it.word(3)) : Id();
+ this->locality = (it.size() > 4) ? Id::fromWord(it.word(4)) : Id();
+ this->cacheType = (it.size() > 5) ? Id::fromWord(it.word(5)) : Id();
+ }
+ OpUntypedPrefetchKHR(Id pointerType, Id numBytes, Id rW = Id(), Id locality = Id(), Id cacheType = Id())
+ : op(Op::UntypedPrefetchKHR)
+ , wordCount(MinWordSize + OptionalWordCount(rW) + OptionalWordCount(locality) + OptionalWordCount(cacheType))
+ {
+ this->pointerType = pointerType;
+ this->numBytes = numBytes;
+ this->rW = rW;
+ this->locality = locality;
+ this->cacheType = cacheType;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(pointerType.value());
+ words.push_back(numBytes.value());
+ if(rW != Id()) words.push_back(rW.value());
+ if(locality != Id()) words.push_back(locality.value());
+ if(cacheType != Id()) words.push_back(cacheType.value());
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::UntypedPrefetchKHR;
+ static constexpr uint16_t MinWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ Id pointerType;
+ Id numBytes;
+ Id rW;
+ Id locality;
+ Id cacheType;
+
+ bool HasRW() const { return wordCount > 3; }
+ bool HasLocality() const { return wordCount > 4; }
+ bool HasCacheType() const { return wordCount > 5; }
+};
+
struct OpSubgroupAllKHR
{
OpSubgroupAllKHR(const ConstIter &it)
@@ -14879,26 +15407,76 @@ struct OpReadClockKHR
IdScope scope;
};
-struct OpFinalizeNodePayloadsAMDX
+struct OpAllocateNodePayloadsAMDX
{
- OpFinalizeNodePayloadsAMDX(const ConstIter &it)
+ OpAllocateNodePayloadsAMDX(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
- OpFinalizeNodePayloadsAMDX(Id payloadArray)
- : op(Op::FinalizeNodePayloadsAMDX)
+ OpAllocateNodePayloadsAMDX(IdResultType resultType, IdResult result, IdScope visibility, Id payloadCount, Id nodeIndex)
+ : op(Op::AllocateNodePayloadsAMDX)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->visibility = visibility;
+ this->payloadCount = payloadCount;
+ this->nodeIndex = nodeIndex;
+ }
+
+ static constexpr Op OpCode = Op::AllocateNodePayloadsAMDX;
+ static constexpr uint16_t FixedWordSize = 6U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ IdScope visibility;
+ Id payloadCount;
+ Id nodeIndex;
+};
+
+struct OpEnqueueNodePayloadsAMDX
+{
+ OpEnqueueNodePayloadsAMDX(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpEnqueueNodePayloadsAMDX(Id payloadArray)
+ : op(Op::EnqueueNodePayloadsAMDX)
, wordCount(FixedWordSize)
{
this->payloadArray = payloadArray;
}
- static constexpr Op OpCode = Op::FinalizeNodePayloadsAMDX;
+ static constexpr Op OpCode = Op::EnqueueNodePayloadsAMDX;
static constexpr uint16_t FixedWordSize = 2U;
Op op;
uint16_t wordCount;
Id payloadArray;
};
+struct OpTypeNodePayloadArrayAMDX
+{
+ OpTypeNodePayloadArrayAMDX(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTypeNodePayloadArrayAMDX(IdResult result, Id payloadType)
+ : op(Op::TypeNodePayloadArrayAMDX)
+ , wordCount(FixedWordSize)
+ {
+ this->result = result;
+ this->payloadType = payloadType;
+ }
+
+ static constexpr Op OpCode = Op::TypeNodePayloadArrayAMDX;
+ static constexpr uint16_t FixedWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+ Id payloadType;
+};
+
struct OpFinishWritingNodePayloadAMDX
{
OpFinishWritingNodePayloadAMDX(const ConstIter &it)
@@ -14923,32 +15501,124 @@ struct OpFinishWritingNodePayloadAMDX
Id payload;
};
-struct OpInitializeNodePayloadsAMDX
+struct OpNodePayloadArrayLengthAMDX
{
- OpInitializeNodePayloadsAMDX(const ConstIter &it)
+ OpNodePayloadArrayLengthAMDX(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
- OpInitializeNodePayloadsAMDX(Id payloadArray, IdScope visibility, Id payloadCount, Id nodeIndex)
- : op(Op::InitializeNodePayloadsAMDX)
+ OpNodePayloadArrayLengthAMDX(IdResultType resultType, IdResult result, Id payloadArray)
+ : op(Op::NodePayloadArrayLengthAMDX)
, wordCount(FixedWordSize)
{
+ this->resultType = resultType;
+ this->result = result;
this->payloadArray = payloadArray;
- this->visibility = visibility;
- this->payloadCount = payloadCount;
+ }
+
+ static constexpr Op OpCode = Op::NodePayloadArrayLengthAMDX;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id payloadArray;
+};
+
+struct OpIsNodePayloadValidAMDX
+{
+ OpIsNodePayloadValidAMDX(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpIsNodePayloadValidAMDX(IdResultType resultType, IdResult result, Id payloadType, Id nodeIndex)
+ : op(Op::IsNodePayloadValidAMDX)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->payloadType = payloadType;
this->nodeIndex = nodeIndex;
}
- static constexpr Op OpCode = Op::InitializeNodePayloadsAMDX;
+ static constexpr Op OpCode = Op::IsNodePayloadValidAMDX;
static constexpr uint16_t FixedWordSize = 5U;
Op op;
uint16_t wordCount;
- Id payloadArray;
- IdScope visibility;
- Id payloadCount;
+ IdResultType resultType;
+ IdResult result;
+ Id payloadType;
Id nodeIndex;
};
+struct OpConstantStringAMDX
+{
+ OpConstantStringAMDX(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->result = Id::fromWord(it.word(1));
+ word = 2;
+ this->literalString = DecodeParam(it, word);
+ }
+ OpConstantStringAMDX(IdResult result, rdcstr literalString)
+ : op(Op::ConstantStringAMDX)
+ , wordCount(MinWordSize + ExtraWordCount(literalString))
+ {
+ this->result = result;
+ this->literalString = literalString;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(result.value());
+ EncodeParam(words, literalString);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::ConstantStringAMDX;
+ static constexpr uint16_t MinWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+ rdcstr literalString;
+};
+
+struct OpSpecConstantStringAMDX
+{
+ OpSpecConstantStringAMDX(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->result = Id::fromWord(it.word(1));
+ word = 2;
+ this->literalString = DecodeParam(it, word);
+ }
+ OpSpecConstantStringAMDX(IdResult result, rdcstr literalString)
+ : op(Op::SpecConstantStringAMDX)
+ , wordCount(MinWordSize + ExtraWordCount(literalString))
+ {
+ this->result = result;
+ this->literalString = literalString;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(result.value());
+ EncodeParam(words, literalString);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::SpecConstantStringAMDX;
+ static constexpr uint16_t MinWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+ rdcstr literalString;
+};
+
struct OpGroupNonUniformQuadAllKHR
{
OpGroupNonUniformQuadAllKHR(const ConstIter &it)
@@ -15977,6 +16647,305 @@ struct OpImageSampleFootprintNV
ImageOperandsAndParamDatas imageOperands;
};
+struct OpTypeCooperativeVectorNV
+{
+ OpTypeCooperativeVectorNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTypeCooperativeVectorNV(IdResult result, Id componentType, Id componentCount)
+ : op(Op::TypeCooperativeVectorNV)
+ , wordCount(FixedWordSize)
+ {
+ this->result = result;
+ this->componentType = componentType;
+ this->componentCount = componentCount;
+ }
+
+ static constexpr Op OpCode = Op::TypeCooperativeVectorNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+ Id componentType;
+ Id componentCount;
+};
+
+struct OpCooperativeVectorMatrixMulNV
+{
+ OpCooperativeVectorMatrixMulNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->input = Id::fromWord(it.word(3));
+ this->inputInterpretation = Id::fromWord(it.word(4));
+ this->matrix = Id::fromWord(it.word(5));
+ this->matrixOffset = Id::fromWord(it.word(6));
+ this->matrixInterpretation = Id::fromWord(it.word(7));
+ this->m = Id::fromWord(it.word(8));
+ this->k = Id::fromWord(it.word(9));
+ this->memoryLayout = Id::fromWord(it.word(10));
+ this->transpose = Id::fromWord(it.word(11));
+ this->matrixStride = (it.size() > 12) ? Id::fromWord(it.word(12)) : Id();
+ this->cooperativeMatrixOperands = (it.size() > 13) ? (CooperativeMatrixOperands)it.word(13) : CooperativeMatrixOperands::NoneKHR;
+ }
+ OpCooperativeVectorMatrixMulNV(IdResultType resultType, IdResult result, Id input, Id inputInterpretation, Id matrix, Id matrixOffset, Id matrixInterpretation, Id m, Id k, Id memoryLayout, Id transpose, Id matrixStride = Id(), CooperativeMatrixOperands cooperativeMatrixOperands = CooperativeMatrixOperands::NoneKHR)
+ : op(Op::CooperativeVectorMatrixMulNV)
+ , wordCount(MinWordSize + OptionalWordCount(matrixStride) + OptionalWordCount(cooperativeMatrixOperands))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->input = input;
+ this->inputInterpretation = inputInterpretation;
+ this->matrix = matrix;
+ this->matrixOffset = matrixOffset;
+ this->matrixInterpretation = matrixInterpretation;
+ this->m = m;
+ this->k = k;
+ this->memoryLayout = memoryLayout;
+ this->transpose = transpose;
+ this->matrixStride = matrixStride;
+ this->cooperativeMatrixOperands = cooperativeMatrixOperands;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(input.value());
+ words.push_back(inputInterpretation.value());
+ words.push_back(matrix.value());
+ words.push_back(matrixOffset.value());
+ words.push_back(matrixInterpretation.value());
+ words.push_back(m.value());
+ words.push_back(k.value());
+ words.push_back(memoryLayout.value());
+ words.push_back(transpose.value());
+ if(matrixStride != Id()) words.push_back(matrixStride.value());
+ if(cooperativeMatrixOperands != CooperativeMatrixOperands::NoneKHR) words.push_back((uint32_t)cooperativeMatrixOperands);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeVectorMatrixMulNV;
+ static constexpr uint16_t MinWordSize = 12U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id input;
+ Id inputInterpretation;
+ Id matrix;
+ Id matrixOffset;
+ Id matrixInterpretation;
+ Id m;
+ Id k;
+ Id memoryLayout;
+ Id transpose;
+ Id matrixStride;
+ CooperativeMatrixOperands cooperativeMatrixOperands;
+
+ bool HasMatrixStride() const { return wordCount > 12; }
+ bool HasCooperativeMatrixOperands() const { return wordCount > 13; }
+};
+
+struct OpCooperativeVectorOuterProductAccumulateNV
+{
+ OpCooperativeVectorOuterProductAccumulateNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->pointer = Id::fromWord(it.word(1));
+ this->offset = Id::fromWord(it.word(2));
+ this->a = Id::fromWord(it.word(3));
+ this->b = Id::fromWord(it.word(4));
+ this->memoryLayout = Id::fromWord(it.word(5));
+ this->matrixInterpretation = Id::fromWord(it.word(6));
+ this->matrixStride = (it.size() > 7) ? Id::fromWord(it.word(7)) : Id();
+ }
+ OpCooperativeVectorOuterProductAccumulateNV(Id pointer, Id offset, Id a, Id b, Id memoryLayout, Id matrixInterpretation, Id matrixStride = Id())
+ : op(Op::CooperativeVectorOuterProductAccumulateNV)
+ , wordCount(MinWordSize + OptionalWordCount(matrixStride))
+ {
+ this->pointer = pointer;
+ this->offset = offset;
+ this->a = a;
+ this->b = b;
+ this->memoryLayout = memoryLayout;
+ this->matrixInterpretation = matrixInterpretation;
+ this->matrixStride = matrixStride;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(pointer.value());
+ words.push_back(offset.value());
+ words.push_back(a.value());
+ words.push_back(b.value());
+ words.push_back(memoryLayout.value());
+ words.push_back(matrixInterpretation.value());
+ if(matrixStride != Id()) words.push_back(matrixStride.value());
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeVectorOuterProductAccumulateNV;
+ static constexpr uint16_t MinWordSize = 7U;
+ Op op;
+ uint16_t wordCount;
+ Id pointer;
+ Id offset;
+ Id a;
+ Id b;
+ Id memoryLayout;
+ Id matrixInterpretation;
+ Id matrixStride;
+
+ bool HasMatrixStride() const { return wordCount > 7; }
+};
+
+struct OpCooperativeVectorReduceSumAccumulateNV
+{
+ OpCooperativeVectorReduceSumAccumulateNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpCooperativeVectorReduceSumAccumulateNV(Id pointer, Id offset, Id v)
+ : op(Op::CooperativeVectorReduceSumAccumulateNV)
+ , wordCount(FixedWordSize)
+ {
+ this->pointer = pointer;
+ this->offset = offset;
+ this->v = v;
+ }
+
+ static constexpr Op OpCode = Op::CooperativeVectorReduceSumAccumulateNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ Id pointer;
+ Id offset;
+ Id v;
+};
+
+struct OpCooperativeVectorMatrixMulAddNV
+{
+ OpCooperativeVectorMatrixMulAddNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->input = Id::fromWord(it.word(3));
+ this->inputInterpretation = Id::fromWord(it.word(4));
+ this->matrix = Id::fromWord(it.word(5));
+ this->matrixOffset = Id::fromWord(it.word(6));
+ this->matrixInterpretation = Id::fromWord(it.word(7));
+ this->bias = Id::fromWord(it.word(8));
+ this->biasOffset = Id::fromWord(it.word(9));
+ this->biasInterpretation = Id::fromWord(it.word(10));
+ this->m = Id::fromWord(it.word(11));
+ this->k = Id::fromWord(it.word(12));
+ this->memoryLayout = Id::fromWord(it.word(13));
+ this->transpose = Id::fromWord(it.word(14));
+ this->matrixStride = (it.size() > 15) ? Id::fromWord(it.word(15)) : Id();
+ this->cooperativeMatrixOperands = (it.size() > 16) ? (CooperativeMatrixOperands)it.word(16) : CooperativeMatrixOperands::NoneKHR;
+ }
+ OpCooperativeVectorMatrixMulAddNV(IdResultType resultType, IdResult result, Id input, Id inputInterpretation, Id matrix, Id matrixOffset, Id matrixInterpretation, Id bias, Id biasOffset, Id biasInterpretation, Id m, Id k, Id memoryLayout, Id transpose, Id matrixStride = Id(), CooperativeMatrixOperands cooperativeMatrixOperands = CooperativeMatrixOperands::NoneKHR)
+ : op(Op::CooperativeVectorMatrixMulAddNV)
+ , wordCount(MinWordSize + OptionalWordCount(matrixStride) + OptionalWordCount(cooperativeMatrixOperands))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->input = input;
+ this->inputInterpretation = inputInterpretation;
+ this->matrix = matrix;
+ this->matrixOffset = matrixOffset;
+ this->matrixInterpretation = matrixInterpretation;
+ this->bias = bias;
+ this->biasOffset = biasOffset;
+ this->biasInterpretation = biasInterpretation;
+ this->m = m;
+ this->k = k;
+ this->memoryLayout = memoryLayout;
+ this->transpose = transpose;
+ this->matrixStride = matrixStride;
+ this->cooperativeMatrixOperands = cooperativeMatrixOperands;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(input.value());
+ words.push_back(inputInterpretation.value());
+ words.push_back(matrix.value());
+ words.push_back(matrixOffset.value());
+ words.push_back(matrixInterpretation.value());
+ words.push_back(bias.value());
+ words.push_back(biasOffset.value());
+ words.push_back(biasInterpretation.value());
+ words.push_back(m.value());
+ words.push_back(k.value());
+ words.push_back(memoryLayout.value());
+ words.push_back(transpose.value());
+ if(matrixStride != Id()) words.push_back(matrixStride.value());
+ if(cooperativeMatrixOperands != CooperativeMatrixOperands::NoneKHR) words.push_back((uint32_t)cooperativeMatrixOperands);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeVectorMatrixMulAddNV;
+ static constexpr uint16_t MinWordSize = 15U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id input;
+ Id inputInterpretation;
+ Id matrix;
+ Id matrixOffset;
+ Id matrixInterpretation;
+ Id bias;
+ Id biasOffset;
+ Id biasInterpretation;
+ Id m;
+ Id k;
+ Id memoryLayout;
+ Id transpose;
+ Id matrixStride;
+ CooperativeMatrixOperands cooperativeMatrixOperands;
+
+ bool HasMatrixStride() const { return wordCount > 15; }
+ bool HasCooperativeMatrixOperands() const { return wordCount > 16; }
+};
+
+struct OpCooperativeMatrixConvertNV
+{
+ OpCooperativeMatrixConvertNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpCooperativeMatrixConvertNV(IdResultType resultType, IdResult result, Id matrix)
+ : op(Op::CooperativeMatrixConvertNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->matrix = matrix;
+ }
+
+ static constexpr Op OpCode = Op::CooperativeMatrixConvertNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id matrix;
+};
+
struct OpEmitMeshTasksEXT
{
OpEmitMeshTasksEXT(const ConstIter &it)
@@ -16152,6 +17121,94 @@ struct OpFetchMicroTriangleVertexBarycentricNV
Id barycentric;
};
+struct OpCooperativeVectorLoadNV
+{
+ OpCooperativeVectorLoadNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->pointer = Id::fromWord(it.word(3));
+ this->offset = Id::fromWord(it.word(4));
+ word = 5;
+ this->memoryAccess = DecodeParam(it, word);
+ }
+ OpCooperativeVectorLoadNV(IdResultType resultType, IdResult result, Id pointer, Id offset, MemoryAccessAndParamDatas memoryAccess = MemoryAccess::None)
+ : op(Op::CooperativeVectorLoadNV)
+ , wordCount(MinWordSize + ExtraWordCount(memoryAccess))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->pointer = pointer;
+ this->offset = offset;
+ this->memoryAccess = memoryAccess;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(pointer.value());
+ words.push_back(offset.value());
+ EncodeParam(words, memoryAccess);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeVectorLoadNV;
+ static constexpr uint16_t MinWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id pointer;
+ Id offset;
+ MemoryAccessAndParamDatas memoryAccess;
+};
+
+struct OpCooperativeVectorStoreNV
+{
+ OpCooperativeVectorStoreNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->pointer = Id::fromWord(it.word(1));
+ this->offset = Id::fromWord(it.word(2));
+ this->object = Id::fromWord(it.word(3));
+ word = 4;
+ this->memoryAccess = DecodeParam(it, word);
+ }
+ OpCooperativeVectorStoreNV(Id pointer, Id offset, Id object, MemoryAccessAndParamDatas memoryAccess = MemoryAccess::None)
+ : op(Op::CooperativeVectorStoreNV)
+ , wordCount(MinWordSize + ExtraWordCount(memoryAccess))
+ {
+ this->pointer = pointer;
+ this->offset = offset;
+ this->object = object;
+ this->memoryAccess = memoryAccess;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(pointer.value());
+ words.push_back(offset.value());
+ words.push_back(object.value());
+ EncodeParam(words, memoryAccess);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeVectorStoreNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ Id pointer;
+ Id offset;
+ Id object;
+ MemoryAccessAndParamDatas memoryAccess;
+};
+
struct OpReportIntersectionKHR
{
OpReportIntersectionKHR(const ConstIter &it)
@@ -16410,6 +17467,56 @@ struct OpExecuteCallableNV
Id callableDataId;
};
+struct OpRayQueryGetClusterIdNV
+{
+ OpRayQueryGetClusterIdNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetClusterIdNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetClusterIdNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetClusterIdNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpHitObjectGetClusterIdNV
+{
+ OpHitObjectGetClusterIdNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpHitObjectGetClusterIdNV(IdResultType resultType, IdResult result, Id hitObject)
+ : op(Op::HitObjectGetClusterIdNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->hitObject = hitObject;
+ }
+
+ static constexpr Op OpCode = Op::HitObjectGetClusterIdNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id hitObject;
+};
+
struct OpTypeCooperativeMatrixNV
{
OpTypeCooperativeMatrixNV(const ConstIter &it)
@@ -16626,6 +17733,547 @@ struct OpEndInvocationInterlockEXT
// no operands
};
+struct OpCooperativeMatrixReduceNV
+{
+ OpCooperativeMatrixReduceNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpCooperativeMatrixReduceNV(IdResultType resultType, IdResult result, Id matrix, CooperativeMatrixReduce reduce, Id combineFunc)
+ : op(Op::CooperativeMatrixReduceNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->matrix = matrix;
+ this->reduce = reduce;
+ this->combineFunc = combineFunc;
+ }
+
+ static constexpr Op OpCode = Op::CooperativeMatrixReduceNV;
+ static constexpr uint16_t FixedWordSize = 6U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id matrix;
+ CooperativeMatrixReduce reduce;
+ Id combineFunc;
+};
+
+struct OpCooperativeMatrixLoadTensorNV
+{
+ OpCooperativeMatrixLoadTensorNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->pointer = Id::fromWord(it.word(3));
+ this->object = Id::fromWord(it.word(4));
+ this->tensorLayout = Id::fromWord(it.word(5));
+ word = 6;
+ this->memoryOperand = DecodeParam(it, word);
+ this->tensorAddressingOperands = DecodeParam(it, word);
+ }
+ OpCooperativeMatrixLoadTensorNV(IdResultType resultType, IdResult result, Id pointer, Id object, Id tensorLayout, MemoryAccessAndParamDatas memoryOperand, TensorAddressingOperandsAndParamDatas tensorAddressingOperands)
+ : op(Op::CooperativeMatrixLoadTensorNV)
+ , wordCount(MinWordSize + ExtraWordCount(memoryOperand) + ExtraWordCount(tensorAddressingOperands))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->pointer = pointer;
+ this->object = object;
+ this->tensorLayout = tensorLayout;
+ this->memoryOperand = memoryOperand;
+ this->tensorAddressingOperands = tensorAddressingOperands;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(pointer.value());
+ words.push_back(object.value());
+ words.push_back(tensorLayout.value());
+ EncodeParam(words, memoryOperand);
+ EncodeParam(words, tensorAddressingOperands);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeMatrixLoadTensorNV;
+ static constexpr uint16_t MinWordSize = 8U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id pointer;
+ Id object;
+ Id tensorLayout;
+ MemoryAccessAndParamDatas memoryOperand;
+ TensorAddressingOperandsAndParamDatas tensorAddressingOperands;
+};
+
+struct OpCooperativeMatrixStoreTensorNV
+{
+ OpCooperativeMatrixStoreTensorNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->pointer = Id::fromWord(it.word(1));
+ this->object = Id::fromWord(it.word(2));
+ this->tensorLayout = Id::fromWord(it.word(3));
+ word = 4;
+ this->memoryOperand = DecodeParam(it, word);
+ this->tensorAddressingOperands = DecodeParam(it, word);
+ }
+ OpCooperativeMatrixStoreTensorNV(Id pointer, Id object, Id tensorLayout, MemoryAccessAndParamDatas memoryOperand, TensorAddressingOperandsAndParamDatas tensorAddressingOperands)
+ : op(Op::CooperativeMatrixStoreTensorNV)
+ , wordCount(MinWordSize + ExtraWordCount(memoryOperand) + ExtraWordCount(tensorAddressingOperands))
+ {
+ this->pointer = pointer;
+ this->object = object;
+ this->tensorLayout = tensorLayout;
+ this->memoryOperand = memoryOperand;
+ this->tensorAddressingOperands = tensorAddressingOperands;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(pointer.value());
+ words.push_back(object.value());
+ words.push_back(tensorLayout.value());
+ EncodeParam(words, memoryOperand);
+ EncodeParam(words, tensorAddressingOperands);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeMatrixStoreTensorNV;
+ static constexpr uint16_t MinWordSize = 6U;
+ Op op;
+ uint16_t wordCount;
+ Id pointer;
+ Id object;
+ Id tensorLayout;
+ MemoryAccessAndParamDatas memoryOperand;
+ TensorAddressingOperandsAndParamDatas tensorAddressingOperands;
+};
+
+struct OpCooperativeMatrixPerElementOpNV
+{
+ OpCooperativeMatrixPerElementOpNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->matrix = Id::fromWord(it.word(3));
+ this->func = Id::fromWord(it.word(4));
+ word = 5;
+ this->operands = MultiParam(it, word);
+ }
+ OpCooperativeMatrixPerElementOpNV(IdResultType resultType, IdResult result, Id matrix, Id func, const rdcarray &operands = {})
+ : op(Op::CooperativeMatrixPerElementOpNV)
+ , wordCount(MinWordSize + MultiWordCount(operands))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->matrix = matrix;
+ this->func = func;
+ this->operands = operands;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(matrix.value());
+ words.push_back(func.value());
+ for(size_t i=0; i < operands.size(); i++)
+ {
+ words.push_back(operands[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::CooperativeMatrixPerElementOpNV;
+ static constexpr uint16_t MinWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id matrix;
+ Id func;
+ rdcarray operands;
+};
+
+struct OpTypeTensorLayoutNV
+{
+ OpTypeTensorLayoutNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTypeTensorLayoutNV(IdResult result, Id dim, Id clampMode)
+ : op(Op::TypeTensorLayoutNV)
+ , wordCount(FixedWordSize)
+ {
+ this->result = result;
+ this->dim = dim;
+ this->clampMode = clampMode;
+ }
+
+ static constexpr Op OpCode = Op::TypeTensorLayoutNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+ Id dim;
+ Id clampMode;
+};
+
+struct OpTypeTensorViewNV
+{
+ OpTypeTensorViewNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->result = Id::fromWord(it.word(1));
+ this->dim = Id::fromWord(it.word(2));
+ this->hasDimensions = Id::fromWord(it.word(3));
+ word = 4;
+ this->p = MultiParam(it, word);
+ }
+ OpTypeTensorViewNV(IdResult result, Id dim, Id hasDimensions, const rdcarray &p = {})
+ : op(Op::TypeTensorViewNV)
+ , wordCount(MinWordSize + MultiWordCount(p))
+ {
+ this->result = result;
+ this->dim = dim;
+ this->hasDimensions = hasDimensions;
+ this->p = p;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(result.value());
+ words.push_back(dim.value());
+ words.push_back(hasDimensions.value());
+ for(size_t i=0; i < p.size(); i++)
+ {
+ words.push_back(p[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::TypeTensorViewNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResult result;
+ Id dim;
+ Id hasDimensions;
+ rdcarray p;
+};
+
+struct OpCreateTensorLayoutNV
+{
+ OpCreateTensorLayoutNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpCreateTensorLayoutNV(IdResultType resultType, IdResult result)
+ : op(Op::CreateTensorLayoutNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ }
+
+ static constexpr Op OpCode = Op::CreateTensorLayoutNV;
+ static constexpr uint16_t FixedWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+};
+
+struct OpTensorLayoutSetDimensionNV
+{
+ OpTensorLayoutSetDimensionNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->tensorLayout = Id::fromWord(it.word(3));
+ word = 4;
+ this->dim = MultiParam(it, word);
+ }
+ OpTensorLayoutSetDimensionNV(IdResultType resultType, IdResult result, Id tensorLayout, const rdcarray &dim = {})
+ : op(Op::TensorLayoutSetDimensionNV)
+ , wordCount(MinWordSize + MultiWordCount(dim))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorLayout = tensorLayout;
+ this->dim = dim;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(tensorLayout.value());
+ for(size_t i=0; i < dim.size(); i++)
+ {
+ words.push_back(dim[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::TensorLayoutSetDimensionNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorLayout;
+ rdcarray dim;
+};
+
+struct OpTensorLayoutSetStrideNV
+{
+ OpTensorLayoutSetStrideNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->tensorLayout = Id::fromWord(it.word(3));
+ word = 4;
+ this->stride = MultiParam(it, word);
+ }
+ OpTensorLayoutSetStrideNV(IdResultType resultType, IdResult result, Id tensorLayout, const rdcarray &stride = {})
+ : op(Op::TensorLayoutSetStrideNV)
+ , wordCount(MinWordSize + MultiWordCount(stride))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorLayout = tensorLayout;
+ this->stride = stride;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(tensorLayout.value());
+ for(size_t i=0; i < stride.size(); i++)
+ {
+ words.push_back(stride[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::TensorLayoutSetStrideNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorLayout;
+ rdcarray stride;
+};
+
+struct OpTensorLayoutSliceNV
+{
+ OpTensorLayoutSliceNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->tensorLayout = Id::fromWord(it.word(3));
+ word = 4;
+ this->operands = MultiParam(it, word);
+ }
+ OpTensorLayoutSliceNV(IdResultType resultType, IdResult result, Id tensorLayout, const rdcarray &operands = {})
+ : op(Op::TensorLayoutSliceNV)
+ , wordCount(MinWordSize + MultiWordCount(operands))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorLayout = tensorLayout;
+ this->operands = operands;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(tensorLayout.value());
+ for(size_t i=0; i < operands.size(); i++)
+ {
+ words.push_back(operands[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::TensorLayoutSliceNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorLayout;
+ rdcarray operands;
+};
+
+struct OpTensorLayoutSetClampValueNV
+{
+ OpTensorLayoutSetClampValueNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTensorLayoutSetClampValueNV(IdResultType resultType, IdResult result, Id tensorLayout, Id value)
+ : op(Op::TensorLayoutSetClampValueNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorLayout = tensorLayout;
+ this->value = value;
+ }
+
+ static constexpr Op OpCode = Op::TensorLayoutSetClampValueNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorLayout;
+ Id value;
+};
+
+struct OpCreateTensorViewNV
+{
+ OpCreateTensorViewNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpCreateTensorViewNV(IdResultType resultType, IdResult result)
+ : op(Op::CreateTensorViewNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ }
+
+ static constexpr Op OpCode = Op::CreateTensorViewNV;
+ static constexpr uint16_t FixedWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+};
+
+struct OpTensorViewSetDimensionNV
+{
+ OpTensorViewSetDimensionNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->tensorView = Id::fromWord(it.word(3));
+ word = 4;
+ this->dim = MultiParam(it, word);
+ }
+ OpTensorViewSetDimensionNV(IdResultType resultType, IdResult result, Id tensorView, const rdcarray &dim = {})
+ : op(Op::TensorViewSetDimensionNV)
+ , wordCount(MinWordSize + MultiWordCount(dim))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorView = tensorView;
+ this->dim = dim;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(tensorView.value());
+ for(size_t i=0; i < dim.size(); i++)
+ {
+ words.push_back(dim[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::TensorViewSetDimensionNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorView;
+ rdcarray dim;
+};
+
+struct OpTensorViewSetStrideNV
+{
+ OpTensorViewSetStrideNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->tensorView = Id::fromWord(it.word(3));
+ word = 4;
+ this->stride = MultiParam(it, word);
+ }
+ OpTensorViewSetStrideNV(IdResultType resultType, IdResult result, Id tensorView, const rdcarray &stride = {})
+ : op(Op::TensorViewSetStrideNV)
+ , wordCount(MinWordSize + MultiWordCount(stride))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorView = tensorView;
+ this->stride = stride;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(tensorView.value());
+ for(size_t i=0; i < stride.size(); i++)
+ {
+ words.push_back(stride[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::TensorViewSetStrideNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorView;
+ rdcarray stride;
+};
+
struct OpDemoteToHelperInvocation
{
OpDemoteToHelperInvocation(const ConstIter &it)
@@ -16668,6 +18316,107 @@ struct OpIsHelperInvocationEXT
IdResult result;
};
+struct OpTensorViewSetClipNV
+{
+ OpTensorViewSetClipNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpTensorViewSetClipNV(IdResultType resultType, IdResult result, Id tensorView, Id clipRowOffset, Id clipRowSpan, Id clipColOffset, Id clipColSpan)
+ : op(Op::TensorViewSetClipNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorView = tensorView;
+ this->clipRowOffset = clipRowOffset;
+ this->clipRowSpan = clipRowSpan;
+ this->clipColOffset = clipColOffset;
+ this->clipColSpan = clipColSpan;
+ }
+
+ static constexpr Op OpCode = Op::TensorViewSetClipNV;
+ static constexpr uint16_t FixedWordSize = 8U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorView;
+ Id clipRowOffset;
+ Id clipRowSpan;
+ Id clipColOffset;
+ Id clipColSpan;
+};
+
+struct OpTensorLayoutSetBlockSizeNV
+{
+ OpTensorLayoutSetBlockSizeNV(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->tensorLayout = Id::fromWord(it.word(3));
+ word = 4;
+ this->blockSize = MultiParam(it, word);
+ }
+ OpTensorLayoutSetBlockSizeNV(IdResultType resultType, IdResult result, Id tensorLayout, const rdcarray &blockSize = {})
+ : op(Op::TensorLayoutSetBlockSizeNV)
+ , wordCount(MinWordSize + MultiWordCount(blockSize))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->tensorLayout = tensorLayout;
+ this->blockSize = blockSize;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(tensorLayout.value());
+ for(size_t i=0; i < blockSize.size(); i++)
+ {
+ words.push_back(blockSize[i].value());
+ }
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::TensorLayoutSetBlockSizeNV;
+ static constexpr uint16_t MinWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id tensorLayout;
+ rdcarray blockSize;
+};
+
+struct OpCooperativeMatrixTransposeNV
+{
+ OpCooperativeMatrixTransposeNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpCooperativeMatrixTransposeNV(IdResultType resultType, IdResult result, Id matrix)
+ : op(Op::CooperativeMatrixTransposeNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->matrix = matrix;
+ }
+
+ static constexpr Op OpCode = Op::CooperativeMatrixTransposeNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id matrix;
+};
+
struct OpConvertUToImageNV
{
OpConvertUToImageNV(const ConstIter &it)
@@ -16887,6 +18636,332 @@ struct OpRawAccessChainNV
bool HasRawAccessChainOperands() const { return wordCount > 7; }
};
+struct OpRayQueryGetIntersectionSpherePositionNV
+{
+ OpRayQueryGetIntersectionSpherePositionNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionSpherePositionNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionSpherePositionNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionSpherePositionNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionSphereRadiusNV
+{
+ OpRayQueryGetIntersectionSphereRadiusNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionSphereRadiusNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionSphereRadiusNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionSphereRadiusNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionLSSPositionsNV
+{
+ OpRayQueryGetIntersectionLSSPositionsNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionLSSPositionsNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionLSSPositionsNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionLSSPositionsNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionLSSRadiiNV
+{
+ OpRayQueryGetIntersectionLSSRadiiNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionLSSRadiiNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionLSSRadiiNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionLSSRadiiNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryGetIntersectionLSSHitValueNV
+{
+ OpRayQueryGetIntersectionLSSHitValueNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryGetIntersectionLSSHitValueNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryGetIntersectionLSSHitValueNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryGetIntersectionLSSHitValueNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpHitObjectGetSpherePositionNV
+{
+ OpHitObjectGetSpherePositionNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpHitObjectGetSpherePositionNV(IdResultType resultType, IdResult result, Id hitObject)
+ : op(Op::HitObjectGetSpherePositionNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->hitObject = hitObject;
+ }
+
+ static constexpr Op OpCode = Op::HitObjectGetSpherePositionNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id hitObject;
+};
+
+struct OpHitObjectGetSphereRadiusNV
+{
+ OpHitObjectGetSphereRadiusNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpHitObjectGetSphereRadiusNV(IdResultType resultType, IdResult result, Id hitObject)
+ : op(Op::HitObjectGetSphereRadiusNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->hitObject = hitObject;
+ }
+
+ static constexpr Op OpCode = Op::HitObjectGetSphereRadiusNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id hitObject;
+};
+
+struct OpHitObjectGetLSSPositionsNV
+{
+ OpHitObjectGetLSSPositionsNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpHitObjectGetLSSPositionsNV(IdResultType resultType, IdResult result, Id hitObject)
+ : op(Op::HitObjectGetLSSPositionsNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->hitObject = hitObject;
+ }
+
+ static constexpr Op OpCode = Op::HitObjectGetLSSPositionsNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id hitObject;
+};
+
+struct OpHitObjectGetLSSRadiiNV
+{
+ OpHitObjectGetLSSRadiiNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpHitObjectGetLSSRadiiNV(IdResultType resultType, IdResult result, Id hitObject)
+ : op(Op::HitObjectGetLSSRadiiNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->hitObject = hitObject;
+ }
+
+ static constexpr Op OpCode = Op::HitObjectGetLSSRadiiNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id hitObject;
+};
+
+struct OpHitObjectIsSphereHitNV
+{
+ OpHitObjectIsSphereHitNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpHitObjectIsSphereHitNV(IdResultType resultType, IdResult result, Id hitObject)
+ : op(Op::HitObjectIsSphereHitNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->hitObject = hitObject;
+ }
+
+ static constexpr Op OpCode = Op::HitObjectIsSphereHitNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id hitObject;
+};
+
+struct OpHitObjectIsLSSHitNV
+{
+ OpHitObjectIsLSSHitNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpHitObjectIsLSSHitNV(IdResultType resultType, IdResult result, Id hitObject)
+ : op(Op::HitObjectIsLSSHitNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->hitObject = hitObject;
+ }
+
+ static constexpr Op OpCode = Op::HitObjectIsLSSHitNV;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id hitObject;
+};
+
+struct OpRayQueryIsSphereHitNV
+{
+ OpRayQueryIsSphereHitNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryIsSphereHitNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryIsSphereHitNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryIsSphereHitNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
+struct OpRayQueryIsLSSHitNV
+{
+ OpRayQueryIsLSSHitNV(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpRayQueryIsLSSHitNV(IdResultType resultType, IdResult result, Id rayQuery, Id intersection)
+ : op(Op::RayQueryIsLSSHitNV)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->rayQuery = rayQuery;
+ this->intersection = intersection;
+ }
+
+ static constexpr Op OpCode = Op::RayQueryIsLSSHitNV;
+ static constexpr uint16_t FixedWordSize = 5U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id rayQuery;
+ Id intersection;
+};
+
struct OpSubgroupShuffleINTEL
{
OpSubgroupShuffleINTEL(const ConstIter &it)
@@ -18518,6 +20593,311 @@ struct OpControlBarrierWaitINTEL
IdMemorySemantics semantics;
};
+struct OpArithmeticFenceEXT
+{
+ OpArithmeticFenceEXT(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpArithmeticFenceEXT(IdResultType resultType, IdResult result, Id target)
+ : op(Op::ArithmeticFenceEXT)
+ , wordCount(FixedWordSize)
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->target = target;
+ }
+
+ static constexpr Op OpCode = Op::ArithmeticFenceEXT;
+ static constexpr uint16_t FixedWordSize = 4U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id target;
+};
+
+struct OpSubgroupBlockPrefetchINTEL
+{
+ OpSubgroupBlockPrefetchINTEL(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->ptr = Id::fromWord(it.word(1));
+ this->numBytes = Id::fromWord(it.word(2));
+ word = 3;
+ this->memoryAccess = DecodeParam(it, word);
+ }
+ OpSubgroupBlockPrefetchINTEL(Id ptr, Id numBytes, MemoryAccessAndParamDatas memoryAccess = MemoryAccess::None)
+ : op(Op::SubgroupBlockPrefetchINTEL)
+ , wordCount(MinWordSize + ExtraWordCount(memoryAccess))
+ {
+ this->ptr = ptr;
+ this->numBytes = numBytes;
+ this->memoryAccess = memoryAccess;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(ptr.value());
+ words.push_back(numBytes.value());
+ EncodeParam(words, memoryAccess);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::SubgroupBlockPrefetchINTEL;
+ static constexpr uint16_t MinWordSize = 3U;
+ Op op;
+ uint16_t wordCount;
+ Id ptr;
+ Id numBytes;
+ MemoryAccessAndParamDatas memoryAccess;
+};
+
+struct OpSubgroup2DBlockLoadINTEL
+{
+ OpSubgroup2DBlockLoadINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpSubgroup2DBlockLoadINTEL(Id elementSize, Id blockWidth, Id blockHeight, Id blockCount, Id srcBasePointer, Id memoryWidth, Id memoryHeight, Id memoryPitch, Id coordinate, Id dstPointer)
+ : op(Op::Subgroup2DBlockLoadINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->elementSize = elementSize;
+ this->blockWidth = blockWidth;
+ this->blockHeight = blockHeight;
+ this->blockCount = blockCount;
+ this->srcBasePointer = srcBasePointer;
+ this->memoryWidth = memoryWidth;
+ this->memoryHeight = memoryHeight;
+ this->memoryPitch = memoryPitch;
+ this->coordinate = coordinate;
+ this->dstPointer = dstPointer;
+ }
+
+ static constexpr Op OpCode = Op::Subgroup2DBlockLoadINTEL;
+ static constexpr uint16_t FixedWordSize = 11U;
+ Op op;
+ uint16_t wordCount;
+ Id elementSize;
+ Id blockWidth;
+ Id blockHeight;
+ Id blockCount;
+ Id srcBasePointer;
+ Id memoryWidth;
+ Id memoryHeight;
+ Id memoryPitch;
+ Id coordinate;
+ Id dstPointer;
+};
+
+struct OpSubgroup2DBlockLoadTransformINTEL
+{
+ OpSubgroup2DBlockLoadTransformINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpSubgroup2DBlockLoadTransformINTEL(Id elementSize, Id blockWidth, Id blockHeight, Id blockCount, Id srcBasePointer, Id memoryWidth, Id memoryHeight, Id memoryPitch, Id coordinate, Id dstPointer)
+ : op(Op::Subgroup2DBlockLoadTransformINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->elementSize = elementSize;
+ this->blockWidth = blockWidth;
+ this->blockHeight = blockHeight;
+ this->blockCount = blockCount;
+ this->srcBasePointer = srcBasePointer;
+ this->memoryWidth = memoryWidth;
+ this->memoryHeight = memoryHeight;
+ this->memoryPitch = memoryPitch;
+ this->coordinate = coordinate;
+ this->dstPointer = dstPointer;
+ }
+
+ static constexpr Op OpCode = Op::Subgroup2DBlockLoadTransformINTEL;
+ static constexpr uint16_t FixedWordSize = 11U;
+ Op op;
+ uint16_t wordCount;
+ Id elementSize;
+ Id blockWidth;
+ Id blockHeight;
+ Id blockCount;
+ Id srcBasePointer;
+ Id memoryWidth;
+ Id memoryHeight;
+ Id memoryPitch;
+ Id coordinate;
+ Id dstPointer;
+};
+
+struct OpSubgroup2DBlockLoadTransposeINTEL
+{
+ OpSubgroup2DBlockLoadTransposeINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpSubgroup2DBlockLoadTransposeINTEL(Id elementSize, Id blockWidth, Id blockHeight, Id blockCount, Id srcBasePointer, Id memoryWidth, Id memoryHeight, Id memoryPitch, Id coordinate, Id dstPointer)
+ : op(Op::Subgroup2DBlockLoadTransposeINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->elementSize = elementSize;
+ this->blockWidth = blockWidth;
+ this->blockHeight = blockHeight;
+ this->blockCount = blockCount;
+ this->srcBasePointer = srcBasePointer;
+ this->memoryWidth = memoryWidth;
+ this->memoryHeight = memoryHeight;
+ this->memoryPitch = memoryPitch;
+ this->coordinate = coordinate;
+ this->dstPointer = dstPointer;
+ }
+
+ static constexpr Op OpCode = Op::Subgroup2DBlockLoadTransposeINTEL;
+ static constexpr uint16_t FixedWordSize = 11U;
+ Op op;
+ uint16_t wordCount;
+ Id elementSize;
+ Id blockWidth;
+ Id blockHeight;
+ Id blockCount;
+ Id srcBasePointer;
+ Id memoryWidth;
+ Id memoryHeight;
+ Id memoryPitch;
+ Id coordinate;
+ Id dstPointer;
+};
+
+struct OpSubgroup2DBlockPrefetchINTEL
+{
+ OpSubgroup2DBlockPrefetchINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpSubgroup2DBlockPrefetchINTEL(Id elementSize, Id blockWidth, Id blockHeight, Id blockCount, Id srcBasePointer, Id memoryWidth, Id memoryHeight, Id memoryPitch, Id coordinate)
+ : op(Op::Subgroup2DBlockPrefetchINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->elementSize = elementSize;
+ this->blockWidth = blockWidth;
+ this->blockHeight = blockHeight;
+ this->blockCount = blockCount;
+ this->srcBasePointer = srcBasePointer;
+ this->memoryWidth = memoryWidth;
+ this->memoryHeight = memoryHeight;
+ this->memoryPitch = memoryPitch;
+ this->coordinate = coordinate;
+ }
+
+ static constexpr Op OpCode = Op::Subgroup2DBlockPrefetchINTEL;
+ static constexpr uint16_t FixedWordSize = 10U;
+ Op op;
+ uint16_t wordCount;
+ Id elementSize;
+ Id blockWidth;
+ Id blockHeight;
+ Id blockCount;
+ Id srcBasePointer;
+ Id memoryWidth;
+ Id memoryHeight;
+ Id memoryPitch;
+ Id coordinate;
+};
+
+struct OpSubgroup2DBlockStoreINTEL
+{
+ OpSubgroup2DBlockStoreINTEL(const ConstIter &it)
+ {
+ memcpy(this, it.words(), sizeof(*this));
+ }
+ OpSubgroup2DBlockStoreINTEL(Id elementSize, Id blockWidth, Id blockHeight, Id blockCount, Id srcPointer, Id dstBasePointer, Id memoryWidth, Id memoryHeight, Id memoryPitch, Id coordinate)
+ : op(Op::Subgroup2DBlockStoreINTEL)
+ , wordCount(FixedWordSize)
+ {
+ this->elementSize = elementSize;
+ this->blockWidth = blockWidth;
+ this->blockHeight = blockHeight;
+ this->blockCount = blockCount;
+ this->srcPointer = srcPointer;
+ this->dstBasePointer = dstBasePointer;
+ this->memoryWidth = memoryWidth;
+ this->memoryHeight = memoryHeight;
+ this->memoryPitch = memoryPitch;
+ this->coordinate = coordinate;
+ }
+
+ static constexpr Op OpCode = Op::Subgroup2DBlockStoreINTEL;
+ static constexpr uint16_t FixedWordSize = 11U;
+ Op op;
+ uint16_t wordCount;
+ Id elementSize;
+ Id blockWidth;
+ Id blockHeight;
+ Id blockCount;
+ Id srcPointer;
+ Id dstBasePointer;
+ Id memoryWidth;
+ Id memoryHeight;
+ Id memoryPitch;
+ Id coordinate;
+};
+
+struct OpSubgroupMatrixMultiplyAccumulateINTEL
+{
+ OpSubgroupMatrixMultiplyAccumulateINTEL(const ConstIter &it)
+ {
+ uint32_t word = 0;(void)word;
+ this->op = OpCode;
+ this->wordCount = (uint16_t)it.size();
+ this->resultType = Id::fromWord(it.word(1));
+ this->result = Id::fromWord(it.word(2));
+ this->kDim = Id::fromWord(it.word(3));
+ this->matrixA = Id::fromWord(it.word(4));
+ this->matrixB = Id::fromWord(it.word(5));
+ this->matrixC = Id::fromWord(it.word(6));
+ this->matrixMultiplyAccumulateOperands = (it.size() > 7) ? (MatrixMultiplyAccumulateOperands)it.word(7) : MatrixMultiplyAccumulateOperands::None;
+ }
+ OpSubgroupMatrixMultiplyAccumulateINTEL(IdResultType resultType, IdResult result, Id kDim, Id matrixA, Id matrixB, Id matrixC, MatrixMultiplyAccumulateOperands matrixMultiplyAccumulateOperands = MatrixMultiplyAccumulateOperands::None)
+ : op(Op::SubgroupMatrixMultiplyAccumulateINTEL)
+ , wordCount(MinWordSize + OptionalWordCount(matrixMultiplyAccumulateOperands))
+ {
+ this->resultType = resultType;
+ this->result = result;
+ this->kDim = kDim;
+ this->matrixA = matrixA;
+ this->matrixB = matrixB;
+ this->matrixC = matrixC;
+ this->matrixMultiplyAccumulateOperands = matrixMultiplyAccumulateOperands;
+ }
+ operator Operation() const
+ {
+ rdcarray words;
+ words.push_back(resultType.value());
+ words.push_back(result.value());
+ words.push_back(kDim.value());
+ words.push_back(matrixA.value());
+ words.push_back(matrixB.value());
+ words.push_back(matrixC.value());
+ if(matrixMultiplyAccumulateOperands != MatrixMultiplyAccumulateOperands::None) words.push_back((uint32_t)matrixMultiplyAccumulateOperands);
+ return Operation(OpCode, words);
+ }
+
+ static constexpr Op OpCode = Op::SubgroupMatrixMultiplyAccumulateINTEL;
+ static constexpr uint16_t MinWordSize = 7U;
+ Op op;
+ uint16_t wordCount;
+ IdResultType resultType;
+ IdResult result;
+ Id kDim;
+ Id matrixA;
+ Id matrixB;
+ Id matrixC;
+ MatrixMultiplyAccumulateOperands matrixMultiplyAccumulateOperands;
+
+ bool HasMatrixMultiplyAccumulateOperands() const { return wordCount > 7; }
+};
+
struct OpGroupIMulKHR
{
OpGroupIMulKHR(const ConstIter &it)
@@ -18818,7 +21198,8 @@ rdcstr ParamToStr(const std::function &idName, const rdcspv:
rdcstr ParamToStr(const std::function &idName, const rdcspv::LoopControlAndParamDatas &el);template<>
rdcstr ParamToStr(const std::function &idName, const rdcspv::MemoryAccessAndParamDatas &el);template<>
rdcstr ParamToStr(const std::function &idName, const rdcspv::ExecutionModeAndParamData &el);template<>
-rdcstr ParamToStr(const std::function &idName, const rdcspv::DecorationAndParamData &el);
+rdcstr ParamToStr(const std::function &idName, const rdcspv::DecorationAndParamData &el);template<>
+rdcstr ParamToStr(const std::function &idName, const rdcspv::TensorAddressingOperandsAndParamDatas &el);
template
inline rdcstr ParamsToStr(const std::function &idName, const rdcarray &ids)
diff --git a/renderdoc/driver/shaders/spirv/spirv_processor.cpp b/renderdoc/driver/shaders/spirv/spirv_processor.cpp
index f9df80f45..72111e615 100644
--- a/renderdoc/driver/shaders/spirv/spirv_processor.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_processor.cpp
@@ -461,7 +461,7 @@ void Processor::Parse(const rdcarray &spirvWords)
}
else if(opcode == Op::Decorate || opcode == Op::MemberDecorate || opcode == Op::GroupDecorate ||
opcode == Op::GroupMemberDecorate || opcode == Op::DecorationGroup ||
- opcode == Op::DecorateStringGOOGLE || opcode == Op::MemberDecorateStringGOOGLE)
+ opcode == Op::DecorateString || opcode == Op::MemberDecorateString)
{
START_SECTION(Section::Annotations);
}
diff --git a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp
index 311c27845..a7d18058b 100644
--- a/renderdoc/driver/shaders/spirv/spirv_reflect.cpp
+++ b/renderdoc/driver/shaders/spirv/spirv_reflect.cpp
@@ -1000,6 +1000,7 @@ void Reflector::MakeReflection(const GraphicsAPI sourceAPI, const ShaderStage st
case SourceLanguage::NZSL:
case SourceLanguage::WGSL:
case SourceLanguage::Zig:
+ case SourceLanguage::Rust:
case SourceLanguage::Max: break;
}