Created
October 27, 2023 18:05
-
-
Save devshgraphicsprogramming/4c0bc99c508ec07205f203a989f45b7b to your computer and use it in GitHub Desktop.
Is this HLSL?
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 0 "/app/example.cpp" | |
# 1 "/app//" | |
# 0 "<built-in>" | |
# 0 "<command-line>" | |
# 1 "/opt/compiler-explorer/arm64/gcc-trunk-20231027/aarch64-unknown-linux-gnu/aarch64-unknown-linux-gnu/sysroot/usr/include/stdc-predef.h" 1 3 4 | |
# 0 "<command-line>" 2 | |
# 1 "/app/example.cpp" | |
# 1 "/app/example.cpp" | |
# 1 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\shaderCommon.hlsl" | |
# 1 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\common.hlsl" | |
# 1 "nbl/builtin/hlsl/cpp_compat.hlsl" | |
# 1 "nbl/builtin/hlsl/macros.h" | |
# 19 "nbl/builtin/hlsl/cpp_compat.hlsl" | |
# 269 "nbl/builtin/hlsl/cpp_compat.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
# 287 "nbl/builtin/hlsl/cpp_compat.hlsl" | |
} | |
} | |
# 16 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\common.hlsl" | |
# 1 "nbl/builtin/hlsl/functional.hlsl" | |
# 1 "nbl/builtin/hlsl/bit.hlsl" | |
# 1 "nbl/builtin/hlsl/cpp_compat.hlsl" | |
# 20 "nbl/builtin/hlsl/bit.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl" | |
# 1 "spirv/unified1/spirv.hpp" | |
# 50 "spirv/unified1/spirv.hpp" | |
namespace spv { | |
typedef unsigned int Id; | |
static const unsigned int MagicNumber = 0x07230203; | |
static const unsigned int Version = 0x00010600; | |
static const unsigned int Revision = 1; | |
static const unsigned int OpCodeMask = 0xffff; | |
static const unsigned int WordCountShift = 16; | |
enum SourceLanguage { | |
SourceLanguageUnknown = 0, | |
SourceLanguageESSL = 1, | |
SourceLanguageGLSL = 2, | |
SourceLanguageOpenCL_C = 3, | |
SourceLanguageOpenCL_CPP = 4, | |
SourceLanguageHLSL = 5, | |
SourceLanguageCPP_for_OpenCL = 6, | |
SourceLanguageSYCL = 7, | |
SourceLanguageHERO_C = 8, | |
SourceLanguageNZSL = 9, | |
SourceLanguageWGSL = 10, | |
SourceLanguageSlang = 11, | |
SourceLanguageMax = 0x7fffffff, | |
}; | |
enum ExecutionModel { | |
ExecutionModelVertex = 0, | |
ExecutionModelTessellationControl = 1, | |
ExecutionModelTessellationEvaluation = 2, | |
ExecutionModelGeometry = 3, | |
ExecutionModelFragment = 4, | |
ExecutionModelGLCompute = 5, | |
ExecutionModelKernel = 6, | |
ExecutionModelTaskNV = 5267, | |
ExecutionModelMeshNV = 5268, | |
ExecutionModelRayGenerationKHR = 5313, | |
ExecutionModelRayGenerationNV = 5313, | |
ExecutionModelIntersectionKHR = 5314, | |
ExecutionModelIntersectionNV = 5314, | |
ExecutionModelAnyHitKHR = 5315, | |
ExecutionModelAnyHitNV = 5315, | |
ExecutionModelClosestHitKHR = 5316, | |
ExecutionModelClosestHitNV = 5316, | |
ExecutionModelMissKHR = 5317, | |
ExecutionModelMissNV = 5317, | |
ExecutionModelCallableKHR = 5318, | |
ExecutionModelCallableNV = 5318, | |
ExecutionModelTaskEXT = 5364, | |
ExecutionModelMeshEXT = 5365, | |
ExecutionModelMax = 0x7fffffff, | |
}; | |
enum AddressingModel { | |
AddressingModelLogical = 0, | |
AddressingModelPhysical32 = 1, | |
AddressingModelPhysical64 = 2, | |
AddressingModelPhysicalStorageBuffer64 = 5348, | |
AddressingModelPhysicalStorageBuffer64EXT = 5348, | |
AddressingModelMax = 0x7fffffff, | |
}; | |
enum MemoryModel { | |
MemoryModelSimple = 0, | |
MemoryModelGLSL450 = 1, | |
MemoryModelOpenCL = 2, | |
MemoryModelVulkan = 3, | |
MemoryModelVulkanKHR = 3, | |
MemoryModelMax = 0x7fffffff, | |
}; | |
enum ExecutionMode { | |
ExecutionModeInvocations = 0, | |
ExecutionModeSpacingEqual = 1, | |
ExecutionModeSpacingFractionalEven = 2, | |
ExecutionModeSpacingFractionalOdd = 3, | |
ExecutionModeVertexOrderCw = 4, | |
ExecutionModeVertexOrderCcw = 5, | |
ExecutionModePixelCenterInteger = 6, | |
ExecutionModeOriginUpperLeft = 7, | |
ExecutionModeOriginLowerLeft = 8, | |
ExecutionModeEarlyFragmentTests = 9, | |
ExecutionModePointMode = 10, | |
ExecutionModeXfb = 11, | |
ExecutionModeDepthReplacing = 12, | |
ExecutionModeDepthGreater = 14, | |
ExecutionModeDepthLess = 15, | |
ExecutionModeDepthUnchanged = 16, | |
ExecutionModeLocalSize = 17, | |
ExecutionModeLocalSizeHint = 18, | |
ExecutionModeInputPoints = 19, | |
ExecutionModeInputLines = 20, | |
ExecutionModeInputLinesAdjacency = 21, | |
ExecutionModeTriangles = 22, | |
ExecutionModeInputTrianglesAdjacency = 23, | |
ExecutionModeQuads = 24, | |
ExecutionModeIsolines = 25, | |
ExecutionModeOutputVertices = 26, | |
ExecutionModeOutputPoints = 27, | |
ExecutionModeOutputLineStrip = 28, | |
ExecutionModeOutputTriangleStrip = 29, | |
ExecutionModeVecTypeHint = 30, | |
ExecutionModeContractionOff = 31, | |
ExecutionModeInitializer = 33, | |
ExecutionModeFinalizer = 34, | |
ExecutionModeSubgroupSize = 35, | |
ExecutionModeSubgroupsPerWorkgroup = 36, | |
ExecutionModeSubgroupsPerWorkgroupId = 37, | |
ExecutionModeLocalSizeId = 38, | |
ExecutionModeLocalSizeHintId = 39, | |
ExecutionModeNonCoherentColorAttachmentReadEXT = 4169, | |
ExecutionModeNonCoherentDepthAttachmentReadEXT = 4170, | |
ExecutionModeNonCoherentStencilAttachmentReadEXT = 4171, | |
ExecutionModeSubgroupUniformControlFlowKHR = 4421, | |
ExecutionModePostDepthCoverage = 4446, | |
ExecutionModeDenormPreserve = 4459, | |
ExecutionModeDenormFlushToZero = 4460, | |
ExecutionModeSignedZeroInfNanPreserve = 4461, | |
ExecutionModeRoundingModeRTE = 4462, | |
ExecutionModeRoundingModeRTZ = 4463, | |
ExecutionModeEarlyAndLateFragmentTestsAMD = 5017, | |
ExecutionModeStencilRefReplacingEXT = 5027, | |
ExecutionModeCoalescingAMDX = 5069, | |
ExecutionModeMaxNodeRecursionAMDX = 5071, | |
ExecutionModeStaticNumWorkgroupsAMDX = 5072, | |
ExecutionModeShaderIndexAMDX = 5073, | |
ExecutionModeMaxNumWorkgroupsAMDX = 5077, | |
ExecutionModeStencilRefUnchangedFrontAMD = 5079, | |
ExecutionModeStencilRefGreaterFrontAMD = 5080, | |
ExecutionModeStencilRefLessFrontAMD = 5081, | |
ExecutionModeStencilRefUnchangedBackAMD = 5082, | |
ExecutionModeStencilRefGreaterBackAMD = 5083, | |
ExecutionModeStencilRefLessBackAMD = 5084, | |
ExecutionModeOutputLinesEXT = 5269, | |
ExecutionModeOutputLinesNV = 5269, | |
ExecutionModeOutputPrimitivesEXT = 5270, | |
ExecutionModeOutputPrimitivesNV = 5270, | |
ExecutionModeDerivativeGroupQuadsNV = 5289, | |
ExecutionModeDerivativeGroupLinearNV = 5290, | |
ExecutionModeOutputTrianglesEXT = 5298, | |
ExecutionModeOutputTrianglesNV = 5298, | |
ExecutionModePixelInterlockOrderedEXT = 5366, | |
ExecutionModePixelInterlockUnorderedEXT = 5367, | |
ExecutionModeSampleInterlockOrderedEXT = 5368, | |
ExecutionModeSampleInterlockUnorderedEXT = 5369, | |
ExecutionModeShadingRateInterlockOrderedEXT = 5370, | |
ExecutionModeShadingRateInterlockUnorderedEXT = 5371, | |
ExecutionModeSharedLocalMemorySizeINTEL = 5618, | |
ExecutionModeRoundingModeRTPINTEL = 5620, | |
ExecutionModeRoundingModeRTNINTEL = 5621, | |
ExecutionModeFloatingPointModeALTINTEL = 5622, | |
ExecutionModeFloatingPointModeIEEEINTEL = 5623, | |
ExecutionModeMaxWorkgroupSizeINTEL = 5893, | |
ExecutionModeMaxWorkDimINTEL = 5894, | |
ExecutionModeNoGlobalOffsetINTEL = 5895, | |
ExecutionModeNumSIMDWorkitemsINTEL = 5896, | |
ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, | |
ExecutionModeStreamingInterfaceINTEL = 6154, | |
ExecutionModeRegisterMapInterfaceINTEL = 6160, | |
ExecutionModeNamedBarrierCountINTEL = 6417, | |
ExecutionModeMax = 0x7fffffff, | |
}; | |
enum StorageClass { | |
StorageClassUniformConstant = 0, | |
StorageClassInput = 1, | |
StorageClassUniform = 2, | |
StorageClassOutput = 3, | |
StorageClassWorkgroup = 4, | |
StorageClassCrossWorkgroup = 5, | |
StorageClassPrivate = 6, | |
StorageClassFunction = 7, | |
StorageClassGeneric = 8, | |
StorageClassPushConstant = 9, | |
StorageClassAtomicCounter = 10, | |
StorageClassImage = 11, | |
StorageClassStorageBuffer = 12, | |
StorageClassTileImageEXT = 4172, | |
StorageClassNodePayloadAMDX = 5068, | |
StorageClassNodeOutputPayloadAMDX = 5076, | |
StorageClassCallableDataKHR = 5328, | |
StorageClassCallableDataNV = 5328, | |
StorageClassIncomingCallableDataKHR = 5329, | |
StorageClassIncomingCallableDataNV = 5329, | |
StorageClassRayPayloadKHR = 5338, | |
StorageClassRayPayloadNV = 5338, | |
StorageClassHitAttributeKHR = 5339, | |
StorageClassHitAttributeNV = 5339, | |
StorageClassIncomingRayPayloadKHR = 5342, | |
StorageClassIncomingRayPayloadNV = 5342, | |
StorageClassShaderRecordBufferKHR = 5343, | |
StorageClassShaderRecordBufferNV = 5343, | |
StorageClassPhysicalStorageBuffer = 5349, | |
StorageClassPhysicalStorageBufferEXT = 5349, | |
StorageClassHitObjectAttributeNV = 5385, | |
StorageClassTaskPayloadWorkgroupEXT = 5402, | |
StorageClassCodeSectionINTEL = 5605, | |
StorageClassDeviceOnlyINTEL = 5936, | |
StorageClassHostOnlyINTEL = 5937, | |
StorageClassMax = 0x7fffffff, | |
}; | |
enum Dim { | |
Dim1D = 0, | |
Dim2D = 1, | |
Dim3D = 2, | |
DimCube = 3, | |
DimRect = 4, | |
DimBuffer = 5, | |
DimSubpassData = 6, | |
DimTileImageDataEXT = 4173, | |
DimMax = 0x7fffffff, | |
}; | |
enum SamplerAddressingMode { | |
SamplerAddressingModeNone = 0, | |
SamplerAddressingModeClampToEdge = 1, | |
SamplerAddressingModeClamp = 2, | |
SamplerAddressingModeRepeat = 3, | |
SamplerAddressingModeRepeatMirrored = 4, | |
SamplerAddressingModeMax = 0x7fffffff, | |
}; | |
enum SamplerFilterMode { | |
SamplerFilterModeNearest = 0, | |
SamplerFilterModeLinear = 1, | |
SamplerFilterModeMax = 0x7fffffff, | |
}; | |
enum ImageFormat { | |
ImageFormatUnknown = 0, | |
ImageFormatRgba32f = 1, | |
ImageFormatRgba16f = 2, | |
ImageFormatR32f = 3, | |
ImageFormatRgba8 = 4, | |
ImageFormatRgba8Snorm = 5, | |
ImageFormatRg32f = 6, | |
ImageFormatRg16f = 7, | |
ImageFormatR11fG11fB10f = 8, | |
ImageFormatR16f = 9, | |
ImageFormatRgba16 = 10, | |
ImageFormatRgb10A2 = 11, | |
ImageFormatRg16 = 12, | |
ImageFormatRg8 = 13, | |
ImageFormatR16 = 14, | |
ImageFormatR8 = 15, | |
ImageFormatRgba16Snorm = 16, | |
ImageFormatRg16Snorm = 17, | |
ImageFormatRg8Snorm = 18, | |
ImageFormatR16Snorm = 19, | |
ImageFormatR8Snorm = 20, | |
ImageFormatRgba32i = 21, | |
ImageFormatRgba16i = 22, | |
ImageFormatRgba8i = 23, | |
ImageFormatR32i = 24, | |
ImageFormatRg32i = 25, | |
ImageFormatRg16i = 26, | |
ImageFormatRg8i = 27, | |
ImageFormatR16i = 28, | |
ImageFormatR8i = 29, | |
ImageFormatRgba32ui = 30, | |
ImageFormatRgba16ui = 31, | |
ImageFormatRgba8ui = 32, | |
ImageFormatR32ui = 33, | |
ImageFormatRgb10a2ui = 34, | |
ImageFormatRg32ui = 35, | |
ImageFormatRg16ui = 36, | |
ImageFormatRg8ui = 37, | |
ImageFormatR16ui = 38, | |
ImageFormatR8ui = 39, | |
ImageFormatR64ui = 40, | |
ImageFormatR64i = 41, | |
ImageFormatMax = 0x7fffffff, | |
}; | |
enum ImageChannelOrder { | |
ImageChannelOrderR = 0, | |
ImageChannelOrderA = 1, | |
ImageChannelOrderRG = 2, | |
ImageChannelOrderRA = 3, | |
ImageChannelOrderRGB = 4, | |
ImageChannelOrderRGBA = 5, | |
ImageChannelOrderBGRA = 6, | |
ImageChannelOrderARGB = 7, | |
ImageChannelOrderIntensity = 8, | |
ImageChannelOrderLuminance = 9, | |
ImageChannelOrderRx = 10, | |
ImageChannelOrderRGx = 11, | |
ImageChannelOrderRGBx = 12, | |
ImageChannelOrderDepth = 13, | |
ImageChannelOrderDepthStencil = 14, | |
ImageChannelOrdersRGB = 15, | |
ImageChannelOrdersRGBx = 16, | |
ImageChannelOrdersRGBA = 17, | |
ImageChannelOrdersBGRA = 18, | |
ImageChannelOrderABGR = 19, | |
ImageChannelOrderMax = 0x7fffffff, | |
}; | |
enum ImageChannelDataType { | |
ImageChannelDataTypeSnormInt8 = 0, | |
ImageChannelDataTypeSnormInt16 = 1, | |
ImageChannelDataTypeUnormInt8 = 2, | |
ImageChannelDataTypeUnormInt16 = 3, | |
ImageChannelDataTypeUnormShort565 = 4, | |
ImageChannelDataTypeUnormShort555 = 5, | |
ImageChannelDataTypeUnormInt101010 = 6, | |
ImageChannelDataTypeSignedInt8 = 7, | |
ImageChannelDataTypeSignedInt16 = 8, | |
ImageChannelDataTypeSignedInt32 = 9, | |
ImageChannelDataTypeUnsignedInt8 = 10, | |
ImageChannelDataTypeUnsignedInt16 = 11, | |
ImageChannelDataTypeUnsignedInt32 = 12, | |
ImageChannelDataTypeHalfFloat = 13, | |
ImageChannelDataTypeFloat = 14, | |
ImageChannelDataTypeUnormInt24 = 15, | |
ImageChannelDataTypeUnormInt101010_2 = 16, | |
ImageChannelDataTypeUnsignedIntRaw10EXT = 19, | |
ImageChannelDataTypeUnsignedIntRaw12EXT = 20, | |
ImageChannelDataTypeMax = 0x7fffffff, | |
}; | |
enum ImageOperandsShift { | |
ImageOperandsBiasShift = 0, | |
ImageOperandsLodShift = 1, | |
ImageOperandsGradShift = 2, | |
ImageOperandsConstOffsetShift = 3, | |
ImageOperandsOffsetShift = 4, | |
ImageOperandsConstOffsetsShift = 5, | |
ImageOperandsSampleShift = 6, | |
ImageOperandsMinLodShift = 7, | |
ImageOperandsMakeTexelAvailableShift = 8, | |
ImageOperandsMakeTexelAvailableKHRShift = 8, | |
ImageOperandsMakeTexelVisibleShift = 9, | |
ImageOperandsMakeTexelVisibleKHRShift = 9, | |
ImageOperandsNonPrivateTexelShift = 10, | |
ImageOperandsNonPrivateTexelKHRShift = 10, | |
ImageOperandsVolatileTexelShift = 11, | |
ImageOperandsVolatileTexelKHRShift = 11, | |
ImageOperandsSignExtendShift = 12, | |
ImageOperandsZeroExtendShift = 13, | |
ImageOperandsNontemporalShift = 14, | |
ImageOperandsOffsetsShift = 16, | |
ImageOperandsMax = 0x7fffffff, | |
}; | |
enum ImageOperandsMask { | |
ImageOperandsMaskNone = 0, | |
ImageOperandsBiasMask = 0x00000001, | |
ImageOperandsLodMask = 0x00000002, | |
ImageOperandsGradMask = 0x00000004, | |
ImageOperandsConstOffsetMask = 0x00000008, | |
ImageOperandsOffsetMask = 0x00000010, | |
ImageOperandsConstOffsetsMask = 0x00000020, | |
ImageOperandsSampleMask = 0x00000040, | |
ImageOperandsMinLodMask = 0x00000080, | |
ImageOperandsMakeTexelAvailableMask = 0x00000100, | |
ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, | |
ImageOperandsMakeTexelVisibleMask = 0x00000200, | |
ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, | |
ImageOperandsNonPrivateTexelMask = 0x00000400, | |
ImageOperandsNonPrivateTexelKHRMask = 0x00000400, | |
ImageOperandsVolatileTexelMask = 0x00000800, | |
ImageOperandsVolatileTexelKHRMask = 0x00000800, | |
ImageOperandsSignExtendMask = 0x00001000, | |
ImageOperandsZeroExtendMask = 0x00002000, | |
ImageOperandsNontemporalMask = 0x00004000, | |
ImageOperandsOffsetsMask = 0x00010000, | |
}; | |
enum FPFastMathModeShift { | |
FPFastMathModeNotNaNShift = 0, | |
FPFastMathModeNotInfShift = 1, | |
FPFastMathModeNSZShift = 2, | |
FPFastMathModeAllowRecipShift = 3, | |
FPFastMathModeFastShift = 4, | |
FPFastMathModeAllowContractFastINTELShift = 16, | |
FPFastMathModeAllowReassocINTELShift = 17, | |
FPFastMathModeMax = 0x7fffffff, | |
}; | |
enum FPFastMathModeMask { | |
FPFastMathModeMaskNone = 0, | |
FPFastMathModeNotNaNMask = 0x00000001, | |
FPFastMathModeNotInfMask = 0x00000002, | |
FPFastMathModeNSZMask = 0x00000004, | |
FPFastMathModeAllowRecipMask = 0x00000008, | |
FPFastMathModeFastMask = 0x00000010, | |
FPFastMathModeAllowContractFastINTELMask = 0x00010000, | |
FPFastMathModeAllowReassocINTELMask = 0x00020000, | |
}; | |
enum FPRoundingMode { | |
FPRoundingModeRTE = 0, | |
FPRoundingModeRTZ = 1, | |
FPRoundingModeRTP = 2, | |
FPRoundingModeRTN = 3, | |
FPRoundingModeMax = 0x7fffffff, | |
}; | |
enum LinkageType { | |
LinkageTypeExport = 0, | |
LinkageTypeImport = 1, | |
LinkageTypeLinkOnceODR = 2, | |
LinkageTypeMax = 0x7fffffff, | |
}; | |
enum AccessQualifier { | |
AccessQualifierReadOnly = 0, | |
AccessQualifierWriteOnly = 1, | |
AccessQualifierReadWrite = 2, | |
AccessQualifierMax = 0x7fffffff, | |
}; | |
enum FunctionParameterAttribute { | |
FunctionParameterAttributeZext = 0, | |
FunctionParameterAttributeSext = 1, | |
FunctionParameterAttributeByVal = 2, | |
FunctionParameterAttributeSret = 3, | |
FunctionParameterAttributeNoAlias = 4, | |
FunctionParameterAttributeNoCapture = 5, | |
FunctionParameterAttributeNoWrite = 6, | |
FunctionParameterAttributeNoReadWrite = 7, | |
FunctionParameterAttributeRuntimeAlignedINTEL = 5940, | |
FunctionParameterAttributeMax = 0x7fffffff, | |
}; | |
enum Decoration { | |
DecorationRelaxedPrecision = 0, | |
DecorationSpecId = 1, | |
DecorationBlock = 2, | |
DecorationBufferBlock = 3, | |
DecorationRowMajor = 4, | |
DecorationColMajor = 5, | |
DecorationArrayStride = 6, | |
DecorationMatrixStride = 7, | |
DecorationGLSLShared = 8, | |
DecorationGLSLPacked = 9, | |
DecorationCPacked = 10, | |
DecorationBuiltIn = 11, | |
DecorationNoPerspective = 13, | |
DecorationFlat = 14, | |
DecorationPatch = 15, | |
DecorationCentroid = 16, | |
DecorationSample = 17, | |
DecorationInvariant = 18, | |
DecorationRestrict = 19, | |
DecorationAliased = 20, | |
DecorationVolatile = 21, | |
DecorationConstant = 22, | |
DecorationCoherent = 23, | |
DecorationNonWritable = 24, | |
DecorationNonReadable = 25, | |
DecorationUniform = 26, | |
DecorationUniformId = 27, | |
DecorationSaturatedConversion = 28, | |
DecorationStream = 29, | |
DecorationLocation = 30, | |
DecorationComponent = 31, | |
DecorationIndex = 32, | |
DecorationBinding = 33, | |
DecorationDescriptorSet = 34, | |
DecorationOffset = 35, | |
DecorationXfbBuffer = 36, | |
DecorationXfbStride = 37, | |
DecorationFuncParamAttr = 38, | |
DecorationFPRoundingMode = 39, | |
DecorationFPFastMathMode = 40, | |
DecorationLinkageAttributes = 41, | |
DecorationNoContraction = 42, | |
DecorationInputAttachmentIndex = 43, | |
DecorationAlignment = 44, | |
DecorationMaxByteOffset = 45, | |
DecorationAlignmentId = 46, | |
DecorationMaxByteOffsetId = 47, | |
DecorationNoSignedWrap = 4469, | |
DecorationNoUnsignedWrap = 4470, | |
DecorationWeightTextureQCOM = 4487, | |
DecorationBlockMatchTextureQCOM = 4488, | |
DecorationExplicitInterpAMD = 4999, | |
DecorationNodeSharesPayloadLimitsWithAMDX = 5019, | |
DecorationNodeMaxPayloadsAMDX = 5020, | |
DecorationTrackFinishWritingAMDX = 5078, | |
DecorationPayloadNodeNameAMDX = 5091, | |
DecorationOverrideCoverageNV = 5248, | |
DecorationPassthroughNV = 5250, | |
DecorationViewportRelativeNV = 5252, | |
DecorationSecondaryViewportRelativeNV = 5256, | |
DecorationPerPrimitiveEXT = 5271, | |
DecorationPerPrimitiveNV = 5271, | |
DecorationPerViewNV = 5272, | |
DecorationPerTaskNV = 5273, | |
DecorationPerVertexKHR = 5285, | |
DecorationPerVertexNV = 5285, | |
DecorationNonUniform = 5300, | |
DecorationNonUniformEXT = 5300, | |
DecorationRestrictPointer = 5355, | |
DecorationRestrictPointerEXT = 5355, | |
DecorationAliasedPointer = 5356, | |
DecorationAliasedPointerEXT = 5356, | |
DecorationHitObjectShaderRecordBufferNV = 5386, | |
DecorationBindlessSamplerNV = 5398, | |
DecorationBindlessImageNV = 5399, | |
DecorationBoundSamplerNV = 5400, | |
DecorationBoundImageNV = 5401, | |
DecorationSIMTCallINTEL = 5599, | |
DecorationReferencedIndirectlyINTEL = 5602, | |
DecorationClobberINTEL = 5607, | |
DecorationSideEffectsINTEL = 5608, | |
DecorationVectorComputeVariableINTEL = 5624, | |
DecorationFuncParamIOKindINTEL = 5625, | |
DecorationVectorComputeFunctionINTEL = 5626, | |
DecorationStackCallINTEL = 5627, | |
DecorationGlobalVariableOffsetINTEL = 5628, | |
DecorationCounterBuffer = 5634, | |
DecorationHlslCounterBufferGOOGLE = 5634, | |
DecorationHlslSemanticGOOGLE = 5635, | |
DecorationUserSemantic = 5635, | |
DecorationUserTypeGOOGLE = 5636, | |
DecorationFunctionRoundingModeINTEL = 5822, | |
DecorationFunctionDenormModeINTEL = 5823, | |
DecorationRegisterINTEL = 5825, | |
DecorationMemoryINTEL = 5826, | |
DecorationNumbanksINTEL = 5827, | |
DecorationBankwidthINTEL = 5828, | |
DecorationMaxPrivateCopiesINTEL = 5829, | |
DecorationSinglepumpINTEL = 5830, | |
DecorationDoublepumpINTEL = 5831, | |
DecorationMaxReplicatesINTEL = 5832, | |
DecorationSimpleDualPortINTEL = 5833, | |
DecorationMergeINTEL = 5834, | |
DecorationBankBitsINTEL = 5835, | |
DecorationForcePow2DepthINTEL = 5836, | |
DecorationStridesizeINTEL = 5883, | |
DecorationWordsizeINTEL = 5884, | |
DecorationTrueDualPortINTEL = 5885, | |
DecorationBurstCoalesceINTEL = 5899, | |
DecorationCacheSizeINTEL = 5900, | |
DecorationDontStaticallyCoalesceINTEL = 5901, | |
DecorationPrefetchINTEL = 5902, | |
DecorationStallEnableINTEL = 5905, | |
DecorationFuseLoopsInFunctionINTEL = 5907, | |
DecorationMathOpDSPModeINTEL = 5909, | |
DecorationAliasScopeINTEL = 5914, | |
DecorationNoAliasINTEL = 5915, | |
DecorationInitiationIntervalINTEL = 5917, | |
DecorationMaxConcurrencyINTEL = 5918, | |
DecorationPipelineEnableINTEL = 5919, | |
DecorationBufferLocationINTEL = 5921, | |
DecorationIOPipeStorageINTEL = 5944, | |
DecorationFunctionFloatingPointModeINTEL = 6080, | |
DecorationSingleElementVectorINTEL = 6085, | |
DecorationVectorComputeCallableFunctionINTEL = 6087, | |
DecorationMediaBlockIOINTEL = 6140, | |
DecorationInitModeINTEL = 6147, | |
DecorationImplementInRegisterMapINTEL = 6148, | |
DecorationHostAccessINTEL = 6168, | |
DecorationFPMaxErrorDecorationINTEL = 6170, | |
DecorationLatencyControlLabelINTEL = 6172, | |
DecorationLatencyControlConstraintINTEL = 6173, | |
DecorationConduitKernelArgumentINTEL = 6175, | |
DecorationRegisterMapKernelArgumentINTEL = 6176, | |
DecorationMMHostInterfaceAddressWidthINTEL = 6177, | |
DecorationMMHostInterfaceDataWidthINTEL = 6178, | |
DecorationMMHostInterfaceLatencyINTEL = 6179, | |
DecorationMMHostInterfaceReadWriteModeINTEL = 6180, | |
DecorationMMHostInterfaceMaxBurstINTEL = 6181, | |
DecorationMMHostInterfaceWaitRequestINTEL = 6182, | |
DecorationStableKernelArgumentINTEL = 6183, | |
DecorationCacheControlLoadINTEL = 6442, | |
DecorationCacheControlStoreINTEL = 6443, | |
DecorationMax = 0x7fffffff, | |
}; | |
enum BuiltIn { | |
BuiltInPosition = 0, | |
BuiltInPointSize = 1, | |
BuiltInClipDistance = 3, | |
BuiltInCullDistance = 4, | |
BuiltInVertexId = 5, | |
BuiltInInstanceId = 6, | |
BuiltInPrimitiveId = 7, | |
BuiltInInvocationId = 8, | |
BuiltInLayer = 9, | |
BuiltInViewportIndex = 10, | |
BuiltInTessLevelOuter = 11, | |
BuiltInTessLevelInner = 12, | |
BuiltInTessCoord = 13, | |
BuiltInPatchVertices = 14, | |
BuiltInFragCoord = 15, | |
BuiltInPointCoord = 16, | |
BuiltInFrontFacing = 17, | |
BuiltInSampleId = 18, | |
BuiltInSamplePosition = 19, | |
BuiltInSampleMask = 20, | |
BuiltInFragDepth = 22, | |
BuiltInHelperInvocation = 23, | |
BuiltInNumWorkgroups = 24, | |
BuiltInWorkgroupSize = 25, | |
BuiltInWorkgroupId = 26, | |
BuiltInLocalInvocationId = 27, | |
BuiltInGlobalInvocationId = 28, | |
BuiltInLocalInvocationIndex = 29, | |
BuiltInWorkDim = 30, | |
BuiltInGlobalSize = 31, | |
BuiltInEnqueuedWorkgroupSize = 32, | |
BuiltInGlobalOffset = 33, | |
BuiltInGlobalLinearId = 34, | |
BuiltInSubgroupSize = 36, | |
BuiltInSubgroupMaxSize = 37, | |
BuiltInNumSubgroups = 38, | |
BuiltInNumEnqueuedSubgroups = 39, | |
BuiltInSubgroupId = 40, | |
BuiltInSubgroupLocalInvocationId = 41, | |
BuiltInVertexIndex = 42, | |
BuiltInInstanceIndex = 43, | |
BuiltInCoreIDARM = 4160, | |
BuiltInCoreCountARM = 4161, | |
BuiltInCoreMaxIDARM = 4162, | |
BuiltInWarpIDARM = 4163, | |
BuiltInWarpMaxIDARM = 4164, | |
BuiltInSubgroupEqMask = 4416, | |
BuiltInSubgroupEqMaskKHR = 4416, | |
BuiltInSubgroupGeMask = 4417, | |
BuiltInSubgroupGeMaskKHR = 4417, | |
BuiltInSubgroupGtMask = 4418, | |
BuiltInSubgroupGtMaskKHR = 4418, | |
BuiltInSubgroupLeMask = 4419, | |
BuiltInSubgroupLeMaskKHR = 4419, | |
BuiltInSubgroupLtMask = 4420, | |
BuiltInSubgroupLtMaskKHR = 4420, | |
BuiltInBaseVertex = 4424, | |
BuiltInBaseInstance = 4425, | |
BuiltInDrawIndex = 4426, | |
BuiltInPrimitiveShadingRateKHR = 4432, | |
BuiltInDeviceIndex = 4438, | |
BuiltInViewIndex = 4440, | |
BuiltInShadingRateKHR = 4444, | |
BuiltInBaryCoordNoPerspAMD = 4992, | |
BuiltInBaryCoordNoPerspCentroidAMD = 4993, | |
BuiltInBaryCoordNoPerspSampleAMD = 4994, | |
BuiltInBaryCoordSmoothAMD = 4995, | |
BuiltInBaryCoordSmoothCentroidAMD = 4996, | |
BuiltInBaryCoordSmoothSampleAMD = 4997, | |
BuiltInBaryCoordPullModelAMD = 4998, | |
BuiltInFragStencilRefEXT = 5014, | |
BuiltInCoalescedInputCountAMDX = 5021, | |
BuiltInShaderIndexAMDX = 5073, | |
BuiltInViewportMaskNV = 5253, | |
BuiltInSecondaryPositionNV = 5257, | |
BuiltInSecondaryViewportMaskNV = 5258, | |
BuiltInPositionPerViewNV = 5261, | |
BuiltInViewportMaskPerViewNV = 5262, | |
BuiltInFullyCoveredEXT = 5264, | |
BuiltInTaskCountNV = 5274, | |
BuiltInPrimitiveCountNV = 5275, | |
BuiltInPrimitiveIndicesNV = 5276, | |
BuiltInClipDistancePerViewNV = 5277, | |
BuiltInCullDistancePerViewNV = 5278, | |
BuiltInLayerPerViewNV = 5279, | |
BuiltInMeshViewCountNV = 5280, | |
BuiltInMeshViewIndicesNV = 5281, | |
BuiltInBaryCoordKHR = 5286, | |
BuiltInBaryCoordNV = 5286, | |
BuiltInBaryCoordNoPerspKHR = 5287, | |
BuiltInBaryCoordNoPerspNV = 5287, | |
BuiltInFragSizeEXT = 5292, | |
BuiltInFragmentSizeNV = 5292, | |
BuiltInFragInvocationCountEXT = 5293, | |
BuiltInInvocationsPerPixelNV = 5293, | |
BuiltInPrimitivePointIndicesEXT = 5294, | |
BuiltInPrimitiveLineIndicesEXT = 5295, | |
BuiltInPrimitiveTriangleIndicesEXT = 5296, | |
BuiltInCullPrimitiveEXT = 5299, | |
BuiltInLaunchIdKHR = 5319, | |
BuiltInLaunchIdNV = 5319, | |
BuiltInLaunchSizeKHR = 5320, | |
BuiltInLaunchSizeNV = 5320, | |
BuiltInWorldRayOriginKHR = 5321, | |
BuiltInWorldRayOriginNV = 5321, | |
BuiltInWorldRayDirectionKHR = 5322, | |
BuiltInWorldRayDirectionNV = 5322, | |
BuiltInObjectRayOriginKHR = 5323, | |
BuiltInObjectRayOriginNV = 5323, | |
BuiltInObjectRayDirectionKHR = 5324, | |
BuiltInObjectRayDirectionNV = 5324, | |
BuiltInRayTminKHR = 5325, | |
BuiltInRayTminNV = 5325, | |
BuiltInRayTmaxKHR = 5326, | |
BuiltInRayTmaxNV = 5326, | |
BuiltInInstanceCustomIndexKHR = 5327, | |
BuiltInInstanceCustomIndexNV = 5327, | |
BuiltInObjectToWorldKHR = 5330, | |
BuiltInObjectToWorldNV = 5330, | |
BuiltInWorldToObjectKHR = 5331, | |
BuiltInWorldToObjectNV = 5331, | |
BuiltInHitTNV = 5332, | |
BuiltInHitKindKHR = 5333, | |
BuiltInHitKindNV = 5333, | |
BuiltInCurrentRayTimeNV = 5334, | |
BuiltInHitTriangleVertexPositionsKHR = 5335, | |
BuiltInHitMicroTriangleVertexPositionsNV = 5337, | |
BuiltInHitMicroTriangleVertexBarycentricsNV = 5344, | |
BuiltInIncomingRayFlagsKHR = 5351, | |
BuiltInIncomingRayFlagsNV = 5351, | |
BuiltInRayGeometryIndexKHR = 5352, | |
BuiltInWarpsPerSMNV = 5374, | |
BuiltInSMCountNV = 5375, | |
BuiltInWarpIDNV = 5376, | |
BuiltInSMIDNV = 5377, | |
BuiltInHitKindFrontFacingMicroTriangleNV = 5405, | |
BuiltInHitKindBackFacingMicroTriangleNV = 5406, | |
BuiltInCullMaskKHR = 6021, | |
BuiltInMax = 0x7fffffff, | |
}; | |
enum SelectionControlShift { | |
SelectionControlFlattenShift = 0, | |
SelectionControlDontFlattenShift = 1, | |
SelectionControlMax = 0x7fffffff, | |
}; | |
enum SelectionControlMask { | |
SelectionControlMaskNone = 0, | |
SelectionControlFlattenMask = 0x00000001, | |
SelectionControlDontFlattenMask = 0x00000002, | |
}; | |
enum LoopControlShift { | |
LoopControlUnrollShift = 0, | |
LoopControlDontUnrollShift = 1, | |
LoopControlDependencyInfiniteShift = 2, | |
LoopControlDependencyLengthShift = 3, | |
LoopControlMinIterationsShift = 4, | |
LoopControlMaxIterationsShift = 5, | |
LoopControlIterationMultipleShift = 6, | |
LoopControlPeelCountShift = 7, | |
LoopControlPartialCountShift = 8, | |
LoopControlInitiationIntervalINTELShift = 16, | |
LoopControlMaxConcurrencyINTELShift = 17, | |
LoopControlDependencyArrayINTELShift = 18, | |
LoopControlPipelineEnableINTELShift = 19, | |
LoopControlLoopCoalesceINTELShift = 20, | |
LoopControlMaxInterleavingINTELShift = 21, | |
LoopControlSpeculatedIterationsINTELShift = 22, | |
LoopControlNoFusionINTELShift = 23, | |
LoopControlLoopCountINTELShift = 24, | |
LoopControlMaxReinvocationDelayINTELShift = 25, | |
LoopControlMax = 0x7fffffff, | |
}; | |
enum LoopControlMask { | |
LoopControlMaskNone = 0, | |
LoopControlUnrollMask = 0x00000001, | |
LoopControlDontUnrollMask = 0x00000002, | |
LoopControlDependencyInfiniteMask = 0x00000004, | |
LoopControlDependencyLengthMask = 0x00000008, | |
LoopControlMinIterationsMask = 0x00000010, | |
LoopControlMaxIterationsMask = 0x00000020, | |
LoopControlIterationMultipleMask = 0x00000040, | |
LoopControlPeelCountMask = 0x00000080, | |
LoopControlPartialCountMask = 0x00000100, | |
LoopControlInitiationIntervalINTELMask = 0x00010000, | |
LoopControlMaxConcurrencyINTELMask = 0x00020000, | |
LoopControlDependencyArrayINTELMask = 0x00040000, | |
LoopControlPipelineEnableINTELMask = 0x00080000, | |
LoopControlLoopCoalesceINTELMask = 0x00100000, | |
LoopControlMaxInterleavingINTELMask = 0x00200000, | |
LoopControlSpeculatedIterationsINTELMask = 0x00400000, | |
LoopControlNoFusionINTELMask = 0x00800000, | |
LoopControlLoopCountINTELMask = 0x01000000, | |
LoopControlMaxReinvocationDelayINTELMask = 0x02000000, | |
}; | |
enum FunctionControlShift { | |
FunctionControlInlineShift = 0, | |
FunctionControlDontInlineShift = 1, | |
FunctionControlPureShift = 2, | |
FunctionControlConstShift = 3, | |
FunctionControlOptNoneINTELShift = 16, | |
FunctionControlMax = 0x7fffffff, | |
}; | |
enum FunctionControlMask { | |
FunctionControlMaskNone = 0, | |
FunctionControlInlineMask = 0x00000001, | |
FunctionControlDontInlineMask = 0x00000002, | |
FunctionControlPureMask = 0x00000004, | |
FunctionControlConstMask = 0x00000008, | |
FunctionControlOptNoneINTELMask = 0x00010000, | |
}; | |
enum MemorySemanticsShift { | |
MemorySemanticsAcquireShift = 1, | |
MemorySemanticsReleaseShift = 2, | |
MemorySemanticsAcquireReleaseShift = 3, | |
MemorySemanticsSequentiallyConsistentShift = 4, | |
MemorySemanticsUniformMemoryShift = 6, | |
MemorySemanticsSubgroupMemoryShift = 7, | |
MemorySemanticsWorkgroupMemoryShift = 8, | |
MemorySemanticsCrossWorkgroupMemoryShift = 9, | |
MemorySemanticsAtomicCounterMemoryShift = 10, | |
MemorySemanticsImageMemoryShift = 11, | |
MemorySemanticsOutputMemoryShift = 12, | |
MemorySemanticsOutputMemoryKHRShift = 12, | |
MemorySemanticsMakeAvailableShift = 13, | |
MemorySemanticsMakeAvailableKHRShift = 13, | |
MemorySemanticsMakeVisibleShift = 14, | |
MemorySemanticsMakeVisibleKHRShift = 14, | |
MemorySemanticsVolatileShift = 15, | |
MemorySemanticsMax = 0x7fffffff, | |
}; | |
enum MemorySemanticsMask { | |
MemorySemanticsMaskNone = 0, | |
MemorySemanticsAcquireMask = 0x00000002, | |
MemorySemanticsReleaseMask = 0x00000004, | |
MemorySemanticsAcquireReleaseMask = 0x00000008, | |
MemorySemanticsSequentiallyConsistentMask = 0x00000010, | |
MemorySemanticsUniformMemoryMask = 0x00000040, | |
MemorySemanticsSubgroupMemoryMask = 0x00000080, | |
MemorySemanticsWorkgroupMemoryMask = 0x00000100, | |
MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, | |
MemorySemanticsAtomicCounterMemoryMask = 0x00000400, | |
MemorySemanticsImageMemoryMask = 0x00000800, | |
MemorySemanticsOutputMemoryMask = 0x00001000, | |
MemorySemanticsOutputMemoryKHRMask = 0x00001000, | |
MemorySemanticsMakeAvailableMask = 0x00002000, | |
MemorySemanticsMakeAvailableKHRMask = 0x00002000, | |
MemorySemanticsMakeVisibleMask = 0x00004000, | |
MemorySemanticsMakeVisibleKHRMask = 0x00004000, | |
MemorySemanticsVolatileMask = 0x00008000, | |
}; | |
enum MemoryAccessShift { | |
MemoryAccessVolatileShift = 0, | |
MemoryAccessAlignedShift = 1, | |
MemoryAccessNontemporalShift = 2, | |
MemoryAccessMakePointerAvailableShift = 3, | |
MemoryAccessMakePointerAvailableKHRShift = 3, | |
MemoryAccessMakePointerVisibleShift = 4, | |
MemoryAccessMakePointerVisibleKHRShift = 4, | |
MemoryAccessNonPrivatePointerShift = 5, | |
MemoryAccessNonPrivatePointerKHRShift = 5, | |
MemoryAccessAliasScopeINTELMaskShift = 16, | |
MemoryAccessNoAliasINTELMaskShift = 17, | |
MemoryAccessMax = 0x7fffffff, | |
}; | |
enum MemoryAccessMask { | |
MemoryAccessMaskNone = 0, | |
MemoryAccessVolatileMask = 0x00000001, | |
MemoryAccessAlignedMask = 0x00000002, | |
MemoryAccessNontemporalMask = 0x00000004, | |
MemoryAccessMakePointerAvailableMask = 0x00000008, | |
MemoryAccessMakePointerAvailableKHRMask = 0x00000008, | |
MemoryAccessMakePointerVisibleMask = 0x00000010, | |
MemoryAccessMakePointerVisibleKHRMask = 0x00000010, | |
MemoryAccessNonPrivatePointerMask = 0x00000020, | |
MemoryAccessNonPrivatePointerKHRMask = 0x00000020, | |
MemoryAccessAliasScopeINTELMaskMask = 0x00010000, | |
MemoryAccessNoAliasINTELMaskMask = 0x00020000, | |
}; | |
enum Scope { | |
ScopeCrossDevice = 0, | |
ScopeDevice = 1, | |
ScopeWorkgroup = 2, | |
ScopeSubgroup = 3, | |
ScopeInvocation = 4, | |
ScopeQueueFamily = 5, | |
ScopeQueueFamilyKHR = 5, | |
ScopeShaderCallKHR = 6, | |
ScopeMax = 0x7fffffff, | |
}; | |
enum GroupOperation { | |
GroupOperationReduce = 0, | |
GroupOperationInclusiveScan = 1, | |
GroupOperationExclusiveScan = 2, | |
GroupOperationClusteredReduce = 3, | |
GroupOperationPartitionedReduceNV = 6, | |
GroupOperationPartitionedInclusiveScanNV = 7, | |
GroupOperationPartitionedExclusiveScanNV = 8, | |
GroupOperationMax = 0x7fffffff, | |
}; | |
enum KernelEnqueueFlags { | |
KernelEnqueueFlagsNoWait = 0, | |
KernelEnqueueFlagsWaitKernel = 1, | |
KernelEnqueueFlagsWaitWorkGroup = 2, | |
KernelEnqueueFlagsMax = 0x7fffffff, | |
}; | |
enum KernelProfilingInfoShift { | |
KernelProfilingInfoCmdExecTimeShift = 0, | |
KernelProfilingInfoMax = 0x7fffffff, | |
}; | |
enum KernelProfilingInfoMask { | |
KernelProfilingInfoMaskNone = 0, | |
KernelProfilingInfoCmdExecTimeMask = 0x00000001, | |
}; | |
enum Capability { | |
CapabilityMatrix = 0, | |
CapabilityShader = 1, | |
CapabilityGeometry = 2, | |
CapabilityTessellation = 3, | |
CapabilityAddresses = 4, | |
CapabilityLinkage = 5, | |
CapabilityKernel = 6, | |
CapabilityVector16 = 7, | |
CapabilityFloat16Buffer = 8, | |
CapabilityFloat16 = 9, | |
CapabilityFloat64 = 10, | |
CapabilityInt64 = 11, | |
CapabilityInt64Atomics = 12, | |
CapabilityImageBasic = 13, | |
CapabilityImageReadWrite = 14, | |
CapabilityImageMipmap = 15, | |
CapabilityPipes = 17, | |
CapabilityGroups = 18, | |
CapabilityDeviceEnqueue = 19, | |
CapabilityLiteralSampler = 20, | |
CapabilityAtomicStorage = 21, | |
CapabilityInt16 = 22, | |
CapabilityTessellationPointSize = 23, | |
CapabilityGeometryPointSize = 24, | |
CapabilityImageGatherExtended = 25, | |
CapabilityStorageImageMultisample = 27, | |
CapabilityUniformBufferArrayDynamicIndexing = 28, | |
CapabilitySampledImageArrayDynamicIndexing = 29, | |
CapabilityStorageBufferArrayDynamicIndexing = 30, | |
CapabilityStorageImageArrayDynamicIndexing = 31, | |
CapabilityClipDistance = 32, | |
CapabilityCullDistance = 33, | |
CapabilityImageCubeArray = 34, | |
CapabilitySampleRateShading = 35, | |
CapabilityImageRect = 36, | |
CapabilitySampledRect = 37, | |
CapabilityGenericPointer = 38, | |
CapabilityInt8 = 39, | |
CapabilityInputAttachment = 40, | |
CapabilitySparseResidency = 41, | |
CapabilityMinLod = 42, | |
CapabilitySampled1D = 43, | |
CapabilityImage1D = 44, | |
CapabilitySampledCubeArray = 45, | |
CapabilitySampledBuffer = 46, | |
CapabilityImageBuffer = 47, | |
CapabilityImageMSArray = 48, | |
CapabilityStorageImageExtendedFormats = 49, | |
CapabilityImageQuery = 50, | |
CapabilityDerivativeControl = 51, | |
CapabilityInterpolationFunction = 52, | |
CapabilityTransformFeedback = 53, | |
CapabilityGeometryStreams = 54, | |
CapabilityStorageImageReadWithoutFormat = 55, | |
CapabilityStorageImageWriteWithoutFormat = 56, | |
CapabilityMultiViewport = 57, | |
CapabilitySubgroupDispatch = 58, | |
CapabilityNamedBarrier = 59, | |
CapabilityPipeStorage = 60, | |
CapabilityGroupNonUniform = 61, | |
CapabilityGroupNonUniformVote = 62, | |
CapabilityGroupNonUniformArithmetic = 63, | |
CapabilityGroupNonUniformBallot = 64, | |
CapabilityGroupNonUniformShuffle = 65, | |
CapabilityGroupNonUniformShuffleRelative = 66, | |
CapabilityGroupNonUniformClustered = 67, | |
CapabilityGroupNonUniformQuad = 68, | |
CapabilityShaderLayer = 69, | |
CapabilityShaderViewportIndex = 70, | |
CapabilityUniformDecoration = 71, | |
CapabilityCoreBuiltinsARM = 4165, | |
CapabilityTileImageColorReadAccessEXT = 4166, | |
CapabilityTileImageDepthReadAccessEXT = 4167, | |
CapabilityTileImageStencilReadAccessEXT = 4168, | |
CapabilityFragmentShadingRateKHR = 4422, | |
CapabilitySubgroupBallotKHR = 4423, | |
CapabilityDrawParameters = 4427, | |
CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428, | |
CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429, | |
CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, | |
CapabilitySubgroupVoteKHR = 4431, | |
CapabilityStorageBuffer16BitAccess = 4433, | |
CapabilityStorageUniformBufferBlock16 = 4433, | |
CapabilityStorageUniform16 = 4434, | |
CapabilityUniformAndStorageBuffer16BitAccess = 4434, | |
CapabilityStoragePushConstant16 = 4435, | |
CapabilityStorageInputOutput16 = 4436, | |
CapabilityDeviceGroup = 4437, | |
CapabilityMultiView = 4439, | |
CapabilityVariablePointersStorageBuffer = 4441, | |
CapabilityVariablePointers = 4442, | |
CapabilityAtomicStorageOps = 4445, | |
CapabilitySampleMaskPostDepthCoverage = 4447, | |
CapabilityStorageBuffer8BitAccess = 4448, | |
CapabilityUniformAndStorageBuffer8BitAccess = 4449, | |
CapabilityStoragePushConstant8 = 4450, | |
CapabilityDenormPreserve = 4464, | |
CapabilityDenormFlushToZero = 4465, | |
CapabilitySignedZeroInfNanPreserve = 4466, | |
CapabilityRoundingModeRTE = 4467, | |
CapabilityRoundingModeRTZ = 4468, | |
CapabilityRayQueryProvisionalKHR = 4471, | |
CapabilityRayQueryKHR = 4472, | |
CapabilityRayTraversalPrimitiveCullingKHR = 4478, | |
CapabilityRayTracingKHR = 4479, | |
CapabilityTextureSampleWeightedQCOM = 4484, | |
CapabilityTextureBoxFilterQCOM = 4485, | |
CapabilityTextureBlockMatchQCOM = 4486, | |
CapabilityFloat16ImageAMD = 5008, | |
CapabilityImageGatherBiasLodAMD = 5009, | |
CapabilityFragmentMaskAMD = 5010, | |
CapabilityStencilExportEXT = 5013, | |
CapabilityImageReadWriteLodAMD = 5015, | |
CapabilityInt64ImageEXT = 5016, | |
CapabilityShaderClockKHR = 5055, | |
CapabilityShaderEnqueueAMDX = 5067, | |
CapabilitySampleMaskOverrideCoverageNV = 5249, | |
CapabilityGeometryShaderPassthroughNV = 5251, | |
CapabilityShaderViewportIndexLayerEXT = 5254, | |
CapabilityShaderViewportIndexLayerNV = 5254, | |
CapabilityShaderViewportMaskNV = 5255, | |
CapabilityShaderStereoViewNV = 5259, | |
CapabilityPerViewAttributesNV = 5260, | |
CapabilityFragmentFullyCoveredEXT = 5265, | |
CapabilityMeshShadingNV = 5266, | |
CapabilityImageFootprintNV = 5282, | |
CapabilityMeshShadingEXT = 5283, | |
CapabilityFragmentBarycentricKHR = 5284, | |
CapabilityFragmentBarycentricNV = 5284, | |
CapabilityComputeDerivativeGroupQuadsNV = 5288, | |
CapabilityFragmentDensityEXT = 5291, | |
CapabilityShadingRateNV = 5291, | |
CapabilityGroupNonUniformPartitionedNV = 5297, | |
CapabilityShaderNonUniform = 5301, | |
CapabilityShaderNonUniformEXT = 5301, | |
CapabilityRuntimeDescriptorArray = 5302, | |
CapabilityRuntimeDescriptorArrayEXT = 5302, | |
CapabilityInputAttachmentArrayDynamicIndexing = 5303, | |
CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, | |
CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, | |
CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, | |
CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, | |
CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, | |
CapabilityUniformBufferArrayNonUniformIndexing = 5306, | |
CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, | |
CapabilitySampledImageArrayNonUniformIndexing = 5307, | |
CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, | |
CapabilityStorageBufferArrayNonUniformIndexing = 5308, | |
CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, | |
CapabilityStorageImageArrayNonUniformIndexing = 5309, | |
CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, | |
CapabilityInputAttachmentArrayNonUniformIndexing = 5310, | |
CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, | |
CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, | |
CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, | |
CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, | |
CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, | |
CapabilityRayTracingPositionFetchKHR = 5336, | |
CapabilityRayTracingNV = 5340, | |
CapabilityRayTracingMotionBlurNV = 5341, | |
CapabilityVulkanMemoryModel = 5345, | |
CapabilityVulkanMemoryModelKHR = 5345, | |
CapabilityVulkanMemoryModelDeviceScope = 5346, | |
CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, | |
CapabilityPhysicalStorageBufferAddresses = 5347, | |
CapabilityPhysicalStorageBufferAddressesEXT = 5347, | |
CapabilityComputeDerivativeGroupLinearNV = 5350, | |
CapabilityRayTracingProvisionalKHR = 5353, | |
CapabilityCooperativeMatrixNV = 5357, | |
CapabilityFragmentShaderSampleInterlockEXT = 5363, | |
CapabilityFragmentShaderShadingRateInterlockEXT = 5372, | |
CapabilityShaderSMBuiltinsNV = 5373, | |
CapabilityFragmentShaderPixelInterlockEXT = 5378, | |
CapabilityDemoteToHelperInvocation = 5379, | |
CapabilityDemoteToHelperInvocationEXT = 5379, | |
CapabilityDisplacementMicromapNV = 5380, | |
CapabilityRayTracingOpacityMicromapEXT = 5381, | |
CapabilityShaderInvocationReorderNV = 5383, | |
CapabilityBindlessTextureNV = 5390, | |
CapabilityRayQueryPositionFetchKHR = 5391, | |
CapabilityRayTracingDisplacementMicromapNV = 5409, | |
CapabilitySubgroupShuffleINTEL = 5568, | |
CapabilitySubgroupBufferBlockIOINTEL = 5569, | |
CapabilitySubgroupImageBlockIOINTEL = 5570, | |
CapabilitySubgroupImageMediaBlockIOINTEL = 5579, | |
CapabilityRoundToInfinityINTEL = 5582, | |
CapabilityFloatingPointModeINTEL = 5583, | |
CapabilityIntegerFunctions2INTEL = 5584, | |
CapabilityFunctionPointersINTEL = 5603, | |
CapabilityIndirectReferencesINTEL = 5604, | |
CapabilityAsmINTEL = 5606, | |
CapabilityAtomicFloat32MinMaxEXT = 5612, | |
CapabilityAtomicFloat64MinMaxEXT = 5613, | |
CapabilityAtomicFloat16MinMaxEXT = 5616, | |
CapabilityVectorComputeINTEL = 5617, | |
CapabilityVectorAnyINTEL = 5619, | |
CapabilityExpectAssumeKHR = 5629, | |
CapabilitySubgroupAvcMotionEstimationINTEL = 5696, | |
CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697, | |
CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698, | |
CapabilityVariableLengthArrayINTEL = 5817, | |
CapabilityFunctionFloatControlINTEL = 5821, | |
CapabilityFPGAMemoryAttributesINTEL = 5824, | |
CapabilityFPFastMathModeINTEL = 5837, | |
CapabilityArbitraryPrecisionIntegersINTEL = 5844, | |
CapabilityArbitraryPrecisionFloatingPointINTEL = 5845, | |
CapabilityUnstructuredLoopControlsINTEL = 5886, | |
CapabilityFPGALoopControlsINTEL = 5888, | |
CapabilityKernelAttributesINTEL = 5892, | |
CapabilityFPGAKernelAttributesINTEL = 5897, | |
CapabilityFPGAMemoryAccessesINTEL = 5898, | |
CapabilityFPGAClusterAttributesINTEL = 5904, | |
CapabilityLoopFuseINTEL = 5906, | |
CapabilityFPGADSPControlINTEL = 5908, | |
CapabilityMemoryAccessAliasingINTEL = 5910, | |
CapabilityFPGAInvocationPipeliningAttributesINTEL = 5916, | |
CapabilityFPGABufferLocationINTEL = 5920, | |
CapabilityArbitraryPrecisionFixedPointINTEL = 5922, | |
CapabilityUSMStorageClassesINTEL = 5935, | |
CapabilityRuntimeAlignedAttributeINTEL = 5939, | |
CapabilityIOPipesINTEL = 5943, | |
CapabilityBlockingPipesINTEL = 5945, | |
CapabilityFPGARegINTEL = 5948, | |
CapabilityDotProductInputAll = 6016, | |
CapabilityDotProductInputAllKHR = 6016, | |
CapabilityDotProductInput4x8Bit = 6017, | |
CapabilityDotProductInput4x8BitKHR = 6017, | |
CapabilityDotProductInput4x8BitPacked = 6018, | |
CapabilityDotProductInput4x8BitPackedKHR = 6018, | |
CapabilityDotProduct = 6019, | |
CapabilityDotProductKHR = 6019, | |
CapabilityRayCullMaskKHR = 6020, | |
CapabilityCooperativeMatrixKHR = 6022, | |
CapabilityBitInstructions = 6025, | |
CapabilityGroupNonUniformRotateKHR = 6026, | |
CapabilityAtomicFloat32AddEXT = 6033, | |
CapabilityAtomicFloat64AddEXT = 6034, | |
CapabilityLongConstantCompositeINTEL = 6089, | |
CapabilityOptNoneINTEL = 6094, | |
CapabilityAtomicFloat16AddEXT = 6095, | |
CapabilityDebugInfoModuleINTEL = 6114, | |
CapabilityBFloat16ConversionINTEL = 6115, | |
CapabilitySplitBarrierINTEL = 6141, | |
CapabilityGlobalVariableFPGADecorationsINTEL = 6146, | |
CapabilityFPGAKernelAttributesv2INTEL = 6161, | |
CapabilityGlobalVariableHostAccessINTEL = 6167, | |
CapabilityFPMaxErrorINTEL = 6169, | |
CapabilityFPGALatencyControlINTEL = 6171, | |
CapabilityFPGAArgumentInterfacesINTEL = 6174, | |
CapabilityGroupUniformArithmeticKHR = 6400, | |
CapabilityCacheControlsINTEL = 6441, | |
CapabilityMax = 0x7fffffff, | |
}; | |
enum RayFlagsShift { | |
RayFlagsOpaqueKHRShift = 0, | |
RayFlagsNoOpaqueKHRShift = 1, | |
RayFlagsTerminateOnFirstHitKHRShift = 2, | |
RayFlagsSkipClosestHitShaderKHRShift = 3, | |
RayFlagsCullBackFacingTrianglesKHRShift = 4, | |
RayFlagsCullFrontFacingTrianglesKHRShift = 5, | |
RayFlagsCullOpaqueKHRShift = 6, | |
RayFlagsCullNoOpaqueKHRShift = 7, | |
RayFlagsSkipTrianglesKHRShift = 8, | |
RayFlagsSkipAABBsKHRShift = 9, | |
RayFlagsForceOpacityMicromap2StateEXTShift = 10, | |
RayFlagsMax = 0x7fffffff, | |
}; | |
enum RayFlagsMask { | |
RayFlagsMaskNone = 0, | |
RayFlagsOpaqueKHRMask = 0x00000001, | |
RayFlagsNoOpaqueKHRMask = 0x00000002, | |
RayFlagsTerminateOnFirstHitKHRMask = 0x00000004, | |
RayFlagsSkipClosestHitShaderKHRMask = 0x00000008, | |
RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010, | |
RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020, | |
RayFlagsCullOpaqueKHRMask = 0x00000040, | |
RayFlagsCullNoOpaqueKHRMask = 0x00000080, | |
RayFlagsSkipTrianglesKHRMask = 0x00000100, | |
RayFlagsSkipAABBsKHRMask = 0x00000200, | |
RayFlagsForceOpacityMicromap2StateEXTMask = 0x00000400, | |
}; | |
enum RayQueryIntersection { | |
RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0, | |
RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1, | |
RayQueryIntersectionMax = 0x7fffffff, | |
}; | |
enum RayQueryCommittedIntersectionType { | |
RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0, | |
RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1, | |
RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2, | |
RayQueryCommittedIntersectionTypeMax = 0x7fffffff, | |
}; | |
enum RayQueryCandidateIntersectionType { | |
RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0, | |
RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1, | |
RayQueryCandidateIntersectionTypeMax = 0x7fffffff, | |
}; | |
enum FragmentShadingRateShift { | |
FragmentShadingRateVertical2PixelsShift = 0, | |
FragmentShadingRateVertical4PixelsShift = 1, | |
FragmentShadingRateHorizontal2PixelsShift = 2, | |
FragmentShadingRateHorizontal4PixelsShift = 3, | |
FragmentShadingRateMax = 0x7fffffff, | |
}; | |
enum FragmentShadingRateMask { | |
FragmentShadingRateMaskNone = 0, | |
FragmentShadingRateVertical2PixelsMask = 0x00000001, | |
FragmentShadingRateVertical4PixelsMask = 0x00000002, | |
FragmentShadingRateHorizontal2PixelsMask = 0x00000004, | |
FragmentShadingRateHorizontal4PixelsMask = 0x00000008, | |
}; | |
enum FPDenormMode { | |
FPDenormModePreserve = 0, | |
FPDenormModeFlushToZero = 1, | |
FPDenormModeMax = 0x7fffffff, | |
}; | |
enum FPOperationMode { | |
FPOperationModeIEEE = 0, | |
FPOperationModeALT = 1, | |
FPOperationModeMax = 0x7fffffff, | |
}; | |
enum QuantizationModes { | |
QuantizationModesTRN = 0, | |
QuantizationModesTRN_ZERO = 1, | |
QuantizationModesRND = 2, | |
QuantizationModesRND_ZERO = 3, | |
QuantizationModesRND_INF = 4, | |
QuantizationModesRND_MIN_INF = 5, | |
QuantizationModesRND_CONV = 6, | |
QuantizationModesRND_CONV_ODD = 7, | |
QuantizationModesMax = 0x7fffffff, | |
}; | |
enum OverflowModes { | |
OverflowModesWRAP = 0, | |
OverflowModesSAT = 1, | |
OverflowModesSAT_ZERO = 2, | |
OverflowModesSAT_SYM = 3, | |
OverflowModesMax = 0x7fffffff, | |
}; | |
enum PackedVectorFormat { | |
PackedVectorFormatPackedVectorFormat4x8Bit = 0, | |
PackedVectorFormatPackedVectorFormat4x8BitKHR = 0, | |
PackedVectorFormatMax = 0x7fffffff, | |
}; | |
enum CooperativeMatrixOperandsShift { | |
CooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0, | |
CooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1, | |
CooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2, | |
CooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3, | |
CooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4, | |
CooperativeMatrixOperandsMax = 0x7fffffff, | |
}; | |
enum CooperativeMatrixOperandsMask { | |
CooperativeMatrixOperandsMaskNone = 0, | |
CooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001, | |
CooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002, | |
CooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004, | |
CooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008, | |
CooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010, | |
}; | |
enum CooperativeMatrixLayout { | |
CooperativeMatrixLayoutRowMajorKHR = 0, | |
CooperativeMatrixLayoutColumnMajorKHR = 1, | |
CooperativeMatrixLayoutMax = 0x7fffffff, | |
}; | |
enum CooperativeMatrixUse { | |
CooperativeMatrixUseMatrixAKHR = 0, | |
CooperativeMatrixUseMatrixBKHR = 1, | |
CooperativeMatrixUseMatrixAccumulatorKHR = 2, | |
CooperativeMatrixUseMax = 0x7fffffff, | |
}; | |
enum InitializationModeQualifier { | |
InitializationModeQualifierInitOnDeviceReprogramINTEL = 0, | |
InitializationModeQualifierInitOnDeviceResetINTEL = 1, | |
InitializationModeQualifierMax = 0x7fffffff, | |
}; | |
enum HostAccessQualifier { | |
HostAccessQualifierNoneINTEL = 0, | |
HostAccessQualifierReadINTEL = 1, | |
HostAccessQualifierWriteINTEL = 2, | |
HostAccessQualifierReadWriteINTEL = 3, | |
HostAccessQualifierMax = 0x7fffffff, | |
}; | |
enum LoadCacheControl { | |
LoadCacheControlUncachedINTEL = 0, | |
LoadCacheControlCachedINTEL = 1, | |
LoadCacheControlStreamingINTEL = 2, | |
LoadCacheControlInvalidateAfterReadINTEL = 3, | |
LoadCacheControlConstCachedINTEL = 4, | |
LoadCacheControlMax = 0x7fffffff, | |
}; | |
enum StoreCacheControl { | |
StoreCacheControlUncachedINTEL = 0, | |
StoreCacheControlWriteThroughINTEL = 1, | |
StoreCacheControlWriteBackINTEL = 2, | |
StoreCacheControlStreamingINTEL = 3, | |
StoreCacheControlMax = 0x7fffffff, | |
}; | |
enum Op { | |
OpNop = 0, | |
OpUndef = 1, | |
OpSourceContinued = 2, | |
OpSource = 3, | |
OpSourceExtension = 4, | |
OpName = 5, | |
OpMemberName = 6, | |
OpString = 7, | |
OpLine = 8, | |
OpExtension = 10, | |
OpExtInstImport = 11, | |
OpExtInst = 12, | |
OpMemoryModel = 14, | |
OpEntryPoint = 15, | |
OpExecutionMode = 16, | |
OpCapability = 17, | |
OpTypeVoid = 19, | |
OpTypeBool = 20, | |
OpTypeInt = 21, | |
OpTypeFloat = 22, | |
OpTypeVector = 23, | |
OpTypeMatrix = 24, | |
OpTypeImage = 25, | |
OpTypeSampler = 26, | |
OpTypeSampledImage = 27, | |
OpTypeArray = 28, | |
OpTypeRuntimeArray = 29, | |
OpTypeStruct = 30, | |
OpTypeOpaque = 31, | |
OpTypePointer = 32, | |
OpTypeFunction = 33, | |
OpTypeEvent = 34, | |
OpTypeDeviceEvent = 35, | |
OpTypeReserveId = 36, | |
OpTypeQueue = 37, | |
OpTypePipe = 38, | |
OpTypeForwardPointer = 39, | |
OpConstantTrue = 41, | |
OpConstantFalse = 42, | |
OpConstant = 43, | |
OpConstantComposite = 44, | |
OpConstantSampler = 45, | |
OpConstantNull = 46, | |
OpSpecConstantTrue = 48, | |
OpSpecConstantFalse = 49, | |
OpSpecConstant = 50, | |
OpSpecConstantComposite = 51, | |
OpSpecConstantOp = 52, | |
OpFunction = 54, | |
OpFunctionParameter = 55, | |
OpFunctionEnd = 56, | |
OpFunctionCall = 57, | |
OpVariable = 59, | |
OpImageTexelPointer = 60, | |
OpLoad = 61, | |
OpStore = 62, | |
OpCopyMemory = 63, | |
OpCopyMemorySized = 64, | |
OpAccessChain = 65, | |
OpInBoundsAccessChain = 66, | |
OpPtrAccessChain = 67, | |
OpArrayLength = 68, | |
OpGenericPtrMemSemantics = 69, | |
OpInBoundsPtrAccessChain = 70, | |
OpDecorate = 71, | |
OpMemberDecorate = 72, | |
OpDecorationGroup = 73, | |
OpGroupDecorate = 74, | |
OpGroupMemberDecorate = 75, | |
OpVectorExtractDynamic = 77, | |
OpVectorInsertDynamic = 78, | |
OpVectorShuffle = 79, | |
OpCompositeConstruct = 80, | |
OpCompositeExtract = 81, | |
OpCompositeInsert = 82, | |
OpCopyObject = 83, | |
OpTranspose = 84, | |
OpSampledImage = 86, | |
OpImageSampleImplicitLod = 87, | |
OpImageSampleExplicitLod = 88, | |
OpImageSampleDrefImplicitLod = 89, | |
OpImageSampleDrefExplicitLod = 90, | |
OpImageSampleProjImplicitLod = 91, | |
OpImageSampleProjExplicitLod = 92, | |
OpImageSampleProjDrefImplicitLod = 93, | |
OpImageSampleProjDrefExplicitLod = 94, | |
OpImageFetch = 95, | |
OpImageGather = 96, | |
OpImageDrefGather = 97, | |
OpImageRead = 98, | |
OpImageWrite = 99, | |
OpImage = 100, | |
OpImageQueryFormat = 101, | |
OpImageQueryOrder = 102, | |
OpImageQuerySizeLod = 103, | |
OpImageQuerySize = 104, | |
OpImageQueryLod = 105, | |
OpImageQueryLevels = 106, | |
OpImageQuerySamples = 107, | |
OpConvertFToU = 109, | |
OpConvertFToS = 110, | |
OpConvertSToF = 111, | |
OpConvertUToF = 112, | |
OpUConvert = 113, | |
OpSConvert = 114, | |
OpFConvert = 115, | |
OpQuantizeToF16 = 116, | |
OpConvertPtrToU = 117, | |
OpSatConvertSToU = 118, | |
OpSatConvertUToS = 119, | |
OpConvertUToPtr = 120, | |
OpPtrCastToGeneric = 121, | |
OpGenericCastToPtr = 122, | |
OpGenericCastToPtrExplicit = 123, | |
OpBitcast = 124, | |
OpSNegate = 126, | |
OpFNegate = 127, | |
OpIAdd = 128, | |
OpFAdd = 129, | |
OpISub = 130, | |
OpFSub = 131, | |
OpIMul = 132, | |
OpFMul = 133, | |
OpUDiv = 134, | |
OpSDiv = 135, | |
OpFDiv = 136, | |
OpUMod = 137, | |
OpSRem = 138, | |
OpSMod = 139, | |
OpFRem = 140, | |
OpFMod = 141, | |
OpVectorTimesScalar = 142, | |
OpMatrixTimesScalar = 143, | |
OpVectorTimesMatrix = 144, | |
OpMatrixTimesVector = 145, | |
OpMatrixTimesMatrix = 146, | |
OpOuterProduct = 147, | |
OpDot = 148, | |
OpIAddCarry = 149, | |
OpISubBorrow = 150, | |
OpUMulExtended = 151, | |
OpSMulExtended = 152, | |
OpAny = 154, | |
OpAll = 155, | |
OpIsNan = 156, | |
OpIsInf = 157, | |
OpIsFinite = 158, | |
OpIsNormal = 159, | |
OpSignBitSet = 160, | |
OpLessOrGreater = 161, | |
OpOrdered = 162, | |
OpUnordered = 163, | |
OpLogicalEqual = 164, | |
OpLogicalNotEqual = 165, | |
OpLogicalOr = 166, | |
OpLogicalAnd = 167, | |
OpLogicalNot = 168, | |
OpSelect = 169, | |
OpIEqual = 170, | |
OpINotEqual = 171, | |
OpUGreaterThan = 172, | |
OpSGreaterThan = 173, | |
OpUGreaterThanEqual = 174, | |
OpSGreaterThanEqual = 175, | |
OpULessThan = 176, | |
OpSLessThan = 177, | |
OpULessThanEqual = 178, | |
OpSLessThanEqual = 179, | |
OpFOrdEqual = 180, | |
OpFUnordEqual = 181, | |
OpFOrdNotEqual = 182, | |
OpFUnordNotEqual = 183, | |
OpFOrdLessThan = 184, | |
OpFUnordLessThan = 185, | |
OpFOrdGreaterThan = 186, | |
OpFUnordGreaterThan = 187, | |
OpFOrdLessThanEqual = 188, | |
OpFUnordLessThanEqual = 189, | |
OpFOrdGreaterThanEqual = 190, | |
OpFUnordGreaterThanEqual = 191, | |
OpShiftRightLogical = 194, | |
OpShiftRightArithmetic = 195, | |
OpShiftLeftLogical = 196, | |
OpBitwiseOr = 197, | |
OpBitwiseXor = 198, | |
OpBitwiseAnd = 199, | |
OpNot = 200, | |
OpBitFieldInsert = 201, | |
OpBitFieldSExtract = 202, | |
OpBitFieldUExtract = 203, | |
OpBitReverse = 204, | |
OpBitCount = 205, | |
OpDPdx = 207, | |
OpDPdy = 208, | |
OpFwidth = 209, | |
OpDPdxFine = 210, | |
OpDPdyFine = 211, | |
OpFwidthFine = 212, | |
OpDPdxCoarse = 213, | |
OpDPdyCoarse = 214, | |
OpFwidthCoarse = 215, | |
OpEmitVertex = 218, | |
OpEndPrimitive = 219, | |
OpEmitStreamVertex = 220, | |
OpEndStreamPrimitive = 221, | |
OpControlBarrier = 224, | |
OpMemoryBarrier = 225, | |
OpAtomicLoad = 227, | |
OpAtomicStore = 228, | |
OpAtomicExchange = 229, | |
OpAtomicCompareExchange = 230, | |
OpAtomicCompareExchangeWeak = 231, | |
OpAtomicIIncrement = 232, | |
OpAtomicIDecrement = 233, | |
OpAtomicIAdd = 234, | |
OpAtomicISub = 235, | |
OpAtomicSMin = 236, | |
OpAtomicUMin = 237, | |
OpAtomicSMax = 238, | |
OpAtomicUMax = 239, | |
OpAtomicAnd = 240, | |
OpAtomicOr = 241, | |
OpAtomicXor = 242, | |
OpPhi = 245, | |
OpLoopMerge = 246, | |
OpSelectionMerge = 247, | |
OpLabel = 248, | |
OpBranch = 249, | |
OpBranchConditional = 250, | |
OpSwitch = 251, | |
OpKill = 252, | |
OpReturn = 253, | |
OpReturnValue = 254, | |
OpUnreachable = 255, | |
OpLifetimeStart = 256, | |
OpLifetimeStop = 257, | |
OpGroupAsyncCopy = 259, | |
OpGroupWaitEvents = 260, | |
OpGroupAll = 261, | |
OpGroupAny = 262, | |
OpGroupBroadcast = 263, | |
OpGroupIAdd = 264, | |
OpGroupFAdd = 265, | |
OpGroupFMin = 266, | |
OpGroupUMin = 267, | |
OpGroupSMin = 268, | |
OpGroupFMax = 269, | |
OpGroupUMax = 270, | |
OpGroupSMax = 271, | |
OpReadPipe = 274, | |
OpWritePipe = 275, | |
OpReservedReadPipe = 276, | |
OpReservedWritePipe = 277, | |
OpReserveReadPipePackets = 278, | |
OpReserveWritePipePackets = 279, | |
OpCommitReadPipe = 280, | |
OpCommitWritePipe = 281, | |
OpIsValidReserveId = 282, | |
OpGetNumPipePackets = 283, | |
OpGetMaxPipePackets = 284, | |
OpGroupReserveReadPipePackets = 285, | |
OpGroupReserveWritePipePackets = 286, | |
OpGroupCommitReadPipe = 287, | |
OpGroupCommitWritePipe = 288, | |
OpEnqueueMarker = 291, | |
OpEnqueueKernel = 292, | |
OpGetKernelNDrangeSubGroupCount = 293, | |
OpGetKernelNDrangeMaxSubGroupSize = 294, | |
OpGetKernelWorkGroupSize = 295, | |
OpGetKernelPreferredWorkGroupSizeMultiple = 296, | |
OpRetainEvent = 297, | |
OpReleaseEvent = 298, | |
OpCreateUserEvent = 299, | |
OpIsValidEvent = 300, | |
OpSetUserEventStatus = 301, | |
OpCaptureEventProfilingInfo = 302, | |
OpGetDefaultQueue = 303, | |
OpBuildNDRange = 304, | |
OpImageSparseSampleImplicitLod = 305, | |
OpImageSparseSampleExplicitLod = 306, | |
OpImageSparseSampleDrefImplicitLod = 307, | |
OpImageSparseSampleDrefExplicitLod = 308, | |
OpImageSparseSampleProjImplicitLod = 309, | |
OpImageSparseSampleProjExplicitLod = 310, | |
OpImageSparseSampleProjDrefImplicitLod = 311, | |
OpImageSparseSampleProjDrefExplicitLod = 312, | |
OpImageSparseFetch = 313, | |
OpImageSparseGather = 314, | |
OpImageSparseDrefGather = 315, | |
OpImageSparseTexelsResident = 316, | |
OpNoLine = 317, | |
OpAtomicFlagTestAndSet = 318, | |
OpAtomicFlagClear = 319, | |
OpImageSparseRead = 320, | |
OpSizeOf = 321, | |
OpTypePipeStorage = 322, | |
OpConstantPipeStorage = 323, | |
OpCreatePipeFromPipeStorage = 324, | |
OpGetKernelLocalSizeForSubgroupCount = 325, | |
OpGetKernelMaxNumSubgroups = 326, | |
OpTypeNamedBarrier = 327, | |
OpNamedBarrierInitialize = 328, | |
OpMemoryNamedBarrier = 329, | |
OpModuleProcessed = 330, | |
OpExecutionModeId = 331, | |
OpDecorateId = 332, | |
OpGroupNonUniformElect = 333, | |
OpGroupNonUniformAll = 334, | |
OpGroupNonUniformAny = 335, | |
OpGroupNonUniformAllEqual = 336, | |
OpGroupNonUniformBroadcast = 337, | |
OpGroupNonUniformBroadcastFirst = 338, | |
OpGroupNonUniformBallot = 339, | |
OpGroupNonUniformInverseBallot = 340, | |
OpGroupNonUniformBallotBitExtract = 341, | |
OpGroupNonUniformBallotBitCount = 342, | |
OpGroupNonUniformBallotFindLSB = 343, | |
OpGroupNonUniformBallotFindMSB = 344, | |
OpGroupNonUniformShuffle = 345, | |
OpGroupNonUniformShuffleXor = 346, | |
OpGroupNonUniformShuffleUp = 347, | |
OpGroupNonUniformShuffleDown = 348, | |
OpGroupNonUniformIAdd = 349, | |
OpGroupNonUniformFAdd = 350, | |
OpGroupNonUniformIMul = 351, | |
OpGroupNonUniformFMul = 352, | |
OpGroupNonUniformSMin = 353, | |
OpGroupNonUniformUMin = 354, | |
OpGroupNonUniformFMin = 355, | |
OpGroupNonUniformSMax = 356, | |
OpGroupNonUniformUMax = 357, | |
OpGroupNonUniformFMax = 358, | |
OpGroupNonUniformBitwiseAnd = 359, | |
OpGroupNonUniformBitwiseOr = 360, | |
OpGroupNonUniformBitwiseXor = 361, | |
OpGroupNonUniformLogicalAnd = 362, | |
OpGroupNonUniformLogicalOr = 363, | |
OpGroupNonUniformLogicalXor = 364, | |
OpGroupNonUniformQuadBroadcast = 365, | |
OpGroupNonUniformQuadSwap = 366, | |
OpCopyLogical = 400, | |
OpPtrEqual = 401, | |
OpPtrNotEqual = 402, | |
OpPtrDiff = 403, | |
OpColorAttachmentReadEXT = 4160, | |
OpDepthAttachmentReadEXT = 4161, | |
OpStencilAttachmentReadEXT = 4162, | |
OpTerminateInvocation = 4416, | |
OpSubgroupBallotKHR = 4421, | |
OpSubgroupFirstInvocationKHR = 4422, | |
OpSubgroupAllKHR = 4428, | |
OpSubgroupAnyKHR = 4429, | |
OpSubgroupAllEqualKHR = 4430, | |
OpGroupNonUniformRotateKHR = 4431, | |
OpSubgroupReadInvocationKHR = 4432, | |
OpTraceRayKHR = 4445, | |
OpExecuteCallableKHR = 4446, | |
OpConvertUToAccelerationStructureKHR = 4447, | |
OpIgnoreIntersectionKHR = 4448, | |
OpTerminateRayKHR = 4449, | |
OpSDot = 4450, | |
OpSDotKHR = 4450, | |
OpUDot = 4451, | |
OpUDotKHR = 4451, | |
OpSUDot = 4452, | |
OpSUDotKHR = 4452, | |
OpSDotAccSat = 4453, | |
OpSDotAccSatKHR = 4453, | |
OpUDotAccSat = 4454, | |
OpUDotAccSatKHR = 4454, | |
OpSUDotAccSat = 4455, | |
OpSUDotAccSatKHR = 4455, | |
OpTypeCooperativeMatrixKHR = 4456, | |
OpCooperativeMatrixLoadKHR = 4457, | |
OpCooperativeMatrixStoreKHR = 4458, | |
OpCooperativeMatrixMulAddKHR = 4459, | |
OpCooperativeMatrixLengthKHR = 4460, | |
OpTypeRayQueryKHR = 4472, | |
OpRayQueryInitializeKHR = 4473, | |
OpRayQueryTerminateKHR = 4474, | |
OpRayQueryGenerateIntersectionKHR = 4475, | |
OpRayQueryConfirmIntersectionKHR = 4476, | |
OpRayQueryProceedKHR = 4477, | |
OpRayQueryGetIntersectionTypeKHR = 4479, | |
OpImageSampleWeightedQCOM = 4480, | |
OpImageBoxFilterQCOM = 4481, | |
OpImageBlockMatchSSDQCOM = 4482, | |
OpImageBlockMatchSADQCOM = 4483, | |
OpGroupIAddNonUniformAMD = 5000, | |
OpGroupFAddNonUniformAMD = 5001, | |
OpGroupFMinNonUniformAMD = 5002, | |
OpGroupUMinNonUniformAMD = 5003, | |
OpGroupSMinNonUniformAMD = 5004, | |
OpGroupFMaxNonUniformAMD = 5005, | |
OpGroupUMaxNonUniformAMD = 5006, | |
OpGroupSMaxNonUniformAMD = 5007, | |
OpFragmentMaskFetchAMD = 5011, | |
OpFragmentFetchAMD = 5012, | |
OpReadClockKHR = 5056, | |
OpFinalizeNodePayloadsAMDX = 5075, | |
OpFinishWritingNodePayloadAMDX = 5078, | |
OpInitializeNodePayloadsAMDX = 5090, | |
OpHitObjectRecordHitMotionNV = 5249, | |
OpHitObjectRecordHitWithIndexMotionNV = 5250, | |
OpHitObjectRecordMissMotionNV = 5251, | |
OpHitObjectGetWorldToObjectNV = 5252, | |
OpHitObjectGetObjectToWorldNV = 5253, | |
OpHitObjectGetObjectRayDirectionNV = 5254, | |
OpHitObjectGetObjectRayOriginNV = 5255, | |
OpHitObjectTraceRayMotionNV = 5256, | |
OpHitObjectGetShaderRecordBufferHandleNV = 5257, | |
OpHitObjectGetShaderBindingTableRecordIndexNV = 5258, | |
OpHitObjectRecordEmptyNV = 5259, | |
OpHitObjectTraceRayNV = 5260, | |
OpHitObjectRecordHitNV = 5261, | |
OpHitObjectRecordHitWithIndexNV = 5262, | |
OpHitObjectRecordMissNV = 5263, | |
OpHitObjectExecuteShaderNV = 5264, | |
OpHitObjectGetCurrentTimeNV = 5265, | |
OpHitObjectGetAttributesNV = 5266, | |
OpHitObjectGetHitKindNV = 5267, | |
OpHitObjectGetPrimitiveIndexNV = 5268, | |
OpHitObjectGetGeometryIndexNV = 5269, | |
OpHitObjectGetInstanceIdNV = 5270, | |
OpHitObjectGetInstanceCustomIndexNV = 5271, | |
OpHitObjectGetWorldRayDirectionNV = 5272, | |
OpHitObjectGetWorldRayOriginNV = 5273, | |
OpHitObjectGetRayTMaxNV = 5274, | |
OpHitObjectGetRayTMinNV = 5275, | |
OpHitObjectIsEmptyNV = 5276, | |
OpHitObjectIsHitNV = 5277, | |
OpHitObjectIsMissNV = 5278, | |
OpReorderThreadWithHitObjectNV = 5279, | |
OpReorderThreadWithHintNV = 5280, | |
OpTypeHitObjectNV = 5281, | |
OpImageSampleFootprintNV = 5283, | |
OpEmitMeshTasksEXT = 5294, | |
OpSetMeshOutputsEXT = 5295, | |
OpGroupNonUniformPartitionNV = 5296, | |
OpWritePackedPrimitiveIndices4x8NV = 5299, | |
OpFetchMicroTriangleVertexPositionNV = 5300, | |
OpFetchMicroTriangleVertexBarycentricNV = 5301, | |
OpReportIntersectionKHR = 5334, | |
OpReportIntersectionNV = 5334, | |
OpIgnoreIntersectionNV = 5335, | |
OpTerminateRayNV = 5336, | |
OpTraceNV = 5337, | |
OpTraceMotionNV = 5338, | |
OpTraceRayMotionNV = 5339, | |
OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340, | |
OpTypeAccelerationStructureKHR = 5341, | |
OpTypeAccelerationStructureNV = 5341, | |
OpExecuteCallableNV = 5344, | |
OpTypeCooperativeMatrixNV = 5358, | |
OpCooperativeMatrixLoadNV = 5359, | |
OpCooperativeMatrixStoreNV = 5360, | |
OpCooperativeMatrixMulAddNV = 5361, | |
OpCooperativeMatrixLengthNV = 5362, | |
OpBeginInvocationInterlockEXT = 5364, | |
OpEndInvocationInterlockEXT = 5365, | |
OpDemoteToHelperInvocation = 5380, | |
OpDemoteToHelperInvocationEXT = 5380, | |
OpIsHelperInvocationEXT = 5381, | |
OpConvertUToImageNV = 5391, | |
OpConvertUToSamplerNV = 5392, | |
OpConvertImageToUNV = 5393, | |
OpConvertSamplerToUNV = 5394, | |
OpConvertUToSampledImageNV = 5395, | |
OpConvertSampledImageToUNV = 5396, | |
OpSamplerImageAddressingModeNV = 5397, | |
OpSubgroupShuffleINTEL = 5571, | |
OpSubgroupShuffleDownINTEL = 5572, | |
OpSubgroupShuffleUpINTEL = 5573, | |
OpSubgroupShuffleXorINTEL = 5574, | |
OpSubgroupBlockReadINTEL = 5575, | |
OpSubgroupBlockWriteINTEL = 5576, | |
OpSubgroupImageBlockReadINTEL = 5577, | |
OpSubgroupImageBlockWriteINTEL = 5578, | |
OpSubgroupImageMediaBlockReadINTEL = 5580, | |
OpSubgroupImageMediaBlockWriteINTEL = 5581, | |
OpUCountLeadingZerosINTEL = 5585, | |
OpUCountTrailingZerosINTEL = 5586, | |
OpAbsISubINTEL = 5587, | |
OpAbsUSubINTEL = 5588, | |
OpIAddSatINTEL = 5589, | |
OpUAddSatINTEL = 5590, | |
OpIAverageINTEL = 5591, | |
OpUAverageINTEL = 5592, | |
OpIAverageRoundedINTEL = 5593, | |
OpUAverageRoundedINTEL = 5594, | |
OpISubSatINTEL = 5595, | |
OpUSubSatINTEL = 5596, | |
OpIMul32x16INTEL = 5597, | |
OpUMul32x16INTEL = 5598, | |
OpConstantFunctionPointerINTEL = 5600, | |
OpFunctionPointerCallINTEL = 5601, | |
OpAsmTargetINTEL = 5609, | |
OpAsmINTEL = 5610, | |
OpAsmCallINTEL = 5611, | |
OpAtomicFMinEXT = 5614, | |
OpAtomicFMaxEXT = 5615, | |
OpAssumeTrueKHR = 5630, | |
OpExpectKHR = 5631, | |
OpDecorateString = 5632, | |
OpDecorateStringGOOGLE = 5632, | |
OpMemberDecorateString = 5633, | |
OpMemberDecorateStringGOOGLE = 5633, | |
OpVmeImageINTEL = 5699, | |
OpTypeVmeImageINTEL = 5700, | |
OpTypeAvcImePayloadINTEL = 5701, | |
OpTypeAvcRefPayloadINTEL = 5702, | |
OpTypeAvcSicPayloadINTEL = 5703, | |
OpTypeAvcMcePayloadINTEL = 5704, | |
OpTypeAvcMceResultINTEL = 5705, | |
OpTypeAvcImeResultINTEL = 5706, | |
OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707, | |
OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708, | |
OpTypeAvcImeSingleReferenceStreaminINTEL = 5709, | |
OpTypeAvcImeDualReferenceStreaminINTEL = 5710, | |
OpTypeAvcRefResultINTEL = 5711, | |
OpTypeAvcSicResultINTEL = 5712, | |
OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713, | |
OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714, | |
OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715, | |
OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716, | |
OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717, | |
OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718, | |
OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719, | |
OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720, | |
OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721, | |
OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722, | |
OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723, | |
OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724, | |
OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725, | |
OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726, | |
OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727, | |
OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728, | |
OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729, | |
OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730, | |
OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731, | |
OpSubgroupAvcMceConvertToImePayloadINTEL = 5732, | |
OpSubgroupAvcMceConvertToImeResultINTEL = 5733, | |
OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734, | |
OpSubgroupAvcMceConvertToRefResultINTEL = 5735, | |
OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736, | |
OpSubgroupAvcMceConvertToSicResultINTEL = 5737, | |
OpSubgroupAvcMceGetMotionVectorsINTEL = 5738, | |
OpSubgroupAvcMceGetInterDistortionsINTEL = 5739, | |
OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740, | |
OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741, | |
OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742, | |
OpSubgroupAvcMceGetInterDirectionsINTEL = 5743, | |
OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744, | |
OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745, | |
OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746, | |
OpSubgroupAvcImeInitializeINTEL = 5747, | |
OpSubgroupAvcImeSetSingleReferenceINTEL = 5748, | |
OpSubgroupAvcImeSetDualReferenceINTEL = 5749, | |
OpSubgroupAvcImeRefWindowSizeINTEL = 5750, | |
OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751, | |
OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752, | |
OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753, | |
OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754, | |
OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755, | |
OpSubgroupAvcImeSetWeightedSadINTEL = 5756, | |
OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757, | |
OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758, | |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759, | |
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760, | |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761, | |
OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762, | |
OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763, | |
OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764, | |
OpSubgroupAvcImeConvertToMceResultINTEL = 5765, | |
OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766, | |
OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767, | |
OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768, | |
OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769, | |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770, | |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771, | |
OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772, | |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773, | |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774, | |
OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775, | |
OpSubgroupAvcImeGetBorderReachedINTEL = 5776, | |
OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777, | |
OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778, | |
OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779, | |
OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780, | |
OpSubgroupAvcFmeInitializeINTEL = 5781, | |
OpSubgroupAvcBmeInitializeINTEL = 5782, | |
OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783, | |
OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784, | |
OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785, | |
OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786, | |
OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787, | |
OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788, | |
OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789, | |
OpSubgroupAvcRefConvertToMceResultINTEL = 5790, | |
OpSubgroupAvcSicInitializeINTEL = 5791, | |
OpSubgroupAvcSicConfigureSkcINTEL = 5792, | |
OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793, | |
OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794, | |
OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795, | |
OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796, | |
OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797, | |
OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798, | |
OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799, | |
OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800, | |
OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801, | |
OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802, | |
OpSubgroupAvcSicEvaluateIpeINTEL = 5803, | |
OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804, | |
OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805, | |
OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806, | |
OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807, | |
OpSubgroupAvcSicConvertToMceResultINTEL = 5808, | |
OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809, | |
OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810, | |
OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811, | |
OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812, | |
OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813, | |
OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, | |
OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, | |
OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, | |
OpVariableLengthArrayINTEL = 5818, | |
OpSaveMemoryINTEL = 5819, | |
OpRestoreMemoryINTEL = 5820, | |
OpArbitraryFloatSinCosPiINTEL = 5840, | |
OpArbitraryFloatCastINTEL = 5841, | |
OpArbitraryFloatCastFromIntINTEL = 5842, | |
OpArbitraryFloatCastToIntINTEL = 5843, | |
OpArbitraryFloatAddINTEL = 5846, | |
OpArbitraryFloatSubINTEL = 5847, | |
OpArbitraryFloatMulINTEL = 5848, | |
OpArbitraryFloatDivINTEL = 5849, | |
OpArbitraryFloatGTINTEL = 5850, | |
OpArbitraryFloatGEINTEL = 5851, | |
OpArbitraryFloatLTINTEL = 5852, | |
OpArbitraryFloatLEINTEL = 5853, | |
OpArbitraryFloatEQINTEL = 5854, | |
OpArbitraryFloatRecipINTEL = 5855, | |
OpArbitraryFloatRSqrtINTEL = 5856, | |
OpArbitraryFloatCbrtINTEL = 5857, | |
OpArbitraryFloatHypotINTEL = 5858, | |
OpArbitraryFloatSqrtINTEL = 5859, | |
OpArbitraryFloatLogINTEL = 5860, | |
OpArbitraryFloatLog2INTEL = 5861, | |
OpArbitraryFloatLog10INTEL = 5862, | |
OpArbitraryFloatLog1pINTEL = 5863, | |
OpArbitraryFloatExpINTEL = 5864, | |
OpArbitraryFloatExp2INTEL = 5865, | |
OpArbitraryFloatExp10INTEL = 5866, | |
OpArbitraryFloatExpm1INTEL = 5867, | |
OpArbitraryFloatSinINTEL = 5868, | |
OpArbitraryFloatCosINTEL = 5869, | |
OpArbitraryFloatSinCosINTEL = 5870, | |
OpArbitraryFloatSinPiINTEL = 5871, | |
OpArbitraryFloatCosPiINTEL = 5872, | |
OpArbitraryFloatASinINTEL = 5873, | |
OpArbitraryFloatASinPiINTEL = 5874, | |
OpArbitraryFloatACosINTEL = 5875, | |
OpArbitraryFloatACosPiINTEL = 5876, | |
OpArbitraryFloatATanINTEL = 5877, | |
OpArbitraryFloatATanPiINTEL = 5878, | |
OpArbitraryFloatATan2INTEL = 5879, | |
OpArbitraryFloatPowINTEL = 5880, | |
OpArbitraryFloatPowRINTEL = 5881, | |
OpArbitraryFloatPowNINTEL = 5882, | |
OpLoopControlINTEL = 5887, | |
OpAliasDomainDeclINTEL = 5911, | |
OpAliasScopeDeclINTEL = 5912, | |
OpAliasScopeListDeclINTEL = 5913, | |
OpFixedSqrtINTEL = 5923, | |
OpFixedRecipINTEL = 5924, | |
OpFixedRsqrtINTEL = 5925, | |
OpFixedSinINTEL = 5926, | |
OpFixedCosINTEL = 5927, | |
OpFixedSinCosINTEL = 5928, | |
OpFixedSinPiINTEL = 5929, | |
OpFixedCosPiINTEL = 5930, | |
OpFixedSinCosPiINTEL = 5931, | |
OpFixedLogINTEL = 5932, | |
OpFixedExpINTEL = 5933, | |
OpPtrCastToCrossWorkgroupINTEL = 5934, | |
OpCrossWorkgroupCastToPtrINTEL = 5938, | |
OpReadPipeBlockingINTEL = 5946, | |
OpWritePipeBlockingINTEL = 5947, | |
OpFPGARegINTEL = 5949, | |
OpRayQueryGetRayTMinKHR = 6016, | |
OpRayQueryGetRayFlagsKHR = 6017, | |
OpRayQueryGetIntersectionTKHR = 6018, | |
OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019, | |
OpRayQueryGetIntersectionInstanceIdKHR = 6020, | |
OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021, | |
OpRayQueryGetIntersectionGeometryIndexKHR = 6022, | |
OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023, | |
OpRayQueryGetIntersectionBarycentricsKHR = 6024, | |
OpRayQueryGetIntersectionFrontFaceKHR = 6025, | |
OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026, | |
OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027, | |
OpRayQueryGetIntersectionObjectRayOriginKHR = 6028, | |
OpRayQueryGetWorldRayDirectionKHR = 6029, | |
OpRayQueryGetWorldRayOriginKHR = 6030, | |
OpRayQueryGetIntersectionObjectToWorldKHR = 6031, | |
OpRayQueryGetIntersectionWorldToObjectKHR = 6032, | |
OpAtomicFAddEXT = 6035, | |
OpTypeBufferSurfaceINTEL = 6086, | |
OpTypeStructContinuedINTEL = 6090, | |
OpConstantCompositeContinuedINTEL = 6091, | |
OpSpecConstantCompositeContinuedINTEL = 6092, | |
OpConvertFToBF16INTEL = 6116, | |
OpConvertBF16ToFINTEL = 6117, | |
OpControlBarrierArriveINTEL = 6142, | |
OpControlBarrierWaitINTEL = 6143, | |
OpGroupIMulKHR = 6401, | |
OpGroupFMulKHR = 6402, | |
OpGroupBitwiseAndKHR = 6403, | |
OpGroupBitwiseOrKHR = 6404, | |
OpGroupBitwiseXorKHR = 6405, | |
OpGroupLogicalAndKHR = 6406, | |
OpGroupLogicalOrKHR = 6407, | |
OpGroupLogicalXorKHR = 6408, | |
OpMax = 0x7fffffff, | |
}; | |
# 2877 "spirv/unified1/spirv.hpp" | |
} | |
# 24 "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace spirv | |
{ | |
#pragma region ATOMICS | |
template<typename T> | |
T atomicAdd([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memorySemantics, T value); | |
template<> | |
[[vk::ext_instruction(spv::OpAtomicIAdd)]] | |
int32_t atomicAdd([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, int32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicIAdd )]] | |
uint32_t atomicAdd([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, uint32_t value); | |
template<typename T> | |
T atomicAnd([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memorySemantics, T value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicAnd )]] | |
int32_t atomicAnd([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, int32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicAnd )]] | |
uint32_t atomicAnd([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, uint32_t value); | |
template<typename T> | |
T atomicOr([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memorySemantics, T value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicOr )]] | |
int32_t atomicOr([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, int32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicOr )]] | |
uint32_t atomicOr([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, uint32_t value); | |
template<typename T> | |
T atomicXor([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memorySemantics, T value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicXor )]] | |
int32_t atomicXor([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, int32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicXor )]] | |
uint32_t atomicXor([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, uint32_t value); | |
template<typename T> | |
T atomicMin([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memorySemantics, T value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicSMin )]] | |
int32_t atomicMin([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, int32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicSMin )]] | |
uint32_t atomicMin([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, uint32_t value); | |
template<typename T> | |
T atomicMax([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memorySemantics, T value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicSMax )]] | |
int32_t atomicMax([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, int32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicSMax )]] | |
uint32_t atomicMax([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, uint32_t value); | |
template<typename T> | |
T atomicExchange([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memorySemantics, T value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicExchange )]] | |
int32_t atomicExchange([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, int32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicExchange )]] | |
uint32_t atomicExchange([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, uint32_t value); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicExchange )]] | |
float32_t atomicExchange([[vk::ext_reference]] float32_t ptr, uint32_t memoryScope, uint32_t memorySemantics, float32_t value); | |
template<typename T> | |
T atomicCompSwap([[vk::ext_reference]] T ptr, uint32_t memoryScope, uint32_t memSemanticsEqual, uint32_t memSemanticsUnequal, T value, T comparator); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicCompareExchange )]] | |
int32_t atomicCompSwap([[vk::ext_reference]] int32_t ptr, uint32_t memoryScope, uint32_t memSemanticsEqual, uint32_t memSemanticsUnequal, int32_t value, int32_t comparator); | |
template<> | |
[[vk::ext_instruction( spv::OpAtomicCompareExchange )]] | |
uint32_t atomicCompSwap([[vk::ext_reference]] uint32_t ptr, uint32_t memoryScope, uint32_t memSemanticsEqual, uint32_t memSemanticsUnequal, uint32_t value, uint32_t comparator); | |
#pragma endregion ATOMICS | |
#pragma region BARRIERS | |
[[vk::ext_instruction( spv::OpControlBarrier )]] | |
void controlBarrier(uint32_t executionScope, uint32_t memoryScope, uint32_t memorySemantics); | |
[[vk::ext_instruction( spv::OpMemoryBarrier )]] | |
void memoryBarrier(uint32_t memoryScope, uint32_t memorySemantics); | |
#pragma endregion BARRIERS | |
#pragma region CONVERSION | |
template<class T, class U> | |
[[vk::ext_instruction(spv::OpBitcast)]] | |
T bitcast(U); | |
#pragma endregion CONVERSION | |
} | |
} | |
} | |
# 540 "nbl/builtin/hlsl/bit.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
template<class T, class U> | |
T bit_cast(U val) | |
{ | |
_Static_assert(sizeof(T) <= sizeof(U)); | |
return spirv::bitcast<T, U>(val); | |
} | |
template<typename T, typename S> | |
T rotl(T x, S s); | |
template<typename T, typename S> | |
T rotr(T x, S s); | |
template<typename T, typename S> | |
T rotl(T x, S s) | |
{ | |
const T N = 32u; | |
const S r = s % N; | |
if(r >= 0) | |
{ | |
return (x << r) | (x >> (N - r)); | |
} | |
else | |
{ | |
return (x >> (-r)) | (x << (N - (-r))); | |
} | |
} | |
template<typename T, typename S> | |
T rotr(T x, S s) | |
{ | |
const T N = 32u; | |
const S r = s % N; | |
if(r >= 0) | |
{ | |
return (x >> r) | (x << (N - r)); | |
} | |
else | |
{ | |
return (x << (-r)) | (x >> (N - (-r))); | |
} | |
} | |
namespace impl | |
{ | |
template<uint16_t bits> | |
uint16_t clz(uint64_t N) | |
{ | |
static const uint64_t SHIFT = bits>>1; | |
static const uint64_t LO_MASK = (1ull<<SHIFT)-1; | |
const bool CHOOSE_HIGH = N & (LO_MASK<<SHIFT); | |
const uint64_t NEXT = (CHOOSE_HIGH ? (N>>SHIFT):N)&LO_MASK; | |
const uint16_t value = uint16_t(clz<SHIFT>(NEXT) + (CHOOSE_HIGH ? 0:SHIFT)); | |
return value; | |
} | |
template<> | |
uint16_t clz<1>(uint64_t N) { return uint16_t(1u-N&1); } | |
} | |
template<typename T> | |
uint16_t countl_zero(T n) | |
{ | |
return impl::clz<sizeof(T)*8>(n); | |
} | |
} | |
} | |
# 23 "nbl/builtin/hlsl/functional.hlsl" | |
# 1 "nbl/builtin/hlsl/limits.hlsl" | |
# 1 "nbl/builtin/hlsl/type_traits.hlsl" | |
# 1 "nbl/builtin/hlsl/cpp_compat.hlsl" | |
# 29 "nbl/builtin/hlsl/type_traits.hlsl" | |
# 167 "nbl/builtin/hlsl/type_traits.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace impl | |
{ | |
template<template<class> class Trait, class T> | |
struct base_type_forwarder : Trait<T> {}; | |
template<template<class> class Trait, class T, uint16_t N> | |
struct base_type_forwarder<Trait,vector<T,N> > : Trait<T> {}; | |
template<template<class> class Trait, class T, uint16_t N, uint16_t M> | |
struct base_type_forwarder<Trait,matrix<T,N,M> > : Trait<T> {}; | |
} | |
template<class T> | |
struct type_identity | |
{ | |
using type = T; | |
}; | |
namespace impl | |
{ | |
template<class> struct remove_reference; | |
} | |
template<class T> struct remove_const : type_identity<T> {}; | |
template<class T> struct remove_const<const T> : type_identity<T> {}; | |
template<class T> struct remove_volatile : type_identity<T> {}; | |
template<class T> struct remove_volatile<volatile T> : type_identity<T> {}; | |
template<class T> struct remove_cv : type_identity<T> {}; | |
template<class T> struct remove_cv<const T> : type_identity<T> {}; | |
template<class T> struct remove_cv<volatile T> : type_identity<T> {}; | |
template<class T> struct remove_cv<const volatile T> : type_identity<T> {}; | |
template<class T> struct remove_cvref : remove_cv<typename impl::remove_reference<T>::type> {}; | |
template<class T> struct add_const : type_identity<const T> {}; | |
template<class T> struct add_volatile : type_identity<volatile T> {}; | |
template<class T> struct add_cv : type_identity<const volatile T> {}; | |
template<class T, T val> | |
struct integral_constant { | |
const static T value = val; | |
using value_type = T; | |
}; | |
template<bool val> | |
struct bool_constant : integral_constant<bool, val> {}; | |
struct true_type : bool_constant<true> {}; | |
struct false_type : bool_constant<true> {}; | |
template<bool C, class T, class F> | |
struct conditional : type_identity<T> {}; | |
template<class T, class F> | |
struct conditional<false, T, F> : type_identity<F> {}; | |
template<class A, class B> | |
struct is_same : bool_constant<false> {}; | |
template<class A> | |
struct is_same<A,A> : bool_constant<true> {}; | |
template<class T> | |
struct is_void : bool_constant<is_same<typename remove_cv<T>::type, void>::value> {}; | |
template<class T> | |
struct is_bounded_array : bool_constant<false> {}; | |
template<class T, uint32_t count> | |
struct is_bounded_array<T[count]> : bool_constant<true>{}; | |
template<class T> | |
struct is_unbounded_array : bool_constant<false>{}; | |
template<class T> | |
struct is_unbounded_array<T[]> : bool_constant<true>{}; | |
template<class T> | |
struct is_array : bool_constant<is_bounded_array<T>::value || is_unbounded_array<T>::value> {}; | |
namespace impl | |
{ | |
template<typename T> | |
struct typeid_t; | |
template<typename T, T v> | |
struct function_info : type_identity<void> {}; | |
template<class T> | |
struct is_unsigned : bool_constant< | |
is_same<T, bool>::value || | |
is_same<T, uint16_t>::value || | |
is_same<T, uint32_t>::value || | |
is_same<T, uint64_t>::value | |
> {}; | |
template<class T> | |
struct is_integral : bool_constant< | |
is_same<T, bool>::value || | |
is_same<T, uint16_t>::value || | |
is_same<T, uint32_t>::value || | |
is_same<T, uint64_t>::value || | |
is_same<T, int16_t>::value || | |
is_same<T, int32_t>::value || | |
is_same<T, int64_t>::value | |
> {}; | |
template<class T> | |
struct is_floating_point : bool_constant< | |
is_same<T, half>::value || | |
is_same<T, float>::value || | |
is_same<T, double>::value | |
> {}; | |
template<class T> | |
struct is_signed : bool_constant< | |
is_same<T, int16_t>::value || | |
is_same<T, int32_t>::value || | |
is_same<T, int64_t>::value || | |
is_floating_point<T>::value | |
> {}; | |
} | |
template<class T> | |
struct is_unsigned : impl::base_type_forwarder<impl::is_unsigned, typename remove_cv<T>::type> {}; | |
template<class T> | |
struct is_integral : impl::base_type_forwarder<impl::is_integral, T> {}; | |
template<class T> | |
struct is_floating_point : impl::base_type_forwarder<impl::is_floating_point, typename remove_cv<T>::type> {}; | |
template<class T> | |
struct is_signed : impl::base_type_forwarder<impl::is_signed, typename remove_cv<T>::type> {}; | |
template<class T> | |
struct is_scalar : bool_constant< | |
impl::is_integral<typename remove_cv<T>::type>::value || | |
impl::is_floating_point<typename remove_cv<T>::type>::value | |
> {}; | |
template<class T> | |
struct is_const : bool_constant<false> {}; | |
template<class T> | |
struct is_const<const T> : bool_constant<true> {}; | |
template<class T> | |
struct is_volatile : bool_constant<false> {}; | |
template<class T> | |
struct is_volatile<volatile T> : bool_constant<true> {}; | |
template<class> | |
struct is_trivial : bool_constant<true> {}; | |
template<class> | |
struct is_trivially_copyable : bool_constant<true> {}; | |
template<class T> | |
struct is_empty : bool_constant<0==sizeof(T)> {}; | |
template<class> | |
struct is_polymorphic : bool_constant<false> {}; | |
template<class> | |
struct is_abstract : bool_constant<false> {}; | |
template<class> | |
struct is_final : bool_constant<false> {}; | |
template <class T> | |
struct is_fundamental : bool_constant< | |
is_scalar<T>::value || | |
is_void<T>::value | |
> {}; | |
template <class T> | |
struct is_compound : bool_constant<!is_fundamental<T>::value> {}; | |
template <class T> | |
struct is_aggregate : is_compound<T> {}; | |
template<class T> | |
struct rank : integral_constant<uint64_t, 0> { }; | |
template<class T, uint64_t N> | |
struct rank<T[N]> : integral_constant<uint64_t, 1 + rank<T>::value> { }; | |
template<class T> | |
struct rank<T[]> : integral_constant<uint64_t, 1 + rank<T>::value> { }; | |
template<class T, uint32_t I = 0> | |
struct extent : integral_constant<uint64_t, 0> {}; | |
template<class T, uint64_t N> | |
struct extent<T[N], 0> : integral_constant<uint64_t, N> {}; | |
template<class T, uint64_t N, uint32_t I> | |
struct extent<T[N], I> : integral_constant<uint64_t,extent<T, I - 1>::value> {}; | |
template<class T, uint32_t I> | |
struct extent<T[], I> : integral_constant<uint64_t,extent<T, I - 1>::value> {}; | |
template<bool B, class T = void> | |
struct enable_if {}; | |
template<class T> | |
struct enable_if<true, T> : type_identity<T> {}; | |
template<class T> | |
struct alignment_of; | |
template<class> | |
struct make_void { using type = void; }; | |
namespace impl | |
{ | |
template<typename,class=void> | |
struct is_reference : bool_constant<true> { }; | |
template<typename T> | |
struct is_reference<T,typename make_void<T[1]>::type> : bool_constant<false> { }; | |
template<class T, bool = is_reference<T>::value> | |
struct add_reference_helper : type_identity<T> {}; | |
template<class T> | |
struct add_reference_helper<T, false> | |
{ | |
static T member[1]; | |
using type = __decltype(member[0]); | |
}; | |
template<class T> | |
struct add_lvalue_reference : add_reference_helper<T> {}; | |
template<typename T> | |
T remove_reference_impl(T v) | |
{ | |
return v; | |
} | |
template<typename T, bool = is_reference<T>::value> | |
struct remove_reference_helper : type_identity<T> {}; | |
template<typename T> | |
struct remove_reference_helper<T, true> | |
{ | |
static T member; | |
using type = __decltype(remove_reference_impl(member)); | |
}; | |
template<typename T> | |
struct remove_reference : remove_reference_helper<T> {}; | |
} | |
template<class T> struct remove_extent : type_identity<T> {}; | |
template<class T, uint32_t I> struct remove_extent<T[I]> : type_identity<T> {}; | |
template<class T> struct remove_extent<T[]> : type_identity<T> {}; | |
template <class T> | |
struct remove_all_extents : type_identity<T> {}; | |
template <class T, uint32_t I> | |
struct remove_all_extents<T[I]> : type_identity<typename remove_all_extents<T>::type> {}; | |
template <class T> | |
struct remove_all_extents<T[]> : type_identity<typename remove_all_extents<T>::type> {}; | |
namespace impl | |
{ | |
template<uint32_t sz> struct int_type : | |
conditional<8==sz, int64_t, typename conditional<4==sz, int32_t, int16_t>::type>{}; | |
template<uint32_t sz> struct uint_type : | |
type_identity<unsigned typename int_type<sz>::type> {}; | |
} | |
template<class T> | |
struct make_signed : impl::int_type<sizeof(T)> | |
{ | |
_Static_assert(is_integral<T>::value && !is_same<typename remove_cv<T>::type, bool>::value, | |
"make_signed<T> requires that T shall be a (possibly cv-qualified) " | |
"integral type or enumeration but not a bool type."); | |
}; | |
template<class T> | |
struct make_unsigned : impl::uint_type<sizeof(T)> | |
{ | |
_Static_assert(is_integral<T>::value && !is_same<typename remove_cv<T>::type, bool>::value, | |
"make_unsigned<T> requires that T shall be a (possibly cv-qualified) " | |
"integral type or enumeration but not a bool type."); | |
}; | |
# 598 "nbl/builtin/hlsl/type_traits.hlsl" | |
template<bool C, typename T, T A, T B> | |
struct conditional_value | |
{ | |
const static T value = C ? A : B; | |
}; | |
template<class T> | |
struct is_vector : bool_constant<false> {}; | |
template<class T> | |
struct is_matrix : bool_constant<false> {}; | |
template<class T, uint32_t N> | |
struct is_vector<vector<T, N> > : bool_constant<true> {}; | |
template<class T, uint32_t N, uint32_t M> | |
struct is_matrix<matrix<T, N, M> > : bool_constant<true> {}; | |
template<typename T,bool=is_scalar<T>::value> | |
struct scalar_type | |
{ | |
using type = void; | |
}; | |
template<typename T> | |
struct scalar_type<T,true> | |
{ | |
using type = T; | |
}; | |
template<typename T, uint16_t N> | |
struct scalar_type<vector<T,N>,false> | |
{ | |
using type = T; | |
}; | |
template<typename T, uint16_t N, uint16_t M> | |
struct scalar_type<matrix<T,N,M>,false> | |
{ | |
using type = T; | |
}; | |
template<uint16_t bytesize> | |
struct unsigned_integer_of_size | |
{ | |
using type = void; | |
}; | |
template<> | |
struct unsigned_integer_of_size<2> | |
{ | |
using type = uint16_t; | |
}; | |
template<> | |
struct unsigned_integer_of_size<4> | |
{ | |
using type = uint32_t; | |
}; | |
template<> | |
struct unsigned_integer_of_size<8> | |
{ | |
using type = uint64_t; | |
}; | |
} | |
} | |
# 691 "nbl/builtin/hlsl/type_traits.hlsl" | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t> : integral_constant<uint32_t,0> {}; } template<> struct alignment_of<int16_t> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t1> : integral_constant<uint32_t,1> {}; } template<> struct alignment_of<int16_t1> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t1> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t1>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t1>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t2> : integral_constant<uint32_t,2> {}; } template<> struct alignment_of<int16_t2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t2x4> : integral_constant<uint32_t,3> {}; } template<> struct alignment_of<int16_t2x4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t2x4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t2x4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t2x4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t2x3> : integral_constant<uint32_t,4> {}; } template<> struct alignment_of<int16_t2x3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t2x3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t2x3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t2x3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t2x2> : integral_constant<uint32_t,5> {}; } template<> struct alignment_of<int16_t2x2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t2x2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t2x2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t2x2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t3> : integral_constant<uint32_t,6> {}; } template<> struct alignment_of<int16_t3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t3x4> : integral_constant<uint32_t,7> {}; } template<> struct alignment_of<int16_t3x4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t3x4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t3x4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t3x4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t3x3> : integral_constant<uint32_t,8> {}; } template<> struct alignment_of<int16_t3x3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t3x3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t3x3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t3x3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t3x2> : integral_constant<uint32_t,9> {}; } template<> struct alignment_of<int16_t3x2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t3x2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t3x2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t3x2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t4> : integral_constant<uint32_t,10> {}; } template<> struct alignment_of<int16_t4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t4x4> : integral_constant<uint32_t,11> {}; } template<> struct alignment_of<int16_t4x4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t4x4> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t4x4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t4x4>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t4x3> : integral_constant<uint32_t,12> {}; } template<> struct alignment_of<int16_t4x3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t4x3> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t4x3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t4x3>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int16_t4x2> : integral_constant<uint32_t,13> {}; } template<> struct alignment_of<int16_t4x2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<const int16_t4x2> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int16_t4x2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int16_t4x2>::type> : integral_constant<uint32_t,sizeof(int16_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t> : integral_constant<uint32_t,14> {}; } template<> struct alignment_of<int32_t> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t1> : integral_constant<uint32_t,15> {}; } template<> struct alignment_of<int32_t1> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t1> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t1>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t1>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t2> : integral_constant<uint32_t,16> {}; } template<> struct alignment_of<int32_t2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t2x4> : integral_constant<uint32_t,17> {}; } template<> struct alignment_of<int32_t2x4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t2x4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t2x4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t2x4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t2x3> : integral_constant<uint32_t,18> {}; } template<> struct alignment_of<int32_t2x3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t2x3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t2x3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t2x3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t2x2> : integral_constant<uint32_t,19> {}; } template<> struct alignment_of<int32_t2x2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t2x2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t2x2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t2x2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t3> : integral_constant<uint32_t,20> {}; } template<> struct alignment_of<int32_t3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t3x4> : integral_constant<uint32_t,21> {}; } template<> struct alignment_of<int32_t3x4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t3x4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t3x4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t3x4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t3x3> : integral_constant<uint32_t,22> {}; } template<> struct alignment_of<int32_t3x3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t3x3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t3x3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t3x3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t3x2> : integral_constant<uint32_t,23> {}; } template<> struct alignment_of<int32_t3x2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t3x2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t3x2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t3x2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t4> : integral_constant<uint32_t,24> {}; } template<> struct alignment_of<int32_t4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t4x4> : integral_constant<uint32_t,25> {}; } template<> struct alignment_of<int32_t4x4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t4x4> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t4x4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t4x4>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t4x3> : integral_constant<uint32_t,26> {}; } template<> struct alignment_of<int32_t4x3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t4x3> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t4x3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t4x3>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int32_t4x2> : integral_constant<uint32_t,27> {}; } template<> struct alignment_of<int32_t4x2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<const int32_t4x2> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int32_t4x2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int32_t4x2>::type> : integral_constant<uint32_t,sizeof(int32_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t> : integral_constant<uint32_t,28> {}; } template<> struct alignment_of<int64_t> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t1> : integral_constant<uint32_t,29> {}; } template<> struct alignment_of<int64_t1> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t1> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t1>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t1>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t2> : integral_constant<uint32_t,30> {}; } template<> struct alignment_of<int64_t2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t2x4> : integral_constant<uint32_t,31> {}; } template<> struct alignment_of<int64_t2x4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t2x4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t2x4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t2x4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t2x3> : integral_constant<uint32_t,32> {}; } template<> struct alignment_of<int64_t2x3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t2x3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t2x3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t2x3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t2x2> : integral_constant<uint32_t,33> {}; } template<> struct alignment_of<int64_t2x2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t2x2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t2x2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t2x2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t3> : integral_constant<uint32_t,34> {}; } template<> struct alignment_of<int64_t3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t3x4> : integral_constant<uint32_t,35> {}; } template<> struct alignment_of<int64_t3x4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t3x4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t3x4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t3x4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t3x3> : integral_constant<uint32_t,36> {}; } template<> struct alignment_of<int64_t3x3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t3x3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t3x3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t3x3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t3x2> : integral_constant<uint32_t,37> {}; } template<> struct alignment_of<int64_t3x2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t3x2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t3x2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t3x2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t4> : integral_constant<uint32_t,38> {}; } template<> struct alignment_of<int64_t4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t4x4> : integral_constant<uint32_t,39> {}; } template<> struct alignment_of<int64_t4x4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t4x4> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t4x4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t4x4>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t4x3> : integral_constant<uint32_t,40> {}; } template<> struct alignment_of<int64_t4x3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t4x3> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t4x3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t4x3>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<int64_t4x2> : integral_constant<uint32_t,41> {}; } template<> struct alignment_of<int64_t4x2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<const int64_t4x2> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<int64_t4x2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const int64_t4x2>::type> : integral_constant<uint32_t,sizeof(int64_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t> : integral_constant<uint32_t,42> {}; } template<> struct alignment_of<uint16_t> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t1> : integral_constant<uint32_t,43> {}; } template<> struct alignment_of<uint16_t1> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t1> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t1>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t1>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t2> : integral_constant<uint32_t,44> {}; } template<> struct alignment_of<uint16_t2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t2x4> : integral_constant<uint32_t,45> {}; } template<> struct alignment_of<uint16_t2x4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t2x4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t2x4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t2x4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t2x3> : integral_constant<uint32_t,46> {}; } template<> struct alignment_of<uint16_t2x3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t2x3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t2x3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t2x3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t2x2> : integral_constant<uint32_t,47> {}; } template<> struct alignment_of<uint16_t2x2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t2x2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t2x2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t2x2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t3> : integral_constant<uint32_t,48> {}; } template<> struct alignment_of<uint16_t3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t3x4> : integral_constant<uint32_t,49> {}; } template<> struct alignment_of<uint16_t3x4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t3x4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t3x4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t3x4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t3x3> : integral_constant<uint32_t,50> {}; } template<> struct alignment_of<uint16_t3x3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t3x3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t3x3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t3x3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t3x2> : integral_constant<uint32_t,51> {}; } template<> struct alignment_of<uint16_t3x2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t3x2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t3x2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t3x2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t4> : integral_constant<uint32_t,52> {}; } template<> struct alignment_of<uint16_t4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t4x4> : integral_constant<uint32_t,53> {}; } template<> struct alignment_of<uint16_t4x4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t4x4> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t4x4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t4x4>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t4x3> : integral_constant<uint32_t,54> {}; } template<> struct alignment_of<uint16_t4x3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t4x3> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t4x3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t4x3>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint16_t4x2> : integral_constant<uint32_t,55> {}; } template<> struct alignment_of<uint16_t4x2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<const uint16_t4x2> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint16_t4x2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint16_t4x2>::type> : integral_constant<uint32_t,sizeof(uint16_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t> : integral_constant<uint32_t,56> {}; } template<> struct alignment_of<uint32_t> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t1> : integral_constant<uint32_t,57> {}; } template<> struct alignment_of<uint32_t1> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t1> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t1>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t1>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t2> : integral_constant<uint32_t,58> {}; } template<> struct alignment_of<uint32_t2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t2x4> : integral_constant<uint32_t,59> {}; } template<> struct alignment_of<uint32_t2x4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t2x4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t2x4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t2x4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t2x3> : integral_constant<uint32_t,60> {}; } template<> struct alignment_of<uint32_t2x3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t2x3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t2x3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t2x3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t2x2> : integral_constant<uint32_t,61> {}; } template<> struct alignment_of<uint32_t2x2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t2x2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t2x2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t2x2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t3> : integral_constant<uint32_t,62> {}; } template<> struct alignment_of<uint32_t3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t3x4> : integral_constant<uint32_t,63> {}; } template<> struct alignment_of<uint32_t3x4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t3x4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t3x4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t3x4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t3x3> : integral_constant<uint32_t,64> {}; } template<> struct alignment_of<uint32_t3x3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t3x3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t3x3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t3x3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t3x2> : integral_constant<uint32_t,65> {}; } template<> struct alignment_of<uint32_t3x2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t3x2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t3x2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t3x2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t4> : integral_constant<uint32_t,66> {}; } template<> struct alignment_of<uint32_t4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t4x4> : integral_constant<uint32_t,67> {}; } template<> struct alignment_of<uint32_t4x4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t4x4> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t4x4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t4x4>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t4x3> : integral_constant<uint32_t,68> {}; } template<> struct alignment_of<uint32_t4x3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t4x3> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t4x3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t4x3>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint32_t4x2> : integral_constant<uint32_t,69> {}; } template<> struct alignment_of<uint32_t4x2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<const uint32_t4x2> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint32_t4x2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint32_t4x2>::type> : integral_constant<uint32_t,sizeof(uint32_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t> : integral_constant<uint32_t,70> {}; } template<> struct alignment_of<uint64_t> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t1> : integral_constant<uint32_t,71> {}; } template<> struct alignment_of<uint64_t1> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t1> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t1>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t1>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t2> : integral_constant<uint32_t,72> {}; } template<> struct alignment_of<uint64_t2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t2x4> : integral_constant<uint32_t,73> {}; } template<> struct alignment_of<uint64_t2x4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t2x4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t2x4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t2x4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t2x3> : integral_constant<uint32_t,74> {}; } template<> struct alignment_of<uint64_t2x3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t2x3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t2x3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t2x3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t2x2> : integral_constant<uint32_t,75> {}; } template<> struct alignment_of<uint64_t2x2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t2x2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t2x2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t2x2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t3> : integral_constant<uint32_t,76> {}; } template<> struct alignment_of<uint64_t3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t3x4> : integral_constant<uint32_t,77> {}; } template<> struct alignment_of<uint64_t3x4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t3x4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t3x4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t3x4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t3x3> : integral_constant<uint32_t,78> {}; } template<> struct alignment_of<uint64_t3x3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t3x3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t3x3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t3x3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t3x2> : integral_constant<uint32_t,79> {}; } template<> struct alignment_of<uint64_t3x2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t3x2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t3x2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t3x2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t4> : integral_constant<uint32_t,80> {}; } template<> struct alignment_of<uint64_t4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t4x4> : integral_constant<uint32_t,81> {}; } template<> struct alignment_of<uint64_t4x4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t4x4> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t4x4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t4x4>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t4x3> : integral_constant<uint32_t,82> {}; } template<> struct alignment_of<uint64_t4x3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t4x3> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t4x3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t4x3>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<uint64_t4x2> : integral_constant<uint32_t,83> {}; } template<> struct alignment_of<uint64_t4x2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<const uint64_t4x2> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<uint64_t4x2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const uint64_t4x2>::type> : integral_constant<uint32_t,sizeof(uint64_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool> : integral_constant<uint32_t,84> {}; } template<> struct alignment_of<bool> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool1> : integral_constant<uint32_t,85> {}; } template<> struct alignment_of<bool1> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool1> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool1>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool1>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool2> : integral_constant<uint32_t,86> {}; } template<> struct alignment_of<bool2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool2>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool2>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool2x4> : integral_constant<uint32_t,87> {}; } template<> struct alignment_of<bool2x4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool2x4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool2x4>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool2x4>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool2x3> : integral_constant<uint32_t,88> {}; } template<> struct alignment_of<bool2x3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool2x3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool2x3>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool2x3>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool2x2> : integral_constant<uint32_t,89> {}; } template<> struct alignment_of<bool2x2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool2x2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool2x2>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool2x2>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool3> : integral_constant<uint32_t,90> {}; } template<> struct alignment_of<bool3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool3>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool3>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool3x4> : integral_constant<uint32_t,91> {}; } template<> struct alignment_of<bool3x4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool3x4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool3x4>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool3x4>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool3x3> : integral_constant<uint32_t,92> {}; } template<> struct alignment_of<bool3x3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool3x3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool3x3>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool3x3>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool3x2> : integral_constant<uint32_t,93> {}; } template<> struct alignment_of<bool3x2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool3x2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool3x2>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool3x2>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool4> : integral_constant<uint32_t,94> {}; } template<> struct alignment_of<bool4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool4>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool4>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool4x4> : integral_constant<uint32_t,95> {}; } template<> struct alignment_of<bool4x4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool4x4> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool4x4>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool4x4>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool4x3> : integral_constant<uint32_t,96> {}; } template<> struct alignment_of<bool4x3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool4x3> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool4x3>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool4x3>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<bool4x2> : integral_constant<uint32_t,97> {}; } template<> struct alignment_of<bool4x2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<const bool4x2> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<bool4x2>::type> : integral_constant<uint32_t,sizeof(bool)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const bool4x2>::type> : integral_constant<uint32_t,sizeof(bool)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t> : integral_constant<uint32_t,98> {}; } template<> struct alignment_of<float16_t> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t1> : integral_constant<uint32_t,99> {}; } template<> struct alignment_of<float16_t1> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t1> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t1>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t1>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t2> : integral_constant<uint32_t,100> {}; } template<> struct alignment_of<float16_t2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t2x4> : integral_constant<uint32_t,101> {}; } template<> struct alignment_of<float16_t2x4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t2x4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t2x4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t2x4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t2x3> : integral_constant<uint32_t,102> {}; } template<> struct alignment_of<float16_t2x3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t2x3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t2x3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t2x3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t2x2> : integral_constant<uint32_t,103> {}; } template<> struct alignment_of<float16_t2x2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t2x2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t2x2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t2x2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t3> : integral_constant<uint32_t,104> {}; } template<> struct alignment_of<float16_t3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t3x4> : integral_constant<uint32_t,105> {}; } template<> struct alignment_of<float16_t3x4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t3x4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t3x4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t3x4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t3x3> : integral_constant<uint32_t,106> {}; } template<> struct alignment_of<float16_t3x3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t3x3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t3x3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t3x3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t3x2> : integral_constant<uint32_t,107> {}; } template<> struct alignment_of<float16_t3x2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t3x2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t3x2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t3x2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t4> : integral_constant<uint32_t,108> {}; } template<> struct alignment_of<float16_t4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t4x4> : integral_constant<uint32_t,109> {}; } template<> struct alignment_of<float16_t4x4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t4x4> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t4x4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t4x4>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t4x3> : integral_constant<uint32_t,110> {}; } template<> struct alignment_of<float16_t4x3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t4x3> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t4x3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t4x3>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float16_t4x2> : integral_constant<uint32_t,111> {}; } template<> struct alignment_of<float16_t4x2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<const float16_t4x2> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float16_t4x2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float16_t4x2>::type> : integral_constant<uint32_t,sizeof(float16_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t> : integral_constant<uint32_t,112> {}; } template<> struct alignment_of<float32_t> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t1> : integral_constant<uint32_t,113> {}; } template<> struct alignment_of<float32_t1> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t1> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t1>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t1>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t2> : integral_constant<uint32_t,114> {}; } template<> struct alignment_of<float32_t2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t2x4> : integral_constant<uint32_t,115> {}; } template<> struct alignment_of<float32_t2x4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t2x4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t2x4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t2x4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t2x3> : integral_constant<uint32_t,116> {}; } template<> struct alignment_of<float32_t2x3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t2x3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t2x3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t2x3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t2x2> : integral_constant<uint32_t,117> {}; } template<> struct alignment_of<float32_t2x2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t2x2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t2x2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t2x2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t3> : integral_constant<uint32_t,118> {}; } template<> struct alignment_of<float32_t3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t3x4> : integral_constant<uint32_t,119> {}; } template<> struct alignment_of<float32_t3x4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t3x4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t3x4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t3x4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t3x3> : integral_constant<uint32_t,120> {}; } template<> struct alignment_of<float32_t3x3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t3x3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t3x3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t3x3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t3x2> : integral_constant<uint32_t,121> {}; } template<> struct alignment_of<float32_t3x2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t3x2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t3x2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t3x2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t4> : integral_constant<uint32_t,122> {}; } template<> struct alignment_of<float32_t4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t4x4> : integral_constant<uint32_t,123> {}; } template<> struct alignment_of<float32_t4x4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t4x4> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t4x4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t4x4>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t4x3> : integral_constant<uint32_t,124> {}; } template<> struct alignment_of<float32_t4x3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t4x3> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t4x3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t4x3>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float32_t4x2> : integral_constant<uint32_t,125> {}; } template<> struct alignment_of<float32_t4x2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<const float32_t4x2> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float32_t4x2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float32_t4x2>::type> : integral_constant<uint32_t,sizeof(float32_t)> {};}} | |
namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t> : integral_constant<uint32_t,126> {}; } template<> struct alignment_of<float64_t> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t1> : integral_constant<uint32_t,127> {}; } template<> struct alignment_of<float64_t1> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t1> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t1>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t1>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t2> : integral_constant<uint32_t,128> {}; } template<> struct alignment_of<float64_t2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t2x4> : integral_constant<uint32_t,129> {}; } template<> struct alignment_of<float64_t2x4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t2x4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t2x4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t2x4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t2x3> : integral_constant<uint32_t,130> {}; } template<> struct alignment_of<float64_t2x3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t2x3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t2x3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t2x3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t2x2> : integral_constant<uint32_t,131> {}; } template<> struct alignment_of<float64_t2x2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t2x2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t2x2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t2x2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t3> : integral_constant<uint32_t,132> {}; } template<> struct alignment_of<float64_t3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t3x4> : integral_constant<uint32_t,133> {}; } template<> struct alignment_of<float64_t3x4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t3x4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t3x4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t3x4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t3x3> : integral_constant<uint32_t,134> {}; } template<> struct alignment_of<float64_t3x3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t3x3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t3x3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t3x3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t3x2> : integral_constant<uint32_t,135> {}; } template<> struct alignment_of<float64_t3x2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t3x2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t3x2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t3x2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t4> : integral_constant<uint32_t,136> {}; } template<> struct alignment_of<float64_t4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t4x4> : integral_constant<uint32_t,137> {}; } template<> struct alignment_of<float64_t4x4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t4x4> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t4x4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t4x4>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t4x3> : integral_constant<uint32_t,138> {}; } template<> struct alignment_of<float64_t4x3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t4x3> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t4x3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t4x3>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} namespace nbl { namespace hlsl { namespace impl { template<> struct typeid_t<float64_t4x2> : integral_constant<uint32_t,139> {}; } template<> struct alignment_of<float64_t4x2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<const float64_t4x2> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<float64_t4x2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {}; template<> struct alignment_of<typename impl::add_lvalue_reference<const float64_t4x2>::type> : integral_constant<uint32_t,sizeof(float64_t)> {};}} | |
# 22 "nbl/builtin/hlsl/limits.hlsl" | |
# 1 "nbl/builtin/hlsl/bit.hlsl" | |
# 623 "nbl/builtin/hlsl/limits.hlsl" | |
# 666 "nbl/builtin/hlsl/limits.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
enum float_denorm_style { | |
denorm_indeterminate = -1, | |
denorm_absent = 0, | |
denorm_present = 1 | |
}; | |
enum float_round_style { | |
round_indeterminate = -1, | |
round_toward_zero = 0, | |
round_to_nearest = 1, | |
round_toward_infinity = 2, | |
round_toward_neg_infinity = 3 | |
}; | |
# 697 "nbl/builtin/hlsl/limits.hlsl" | |
namespace impl | |
{ | |
template<class T> | |
struct num_base : type_identity<T> | |
{ | |
const static int32_t size = sizeof(T); | |
const static int32_t S8 = size; | |
const static int32_t S16 = size / 2; | |
const static int32_t S32 = size / 4; | |
const static int32_t S64 = size / 8; | |
const static int32_t float_digits = 11*S16 + 2*S32 + 5*S64; | |
const static int32_t float_decimal_digits = 3*(S16 + S64); | |
const static int32_t float_decimal_max_digits = 5*S16 - S32 - S64; | |
const static int32_t float_min_decimal_exponent = -4*S16 - 29*S32 - 233*S64; | |
const static int32_t float_max_decimal_exponent = 4*S16 + 30*S32 + 232*S64; | |
const static int32_t float_exponent_bits = 8 * size - float_digits - 1; | |
const static int32_t float_max_exponent = 1l << float_exponent_bits; | |
const static int32_t float_min_exponent = 3 - float_max_exponent; | |
const static bool is_bool = is_same<T, bool>::value; | |
const static bool is_specialized = true; | |
const static bool is_signed = nbl::hlsl::is_signed<T>::value; | |
const static bool is_integer = is_integral<T>::value; | |
const static bool is_exact = is_integer; | |
const static bool has_infinity = !is_integer; | |
const static bool has_quiet_NaN = !is_integer; | |
const static bool has_signaling_NaN = !is_integer; | |
const static float_denorm_style has_denorm = is_integer ? float_denorm_style::denorm_absent : float_denorm_style::denorm_present; | |
const static bool has_denorm_loss = false; | |
const static float_round_style round_style = is_integer ? float_round_style::round_toward_zero : float_round_style::round_to_nearest; | |
const static bool is_iec559 = !is_integer; | |
const static bool is_bounded = true; | |
const static bool is_modulo = is_integer && !is_signed && !is_bool; | |
const static int32_t digits = is_integer ? (is_bool? 1 : 8*size - is_signed) : float_digits; | |
const static int32_t digits10 = is_integer ? (is_bool ? 0 : S8 * 2 + S32 + int32_t(!is_signed) * S64) : float_decimal_digits; | |
const static int32_t max_digits10 = !is_integer ? float_decimal_max_digits : 0; | |
const static int32_t radix = 2; | |
const static int32_t min_exponent = !is_integer ? float_min_exponent : 0; | |
const static int32_t min_exponent10 = !is_integer ? float_min_decimal_exponent : 0; | |
const static int32_t max_exponent = !is_integer ? float_max_exponent : 0; | |
const static int32_t max_exponent10 = !is_integer ? float_max_decimal_exponent : 0; | |
const static bool traps = false; | |
const static bool tinyness_before = false; | |
}; | |
template<class T> | |
struct num_traits : num_base<T> | |
{ | |
const static T min = T(num_base<T>::is_signed)<<(num_base<T>::is_signed ? num_base<T>::digits:0); | |
const static T max = ~(T(num_base<T>::is_signed)<<num_base<T>::digits); | |
const static T denorm_min = T(0); | |
const static T quiet_NaN = T(0); | |
const static T signaling_NaN = T(0); | |
const static T infinity = T(0); | |
}; | |
template<> | |
struct num_traits<float16_t> : num_base<float16_t> | |
{ | |
using type = | |
float32_t | |
; | |
const static type min = 6.103515e-05F; | |
const static type max = 65504.0F; | |
const static type denorm_min = 5.96046448e-08F; | |
const static uint16_t quiet_NaN = 0x7FFF; | |
const static uint16_t signaling_NaN = 0x7DFF; | |
const static uint16_t infinity = 0x7C00; | |
}; | |
template<> | |
struct num_traits<float32_t> : num_base<float32_t> | |
{ | |
const static float32_t max = 3.402823466e+38F; | |
const static float32_t min = 1.175494351e-38F; | |
const static float32_t denorm_min = 1.401298464e-45F; | |
const static uint32_t quiet_NaN = 0x7FC00000u; | |
const static uint32_t signaling_NaN = 0x7FC00001u; | |
const static uint32_t infinity = 0x7F800000u; | |
}; | |
template<> | |
struct num_traits<float64_t> : num_base<float64_t> | |
{ | |
const static float64_t max = 1.7976931348623158e+308; | |
const static float64_t min = 2.2250738585072014e-308; | |
const static float64_t denorm_min = 4.9406564584124654e-324; | |
const static uint64_t quiet_NaN = 0x7FF8000000000000ull; | |
const static uint64_t signaling_NaN = 0x7FF0000000000001ull; | |
const static uint64_t infinity = 0x7FF0000000000000ull; | |
}; | |
template<class T> | |
struct numeric_limits : num_traits<T> | |
{ | |
using type = typename num_traits<T>::type; | |
const static type lowest = num_traits<T>::is_integer ? num_traits<T>::min : -num_traits<T>::max; | |
const static type epsilon = num_traits<T>::is_integer ? type(0) : (type(1) / type(1ull<<(num_traits<T>::float_digits-1))); | |
const static type round_error = type(num_traits<T>::is_iec559)/type(2.0); | |
}; | |
} | |
template<class T> | |
struct numeric_limits : impl::numeric_limits<T> {}; | |
# 897 "nbl/builtin/hlsl/limits.hlsl" | |
} | |
} | |
# 3701 "nbl/builtin/hlsl/functional.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
template<typename T> struct bit_and { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs & rhs; } | |
using scalar_t = typename scalar_type<T>::type; | |
using bitfield_t = typename unsigned_integer_of_size<sizeof(scalar_t)>::type; | |
_Static_assert(!is_floating_point<T>::value,"We cannot define the identity element properly, you can thank https//github.com/microsoft/DirectXShaderCompiler/issues/5868 !"); | |
const static T identity = ~bitfield_t(0); | |
}; | |
template<typename T> struct bit_or { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs | rhs; } | |
const static T identity = T(0); | |
}; | |
template<typename T> struct bit_xor { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs ^ rhs; } | |
const static T identity = T(0); | |
}; | |
template<typename T> struct plus { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs + rhs; } | |
const static T identity = T(0); | |
}; | |
template<typename T> struct multiplies { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs * rhs; } | |
const static T identity = T(1); | |
}; | |
template<typename T> struct greater { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs > rhs; } }; | |
template<typename T> struct less { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs < rhs; } }; | |
template<typename T> struct greater_equal { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs >= rhs; } }; | |
template<typename T> struct less_equal { using type_t = T; T operator()(const in T lhs, const in T rhs) { return lhs <= rhs; } }; | |
template<typename T> | |
struct minimum | |
{ | |
using type_t = T; | |
using scalar_t = typename scalar_type<T>::type; | |
T operator()(const in T lhs, const in T rhs) | |
{ | |
return rhs<lhs ? rhs:lhs; | |
} | |
const static T identity = numeric_limits<scalar_t>::max; | |
}; | |
template<typename T> | |
struct maximum | |
{ | |
using type_t = T; | |
using scalar_t = typename scalar_type<T>::type; | |
T operator()(const in T lhs, const in T rhs) | |
{ | |
return lhs<rhs ? rhs:lhs; | |
} | |
const static T identity = numeric_limits<scalar_t>::lowest; | |
}; | |
} | |
} | |
# 512 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\common.hlsl" | |
template<uint32_t kScanDwordCount=256*1024> | |
struct Output | |
{ | |
const static uint32_t ScanDwordCount = kScanDwordCount; | |
uint32_t subgroupSize; | |
uint32_t output[ScanDwordCount]; | |
}; | |
# 4 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\shaderCommon.hlsl" | |
# 1 "nbl/builtin/hlsl/glsl_compat/core.hlsl" | |
# 1 "nbl/builtin/hlsl/cpp_compat.hlsl" | |
# 22 "nbl/builtin/hlsl/glsl_compat/core.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl" | |
# 518 "nbl/builtin/hlsl/glsl_compat/core.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace glsl | |
{ | |
template<typename T> | |
T atomicAdd(inout T ptr, T value) | |
{ | |
return spirv::atomicAdd<T>(ptr, 1, 0, value); | |
} | |
template<typename T> | |
T atomicAnd(inout T ptr, T value) | |
{ | |
return spirv::atomicAnd<T>(ptr, 1, 0, value); | |
} | |
template<typename T> | |
T atomicOr(inout T ptr, T value) | |
{ | |
return spirv::atomicOr<T>(ptr, 1, 0, value); | |
} | |
template<typename T> | |
T atomicXor(inout T ptr, T value) | |
{ | |
return spirv::atomicXor<T>(ptr, 1, 0, value); | |
} | |
template<typename T> | |
T atomicMin(inout T ptr, T value) | |
{ | |
return spirv::atomicMin<T>(ptr, 1, 0, value); | |
} | |
template<typename T> | |
T atomicMax(inout T ptr, T value) | |
{ | |
return spirv::atomicMax<T>(ptr, 1, 0, value); | |
} | |
template<typename T> | |
T atomicExchange(inout T ptr, T value) | |
{ | |
return spirv::atomicExchange<T>(ptr, 1, 0, value); | |
} | |
template<typename T> | |
T atomicCompSwap(inout T ptr, T comparator, T value) | |
{ | |
return spirv::atomicCompSwap<T>(ptr, 1, 0, 0, value, comparator); | |
} | |
uint32_t gl_LocalInvocationIndex(); | |
uint32_t3 gl_GlobalInvocationID(); | |
uint32_t3 gl_WorkGroupID(); | |
void barrier() { | |
spirv::controlBarrier(spv::ScopeWorkgroup, spv::ScopeWorkgroup, spv::MemorySemanticsAcquireReleaseMask | spv::MemorySemanticsWorkgroupMemoryMask); | |
} | |
void tess_ctrl_barrier() { | |
spirv::controlBarrier(spv::ScopeWorkgroup, spv::ScopeInvocation, 0); | |
} | |
void memoryBarrierShared() { | |
spirv::memoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAcquireReleaseMask | spv::MemorySemanticsWorkgroupMemoryMask); | |
} | |
} | |
} | |
} | |
# 10054 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\shaderCommon.hlsl" | |
# 1 "nbl/builtin/hlsl/subgroup/basic.hlsl" | |
# 1 "nbl/builtin/hlsl/glsl_compat/subgroup_basic.hlsl" | |
# 1 "nbl/builtin/hlsl/glsl_compat/core.hlsl" | |
# 22 "nbl/builtin/hlsl/glsl_compat/subgroup_basic.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_basic.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl" | |
# 23 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_basic.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace spirv | |
{ | |
[[vk::ext_instruction( spv::OpGroupNonUniformElect )]] | |
bool subgroupElect(uint32_t executionScope); | |
} | |
} | |
} | |
# 3699 "nbl/builtin/hlsl/glsl_compat/subgroup_basic.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace glsl | |
{ | |
uint32_t gl_SubgroupSize() { | |
return WaveGetLaneCount(); | |
} | |
uint32_t gl_SubgroupSizeLog2() { | |
return firstbithigh(gl_SubgroupSize()); | |
} | |
uint32_t gl_SubgroupInvocationID() { | |
return WaveGetLaneIndex(); | |
} | |
uint32_t gl_SubgroupID() { | |
return gl_LocalInvocationIndex() >> gl_SubgroupSizeLog2(); | |
} | |
bool subgroupElect() { | |
return spirv::subgroupElect(spv::ScopeSubgroup); | |
} | |
void subgroupBarrier() { | |
spirv::controlBarrier(spv::ScopeSubgroup, spv::ScopeSubgroup, spv::MemorySemanticsImageMemoryMask | spv::MemorySemanticsWorkgroupMemoryMask | spv::MemorySemanticsUniformMemoryMask | spv::MemorySemanticsAcquireReleaseMask); | |
} | |
void subgroupMemoryBarrier() { | |
spirv::memoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsImageMemoryMask | spv::MemorySemanticsWorkgroupMemoryMask | spv::MemorySemanticsUniformMemoryMask | spv::MemorySemanticsAcquireReleaseMask); | |
} | |
void subgroupMemoryBarrierBuffer() { | |
spirv::memoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsAcquireReleaseMask | spv::MemorySemanticsUniformMemoryMask); | |
} | |
void subgroupMemoryBarrierShared() { | |
spirv::memoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsAcquireReleaseMask | spv::MemorySemanticsWorkgroupMemoryMask); | |
} | |
void subgroupMemoryBarrierImage() { | |
spirv::memoryBarrier(spv::ScopeSubgroup, spv::MemorySemanticsAcquireReleaseMask | spv::MemorySemanticsImageMemoryMask); | |
} | |
} | |
} | |
} | |
# 22 "nbl/builtin/hlsl/subgroup/basic.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace subgroup | |
{ | |
static const uint32_t MinSubgroupSizeLog2 = 3u; | |
static const uint32_t MinSubgroupSize = 0x1u<<MinSubgroupSizeLog2; | |
static const uint32_t MaxSubgroupSizeLog2 = 6u; | |
static const uint32_t MaxSubgroupSize = 0x1u<<MaxSubgroupSizeLog2; | |
} | |
} | |
} | |
# 13731 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\shaderCommon.hlsl" | |
# 1 "nbl/builtin/hlsl/subgroup/arithmetic_portability.hlsl" | |
# 1 "nbl/builtin/hlsl/subgroup/basic.hlsl" | |
# 23 "nbl/builtin/hlsl/subgroup/arithmetic_portability.hlsl" | |
# 1 "nbl/builtin/hlsl/subgroup/arithmetic_portability_impl.hlsl" | |
# 1 "nbl/builtin/hlsl/glsl_compat/subgroup_shuffle.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_shuffle.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl" | |
# 23 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_shuffle.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace spirv | |
{ | |
template<typename T> | |
[[vk::ext_instruction( spv::OpGroupNonUniformShuffle )]] | |
T groupShuffle(uint32_t executionScope, T value, uint32_t invocationId); | |
# 46 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_shuffle.hlsl" | |
} | |
} | |
} | |
# 22 "nbl/builtin/hlsl/glsl_compat/subgroup_shuffle.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace glsl | |
{ | |
template<typename T> | |
T subgroupShuffle(T value, uint32_t invocationId) | |
{ | |
return spirv::groupShuffle<T>(spv::ScopeSubgroup, value, invocationId); | |
} | |
template<typename T> | |
T subgroupShuffleUp(T value, uint32_t delta) | |
{ | |
return spirv::groupShuffle<T>(spv::ScopeSubgroup, value, gl_SubgroupInvocationID() - delta); | |
} | |
template<typename T> | |
T subgroupShuffleDown(T value, uint32_t delta) | |
{ | |
return spirv::groupShuffle<T>(spv::ScopeSubgroup, value, gl_SubgroupInvocationID() + delta); | |
} | |
} | |
} | |
} | |
# 23 "nbl/builtin/hlsl/subgroup/arithmetic_portability_impl.hlsl" | |
# 1 "nbl/builtin/hlsl/glsl_compat/subgroup_arithmetic.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_arithmetic.hlsl" | |
# 10 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_arithmetic.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace spirv | |
{ | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformIAdd )]] | |
int32_t groupAdd(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, int32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformIAdd )]] | |
uint32_t groupAdd(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, uint32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformFAdd )]] | |
float32_t groupAdd(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, float32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformIMul )]] | |
int32_t groupMul(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, int32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformIMul )]] | |
uint32_t groupMul(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, uint32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformFMul )]] | |
float32_t groupMul(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, float32_t value); | |
template<typename T> | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBitwiseAnd )]] | |
T groupBitwiseAnd(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value); | |
template<typename T> | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBitwiseOr )]] | |
T groupBitwiseOr(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value); | |
template<typename T> | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBitwiseXor )]] | |
T groupBitwiseXor(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, T value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformSMin )]] | |
int32_t groupBitwiseMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, int32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformUMin )]] | |
uint32_t groupBitwiseMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, uint32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformFMin )]] | |
float32_t groupBitwiseMin(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, float32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformSMax )]] | |
int32_t groupBitwiseMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, int32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformUMax )]] | |
uint32_t groupBitwiseMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, uint32_t value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformArithmetic )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformFMax )]] | |
float32_t groupBitwiseMax(uint32_t groupScope, [[vk::ext_literal]] uint32_t operation, float32_t value); | |
} | |
} | |
} | |
# 22 "nbl/builtin/hlsl/glsl_compat/subgroup_arithmetic.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace glsl | |
{ | |
template<typename T> | |
T subgroupAdd(T value) { | |
return spirv::groupAdd(spv::ScopeSubgroup, spv::GroupOperationReduce, value); | |
} | |
template<typename T> | |
T subgroupInclusiveAdd(T value) { | |
return spirv::groupAdd(spv::ScopeSubgroup, spv::GroupOperationInclusiveScan, value); | |
} | |
template<typename T> | |
T subgroupExclusiveAdd(T value) { | |
return spirv::groupAdd(spv::ScopeSubgroup, spv::GroupOperationExclusiveScan, value); | |
} | |
template<typename T> | |
T subgroupMul(T value) { | |
return spirv::groupMul(3, 0, value); | |
} | |
template<typename T> | |
T subgroupInclusiveMul(T value) { | |
return spirv::groupMul(3, 1, value); | |
} | |
template<typename T> | |
T subgroupExclusiveMul(T value) { | |
return spirv::groupMul(3, 2, value); | |
} | |
template<typename T> | |
T subgroupAnd(T value) { | |
return spirv::groupBitwiseAnd(3, 0, value); | |
} | |
template<typename T> | |
T subgroupInclusiveAnd(T value) { | |
return spirv::groupBitwiseAnd(3, 1, value); | |
} | |
template<typename T> | |
T subgroupExclusiveAnd(T value) { | |
return spirv::groupBitwiseAnd(3, 2, value); | |
} | |
template<typename T> | |
T subgroupOr(T value) { | |
return spirv::groupBitwiseOr(3, 0, value); | |
} | |
template<typename T> | |
T subgroupInclusiveOr(T value) { | |
return spirv::groupBitwiseOr(3, 1, value); | |
} | |
template<typename T> | |
T subgroupExclusiveOr(T value) { | |
return spirv::groupBitwiseOr(3, 2, value); | |
} | |
template<typename T> | |
T subgroupXor(T value) { | |
return spirv::groupBitwiseXor(3, 0, value); | |
} | |
template<typename T> | |
T subgroupInclusiveXor(T value) { | |
return spirv::groupBitwiseXor(3, 1, value); | |
} | |
template<typename T> | |
T subgroupExclusiveXor(T value) { | |
return spirv::groupBitwiseXor(3, 2, value); | |
} | |
template<typename T> | |
T subgroupMin(T value) { | |
return spirv::groupBitwiseMin(3, 0, value); | |
} | |
template<typename T> | |
T subgroupInclusiveMin(T value) { | |
return spirv::groupBitwiseMin(3, 1, value); | |
} | |
template<typename T> | |
T subgroupExclusiveMin(T value) { | |
return spirv::groupBitwiseMin(3, 2, value); | |
} | |
template<typename T> | |
T subgroupMax(T value) { | |
return spirv::groupBitwiseMax(3, 0, value); | |
} | |
template<typename T> | |
T subgroupInclusiveMax(T value) { | |
return spirv::groupBitwiseMax(3, 1, value); | |
} | |
template<typename T> | |
T subgroupExclusiveMax(T value) { | |
return spirv::groupBitwiseMax(3, 2, value); | |
} | |
} | |
} | |
} | |
# 3171 "nbl/builtin/hlsl/subgroup/arithmetic_portability_impl.hlsl" | |
# 1 "nbl/builtin/hlsl/subgroup/ballot.hlsl" | |
# 1 "nbl/builtin/hlsl/glsl_compat/subgroup_ballot.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_ballot.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/core.hlsl" | |
# 23 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_ballot.hlsl" | |
# 1 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_basic.hlsl" | |
# 2939 "nbl/builtin/hlsl/spirv_intrinsics/subgroup_ballot.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace spirv | |
{ | |
template<typename T> | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformBallot )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBroadcastFirst )]] | |
T subgroupBroadcastFirst(uint32_t executionScope, T value); | |
template<typename T> | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformBallot )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBroadcast )]] | |
T subgroupBroadcast(uint32_t executionScope, T value, uint32_t invocationId); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformBallot )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBallot )]] | |
uint32_t4 subgroupBallot(uint32_t executionScope, bool value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformBallot )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformInverseBallot )]] | |
bool subgroupInverseBallot(uint32_t executionScope, uint32_t4 value); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformBallot )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBallotBitExtract )]] | |
bool subgroupBallotBitExtract(uint32_t executionScope, uint32_t4 value, uint32_t id); | |
[[vk::ext_capability( spv::CapabilityGroupNonUniformBallot )]] | |
[[vk::ext_instruction( spv::OpGroupNonUniformBallotBitCount )]] | |
uint32_t subgroupBallotBitCount(uint32_t executionScope, [[vk::ext_literal]] uint32_t operation, uint32_t4 value); | |
[[vk::ext_capability(spv::CapabilityGroupNonUniformBallot)]] | |
[[vk::ext_instruction(spv::OpGroupNonUniformBallotFindLSB)]] | |
uint32_t subgroupBallotFindLSB(uint32_t executionScope, uint32_t4 value); | |
[[vk::ext_capability(spv::CapabilityGroupNonUniformBallot)]] | |
[[vk::ext_instruction(spv::OpGroupNonUniformBallotFindMSB)]] | |
uint32_t subgroupBallotFindMSB(uint32_t executionScope, uint32_t4 value); | |
} | |
} | |
} | |
# 22 "nbl/builtin/hlsl/glsl_compat/subgroup_ballot.hlsl" | |
# 1 "nbl/builtin/hlsl/glsl_compat/subgroup_basic.hlsl" | |
# 6236 "nbl/builtin/hlsl/glsl_compat/subgroup_ballot.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace glsl | |
{ | |
uint32_t4 gl_SubgroupEqMask() { | |
return uint32_t4(0, 0, 0, 1) << gl_SubgroupInvocationID(); | |
} | |
uint32_t4 gl_SubgroupGeMask() { | |
return uint32_t4(0xffffffffu, 0xffffffffu, 0xffffffffu, 0xffffffffu) << gl_SubgroupInvocationID(); | |
} | |
uint32_t4 gl_SubgroupGtMask() { | |
return gl_SubgroupGeMask() << 1; | |
} | |
uint32_t4 gl_SubgroupLeMask() { | |
return ~gl_SubgroupGtMask(); | |
} | |
uint32_t4 gl_SubgroupLtMask() { | |
return ~gl_SubgroupGeMask(); | |
} | |
template<typename T> | |
T subgroupBroadcastFirst(T value) | |
{ | |
return spirv::subgroupBroadcastFirst<T>(spv::ScopeSubgroup, value); | |
} | |
template<typename T> | |
T subgroupBroadcast(T value, const uint32_t invocationId) | |
{ | |
return spirv::subgroupBroadcast<T>(spv::ScopeSubgroup, value, invocationId); | |
} | |
uint32_t4 subgroupBallot(bool value) | |
{ | |
return spirv::subgroupBallot(spv::ScopeSubgroup, value); | |
} | |
bool subgroupInverseBallot(uint32_t4 value) | |
{ | |
return spirv::subgroupInverseBallot(spv::ScopeSubgroup, value); | |
} | |
bool subgroupBallotBitExtract(uint32_t4 value, uint32_t index) | |
{ | |
return spirv::subgroupBallotBitExtract(spv::ScopeSubgroup, value, index); | |
} | |
uint32_t subgroupBallotBitCount(uint32_t4 value) | |
{ | |
return spirv::subgroupBallotBitCount(spv::ScopeSubgroup, spv::GroupOperationReduce, value); | |
} | |
uint32_t subgroupBallotInclusiveBitCount(uint32_t4 value) | |
{ | |
return spirv::subgroupBallotBitCount(spv::ScopeSubgroup, spv::GroupOperationInclusiveScan, value); | |
} | |
uint32_t subgroupBallotExclusiveBitCount(uint32_t4 value) | |
{ | |
return spirv::subgroupBallotBitCount(spv::ScopeSubgroup, spv::GroupOperationExclusiveScan, value); | |
} | |
uint32_t subgroupBallotFindLSB(uint32_t4 value) | |
{ | |
return spirv::subgroupBallotFindLSB(spv::ScopeSubgroup, value); | |
} | |
uint32_t subgroupBallotFindMSB(uint32_t4 value) | |
{ | |
return spirv::subgroupBallotFindMSB(spv::ScopeSubgroup, value); | |
} | |
} | |
} | |
} | |
# 22 "nbl/builtin/hlsl/subgroup/ballot.hlsl" | |
# 1 "nbl/builtin/hlsl/subgroup/basic.hlsl" | |
# 13353 "nbl/builtin/hlsl/subgroup/ballot.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace subgroup | |
{ | |
uint32_t LastSubgroupInvocation() | |
{ | |
return glsl::subgroupBallotFindMSB(glsl::subgroupBallot(true)); | |
} | |
bool ElectLast() | |
{ | |
return glsl::gl_SubgroupInvocationID()==LastSubgroupInvocation(); | |
} | |
template<typename T> | |
T BroadcastLast(T value) | |
{ | |
return glsl::subgroupBroadcast<T>(value,LastSubgroupInvocation()); | |
} | |
uint32_t ElectedSubgroupInvocationID() { | |
return glsl::subgroupBroadcastFirst<uint32_t>(glsl::gl_SubgroupInvocationID()); | |
} | |
} | |
} | |
} | |
# 3285 "nbl/builtin/hlsl/subgroup/arithmetic_portability_impl.hlsl" | |
# 1 "nbl/builtin/hlsl/functional.hlsl" | |
# 23827 "nbl/builtin/hlsl/subgroup/arithmetic_portability_impl.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace subgroup | |
{ | |
namespace native | |
{ | |
template<class Binop, typename T=typename Binop::type_t> | |
struct reduction; | |
template<class Binop, typename T=typename Binop::type_t> | |
struct inclusive_scan; | |
template<class Binop, typename T=typename Binop::type_t> | |
struct exclusive_scan; | |
template<typename T> struct reduction<bit_and<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupAnd<type_t>(v);}}; template<typename T> struct inclusive_scan<bit_and<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupInclusiveAnd<type_t>(v);}}; template<typename T> struct exclusive_scan<bit_and<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupExclusiveAnd<type_t>(v);}};; | |
template<typename T> struct reduction<bit_or<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupOr<type_t>(v);}}; template<typename T> struct inclusive_scan<bit_or<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupInclusiveOr<type_t>(v);}}; template<typename T> struct exclusive_scan<bit_or<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupExclusiveOr<type_t>(v);}};; | |
template<typename T> struct reduction<bit_xor<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupXor<type_t>(v);}}; template<typename T> struct inclusive_scan<bit_xor<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupInclusiveXor<type_t>(v);}}; template<typename T> struct exclusive_scan<bit_xor<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupExclusiveXor<type_t>(v);}};; | |
template<typename T> struct reduction<plus<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupAdd<type_t>(v);}}; template<typename T> struct inclusive_scan<plus<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupInclusiveAdd<type_t>(v);}}; template<typename T> struct exclusive_scan<plus<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupExclusiveAdd<type_t>(v);}};; | |
template<typename T> struct reduction<multiplies<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupMul<type_t>(v);}}; template<typename T> struct inclusive_scan<multiplies<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupInclusiveMul<type_t>(v);}}; template<typename T> struct exclusive_scan<multiplies<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupExclusiveMul<type_t>(v);}};; | |
template<typename T> struct reduction<minimum<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupMin<type_t>(v);}}; template<typename T> struct inclusive_scan<minimum<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupInclusiveMin<type_t>(v);}}; template<typename T> struct exclusive_scan<minimum<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupExclusiveMin<type_t>(v);}};; | |
template<typename T> struct reduction<maximum<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupMax<type_t>(v);}}; template<typename T> struct inclusive_scan<maximum<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupInclusiveMax<type_t>(v);}}; template<typename T> struct exclusive_scan<maximum<T>,T>{ using type_t = T; type_t operator()(const in type_t v) {return glsl::subgroupExclusiveMax<type_t>(v);}};; | |
} | |
namespace portability | |
{ | |
template<class Binop> | |
struct inclusive_scan | |
{ | |
using type_t = typename Binop::type_t; | |
type_t operator()(type_t value) | |
{ | |
return __call(value); | |
} | |
static type_t __call(type_t value) | |
{ | |
Binop op; | |
const uint subgroupInvocation = glsl::gl_SubgroupInvocationID(); | |
const uint halfSubgroupSize = glsl::gl_SubgroupSize() >> 1u; | |
uint rhs = glsl::subgroupShuffleUp<type_t>(value, 1u); | |
value = op(value, subgroupInvocation<1u ? Binop::identity:rhs); | |
[[unroll(MinSubgroupSizeLog2-1)]] | |
for (uint step=2u; step<=halfSubgroupSize; step <<= 1u) | |
{ | |
rhs = glsl::subgroupShuffleUp<type_t>(value, step); | |
value = op(value, subgroupInvocation<step ? Binop::identity:rhs); | |
} | |
return value; | |
} | |
}; | |
template<class Binop> | |
struct exclusive_scan | |
{ | |
using type_t = typename Binop::type_t; | |
type_t operator()(type_t value) | |
{ | |
value = inclusive_scan<Binop>::__call(value); | |
type_t left = glsl::subgroupShuffleUp<type_t>(value,1); | |
return bool(glsl::gl_SubgroupInvocationID()) ? left:Binop::identity; | |
} | |
}; | |
template<class Binop> | |
struct reduction | |
{ | |
using type_t = typename Binop::type_t; | |
type_t operator()(const in type_t value) | |
{ | |
return BroadcastLast<type_t>(inclusive_scan<Binop>::__call(value)); | |
} | |
}; | |
} | |
} | |
} | |
} | |
# 7053 "nbl/builtin/hlsl/subgroup/arithmetic_portability.hlsl" | |
namespace nbl | |
{ | |
namespace hlsl | |
{ | |
namespace subgroup | |
{ | |
template<class Binop> | |
struct reduction : native::reduction<Binop> {}; | |
template<class Binop> | |
struct inclusive_scan : native::inclusive_scan<Binop> {}; | |
template<class Binop> | |
struct exclusive_scan : native::exclusive_scan<Binop> {}; | |
} | |
} | |
} | |
# 20760 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\shaderCommon.hlsl" | |
static uint32_t __gl_LocalInvocationIndex; | |
uint32_t nbl::hlsl::glsl::gl_LocalInvocationIndex() {return __gl_LocalInvocationIndex;} | |
static uint32_t3 __gl_GlobalInvocationID; | |
uint32_t3 nbl::hlsl::glsl::gl_GlobalInvocationID() {return __gl_GlobalInvocationID;} | |
[[vk::binding(0, 0)]] static StructuredBuffer<uint32_t> inputValue; | |
[[vk::binding(1, 0)]] RWStructuredBuffer<Output> outand; | |
[[vk::binding(2, 0)]] RWStructuredBuffer<Output> outxor; | |
[[vk::binding(3, 0)]] RWStructuredBuffer<Output> outor; | |
[[vk::binding(4, 0)]] RWStructuredBuffer<Output> outadd; | |
[[vk::binding(5, 0)]] RWStructuredBuffer<Output> outmul; | |
[[vk::binding(6, 0)]] RWStructuredBuffer<Output> outmin; | |
[[vk::binding(7, 0)]] RWStructuredBuffer<Output> outmax; | |
[[vk::binding(8, 0)]] RWStructuredBuffer<Output> outbitcount; | |
template<template<class> class operation_t> | |
struct test | |
{ | |
static void run() | |
{ | |
const uint32_t globalIx = nbl::hlsl::glsl::gl_GlobalInvocationID().x; | |
const uint32_t sourceVal = inputValue[globalIx]; | |
outand[0].subgroupSize | |
= outxor[0].subgroupSize | |
= outor[0].subgroupSize | |
= outadd[0].subgroupSize | |
= outmul[0].subgroupSize | |
= outmin[0].subgroupSize | |
= outmax[0].subgroupSize | |
= nbl::hlsl::glsl::gl_SubgroupSize(); | |
# 20818 "D:\\work\\Nabla\\examples_tests\\48.ArithmeticUnitTest\\hlsl\\shaderCommon.hlsl" | |
} | |
}; | |
# 2 "D:/work/Nabla/examples_tests/48.ArithmeticUnitTest/hlsl/testSubgroup.comp.hlsl" | |
[numthreads(32, 1, 1)] | |
void main(uint32_t invIdx : SV_GroupIndex, uint32_t3 globalId : SV_DispatchThreadID) | |
{ | |
__gl_LocalInvocationIndex = invIdx; | |
__gl_GlobalInvocationID = globalId; | |
test<nbl::hlsl::subgroup::reduction>::run(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment