Update to SPIR-V 1.6

This commit is contained in:
baldurk
2022-01-25 13:10:37 +00:00
parent b63033c5e6
commit e0ed64d655
7 changed files with 741 additions and 140 deletions
+6 -4
View File
@@ -55,7 +55,7 @@
<id value="2" vendor="Valve" comment="Contact TBD"/>
<id value="3" vendor="Codeplay" comment="Contact Victor Lomuller, victor@codeplay.com"/>
<id value="4" vendor="NVIDIA" comment="Contact Kerch Holt, kholt@nvidia.com"/>
<id value="5" vendor="ARM" comment="Contact Alexander Galazin, alexander.galazin@arm.com"/>
<id value="5" vendor="ARM" comment="Contact Kevin Petit, kevin.petit@arm.com"/>
<id value="6" vendor="Khronos" tool="LLVM/SPIR-V Translator" comment="Contact Yaxun (Sam) Liu, yaxun.liu@amd.com"/>
<id value="7" vendor="Khronos" tool="SPIR-V Tools Assembler" comment="Contact David Neto, dneto@google.com"/>
<id value="8" vendor="Khronos" tool="Glslang Reference Front End" comment="Contact John Kessenich, johnkessenich@google.com"/>
@@ -82,7 +82,9 @@
<id value="29" vendor="Mikkosoft Productions" tool="MSP Shader Compiler" comment="Contact Mikko Rasa, tdb@tdb.fi"/>
<id value="30" vendor="SpvGenTwo community" tool="SpvGenTwo SPIR-V IR Tools" comment="https://github.com/rAzoR8/SpvGenTwo"/>
<id value="31" vendor="Google" tool="Skia SkSL" comment="Contact Ethan Nicholas, ethannicholas@google.com"/>
<unused start="32" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
<id value="32" vendor="TornadoVM" tool="SPIRV Beehive Toolkit" comment="https://github.com/beehive-lab/spirv-beehive-toolkit"/>
<id value="33" vendor="DragonJoker" tool="ShaderWriter" comment="Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter"/>
<unused start="34" end="0xFFFF" comment="Tool ID range reservable for future use by vendors"/>
</ids>
<!-- SECTION: SPIR-V Opcodes and Enumerants -->
@@ -119,7 +121,7 @@
<!-- Begin reservations of opcode enumerants -->
<ids type="opcode" start="0" end="4095" vendor="Khronos" comment="Reserved opcodes, not available to vendors - see the SPIR-V Specification"/>
<ids type="opcode" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
<ids type="opcode" start="4160" end="4415" vendor="ARM"/>
<ids type="opcode" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
<ids type="opcode" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
<ids type="opcode" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
<ids type="opcode" start="4992" end="5247" vendor="AMD"/>
@@ -148,7 +150,7 @@
<!-- Begin reservations of non-opcode enumerants -->
<ids type="enumerant" start="0" end="4095" vendor="Khronos" comment="Reserved enumerants, not available to vendors - see the SPIR-V Specification"/>
<ids type="enumerant" start="4096" end="4159" vendor="Mesa" comment="Contact TBD"/>
<ids type="enumerant" start="4160" end="4415" vendor="ARM"/>
<ids type="enumerant" start="4160" end="4415" vendor="ARM" comment="Contact kevin.petit@arm.com"/>
<ids type="enumerant" start="4416" end="4479" vendor="Khronos" comment="SPV_ARB_shader_ballot - contact Neil Henning, neil.henning@amd.com"/>
<ids type="enumerant" start="4480" end="4991" vendor="Qualcomm" comment="Contact weifengz@qti.qualcomm.com"/>
<ids type="enumerant" start="4992" end="5247" vendor="AMD"/>
@@ -26,8 +26,8 @@
],
"magic_number" : "0x07230203",
"major_version" : 1,
"minor_version" : 5,
"revision" : 4,
"minor_version" : 6,
"revision" : 1,
"instruction_printing_class" : [
{
"tag" : "@exclude"
@@ -1735,7 +1735,8 @@
{ "kind" : "IdRef", "name" : "'x'" },
{ "kind" : "IdRef", "name" : "'y'" }
],
"capabilities" : [ "Kernel" ]
"capabilities" : [ "Kernel" ],
"lastVersion" : "1.5"
},
{
"opname" : "OpOrdered",
@@ -4109,7 +4110,7 @@
"SPV_KHR_terminate_invocation"
],
"capabilities" : [ "Shader" ],
"version" : "None"
"version" : "1.6"
},
{
"opname" : "OpSubgroupBallotKHR",
@@ -4260,6 +4261,20 @@
"extensions" : [ "SPV_KHR_ray_tracing" ],
"version" : "None"
},
{
"opname" : "OpSDot",
"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" : [ "DotProduct" ],
"version" : "1.6"
},
{
"opname" : "OpSDotKHR",
"class" : "Arithmetic",
@@ -4272,7 +4287,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
"version" : "None"
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpUDot",
"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" : [ "DotProduct" ],
"version" : "1.6"
},
{
"opname" : "OpUDotKHR",
@@ -4286,7 +4316,22 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
"version" : "None"
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSUDot",
"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" : [ "DotProduct" ],
"version" : "1.6"
},
{
"opname" : "OpSUDotKHR",
@@ -4300,7 +4345,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
"version" : "None"
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSDotAccSat",
"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" : [ "DotProduct" ],
"version" : "1.6"
},
{
"opname" : "OpSDotAccSatKHR",
@@ -4315,7 +4376,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
"version" : "None"
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpUDotAccSat",
"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" : [ "DotProduct" ],
"version" : "1.6"
},
{
"opname" : "OpUDotAccSatKHR",
@@ -4330,7 +4407,23 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
"version" : "None"
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpSUDotAccSat",
"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" : [ "DotProduct" ],
"version" : "1.6"
},
{
"opname" : "OpSUDotAccSatKHR",
@@ -4345,7 +4438,8 @@
{ "kind" : "PackedVectorFormat", "name" : "'Packed Vector Format'", "quantifier" : "?" }
],
"capabilities" : [ "DotProductKHR" ],
"version" : "None"
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "1.6"
},
{
"opname" : "OpTypeRayQueryKHR",
@@ -4925,12 +5019,18 @@
"version" : "None"
},
{
"opname" : "OpDemoteToHelperInvocationEXT",
"class" : "Reserved",
"opname" : "OpDemoteToHelperInvocation",
"class" : "Control-Flow",
"opcode" : 5380,
"capabilities" : [ "DemoteToHelperInvocationEXT" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "None"
"capabilities" : [ "DemoteToHelperInvocation" ],
"version" : "1.6"
},
{
"opname" : "OpDemoteToHelperInvocationEXT",
"class" : "Control-Flow",
"opcode" : 5380,
"capabilities" : [ "DemoteToHelperInvocation" ],
"version" : "1.6"
},
{
"opname" : "OpIsHelperInvocationEXT",
@@ -4944,6 +5044,88 @@
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "None"
},
{
"opname" : "OpConvertUToImageNV",
"class" : "Reserved",
"opcode" : 5391,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertUToSamplerNV",
"class" : "Reserved",
"opcode" : 5392,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertImageToUNV",
"class" : "Reserved",
"opcode" : 5393,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertSamplerToUNV",
"class" : "Reserved",
"opcode" : 5394,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertUToSampledImageNV",
"class" : "Reserved",
"opcode" : 5395,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpConvertSampledImageToUNV",
"class" : "Reserved",
"opcode" : 5396,
"operands" : [
{ "kind" : "IdResultType" },
{ "kind" : "IdResult" },
{ "kind" : "IdRef", "name" : "'Operand'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpSamplerImageAddressingModeNV",
"class" : "Reserved",
"opcode" : 5397,
"operands" : [
{ "kind" : "LiteralInteger", "name" : "'Bit Width'" }
],
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"opname" : "OpSubgroupShuffleINTEL",
"class" : "Group",
@@ -5256,7 +5438,7 @@
"version" : "None"
},
{
"opname" : "OpConstFunctionPointerINTEL",
"opname" : "OpConstantFunctionPointerINTEL",
"class" : "@exclude",
"opcode" : 5600,
"operands" : [
@@ -8476,6 +8658,11 @@
"value" : "0x2000",
"version" : "1.4"
},
{
"enumerant" : "Nontemporal",
"value" : "0x4000",
"version" : "1.6"
},
{
"enumerant" : "Offsets",
"value" : "0x10000",
@@ -10795,12 +10982,12 @@
{
"enumerant" : "Uniform",
"value" : 26,
"capabilities" : [ "Shader" ]
"capabilities" : [ "Shader", "UniformDecoration" ]
},
{
"enumerant" : "UniformId",
"value" : 27,
"capabilities" : [ "Shader" ],
"capabilities" : [ "Shader", "UniformDecoration" ],
"parameters" : [
{ "kind" : "IdScope", "name" : "'Execution'" }
],
@@ -11032,11 +11219,18 @@
"extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None"
},
{
"enumerant" : "PerVertexKHR",
"value" : 5285,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "PerVertexNV",
"value" : 5285,
"capabilities" : [ "FragmentBarycentricNV" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@@ -11080,6 +11274,30 @@
"extensions" : [ "SPV_EXT_physical_storage_buffer" ],
"version" : "1.5"
},
{
"enumerant" : "BindlessSamplerNV",
"value" : 5398,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"enumerant" : "BindlessImageNV",
"value" : 5399,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"enumerant" : "BoundSamplerNV",
"value" : 5400,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"enumerant" : "BoundImageNV",
"value" : 5401,
"capabilities" : [ "BindlessTextureNV" ],
"version" : "None"
},
{
"enumerant" : "SIMTCallINTEL",
"value" : 5599,
@@ -11400,6 +11618,12 @@
"value" : 6087,
"capabilities" : [ "VectorComputeINTEL" ],
"version" : "None"
},
{
"enumerant" : "MediaBlockIOINTEL",
"value" : 6140,
"capabilities" : [ "VectorComputeINTEL" ],
"version" : "None"
}
]
},
@@ -11867,18 +12091,32 @@
"extensions" : [ "SPV_NV_mesh_shader" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordKHR",
"value" : 5286,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNV",
"value" : 5286,
"capabilities" : [ "FragmentBarycentricNV" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNoPerspKHR",
"value" : 5287,
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
"enumerant" : "BaryCoordNoPerspNV",
"value" : 5287,
"capabilities" : [ "FragmentBarycentricNV" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric" ],
"capabilities" : [ "FragmentBarycentricNV", "FragmentBarycentricKHR" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@@ -12603,6 +12841,11 @@
"value" : 70,
"version" : "1.5"
},
{
"enumerant" : "UniformDecoration",
"value" : 71,
"version" : "1.6"
},
{
"enumerant" : "FragmentShadingRateKHR",
"value" : 4422,
@@ -12928,10 +13171,16 @@
"extensions" : [ "SPV_NV_shader_image_footprint" ],
"version" : "None"
},
{
"enumerant" : "FragmentBarycentricKHR",
"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" ],
"extensions" : [ "SPV_NV_fragment_shader_barycentric", "SPV_KHR_fragment_shader_barycentric" ],
"version" : "None"
},
{
@@ -13214,11 +13463,23 @@
"extensions" : [ "SPV_EXT_fragment_shader_interlock" ],
"version" : "None"
},
{
"enumerant" : "DemoteToHelperInvocation",
"value" : 5379,
"capabilities" : [ "Shader" ],
"version" : "1.6"
},
{
"enumerant" : "DemoteToHelperInvocationEXT",
"value" : 5379,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_demote_to_helper_invocation" ],
"version" : "1.6"
},
{
"enumerant" : "BindlessTextureNV",
"value" : 5390,
"extensions" : [ "SPV_NV_bindless_texture" ],
"version" : "None"
},
{
@@ -13452,30 +13713,51 @@
"extensions" : [ "SPV_INTEL_fpga_reg" ],
"version" : "None"
},
{
"enumerant" : "DotProductInputAll",
"value" : 6016,
"version" : "1.6"
},
{
"enumerant" : "DotProductInputAllKHR",
"value" : 6016,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8Bit",
"value" : 6017,
"capabilities" : [ "Int8" ],
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitKHR",
"value" : 6017,
"capabilities" : [ "Int8" ],
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitPacked",
"value" : 6018,
"version" : "1.6"
},
{
"enumerant" : "DotProductInput4x8BitPackedKHR",
"value" : 6018,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "DotProduct",
"value" : 6019,
"version" : "1.6"
},
{
"enumerant" : "DotProductKHR",
"value" : 6019,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
},
{
"enumerant" : "BitInstructions",
@@ -13486,14 +13768,12 @@
{
"enumerant" : "AtomicFloat32AddEXT",
"value" : 6033,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None"
},
{
"enumerant" : "AtomicFloat64AddEXT",
"value" : 6034,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float_add" ],
"version" : "None"
},
@@ -13512,7 +13792,6 @@
{
"enumerant" : "AtomicFloat16AddEXT",
"value" : 6095,
"capabilities" : [ "Shader" ],
"extensions" : [ "SPV_EXT_shader_atomic_float16_add" ],
"version" : "None"
},
@@ -13588,11 +13867,16 @@
"category" : "ValueEnum",
"kind" : "PackedVectorFormat",
"enumerants" : [
{
"enumerant" : "PackedVectorFormat4x8Bit",
"value" : 0,
"version" : "1.6"
},
{
"enumerant" : "PackedVectorFormat4x8BitKHR",
"value" : 0,
"extensions" : [ "SPV_KHR_integer_dot_product" ],
"version" : "None"
"version" : "1.6"
}
]
},
@@ -3731,7 +3731,7 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray<ThreadState>
case Op::VariableLengthArrayINTEL:
case Op::TraceMotionNV:
case Op::TraceRayMotionNV:
case Op::ConstFunctionPointerINTEL:
case Op::ConstantFunctionPointerINTEL:
case Op::AsmTargetINTEL:
case Op::AsmCallINTEL:
case Op::SaveMemoryINTEL:
@@ -3794,6 +3794,13 @@ void ThreadState::StepNext(ShaderDebugState *state, const rdcarray<ThreadState>
case Op::TypeStructContinuedINTEL:
case Op::ConstantCompositeContinuedINTEL:
case Op::SpecConstantCompositeContinuedINTEL:
case Op::ConvertUToImageNV:
case Op::ConvertUToSamplerNV:
case Op::ConvertUToSampledImageNV:
case Op::ConvertImageToUNV:
case Op::ConvertSamplerToUNV:
case Op::ConvertSampledImageToUNV:
case Op::SamplerImageAddressingModeNV:
{
RDCERR("Unsupported extension opcode used %s", ToStr(opdata.op).c_str());
@@ -365,6 +365,7 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::Int64ImageEXT:
case Capability::ExpectAssumeKHR:
case Capability::BitInstructions:
case Capability::UniformDecoration:
{
supported = true;
break;
@@ -516,6 +517,7 @@ void Reflector::CheckDebuggable(bool &debuggable, rdcstr &debugStatus) const
case Capability::IOPipesINTEL:
case Capability::LongConstantCompositeINTEL:
case Capability::DebugInfoModuleINTEL:
case Capability::BindlessTextureNV:
case Capability::Max:
case Capability::Invalid:
{
+164 -58
View File
@@ -83,6 +83,7 @@ rdcstr DoStringise(const rdcspv::ImageOperands &el)
STRINGISE_BITFIELD_CLASS_BIT(VolatileTexel);
STRINGISE_BITFIELD_CLASS_BIT(SignExtend);
STRINGISE_BITFIELD_CLASS_BIT(ZeroExtend);
STRINGISE_BITFIELD_CLASS_BIT(Nontemporal);
STRINGISE_BITFIELD_CLASS_BIT(Offsets);
}
END_BITFIELD_STRINGISE();
@@ -738,10 +739,14 @@ rdcstr DoStringise(const rdcspv::Decoration &el)
STRINGISE_ENUM_CLASS(PerPrimitiveNV);
STRINGISE_ENUM_CLASS(PerViewNV);
STRINGISE_ENUM_CLASS(PerTaskNV);
STRINGISE_ENUM_CLASS(PerVertexNV);
STRINGISE_ENUM_CLASS(PerVertexKHR);
STRINGISE_ENUM_CLASS(NonUniform);
STRINGISE_ENUM_CLASS(RestrictPointer);
STRINGISE_ENUM_CLASS(AliasedPointer);
STRINGISE_ENUM_CLASS(BindlessSamplerNV);
STRINGISE_ENUM_CLASS(BindlessImageNV);
STRINGISE_ENUM_CLASS(BoundSamplerNV);
STRINGISE_ENUM_CLASS(BoundImageNV);
STRINGISE_ENUM_CLASS(SIMTCallINTEL);
STRINGISE_ENUM_CLASS(ReferencedIndirectlyINTEL);
STRINGISE_ENUM_CLASS(ClobberINTEL);
@@ -779,6 +784,7 @@ rdcstr DoStringise(const rdcspv::Decoration &el)
STRINGISE_ENUM_CLASS(FunctionFloatingPointModeINTEL);
STRINGISE_ENUM_CLASS(SingleElementVectorINTEL);
STRINGISE_ENUM_CLASS(VectorComputeCallableFunctionINTEL);
STRINGISE_ENUM_CLASS(MediaBlockIOINTEL);
}
END_ENUM_STRINGISE();
}
@@ -863,8 +869,8 @@ rdcstr DoStringise(const rdcspv::BuiltIn &el)
STRINGISE_ENUM_CLASS(LayerPerViewNV);
STRINGISE_ENUM_CLASS(MeshViewCountNV);
STRINGISE_ENUM_CLASS(MeshViewIndicesNV);
STRINGISE_ENUM_CLASS(BaryCoordNV);
STRINGISE_ENUM_CLASS(BaryCoordNoPerspNV);
STRINGISE_ENUM_CLASS(BaryCoordKHR);
STRINGISE_ENUM_CLASS(BaryCoordNoPerspKHR);
STRINGISE_ENUM_CLASS(FragSizeEXT);
STRINGISE_ENUM_CLASS(FragInvocationCountEXT);
STRINGISE_ENUM_CLASS(LaunchIdNV);
@@ -1009,6 +1015,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(GroupNonUniformQuad);
STRINGISE_ENUM_CLASS(ShaderLayer);
STRINGISE_ENUM_CLASS(ShaderViewportIndex);
STRINGISE_ENUM_CLASS(UniformDecoration);
STRINGISE_ENUM_CLASS(FragmentShadingRateKHR);
STRINGISE_ENUM_CLASS(SubgroupBallotKHR);
STRINGISE_ENUM_CLASS(DrawParameters);
@@ -1054,7 +1061,7 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(FragmentFullyCoveredEXT);
STRINGISE_ENUM_CLASS(MeshShadingNV);
STRINGISE_ENUM_CLASS(ImageFootprintNV);
STRINGISE_ENUM_CLASS(FragmentBarycentricNV);
STRINGISE_ENUM_CLASS(FragmentBarycentricKHR);
STRINGISE_ENUM_CLASS(ComputeDerivativeGroupQuadsNV);
STRINGISE_ENUM_CLASS(FragmentDensityEXT);
STRINGISE_ENUM_CLASS(GroupNonUniformPartitionedNV);
@@ -1082,7 +1089,8 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(FragmentShaderShadingRateInterlockEXT);
STRINGISE_ENUM_CLASS(ShaderSMBuiltinsNV);
STRINGISE_ENUM_CLASS(FragmentShaderPixelInterlockEXT);
STRINGISE_ENUM_CLASS(DemoteToHelperInvocationEXT);
STRINGISE_ENUM_CLASS(DemoteToHelperInvocation);
STRINGISE_ENUM_CLASS(BindlessTextureNV);
STRINGISE_ENUM_CLASS(SubgroupShuffleINTEL);
STRINGISE_ENUM_CLASS(SubgroupBufferBlockIOINTEL);
STRINGISE_ENUM_CLASS(SubgroupImageBlockIOINTEL);
@@ -1121,10 +1129,10 @@ rdcstr DoStringise(const rdcspv::Capability &el)
STRINGISE_ENUM_CLASS(IOPipesINTEL);
STRINGISE_ENUM_CLASS(BlockingPipesINTEL);
STRINGISE_ENUM_CLASS(FPGARegINTEL);
STRINGISE_ENUM_CLASS(DotProductInputAllKHR);
STRINGISE_ENUM_CLASS(DotProductInput4x8BitKHR);
STRINGISE_ENUM_CLASS(DotProductInput4x8BitPackedKHR);
STRINGISE_ENUM_CLASS(DotProductKHR);
STRINGISE_ENUM_CLASS(DotProductInputAll);
STRINGISE_ENUM_CLASS(DotProductInput4x8Bit);
STRINGISE_ENUM_CLASS(DotProductInput4x8BitPacked);
STRINGISE_ENUM_CLASS(DotProduct);
STRINGISE_ENUM_CLASS(BitInstructions);
STRINGISE_ENUM_CLASS(AtomicFloat32AddEXT);
STRINGISE_ENUM_CLASS(AtomicFloat64AddEXT);
@@ -1175,7 +1183,7 @@ rdcstr DoStringise(const rdcspv::PackedVectorFormat &el)
{
BEGIN_ENUM_STRINGISE(rdcspv::PackedVectorFormat);
{
STRINGISE_ENUM_CLASS(PackedVectorFormat4x8BitKHR);
STRINGISE_ENUM_CLASS(PackedVectorFormat4x8Bit);
}
END_ENUM_STRINGISE();
}
@@ -1541,12 +1549,12 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(ConvertUToAccelerationStructureKHR);
STRINGISE_ENUM_CLASS(IgnoreIntersectionKHR);
STRINGISE_ENUM_CLASS(TerminateRayKHR);
STRINGISE_ENUM_CLASS(SDotKHR);
STRINGISE_ENUM_CLASS(UDotKHR);
STRINGISE_ENUM_CLASS(SUDotKHR);
STRINGISE_ENUM_CLASS(SDotAccSatKHR);
STRINGISE_ENUM_CLASS(UDotAccSatKHR);
STRINGISE_ENUM_CLASS(SUDotAccSatKHR);
STRINGISE_ENUM_CLASS(SDot);
STRINGISE_ENUM_CLASS(UDot);
STRINGISE_ENUM_CLASS(SUDot);
STRINGISE_ENUM_CLASS(SDotAccSat);
STRINGISE_ENUM_CLASS(UDotAccSat);
STRINGISE_ENUM_CLASS(SUDotAccSat);
STRINGISE_ENUM_CLASS(TypeRayQueryKHR);
STRINGISE_ENUM_CLASS(RayQueryInitializeKHR);
STRINGISE_ENUM_CLASS(RayQueryTerminateKHR);
@@ -1583,8 +1591,15 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(CooperativeMatrixLengthNV);
STRINGISE_ENUM_CLASS(BeginInvocationInterlockEXT);
STRINGISE_ENUM_CLASS(EndInvocationInterlockEXT);
STRINGISE_ENUM_CLASS(DemoteToHelperInvocationEXT);
STRINGISE_ENUM_CLASS(DemoteToHelperInvocation);
STRINGISE_ENUM_CLASS(IsHelperInvocationEXT);
STRINGISE_ENUM_CLASS(ConvertUToImageNV);
STRINGISE_ENUM_CLASS(ConvertUToSamplerNV);
STRINGISE_ENUM_CLASS(ConvertImageToUNV);
STRINGISE_ENUM_CLASS(ConvertSamplerToUNV);
STRINGISE_ENUM_CLASS(ConvertUToSampledImageNV);
STRINGISE_ENUM_CLASS(ConvertSampledImageToUNV);
STRINGISE_ENUM_CLASS(SamplerImageAddressingModeNV);
STRINGISE_ENUM_CLASS(SubgroupShuffleINTEL);
STRINGISE_ENUM_CLASS(SubgroupShuffleDownINTEL);
STRINGISE_ENUM_CLASS(SubgroupShuffleUpINTEL);
@@ -1609,7 +1624,7 @@ rdcstr DoStringise(const rdcspv::Op &el)
STRINGISE_ENUM_CLASS(USubSatINTEL);
STRINGISE_ENUM_CLASS(IMul32x16INTEL);
STRINGISE_ENUM_CLASS(UMul32x16INTEL);
STRINGISE_ENUM_CLASS(ConstFunctionPointerINTEL);
STRINGISE_ENUM_CLASS(ConstantFunctionPointerINTEL);
STRINGISE_ENUM_CLASS(FunctionPointerCallINTEL);
STRINGISE_ENUM_CLASS(AsmTargetINTEL);
STRINGISE_ENUM_CLASS(AsmINTEL);
@@ -1893,6 +1908,8 @@ rdcstr ParamToStr(const std::function<rdcstr(rdcspv::Id)> &idName, const rdcspv:
ret += "SignExtend" ", ";
if(el.flags & ImageOperands::ZeroExtend)
ret += "ZeroExtend" ", ";
if(el.flags & ImageOperands::Nontemporal)
ret += "Nontemporal" ", ";
if(el.flags & ImageOperands::Offsets)
ret += "Offsets" "(" + idName(el.offsets) + ")" ", ";
@@ -4090,39 +4107,39 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
break;
case rdcspv::Op::TerminateRayKHR:
break;
case rdcspv::Op::SDotKHR:
case rdcspv::Op::SDot:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
callback(Id::fromWord(it.word(4)), false);
break;
case rdcspv::Op::UDotKHR:
case rdcspv::Op::UDot:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
callback(Id::fromWord(it.word(4)), false);
break;
case rdcspv::Op::SUDotKHR:
case rdcspv::Op::SUDot:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
callback(Id::fromWord(it.word(4)), false);
break;
case rdcspv::Op::SDotAccSatKHR:
case rdcspv::Op::SDotAccSat:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
callback(Id::fromWord(it.word(4)), false);
callback(Id::fromWord(it.word(5)), false);
break;
case rdcspv::Op::UDotAccSatKHR:
case rdcspv::Op::UDotAccSat:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
callback(Id::fromWord(it.word(4)), false);
callback(Id::fromWord(it.word(5)), false);
break;
case rdcspv::Op::SUDotAccSatKHR:
case rdcspv::Op::SUDotAccSat:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
@@ -4340,12 +4357,44 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
break;
case rdcspv::Op::EndInvocationInterlockEXT:
break;
case rdcspv::Op::DemoteToHelperInvocationEXT:
case rdcspv::Op::DemoteToHelperInvocation:
break;
case rdcspv::Op::IsHelperInvocationEXT:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
break;
case rdcspv::Op::ConvertUToImageNV:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
break;
case rdcspv::Op::ConvertUToSamplerNV:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
break;
case rdcspv::Op::ConvertImageToUNV:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
break;
case rdcspv::Op::ConvertSamplerToUNV:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
break;
case rdcspv::Op::ConvertUToSampledImageNV:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
break;
case rdcspv::Op::ConvertSampledImageToUNV:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
break;
case rdcspv::Op::SamplerImageAddressingModeNV:
break;
case rdcspv::Op::SubgroupShuffleINTEL:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
@@ -4489,7 +4538,7 @@ void OpDecoder::ForEachID(const ConstIter &it, const std::function<void(Id,bool)
callback(Id::fromWord(it.word(3)), false);
callback(Id::fromWord(it.word(4)), false);
break;
case rdcspv::Op::ConstFunctionPointerINTEL:
case rdcspv::Op::ConstantFunctionPointerINTEL:
callback(Id::fromWord(it.word(1)), false);
callback(Id::fromWord(it.word(2)), true);
callback(Id::fromWord(it.word(3)), false);
@@ -8122,46 +8171,46 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
ret += "TerminateRayKHR(" ")";
break;
}
case rdcspv::Op::SDotKHR:
case rdcspv::Op::SDot:
{
OpSDotKHR decoded(it);
OpSDot decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "SDotKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
ret += "SDot(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
break;
}
case rdcspv::Op::UDotKHR:
case rdcspv::Op::UDot:
{
OpUDotKHR decoded(it);
OpUDot decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "UDotKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
ret += "UDot(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
break;
}
case rdcspv::Op::SUDotKHR:
case rdcspv::Op::SUDot:
{
OpSUDotKHR decoded(it);
OpSUDot decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "SUDotKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
ret += "SUDot(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
break;
}
case rdcspv::Op::SDotAccSatKHR:
case rdcspv::Op::SDotAccSat:
{
OpSDotAccSatKHR decoded(it);
OpSDotAccSat decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "SDotAccSatKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
ret += "SDotAccSat(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
break;
}
case rdcspv::Op::UDotAccSatKHR:
case rdcspv::Op::UDotAccSat:
{
OpUDotAccSatKHR decoded(it);
OpUDotAccSat decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "UDotAccSatKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
ret += "UDotAccSat(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
break;
}
case rdcspv::Op::SUDotAccSatKHR:
case rdcspv::Op::SUDotAccSat:
{
OpSUDotAccSatKHR decoded(it);
OpSUDotAccSat decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "SUDotAccSatKHR(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
ret += "SUDotAccSat(" + ParamToStr(idName, decoded.vector1) + ", " + ParamToStr(idName, decoded.vector2) + ", " + ParamToStr(idName, decoded.accumulator) + ", " + ParamToStr(idName, decoded.packedVectorFormat) + ")";
break;
}
case rdcspv::Op::TypeRayQueryKHR:
@@ -8402,10 +8451,10 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
ret += "EndInvocationInterlockEXT(" ")";
break;
}
case rdcspv::Op::DemoteToHelperInvocationEXT:
case rdcspv::Op::DemoteToHelperInvocation:
{
OpDemoteToHelperInvocationEXT decoded(it);
ret += "DemoteToHelperInvocationEXT(" ")";
OpDemoteToHelperInvocation decoded(it);
ret += "DemoteToHelperInvocation(" ")";
break;
}
case rdcspv::Op::IsHelperInvocationEXT:
@@ -8415,6 +8464,54 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
ret += "IsHelperInvocationEXT(" ")";
break;
}
case rdcspv::Op::ConvertUToImageNV:
{
OpConvertUToImageNV decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "ConvertUToImageNV(" + ParamToStr(idName, decoded.operand) + ")";
break;
}
case rdcspv::Op::ConvertUToSamplerNV:
{
OpConvertUToSamplerNV decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "ConvertUToSamplerNV(" + ParamToStr(idName, decoded.operand) + ")";
break;
}
case rdcspv::Op::ConvertImageToUNV:
{
OpConvertImageToUNV decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "ConvertImageToUNV(" + ParamToStr(idName, decoded.operand) + ")";
break;
}
case rdcspv::Op::ConvertSamplerToUNV:
{
OpConvertSamplerToUNV decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "ConvertSamplerToUNV(" + ParamToStr(idName, decoded.operand) + ")";
break;
}
case rdcspv::Op::ConvertUToSampledImageNV:
{
OpConvertUToSampledImageNV decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "ConvertUToSampledImageNV(" + ParamToStr(idName, decoded.operand) + ")";
break;
}
case rdcspv::Op::ConvertSampledImageToUNV:
{
OpConvertSampledImageToUNV decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "ConvertSampledImageToUNV(" + ParamToStr(idName, decoded.operand) + ")";
break;
}
case rdcspv::Op::SamplerImageAddressingModeNV:
{
OpSamplerImageAddressingModeNV decoded(it);
ret += "SamplerImageAddressingModeNV(" + ParamToStr(idName, decoded.bitWidth) + ")";
break;
}
case rdcspv::Op::SubgroupShuffleINTEL:
{
OpSubgroupShuffleINTEL decoded(it);
@@ -8580,11 +8677,11 @@ rdcstr OpDecoder::Disassemble(const ConstIter &it, const std::function<rdcstr(Id
ret += "UMul32x16INTEL(" + ParamToStr(idName, decoded.operand1) + ", " + ParamToStr(idName, decoded.operand2) + ")";
break;
}
case rdcspv::Op::ConstFunctionPointerINTEL:
case rdcspv::Op::ConstantFunctionPointerINTEL:
{
OpConstFunctionPointerINTEL decoded(it);
OpConstantFunctionPointerINTEL decoded(it);
ret += declName(decoded.resultType, decoded.result) + " = ";
ret += "ConstFunctionPointerINTEL(" + ParamToStr(idName, decoded.function) + ")";
ret += "ConstantFunctionPointerINTEL(" + ParamToStr(idName, decoded.function) + ")";
break;
}
case rdcspv::Op::FunctionPointerCallINTEL:
@@ -10423,12 +10520,12 @@ OpDecoder::OpDecoder(const ConstIter &it)
case rdcspv::Op::ConvertUToAccelerationStructureKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::IgnoreIntersectionKHR: result = Id(); resultType = Id(); break;
case rdcspv::Op::TerminateRayKHR: result = Id(); resultType = Id(); break;
case rdcspv::Op::SDotKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::UDotKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SUDotKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SDotAccSatKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::UDotAccSatKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SUDotAccSatKHR: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SDot: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::UDot: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SUDot: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SDotAccSat: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::UDotAccSat: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SUDotAccSat: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::TypeRayQueryKHR: result = Id::fromWord(it.word(1)); resultType = Id(); break;
case rdcspv::Op::RayQueryInitializeKHR: result = Id(); resultType = Id(); break;
case rdcspv::Op::RayQueryTerminateKHR: result = Id(); resultType = Id(); break;
@@ -10465,8 +10562,15 @@ OpDecoder::OpDecoder(const ConstIter &it)
case rdcspv::Op::CooperativeMatrixLengthNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::BeginInvocationInterlockEXT: result = Id(); resultType = Id(); break;
case rdcspv::Op::EndInvocationInterlockEXT: result = Id(); resultType = Id(); break;
case rdcspv::Op::DemoteToHelperInvocationEXT: result = Id(); resultType = Id(); break;
case rdcspv::Op::DemoteToHelperInvocation: result = Id(); resultType = Id(); break;
case rdcspv::Op::IsHelperInvocationEXT: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConvertUToImageNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConvertUToSamplerNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConvertImageToUNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConvertSamplerToUNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConvertUToSampledImageNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConvertSampledImageToUNV: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SamplerImageAddressingModeNV: result = Id(); resultType = Id(); break;
case rdcspv::Op::SubgroupShuffleINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SubgroupShuffleDownINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::SubgroupShuffleUpINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
@@ -10491,7 +10595,7 @@ OpDecoder::OpDecoder(const ConstIter &it)
case rdcspv::Op::USubSatINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::IMul32x16INTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::UMul32x16INTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConstFunctionPointerINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::ConstantFunctionPointerINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::FunctionPointerCallINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::AsmTargetINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
case rdcspv::Op::AsmINTEL: result = Id::fromWord(it.word(2)); resultType = Id::fromWord(it.word(1)); break;
@@ -10826,6 +10930,8 @@ rdcstr DoStringise(const rdcspv::Generator &el)
STRINGISE_ENUM_CLASS_NAMED(MSPShaderCompiler, "MSP Shader Compiler from Mikkosoft Productions - Contact Mikko Rasa, tdb@tdb.fi");
STRINGISE_ENUM_CLASS_NAMED(SpvGenTwoSPIRVIRTools, "SpvGenTwo SPIR-V IR Tools from SpvGenTwo community - https://github.com/rAzoR8/SpvGenTwo");
STRINGISE_ENUM_CLASS_NAMED(SkiaSkSL, "Skia SkSL from Google - Contact Ethan Nicholas, ethannicholas@google.com");
STRINGISE_ENUM_CLASS_NAMED(SPIRVBeehiveToolkit, "SPIRV Beehive Toolkit from TornadoVM - https://github.com/beehive-lab/spirv-beehive-toolkit");
STRINGISE_ENUM_CLASS_NAMED(ShaderWriter, "ShaderWriter from DragonJoker - Contact Sylvain Doremus, https://github.com/DragonJoker/ShaderWriter");
}
END_ENUM_STRINGISE();
}
+40 -4
View File
@@ -71,9 +71,9 @@ namespace rdcspv
{
static const uint32_t MagicNumber = 0x07230203;
static const uint32_t VersionMajor = 1;
static const uint32_t VersionMinor = 5;
static const uint32_t VersionRevision = 4;
static const uint32_t VersionPacked = (1 << 16) | (5 << 8);
static const uint32_t VersionMinor = 6;
static const uint32_t VersionRevision = 1;
static const uint32_t VersionPacked = (1 << 16) | (6 << 8);
static const uint32_t OpCodeMask = 0xffff;
static const uint32_t WordCountShift = 16;
static const uint32_t FirstRealWord = 5;
@@ -120,6 +120,8 @@ enum class Generator : uint32_t
MSPShaderCompiler = 29,
SpvGenTwoSPIRVIRTools = 30,
SkiaSkSL = 31,
SPIRVBeehiveToolkit = 32,
ShaderWriter = 33,
};
enum class ImageOperands : uint32_t
@@ -143,6 +145,7 @@ enum class ImageOperands : uint32_t
VolatileTexelKHR = 0x0800,
SignExtend = 0x1000,
ZeroExtend = 0x2000,
Nontemporal = 0x4000,
Offsets = 0x10000,
Max,
Invalid = ~0U,
@@ -744,6 +747,7 @@ enum class Decoration : uint32_t
PerPrimitiveNV = 5271,
PerViewNV = 5272,
PerTaskNV = 5273,
PerVertexKHR = 5285,
PerVertexNV = 5285,
NonUniform = 5300,
NonUniformEXT = 5300,
@@ -751,6 +755,10 @@ enum class Decoration : uint32_t
RestrictPointerEXT = 5355,
AliasedPointer = 5356,
AliasedPointerEXT = 5356,
BindlessSamplerNV = 5398,
BindlessImageNV = 5399,
BoundSamplerNV = 5400,
BoundImageNV = 5401,
SIMTCallINTEL = 5599,
ReferencedIndirectlyINTEL = 5602,
ClobberINTEL = 5607,
@@ -790,6 +798,7 @@ enum class Decoration : uint32_t
FunctionFloatingPointModeINTEL = 6080,
SingleElementVectorINTEL = 6085,
VectorComputeCallableFunctionINTEL = 6087,
MediaBlockIOINTEL = 6140,
Max,
Invalid = ~0U,
};
@@ -876,7 +885,9 @@ enum class BuiltIn : uint32_t
LayerPerViewNV = 5279,
MeshViewCountNV = 5280,
MeshViewIndicesNV = 5281,
BaryCoordKHR = 5286,
BaryCoordNV = 5286,
BaryCoordNoPerspKHR = 5287,
BaryCoordNoPerspNV = 5287,
FragSizeEXT = 5292,
FragmentSizeNV = 5292,
@@ -1026,6 +1037,7 @@ enum class Capability : uint32_t
GroupNonUniformQuad = 68,
ShaderLayer = 69,
ShaderViewportIndex = 70,
UniformDecoration = 71,
FragmentShadingRateKHR = 4422,
SubgroupBallotKHR = 4423,
DrawParameters = 4427,
@@ -1074,6 +1086,7 @@ enum class Capability : uint32_t
FragmentFullyCoveredEXT = 5265,
MeshShadingNV = 5266,
ImageFootprintNV = 5282,
FragmentBarycentricKHR = 5284,
FragmentBarycentricNV = 5284,
ComputeDerivativeGroupQuadsNV = 5288,
FragmentDensityEXT = 5291,
@@ -1118,7 +1131,9 @@ enum class Capability : uint32_t
FragmentShaderShadingRateInterlockEXT = 5372,
ShaderSMBuiltinsNV = 5373,
FragmentShaderPixelInterlockEXT = 5378,
DemoteToHelperInvocation = 5379,
DemoteToHelperInvocationEXT = 5379,
BindlessTextureNV = 5390,
SubgroupShuffleINTEL = 5568,
SubgroupBufferBlockIOINTEL = 5569,
SubgroupImageBlockIOINTEL = 5570,
@@ -1157,9 +1172,13 @@ enum class Capability : uint32_t
IOPipesINTEL = 5943,
BlockingPipesINTEL = 5945,
FPGARegINTEL = 5948,
DotProductInputAll = 6016,
DotProductInputAllKHR = 6016,
DotProductInput4x8Bit = 6017,
DotProductInput4x8BitKHR = 6017,
DotProductInput4x8BitPacked = 6018,
DotProductInput4x8BitPackedKHR = 6018,
DotProduct = 6019,
DotProductKHR = 6019,
BitInstructions = 6025,
AtomicFloat32AddEXT = 6033,
@@ -1199,6 +1218,7 @@ enum class RayQueryCandidateIntersectionType : uint32_t
enum class PackedVectorFormat : uint32_t
{
PackedVectorFormat4x8Bit = 0,
PackedVectorFormat4x8BitKHR = 0,
Max,
Invalid = ~0U,
@@ -1276,6 +1296,8 @@ struct ImageOperandsAndParamDatas
void unsetSignExtend() { flags &= ~ImageOperands::SignExtend; }
void setZeroExtend() { flags |= ImageOperands::ZeroExtend; }
void unsetZeroExtend() { flags &= ~ImageOperands::ZeroExtend; }
void setNontemporal() { flags |= ImageOperands::Nontemporal; }
void unsetNontemporal() { flags &= ~ImageOperands::Nontemporal; }
void setOffsets(Id offsetsParam) { flags |= ImageOperands::Offsets; offsets = offsetsParam; }
void unsetOffsets() { flags &= ~ImageOperands::Offsets; }
};
@@ -1874,11 +1896,17 @@ enum class Op : uint16_t
ConvertUToAccelerationStructureKHR = 4447,
IgnoreIntersectionKHR = 4448,
TerminateRayKHR = 4449,
SDot = 4450,
SDotKHR = 4450,
UDot = 4451,
UDotKHR = 4451,
SUDot = 4452,
SUDotKHR = 4452,
SDotAccSat = 4453,
SDotAccSatKHR = 4453,
UDotAccSat = 4454,
UDotAccSatKHR = 4454,
SUDotAccSat = 4455,
SUDotAccSatKHR = 4455,
TypeRayQueryKHR = 4472,
RayQueryInitializeKHR = 4473,
@@ -1918,8 +1946,16 @@ enum class Op : uint16_t
CooperativeMatrixLengthNV = 5362,
BeginInvocationInterlockEXT = 5364,
EndInvocationInterlockEXT = 5365,
DemoteToHelperInvocation = 5380,
DemoteToHelperInvocationEXT = 5380,
IsHelperInvocationEXT = 5381,
ConvertUToImageNV = 5391,
ConvertUToSamplerNV = 5392,
ConvertImageToUNV = 5393,
ConvertSamplerToUNV = 5394,
ConvertUToSampledImageNV = 5395,
ConvertSampledImageToUNV = 5396,
SamplerImageAddressingModeNV = 5397,
SubgroupShuffleINTEL = 5571,
SubgroupShuffleDownINTEL = 5572,
SubgroupShuffleUpINTEL = 5573,
@@ -1944,7 +1980,7 @@ enum class Op : uint16_t
USubSatINTEL = 5596,
IMul32x16INTEL = 5597,
UMul32x16INTEL = 5598,
ConstFunctionPointerINTEL = 5600,
ConstantFunctionPointerINTEL = 5600,
FunctionPointerCallINTEL = 5601,
AsmTargetINTEL = 5609,
AsmINTEL = 5610,
+204 -40
View File
@@ -12672,9 +12672,9 @@ struct OpTerminateRayKHR
// no operands
};
struct OpSDotKHR
struct OpSDot
{
OpSDotKHR(const ConstIter &it)
OpSDot(const ConstIter &it)
{
uint32_t word = 0;(void)word;
this->op = OpCode;
@@ -12685,8 +12685,8 @@ struct OpSDotKHR
this->vector2 = Id::fromWord(it.word(4));
this->packedVectorFormat = (it.size() > 5) ? (PackedVectorFormat)it.word(5) : PackedVectorFormat::Invalid;
}
OpSDotKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SDotKHR)
OpSDot(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SDot)
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
{
this->resultType = resultType;
@@ -12706,7 +12706,7 @@ struct OpSDotKHR
return Operation(OpCode, words);
}
static constexpr Op OpCode = Op::SDotKHR;
static constexpr Op OpCode = Op::SDot;
static constexpr uint16_t MinWordSize = 5U;
Op op;
uint16_t wordCount;
@@ -12719,9 +12719,9 @@ struct OpSDotKHR
bool HasPackedVectorFormat() const { return wordCount > 5; }
};
struct OpUDotKHR
struct OpUDot
{
OpUDotKHR(const ConstIter &it)
OpUDot(const ConstIter &it)
{
uint32_t word = 0;(void)word;
this->op = OpCode;
@@ -12732,8 +12732,8 @@ struct OpUDotKHR
this->vector2 = Id::fromWord(it.word(4));
this->packedVectorFormat = (it.size() > 5) ? (PackedVectorFormat)it.word(5) : PackedVectorFormat::Invalid;
}
OpUDotKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::UDotKHR)
OpUDot(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::UDot)
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
{
this->resultType = resultType;
@@ -12753,7 +12753,7 @@ struct OpUDotKHR
return Operation(OpCode, words);
}
static constexpr Op OpCode = Op::UDotKHR;
static constexpr Op OpCode = Op::UDot;
static constexpr uint16_t MinWordSize = 5U;
Op op;
uint16_t wordCount;
@@ -12766,9 +12766,9 @@ struct OpUDotKHR
bool HasPackedVectorFormat() const { return wordCount > 5; }
};
struct OpSUDotKHR
struct OpSUDot
{
OpSUDotKHR(const ConstIter &it)
OpSUDot(const ConstIter &it)
{
uint32_t word = 0;(void)word;
this->op = OpCode;
@@ -12779,8 +12779,8 @@ struct OpSUDotKHR
this->vector2 = Id::fromWord(it.word(4));
this->packedVectorFormat = (it.size() > 5) ? (PackedVectorFormat)it.word(5) : PackedVectorFormat::Invalid;
}
OpSUDotKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SUDotKHR)
OpSUDot(IdResultType resultType, IdResult result, Id vector1, Id vector2, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SUDot)
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
{
this->resultType = resultType;
@@ -12800,7 +12800,7 @@ struct OpSUDotKHR
return Operation(OpCode, words);
}
static constexpr Op OpCode = Op::SUDotKHR;
static constexpr Op OpCode = Op::SUDot;
static constexpr uint16_t MinWordSize = 5U;
Op op;
uint16_t wordCount;
@@ -12813,9 +12813,9 @@ struct OpSUDotKHR
bool HasPackedVectorFormat() const { return wordCount > 5; }
};
struct OpSDotAccSatKHR
struct OpSDotAccSat
{
OpSDotAccSatKHR(const ConstIter &it)
OpSDotAccSat(const ConstIter &it)
{
uint32_t word = 0;(void)word;
this->op = OpCode;
@@ -12827,8 +12827,8 @@ struct OpSDotAccSatKHR
this->accumulator = Id::fromWord(it.word(5));
this->packedVectorFormat = (it.size() > 6) ? (PackedVectorFormat)it.word(6) : PackedVectorFormat::Invalid;
}
OpSDotAccSatKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SDotAccSatKHR)
OpSDotAccSat(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SDotAccSat)
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
{
this->resultType = resultType;
@@ -12850,7 +12850,7 @@ struct OpSDotAccSatKHR
return Operation(OpCode, words);
}
static constexpr Op OpCode = Op::SDotAccSatKHR;
static constexpr Op OpCode = Op::SDotAccSat;
static constexpr uint16_t MinWordSize = 6U;
Op op;
uint16_t wordCount;
@@ -12864,9 +12864,9 @@ struct OpSDotAccSatKHR
bool HasPackedVectorFormat() const { return wordCount > 6; }
};
struct OpUDotAccSatKHR
struct OpUDotAccSat
{
OpUDotAccSatKHR(const ConstIter &it)
OpUDotAccSat(const ConstIter &it)
{
uint32_t word = 0;(void)word;
this->op = OpCode;
@@ -12878,8 +12878,8 @@ struct OpUDotAccSatKHR
this->accumulator = Id::fromWord(it.word(5));
this->packedVectorFormat = (it.size() > 6) ? (PackedVectorFormat)it.word(6) : PackedVectorFormat::Invalid;
}
OpUDotAccSatKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::UDotAccSatKHR)
OpUDotAccSat(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::UDotAccSat)
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
{
this->resultType = resultType;
@@ -12901,7 +12901,7 @@ struct OpUDotAccSatKHR
return Operation(OpCode, words);
}
static constexpr Op OpCode = Op::UDotAccSatKHR;
static constexpr Op OpCode = Op::UDotAccSat;
static constexpr uint16_t MinWordSize = 6U;
Op op;
uint16_t wordCount;
@@ -12915,9 +12915,9 @@ struct OpUDotAccSatKHR
bool HasPackedVectorFormat() const { return wordCount > 6; }
};
struct OpSUDotAccSatKHR
struct OpSUDotAccSat
{
OpSUDotAccSatKHR(const ConstIter &it)
OpSUDotAccSat(const ConstIter &it)
{
uint32_t word = 0;(void)word;
this->op = OpCode;
@@ -12929,8 +12929,8 @@ struct OpSUDotAccSatKHR
this->accumulator = Id::fromWord(it.word(5));
this->packedVectorFormat = (it.size() > 6) ? (PackedVectorFormat)it.word(6) : PackedVectorFormat::Invalid;
}
OpSUDotAccSatKHR(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SUDotAccSatKHR)
OpSUDotAccSat(IdResultType resultType, IdResult result, Id vector1, Id vector2, Id accumulator, PackedVectorFormat packedVectorFormat = PackedVectorFormat::Invalid)
: op(Op::SUDotAccSat)
, wordCount(MinWordSize + OptionalWordCount(packedVectorFormat))
{
this->resultType = resultType;
@@ -12952,7 +12952,7 @@ struct OpSUDotAccSatKHR
return Operation(OpCode, words);
}
static constexpr Op OpCode = Op::SUDotAccSatKHR;
static constexpr Op OpCode = Op::SUDotAccSat;
static constexpr uint16_t MinWordSize = 6U;
Op op;
uint16_t wordCount;
@@ -13982,20 +13982,20 @@ struct OpEndInvocationInterlockEXT
// no operands
};
struct OpDemoteToHelperInvocationEXT
struct OpDemoteToHelperInvocation
{
OpDemoteToHelperInvocationEXT(const ConstIter &it)
OpDemoteToHelperInvocation(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpDemoteToHelperInvocationEXT()
: op(Op::DemoteToHelperInvocationEXT)
OpDemoteToHelperInvocation()
: op(Op::DemoteToHelperInvocation)
, wordCount(FixedWordSize)
{
// no operands
}
static constexpr Op OpCode = Op::DemoteToHelperInvocationEXT;
static constexpr Op OpCode = Op::DemoteToHelperInvocation;
static constexpr uint16_t FixedWordSize = 1U;
Op op;
uint16_t wordCount;
@@ -14024,6 +14024,170 @@ struct OpIsHelperInvocationEXT
IdResult result;
};
struct OpConvertUToImageNV
{
OpConvertUToImageNV(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpConvertUToImageNV(IdResultType resultType, IdResult result, Id operand)
: op(Op::ConvertUToImageNV)
, wordCount(FixedWordSize)
{
this->resultType = resultType;
this->result = result;
this->operand = operand;
}
static constexpr Op OpCode = Op::ConvertUToImageNV;
static constexpr uint16_t FixedWordSize = 4U;
Op op;
uint16_t wordCount;
IdResultType resultType;
IdResult result;
Id operand;
};
struct OpConvertUToSamplerNV
{
OpConvertUToSamplerNV(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpConvertUToSamplerNV(IdResultType resultType, IdResult result, Id operand)
: op(Op::ConvertUToSamplerNV)
, wordCount(FixedWordSize)
{
this->resultType = resultType;
this->result = result;
this->operand = operand;
}
static constexpr Op OpCode = Op::ConvertUToSamplerNV;
static constexpr uint16_t FixedWordSize = 4U;
Op op;
uint16_t wordCount;
IdResultType resultType;
IdResult result;
Id operand;
};
struct OpConvertImageToUNV
{
OpConvertImageToUNV(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpConvertImageToUNV(IdResultType resultType, IdResult result, Id operand)
: op(Op::ConvertImageToUNV)
, wordCount(FixedWordSize)
{
this->resultType = resultType;
this->result = result;
this->operand = operand;
}
static constexpr Op OpCode = Op::ConvertImageToUNV;
static constexpr uint16_t FixedWordSize = 4U;
Op op;
uint16_t wordCount;
IdResultType resultType;
IdResult result;
Id operand;
};
struct OpConvertSamplerToUNV
{
OpConvertSamplerToUNV(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpConvertSamplerToUNV(IdResultType resultType, IdResult result, Id operand)
: op(Op::ConvertSamplerToUNV)
, wordCount(FixedWordSize)
{
this->resultType = resultType;
this->result = result;
this->operand = operand;
}
static constexpr Op OpCode = Op::ConvertSamplerToUNV;
static constexpr uint16_t FixedWordSize = 4U;
Op op;
uint16_t wordCount;
IdResultType resultType;
IdResult result;
Id operand;
};
struct OpConvertUToSampledImageNV
{
OpConvertUToSampledImageNV(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpConvertUToSampledImageNV(IdResultType resultType, IdResult result, Id operand)
: op(Op::ConvertUToSampledImageNV)
, wordCount(FixedWordSize)
{
this->resultType = resultType;
this->result = result;
this->operand = operand;
}
static constexpr Op OpCode = Op::ConvertUToSampledImageNV;
static constexpr uint16_t FixedWordSize = 4U;
Op op;
uint16_t wordCount;
IdResultType resultType;
IdResult result;
Id operand;
};
struct OpConvertSampledImageToUNV
{
OpConvertSampledImageToUNV(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpConvertSampledImageToUNV(IdResultType resultType, IdResult result, Id operand)
: op(Op::ConvertSampledImageToUNV)
, wordCount(FixedWordSize)
{
this->resultType = resultType;
this->result = result;
this->operand = operand;
}
static constexpr Op OpCode = Op::ConvertSampledImageToUNV;
static constexpr uint16_t FixedWordSize = 4U;
Op op;
uint16_t wordCount;
IdResultType resultType;
IdResult result;
Id operand;
};
struct OpSamplerImageAddressingModeNV
{
OpSamplerImageAddressingModeNV(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpSamplerImageAddressingModeNV(uint32_t bitWidth)
: op(Op::SamplerImageAddressingModeNV)
, wordCount(FixedWordSize)
{
this->bitWidth = bitWidth;
}
static constexpr Op OpCode = Op::SamplerImageAddressingModeNV;
static constexpr uint16_t FixedWordSize = 2U;
Op op;
uint16_t wordCount;
uint32_t bitWidth;
};
struct OpSubgroupShuffleINTEL
{
OpSubgroupShuffleINTEL(const ConstIter &it)
@@ -14646,14 +14810,14 @@ struct OpUMul32x16INTEL
Id operand2;
};
struct OpConstFunctionPointerINTEL
struct OpConstantFunctionPointerINTEL
{
OpConstFunctionPointerINTEL(const ConstIter &it)
OpConstantFunctionPointerINTEL(const ConstIter &it)
{
memcpy(this, it.words(), sizeof(*this));
}
OpConstFunctionPointerINTEL(IdResultType resultType, IdResult result, Id function)
: op(Op::ConstFunctionPointerINTEL)
OpConstantFunctionPointerINTEL(IdResultType resultType, IdResult result, Id function)
: op(Op::ConstantFunctionPointerINTEL)
, wordCount(FixedWordSize)
{
this->resultType = resultType;
@@ -14661,7 +14825,7 @@ struct OpConstFunctionPointerINTEL
this->function = function;
}
static constexpr Op OpCode = Op::ConstFunctionPointerINTEL;
static constexpr Op OpCode = Op::ConstantFunctionPointerINTEL;
static constexpr uint16_t FixedWordSize = 4U;
Op op;
uint16_t wordCount;