Merge remote-tracking branch 'mesa-public/master' into vulkan
[mesa.git] / src / glsl / nir / spirv.h
index 55bdcbee8b51a7016f60477c71336f8b2f345688..63bcb2f88ddc09909802690f466715457f3ad0fd 100644 (file)
@@ -1,5 +1,5 @@
 /*
-** Copyright (c) 2015 The Khronos Group Inc.
+** Copyright (c) 2014-2015 The Khronos Group Inc.
 ** 
 ** Permission is hereby granted, free of charge, to any person obtaining a copy
 ** of this software and/or associated documentation files (the "Materials"),
@@ -30,7 +30,6 @@
 */
 
 /*
-** Specification revision 31.
 ** Enumeration tokens for SPIR-V, in various styles:
 **   C, C++, C++11, JSON, Lua, Python
 ** 
 
 typedef unsigned int SpvId;
 
+#define SPV_VERSION 0x10000
+#define SPV_REVISION 2
+
 static const unsigned int SpvMagicNumber = 0x07230203;
-static const unsigned int SpvVersion = 99;
+static const unsigned int SpvVersion = 0x00010000;
+static const unsigned int SpvRevision = 2;
 static const unsigned int SpvOpCodeMask = 0xffff;
 static const unsigned int SpvWordCountShift = 16;
 
@@ -60,7 +63,8 @@ typedef enum SpvSourceLanguage_ {
     SpvSourceLanguageUnknown = 0,
     SpvSourceLanguageESSL = 1,
     SpvSourceLanguageGLSL = 2,
-    SpvSourceLanguageOpenCL = 3,
+    SpvSourceLanguageOpenCL_C = 3,
+    SpvSourceLanguageOpenCL_CPP = 4,
 } SpvSourceLanguage;
 
 typedef enum SpvExecutionModel_ {
@@ -99,7 +103,6 @@ typedef enum SpvExecutionMode_ {
     SpvExecutionModePointMode = 10,
     SpvExecutionModeXfb = 11,
     SpvExecutionModeDepthReplacing = 12,
-    SpvExecutionModeDepthAny = 13,
     SpvExecutionModeDepthGreater = 14,
     SpvExecutionModeDepthLess = 15,
     SpvExecutionModeDepthUnchanged = 16,
@@ -108,10 +111,10 @@ typedef enum SpvExecutionMode_ {
     SpvExecutionModeInputPoints = 19,
     SpvExecutionModeInputLines = 20,
     SpvExecutionModeInputLinesAdjacency = 21,
-    SpvExecutionModeInputTriangles = 22,
+    SpvExecutionModeTriangles = 22,
     SpvExecutionModeInputTrianglesAdjacency = 23,
-    SpvExecutionModeInputQuads = 24,
-    SpvExecutionModeInputIsolines = 25,
+    SpvExecutionModeQuads = 24,
+    SpvExecutionModeIsolines = 25,
     SpvExecutionModeOutputVertices = 26,
     SpvExecutionModeOutputPoints = 27,
     SpvExecutionModeOutputLineStrip = 28,
@@ -125,9 +128,9 @@ typedef enum SpvStorageClass_ {
     SpvStorageClassInput = 1,
     SpvStorageClassUniform = 2,
     SpvStorageClassOutput = 3,
-    SpvStorageClassWorkgroupLocal = 4,
-    SpvStorageClassWorkgroupGlobal = 5,
-    SpvStorageClassPrivateGlobal = 6,
+    SpvStorageClassWorkgroup = 4,
+    SpvStorageClassCrossWorkgroup = 5,
+    SpvStorageClassPrivate = 6,
     SpvStorageClassFunction = 7,
     SpvStorageClassGeneric = 8,
     SpvStorageClassPushConstant = 9,
@@ -142,6 +145,7 @@ typedef enum SpvDim_ {
     SpvDimCube = 3,
     SpvDimRect = 4,
     SpvDimBuffer = 5,
+    SpvDimSubpassData = 6,
 } SpvDim;
 
 typedef enum SpvSamplerAddressingMode_ {
@@ -239,15 +243,18 @@ typedef enum SpvImageChannelDataType_ {
     SpvImageChannelDataTypeHalfFloat = 13,
     SpvImageChannelDataTypeFloat = 14,
     SpvImageChannelDataTypeUnormInt24 = 15,
+    SpvImageChannelDataTypeUnormInt101010_2 = 16,
 } SpvImageChannelDataType;
 
 typedef enum SpvImageOperandsShift_ {
     SpvImageOperandsBiasShift = 0,
     SpvImageOperandsLodShift = 1,
     SpvImageOperandsGradShift = 2,
-    SpvImageOperandsOffsetShift = 3,
-    SpvImageOperandsOffsetsShift = 4,
-    SpvImageOperandsSampleShift = 5,
+    SpvImageOperandsConstOffsetShift = 3,
+    SpvImageOperandsOffsetShift = 4,
+    SpvImageOperandsConstOffsetsShift = 5,
+    SpvImageOperandsSampleShift = 6,
+    SpvImageOperandsMinLodShift = 7,
 } SpvImageOperandsShift;
 
 typedef enum SpvImageOperandsMask_ {
@@ -255,9 +262,11 @@ typedef enum SpvImageOperandsMask_ {
     SpvImageOperandsBiasMask = 0x00000001,
     SpvImageOperandsLodMask = 0x00000002,
     SpvImageOperandsGradMask = 0x00000004,
-    SpvImageOperandsOffsetMask = 0x00000008,
-    SpvImageOperandsOffsetsMask = 0x00000010,
-    SpvImageOperandsSampleMask = 0x00000020,
+    SpvImageOperandsConstOffsetMask = 0x00000008,
+    SpvImageOperandsOffsetMask = 0x00000010,
+    SpvImageOperandsConstOffsetsMask = 0x00000020,
+    SpvImageOperandsSampleMask = 0x00000040,
+    SpvImageOperandsMinLodMask = 0x00000080,
 } SpvImageOperandsMask;
 
 typedef enum SpvFPFastMathModeShift_ {
@@ -302,9 +311,8 @@ typedef enum SpvFunctionParameterAttribute_ {
     SpvFunctionParameterAttributeSret = 3,
     SpvFunctionParameterAttributeNoAlias = 4,
     SpvFunctionParameterAttributeNoCapture = 5,
-    SpvFunctionParameterAttributeSVM = 6,
-    SpvFunctionParameterAttributeNoWrite = 7,
-    SpvFunctionParameterAttributeNoReadWrite = 8,
+    SpvFunctionParameterAttributeNoWrite = 6,
+    SpvFunctionParameterAttributeNoReadWrite = 7,
 } SpvFunctionParameterAttribute;
 
 typedef enum SpvDecoration_ {
@@ -320,8 +328,7 @@ typedef enum SpvDecoration_ {
     SpvDecorationGLSLPacked = 9,
     SpvDecorationCPacked = 10,
     SpvDecorationBuiltIn = 11,
-    SpvDecorationSmooth = 12,
-    SpvDecorationNoperspective = 13,
+    SpvDecorationNoPerspective = 13,
     SpvDecorationFlat = 14,
     SpvDecorationPatch = 15,
     SpvDecorationCentroid = 16,
@@ -332,10 +339,9 @@ typedef enum SpvDecoration_ {
     SpvDecorationVolatile = 21,
     SpvDecorationConstant = 22,
     SpvDecorationCoherent = 23,
-    SpvDecorationNonwritable = 24,
-    SpvDecorationNonreadable = 25,
+    SpvDecorationNonWritable = 24,
+    SpvDecorationNonReadable = 25,
     SpvDecorationUniform = 26,
-    SpvDecorationNoStaticUse = 27,
     SpvDecorationSaturatedConversion = 28,
     SpvDecorationStream = 29,
     SpvDecorationLocation = 30,
@@ -350,12 +356,14 @@ typedef enum SpvDecoration_ {
     SpvDecorationFPRoundingMode = 39,
     SpvDecorationFPFastMathMode = 40,
     SpvDecorationLinkageAttributes = 41,
+    SpvDecorationNoContraction = 42,
+    SpvDecorationInputAttachmentIndex = 43,
+    SpvDecorationAlignment = 44,
 } SpvDecoration;
 
 typedef enum SpvBuiltIn_ {
     SpvBuiltInPosition = 0,
     SpvBuiltInPointSize = 1,
-    SpvBuiltInClipVertex = 2,
     SpvBuiltInClipDistance = 3,
     SpvBuiltInCullDistance = 4,
     SpvBuiltInVertexId = 5,
@@ -374,7 +382,6 @@ typedef enum SpvBuiltIn_ {
     SpvBuiltInSampleId = 18,
     SpvBuiltInSamplePosition = 19,
     SpvBuiltInSampleMask = 20,
-    SpvBuiltInFragColor = 21,
     SpvBuiltInFragDepth = 22,
     SpvBuiltInHelperInvocation = 23,
     SpvBuiltInNumWorkgroups = 24,
@@ -388,13 +395,14 @@ typedef enum SpvBuiltIn_ {
     SpvBuiltInEnqueuedWorkgroupSize = 32,
     SpvBuiltInGlobalOffset = 33,
     SpvBuiltInGlobalLinearId = 34,
-    SpvBuiltInWorkgroupLinearId = 35,
     SpvBuiltInSubgroupSize = 36,
     SpvBuiltInSubgroupMaxSize = 37,
     SpvBuiltInNumSubgroups = 38,
     SpvBuiltInNumEnqueuedSubgroups = 39,
     SpvBuiltInSubgroupId = 40,
     SpvBuiltInSubgroupLocalInvocationId = 41,
+    SpvBuiltInVertexIndex = 42,
+    SpvBuiltInInstanceIndex = 43,
 } SpvBuiltIn;
 
 typedef enum SpvSelectionControlShift_ {
@@ -435,41 +443,43 @@ typedef enum SpvFunctionControlMask_ {
 } SpvFunctionControlMask;
 
 typedef enum SpvMemorySemanticsShift_ {
-    SpvMemorySemanticsRelaxedShift = 0,
-    SpvMemorySemanticsSequentiallyConsistentShift = 1,
-    SpvMemorySemanticsAcquireShift = 2,
-    SpvMemorySemanticsReleaseShift = 3,
-    SpvMemorySemanticsUniformMemoryShift = 4,
-    SpvMemorySemanticsSubgroupMemoryShift = 5,
-    SpvMemorySemanticsWorkgroupLocalMemoryShift = 6,
-    SpvMemorySemanticsWorkgroupGlobalMemoryShift = 7,
-    SpvMemorySemanticsAtomicCounterMemoryShift = 8,
-    SpvMemorySemanticsImageMemoryShift = 9,
+    SpvMemorySemanticsAcquireShift = 1,
+    SpvMemorySemanticsReleaseShift = 2,
+    SpvMemorySemanticsAcquireReleaseShift = 3,
+    SpvMemorySemanticsSequentiallyConsistentShift = 4,
+    SpvMemorySemanticsUniformMemoryShift = 6,
+    SpvMemorySemanticsSubgroupMemoryShift = 7,
+    SpvMemorySemanticsWorkgroupMemoryShift = 8,
+    SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
+    SpvMemorySemanticsAtomicCounterMemoryShift = 10,
+    SpvMemorySemanticsImageMemoryShift = 11,
 } SpvMemorySemanticsShift;
 
 typedef enum SpvMemorySemanticsMask_ {
     SpvMemorySemanticsMaskNone = 0,
-    SpvMemorySemanticsRelaxedMask = 0x00000001,
-    SpvMemorySemanticsSequentiallyConsistentMask = 0x00000002,
-    SpvMemorySemanticsAcquireMask = 0x00000004,
-    SpvMemorySemanticsReleaseMask = 0x00000008,
-    SpvMemorySemanticsUniformMemoryMask = 0x00000010,
-    SpvMemorySemanticsSubgroupMemoryMask = 0x00000020,
-    SpvMemorySemanticsWorkgroupLocalMemoryMask = 0x00000040,
-    SpvMemorySemanticsWorkgroupGlobalMemoryMask = 0x00000080,
-    SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000100,
-    SpvMemorySemanticsImageMemoryMask = 0x00000200,
+    SpvMemorySemanticsAcquireMask = 0x00000002,
+    SpvMemorySemanticsReleaseMask = 0x00000004,
+    SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
+    SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
+    SpvMemorySemanticsUniformMemoryMask = 0x00000040,
+    SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
+    SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
+    SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
+    SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
+    SpvMemorySemanticsImageMemoryMask = 0x00000800,
 } SpvMemorySemanticsMask;
 
 typedef enum SpvMemoryAccessShift_ {
     SpvMemoryAccessVolatileShift = 0,
     SpvMemoryAccessAlignedShift = 1,
+    SpvMemoryAccessNontemporalShift = 2,
 } SpvMemoryAccessShift;
 
 typedef enum SpvMemoryAccessMask_ {
     SpvMemoryAccessMaskNone = 0,
     SpvMemoryAccessVolatileMask = 0x00000001,
     SpvMemoryAccessAlignedMask = 0x00000002,
+    SpvMemoryAccessNontemporalMask = 0x00000004,
 } SpvMemoryAccessMask;
 
 typedef enum SpvScope_ {
@@ -518,18 +528,52 @@ typedef enum SpvCapability_ {
     SpvCapabilityImageBasic = 13,
     SpvCapabilityImageReadWrite = 14,
     SpvCapabilityImageMipmap = 15,
-    SpvCapabilityImageSRGBWrite = 16,
     SpvCapabilityPipes = 17,
     SpvCapabilityGroups = 18,
     SpvCapabilityDeviceEnqueue = 19,
     SpvCapabilityLiteralSampler = 20,
     SpvCapabilityAtomicStorage = 21,
     SpvCapabilityInt16 = 22,
+    SpvCapabilityTessellationPointSize = 23,
+    SpvCapabilityGeometryPointSize = 24,
+    SpvCapabilityImageGatherExtended = 25,
+    SpvCapabilityStorageImageMultisample = 27,
+    SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
+    SpvCapabilitySampledImageArrayDynamicIndexing = 29,
+    SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
+    SpvCapabilityStorageImageArrayDynamicIndexing = 31,
+    SpvCapabilityClipDistance = 32,
+    SpvCapabilityCullDistance = 33,
+    SpvCapabilityImageCubeArray = 34,
+    SpvCapabilitySampleRateShading = 35,
+    SpvCapabilityImageRect = 36,
+    SpvCapabilitySampledRect = 37,
+    SpvCapabilityGenericPointer = 38,
+    SpvCapabilityInt8 = 39,
+    SpvCapabilityInputAttachment = 40,
+    SpvCapabilitySparseResidency = 41,
+    SpvCapabilityMinLod = 42,
+    SpvCapabilitySampled1D = 43,
+    SpvCapabilityImage1D = 44,
+    SpvCapabilitySampledCubeArray = 45,
+    SpvCapabilitySampledBuffer = 46,
+    SpvCapabilityImageBuffer = 47,
+    SpvCapabilityImageMSArray = 48,
+    SpvCapabilityStorageImageExtendedFormats = 49,
+    SpvCapabilityImageQuery = 50,
+    SpvCapabilityDerivativeControl = 51,
+    SpvCapabilityInterpolationFunction = 52,
+    SpvCapabilityTransformFeedback = 53,
+    SpvCapabilityGeometryStreams = 54,
+    SpvCapabilityStorageImageReadWithoutFormat = 55,
+    SpvCapabilityStorageImageWriteWithoutFormat = 56,
+    SpvCapabilityMultiViewport = 57,
 } SpvCapability;
 
 typedef enum SpvOp_ {
     SpvOpNop = 0,
     SpvOpUndef = 1,
+    SpvOpSourceContinued = 2,
     SpvOpSource = 3,
     SpvOpSourceExtension = 4,
     SpvOpName = 5,
@@ -563,6 +607,7 @@ typedef enum SpvOp_ {
     SpvOpTypeReserveId = 36,
     SpvOpTypeQueue = 37,
     SpvOpTypePipe = 38,
+    SpvOpTypeForwardPointer = 39,
     SpvOpConstantTrue = 41,
     SpvOpConstantFalse = 42,
     SpvOpConstant = 43,
@@ -589,6 +634,7 @@ typedef enum SpvOp_ {
     SpvOpPtrAccessChain = 67,
     SpvOpArrayLength = 68,
     SpvOpGenericPtrMemSemantics = 69,
+    SpvOpInBoundsPtrAccessChain = 70,
     SpvOpDecorate = 71,
     SpvOpMemberDecorate = 72,
     SpvOpDecorationGroup = 73,
@@ -616,7 +662,7 @@ typedef enum SpvOp_ {
     SpvOpImageDrefGather = 97,
     SpvOpImageRead = 98,
     SpvOpImageWrite = 99,
-    SpvOpImageQueryDim = 100,
+    SpvOpImage = 100,
     SpvOpImageQueryFormat = 101,
     SpvOpImageQueryOrder = 102,
     SpvOpImageQuerySizeLod = 103,
@@ -665,7 +711,8 @@ typedef enum SpvOp_ {
     SpvOpDot = 148,
     SpvOpIAddCarry = 149,
     SpvOpISubBorrow = 150,
-    SpvOpIMulExtended = 151,
+    SpvOpUMulExtended = 151,
+    SpvOpSMulExtended = 152,
     SpvOpAny = 154,
     SpvOpAll = 155,
     SpvOpIsNan = 156,
@@ -740,9 +787,9 @@ typedef enum SpvOp_ {
     SpvOpAtomicIDecrement = 233,
     SpvOpAtomicIAdd = 234,
     SpvOpAtomicISub = 235,
-    SpvOpAtomicIMin = 236,
+    SpvOpAtomicSMin = 236,
     SpvOpAtomicUMin = 237,
-    SpvOpAtomicIMax = 238,
+    SpvOpAtomicSMax = 238,
     SpvOpAtomicUMax = 239,
     SpvOpAtomicAnd = 240,
     SpvOpAtomicOr = 241,
@@ -760,8 +807,8 @@ typedef enum SpvOp_ {
     SpvOpUnreachable = 255,
     SpvOpLifetimeStart = 256,
     SpvOpLifetimeStop = 257,
-    SpvOpAsyncGroupCopy = 259,
-    SpvOpWaitGroupEvents = 260,
+    SpvOpGroupAsyncCopy = 259,
+    SpvOpGroupWaitEvents = 260,
     SpvOpGroupAll = 261,
     SpvOpGroupAny = 262,
     SpvOpGroupBroadcast = 263,
@@ -802,6 +849,21 @@ typedef enum SpvOp_ {
     SpvOpCaptureEventProfilingInfo = 302,
     SpvOpGetDefaultQueue = 303,
     SpvOpBuildNDRange = 304,
+    SpvOpImageSparseSampleImplicitLod = 305,
+    SpvOpImageSparseSampleExplicitLod = 306,
+    SpvOpImageSparseSampleDrefImplicitLod = 307,
+    SpvOpImageSparseSampleDrefExplicitLod = 308,
+    SpvOpImageSparseSampleProjImplicitLod = 309,
+    SpvOpImageSparseSampleProjExplicitLod = 310,
+    SpvOpImageSparseSampleProjDrefImplicitLod = 311,
+    SpvOpImageSparseSampleProjDrefExplicitLod = 312,
+    SpvOpImageSparseFetch = 313,
+    SpvOpImageSparseGather = 314,
+    SpvOpImageSparseDrefGather = 315,
+    SpvOpImageSparseTexelsResident = 316,
+    SpvOpNoLine = 317,
+    SpvOpAtomicFlagTestAndSet = 318,
+    SpvOpAtomicFlagClear = 319,
 } SpvOp;
 
 #endif  // #ifndef spirv_H