spirv.json 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212
  1. {
  2. "scopeName": "source.spirv",
  3. "name": "SPIR-V",
  4. "comment": "Generated by gen-grammar.go --template=../../spirv.json.tmpl --out=../../spirv.json. Do not modify this file directly.",
  5. "patterns": [
  6. { "include": "#BitEnum_ImageOperands" },
  7. { "include": "#BitEnum_FPFastMathMode" },
  8. { "include": "#BitEnum_SelectionControl" },
  9. { "include": "#BitEnum_LoopControl" },
  10. { "include": "#BitEnum_FunctionControl" },
  11. { "include": "#BitEnum_MemorySemantics" },
  12. { "include": "#BitEnum_MemoryAccess" },
  13. { "include": "#BitEnum_KernelProfilingInfo" },
  14. { "include": "#ValueEnum_SourceLanguage" },
  15. { "include": "#ValueEnum_ExecutionModel" },
  16. { "include": "#ValueEnum_AddressingModel" },
  17. { "include": "#ValueEnum_MemoryModel" },
  18. { "include": "#ValueEnum_ExecutionMode" },
  19. { "include": "#ValueEnum_StorageClass" },
  20. { "include": "#ValueEnum_Dim" },
  21. { "include": "#ValueEnum_SamplerAddressingMode" },
  22. { "include": "#ValueEnum_SamplerFilterMode" },
  23. { "include": "#ValueEnum_ImageFormat" },
  24. { "include": "#ValueEnum_ImageChannelOrder" },
  25. { "include": "#ValueEnum_ImageChannelDataType" },
  26. { "include": "#ValueEnum_FPRoundingMode" },
  27. { "include": "#ValueEnum_LinkageType" },
  28. { "include": "#ValueEnum_AccessQualifier" },
  29. { "include": "#ValueEnum_FunctionParameterAttribute" },
  30. { "include": "#ValueEnum_Decoration" },
  31. { "include": "#ValueEnum_BuiltIn" },
  32. { "include": "#ValueEnum_Scope" },
  33. { "include": "#ValueEnum_GroupOperation" },
  34. { "include": "#ValueEnum_KernelEnqueueFlags" },
  35. { "include": "#ValueEnum_Capability" },
  36. { "include": "#opcode" },
  37. { "include": "#identifier" },
  38. { "include": "#number" },
  39. { "include": "#string" },
  40. { "include": "#comment" },
  41. { "include": "#operator" }
  42. ],
  43. "repository": {
  44. "BitEnum_ImageOperands": {
  45. "match": "\\b(None|Bias|Lod|Grad|ConstOffset|Offset|ConstOffsets|Sample|MinLod|MakeTexelAvailable|MakeTexelAvailableKHR|MakeTexelVisible|MakeTexelVisibleKHR|NonPrivateTexel|NonPrivateTexelKHR|VolatileTexel|VolatileTexelKHR|SignExtend|ZeroExtend)\\b",
  46. "name": "keyword.spirv"
  47. },
  48. "BitEnum_FPFastMathMode": {
  49. "match": "\\b(None|NotNaN|NotInf|NSZ|AllowRecip|Fast)\\b",
  50. "name": "keyword.spirv"
  51. },
  52. "BitEnum_SelectionControl": {
  53. "match": "\\b(None|Flatten|DontFlatten)\\b",
  54. "name": "keyword.spirv"
  55. },
  56. "BitEnum_LoopControl": {
  57. "match": "\\b(None|Unroll|DontUnroll|DependencyInfinite|DependencyLength|MinIterations|MaxIterations|IterationMultiple|PeelCount|PartialCount)\\b",
  58. "name": "keyword.spirv"
  59. },
  60. "BitEnum_FunctionControl": {
  61. "match": "\\b(None|Inline|DontInline|Pure|Const)\\b",
  62. "name": "keyword.spirv"
  63. },
  64. "BitEnum_MemorySemantics": {
  65. "match": "\\b(Relaxed|None|Acquire|Release|AcquireRelease|SequentiallyConsistent|UniformMemory|SubgroupMemory|WorkgroupMemory|CrossWorkgroupMemory|AtomicCounterMemory|ImageMemory|OutputMemory|OutputMemoryKHR|MakeAvailable|MakeAvailableKHR|MakeVisible|MakeVisibleKHR|Volatile)\\b",
  66. "name": "keyword.spirv"
  67. },
  68. "BitEnum_MemoryAccess": {
  69. "match": "\\b(None|Volatile|Aligned|Nontemporal|MakePointerAvailable|MakePointerAvailableKHR|MakePointerVisible|MakePointerVisibleKHR|NonPrivatePointer|NonPrivatePointerKHR)\\b",
  70. "name": "keyword.spirv"
  71. },
  72. "BitEnum_KernelProfilingInfo": {
  73. "match": "\\b(None|CmdExecTime)\\b",
  74. "name": "keyword.spirv"
  75. },
  76. "ValueEnum_SourceLanguage": {
  77. "match": "\\b(Unknown|ESSL|GLSL|OpenCL_C|OpenCL_CPP|HLSL)\\b",
  78. "name": "keyword.spirv"
  79. },
  80. "ValueEnum_ExecutionModel": {
  81. "match": "\\b(Vertex|TessellationControl|TessellationEvaluation|Geometry|Fragment|GLCompute|Kernel|TaskNV|MeshNV|RayGenerationNV|IntersectionNV|AnyHitNV|ClosestHitNV|MissNV|CallableNV)\\b",
  82. "name": "keyword.spirv"
  83. },
  84. "ValueEnum_AddressingModel": {
  85. "match": "\\b(Logical|Physical32|Physical64|PhysicalStorageBuffer64|PhysicalStorageBuffer64EXT)\\b",
  86. "name": "keyword.spirv"
  87. },
  88. "ValueEnum_MemoryModel": {
  89. "match": "\\b(Simple|GLSL450|OpenCL|Vulkan|VulkanKHR)\\b",
  90. "name": "keyword.spirv"
  91. },
  92. "ValueEnum_ExecutionMode": {
  93. "match": "\\b(Invocations|SpacingEqual|SpacingFractionalEven|SpacingFractionalOdd|VertexOrderCw|VertexOrderCcw|PixelCenterInteger|OriginUpperLeft|OriginLowerLeft|EarlyFragmentTests|PointMode|Xfb|DepthReplacing|DepthGreater|DepthLess|DepthUnchanged|LocalSize|LocalSizeHint|InputPoints|InputLines|InputLinesAdjacency|Triangles|InputTrianglesAdjacency|Quads|Isolines|OutputVertices|OutputPoints|OutputLineStrip|OutputTriangleStrip|VecTypeHint|ContractionOff|Initializer|Finalizer|SubgroupSize|SubgroupsPerWorkgroup|SubgroupsPerWorkgroupId|LocalSizeId|LocalSizeHintId|PostDepthCoverage|DenormPreserve|DenormFlushToZero|SignedZeroInfNanPreserve|RoundingModeRTE|RoundingModeRTZ|StencilRefReplacingEXT|OutputLinesNV|OutputPrimitivesNV|DerivativeGroupQuadsNV|DerivativeGroupLinearNV|OutputTrianglesNV|PixelInterlockOrderedEXT|PixelInterlockUnorderedEXT|SampleInterlockOrderedEXT|SampleInterlockUnorderedEXT|ShadingRateInterlockOrderedEXT|ShadingRateInterlockUnorderedEXT)\\b",
  94. "name": "keyword.spirv"
  95. },
  96. "ValueEnum_StorageClass": {
  97. "match": "\\b(UniformConstant|Input|Uniform|Output|Workgroup|CrossWorkgroup|Private|Function|Generic|PushConstant|AtomicCounter|Image|StorageBuffer|CallableDataNV|IncomingCallableDataNV|RayPayloadNV|HitAttributeNV|IncomingRayPayloadNV|ShaderRecordBufferNV|PhysicalStorageBuffer|PhysicalStorageBufferEXT)\\b",
  98. "name": "keyword.spirv"
  99. },
  100. "ValueEnum_Dim": {
  101. "match": "\\b(1D|2D|3D|Cube|Rect|Buffer|SubpassData)\\b",
  102. "name": "keyword.spirv"
  103. },
  104. "ValueEnum_SamplerAddressingMode": {
  105. "match": "\\b(None|ClampToEdge|Clamp|Repeat|RepeatMirrored)\\b",
  106. "name": "keyword.spirv"
  107. },
  108. "ValueEnum_SamplerFilterMode": {
  109. "match": "\\b(Nearest|Linear)\\b",
  110. "name": "keyword.spirv"
  111. },
  112. "ValueEnum_ImageFormat": {
  113. "match": "\\b(Unknown|Rgba32f|Rgba16f|R32f|Rgba8|Rgba8Snorm|Rg32f|Rg16f|R11fG11fB10f|R16f|Rgba16|Rgb10A2|Rg16|Rg8|R16|R8|Rgba16Snorm|Rg16Snorm|Rg8Snorm|R16Snorm|R8Snorm|Rgba32i|Rgba16i|Rgba8i|R32i|Rg32i|Rg16i|Rg8i|R16i|R8i|Rgba32ui|Rgba16ui|Rgba8ui|R32ui|Rgb10a2ui|Rg32ui|Rg16ui|Rg8ui|R16ui|R8ui)\\b",
  114. "name": "keyword.spirv"
  115. },
  116. "ValueEnum_ImageChannelOrder": {
  117. "match": "\\b(R|A|RG|RA|RGB|RGBA|BGRA|ARGB|Intensity|Luminance|Rx|RGx|RGBx|Depth|DepthStencil|sRGB|sRGBx|sRGBA|sBGRA|ABGR)\\b",
  118. "name": "keyword.spirv"
  119. },
  120. "ValueEnum_ImageChannelDataType": {
  121. "match": "\\b(SnormInt8|SnormInt16|UnormInt8|UnormInt16|UnormShort565|UnormShort555|UnormInt101010|SignedInt8|SignedInt16|SignedInt32|UnsignedInt8|UnsignedInt16|UnsignedInt32|HalfFloat|Float|UnormInt24|UnormInt101010_2)\\b",
  122. "name": "keyword.spirv"
  123. },
  124. "ValueEnum_FPRoundingMode": {
  125. "match": "\\b(RTE|RTZ|RTP|RTN)\\b",
  126. "name": "keyword.spirv"
  127. },
  128. "ValueEnum_LinkageType": {
  129. "match": "\\b(Export|Import)\\b",
  130. "name": "keyword.spirv"
  131. },
  132. "ValueEnum_AccessQualifier": {
  133. "match": "\\b(ReadOnly|WriteOnly|ReadWrite)\\b",
  134. "name": "keyword.spirv"
  135. },
  136. "ValueEnum_FunctionParameterAttribute": {
  137. "match": "\\b(Zext|Sext|ByVal|Sret|NoAlias|NoCapture|NoWrite|NoReadWrite)\\b",
  138. "name": "keyword.spirv"
  139. },
  140. "ValueEnum_Decoration": {
  141. "match": "\\b(RelaxedPrecision|SpecId|Block|BufferBlock|RowMajor|ColMajor|ArrayStride|MatrixStride|GLSLShared|GLSLPacked|CPacked|BuiltIn|NoPerspective|Flat|Patch|Centroid|Sample|Invariant|Restrict|Aliased|Volatile|Constant|Coherent|NonWritable|NonReadable|Uniform|UniformId|SaturatedConversion|Stream|Location|Component|Index|Binding|DescriptorSet|Offset|XfbBuffer|XfbStride|FuncParamAttr|FPRoundingMode|FPFastMathMode|LinkageAttributes|NoContraction|InputAttachmentIndex|Alignment|MaxByteOffset|AlignmentId|MaxByteOffsetId|NoSignedWrap|NoUnsignedWrap|ExplicitInterpAMD|OverrideCoverageNV|PassthroughNV|ViewportRelativeNV|SecondaryViewportRelativeNV|PerPrimitiveNV|PerViewNV|PerTaskNV|PerVertexNV|NonUniform|NonUniformEXT|RestrictPointer|RestrictPointerEXT|AliasedPointer|AliasedPointerEXT|CounterBuffer|HlslCounterBufferGOOGLE|UserSemantic|HlslSemanticGOOGLE|UserTypeGOOGLE)\\b",
  142. "name": "keyword.spirv"
  143. },
  144. "ValueEnum_BuiltIn": {
  145. "match": "\\b(Position|PointSize|ClipDistance|CullDistance|VertexId|InstanceId|PrimitiveId|InvocationId|Layer|ViewportIndex|TessLevelOuter|TessLevelInner|TessCoord|PatchVertices|FragCoord|PointCoord|FrontFacing|SampleId|SamplePosition|SampleMask|FragDepth|HelperInvocation|NumWorkgroups|WorkgroupSize|WorkgroupId|LocalInvocationId|GlobalInvocationId|LocalInvocationIndex|WorkDim|GlobalSize|EnqueuedWorkgroupSize|GlobalOffset|GlobalLinearId|SubgroupSize|SubgroupMaxSize|NumSubgroups|NumEnqueuedSubgroups|SubgroupId|SubgroupLocalInvocationId|VertexIndex|InstanceIndex|SubgroupEqMask|SubgroupGeMask|SubgroupGtMask|SubgroupLeMask|SubgroupLtMask|SubgroupEqMaskKHR|SubgroupGeMaskKHR|SubgroupGtMaskKHR|SubgroupLeMaskKHR|SubgroupLtMaskKHR|BaseVertex|BaseInstance|DrawIndex|DeviceIndex|ViewIndex|BaryCoordNoPerspAMD|BaryCoordNoPerspCentroidAMD|BaryCoordNoPerspSampleAMD|BaryCoordSmoothAMD|BaryCoordSmoothCentroidAMD|BaryCoordSmoothSampleAMD|BaryCoordPullModelAMD|FragStencilRefEXT|ViewportMaskNV|SecondaryPositionNV|SecondaryViewportMaskNV|PositionPerViewNV|ViewportMaskPerViewNV|FullyCoveredEXT|TaskCountNV|PrimitiveCountNV|PrimitiveIndicesNV|ClipDistancePerViewNV|CullDistancePerViewNV|LayerPerViewNV|MeshViewCountNV|MeshViewIndicesNV|BaryCoordNV|BaryCoordNoPerspNV|FragSizeEXT|FragmentSizeNV|FragInvocationCountEXT|InvocationsPerPixelNV|LaunchIdNV|LaunchSizeNV|WorldRayOriginNV|WorldRayDirectionNV|ObjectRayOriginNV|ObjectRayDirectionNV|RayTminNV|RayTmaxNV|InstanceCustomIndexNV|ObjectToWorldNV|WorldToObjectNV|HitTNV|HitKindNV|IncomingRayFlagsNV|WarpsPerSMNV|SMCountNV|WarpIDNV|SMIDNV)\\b",
  146. "name": "keyword.spirv"
  147. },
  148. "ValueEnum_Scope": {
  149. "match": "\\b(CrossDevice|Device|Workgroup|Subgroup|Invocation|QueueFamily|QueueFamilyKHR)\\b",
  150. "name": "keyword.spirv"
  151. },
  152. "ValueEnum_GroupOperation": {
  153. "match": "\\b(Reduce|InclusiveScan|ExclusiveScan|ClusteredReduce|PartitionedReduceNV|PartitionedInclusiveScanNV|PartitionedExclusiveScanNV)\\b",
  154. "name": "keyword.spirv"
  155. },
  156. "ValueEnum_KernelEnqueueFlags": {
  157. "match": "\\b(NoWait|WaitKernel|WaitWorkGroup)\\b",
  158. "name": "keyword.spirv"
  159. },
  160. "ValueEnum_Capability": {
  161. "match": "\\b(Matrix|Shader|Geometry|Tessellation|Addresses|Linkage|Kernel|Vector16|Float16Buffer|Float16|Float64|Int64|Int64Atomics|ImageBasic|ImageReadWrite|ImageMipmap|Pipes|Groups|DeviceEnqueue|LiteralSampler|AtomicStorage|Int16|TessellationPointSize|GeometryPointSize|ImageGatherExtended|StorageImageMultisample|UniformBufferArrayDynamicIndexing|SampledImageArrayDynamicIndexing|StorageBufferArrayDynamicIndexing|StorageImageArrayDynamicIndexing|ClipDistance|CullDistance|ImageCubeArray|SampleRateShading|ImageRect|SampledRect|GenericPointer|Int8|InputAttachment|SparseResidency|MinLod|Sampled1D|Image1D|SampledCubeArray|SampledBuffer|ImageBuffer|ImageMSArray|StorageImageExtendedFormats|ImageQuery|DerivativeControl|InterpolationFunction|TransformFeedback|GeometryStreams|StorageImageReadWithoutFormat|StorageImageWriteWithoutFormat|MultiViewport|SubgroupDispatch|NamedBarrier|PipeStorage|GroupNonUniform|GroupNonUniformVote|GroupNonUniformArithmetic|GroupNonUniformBallot|GroupNonUniformShuffle|GroupNonUniformShuffleRelative|GroupNonUniformClustered|GroupNonUniformQuad|ShaderLayer|ShaderViewportIndex|SubgroupBallotKHR|DrawParameters|SubgroupVoteKHR|StorageBuffer16BitAccess|StorageUniformBufferBlock16|UniformAndStorageBuffer16BitAccess|StorageUniform16|StoragePushConstant16|StorageInputOutput16|DeviceGroup|MultiView|VariablePointersStorageBuffer|VariablePointers|AtomicStorageOps|SampleMaskPostDepthCoverage|StorageBuffer8BitAccess|UniformAndStorageBuffer8BitAccess|StoragePushConstant8|DenormPreserve|DenormFlushToZero|SignedZeroInfNanPreserve|RoundingModeRTE|RoundingModeRTZ|Float16ImageAMD|ImageGatherBiasLodAMD|FragmentMaskAMD|StencilExportEXT|ImageReadWriteLodAMD|ShaderClockKHR|SampleMaskOverrideCoverageNV|GeometryShaderPassthroughNV|ShaderViewportIndexLayerEXT|ShaderViewportIndexLayerNV|ShaderViewportMaskNV|ShaderStereoViewNV|PerViewAttributesNV|FragmentFullyCoveredEXT|MeshShadingNV|ImageFootprintNV|FragmentBarycentricNV|ComputeDerivativeGroupQuadsNV|FragmentDensityEXT|ShadingRateNV|GroupNonUniformPartitionedNV|ShaderNonUniform|ShaderNonUniformEXT|RuntimeDescriptorArray|RuntimeDescriptorArrayEXT|InputAttachmentArrayDynamicIndexing|InputAttachmentArrayDynamicIndexingEXT|UniformTexelBufferArrayDynamicIndexing|UniformTexelBufferArrayDynamicIndexingEXT|StorageTexelBufferArrayDynamicIndexing|StorageTexelBufferArrayDynamicIndexingEXT|UniformBufferArrayNonUniformIndexing|UniformBufferArrayNonUniformIndexingEXT|SampledImageArrayNonUniformIndexing|SampledImageArrayNonUniformIndexingEXT|StorageBufferArrayNonUniformIndexing|StorageBufferArrayNonUniformIndexingEXT|StorageImageArrayNonUniformIndexing|StorageImageArrayNonUniformIndexingEXT|InputAttachmentArrayNonUniformIndexing|InputAttachmentArrayNonUniformIndexingEXT|UniformTexelBufferArrayNonUniformIndexing|UniformTexelBufferArrayNonUniformIndexingEXT|StorageTexelBufferArrayNonUniformIndexing|StorageTexelBufferArrayNonUniformIndexingEXT|RayTracingNV|VulkanMemoryModel|VulkanMemoryModelKHR|VulkanMemoryModelDeviceScope|VulkanMemoryModelDeviceScopeKHR|PhysicalStorageBufferAddresses|PhysicalStorageBufferAddressesEXT|ComputeDerivativeGroupLinearNV|CooperativeMatrixNV|FragmentShaderSampleInterlockEXT|FragmentShaderShadingRateInterlockEXT|ShaderSMBuiltinsNV|FragmentShaderPixelInterlockEXT|DemoteToHelperInvocationEXT|SubgroupShuffleINTEL|SubgroupBufferBlockIOINTEL|SubgroupImageBlockIOINTEL|SubgroupImageMediaBlockIOINTEL|IntegerFunctions2INTEL|SubgroupAvcMotionEstimationINTEL|SubgroupAvcMotionEstimationIntraINTEL|SubgroupAvcMotionEstimationChromaINTEL)\\b",
  162. "name": "keyword.spirv"
  163. },
  164. "opcode": {
  165. "match": "(Op[a-zA-Z]+)",
  166. "name": "entity.name.function.spirv"
  167. },
  168. "identifier": {
  169. "match": "%[a-zA-Z0-9_]+",
  170. "name": "variable.spirv"
  171. },
  172. "number": {
  173. "match": "\\b[0-9]+.?[0-9]*\\b",
  174. "name": "constant.numeric.spirv"
  175. },
  176. "comment": {
  177. "match": ";[^\n]*",
  178. "name": "comment.line.spirv"
  179. },
  180. "operator": {
  181. "match": "=",
  182. "name": "keyword.operator.spirv"
  183. },
  184. "string": {
  185. "begin": "\"",
  186. "beginCaptures": {
  187. "0": {
  188. "name": "punctuation.definition.string.begin.spirv"
  189. }
  190. },
  191. "end": "\"",
  192. "endCaptures": {
  193. "0": {
  194. "name": "punctuation.definition.string.end.spirv"
  195. }
  196. },
  197. "name": "string.quoted.double.spirv",
  198. "patterns": [ { "include": "#string_escaped_char" } ]
  199. },
  200. "string_escaped_char": {
  201. "patterns": [
  202. {
  203. "match": "\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})",
  204. "name": "constant.character.escape.spirv"
  205. }, {
  206. "match": "\\\\[^0-7xuUabfnrtv\\'\"]",
  207. "name": "invalid.illegal.unknown-escape.spirv"
  208. }
  209. ]
  210. }
  211. }
  212. }