summaryrefslogtreecommitdiffstats
path: root/thirdparty/glslang
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-09-01 11:11:12 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-09-01 11:23:48 +0200
commit728dbeab69c21e7bead0f07604e7d044a67e9a14 (patch)
treee864a8a23e107ef9c50152bd54be8befc1068304 /thirdparty/glslang
parent549fcce5f8f7beace3e5c90e9bbe4335d4fd1476 (diff)
downloadredot-engine-728dbeab69c21e7bead0f07604e7d044a67e9a14.tar.gz
vulkan: Update all components to Vulkan SDK 1.3.261.1
Updates to volk, vulkan headers, `vk_enum_string_helper.h`, VMA, glslang, spirv-reflect. VMA doesn't tag SDK releases specifically, and still hasn't had a tagged release since 3.0.1, but the Vulkan SDK now seems to ship a recent master commit, so we do the same.
Diffstat (limited to 'thirdparty/glslang')
-rw-r--r--thirdparty/glslang/OGLCompilersDLL/InitializeDll.cpp128
-rw-r--r--thirdparty/glslang/OGLCompilersDLL/InitializeDll.h8
-rw-r--r--thirdparty/glslang/SPIRV/GLSL.ext.KHR.h1
-rw-r--r--thirdparty/glslang/SPIRV/GLSL.std.450.h2
-rwxr-xr-x[-rw-r--r--]thirdparty/glslang/SPIRV/GlslangToSpv.cpp454
-rw-r--r--thirdparty/glslang/SPIRV/GlslangToSpv.h4
-rw-r--r--thirdparty/glslang/SPIRV/Logger.cpp4
-rw-r--r--thirdparty/glslang/SPIRV/Logger.h9
-rw-r--r--thirdparty/glslang/SPIRV/NonSemanticDebugPrintf.h10
-rw-r--r--thirdparty/glslang/SPIRV/NonSemanticShaderDebugInfo100.h10
-rw-r--r--thirdparty/glslang/SPIRV/SPVRemapper.cpp1
-rw-r--r--thirdparty/glslang/SPIRV/SpvBuilder.cpp123
-rw-r--r--thirdparty/glslang/SPIRV/SpvBuilder.h27
-rw-r--r--thirdparty/glslang/SPIRV/SpvPostProcess.cpp6
-rw-r--r--thirdparty/glslang/SPIRV/disassemble.cpp2
-rwxr-xr-x[-rw-r--r--]thirdparty/glslang/SPIRV/doc.cpp3143
-rw-r--r--thirdparty/glslang/SPIRV/doc.h3
-rw-r--r--thirdparty/glslang/SPIRV/spirv.hpp60
-rw-r--r--thirdparty/glslang/SPIRV/spvIR.h4
-rwxr-xr-x[-rw-r--r--]thirdparty/glslang/glslang/Include/BaseTypes.h12
-rw-r--r--thirdparty/glslang/glslang/Include/Common.h1
-rw-r--r--thirdparty/glslang/glslang/Include/ConstantUnion.h36
-rw-r--r--thirdparty/glslang/glslang/Include/InitializeGlobals.h2
-rw-r--r--thirdparty/glslang/glslang/Include/SpirvIntrinsics.h21
-rw-r--r--thirdparty/glslang/glslang/Include/Types.h438
-rw-r--r--thirdparty/glslang/glslang/Include/arrays.h10
-rw-r--r--thirdparty/glslang/glslang/Include/glslang_c_interface.h287
-rw-r--r--thirdparty/glslang/glslang/Include/glslang_c_shader_types.h227
-rw-r--r--thirdparty/glslang/glslang/Include/intermediate.h37
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/Constant.cpp14
-rwxr-xr-x[-rw-r--r--]thirdparty/glslang/glslang/MachineIndependent/Initialize.cpp244
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/Intermediate.cpp95
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp8
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp378
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/ParseHelper.h17
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp28
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/Scan.cpp30
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp81
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp27
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp14
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/SymbolTable.h16
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/Versions.cpp46
-rwxr-xr-x[-rw-r--r--]thirdparty/glslang/glslang/MachineIndependent/Versions.h1
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/attribute.cpp4
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/glslang.y146
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp9042
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h601
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/intermOut.cpp20
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/iomapper.cpp37
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/iomapper.h6
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/limits.cpp2
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/linkValidate.cpp89
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/localintermediate.h51
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/parseVersions.h70
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp7
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp115
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp2
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/propagateNoContraction.cpp6
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/reflection.cpp4
-rw-r--r--thirdparty/glslang/glslang/MachineIndependent/reflection.h4
-rw-r--r--thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp105
-rw-r--r--thirdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp9
-rw-r--r--thirdparty/glslang/glslang/OSDependent/Web/glslang.pre.js2
-rw-r--r--thirdparty/glslang/glslang/OSDependent/Windows/ossource.cpp80
-rw-r--r--thirdparty/glslang/glslang/OSDependent/osinclude.h17
-rw-r--r--thirdparty/glslang/glslang/Public/ResourceLimits.h57
-rw-r--r--thirdparty/glslang/glslang/Public/ShaderLang.h9
-rw-r--r--thirdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp542
-rw-r--r--thirdparty/glslang/glslang/build_info.h4
69 files changed, 8159 insertions, 8941 deletions
diff --git a/thirdparty/glslang/OGLCompilersDLL/InitializeDll.cpp b/thirdparty/glslang/OGLCompilersDLL/InitializeDll.cpp
index 9d81f57878..ab3762e011 100644
--- a/thirdparty/glslang/OGLCompilersDLL/InitializeDll.cpp
+++ b/thirdparty/glslang/OGLCompilersDLL/InitializeDll.cpp
@@ -32,134 +32,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#define SH_EXPORTING
-
-#include <cassert>
-
-#include "InitializeDll.h"
-#include "../glslang/Include/InitializeGlobals.h"
-#include "../glslang/Public/ShaderLang.h"
-#include "../glslang/Include/PoolAlloc.h"
-
namespace glslang {
-OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
-
-// Per-process initialization.
-// Needs to be called at least once before parsing, etc. is done.
-// Will also do thread initialization for the calling thread; other
-// threads will need to do that explicitly.
-bool InitProcess()
-{
- glslang::GetGlobalLock();
-
- if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) {
- //
- // Function is re-entrant.
- //
-
- glslang::ReleaseGlobalLock();
- return true;
- }
-
- ThreadInitializeIndex = OS_AllocTLSIndex();
-
- if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "InitProcess(): Failed to allocate TLS area for init flag");
-
- glslang::ReleaseGlobalLock();
- return false;
- }
-
- if (! InitializePoolIndex()) {
- assert(0 && "InitProcess(): Failed to initialize global pool");
-
- glslang::ReleaseGlobalLock();
- return false;
- }
-
- if (! InitThread()) {
- assert(0 && "InitProcess(): Failed to initialize thread");
-
- glslang::ReleaseGlobalLock();
- return false;
- }
-
- glslang::ReleaseGlobalLock();
- return true;
-}
-
-// Per-thread scoped initialization.
-// Must be called at least once by each new thread sharing the
-// symbol tables, etc., needed to parse.
-bool InitThread()
-{
- //
- // This function is re-entrant
- //
- if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "InitThread(): Process hasn't been initalised.");
- return false;
- }
-
- if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr)
- return true;
-
- if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) {
- assert(0 && "InitThread(): Unable to set init flag.");
- return false;
- }
-
- glslang::SetThreadPoolAllocator(nullptr);
-
- return true;
-}
-
-// Not necessary to call this: InitThread() is reentrant, and the need
-// to do per thread tear down has been removed.
-//
-// This is kept, with memory management removed, to satisfy any exiting
-// calls to it that rely on it.
-bool DetachThread()
-{
- bool success = true;
-
- if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
- return true;
-
- //
- // Function is re-entrant and this thread may not have been initialized.
- //
- if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) {
- if (!OS_SetTLSValue(ThreadInitializeIndex, nullptr)) {
- assert(0 && "DetachThread(): Unable to clear init flag.");
- success = false;
- }
- }
-
- return success;
-}
-
-// Not necessary to call this: InitProcess() is reentrant.
-//
-// This is kept, with memory management removed, to satisfy any exiting
-// calls to it that rely on it.
-//
-// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for
-// process-scoped memory tear down.
-bool DetachProcess()
-{
- bool success = true;
-
- if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX)
- return true;
-
- success = DetachThread();
-
- OS_FreeTLSIndex(ThreadInitializeIndex);
- ThreadInitializeIndex = OS_INVALID_TLS_INDEX;
-
- return success;
-}
-
} // end namespace glslang
diff --git a/thirdparty/glslang/OGLCompilersDLL/InitializeDll.h b/thirdparty/glslang/OGLCompilersDLL/InitializeDll.h
index 661cee4d24..b18e2ab3c5 100644
--- a/thirdparty/glslang/OGLCompilersDLL/InitializeDll.h
+++ b/thirdparty/glslang/OGLCompilersDLL/InitializeDll.h
@@ -38,10 +38,10 @@
namespace glslang {
-bool InitProcess();
-bool InitThread();
-bool DetachThread(); // not called from standalone, perhaps other tools rely on parts of it
-bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it
+inline bool InitProcess() { return true; } // DEPRECATED
+inline bool InitThread() { return true; } // DEPRECATED
+inline bool DetachThread() { return true; } // DEPRECATED
+inline bool DetachProcess() { return true; } // DEPRECATED
} // end namespace glslang
diff --git a/thirdparty/glslang/SPIRV/GLSL.ext.KHR.h b/thirdparty/glslang/SPIRV/GLSL.ext.KHR.h
index 45549c1434..121defa16a 100644
--- a/thirdparty/glslang/SPIRV/GLSL.ext.KHR.h
+++ b/thirdparty/glslang/SPIRV/GLSL.ext.KHR.h
@@ -55,5 +55,6 @@ static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subg
static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric";
static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests";
static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch";
+static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix";
#endif // #ifndef GLSLextKHR_H
diff --git a/thirdparty/glslang/SPIRV/GLSL.std.450.h b/thirdparty/glslang/SPIRV/GLSL.std.450.h
index df31092bec..86d3da8065 100644
--- a/thirdparty/glslang/SPIRV/GLSL.std.450.h
+++ b/thirdparty/glslang/SPIRV/GLSL.std.450.h
@@ -13,7 +13,7 @@
**
** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
-** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
+** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
diff --git a/thirdparty/glslang/SPIRV/GlslangToSpv.cpp b/thirdparty/glslang/SPIRV/GlslangToSpv.cpp
index 5926582fa6..a3047cbd48 100644..100755
--- a/thirdparty/glslang/SPIRV/GlslangToSpv.cpp
+++ b/thirdparty/glslang/SPIRV/GlslangToSpv.cpp
@@ -95,26 +95,18 @@ struct OpDecorations {
public:
OpDecorations(spv::Decoration precision, spv::Decoration noContraction, spv::Decoration nonUniform) :
precision(precision)
-#ifndef GLSLANG_WEB
,
noContraction(noContraction),
nonUniform(nonUniform)
-#endif
{ }
spv::Decoration precision;
-#ifdef GLSLANG_WEB
- void addNoContraction(spv::Builder&, spv::Id) const { }
- void addNonUniform(spv::Builder&, spv::Id) const { }
-#else
void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); }
void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); }
protected:
spv::Decoration noContraction;
spv::Decoration nonUniform;
-#endif
-
};
} // namespace
@@ -176,7 +168,7 @@ protected:
glslang::TLayoutPacking, const glslang::TQualifier&);
void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking,
const glslang::TQualifier&, spv::Id, const std::vector<spv::Id>& spvMembers);
- spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim);
+ spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim, bool allowZero = false);
spv::Id accessChainLoad(const glslang::TType& type);
void accessChainStore(const glslang::TType& type, spv::Id rvalue);
void multiTypeStore(const glslang::TType&, spv::Id rValue);
@@ -212,7 +204,7 @@ protected:
glslang::TBasicType typeProxy);
spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand,
glslang::TBasicType typeProxy);
- spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize);
+ spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize, spv::Id destType);
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId,
std::vector<spv::Id>& operands, glslang::TBasicType typeProxy,
@@ -291,10 +283,6 @@ protected:
// Translate glslang profile to SPIR-V source language.
spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile profile)
{
-#ifdef GLSLANG_WEB
- return spv::SourceLanguageESSL;
-#endif
-
switch (source) {
case glslang::EShSourceGlsl:
switch (profile) {
@@ -321,7 +309,6 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShader
case EShLangVertex: return spv::ExecutionModelVertex;
case EShLangFragment: return spv::ExecutionModelFragment;
case EShLangCompute: return spv::ExecutionModelGLCompute;
-#ifndef GLSLANG_WEB
case EShLangTessControl: return spv::ExecutionModelTessellationControl;
case EShLangTessEvaluation: return spv::ExecutionModelTessellationEvaluation;
case EShLangGeometry: return spv::ExecutionModelGeometry;
@@ -333,7 +320,6 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShader
case EShLangCallable: return spv::ExecutionModelCallableKHR;
case EShLangTask: return (isMeshShaderEXT)? spv::ExecutionModelTaskEXT : spv::ExecutionModelTaskNV;
case EShLangMesh: return (isMeshShaderEXT)? spv::ExecutionModelMeshEXT: spv::ExecutionModelMeshNV;
-#endif
default:
assert(0);
return spv::ExecutionModelFragment;
@@ -384,14 +370,12 @@ spv::Decoration TranslateBlockDecoration(const glslang::TStorageQualifier storag
case glslang::EvqVaryingIn: return spv::DecorationBlock;
case glslang::EvqVaryingOut: return spv::DecorationBlock;
case glslang::EvqShared: return spv::DecorationBlock;
-#ifndef GLSLANG_WEB
case glslang::EvqPayload: return spv::DecorationBlock;
case glslang::EvqPayloadIn: return spv::DecorationBlock;
case glslang::EvqHitAttr: return spv::DecorationBlock;
case glslang::EvqCallableData: return spv::DecorationBlock;
case glslang::EvqCallableDataIn: return spv::DecorationBlock;
case glslang::EvqHitObjectAttrNV: return spv::DecorationBlock;
-#endif
default:
assert(0);
break;
@@ -461,7 +445,6 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T
assert(type.getQualifier().layoutPacking == glslang::ElpNone);
}
return spv::DecorationMax;
-#ifndef GLSLANG_WEB
case glslang::EvqPayload:
case glslang::EvqPayloadIn:
case glslang::EvqHitAttr:
@@ -469,7 +452,6 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T
case glslang::EvqCallableDataIn:
case glslang::EvqHitObjectAttrNV:
return spv::DecorationMax;
-#endif
default:
assert(0);
return spv::DecorationMax;
@@ -505,14 +487,12 @@ spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(cons
{
if (qualifier.centroid)
return spv::DecorationCentroid;
-#ifndef GLSLANG_WEB
else if (qualifier.patch)
return spv::DecorationPatch;
else if (qualifier.sample) {
builder.addCapability(spv::CapabilitySampleRateShading);
return spv::DecorationSample;
}
-#endif
return spv::DecorationMax;
}
@@ -529,24 +509,20 @@ spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifie
// If glslang type is noContraction, return SPIR-V NoContraction decoration.
spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qualifier)
{
-#ifndef GLSLANG_WEB
if (qualifier.isNoContraction())
return spv::DecorationNoContraction;
else
-#endif
return spv::DecorationMax;
}
// If glslang type is nonUniform, return SPIR-V NonUniform decoration.
spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glslang::TQualifier& qualifier)
{
-#ifndef GLSLANG_WEB
if (qualifier.isNonUniform()) {
builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5);
builder.addCapability(spv::CapabilityShaderNonUniformEXT);
return spv::DecorationNonUniformEXT;
} else
-#endif
return spv::DecorationMax;
}
@@ -554,13 +530,11 @@ spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glsl
spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(
const spv::Builder::AccessChain::CoherentFlags& coherentFlags)
{
-#ifndef GLSLANG_WEB
if (coherentFlags.isNonUniform()) {
builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5);
builder.addCapability(spv::CapabilityShaderNonUniformEXT);
return spv::DecorationNonUniformEXT;
} else
-#endif
return spv::DecorationMax;
}
@@ -569,7 +543,6 @@ spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess(
{
spv::MemoryAccessMask mask = spv::MemoryAccessMaskNone;
-#ifndef GLSLANG_WEB
if (!glslangIntermediate->usingVulkanMemoryModel() || coherentFlags.isImage)
return mask;
@@ -587,7 +560,6 @@ spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess(
if (mask != spv::MemoryAccessMaskNone) {
builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
}
-#endif
return mask;
}
@@ -597,7 +569,6 @@ spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands(
{
spv::ImageOperandsMask mask = spv::ImageOperandsMaskNone;
-#ifndef GLSLANG_WEB
if (!glslangIntermediate->usingVulkanMemoryModel())
return mask;
@@ -615,7 +586,6 @@ spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands(
if (mask != spv::ImageOperandsMaskNone) {
builder.addCapability(spv::CapabilityVulkanMemoryModelKHR);
}
-#endif
return mask;
}
@@ -623,7 +593,6 @@ spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands(
spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCoherent(const glslang::TType& type)
{
spv::Builder::AccessChain::CoherentFlags flags = {};
-#ifndef GLSLANG_WEB
flags.coherent = type.getQualifier().coherent;
flags.devicecoherent = type.getQualifier().devicecoherent;
flags.queuefamilycoherent = type.getQualifier().queuefamilycoherent;
@@ -638,7 +607,6 @@ spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCohere
flags.anyCoherent() ||
flags.volatil;
flags.isImage = type.getBasicType() == glslang::EbtSampler;
-#endif
flags.nonUniform = type.getQualifier().nonUniform;
return flags;
}
@@ -648,7 +616,6 @@ spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope(
{
spv::Scope scope = spv::ScopeMax;
-#ifndef GLSLANG_WEB
if (coherentFlags.volatil || coherentFlags.coherent) {
// coherent defaults to Device scope in the old model, QueueFamilyKHR scope in the new model
scope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice;
@@ -666,7 +633,6 @@ spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope(
if (glslangIntermediate->usingVulkanMemoryModel() && scope == spv::ScopeDevice) {
builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR);
}
-#endif
return scope;
}
@@ -681,7 +647,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
{
switch (builtIn) {
case glslang::EbvPointSize:
-#ifndef GLSLANG_WEB
// Defer adding the capability until the built-in is actually used.
if (! memberDeclaration) {
switch (glslangIntermediate->getStage()) {
@@ -696,7 +661,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
break;
}
}
-#endif
return spv::BuiltInPointSize;
case glslang::EbvPosition: return spv::BuiltInPosition;
@@ -717,7 +681,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex;
case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId;
-#ifndef GLSLANG_WEB
// These *Distance capabilities logically belong here, but if the member is declared and
// then never used, consumers of SPIR-V prefer the capability not be declared.
// They are now generated when used, rather than here when declared.
@@ -1130,7 +1093,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI
builder.addExtension(spv::E_SPV_ARM_core_builtins);
builder.addCapability(spv::CapabilityCoreBuiltinsARM);
return spv::BuiltInWarpMaxIDARM;
-#endif
default:
return spv::BuiltInMax;
@@ -1142,10 +1104,6 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy
{
assert(type.getBasicType() == glslang::EbtSampler);
-#ifdef GLSLANG_WEB
- return spv::ImageFormatUnknown;
-#endif
-
// Check for capabilities
switch (type.getQualifier().getFormat()) {
case glslang::ElfRg32f:
@@ -1302,12 +1260,10 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T
{
if (type.getBasicType() == glslang::EbtRayQuery || type.getBasicType() == glslang::EbtHitObjectNV)
return spv::StorageClassPrivate;
-#ifndef GLSLANG_WEB
if (type.getQualifier().isSpirvByReference()) {
if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput())
return spv::StorageClassFunction;
}
-#endif
if (type.getQualifier().isPipeInput())
return spv::StorageClassInput;
if (type.getQualifier().isPipeOutput())
@@ -1355,7 +1311,6 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T
case glslang::EvqConstReadOnly: return spv::StorageClassFunction;
case glslang::EvqTemporary: return spv::StorageClassFunction;
case glslang::EvqShared: return spv::StorageClassWorkgroup;
-#ifndef GLSLANG_WEB
case glslang::EvqPayload: return spv::StorageClassRayPayloadKHR;
case glslang::EvqPayloadIn: return spv::StorageClassIncomingRayPayloadKHR;
case glslang::EvqHitAttr: return spv::StorageClassHitAttributeKHR;
@@ -1364,7 +1319,6 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T
case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClassTaskPayloadWorkgroupEXT;
case glslang::EvqHitObjectAttrNV: return spv::StorageClassHitObjectAttributeNV;
case glslang::EvqSpirvStorageClass: return static_cast<spv::StorageClass>(type.getQualifier().spirvStorageClass);
-#endif
default:
assert(0);
break;
@@ -1425,7 +1379,6 @@ void TGlslangToSpvTraverser::TranslateLiterals(const glslang::TVector<const glsl
void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TType& baseType,
const glslang::TType& indexType)
{
-#ifndef GLSLANG_WEB
if (indexType.getQualifier().isNonUniform()) {
// deal with an asserted non-uniform index
// SPV_EXT_descriptor_indexing already added in TranslateNonUniformDecoration
@@ -1461,7 +1414,6 @@ void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TTyp
}
}
}
-#endif
}
// Return whether or not the given type is something that should be tied to a
@@ -1497,7 +1449,6 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa
child.flat = true;
if (parent.centroid)
child.centroid = true;
-#ifndef GLSLANG_WEB
if (parent.nopersp)
child.nopersp = true;
if (parent.explicitInterp)
@@ -1536,7 +1487,6 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa
child.readonly = true;
if (parent.writeonly)
child.writeonly = true;
-#endif
if (parent.nonUniform)
child.nonUniform = true;
}
@@ -1580,7 +1530,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()),
glslangIntermediate->getVersion());
- if (options.generateDebugInfo) {
+ if (options.emitNonSemanticShaderDebugSource)
+ this->options.emitNonSemanticShaderDebugInfo = true;
+ if (options.emitNonSemanticShaderDebugInfo)
+ this->options.generateDebugInfo = true;
+
+ if (this->options.generateDebugInfo) {
builder.setEmitOpLines();
builder.setSourceFile(glslangIntermediate->getSourceFile());
@@ -1607,8 +1562,8 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
builder.addInclude(iItr->first, iItr->second);
}
- builder.setEmitNonSemanticShaderDebugInfo(options.emitNonSemanticShaderDebugInfo);
- builder.setEmitNonSemanticShaderDebugSource(options.emitNonSemanticShaderDebugSource);
+ builder.setEmitNonSemanticShaderDebugInfo(this->options.emitNonSemanticShaderDebugInfo);
+ builder.setEmitNonSemanticShaderDebugSource(this->options.emitNonSemanticShaderDebugSource);
stdBuiltins = builder.import("GLSL.std.450");
@@ -1650,12 +1605,10 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingKHR);
}
-#ifndef GLSLANG_WEB
if (glslangIntermediate->getSubgroupUniformControlFlow()) {
builder.addExtension(spv::E_SPV_KHR_subgroup_uniform_control_flow);
builder.addExecutionMode(shaderEntry, spv::ExecutionModeSubgroupUniformControlFlowKHR);
}
-#endif
unsigned int mode;
switch (glslangIntermediate->getStage()) {
@@ -1712,8 +1665,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
if (glslangIntermediate->isStencilReplacing())
builder.addExecutionMode(shaderEntry, spv::ExecutionModeStencilRefReplacingEXT);
-#ifndef GLSLANG_WEB
-
switch(glslangIntermediate->getDepth()) {
case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break;
case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break;
@@ -1765,7 +1716,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
}
builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock);
}
-#endif
break;
case EShLangCompute:
@@ -1796,7 +1746,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives);
}
break;
-#ifndef GLSLANG_WEB
case EShLangTessEvaluation:
case EShLangTessControl:
builder.addCapability(spv::CapabilityTessellation);
@@ -1936,13 +1885,11 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode);
}
break;
-#endif
default:
break;
}
-#ifndef GLSLANG_WEB
//
// Add SPIR-V requirements (GL_EXT_spirv_intrinsics)
//
@@ -1987,7 +1934,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion,
builder.addExecutionModeId(shaderEntry, static_cast<spv::ExecutionMode>(modeId.first), operandIds);
}
}
-#endif
}
// Finish creating SPV, after the traversal is complete.
@@ -2555,12 +2501,15 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
spv::Id length;
if (node->getOperand()->getType().isCoopMat()) {
- spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
-
spv::Id typeId = convertGlslangToSpvType(node->getOperand()->getType());
assert(builder.isCooperativeMatrixType(typeId));
- length = builder.createCooperativeMatrixLength(typeId);
+ if (node->getOperand()->getType().isCoopMatKHR()) {
+ length = builder.createCooperativeMatrixLengthKHR(typeId);
+ } else {
+ spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
+ length = builder.createCooperativeMatrixLengthNV(typeId);
+ }
} else {
glslang::TIntermTyped* block = node->getOperand()->getAsBinaryNode()->getLeft();
block->traverse(this);
@@ -2646,7 +2595,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
}
};
-#ifndef GLSLANG_WEB
if (node->getOp() == glslang::EOpAtomicCounterIncrement ||
node->getOp() == glslang::EOpAtomicCounterDecrement ||
node->getOp() == glslang::EOpAtomicCounter ||
@@ -2668,9 +2616,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
} else if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) {
// Will be translated to a literal value, make a placeholder here
operand = spv::NoResult;
- } else
-#endif
- {
+ } else {
operand = accessChainLoad(node->getOperand()->getType());
}
@@ -2688,7 +2634,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
result = createUnaryOperation(node->getOp(), decorations, resultType(), operand,
node->getOperand()->getBasicType(), lvalueCoherentFlags);
-#ifndef GLSLANG_WEB
// it could be attached to a SPIR-V intruction
if (!result) {
if (node->getOp() == glslang::EOpSpirvInst) {
@@ -2718,7 +2663,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
return false; // done with this node
}
}
-#endif
if (result) {
if (invertedType) {
@@ -2743,7 +2687,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
spv::Id one = 0;
if (node->getBasicType() == glslang::EbtFloat)
one = builder.makeFloatConstant(1.0F);
-#ifndef GLSLANG_WEB
else if (node->getBasicType() == glslang::EbtDouble)
one = builder.makeDoubleConstant(1.0);
else if (node->getBasicType() == glslang::EbtFloat16)
@@ -2754,7 +2697,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
one = builder.makeInt16Constant(1);
else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64)
one = builder.makeInt64Constant(1);
-#endif
else
one = builder.makeIntConstant(1);
glslang::TOperator op;
@@ -2783,7 +2725,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
return false;
-#ifndef GLSLANG_WEB
case glslang::EOpEmitStreamVertex:
builder.createNoResultOp(spv::OpEmitStreamVertex, operand);
return false;
@@ -2802,7 +2743,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI
case glslang::EOpHitObjectRecordEmptyNV:
builder.createNoResultOp(spv::OpHitObjectRecordEmptyNV, operand);
return false;
-#endif
default:
logger->missingFunctionality("unknown glslang unary");
@@ -2867,15 +2807,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
builder.setAccessChainRValue(result);
return false;
- }
-#ifndef GLSLANG_WEB
- else if (node->getOp() == glslang::EOpImageStore ||
+ } else if (node->getOp() == glslang::EOpImageStore ||
node->getOp() == glslang::EOpImageStoreLod ||
node->getOp() == glslang::EOpImageAtomicStore) {
// "imageStore" is a special case, which has no result
return false;
}
-#endif
glslang::TOperator binOp = glslang::EOpNull;
bool reduceComparison = true;
@@ -3094,7 +3031,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
case glslang::EOpConstructStruct:
case glslang::EOpConstructTextureSampler:
case glslang::EOpConstructReference:
- case glslang::EOpConstructCooperativeMatrix:
+ case glslang::EOpConstructCooperativeMatrixNV:
+ case glslang::EOpConstructCooperativeMatrixKHR:
{
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
std::vector<spv::Id> arguments;
@@ -3111,7 +3049,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
} else
constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments);
} else if (node->getOp() == glslang::EOpConstructStruct ||
- node->getOp() == glslang::EOpConstructCooperativeMatrix ||
+ node->getOp() == glslang::EOpConstructCooperativeMatrixNV ||
+ node->getOp() == glslang::EOpConstructCooperativeMatrixKHR ||
node->getType().isArray()) {
std::vector<spv::Id> constituents;
for (int c = 0; c < (int)arguments.size(); ++c)
@@ -3209,7 +3148,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
atomic = true;
break;
-#ifndef GLSLANG_WEB
case glslang::EOpAtomicStore:
noReturnValue = true;
// fallthrough
@@ -3286,6 +3224,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
break;
case glslang::EOpCooperativeMatrixLoad:
case glslang::EOpCooperativeMatrixStore:
+ case glslang::EOpCooperativeMatrixLoadNV:
+ case glslang::EOpCooperativeMatrixStoreNV:
noReturnValue = true;
break;
case glslang::EOpBeginInvocationInterlock:
@@ -3335,7 +3275,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
builder.addCapability(spv::CapabilityRayQueryPositionFetchKHR);
noReturnValue = true;
break;
-#endif
case glslang::EOpDebugPrintf:
noReturnValue = true;
@@ -3393,7 +3332,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
break;
-
+
case glslang::EOpHitObjectRecordHitNV:
case glslang::EOpHitObjectRecordHitMotionNV:
case glslang::EOpHitObjectRecordHitWithIndexNV:
@@ -3443,7 +3382,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
lvalue = true;
break;
-#ifndef GLSLANG_WEB
case glslang::EOpFrexp:
if (arg == 1)
lvalue = true;
@@ -3497,10 +3435,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
lvalue = true;
break;
case glslang::EOpCooperativeMatrixLoad:
+ case glslang::EOpCooperativeMatrixLoadNV:
if (arg == 0 || arg == 1)
lvalue = true;
break;
case glslang::EOpCooperativeMatrixStore:
+ case glslang::EOpCooperativeMatrixStoreNV:
if (arg == 1)
lvalue = true;
break;
@@ -3517,7 +3457,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
if (arg == 0 || arg == 2)
lvalue = true;
break;
-#endif
default:
break;
}
@@ -3527,9 +3466,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
else
glslangOperands[arg]->traverse(this);
-#ifndef GLSLANG_WEB
if (node->getOp() == glslang::EOpCooperativeMatrixLoad ||
- node->getOp() == glslang::EOpCooperativeMatrixStore) {
+ node->getOp() == glslang::EOpCooperativeMatrixStore ||
+ node->getOp() == glslang::EOpCooperativeMatrixLoadNV ||
+ node->getOp() == glslang::EOpCooperativeMatrixStoreNV) {
if (arg == 1) {
// fold "element" parameter into the access chain
@@ -3550,9 +3490,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
unsigned int alignment = builder.getAccessChain().alignment;
int memoryAccess = TranslateMemoryAccess(coherentFlags);
- if (node->getOp() == glslang::EOpCooperativeMatrixLoad)
+ if (node->getOp() == glslang::EOpCooperativeMatrixLoad ||
+ node->getOp() == glslang::EOpCooperativeMatrixLoadNV)
memoryAccess &= ~spv::MemoryAccessMakePointerAvailableKHRMask;
- if (node->getOp() == glslang::EOpCooperativeMatrixStore)
+ if (node->getOp() == glslang::EOpCooperativeMatrixStore ||
+ node->getOp() == glslang::EOpCooperativeMatrixStoreNV)
memoryAccess &= ~spv::MemoryAccessMakePointerVisibleKHRMask;
if (builder.getStorageClass(builder.getAccessChain().base) ==
spv::StorageClassPhysicalStorageBufferEXT) {
@@ -3573,8 +3515,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
} else if (arg == 2) {
continue;
}
- }
-#endif
+ }
// for l-values, pass the address, for r-values, pass the value
if (lvalue) {
@@ -3617,8 +3558,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
} else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) ||
(arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) ||
(arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR) ||
- (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) ||
- (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) ||
+ (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) ||
+ (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) ||
(arg == 12 && glslangOp == glslang::EOpHitObjectTraceRayMotionNV)) {
const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0;
const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst();
@@ -3637,11 +3578,9 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
visitSymbol(itNode->second);
spv::Id symId = getSymbolId(itNode->second);
operands.push_back(symId);
-#ifndef GLSLANG_WEB
} else if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvLiteral()) {
// Will be translated to a literal value, make a placeholder here
operands.push_back(spv::NoResult);
-#endif
} else {
operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType()));
}
@@ -3649,32 +3588,48 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
}
builder.setLine(node->getLoc().line, node->getLoc().getFilename());
-#ifndef GLSLANG_WEB
- if (node->getOp() == glslang::EOpCooperativeMatrixLoad) {
+ if (node->getOp() == glslang::EOpCooperativeMatrixLoad ||
+ node->getOp() == glslang::EOpCooperativeMatrixLoadNV) {
std::vector<spv::IdImmediate> idImmOps;
idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf
- idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride
- idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor
+ if (node->getOp() == glslang::EOpCooperativeMatrixLoad) {
+ idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout
+ idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride
+ } else {
+ idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride
+ idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor
+ }
idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end());
// get the pointee type
spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0]));
assert(builder.isCooperativeMatrixType(typeId));
// do the op
- spv::Id result = builder.createOp(spv::OpCooperativeMatrixLoadNV, typeId, idImmOps);
+ spv::Id result = node->getOp() == glslang::EOpCooperativeMatrixLoad
+ ? builder.createOp(spv::OpCooperativeMatrixLoadKHR, typeId, idImmOps)
+ : builder.createOp(spv::OpCooperativeMatrixLoadNV, typeId, idImmOps);
// store the result to the pointer (out param 'm')
builder.createStore(result, operands[0]);
result = 0;
- } else if (node->getOp() == glslang::EOpCooperativeMatrixStore) {
+ } else if (node->getOp() == glslang::EOpCooperativeMatrixStore ||
+ node->getOp() == glslang::EOpCooperativeMatrixStoreNV) {
std::vector<spv::IdImmediate> idImmOps;
idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf
idImmOps.push_back(spv::IdImmediate(true, operands[0])); // object
- idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride
- idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor
+ if (node->getOp() == glslang::EOpCooperativeMatrixStore) {
+ idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout
+ idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride
+ } else {
+ idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride
+ idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor
+ }
idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end());
- builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps);
+ if (node->getOp() == glslang::EOpCooperativeMatrixStore)
+ builder.createNoResultOp(spv::OpCooperativeMatrixStoreKHR, idImmOps);
+ else
+ builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps);
result = 0;
} else if (node->getOp() == glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT) {
std::vector<spv::IdImmediate> idImmOps;
@@ -3689,15 +3644,38 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
// store the result to the pointer (out param 'm')
builder.createStore(result, operands[2]);
result = 0;
- } else
-#endif
- if (atomic) {
+ } else if (node->getOp() == glslang::EOpCooperativeMatrixMulAdd) {
+ uint32_t matrixOperands = 0;
+
+ // If the optional operand is present, initialize matrixOperands to that value.
+ if (glslangOperands.size() == 4 && glslangOperands[3]->getAsConstantUnion()) {
+ matrixOperands = glslangOperands[3]->getAsConstantUnion()->getConstArray()[0].getIConst();
+ }
+
+ // Determine Cooperative Matrix Operands bits from the signedness of the types.
+ if (isTypeSignedInt(glslangOperands[0]->getAsTyped()->getBasicType()))
+ matrixOperands |= spv::CooperativeMatrixOperandsMatrixASignedComponentsMask;
+ if (isTypeSignedInt(glslangOperands[1]->getAsTyped()->getBasicType()))
+ matrixOperands |= spv::CooperativeMatrixOperandsMatrixBSignedComponentsMask;
+ if (isTypeSignedInt(glslangOperands[2]->getAsTyped()->getBasicType()))
+ matrixOperands |= spv::CooperativeMatrixOperandsMatrixCSignedComponentsMask;
+ if (isTypeSignedInt(node->getBasicType()))
+ matrixOperands |= spv::CooperativeMatrixOperandsMatrixResultSignedComponentsMask;
+
+ std::vector<spv::IdImmediate> idImmOps;
+ idImmOps.push_back(spv::IdImmediate(true, operands[0]));
+ idImmOps.push_back(spv::IdImmediate(true, operands[1]));
+ idImmOps.push_back(spv::IdImmediate(true, operands[2]));
+ if (matrixOperands != 0)
+ idImmOps.push_back(spv::IdImmediate(false, matrixOperands));
+
+ result = builder.createOp(spv::OpCooperativeMatrixMulAddKHR, resultType(), idImmOps);
+ } else if (atomic) {
// Handle all atomics
glslang::TBasicType typeProxy = (node->getOp() == glslang::EOpAtomicStore)
? node->getSequence()[0]->getAsTyped()->getBasicType() : node->getBasicType();
result = createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy,
lvalueCoherentFlags);
-#ifndef GLSLANG_WEB
} else if (node->getOp() == glslang::EOpSpirvInst) {
const auto& spirvInst = node->getSpirvInstruction();
if (spirvInst.set == "") {
@@ -3724,7 +3702,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt
spirvInst.id, operands);
}
noReturnValue = node->getBasicType() == glslang::EbtVoid;
-#endif
} else if (node->getOp() == glslang::EOpDebugPrintf) {
if (!nonSemanticDebugPrintf) {
nonSemanticDebugPrintf = builder.import("NonSemantic.DebugPrintf");
@@ -4029,10 +4006,8 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T
void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* node)
{
-#ifndef GLSLANG_WEB
if (node->getQualifier().isSpirvLiteral())
return; // Translated to a literal value, skip further processing
-#endif
int nextConst = 0;
spv::Id constant = createSpvConstantFromConstUnionArray(node->getType(), node->getConstArray(), nextConst, false);
@@ -4163,7 +4138,6 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T
builder.clearAccessChain();
break;
-#ifndef GLSLANG_WEB
case glslang::EOpDemote:
builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT);
builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation);
@@ -4175,7 +4149,6 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T
case glslang::EOpIgnoreIntersectionKHR:
builder.makeStatementTerminator(spv::OpIgnoreIntersectionKHR, "post-ignoreIntersectionKHR");
break;
-#endif
default:
assert(0);
@@ -4217,7 +4190,6 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
else
builder.addCapability(spv::CapabilityStorageUniform16);
break;
-#ifndef GLSLANG_WEB
case spv::StorageClassPushConstant:
builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3);
builder.addCapability(spv::CapabilityStoragePushConstant16);
@@ -4227,7 +4199,6 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol*
builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3);
builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
break;
-#endif
default:
if (storageClass == spv::StorageClassWorkgroup &&
node->getType().getBasicType() == glslang::EbtBlock) {
@@ -4286,7 +4257,6 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler)
case glslang::EbtInt: return builder.makeIntType(32);
case glslang::EbtUint: return builder.makeUintType(32);
case glslang::EbtFloat: return builder.makeFloatType(32);
-#ifndef GLSLANG_WEB
case glslang::EbtFloat16:
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch);
builder.addCapability(spv::CapabilityFloat16ImageAMD);
@@ -4299,7 +4269,6 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler)
builder.addExtension(spv::E_SPV_EXT_shader_image_int64);
builder.addCapability(spv::CapabilityInt64ImageEXT);
return builder.makeUintType(64);
-#endif
default:
assert(0);
return builder.makeFloatType(32);
@@ -4375,7 +4344,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
case glslang::EbtFloat:
spvType = builder.makeFloatType(32);
break;
-#ifndef GLSLANG_WEB
case glslang::EbtDouble:
spvType = builder.makeFloatType(64);
break;
@@ -4453,7 +4421,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
}
}
break;
-#endif
case glslang::EbtSampler:
{
const glslang::TSampler& sampler = type.getSampler();
@@ -4501,8 +4468,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
builder.addCapability(spv::CapabilityShaderInvocationReorderNV);
spvType = builder.makeHitObjectNVType();
}
- break;
-#ifndef GLSLANG_WEB
+ break;
case glslang::EbtSpirvType: {
// GL_EXT_spirv_intrinsics
const auto& spirvType = type.getSpirvType();
@@ -4510,50 +4476,56 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
std::vector<spv::IdImmediate> operands;
for (const auto& typeParam : spirvType.typeParams) {
- // Constant expression
- if (typeParam.constant->isLiteral()) {
- if (typeParam.constant->getBasicType() == glslang::EbtFloat) {
- float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst());
- unsigned literal;
- static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)");
- memcpy(&literal, &floatValue, sizeof(literal));
- operands.push_back({false, literal});
- } else if (typeParam.constant->getBasicType() == glslang::EbtInt) {
- unsigned literal = typeParam.constant->getConstArray()[0].getIConst();
- operands.push_back({false, literal});
- } else if (typeParam.constant->getBasicType() == glslang::EbtUint) {
- unsigned literal = typeParam.constant->getConstArray()[0].getUConst();
- operands.push_back({false, literal});
- } else if (typeParam.constant->getBasicType() == glslang::EbtBool) {
- unsigned literal = typeParam.constant->getConstArray()[0].getBConst();
- operands.push_back({false, literal});
- } else if (typeParam.constant->getBasicType() == glslang::EbtString) {
- auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str();
- unsigned literal = 0;
- char* literalPtr = reinterpret_cast<char*>(&literal);
- unsigned charCount = 0;
- char ch = 0;
- do {
- ch = *(str++);
- *(literalPtr++) = ch;
- ++charCount;
- if (charCount == 4) {
+ if (typeParam.constant != nullptr) {
+ // Constant expression
+ if (typeParam.constant->isLiteral()) {
+ if (typeParam.constant->getBasicType() == glslang::EbtFloat) {
+ float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst());
+ unsigned literal;
+ static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)");
+ memcpy(&literal, &floatValue, sizeof(literal));
+ operands.push_back({false, literal});
+ } else if (typeParam.constant->getBasicType() == glslang::EbtInt) {
+ unsigned literal = typeParam.constant->getConstArray()[0].getIConst();
+ operands.push_back({false, literal});
+ } else if (typeParam.constant->getBasicType() == glslang::EbtUint) {
+ unsigned literal = typeParam.constant->getConstArray()[0].getUConst();
+ operands.push_back({false, literal});
+ } else if (typeParam.constant->getBasicType() == glslang::EbtBool) {
+ unsigned literal = typeParam.constant->getConstArray()[0].getBConst();
+ operands.push_back({false, literal});
+ } else if (typeParam.constant->getBasicType() == glslang::EbtString) {
+ auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str();
+ unsigned literal = 0;
+ char* literalPtr = reinterpret_cast<char*>(&literal);
+ unsigned charCount = 0;
+ char ch = 0;
+ do {
+ ch = *(str++);
+ *(literalPtr++) = ch;
+ ++charCount;
+ if (charCount == 4) {
+ operands.push_back({false, literal});
+ literalPtr = reinterpret_cast<char*>(&literal);
+ charCount = 0;
+ }
+ } while (ch != 0);
+
+ // Partial literal is padded with 0
+ if (charCount > 0) {
+ for (; charCount < 4; ++charCount)
+ *(literalPtr++) = 0;
operands.push_back({false, literal});
- literalPtr = reinterpret_cast<char*>(&literal);
- charCount = 0;
}
- } while (ch != 0);
-
- // Partial literal is padded with 0
- if (charCount > 0) {
- for (; charCount < 4; ++charCount)
- *(literalPtr++) = 0;
- operands.push_back({false, literal});
- }
+ } else
+ assert(0); // Unexpected type
} else
- assert(0); // Unexpected type
- } else
- operands.push_back({true, createSpvConstant(*typeParam.constant)});
+ operands.push_back({true, createSpvConstant(*typeParam.constant)});
+ } else {
+ // Type specifier
+ assert(typeParam.type != nullptr);
+ operands.push_back({true, convertGlslangToSpvType(*typeParam.type)});
+ }
}
assert(spirvInst.set == ""); // Currently, couldn't be extended instructions.
@@ -4561,7 +4533,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
break;
}
-#endif
default:
assert(0);
break;
@@ -4575,9 +4546,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
spvType = builder.makeVectorType(spvType, type.getVectorSize());
}
- if (type.isCoopMat()) {
+ if (type.isCoopMatNV()) {
builder.addCapability(spv::CapabilityCooperativeMatrixNV);
builder.addExtension(spv::E_SPV_NV_cooperative_matrix);
+
if (type.getBasicType() == glslang::EbtFloat16)
builder.addCapability(spv::CapabilityFloat16);
if (type.getBasicType() == glslang::EbtUint8 ||
@@ -4585,11 +4557,29 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
builder.addCapability(spv::CapabilityInt8);
}
- spv::Id scope = makeArraySizeId(*type.getTypeParameters(), 1);
- spv::Id rows = makeArraySizeId(*type.getTypeParameters(), 2);
- spv::Id cols = makeArraySizeId(*type.getTypeParameters(), 3);
+ spv::Id scope = makeArraySizeId(*type.getTypeParameters()->arraySizes, 1);
+ spv::Id rows = makeArraySizeId(*type.getTypeParameters()->arraySizes, 2);
+ spv::Id cols = makeArraySizeId(*type.getTypeParameters()->arraySizes, 3);
- spvType = builder.makeCooperativeMatrixType(spvType, scope, rows, cols);
+ spvType = builder.makeCooperativeMatrixTypeNV(spvType, scope, rows, cols);
+ }
+
+ if (type.isCoopMatKHR()) {
+ builder.addCapability(spv::CapabilityCooperativeMatrixKHR);
+ builder.addExtension(spv::E_SPV_KHR_cooperative_matrix);
+
+ if (type.getBasicType() == glslang::EbtFloat16)
+ builder.addCapability(spv::CapabilityFloat16);
+ if (type.getBasicType() == glslang::EbtUint8 || type.getBasicType() == glslang::EbtInt8) {
+ builder.addCapability(spv::CapabilityInt8);
+ }
+
+ spv::Id scope = makeArraySizeId(*type.getTypeParameters()->arraySizes, 0);
+ spv::Id rows = makeArraySizeId(*type.getTypeParameters()->arraySizes, 1);
+ spv::Id cols = makeArraySizeId(*type.getTypeParameters()->arraySizes, 2);
+ spv::Id use = builder.makeUintConstant(type.getCoopMatKHRuse());
+
+ spvType = builder.makeCooperativeMatrixTypeKHR(spvType, scope, rows, cols, use);
}
if (type.isArray()) {
@@ -4630,12 +4620,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
if (type.isSizedArray())
spvType = builder.makeArrayType(spvType, makeArraySizeId(*type.getArraySizes(), 0), stride);
else {
-#ifndef GLSLANG_WEB
if (!lastBufferBlockMember) {
builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5);
builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT);
}
-#endif
spvType = builder.makeRuntimeArray(spvType);
}
if (stride > 0)
@@ -4651,7 +4639,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
//
bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
{
-#ifndef GLSLANG_WEB
auto& extensions = glslangIntermediate->getRequestedExtensions();
if (member.getFieldName() == "gl_SecondaryViewportMaskNV" &&
@@ -4661,6 +4648,12 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
extensions.find("GL_NV_stereo_view_rendering") == extensions.end())
return true;
+ if (glslangIntermediate->getStage() == EShLangMesh) {
+ if (member.getFieldName() == "gl_PrimitiveShadingRateEXT" &&
+ extensions.find("GL_EXT_fragment_shading_rate") == extensions.end())
+ return true;
+ }
+
if (glslangIntermediate->getStage() != EShLangMesh) {
if (member.getFieldName() == "gl_ViewportMask" &&
extensions.find("GL_NV_viewport_array2") == extensions.end())
@@ -4672,7 +4665,6 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member)
extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end())
return true;
}
-#endif
return false;
};
@@ -4803,14 +4795,11 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
glslangIntermediate->getSource() == glslang::EShSourceHlsl) {
builder.addMemberDecoration(spvType, member, TranslateInterpolationDecoration(memberQualifier));
builder.addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(memberQualifier));
-#ifndef GLSLANG_WEB
addMeshNVDecoration(spvType, member, memberQualifier);
-#endif
}
}
builder.addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier));
-#ifndef GLSLANG_WEB
if (type.getBasicType() == glslang::EbtBlock &&
qualifier.storage == glslang::EvqBuffer) {
// Add memory decorations only to top-level members of shader storage block
@@ -4820,8 +4809,6 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
builder.addMemberDecoration(spvType, member, memory[i]);
}
-#endif
-
// Location assignment was already completed correctly by the front end,
// just track whether a member needs to be decorated.
// Ignore member locations if the container is an array, as that's
@@ -4854,7 +4841,6 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
if (builtIn != spv::BuiltInMax)
builder.addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn);
-#ifndef GLSLANG_WEB
// nonuniform
builder.addMemberDecoration(spvType, member, TranslateNonUniformDecoration(glslangMember.getQualifier()));
@@ -4916,7 +4902,6 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
builder.addDecoration(spvType, static_cast<spv::Decoration>(decorateString.first), strings);
}
}
-#endif
}
// Decorate the structure
@@ -4940,7 +4925,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type,
// This is not quite trivial, because of specialization constants.
// Sometimes, a raw constant is turned into an Id, and sometimes
// a specialization constant expression is.
-spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arraySizes, int dim)
+spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arraySizes, int dim, bool allowZero)
{
// First, see if this is sized with a node, meaning a specialization constant:
glslang::TIntermTyped* specNode = arraySizes.getDimNode(dim);
@@ -4954,7 +4939,10 @@ spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arra
// Otherwise, need a compile-time (front end) size, get it:
int size = arraySizes.getDimSize(dim);
- assert(size > 0);
+
+ if (!allowZero)
+ assert(size > 0);
+
return builder.makeUintConstant(size);
}
@@ -5259,7 +5247,6 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList&
switch (glslangBuiltIn)
{
case glslang::EbvPointSize:
-#ifndef GLSLANG_WEB
case glslang::EbvClipDistance:
case glslang::EbvCullDistance:
case glslang::EbvViewportMaskNV:
@@ -5275,7 +5262,6 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList&
case glslang::EbvLayerPerViewNV:
case glslang::EbvMeshViewCountNV:
case glslang::EbvMeshViewIndicesNV:
-#endif
// Generate the associated capability. Delegate to TranslateBuiltInDecoration.
// Alternately, we could just call this for any glslang built-in, since the
// capability already guards against duplicates.
@@ -5315,9 +5301,7 @@ bool TGlslangToSpvTraverser::originalParam(glslang::TStorageQualifier qualifier,
if (glslangIntermediate->getSource() == glslang::EShSourceHlsl)
return paramType.getBasicType() == glslang::EbtBlock;
return (paramType.containsOpaque() && !glslangIntermediate->getBindlessMode()) || // sampler, etc.
-#ifndef GLSLANG_WEB
paramType.getQualifier().isSpirvByReference() || // spirv_by_reference
-#endif
(paramType.getBasicType() == glslang::EbtBlock && qualifier == glslang::EvqBuffer); // SSBO
}
@@ -5501,23 +5485,18 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate&
glslang::TSampler sampler = {};
bool cubeCompare = false;
-#ifndef GLSLANG_WEB
bool f16ShadowCompare = false;
-#endif
if (node.isTexture() || node.isImage()) {
sampler = glslangArguments[0]->getAsTyped()->getType().getSampler();
cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow;
-#ifndef GLSLANG_WEB
f16ShadowCompare = sampler.shadow &&
glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16;
-#endif
}
for (int i = 0; i < (int)glslangArguments.size(); ++i) {
builder.clearAccessChain();
glslangArguments[i]->traverse(this);
-#ifndef GLSLANG_WEB
// Special case l-value operands
bool lvalue = false;
switch (node.getOp()) {
@@ -5628,7 +5607,6 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate&
builder.addDecoration(lvalue_id, TranslateNonUniformDecoration(lvalueCoherentFlags));
lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType());
} else
-#endif
arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType()));
}
}
@@ -5653,13 +5631,9 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType()
: node->getAsUnaryNode()->getOperand()->getAsTyped()->getType();
const glslang::TSampler sampler = imageType.getSampler();
-#ifdef GLSLANG_WEB
- const bool f16ShadowCompare = false;
-#else
bool f16ShadowCompare = (sampler.shadow && node->getAsAggregate())
? node->getAsAggregate()->getSequence()[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16
: false;
-#endif
const auto signExtensionMask = [&]() {
if (builder.getSpvVersion() >= spv::Spv_1_4) {
@@ -5705,7 +5679,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
return builder.createTextureQueryCall(spv::OpImageQuerySizeLod, params, isUnsignedResult);
} else
return builder.createTextureQueryCall(spv::OpImageQuerySize, params, isUnsignedResult);
-#ifndef GLSLANG_WEB
case glslang::EOpImageQuerySamples:
case glslang::EOpTextureQuerySamples:
return builder.createTextureQueryCall(spv::OpImageQuerySamples, params, isUnsignedResult);
@@ -5716,7 +5689,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
return builder.createTextureQueryCall(spv::OpImageQueryLevels, params, isUnsignedResult);
case glslang::EOpSparseTexelsResident:
return builder.createUnaryOp(spv::OpImageSparseTexelsResident, builder.makeBoolType(), arguments[0]);
-#endif
default:
assert(0);
break;
@@ -5958,7 +5930,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
}
}
-#ifndef GLSLANG_WEB
// Check for fragment mask functions other than queries
if (cracked.fragMask) {
assert(sampler.ms);
@@ -5992,7 +5963,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
builder.addCapability(spv::CapabilityFragmentMaskAMD);
return builder.createOp(fragMaskOp, resultType(), operands);
}
-#endif
// Check for texture functions other than queries
bool sparse = node->isSparseTexture();
@@ -6026,7 +5996,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
bias = true;
}
-#ifndef GLSLANG_WEB
if (cracked.gather) {
const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions();
if (bias || cracked.lod ||
@@ -6035,7 +6004,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
builder.addCapability(spv::CapabilityImageGatherBiasLodAMD);
}
}
-#endif
// set the rest of the arguments
@@ -6095,7 +6063,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
++extraArgs;
}
-#ifndef GLSLANG_WEB
// lod clamp
if (cracked.lodClamp) {
params.lodClamp = arguments[2 + extraArgs];
@@ -6124,14 +6091,13 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
resultStruct = arguments[4 + extraArgs];
extraArgs += 3;
}
-#endif
+
// bias
if (bias) {
params.bias = arguments[2 + extraArgs];
++extraArgs;
}
-#ifndef GLSLANG_WEB
if (imageFootprint) {
builder.addExtension(spv::E_SPV_NV_shader_image_footprint);
builder.addCapability(spv::CapabilityImageFootprintNV);
@@ -6189,7 +6155,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
}
return builder.createCompositeExtract(res, resultType(), 0);
}
-#endif
// projective component (might not to move)
// GLSL: "The texture coordinates consumed from P, not including the last component of P,
@@ -6214,7 +6179,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
}
}
-#ifndef GLSLANG_WEB
// nonprivate
if (imageType.getQualifier().nonprivate) {
params.nonprivate = true;
@@ -6224,7 +6188,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO
if (imageType.getQualifier().volatil) {
params.volatil = true;
}
-#endif
std::vector<spv::Id> result( 1,
builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather,
@@ -6878,7 +6841,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe
case glslang::EOpUnpackHalf2x16:
libCall = spv::GLSLstd450UnpackHalf2x16;
break;
-#ifndef GLSLANG_WEB
case glslang::EOpPackSnorm4x8:
libCall = spv::GLSLstd450PackSnorm4x8;
break;
@@ -6897,7 +6859,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe
case glslang::EOpUnpackDouble2x32:
libCall = spv::GLSLstd450UnpackDouble2x32;
break;
-#endif
case glslang::EOpPackInt2x32:
case glslang::EOpUnpackInt2x32:
@@ -6952,7 +6913,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe
libCall = spv::GLSLstd450SSign;
break;
-#ifndef GLSLANG_WEB
case glslang::EOpDPdxFine:
unaryOp = spv::OpDPdxFine;
break;
@@ -7200,8 +7160,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe
case glslang::EOpHitObjectGetShaderRecordBufferHandleNV:
unaryOp = spv::OpHitObjectGetShaderRecordBufferHandleNV;
break;
-
-#endif
case glslang::EOpCopyObject:
unaryOp = spv::OpCopyObject;
@@ -7276,7 +7234,9 @@ spv::Id TGlslangToSpvTraverser::createUnaryMatrixOperation(spv::Op op, OpDecorat
// For converting integers where both the bitwidth and the signedness could
// change, but only do the width change here. The caller is still responsible
// for the signedness conversion.
-spv::Id TGlslangToSpvTraverser::createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize)
+// destType is the final type that will be converted to, but this function
+// may only be doing part of that conversion.
+spv::Id TGlslangToSpvTraverser::createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize, spv::Id destType)
{
// Get the result type width, based on the type to convert to.
int width = 32;
@@ -7347,6 +7307,11 @@ spv::Id TGlslangToSpvTraverser::createIntWidthConversion(glslang::TOperator op,
if (vectorSize > 0)
type = builder.makeVectorType(type, vectorSize);
+ else if (builder.getOpCode(destType) == spv::OpTypeCooperativeMatrixKHR ||
+ builder.getOpCode(destType) == spv::OpTypeCooperativeMatrixNV) {
+
+ type = builder.makeCooperativeMatrixTypeWithSameShape(type, destType);
+ }
return builder.createUnaryOp(convOp, type, operand);
}
@@ -7378,13 +7343,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
case glslang::EOpConvBoolToInt:
case glslang::EOpConvBoolToInt64:
-#ifndef GLSLANG_WEB
if (op == glslang::EOpConvBoolToInt64) {
zero = builder.makeInt64Constant(0);
one = builder.makeInt64Constant(1);
- } else
-#endif
- {
+ } else {
zero = builder.makeIntConstant(0);
one = builder.makeIntConstant(1);
}
@@ -7394,13 +7356,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
case glslang::EOpConvBoolToUint:
case glslang::EOpConvBoolToUint64:
-#ifndef GLSLANG_WEB
if (op == glslang::EOpConvBoolToUint64) {
zero = builder.makeUint64Constant(0);
one = builder.makeUint64Constant(1);
- } else
-#endif
- {
+ } else {
zero = builder.makeUintConstant(0);
one = builder.makeUintConstant(1);
}
@@ -7463,16 +7422,13 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
case glslang::EOpConvInt64ToUint64:
if (builder.isInSpecConstCodeGenMode()) {
// Build zero scalar or vector for OpIAdd.
-#ifndef GLSLANG_WEB
if(op == glslang::EOpConvUint8ToInt8 || op == glslang::EOpConvInt8ToUint8) {
zero = builder.makeUint8Constant(0);
} else if (op == glslang::EOpConvUint16ToInt16 || op == glslang::EOpConvInt16ToUint16) {
zero = builder.makeUint16Constant(0);
} else if (op == glslang::EOpConvUint64ToInt64 || op == glslang::EOpConvInt64ToUint64) {
zero = builder.makeUint64Constant(0);
- } else
-#endif
- {
+ } else {
zero = builder.makeUintConstant(0);
}
zero = makeSmearedConstant(zero, vectorSize);
@@ -7499,7 +7455,6 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
convOp = spv::OpConvertFToU;
break;
-#ifndef GLSLANG_WEB
case glslang::EOpConvInt8ToBool:
case glslang::EOpConvUint8ToBool:
zero = builder.makeUint8Constant(0);
@@ -7619,7 +7574,7 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
case glslang::EOpConvUint64ToInt16:
case glslang::EOpConvUint64ToInt:
// OpSConvert/OpUConvert + OpBitCast
- operand = createIntWidthConversion(op, operand, vectorSize);
+ operand = createIntWidthConversion(op, operand, vectorSize, destType);
if (builder.isInSpecConstCodeGenMode()) {
// Build zero scalar or vector for OpIAdd.
@@ -7678,7 +7633,6 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora
case glslang::EOpConvUvec2ToPtr:
convOp = spv::OpBitcast;
break;
-#endif
default:
break;
@@ -8670,7 +8624,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
}
break;
-#ifndef GLSLANG_WEB
case glslang::EOpInterpolateAtSample:
if (typeProxy == glslang::EbtFloat16)
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
@@ -8952,7 +8905,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
case glslang::EOpSetMeshOutputsEXT:
builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands);
return 0;
- case glslang::EOpCooperativeMatrixMulAdd:
+ case glslang::EOpCooperativeMatrixMulAddNV:
opCode = spv::OpCooperativeMatrixMulAddNV;
break;
case glslang::EOpHitObjectTraceRayNV:
@@ -9068,10 +9021,9 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
builder.createNoResultOp(spv::OpReorderThreadWithHitObjectNV, operands);
}
return 0;
-
+
}
break;
-#endif // GLSLANG_WEB
default:
return 0;
}
@@ -9115,7 +9067,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
}
}
-#ifndef GLSLANG_WEB
// Decode the return types that were structures
switch (op) {
case glslang::EOpAddCarry:
@@ -9145,7 +9096,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
default:
break;
}
-#endif
return builder.setPrecision(id, precision);
}
@@ -9190,7 +9140,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsAllMemory |
spv::MemorySemanticsAcquireReleaseMask);
return 0;
-#ifndef GLSLANG_WEB
case glslang::EOpMemoryBarrierAtomicCounter:
builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask |
spv::MemorySemanticsAcquireReleaseMask);
@@ -9309,7 +9258,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv:
builder.addCapability(spv::CapabilityShaderClockKHR);
return builder.createOp(spv::OpReadClockKHR, typeId, args);
}
-#endif
case glslang::EOpStencilAttachmentReadEXT:
case glslang::EOpDepthAttachmentReadEXT:
{
@@ -9389,13 +9337,11 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType()));
builder.addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier()));
builder.addDecoration(id, TranslateAuxiliaryStorageDecoration(symbol->getType().getQualifier()));
-#ifndef GLSLANG_WEB
addMeshNVDecoration(id, /*member*/ -1, symbol->getType().getQualifier());
if (symbol->getQualifier().hasComponent())
builder.addDecoration(id, spv::DecorationComponent, symbol->getQualifier().layoutComponent);
if (symbol->getQualifier().hasIndex())
builder.addDecoration(id, spv::DecorationIndex, symbol->getQualifier().layoutIndex);
-#endif
if (symbol->getType().getQualifier().hasSpecConstantId())
builder.addDecoration(id, spv::DecorationSpecId, symbol->getType().getQualifier().layoutSpecConstantId);
// atomic counters use this:
@@ -9465,7 +9411,6 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
builder.addDecoration(id, spv::DecorationVolatile);
}
-#ifndef GLSLANG_WEB
// Subgroup builtins which have input storage class are volatile for ray tracing stages.
if (symbol->getType().isImage() || symbol->getQualifier().isPipeInput()) {
std::vector<spv::Decoration> memory;
@@ -9572,12 +9517,10 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol
builder.addDecoration(id, static_cast<spv::Decoration>(decorateString.first), strings);
}
}
-#endif
return id;
}
-#ifndef GLSLANG_WEB
// add per-primitive, per-view. per-task decorations to a struct member (member >= 0) or an object
void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier& qualifier)
{
@@ -9624,7 +9567,6 @@ void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const g
builder.addDecoration(id, spv::DecorationPerTaskNV);
}
}
-#endif
// Make a full tree of instructions to build a SPIR-V specialization constant,
// or regular constant if possible.
@@ -9752,7 +9694,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla
case glslang::EbtBool:
spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst()));
break;
-#ifndef GLSLANG_WEB
case glslang::EbtInt8:
builder.addCapability(spv::CapabilityInt8);
spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const()));
@@ -9782,7 +9723,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla
builder.addCapability(spv::CapabilityFloat16);
spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst()));
break;
-#endif
default:
assert(0);
break;
@@ -9806,7 +9746,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla
case glslang::EbtBool:
scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant);
break;
-#ifndef GLSLANG_WEB
case glslang::EbtInt8:
builder.addCapability(spv::CapabilityInt8);
scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant);
@@ -9840,7 +9779,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla
scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant);
scalar = builder.createUnaryOp(spv::OpBitcast, typeId, scalar);
break;
-#endif
case glslang::EbtString:
scalar = builder.getStringId(consts[nextConst].getSConst()->c_str());
break;
@@ -9988,7 +9926,6 @@ spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslan
return builder.createOp(spv::OpPhi, boolTypeId, phiOperands);
}
-#ifndef GLSLANG_WEB
// Return type Id of the imported set of extended instructions corresponds to the name.
// Import this set if it has not been imported yet.
spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name)
@@ -10002,7 +9939,6 @@ spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name)
return extBuiltins;
}
}
-#endif
}; // end anonymous namespace
@@ -10036,27 +9972,31 @@ int GetSpirvGeneratorVersion()
}
// Write SPIR-V out to a binary file
-void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName)
+bool OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName)
{
std::ofstream out;
out.open(baseName, std::ios::binary | std::ios::out);
- if (out.fail())
+ if (out.fail()) {
printf("ERROR: Failed to open file: %s\n", baseName);
+ return false;
+ }
for (int i = 0; i < (int)spirv.size(); ++i) {
unsigned int word = spirv[i];
out.write((const char*)&word, 4);
}
out.close();
+ return true;
}
// Write SPIR-V out to a text file with 32-bit hexadecimal words
-void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName)
+bool OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName)
{
-#if !defined(GLSLANG_WEB)
std::ofstream out;
out.open(baseName, std::ios::binary | std::ios::out);
- if (out.fail())
+ if (out.fail()) {
printf("ERROR: Failed to open file: %s\n", baseName);
+ return false;
+ }
out << "\t// " <<
GetSpirvGeneratorVersion() <<
GLSLANG_VERSION_MAJOR << "." << GLSLANG_VERSION_MINOR << "." << GLSLANG_VERSION_PATCH <<
@@ -10082,7 +10022,7 @@ void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName,
out << std::endl;
}
out.close();
-#endif
+ return true;
}
//
diff --git a/thirdparty/glslang/SPIRV/GlslangToSpv.h b/thirdparty/glslang/SPIRV/GlslangToSpv.h
index 3907be43b7..b9736d7c98 100644
--- a/thirdparty/glslang/SPIRV/GlslangToSpv.h
+++ b/thirdparty/glslang/SPIRV/GlslangToSpv.h
@@ -55,7 +55,7 @@ void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsign
SpvOptions* options = nullptr);
void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector<unsigned int>& spirv,
spv::SpvBuildLogger* logger, SpvOptions* options = nullptr);
-void OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
-void OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
+bool OutputSpvBin(const std::vector<unsigned int>& spirv, const char* baseName);
+bool OutputSpvHex(const std::vector<unsigned int>& spirv, const char* baseName, const char* varName);
}
diff --git a/thirdparty/glslang/SPIRV/Logger.cpp b/thirdparty/glslang/SPIRV/Logger.cpp
index cdc8469c44..48bd4e3ade 100644
--- a/thirdparty/glslang/SPIRV/Logger.cpp
+++ b/thirdparty/glslang/SPIRV/Logger.cpp
@@ -32,8 +32,6 @@
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE.
-#ifndef GLSLANG_WEB
-
#include "Logger.h"
#include <algorithm>
@@ -68,5 +66,3 @@ std::string SpvBuildLogger::getAllMessages() const {
}
} // end spv namespace
-
-#endif
diff --git a/thirdparty/glslang/SPIRV/Logger.h b/thirdparty/glslang/SPIRV/Logger.h
index 411367c030..2e4ddaf517 100644
--- a/thirdparty/glslang/SPIRV/Logger.h
+++ b/thirdparty/glslang/SPIRV/Logger.h
@@ -46,14 +46,6 @@ class SpvBuildLogger {
public:
SpvBuildLogger() {}
-#ifdef GLSLANG_WEB
- void tbdFunctionality(const std::string& f) { }
- void missingFunctionality(const std::string& f) { }
- void warning(const std::string& w) { }
- void error(const std::string& e) { errors.push_back(e); }
- std::string getAllMessages() { return ""; }
-#else
-
// Registers a TBD functionality.
void tbdFunctionality(const std::string& f);
// Registers a missing functionality.
@@ -67,7 +59,6 @@ public:
// Returns all messages accumulated in the order of:
// TBD functionalities, missing functionalities, warnings, errors.
std::string getAllMessages() const;
-#endif
private:
SpvBuildLogger(const SpvBuildLogger&);
diff --git a/thirdparty/glslang/SPIRV/NonSemanticDebugPrintf.h b/thirdparty/glslang/SPIRV/NonSemanticDebugPrintf.h
index 83796d75e5..3ca7247f2b 100644
--- a/thirdparty/glslang/SPIRV/NonSemanticDebugPrintf.h
+++ b/thirdparty/glslang/SPIRV/NonSemanticDebugPrintf.h
@@ -1,5 +1,5 @@
// Copyright (c) 2020 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"), to deal in the Materials without restriction, including
@@ -7,15 +7,15 @@
// distribute, sublicense, and/or sell copies of the Materials, and to
// permit persons to whom the Materials are furnished to do so, subject to
// the following conditions:
-//
+//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Materials.
-//
+//
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
// KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
// SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
// https://www.khronos.org/registry/
-//
+//
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
@@ -23,7 +23,7 @@
// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
-//
+//
#ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
#define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_
diff --git a/thirdparty/glslang/SPIRV/NonSemanticShaderDebugInfo100.h b/thirdparty/glslang/SPIRV/NonSemanticShaderDebugInfo100.h
index c52f32f809..f74abcb646 100644
--- a/thirdparty/glslang/SPIRV/NonSemanticShaderDebugInfo100.h
+++ b/thirdparty/glslang/SPIRV/NonSemanticShaderDebugInfo100.h
@@ -1,19 +1,19 @@
// Copyright (c) 2018 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"),
// to deal in the Materials without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Materials, and to permit persons to whom the
// Materials are furnished to do so, subject to the following conditions:
-//
+//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Materials.
-//
+//
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
-// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
-//
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
+//
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
diff --git a/thirdparty/glslang/SPIRV/SPVRemapper.cpp b/thirdparty/glslang/SPIRV/SPVRemapper.cpp
index 4b2c4395ed..f8f50a9516 100644
--- a/thirdparty/glslang/SPIRV/SPVRemapper.cpp
+++ b/thirdparty/glslang/SPIRV/SPVRemapper.cpp
@@ -680,6 +680,7 @@ namespace spv {
case spv::OperandKernelEnqueueFlags:
case spv::OperandKernelProfilingInfo:
case spv::OperandCapability:
+ case spv::OperandCooperativeMatrixOperands:
++word;
break;
diff --git a/thirdparty/glslang/SPIRV/SpvBuilder.cpp b/thirdparty/glslang/SPIRV/SpvBuilder.cpp
index 9d07334258..57e03d5d6b 100644
--- a/thirdparty/glslang/SPIRV/SpvBuilder.cpp
+++ b/thirdparty/glslang/SPIRV/SpvBuilder.cpp
@@ -46,10 +46,7 @@
#include <algorithm>
#include "SpvBuilder.h"
-
-#ifndef GLSLANG_WEB
#include "hex_float.h"
-#endif
#ifndef _WIN32
#include <cstdio>
@@ -283,11 +280,6 @@ Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardP
Id Builder::makeIntegerType(int width, bool hasSign)
{
-#ifdef GLSLANG_WEB
- assert(width == 32);
- width = 32;
-#endif
-
// try to find it
Instruction* type;
for (int t = 0; t < (int)groupedTypes[OpTypeInt].size(); ++t) {
@@ -329,11 +321,6 @@ Id Builder::makeIntegerType(int width, bool hasSign)
Id Builder::makeFloatType(int width)
{
-#ifdef GLSLANG_WEB
- assert(width == 32);
- width = 32;
-#endif
-
// try to find it
Instruction* type;
for (int t = 0; t < (int)groupedTypes[OpTypeFloat].size(); ++t) {
@@ -481,15 +468,41 @@ Id Builder::makeMatrixType(Id component, int cols, int rows)
return type->getResultId();
}
-Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols)
+Id Builder::makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use)
{
// try to find it
Instruction* type;
- for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixNV].size(); ++t) {
- type = groupedTypes[OpTypeCooperativeMatrixNV][t];
+ for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixKHR].size(); ++t) {
+ type = groupedTypes[OpTypeCooperativeMatrixKHR][t];
if (type->getIdOperand(0) == component &&
type->getIdOperand(1) == scope &&
type->getIdOperand(2) == rows &&
+ type->getIdOperand(3) == cols &&
+ type->getIdOperand(4) == use)
+ return type->getResultId();
+ }
+
+ // not found, make it
+ type = new Instruction(getUniqueId(), NoType, OpTypeCooperativeMatrixKHR);
+ type->addIdOperand(component);
+ type->addIdOperand(scope);
+ type->addIdOperand(rows);
+ type->addIdOperand(cols);
+ type->addIdOperand(use);
+ groupedTypes[OpTypeCooperativeMatrixKHR].push_back(type);
+ constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
+ module.mapInstruction(type);
+
+ return type->getResultId();
+}
+
+Id Builder::makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols)
+{
+ // try to find it
+ Instruction* type;
+ for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixNV].size(); ++t) {
+ type = groupedTypes[OpTypeCooperativeMatrixNV][t];
+ if (type->getIdOperand(0) == component && type->getIdOperand(1) == scope && type->getIdOperand(2) == rows &&
type->getIdOperand(3) == cols)
return type->getResultId();
}
@@ -507,6 +520,17 @@ Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols)
return type->getResultId();
}
+Id Builder::makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType)
+{
+ Instruction* instr = module.getInstruction(otherType);
+ if (instr->getOpCode() == OpTypeCooperativeMatrixNV) {
+ return makeCooperativeMatrixTypeNV(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3));
+ } else {
+ assert(instr->getOpCode() == OpTypeCooperativeMatrixKHR);
+ return makeCooperativeMatrixTypeKHR(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3), instr->getIdOperand(4));
+ }
+}
+
Id Builder::makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands)
{
// try to find it
@@ -696,7 +720,6 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
constantsTypesGlobals.push_back(std::unique_ptr<Instruction>(type));
module.mapInstruction(type);
-#ifndef GLSLANG_WEB
// deal with capabilities
switch (dim) {
case DimBuffer:
@@ -742,7 +765,6 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo
addCapability(CapabilityImageMSArray);
}
}
-#endif
if (emitNonSemanticShaderDebugInfo)
{
@@ -934,7 +956,7 @@ Id Builder::makeArrayDebugType(Id const baseType, Id const componentCount)
Id Builder::makeVectorDebugType(Id const baseType, int const componentCount)
{
- return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);;
+ return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);
}
Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor)
@@ -1159,7 +1181,6 @@ Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable
return inst->getResultId();
}
-#ifndef GLSLANG_WEB
Id Builder::makeAccelerationStructureType()
{
Instruction *type;
@@ -1204,7 +1225,6 @@ Id Builder::makeHitObjectNVType()
return type->getResultId();
}
-#endif
Id Builder::getDerefTypeId(Id resultId) const
{
@@ -1254,6 +1274,7 @@ int Builder::getNumTypeConstituents(Id typeId) const
}
case OpTypeStruct:
return instr->getNumOperands();
+ case OpTypeCooperativeMatrixKHR:
case OpTypeCooperativeMatrixNV:
// has only one constituent when used with OpCompositeConstruct.
return 1;
@@ -1303,6 +1324,7 @@ Id Builder::getContainedTypeId(Id typeId, int member) const
case OpTypeMatrix:
case OpTypeArray:
case OpTypeRuntimeArray:
+ case OpTypeCooperativeMatrixKHR:
case OpTypeCooperativeMatrixNV:
return instr->getIdOperand(0);
case OpTypePointer:
@@ -1373,7 +1395,7 @@ bool Builder::containsType(Id typeId, spv::Op typeOp, unsigned int width) const
}
// return true if the type is a pointer to PhysicalStorageBufferEXT or an
-// array of such pointers. These require restrict/aliased decorations.
+// contains such a pointer. These require restrict/aliased decorations.
bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const
{
const Instruction& instr = *module.getInstruction(typeId);
@@ -1385,6 +1407,12 @@ bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const
return getTypeStorageClass(typeId) == StorageClassPhysicalStorageBufferEXT;
case OpTypeArray:
return containsPhysicalStorageBufferOrArray(getContainedTypeId(typeId));
+ case OpTypeStruct:
+ for (int m = 0; m < instr.getNumOperands(); ++m) {
+ if (containsPhysicalStorageBufferOrArray(instr.getIdOperand(m)))
+ return true;
+ }
+ return false;
default:
return false;
}
@@ -1598,10 +1626,6 @@ Id Builder::makeFloatConstant(float f, bool specConstant)
Id Builder::makeDoubleConstant(double d, bool specConstant)
{
-#ifdef GLSLANG_WEB
- assert(0);
- return NoResult;
-#else
Op opcode = specConstant ? OpSpecConstant : OpConstant;
Id typeId = makeFloatType(64);
union { double db; unsigned long long ull; } u;
@@ -1626,15 +1650,10 @@ Id Builder::makeDoubleConstant(double d, bool specConstant)
module.mapInstruction(c);
return c->getResultId();
-#endif
}
Id Builder::makeFloat16Constant(float f16, bool specConstant)
{
-#ifdef GLSLANG_WEB
- assert(0);
- return NoResult;
-#else
Op opcode = specConstant ? OpSpecConstant : OpConstant;
Id typeId = makeFloatType(16);
@@ -1659,17 +1678,11 @@ Id Builder::makeFloat16Constant(float f16, bool specConstant)
module.mapInstruction(c);
return c->getResultId();
-#endif
}
Id Builder::makeFpConstant(Id type, double d, bool specConstant)
{
-#ifdef GLSLANG_WEB
- const int width = 32;
- assert(width == getScalarTypeWidth(type));
-#else
const int width = getScalarTypeWidth(type);
-#endif
assert(isFloatType(type));
@@ -1763,6 +1776,7 @@ Id Builder::makeCompositeConstant(Id typeId, const std::vector<Id>& members, boo
case OpTypeVector:
case OpTypeArray:
case OpTypeMatrix:
+ case OpTypeCooperativeMatrixKHR:
case OpTypeCooperativeMatrixNV:
if (! specConstant) {
Id existing = findCompositeConstant(typeClass, typeId, members);
@@ -2103,7 +2117,8 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const
return function;
}
-Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) {
+Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id funcTypeId)
+{
assert(function != nullptr);
assert(nameId != 0);
assert(funcTypeId != 0);
@@ -2398,7 +2413,24 @@ Id Builder::createArrayLength(Id base, unsigned int member)
return length->getResultId();
}
-Id Builder::createCooperativeMatrixLength(Id type)
+Id Builder::createCooperativeMatrixLengthKHR(Id type)
+{
+ spv::Id intType = makeUintType(32);
+
+ // Generate code for spec constants if in spec constant operation
+ // generation mode.
+ if (generatingOpCodeForSpecConst) {
+ return createSpecConstantOp(OpCooperativeMatrixLengthKHR, intType, std::vector<Id>(1, type), std::vector<Id>());
+ }
+
+ Instruction* length = new Instruction(getUniqueId(), intType, OpCooperativeMatrixLengthKHR);
+ length->addIdOperand(type);
+ buildPoint->addInstruction(std::unique_ptr<Instruction>(length));
+
+ return length->getResultId();
+}
+
+Id Builder::createCooperativeMatrixLengthNV(Id type)
{
spv::Id intType = makeUintType(32);
@@ -2782,12 +2814,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
if (parameters.component != NoResult)
texArgs.push_back(parameters.component);
-#ifndef GLSLANG_WEB
if (parameters.granularity != NoResult)
texArgs.push_back(parameters.granularity);
if (parameters.coarse != NoResult)
texArgs.push_back(parameters.coarse);
-#endif
//
// Set up the optional arguments
@@ -2828,7 +2858,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask);
texArgs.push_back(parameters.offsets);
}
-#ifndef GLSLANG_WEB
if (parameters.sample) {
mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask);
texArgs.push_back(parameters.sample);
@@ -2846,7 +2875,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
if (parameters.volatil) {
mask = mask | ImageOperandsVolatileTexelKHRMask;
}
-#endif
mask = mask | signExtensionMask;
// insert the operand for the mask, if any bits were set.
if (mask != ImageOperandsMaskNone)
@@ -2861,7 +2889,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
opCode = OpImageSparseFetch;
else
opCode = OpImageFetch;
-#ifndef GLSLANG_WEB
} else if (parameters.granularity && parameters.coarse) {
opCode = OpImageSampleFootprintNV;
} else if (gather) {
@@ -2875,7 +2902,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse,
opCode = OpImageSparseGather;
else
opCode = OpImageGather;
-#endif
} else if (explicitLod) {
if (parameters.Dref) {
if (proj)
@@ -3238,12 +3264,7 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector<Id>&
int numRows = getTypeNumRows(resultTypeId);
Instruction* instr = module.getInstruction(componentTypeId);
-#ifdef GLSLANG_WEB
- const unsigned bitCount = 32;
- assert(bitCount == instr->getImmediateOperand(0));
-#else
const unsigned bitCount = instr->getImmediateOperand(0);
-#endif
// Optimize matrix constructed from a bigger matrix
if (isMatrix(sources[0]) && getNumColumns(sources[0]) >= numCols && getNumRows(sources[0]) >= numRows) {
@@ -4064,4 +4085,4 @@ void Builder::dumpModuleProcesses(std::vector<unsigned int>& out) const
}
}
-}; // end spv namespace
+} // end spv namespace
diff --git a/thirdparty/glslang/SPIRV/SpvBuilder.h b/thirdparty/glslang/SPIRV/SpvBuilder.h
index 02e9cf4005..1f38e7899d 100644
--- a/thirdparty/glslang/SPIRV/SpvBuilder.h
+++ b/thirdparty/glslang/SPIRV/SpvBuilder.h
@@ -103,7 +103,7 @@ public:
stringIds[file_c_str] = strId;
return strId;
}
- spv::Id getSourceFile() const
+ spv::Id getSourceFile() const
{
return sourceFileStringId;
}
@@ -203,7 +203,9 @@ public:
Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format);
Id makeSamplerType();
Id makeSampledImageType(Id imageType);
- Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols);
+ Id makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use);
+ Id makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols);
+ Id makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType);
Id makeGenericType(spv::Op opcode, std::vector<spv::IdImmediate>& operands);
// SPIR-V NonSemantic Shader DebugInfo Instructions
@@ -283,11 +285,10 @@ public:
bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; }
bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; }
bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; }
-#ifdef GLSLANG_WEB
- bool isCooperativeMatrixType(Id typeId)const { return false; }
-#else
- bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixNV; }
-#endif
+ bool isCooperativeMatrixType(Id typeId)const
+ {
+ return getTypeClass(typeId) == OpTypeCooperativeMatrixKHR || getTypeClass(typeId) == OpTypeCooperativeMatrixNV;
+ }
bool isAggregateType(Id typeId) const
{ return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); }
bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; }
@@ -464,8 +465,10 @@ public:
// Create an OpArrayLength instruction
Id createArrayLength(Id base, unsigned int member);
+ // Create an OpCooperativeMatrixLengthKHR instruction
+ Id createCooperativeMatrixLengthKHR(Id type);
// Create an OpCooperativeMatrixLengthNV instruction
- Id createCooperativeMatrixLength(Id type);
+ Id createCooperativeMatrixLengthNV(Id type);
// Create an OpCompositeExtract instruction
Id createCompositeExtract(Id composite, Id typeId, unsigned index);
@@ -700,11 +703,6 @@ public:
// Accumulate whether anything in the chain of structures has coherent decorations.
struct CoherentFlags {
CoherentFlags() { clear(); }
-#ifdef GLSLANG_WEB
- void clear() { }
- bool isVolatile() const { return false; }
- CoherentFlags operator |=(const CoherentFlags &other) { return *this; }
-#else
bool isVolatile() const { return volatil; }
bool isNonUniform() const { return nonUniform; }
bool anyCoherent() const {
@@ -749,7 +747,6 @@ public:
nonUniform |= other.nonUniform;
return *this;
}
-#endif
};
CoherentFlags coherentFlags;
};
@@ -835,14 +832,12 @@ public:
// Prune unreachable blocks in the CFG and remove unneeded decorations.
void postProcessCFG();
-#ifndef GLSLANG_WEB
// Add capabilities, extensions based on instructions in the module.
void postProcessFeatures();
// Hook to visit each instruction in a block in a function
void postProcess(Instruction&);
// Hook to visit each non-32-bit sized float/int operation in a block.
void postProcessType(const Instruction&, spv::Id typeId);
-#endif
void dump(std::vector<unsigned int>&) const;
diff --git a/thirdparty/glslang/SPIRV/SpvPostProcess.cpp b/thirdparty/glslang/SPIRV/SpvPostProcess.cpp
index b185f61bb8..c4be365527 100644
--- a/thirdparty/glslang/SPIRV/SpvPostProcess.cpp
+++ b/thirdparty/glslang/SPIRV/SpvPostProcess.cpp
@@ -57,7 +57,6 @@ namespace spv {
namespace spv {
-#ifndef GLSLANG_WEB
// Hook to visit each operand type and result type of an instruction.
// Will be called multiple times for one instruction, once for each typed
// operand and the result.
@@ -334,7 +333,6 @@ void Builder::postProcess(Instruction& inst)
}
}
}
-#endif
// comment in header
void Builder::postProcessCFG()
@@ -395,7 +393,6 @@ void Builder::postProcessCFG()
decorations.end());
}
-#ifndef GLSLANG_WEB
// comment in header
void Builder::postProcessFeatures() {
// Add per-instruction capabilities, extensions, etc.,
@@ -483,14 +480,11 @@ void Builder::postProcessFeatures() {
}
}
}
-#endif
// comment in header
void Builder::postProcess() {
postProcessCFG();
-#ifndef GLSLANG_WEB
postProcessFeatures();
-#endif
}
}; // end spv namespace
diff --git a/thirdparty/glslang/SPIRV/disassemble.cpp b/thirdparty/glslang/SPIRV/disassemble.cpp
index f943fd5645..479f4a64eb 100644
--- a/thirdparty/glslang/SPIRV/disassemble.cpp
+++ b/thirdparty/glslang/SPIRV/disassemble.cpp
@@ -515,7 +515,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode,
} else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 ||
strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 ||
strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 ||
- strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
+ strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 ||
strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 ||
strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) {
extInstSet = GLSLextNVInst;
diff --git a/thirdparty/glslang/SPIRV/doc.cpp b/thirdparty/glslang/SPIRV/doc.cpp
index 571ef78802..b7f0053dd6 100644..100755
--- a/thirdparty/glslang/SPIRV/doc.cpp
+++ b/thirdparty/glslang/SPIRV/doc.cpp
@@ -45,6 +45,7 @@
#include <cstdio>
#include <cstring>
#include <algorithm>
+#include <mutex>
namespace spv {
extern "C" {
@@ -318,7 +319,7 @@ const char* DecorationString(int decoration)
case DecorationPerPrimitiveNV: return "PerPrimitiveNV";
case DecorationPerViewNV: return "PerViewNV";
case DecorationPerTaskNV: return "PerTaskNV";
-
+
case DecorationPerVertexKHR: return "PerVertexKHR";
case DecorationNonUniformEXT: return "DecorationNonUniformEXT";
@@ -584,7 +585,7 @@ const char* ImageChannelOrderString(int format)
case 17: return "sRGBA";
case 18: return "sBGRA";
- default:
+ default:
return "Bad";
}
}
@@ -789,6 +790,21 @@ const char* MemoryAccessString(int mem)
}
}
+const int CooperativeMatrixOperandsCeiling = 6;
+
+const char* CooperativeMatrixOperandsString(int op)
+{
+ switch (op) {
+ case CooperativeMatrixOperandsMatrixASignedComponentsShift: return "ASignedComponents";
+ case CooperativeMatrixOperandsMatrixBSignedComponentsShift: return "BSignedComponents";
+ case CooperativeMatrixOperandsMatrixCSignedComponentsShift: return "CSignedComponents";
+ case CooperativeMatrixOperandsMatrixResultSignedComponentsShift: return "ResultSignedComponents";
+ case CooperativeMatrixOperandsSaturatingAccumulationShift: return "SaturatingAccumulation";
+
+ default: return "Bad";
+ }
+}
+
const char* ScopeString(int mem)
{
switch (mem) {
@@ -870,7 +886,7 @@ const char* CapabilityString(int info)
case 22: return "Int16";
case 23: return "TessellationPointSize";
case 24: return "GeometryPointSize";
- case 25: return "ImageGatherExtended";
+ case 25: return "ImageGatherExtended";
case 26: return "Bad";
case 27: return "StorageImageMultisample";
case 28: return "UniformBufferArrayDynamicIndexing";
@@ -992,6 +1008,7 @@ const char* CapabilityString(int info)
case CapabilityVariablePointers: return "VariablePointers";
case CapabilityCooperativeMatrixNV: return "CooperativeMatrixNV";
+ case CapabilityCooperativeMatrixKHR: return "CooperativeMatrixKHR";
case CapabilityShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV";
case CapabilityFragmentShaderSampleInterlockEXT: return "CapabilityFragmentShaderSampleInterlockEXT";
@@ -1472,6 +1489,11 @@ const char* OpcodeString(int op)
case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV";
case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV";
case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV";
+ case OpTypeCooperativeMatrixKHR: return "OpTypeCooperativeMatrixKHR";
+ case OpCooperativeMatrixLoadKHR: return "OpCooperativeMatrixLoadKHR";
+ case OpCooperativeMatrixStoreKHR: return "OpCooperativeMatrixStoreKHR";
+ case OpCooperativeMatrixMulAddKHR: return "OpCooperativeMatrixMulAddKHR";
+ case OpCooperativeMatrixLengthKHR: return "OpCooperativeMatrixLengthKHR";
case OpDemoteToHelperInvocationEXT: return "OpDemoteToHelperInvocationEXT";
case OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT";
@@ -1535,1758 +1557,1789 @@ EnumParameters LoopControlParams[FunctionControlCeiling];
EnumParameters SelectionControlParams[SelectControlCeiling];
EnumParameters FunctionControlParams[FunctionControlCeiling];
EnumParameters MemoryAccessParams[MemoryAccessCeiling];
+EnumParameters CooperativeMatrixOperandsParams[CooperativeMatrixOperandsCeiling];
// Set up all the parameterizing descriptions of the opcodes, operands, etc.
void Parameterize()
{
// only do this once.
- static bool initialized = false;
- if (initialized)
- return;
- initialized = true;
-
- // Exceptions to having a result <id> and a resulting type <id>.
- // (Everything is initialized to have both).
-
- InstructionDesc[OpNop].setResultAndType(false, false);
- InstructionDesc[OpSource].setResultAndType(false, false);
- InstructionDesc[OpSourceContinued].setResultAndType(false, false);
- InstructionDesc[OpSourceExtension].setResultAndType(false, false);
- InstructionDesc[OpExtension].setResultAndType(false, false);
- InstructionDesc[OpExtInstImport].setResultAndType(true, false);
- InstructionDesc[OpCapability].setResultAndType(false, false);
- InstructionDesc[OpMemoryModel].setResultAndType(false, false);
- InstructionDesc[OpEntryPoint].setResultAndType(false, false);
- InstructionDesc[OpExecutionMode].setResultAndType(false, false);
- InstructionDesc[OpExecutionModeId].setResultAndType(false, false);
- InstructionDesc[OpTypeVoid].setResultAndType(true, false);
- InstructionDesc[OpTypeBool].setResultAndType(true, false);
- InstructionDesc[OpTypeInt].setResultAndType(true, false);
- InstructionDesc[OpTypeFloat].setResultAndType(true, false);
- InstructionDesc[OpTypeVector].setResultAndType(true, false);
- InstructionDesc[OpTypeMatrix].setResultAndType(true, false);
- InstructionDesc[OpTypeImage].setResultAndType(true, false);
- InstructionDesc[OpTypeSampler].setResultAndType(true, false);
- InstructionDesc[OpTypeSampledImage].setResultAndType(true, false);
- InstructionDesc[OpTypeArray].setResultAndType(true, false);
- InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false);
- InstructionDesc[OpTypeStruct].setResultAndType(true, false);
- InstructionDesc[OpTypeOpaque].setResultAndType(true, false);
- InstructionDesc[OpTypePointer].setResultAndType(true, false);
- InstructionDesc[OpTypeForwardPointer].setResultAndType(false, false);
- InstructionDesc[OpTypeFunction].setResultAndType(true, false);
- InstructionDesc[OpTypeEvent].setResultAndType(true, false);
- InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false);
- InstructionDesc[OpTypeReserveId].setResultAndType(true, false);
- InstructionDesc[OpTypeQueue].setResultAndType(true, false);
- InstructionDesc[OpTypePipe].setResultAndType(true, false);
- InstructionDesc[OpFunctionEnd].setResultAndType(false, false);
- InstructionDesc[OpStore].setResultAndType(false, false);
- InstructionDesc[OpImageWrite].setResultAndType(false, false);
- InstructionDesc[OpDecorationGroup].setResultAndType(true, false);
- InstructionDesc[OpDecorate].setResultAndType(false, false);
- InstructionDesc[OpDecorateId].setResultAndType(false, false);
- InstructionDesc[OpDecorateStringGOOGLE].setResultAndType(false, false);
- InstructionDesc[OpMemberDecorate].setResultAndType(false, false);
- InstructionDesc[OpMemberDecorateStringGOOGLE].setResultAndType(false, false);
- InstructionDesc[OpGroupDecorate].setResultAndType(false, false);
- InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false);
- InstructionDesc[OpName].setResultAndType(false, false);
- InstructionDesc[OpMemberName].setResultAndType(false, false);
- InstructionDesc[OpString].setResultAndType(true, false);
- InstructionDesc[OpLine].setResultAndType(false, false);
- InstructionDesc[OpNoLine].setResultAndType(false, false);
- InstructionDesc[OpCopyMemory].setResultAndType(false, false);
- InstructionDesc[OpCopyMemorySized].setResultAndType(false, false);
- InstructionDesc[OpEmitVertex].setResultAndType(false, false);
- InstructionDesc[OpEndPrimitive].setResultAndType(false, false);
- InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false);
- InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false);
- InstructionDesc[OpControlBarrier].setResultAndType(false, false);
- InstructionDesc[OpMemoryBarrier].setResultAndType(false, false);
- InstructionDesc[OpAtomicStore].setResultAndType(false, false);
- InstructionDesc[OpLoopMerge].setResultAndType(false, false);
- InstructionDesc[OpSelectionMerge].setResultAndType(false, false);
- InstructionDesc[OpLabel].setResultAndType(true, false);
- InstructionDesc[OpBranch].setResultAndType(false, false);
- InstructionDesc[OpBranchConditional].setResultAndType(false, false);
- InstructionDesc[OpSwitch].setResultAndType(false, false);
- InstructionDesc[OpKill].setResultAndType(false, false);
- InstructionDesc[OpTerminateInvocation].setResultAndType(false, false);
- InstructionDesc[OpReturn].setResultAndType(false, false);
- InstructionDesc[OpReturnValue].setResultAndType(false, false);
- InstructionDesc[OpUnreachable].setResultAndType(false, false);
- InstructionDesc[OpLifetimeStart].setResultAndType(false, false);
- InstructionDesc[OpLifetimeStop].setResultAndType(false, false);
- InstructionDesc[OpCommitReadPipe].setResultAndType(false, false);
- InstructionDesc[OpCommitWritePipe].setResultAndType(false, false);
- InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false);
- InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false);
- InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false);
- InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false);
- InstructionDesc[OpRetainEvent].setResultAndType(false, false);
- InstructionDesc[OpReleaseEvent].setResultAndType(false, false);
- InstructionDesc[OpGroupWaitEvents].setResultAndType(false, false);
- InstructionDesc[OpAtomicFlagClear].setResultAndType(false, false);
- InstructionDesc[OpModuleProcessed].setResultAndType(false, false);
- InstructionDesc[OpTypeCooperativeMatrixNV].setResultAndType(true, false);
- InstructionDesc[OpCooperativeMatrixStoreNV].setResultAndType(false, false);
- InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false);
- InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false);
-
- // Specific additional context-dependent operands
-
- ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "'Number of <<Invocation,invocations>>'");
-
- ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'");
- ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'");
- ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'");
-
- ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'");
- ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'");
- ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'");
-
- ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "'Vertex count'");
- ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandLiteralNumber, "'Vector type'");
-
- DecorationOperands[DecorationStream].push(OperandLiteralNumber, "'Stream Number'");
- DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "'Location'");
- DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "'Component'");
- DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "'Index'");
- DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "'Binding Point'");
- DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "'Descriptor Set'");
- DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "'Byte Offset'");
- DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "'XFB Buffer Number'");
- DecorationOperands[DecorationXfbStride].push(OperandLiteralNumber, "'XFB Stride'");
- DecorationOperands[DecorationArrayStride].push(OperandLiteralNumber, "'Array Stride'");
- DecorationOperands[DecorationMatrixStride].push(OperandLiteralNumber, "'Matrix Stride'");
- DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <<BuiltIn,*BuiltIn*>>");
- DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "'Floating-Point Rounding Mode'");
- DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "'Fast-Math Mode'");
- DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "'Name'");
- DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "'Linkage Type'");
- DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "'Function Parameter Attribute'");
- DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "'Specialization Constant ID'");
- DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'");
- DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'");
-
- OperandClassParams[OperandSource].set(0, SourceString, nullptr);
- OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr);
- OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr);
- OperandClassParams[OperandMemory].set(0, MemoryString, nullptr);
- OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams);
- OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands);
- OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr);
- OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr);
- OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr);
- OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr);
- OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr);
- OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr);
- OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr);
- OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true);
- OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true);
- OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr);
- OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr);
- OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr);
- OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr);
- OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams);
- OperandClassParams[OperandDecoration].setOperands(DecorationOperands);
- OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr);
- OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true);
- OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true);
- OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true);
- OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true);
- OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true);
- OperandClassParams[OperandScope].set(0, ScopeString, nullptr);
- OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr);
- OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr);
- OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true);
- OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr);
- OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr);
-
- // set name of operator, an initial set of <id> style operands, and the description
-
- InstructionDesc[OpSource].operands.push(OperandSource, "");
- InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'");
- InstructionDesc[OpSource].operands.push(OperandId, "'File'", true);
- InstructionDesc[OpSource].operands.push(OperandLiteralString, "'Source'", true);
-
- InstructionDesc[OpSourceContinued].operands.push(OperandLiteralString, "'Continued Source'");
-
- InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'");
-
- InstructionDesc[OpName].operands.push(OperandId, "'Target'");
- InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'");
-
- InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'");
- InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'");
- InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'");
-
- InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'");
-
- InstructionDesc[OpLine].operands.push(OperandId, "'File'");
- InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'");
- InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'");
-
- InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'");
-
- InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'");
-
- InstructionDesc[OpCapability].operands.push(OperandCapability, "'Capability'");
+ static std::once_flag initialized;
+ std::call_once(initialized, [](){
+
+ // Exceptions to having a result <id> and a resulting type <id>.
+ // (Everything is initialized to have both).
+
+ InstructionDesc[OpNop].setResultAndType(false, false);
+ InstructionDesc[OpSource].setResultAndType(false, false);
+ InstructionDesc[OpSourceContinued].setResultAndType(false, false);
+ InstructionDesc[OpSourceExtension].setResultAndType(false, false);
+ InstructionDesc[OpExtension].setResultAndType(false, false);
+ InstructionDesc[OpExtInstImport].setResultAndType(true, false);
+ InstructionDesc[OpCapability].setResultAndType(false, false);
+ InstructionDesc[OpMemoryModel].setResultAndType(false, false);
+ InstructionDesc[OpEntryPoint].setResultAndType(false, false);
+ InstructionDesc[OpExecutionMode].setResultAndType(false, false);
+ InstructionDesc[OpExecutionModeId].setResultAndType(false, false);
+ InstructionDesc[OpTypeVoid].setResultAndType(true, false);
+ InstructionDesc[OpTypeBool].setResultAndType(true, false);
+ InstructionDesc[OpTypeInt].setResultAndType(true, false);
+ InstructionDesc[OpTypeFloat].setResultAndType(true, false);
+ InstructionDesc[OpTypeVector].setResultAndType(true, false);
+ InstructionDesc[OpTypeMatrix].setResultAndType(true, false);
+ InstructionDesc[OpTypeImage].setResultAndType(true, false);
+ InstructionDesc[OpTypeSampler].setResultAndType(true, false);
+ InstructionDesc[OpTypeSampledImage].setResultAndType(true, false);
+ InstructionDesc[OpTypeArray].setResultAndType(true, false);
+ InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false);
+ InstructionDesc[OpTypeStruct].setResultAndType(true, false);
+ InstructionDesc[OpTypeOpaque].setResultAndType(true, false);
+ InstructionDesc[OpTypePointer].setResultAndType(true, false);
+ InstructionDesc[OpTypeForwardPointer].setResultAndType(false, false);
+ InstructionDesc[OpTypeFunction].setResultAndType(true, false);
+ InstructionDesc[OpTypeEvent].setResultAndType(true, false);
+ InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false);
+ InstructionDesc[OpTypeReserveId].setResultAndType(true, false);
+ InstructionDesc[OpTypeQueue].setResultAndType(true, false);
+ InstructionDesc[OpTypePipe].setResultAndType(true, false);
+ InstructionDesc[OpFunctionEnd].setResultAndType(false, false);
+ InstructionDesc[OpStore].setResultAndType(false, false);
+ InstructionDesc[OpImageWrite].setResultAndType(false, false);
+ InstructionDesc[OpDecorationGroup].setResultAndType(true, false);
+ InstructionDesc[OpDecorate].setResultAndType(false, false);
+ InstructionDesc[OpDecorateId].setResultAndType(false, false);
+ InstructionDesc[OpDecorateStringGOOGLE].setResultAndType(false, false);
+ InstructionDesc[OpMemberDecorate].setResultAndType(false, false);
+ InstructionDesc[OpMemberDecorateStringGOOGLE].setResultAndType(false, false);
+ InstructionDesc[OpGroupDecorate].setResultAndType(false, false);
+ InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false);
+ InstructionDesc[OpName].setResultAndType(false, false);
+ InstructionDesc[OpMemberName].setResultAndType(false, false);
+ InstructionDesc[OpString].setResultAndType(true, false);
+ InstructionDesc[OpLine].setResultAndType(false, false);
+ InstructionDesc[OpNoLine].setResultAndType(false, false);
+ InstructionDesc[OpCopyMemory].setResultAndType(false, false);
+ InstructionDesc[OpCopyMemorySized].setResultAndType(false, false);
+ InstructionDesc[OpEmitVertex].setResultAndType(false, false);
+ InstructionDesc[OpEndPrimitive].setResultAndType(false, false);
+ InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false);
+ InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false);
+ InstructionDesc[OpControlBarrier].setResultAndType(false, false);
+ InstructionDesc[OpMemoryBarrier].setResultAndType(false, false);
+ InstructionDesc[OpAtomicStore].setResultAndType(false, false);
+ InstructionDesc[OpLoopMerge].setResultAndType(false, false);
+ InstructionDesc[OpSelectionMerge].setResultAndType(false, false);
+ InstructionDesc[OpLabel].setResultAndType(true, false);
+ InstructionDesc[OpBranch].setResultAndType(false, false);
+ InstructionDesc[OpBranchConditional].setResultAndType(false, false);
+ InstructionDesc[OpSwitch].setResultAndType(false, false);
+ InstructionDesc[OpKill].setResultAndType(false, false);
+ InstructionDesc[OpTerminateInvocation].setResultAndType(false, false);
+ InstructionDesc[OpReturn].setResultAndType(false, false);
+ InstructionDesc[OpReturnValue].setResultAndType(false, false);
+ InstructionDesc[OpUnreachable].setResultAndType(false, false);
+ InstructionDesc[OpLifetimeStart].setResultAndType(false, false);
+ InstructionDesc[OpLifetimeStop].setResultAndType(false, false);
+ InstructionDesc[OpCommitReadPipe].setResultAndType(false, false);
+ InstructionDesc[OpCommitWritePipe].setResultAndType(false, false);
+ InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false);
+ InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false);
+ InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false);
+ InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false);
+ InstructionDesc[OpRetainEvent].setResultAndType(false, false);
+ InstructionDesc[OpReleaseEvent].setResultAndType(false, false);
+ InstructionDesc[OpGroupWaitEvents].setResultAndType(false, false);
+ InstructionDesc[OpAtomicFlagClear].setResultAndType(false, false);
+ InstructionDesc[OpModuleProcessed].setResultAndType(false, false);
+ InstructionDesc[OpTypeCooperativeMatrixNV].setResultAndType(true, false);
+ InstructionDesc[OpCooperativeMatrixStoreNV].setResultAndType(false, false);
+ InstructionDesc[OpTypeCooperativeMatrixKHR].setResultAndType(true, false);
+ InstructionDesc[OpCooperativeMatrixStoreKHR].setResultAndType(false, false);
+ InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false);
+ InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false);
+
+ // Specific additional context-dependent operands
+
+ ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "'Number of <<Invocation,invocations>>'");
+
+ ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'");
+ ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'");
+ ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'");
+
+ ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'");
+ ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'");
+ ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'");
+
+ ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "'Vertex count'");
+ ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandLiteralNumber, "'Vector type'");
+
+ DecorationOperands[DecorationStream].push(OperandLiteralNumber, "'Stream Number'");
+ DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "'Location'");
+ DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "'Component'");
+ DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "'Index'");
+ DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "'Binding Point'");
+ DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "'Descriptor Set'");
+ DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "'Byte Offset'");
+ DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "'XFB Buffer Number'");
+ DecorationOperands[DecorationXfbStride].push(OperandLiteralNumber, "'XFB Stride'");
+ DecorationOperands[DecorationArrayStride].push(OperandLiteralNumber, "'Array Stride'");
+ DecorationOperands[DecorationMatrixStride].push(OperandLiteralNumber, "'Matrix Stride'");
+ DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <<BuiltIn,*BuiltIn*>>");
+ DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "'Floating-Point Rounding Mode'");
+ DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "'Fast-Math Mode'");
+ DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "'Name'");
+ DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "'Linkage Type'");
+ DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "'Function Parameter Attribute'");
+ DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "'Specialization Constant ID'");
+ DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'");
+ DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'");
+
+ OperandClassParams[OperandSource].set(0, SourceString, nullptr);
+ OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr);
+ OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr);
+ OperandClassParams[OperandMemory].set(0, MemoryString, nullptr);
+ OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams);
+ OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands);
+ OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr);
+ OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr);
+ OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr);
+ OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr);
+ OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr);
+ OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr);
+ OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr);
+ OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true);
+ OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true);
+ OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr);
+ OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr);
+ OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr);
+ OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr);
+ OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams);
+ OperandClassParams[OperandDecoration].setOperands(DecorationOperands);
+ OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr);
+ OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true);
+ OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true);
+ OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true);
+ OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true);
+ OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true);
+ OperandClassParams[OperandScope].set(0, ScopeString, nullptr);
+ OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr);
+ OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr);
+ OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true);
+ OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr);
+ OperandClassParams[OperandCooperativeMatrixOperands].set(CooperativeMatrixOperandsCeiling, CooperativeMatrixOperandsString, CooperativeMatrixOperandsParams, true);
+ OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr);
+
+ // set name of operator, an initial set of <id> style operands, and the description
+
+ InstructionDesc[OpSource].operands.push(OperandSource, "");
+ InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'");
+ InstructionDesc[OpSource].operands.push(OperandId, "'File'", true);
+ InstructionDesc[OpSource].operands.push(OperandLiteralString, "'Source'", true);
+
+ InstructionDesc[OpSourceContinued].operands.push(OperandLiteralString, "'Continued Source'");
+
+ InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'");
+
+ InstructionDesc[OpName].operands.push(OperandId, "'Target'");
+ InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'");
+
+ InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'");
+ InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'");
+ InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'");
+
+ InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'");
+
+ InstructionDesc[OpLine].operands.push(OperandId, "'File'");
+ InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'");
+ InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'");
+
+ InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'");
+
+ InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'");
+
+ InstructionDesc[OpCapability].operands.push(OperandCapability, "'Capability'");
+
+ InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, "");
+ InstructionDesc[OpMemoryModel].operands.push(OperandMemory, "");
+
+ InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, "");
+ InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'");
+ InstructionDesc[OpEntryPoint].operands.push(OperandLiteralString, "'Name'");
+ InstructionDesc[OpEntryPoint].operands.push(OperandVariableIds, "'Interface'");
+
+ InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'");
+ InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'");
+ InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <<Execution_Mode,Execution Mode>>");
+
+ InstructionDesc[OpExecutionModeId].operands.push(OperandId, "'Entry Point'");
+ InstructionDesc[OpExecutionModeId].operands.push(OperandExecutionMode, "'Mode'");
+ InstructionDesc[OpExecutionModeId].operands.push(OperandVariableIds, "See <<Execution_Mode,Execution Mode>>");
+
+ InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'");
+ InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'");
+
+ InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'");
+
+ InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'");
+ InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'");
+
+ InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'");
+ InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'");
+
+ InstructionDesc[OpTypeImage].operands.push(OperandId, "'Sampled Type'");
+ InstructionDesc[OpTypeImage].operands.push(OperandDimensionality, "");
+ InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Depth'");
+ InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Arrayed'");
+ InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'MS'");
+ InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Sampled'");
+ InstructionDesc[OpTypeImage].operands.push(OperandSamplerImageFormat, "");
+ InstructionDesc[OpTypeImage].operands.push(OperandAccessQualifier, "", true);
+
+ InstructionDesc[OpTypeSampledImage].operands.push(OperandId, "'Image Type'");
+
+ InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'");
+ InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'");
+
+ InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'");
+
+ InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n...");
- InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, "");
- InstructionDesc[OpMemoryModel].operands.push(OperandMemory, "");
-
- InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, "");
- InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'");
- InstructionDesc[OpEntryPoint].operands.push(OperandLiteralString, "'Name'");
- InstructionDesc[OpEntryPoint].operands.push(OperandVariableIds, "'Interface'");
-
- InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'");
- InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'");
- InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <<Execution_Mode,Execution Mode>>");
-
- InstructionDesc[OpExecutionModeId].operands.push(OperandId, "'Entry Point'");
- InstructionDesc[OpExecutionModeId].operands.push(OperandExecutionMode, "'Mode'");
- InstructionDesc[OpExecutionModeId].operands.push(OperandVariableIds, "See <<Execution_Mode,Execution Mode>>");
-
- InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'");
- InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'");
-
- InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'");
-
- InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'");
- InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'");
+ InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type.");
- InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'");
- InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'");
+ InstructionDesc[OpTypePointer].operands.push(OperandStorage, "");
+ InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'");
- InstructionDesc[OpTypeImage].operands.push(OperandId, "'Sampled Type'");
- InstructionDesc[OpTypeImage].operands.push(OperandDimensionality, "");
- InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Depth'");
- InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Arrayed'");
- InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'MS'");
- InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Sampled'");
- InstructionDesc[OpTypeImage].operands.push(OperandSamplerImageFormat, "");
- InstructionDesc[OpTypeImage].operands.push(OperandAccessQualifier, "", true);
+ InstructionDesc[OpTypeForwardPointer].operands.push(OperandId, "'Pointer Type'");
+ InstructionDesc[OpTypeForwardPointer].operands.push(OperandStorage, "");
- InstructionDesc[OpTypeSampledImage].operands.push(OperandId, "'Image Type'");
+ InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'");
- InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'");
- InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'");
+ InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'");
+ InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n...");
- InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'");
+ InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'");
- InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n...");
+ InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
- InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type.");
+ InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, "");
+ InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'");
+ InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, "");
- InstructionDesc[OpTypePointer].operands.push(OperandStorage, "");
- InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'");
+ InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'");
- InstructionDesc[OpTypeForwardPointer].operands.push(OperandId, "'Pointer Type'");
- InstructionDesc[OpTypeForwardPointer].operands.push(OperandStorage, "");
+ InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
- InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'");
+ InstructionDesc[OpSpecConstantOp].operands.push(OperandLiteralNumber, "'Opcode'");
+ InstructionDesc[OpSpecConstantOp].operands.push(OperandVariableIds, "'Operands'");
- InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'");
- InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n...");
+ InstructionDesc[OpVariable].operands.push(OperandStorage, "");
+ InstructionDesc[OpVariable].operands.push(OperandId, "'Initializer'", true);
- InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'");
+ InstructionDesc[OpFunction].operands.push(OperandFunction, "");
+ InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'");
- InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
+ InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'");
+ InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n...");
- InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, "");
- InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'");
- InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, "");
+ InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'");
+ InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'");
+ InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n...");
- InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'");
+ InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true);
+ InstructionDesc[OpLoad].operands.push(OperandLiteralNumber, "", true);
+ InstructionDesc[OpLoad].operands.push(OperandId, "", true);
- InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'");
+ InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpStore].operands.push(OperandId, "'Object'");
+ InstructionDesc[OpStore].operands.push(OperandMemoryAccess, "", true);
+ InstructionDesc[OpStore].operands.push(OperandLiteralNumber, "", true);
+ InstructionDesc[OpStore].operands.push(OperandId, "", true);
- InstructionDesc[OpSpecConstantOp].operands.push(OperandLiteralNumber, "'Opcode'");
- InstructionDesc[OpSpecConstantOp].operands.push(OperandVariableIds, "'Operands'");
+ InstructionDesc[OpPhi].operands.push(OperandVariableIds, "'Variable, Parent, ...'");
- InstructionDesc[OpVariable].operands.push(OperandStorage, "");
- InstructionDesc[OpVariable].operands.push(OperandId, "'Initializer'", true);
+ InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'");
+ InstructionDesc[OpDecorate].operands.push(OperandDecoration, "");
+ InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");
- InstructionDesc[OpFunction].operands.push(OperandFunction, "");
- InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'");
+ InstructionDesc[OpDecorateId].operands.push(OperandId, "'Target'");
+ InstructionDesc[OpDecorateId].operands.push(OperandDecoration, "");
+ InstructionDesc[OpDecorateId].operands.push(OperandVariableIds, "See <<Decoration,'Decoration'>>.");
- InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'");
- InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n...");
+ InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'");
+ InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, "");
+ InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'");
- InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'");
- InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'");
- InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n...");
+ InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'");
+ InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'");
+ InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, "");
+ InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");
- InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true);
- InstructionDesc[OpLoad].operands.push(OperandLiteralNumber, "", true);
- InstructionDesc[OpLoad].operands.push(OperandId, "", true);
+ InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'");
+ InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'");
+ InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, "");
+ InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'");
- InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpStore].operands.push(OperandId, "'Object'");
- InstructionDesc[OpStore].operands.push(OperandMemoryAccess, "", true);
- InstructionDesc[OpStore].operands.push(OperandLiteralNumber, "", true);
- InstructionDesc[OpStore].operands.push(OperandId, "", true);
+ InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'");
+ InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'");
- InstructionDesc[OpPhi].operands.push(OperandVariableIds, "'Variable, Parent, ...'");
+ InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration Group'");
+ InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIdLiteral, "'Targets'");
- InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'");
- InstructionDesc[OpDecorate].operands.push(OperandDecoration, "");
- InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");
+ InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'");
+ InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'");
- InstructionDesc[OpDecorateId].operands.push(OperandId, "'Target'");
- InstructionDesc[OpDecorateId].operands.push(OperandDecoration, "");
- InstructionDesc[OpDecorateId].operands.push(OperandVariableIds, "See <<Decoration,'Decoration'>>.");
+ InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'");
+ InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'");
+ InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'");
- InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'");
- InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, "");
- InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'");
+ InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'");
+ InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'");
+ InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'");
- InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'");
- InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'");
- InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, "");
- InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <<Decoration,'Decoration'>>.");
+ InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'");
- InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'");
- InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'");
- InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, "");
- InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'");
+ InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'");
+ InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'");
- InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'");
- InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'");
+ InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'");
+ InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'");
+ InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'");
- InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration Group'");
- InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIdLiteral, "'Targets'");
+ InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'");
- InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'");
+ InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'");
+ InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'");
+ InstructionDesc[OpCopyMemory].operands.push(OperandMemoryAccess, "", true);
- InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'");
- InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'");
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'");
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'");
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'");
+ InstructionDesc[OpCopyMemorySized].operands.push(OperandMemoryAccess, "", true);
+
+ InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'");
+
+ InstructionDesc[OpImage].operands.push(OperandId, "'Sampled Image'");
+
+ InstructionDesc[OpImageRead].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageRead].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageRead].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageRead].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageWrite].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageWrite].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageWrite].operands.push(OperandId, "'Texel'");
+ InstructionDesc[OpImageWrite].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageWrite].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageFetch].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageFetch].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageFetch].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageGather].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageGather].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'");
+ InstructionDesc[OpImageGather].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageGather].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageDrefGather].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageDrefGather].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'");
- InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'");
- InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'");
+ InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'");
+ InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'");
- InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'");
+ InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'");
- InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'");
- InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'");
+ InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'");
+ InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'");
- InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'");
- InstructionDesc[OpCopyMemory].operands.push(OperandMemoryAccess, "", true);
+ InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseFetch].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseFetch].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'");
- InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'");
- InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'");
- InstructionDesc[OpCopyMemorySized].operands.push(OperandMemoryAccess, "", true);
-
- InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'");
- InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'");
-
- InstructionDesc[OpImage].operands.push(OperandId, "'Sampled Image'");
-
- InstructionDesc[OpImageRead].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageRead].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageRead].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageRead].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageWrite].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageWrite].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageWrite].operands.push(OperandId, "'Texel'");
- InstructionDesc[OpImageWrite].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageWrite].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageFetch].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageFetch].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageFetch].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageGather].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageGather].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'");
- InstructionDesc[OpImageGather].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageGather].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageDrefGather].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageDrefGather].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Component'");
+ InstructionDesc[OpImageSparseGather].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseGather].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'D~ref~'");
+ InstructionDesc[OpImageSparseDrefGather].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true);
- InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'");
- InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'");
- InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseFetch].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseFetch].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Component'");
- InstructionDesc[OpImageSparseGather].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseGather].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'D~ref~'");
- InstructionDesc[OpImageSparseDrefGather].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true);
+ InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'");
+ InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'");
+ InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'");
- InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'");
- InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'");
+ InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
- InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Element'");
+ InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
- InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'");
- InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'");
- InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpNot].operands.push(OperandId, "'Operand'");
- InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'");
- InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'");
+ InstructionDesc[OpAny].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'");
- InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'");
+ InstructionDesc[OpAll].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'");
- InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'");
- InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
+ InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'");
- InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Base'");
- InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Element'");
- InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'");
+ InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'");
- InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'");
+ InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'");
- InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'");
+ InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned Value'");
- InstructionDesc[OpNot].operands.push(OperandId, "'Operand'");
+ InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned Value'");
- InstructionDesc[OpAny].operands.push(OperandId, "'Vector'");
+ InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'");
- InstructionDesc[OpAll].operands.push(OperandId, "'Vector'");
+ InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'");
- InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'");
+ InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'");
- InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'");
+ InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'");
- InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'");
+ InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned Value'");
+ InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'");
- InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned Value'");
+ InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'");
+ InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'");
+ InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'");
- InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'");
+ InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'");
+ InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'");
- InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'");
- InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'");
+ InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'");
- InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpCopyLogical].operands.push(OperandId, "'Operand'");
- InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpIsNan].operands.push(OperandId, "'x'");
- InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'");
+ InstructionDesc[OpIsInf].operands.push(OperandId, "'x'");
- InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'");
- InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'");
+ InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'");
- InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'");
- InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'");
+ InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'");
+ InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'");
- InstructionDesc[OpCopyLogical].operands.push(OperandId, "'Operand'");
+ InstructionDesc[OpOrdered].operands.push(OperandId, "'x'");
+ InstructionDesc[OpOrdered].operands.push(OperandId, "'y'");
- InstructionDesc[OpIsNan].operands.push(OperandId, "'x'");
+ InstructionDesc[OpUnordered].operands.push(OperandId, "'x'");
+ InstructionDesc[OpUnordered].operands.push(OperandId, "'y'");
- InstructionDesc[OpIsInf].operands.push(OperandId, "'x'");
+ InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'");
+ InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'");
- InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'");
+ InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'");
+ InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'");
+ InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'");
- InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'");
+ InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpOrdered].operands.push(OperandId, "'x'");
- InstructionDesc[OpOrdered].operands.push(OperandId, "'y'");
+ InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpUnordered].operands.push(OperandId, "'x'");
- InstructionDesc[OpUnordered].operands.push(OperandId, "'y'");
+ InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'");
- InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'");
+ InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'");
+ InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'");
- InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'");
+ InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'");
- InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'");
+ InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'");
- InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'");
+ InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'");
+ InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'");
- InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'");
+ InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'");
- InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'");
+ InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'");
- InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'");
+ InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'");
- InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'");
+ InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'");
- InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'");
+ InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'");
- InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'");
+ InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'");
- InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'");
+ InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Shift'");
- InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'");
- InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'");
+ InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Shift'");
- InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'");
- InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'");
+ InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Shift'");
- InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Base'");
- InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Shift'");
+ InstructionDesc[OpLogicalNot].operands.push(OperandId, "'Operand'");
- InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Base'");
- InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Shift'");
+ InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Base'");
- InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Shift'");
+ InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'");
+ InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'");
+ InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'");
- InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'");
+ InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'");
- InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'");
+ InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'");
- InstructionDesc[OpLogicalNot].operands.push(OperandId, "'Operand'");
+ InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'");
- InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'");
- InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'");
+ InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'");
+ InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'");
- InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'");
- InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'");
- InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'");
- InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'");
+ InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'");
- InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'");
- InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'");
-
- InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'");
- InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'");
- InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'");
-
- InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'");
+ InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'");
- InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'");
- InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'");
+ InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
+ InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
- InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpDPdx].operands.push(OperandId, "'P'");
- InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpDPdy].operands.push(OperandId, "'P'");
- InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpFwidth].operands.push(OperandId, "'P'");
- InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'");
- InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'");
- InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'");
+ InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdx].operands.push(OperandId, "'P'");
+ InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdy].operands.push(OperandId, "'P'");
+ InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'");
- InstructionDesc[OpFwidth].operands.push(OperandId, "'P'");
+ InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'");
+ InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'");
- InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'");
+ InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'");
- InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'");
+ InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'");
- InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'");
+ InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'");
+ InstructionDesc[OpControlBarrier].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'");
+ InstructionDesc[OpMemoryBarrier].operands.push(OperandScope, "'Memory'");
+ InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'");
+ InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Sample'");
- InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'");
+ InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicLoad].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'");
+ InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicStore].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'");
- InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'");
- InstructionDesc[OpControlBarrier].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicExchange].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'");
- InstructionDesc[OpMemoryBarrier].operands.push(OperandScope, "'Memory'");
- InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Equal'");
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Unequal'");
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'");
- InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Image'");
- InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Sample'");
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Equal'");
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'");
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'");
- InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicLoad].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicStore].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicIDecrement].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicExchange].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Equal'");
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Unequal'");
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'");
+ InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicFAddEXT].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicFAddEXT].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Equal'");
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'");
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'");
+ InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicUMin].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicIDecrement].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicUMax].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicIAdd].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicSMin].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicSMin].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicFAddEXT].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicFAddEXT].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicSMax].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicUMin].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'");
- InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicUMax].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'");
+
+ InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicOr].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'");
+
+ InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicXor].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'");
+ InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'");
+
+ InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandMemorySemantics, "'Semantics'");
+
+ InstructionDesc[OpAtomicFlagClear].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpAtomicFlagClear].operands.push(OperandScope, "'Scope'");
+ InstructionDesc[OpAtomicFlagClear].operands.push(OperandMemorySemantics, "'Semantics'");
+
+ InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'");
+ InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Continue Target'");
+ InstructionDesc[OpLoopMerge].operands.push(OperandLoop, "");
+ InstructionDesc[OpLoopMerge].operands.push(OperandOptionalLiteral, "");
+
+ InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Merge Block'");
+ InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, "");
+
+ InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'");
+
+ InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'");
+ InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'");
+ InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'");
+ InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'");
+
+ InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'");
+ InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'");
+ InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'");
+
+
+ InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'");
+
+ InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'");
+
+ InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'");
+
+ InstructionDesc[OpGroupAsyncCopy].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Destination'");
+ InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Source'");
+ InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Num Elements'");
+ InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Stride'");
+ InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Event'");
+
+ InstructionDesc[OpGroupWaitEvents].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Num Events'");
+ InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Events List'");
+
+ InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'");
+
+ InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'");
+
+ InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'");
+
+ InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'");
+
+ InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'");
+
+ InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'");
+
+ InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupSMin].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupFMin].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupUMax].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupSMax].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupFMax].operands.push(OperandId, "X");
+
+ InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'");
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'");
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'");
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'");
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
+ InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
+ InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
+ InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
+ InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'");
+
+ InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'");
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Size'");
+ InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
+
+ InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'");
+ InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'");
+ InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'");
+
+ InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'");
+ InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'");
+ InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'");
+
+ InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'");
+ InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'");
+
+ InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'");
+
+ InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'");
+
+ InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'");
+
+ InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'");
+ InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'");
+ InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'");
+ InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'");
+
+ InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'");
+ InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'");
+ InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'");
+ InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'");
+
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'");
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'");
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'");
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'");
+ InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'");
+
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'");
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'");
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'");
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'");
+ InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'");
+
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'");
+ InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'");
+
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'");
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'");
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
+ InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
+
+ InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'");
+
+ InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID");
+
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit");
+
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'");
+
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask");
+
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset");
+
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset");
+
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicSMin].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicSMin].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicSMax].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true);
- InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'");
-
- InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicOr].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'");
-
- InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicXor].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'");
- InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'");
-
- InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandMemorySemantics, "'Semantics'");
-
- InstructionDesc[OpAtomicFlagClear].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpAtomicFlagClear].operands.push(OperandScope, "'Scope'");
- InstructionDesc[OpAtomicFlagClear].operands.push(OperandMemorySemantics, "'Semantics'");
-
- InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'");
- InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Continue Target'");
- InstructionDesc[OpLoopMerge].operands.push(OperandLoop, "");
- InstructionDesc[OpLoopMerge].operands.push(OperandOptionalLiteral, "");
-
- InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Merge Block'");
- InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, "");
-
- InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'");
-
- InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'");
- InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'");
- InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'");
- InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'");
-
- InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'");
- InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'");
- InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'");
-
-
- InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'");
-
- InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'");
-
- InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'");
-
- InstructionDesc[OpGroupAsyncCopy].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Destination'");
- InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Source'");
- InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Num Elements'");
- InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Stride'");
- InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Event'");
-
- InstructionDesc[OpGroupWaitEvents].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Num Events'");
- InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Events List'");
-
- InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'");
-
- InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'");
-
- InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'");
- InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'");
-
- InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'");
-
- InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'");
-
- InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'");
-
- InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupSMin].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupFMin].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupUMax].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupSMax].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupFMax].operands.push(OperandId, "X");
-
- InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'");
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'");
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'");
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'");
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
- InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
- InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
- InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
- InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'");
-
- InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'");
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'");
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'");
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'");
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'");
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Size'");
- InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Alignment'");
-
- InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'");
- InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'");
- InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'");
-
- InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'");
- InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'");
- InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'");
-
- InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'");
- InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'");
-
- InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'");
-
- InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'");
-
- InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'");
-
- InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'");
- InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'");
- InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'");
- InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'");
-
- InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'");
- InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'");
- InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'");
- InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'");
-
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'");
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'");
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'");
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'");
- InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'");
-
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'");
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'");
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'");
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'");
- InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'");
-
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'");
- InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'");
-
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'");
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'");
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'");
- InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'");
-
- InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'");
-
- InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID");
-
- InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit");
-
- InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'");
-
- InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask");
-
- InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset");
-
- InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset");
-
- InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true);
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true);
+
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'");
+
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
+ InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'");
+
+ InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
+
+ InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'");
+
+ InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandId, "'Predicate'");
+
+ InstructionDesc[OpSubgroupAllKHR].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpSubgroupAllKHR].operands.push(OperandId, "'Predicate'");
+
+ InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'");
+
+ InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'");
+ InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'");
+
+ InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'");
+
+ InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'");
+
+ InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'");
+
+ InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'");
+
+ InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X");
+
+ InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
+ InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
+ InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X");
+
+ InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'");
+
+ InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'");
+ InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
+
+ InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
+
+ InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
+
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpTraceNV].setResultAndType(false, false);
+
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'");
+ InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false);
+
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Miss Index'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Origin'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Direction'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpTraceRayKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'");
+ InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'");
+
+ InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false);
+
+ InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpTerminateRayNV].setResultAndType(false, false);
+
+ InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index");
+ InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID");
+ InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false);
+
+ InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index");
+ InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData");
+ InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value");
+ InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true);
+
+ // Ray Query
+ InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
+ InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false);
+
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayFlags'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'CullMask'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmin'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmax'");
+ InstructionDesc[OpRayQueryInitializeKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryTerminateKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryTerminateKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'THit'");
+ InstructionDesc[OpRayQueryGenerateIntersectionKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryConfirmIntersectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryConfirmIntersectionKHR].setResultAndType(false, false);
+
+ InstructionDesc[OpRayQueryProceedKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryProceedKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionTypeKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetRayTMinKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetRayTMinKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetRayFlagsKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetRayFlagsKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionTKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].setResultAndType(true, true);
- InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true);
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].setResultAndType(true, true);
- InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true);
+ InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].setResultAndType(true, true);
- InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true);
+ InstructionDesc[OpRayQueryGetWorldRayOriginKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetWorldRayOriginKHR].setResultAndType(true, true);
- InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true);
+ InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'RayQuery'");
+ InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'Committed'");
+ InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true);
+
+ InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'");
+ InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'");
+ InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'");
+ InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coarse'");
+ InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandImageOperands, "", true);
+ InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandVariableIds, "", true);
+
+ InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'");
+ InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'");
- InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true);
-
- InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'");
-
- InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X");
- InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'");
-
- InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'");
-
- InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'");
-
- InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandId, "'Predicate'");
-
- InstructionDesc[OpSubgroupAllKHR].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpSubgroupAllKHR].operands.push(OperandId, "'Predicate'");
-
- InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'");
-
- InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'");
- InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'");
-
- InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'");
-
- InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'");
-
- InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'");
-
- InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'");
-
- InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X");
-
- InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'");
- InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
- InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X");
-
- InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'");
- InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'");
-
- InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'");
- InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
-
- InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
-
- InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
-
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpTraceNV].setResultAndType(false, false);
-
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'");
- InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false);
-
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Miss Index'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Origin'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Direction'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpTraceRayKHR].setResultAndType(false, false);
-
- InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'");
- InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'");
-
- InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false);
-
- InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false);
-
- InstructionDesc[OpTerminateRayNV].setResultAndType(false, false);
-
- InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false);
-
- InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index");
- InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID");
- InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false);
-
- InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index");
- InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData");
- InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false);
-
- InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value");
- InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true);
-
- // Ray Query
- InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false);
- InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false);
-
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'");
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayFlags'");
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'CullMask'");
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmin'");
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmax'");
- InstructionDesc[OpRayQueryInitializeKHR].setResultAndType(false, false);
-
- InstructionDesc[OpRayQueryTerminateKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryTerminateKHR].setResultAndType(false, false);
-
- InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'THit'");
- InstructionDesc[OpRayQueryGenerateIntersectionKHR].setResultAndType(false, false);
-
- InstructionDesc[OpRayQueryConfirmIntersectionKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryConfirmIntersectionKHR].setResultAndType(false, false);
-
- InstructionDesc[OpRayQueryProceedKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryProceedKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionTypeKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetRayTMinKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetRayTMinKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetRayFlagsKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetRayFlagsKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionTKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].setResultAndType(true, true);
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'");
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'");
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'");
+ InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false);
- InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].setResultAndType(true, true);
+ InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'");
+ InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'");
+ InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false);
- InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].setResultAndType(true, true);
- InstructionDesc[OpRayQueryGetWorldRayOriginKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetWorldRayOriginKHR].setResultAndType(true, true);
-
- InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].setResultAndType(true, true);
+ InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'");
+ InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'");
+ InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'");
+ InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Columns'");
- InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true);
+ InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Stride'");
+ InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Column Major'");
+ InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandMemoryAccess, "'Memory Access'");
+ InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandLiteralNumber, "", true);
+ InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "", true);
- InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'RayQuery'");
- InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'Committed'");
- InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true);
+ InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Object'");
+ InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Stride'");
+ InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Column Major'");
+ InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandMemoryAccess, "'Memory Access'");
+ InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandLiteralNumber, "", true);
+ InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "", true);
- InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'");
- InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'");
- InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'");
- InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coarse'");
- InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandImageOperands, "", true);
- InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandVariableIds, "", true);
-
- InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'");
- InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'");
+ InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'A'");
+ InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'B'");
+ InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'");
- InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'");
- InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'");
- InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'");
- InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false);
+ InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'");
- InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'");
- InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'");
- InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false);
+ InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Component Type'");
+ InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Scope'");
+ InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Rows'");
+ InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Columns'");
+ InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Use'");
+ InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Memory Layout'");
+ InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Stride'");
+ InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandMemoryAccess, "'Memory Access'");
+ InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandLiteralNumber, "", true);
+ InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "", true);
- InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'");
- InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'");
- InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'");
- InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Columns'");
+ InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Pointer'");
+ InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Object'");
+ InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Memory Layout'");
+ InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Stride'");
+ InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandMemoryAccess, "'Memory Access'");
+ InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandLiteralNumber, "", true);
+ InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "", true);
- InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Stride'");
- InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Column Major'");
- InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandMemoryAccess, "'Memory Access'");
- InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandLiteralNumber, "", true);
- InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "", true);
+ InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'A'");
+ InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'B'");
+ InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'C'");
+ InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandCooperativeMatrixOperands, "'Cooperative Matrix Operands'", true);
- InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Pointer'");
- InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Object'");
- InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Stride'");
- InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Column Major'");
- InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandMemoryAccess, "'Memory Access'");
- InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandLiteralNumber, "", true);
- InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "", true);
-
- InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'A'");
- InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'B'");
- InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'");
-
- InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'");
-
- InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false);
-
- InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'");
-
- InstructionDesc[OpTypeHitObjectNV].setResultAndType(true, false);
-
- InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].setResultAndType(true, true);
-
- InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Hint'");
- InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Bits'");
- InstructionDesc[OpReorderThreadWithHintNV].setResultAndType(false, false);
-
- InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Hint'");
- InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Bits'");
- InstructionDesc[OpReorderThreadWithHitObjectNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectGetCurrentTimeNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetCurrentTimeNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetHitKindNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetHitKindNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetPrimitiveIndexNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetPrimitiveIndexNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetGeometryIndexNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetGeometryIndexNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetInstanceIdNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetInstanceIdNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetObjectRayDirectionNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetObjectRayDirectionNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetObjectRayOriginNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetObjectRayOriginNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetWorldRayDirectionNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetWorldRayDirectionNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetWorldRayOriginNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetWorldRayOriginNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetWorldToObjectNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetWorldToObjectNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetObjectToWorldNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetObjectToWorldNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetRayTMaxNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetRayTMaxNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetRayTMinNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetRayTMinNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectIsEmptyNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectIsEmptyNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectIsHitNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectIsHitNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectIsMissNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectIsMissNV].setResultAndType(true, true);
-
- InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObjectAttribute'");
- InstructionDesc[OpHitObjectGetAttributesNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpHitObjectExecuteShaderNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'InstanceId'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'PrimitiveId'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'GeometryIndex'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitKind'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject Attribute'");
- InstructionDesc[OpHitObjectRecordHitNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'InstanceId'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'PrimitiveId'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'GeometryIndex'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitKind'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Current Time'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject Attribute'");
- InstructionDesc[OpHitObjectRecordHitMotionNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'InstanceId'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'PrimitiveId'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'GeometryIndex'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitKind'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'SBT Record Index'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject Attribute'");
- InstructionDesc[OpHitObjectRecordHitWithIndexNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'InstanceId'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'PrimitiveId'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'GeometryIndex'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitKind'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'SBT Record Index'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Current Time'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject Attribute'");
- InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'SBT Index'");
- InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectRecordMissNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'SBT Index'");
- InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Current Time'");
- InstructionDesc[OpHitObjectRecordMissMotionNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectRecordEmptyNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectRecordEmptyNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'RayFlags'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Cullmask'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Miss Index'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpHitObjectTraceRayNV].setResultAndType(false, false);
-
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'HitObject'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'RayFlags'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Cullmask'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Miss Index'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Origin'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMin'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Direction'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMax'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Time'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'");
- InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false);
-
- InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Attachment'");
- InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true);
- InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true);
- InstructionDesc[OpDepthAttachmentReadEXT].operands.push(OperandId, "'Sample'", true);
+ InstructionDesc[OpCooperativeMatrixLengthKHR].operands.push(OperandId, "'Type'");
+
+ InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false);
+
+ InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'");
+
+ InstructionDesc[OpTypeHitObjectNV].setResultAndType(true, false);
+
+ InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].setResultAndType(true, true);
+
+ InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Hint'");
+ InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Bits'");
+ InstructionDesc[OpReorderThreadWithHintNV].setResultAndType(false, false);
+
+ InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Hint'");
+ InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Bits'");
+ InstructionDesc[OpReorderThreadWithHitObjectNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectGetCurrentTimeNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetCurrentTimeNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetHitKindNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetHitKindNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetPrimitiveIndexNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetPrimitiveIndexNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetGeometryIndexNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetGeometryIndexNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetInstanceIdNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetInstanceIdNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetObjectRayDirectionNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetObjectRayDirectionNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetObjectRayOriginNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetObjectRayOriginNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetWorldRayDirectionNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetWorldRayDirectionNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetWorldRayOriginNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetWorldRayOriginNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetWorldToObjectNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetWorldToObjectNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetObjectToWorldNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetObjectToWorldNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetRayTMaxNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetRayTMaxNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetRayTMinNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetRayTMinNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectIsEmptyNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectIsEmptyNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectIsHitNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectIsHitNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectIsMissNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectIsMissNV].setResultAndType(true, true);
+
+ InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObjectAttribute'");
+ InstructionDesc[OpHitObjectGetAttributesNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpHitObjectExecuteShaderNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'InstanceId'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'PrimitiveId'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'GeometryIndex'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitKind'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject Attribute'");
+ InstructionDesc[OpHitObjectRecordHitNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'InstanceId'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'PrimitiveId'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'GeometryIndex'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitKind'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Current Time'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject Attribute'");
+ InstructionDesc[OpHitObjectRecordHitMotionNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'InstanceId'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'PrimitiveId'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'GeometryIndex'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitKind'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'SBT Record Index'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject Attribute'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'InstanceId'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'PrimitiveId'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'GeometryIndex'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitKind'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'SBT Record Index'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Current Time'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject Attribute'");
+ InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'SBT Index'");
+ InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectRecordMissNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'SBT Index'");
+ InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Current Time'");
+ InstructionDesc[OpHitObjectRecordMissMotionNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectRecordEmptyNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectRecordEmptyNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'RayFlags'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Cullmask'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Miss Index'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpHitObjectTraceRayNV].setResultAndType(false, false);
+
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'HitObject'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'RayFlags'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Cullmask'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Miss Index'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Origin'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMin'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Direction'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMax'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Time'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'");
+ InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false);
+
+ InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Attachment'");
+ InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true);
+ InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true);
+ InstructionDesc[OpDepthAttachmentReadEXT].operands.push(OperandId, "'Sample'", true);
+ });
}
}; // end spv namespace
diff --git a/thirdparty/glslang/SPIRV/doc.h b/thirdparty/glslang/SPIRV/doc.h
index 7e1559950e..b60ad34018 100644
--- a/thirdparty/glslang/SPIRV/doc.h
+++ b/thirdparty/glslang/SPIRV/doc.h
@@ -156,6 +156,7 @@ enum OperandClass {
OperandKernelEnqueueFlags,
OperandKernelProfilingInfo,
OperandCapability,
+ OperandCooperativeMatrixOperands,
OperandOpcode,
@@ -197,7 +198,7 @@ public:
// Parameterize a set of enumerants that form an enum
class EnumDefinition : public EnumParameters {
public:
- EnumDefinition() :
+ EnumDefinition() :
ceiling(0), bitmask(false), getName(nullptr), enumParams(nullptr), operandParams(nullptr) { }
void set(int ceil, const char* (*name)(int), EnumParameters* ep, bool mask = false)
{
diff --git a/thirdparty/glslang/SPIRV/spirv.hpp b/thirdparty/glslang/SPIRV/spirv.hpp
index 111285326d..4fb721ef18 100644
--- a/thirdparty/glslang/SPIRV/spirv.hpp
+++ b/thirdparty/glslang/SPIRV/spirv.hpp
@@ -1,19 +1,19 @@
// Copyright (c) 2014-2020 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"),
// to deal in the Materials without restriction, including without limitation
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Materials, and to permit persons to whom the
// Materials are furnished to do so, subject to the following conditions:
-//
+//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Materials.
-//
+//
// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
-// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
-//
+// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
+//
// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
@@ -27,7 +27,7 @@
// Enumeration tokens for SPIR-V, in various styles:
// C, C++, C++11, JSON, Lua, Python, C#, D, Beef
-//
+//
// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
@@ -38,7 +38,7 @@
// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
// - Beef will use enum classes in the Specification class located in the "Spv" namespace,
// e.g.: Spv.Specification.SourceLanguage.GLSL
-//
+//
// Some tokens act like mask values, which can be OR'd together,
// while others are mutually exclusive. The mask-like ones have
// "Mask" in their name, and a parallel enum that has the shift
@@ -1144,6 +1144,7 @@ enum Capability {
CapabilityDotProduct = 6019,
CapabilityDotProductKHR = 6019,
CapabilityRayCullMaskKHR = 6020,
+ CapabilityCooperativeMatrixKHR = 6022,
CapabilityBitInstructions = 6025,
CapabilityGroupNonUniformRotateKHR = 6026,
CapabilityAtomicFloat32AddEXT = 6033,
@@ -1261,6 +1262,37 @@ enum PackedVectorFormat {
PackedVectorFormatMax = 0x7fffffff,
};
+enum CooperativeMatrixOperandsShift {
+ CooperativeMatrixOperandsMatrixASignedComponentsShift = 0,
+ CooperativeMatrixOperandsMatrixBSignedComponentsShift = 1,
+ CooperativeMatrixOperandsMatrixCSignedComponentsShift = 2,
+ CooperativeMatrixOperandsMatrixResultSignedComponentsShift = 3,
+ CooperativeMatrixOperandsSaturatingAccumulationShift = 4,
+ CooperativeMatrixOperandsMax = 0x7fffffff,
+};
+
+enum CooperativeMatrixOperandsMask {
+ CooperativeMatrixOperandsMaskNone = 0,
+ CooperativeMatrixOperandsMatrixASignedComponentsMask = 0x00000001,
+ CooperativeMatrixOperandsMatrixBSignedComponentsMask = 0x00000002,
+ CooperativeMatrixOperandsMatrixCSignedComponentsMask = 0x00000004,
+ CooperativeMatrixOperandsMatrixResultSignedComponentsMask = 0x00000008,
+ CooperativeMatrixOperandsSaturatingAccumulationMask = 0x00000010,
+};
+
+enum CooperativeMatrixLayout {
+ CooperativeMatrixLayoutCooperativeMatrixRowMajorKHR = 0,
+ CooperativeMatrixLayoutCooperativeMatrixColumnMajorKHR = 1,
+ CooperativeMatrixLayoutMax = 0x7fffffff,
+};
+
+enum CooperativeMatrixUse {
+ CooperativeMatrixUseMatrixAKHR = 0,
+ CooperativeMatrixUseMatrixBKHR = 1,
+ CooperativeMatrixUseMatrixAccumulatorKHR = 2,
+ CooperativeMatrixUseMax = 0x7fffffff,
+};
+
enum Op {
OpNop = 0,
OpUndef = 1,
@@ -1634,6 +1666,11 @@ enum Op {
OpUDotAccSatKHR = 4454,
OpSUDotAccSat = 4455,
OpSUDotAccSatKHR = 4455,
+ OpTypeCooperativeMatrixKHR = 4456,
+ OpCooperativeMatrixLoadKHR = 4457,
+ OpCooperativeMatrixStoreKHR = 4458,
+ OpCooperativeMatrixMulAddKHR = 4459,
+ OpCooperativeMatrixLengthKHR = 4460,
OpTypeRayQueryKHR = 4472,
OpRayQueryInitializeKHR = 4473,
OpRayQueryTerminateKHR = 4474,
@@ -2346,6 +2383,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
+ case OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
+ case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
+ case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
+ case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
+ case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
@@ -2722,6 +2764,10 @@ inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShad
inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
+inline CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); }
+inline CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); }
+inline CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); }
+inline CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); }
} // end namespace spv
diff --git a/thirdparty/glslang/SPIRV/spvIR.h b/thirdparty/glslang/SPIRV/spvIR.h
index 09691273ab..5cbffec25f 100644
--- a/thirdparty/glslang/SPIRV/spvIR.h
+++ b/thirdparty/glslang/SPIRV/spvIR.h
@@ -97,6 +97,8 @@ public:
explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { }
virtual ~Instruction() {}
void addIdOperand(Id id) {
+ // ids can't be 0
+ assert(id);
operands.push_back(id);
idOperand.push_back(true);
}
@@ -386,7 +388,7 @@ public:
if (lineInstruction != nullptr) {
lineInstruction->dump(out);
}
-
+
// OpFunction
functionInstruction.dump(out);
diff --git a/thirdparty/glslang/glslang/Include/BaseTypes.h b/thirdparty/glslang/glslang/Include/BaseTypes.h
index f41941e73d..ae49a936a1 100644..100755
--- a/thirdparty/glslang/glslang/Include/BaseTypes.h
+++ b/thirdparty/glslang/glslang/Include/BaseTypes.h
@@ -66,10 +66,9 @@ enum TBasicType {
EbtReference,
EbtRayQuery,
EbtHitObjectNV,
-#ifndef GLSLANG_WEB
+ EbtCoopmat,
// SPIR-V type defined by spirv_type
EbtSpirvType,
-#endif
// HLSL types that live only temporarily.
EbtString,
@@ -96,9 +95,7 @@ enum TStorageQualifier {
EvqUniform, // read only, shared with app
EvqBuffer, // read/write, shared with app
EvqShared, // compute shader's read/write 'shared' qualifier
-#ifndef GLSLANG_WEB
EvqSpirvStorageClass, // spirv_storage_class
-#endif
EvqPayload,
EvqPayloadIn,
@@ -341,10 +338,6 @@ enum TPrecisionQualifier {
EpqHigh
};
-#ifdef GLSLANG_WEB
-__inline const char* GetStorageQualifierString(TStorageQualifier q) { return ""; }
-__inline const char* GetPrecisionQualifierString(TPrecisionQualifier p) { return ""; }
-#else
// These will show up in error messages
__inline const char* GetStorageQualifierString(TStorageQualifier q)
{
@@ -353,9 +346,7 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q)
case EvqGlobal: return "global"; break;
case EvqConst: return "const"; break;
case EvqConstReadOnly: return "const (read only)"; break;
-#ifndef GLSLANG_WEB
case EvqSpirvStorageClass: return "spirv_storage_class"; break;
-#endif
case EvqVaryingIn: return "in"; break;
case EvqVaryingOut: return "out"; break;
case EvqUniform: return "uniform"; break;
@@ -546,7 +537,6 @@ __inline const char* GetPrecisionQualifierString(TPrecisionQualifier p)
default: return "unknown precision qualifier";
}
}
-#endif
__inline bool isTypeSignedInt(TBasicType type)
{
diff --git a/thirdparty/glslang/glslang/Include/Common.h b/thirdparty/glslang/glslang/Include/Common.h
index bb2b545b62..080b8071e4 100644
--- a/thirdparty/glslang/glslang/Include/Common.h
+++ b/thirdparty/glslang/glslang/Include/Common.h
@@ -46,7 +46,6 @@
#endif
#include <cstdint>
#include <cstdio>
-#include <cstdint>
#include <cstdlib>
#include <list>
#include <map>
diff --git a/thirdparty/glslang/glslang/Include/ConstantUnion.h b/thirdparty/glslang/glslang/Include/ConstantUnion.h
index c4ffb85771..1f39fc5930 100644
--- a/thirdparty/glslang/glslang/Include/ConstantUnion.h
+++ b/thirdparty/glslang/glslang/Include/ConstantUnion.h
@@ -234,7 +234,6 @@ public:
break;
-#ifndef GLSLANG_WEB
case EbtInt16:
if (constant.i16Const == i16Const)
return true;
@@ -265,7 +264,6 @@ public:
return true;
break;
-#endif
default:
assert(false && "Default missing");
}
@@ -347,7 +345,6 @@ public:
return true;
return false;
-#ifndef GLSLANG_WEB
case EbtInt8:
if (i8Const > constant.i8Const)
return true;
@@ -378,7 +375,6 @@ public:
return true;
return false;
-#endif
default:
assert(false && "Default missing");
return false;
@@ -389,7 +385,6 @@ public:
{
assert(type == constant.type);
switch (type) {
-#ifndef GLSLANG_WEB
case EbtInt8:
if (i8Const < constant.i8Const)
return true;
@@ -419,7 +414,6 @@ public:
return true;
return false;
-#endif
case EbtDouble:
if (dConst < constant.dConst)
return true;
@@ -449,14 +443,12 @@ public:
case EbtInt: returnValue.setIConst(iConst + constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst + constant.uConst); break;
case EbtDouble: returnValue.setDConst(dConst + constant.dConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(i8Const + constant.i8Const); break;
case EbtInt16: returnValue.setI16Const(i16Const + constant.i16Const); break;
case EbtInt64: returnValue.setI64Const(i64Const + constant.i64Const); break;
case EbtUint8: returnValue.setU8Const(u8Const + constant.u8Const); break;
case EbtUint16: returnValue.setU16Const(u16Const + constant.u16Const); break;
case EbtUint64: returnValue.setU64Const(u64Const + constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
@@ -471,14 +463,12 @@ public:
case EbtInt: returnValue.setIConst(iConst - constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst - constant.uConst); break;
case EbtDouble: returnValue.setDConst(dConst - constant.dConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(i8Const - constant.i8Const); break;
case EbtInt16: returnValue.setI16Const(i16Const - constant.i16Const); break;
case EbtInt64: returnValue.setI64Const(i64Const - constant.i64Const); break;
case EbtUint8: returnValue.setU8Const(u8Const - constant.u8Const); break;
case EbtUint16: returnValue.setU16Const(u16Const - constant.u16Const); break;
case EbtUint64: returnValue.setU64Const(u64Const - constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
@@ -493,14 +483,12 @@ public:
case EbtInt: returnValue.setIConst(iConst * constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst * constant.uConst); break;
case EbtDouble: returnValue.setDConst(dConst * constant.dConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(i8Const * constant.i8Const); break;
case EbtInt16: returnValue.setI16Const(i16Const * constant.i16Const); break;
case EbtInt64: returnValue.setI64Const(i64Const * constant.i64Const); break;
case EbtUint8: returnValue.setU8Const(u8Const * constant.u8Const); break;
case EbtUint16: returnValue.setU16Const(u16Const * constant.u16Const); break;
case EbtUint64: returnValue.setU64Const(u64Const * constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
@@ -514,14 +502,12 @@ public:
switch (type) {
case EbtInt: returnValue.setIConst(iConst % constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst % constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(i8Const % constant.i8Const); break;
case EbtInt16: returnValue.setI8Const(i8Const % constant.i16Const); break;
case EbtInt64: returnValue.setI64Const(i64Const % constant.i64Const); break;
case EbtUint8: returnValue.setU8Const(u8Const % constant.u8Const); break;
case EbtUint16: returnValue.setU16Const(u16Const % constant.u16Const); break;
case EbtUint64: returnValue.setU64Const(u64Const % constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
@@ -532,7 +518,6 @@ public:
{
TConstUnion returnValue;
switch (type) {
-#ifndef GLSLANG_WEB
case EbtInt8:
switch (constant.type) {
case EbtInt8: returnValue.setI8Const(i8Const >> constant.i8Const); break;
@@ -585,19 +570,16 @@ public:
default: assert(false && "Default missing");
}
break;
-#endif
case EbtInt:
switch (constant.type) {
case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break;
case EbtUint: returnValue.setIConst(iConst >> constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setIConst(iConst >> constant.i8Const); break;
case EbtUint8: returnValue.setIConst(iConst >> constant.u8Const); break;
case EbtInt16: returnValue.setIConst(iConst >> constant.i16Const); break;
case EbtUint16: returnValue.setIConst(iConst >> constant.u16Const); break;
case EbtInt64: returnValue.setIConst(iConst >> constant.i64Const); break;
case EbtUint64: returnValue.setIConst(iConst >> constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
break;
@@ -605,18 +587,15 @@ public:
switch (constant.type) {
case EbtInt: returnValue.setUConst(uConst >> constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst >> constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setUConst(uConst >> constant.i8Const); break;
case EbtUint8: returnValue.setUConst(uConst >> constant.u8Const); break;
case EbtInt16: returnValue.setUConst(uConst >> constant.i16Const); break;
case EbtUint16: returnValue.setUConst(uConst >> constant.u16Const); break;
case EbtInt64: returnValue.setUConst(uConst >> constant.i64Const); break;
case EbtUint64: returnValue.setUConst(uConst >> constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
break;
-#ifndef GLSLANG_WEB
case EbtInt64:
switch (constant.type) {
case EbtInt8: returnValue.setI64Const(i64Const >> constant.i8Const); break;
@@ -643,7 +622,6 @@ public:
default: assert(false && "Default missing");
}
break;
-#endif
default: assert(false && "Default missing");
}
@@ -654,7 +632,6 @@ public:
{
TConstUnion returnValue;
switch (type) {
-#ifndef GLSLANG_WEB
case EbtInt8:
switch (constant.type) {
case EbtInt8: returnValue.setI8Const(i8Const << constant.i8Const); break;
@@ -733,19 +710,16 @@ public:
default: assert(false && "Default missing");
}
break;
-#endif
case EbtInt:
switch (constant.type) {
case EbtInt: returnValue.setIConst(iConst << constant.iConst); break;
case EbtUint: returnValue.setIConst(iConst << constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setIConst(iConst << constant.i8Const); break;
case EbtUint8: returnValue.setIConst(iConst << constant.u8Const); break;
case EbtInt16: returnValue.setIConst(iConst << constant.i16Const); break;
case EbtUint16: returnValue.setIConst(iConst << constant.u16Const); break;
case EbtInt64: returnValue.setIConst(iConst << constant.i64Const); break;
case EbtUint64: returnValue.setIConst(iConst << constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
break;
@@ -753,14 +727,12 @@ public:
switch (constant.type) {
case EbtInt: returnValue.setUConst(uConst << constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst << constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setUConst(uConst << constant.i8Const); break;
case EbtUint8: returnValue.setUConst(uConst << constant.u8Const); break;
case EbtInt16: returnValue.setUConst(uConst << constant.i16Const); break;
case EbtUint16: returnValue.setUConst(uConst << constant.u16Const); break;
case EbtInt64: returnValue.setUConst(uConst << constant.i64Const); break;
case EbtUint64: returnValue.setUConst(uConst << constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
break;
@@ -777,14 +749,12 @@ public:
switch (type) {
case EbtInt: returnValue.setIConst(iConst & constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst & constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(i8Const & constant.i8Const); break;
case EbtUint8: returnValue.setU8Const(u8Const & constant.u8Const); break;
case EbtInt16: returnValue.setI16Const(i16Const & constant.i16Const); break;
case EbtUint16: returnValue.setU16Const(u16Const & constant.u16Const); break;
case EbtInt64: returnValue.setI64Const(i64Const & constant.i64Const); break;
case EbtUint64: returnValue.setU64Const(u64Const & constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
@@ -798,14 +768,12 @@ public:
switch (type) {
case EbtInt: returnValue.setIConst(iConst | constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst | constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(i8Const | constant.i8Const); break;
case EbtUint8: returnValue.setU8Const(u8Const | constant.u8Const); break;
case EbtInt16: returnValue.setI16Const(i16Const | constant.i16Const); break;
case EbtUint16: returnValue.setU16Const(u16Const | constant.u16Const); break;
case EbtInt64: returnValue.setI64Const(i64Const | constant.i64Const); break;
case EbtUint64: returnValue.setU64Const(u64Const | constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
@@ -819,14 +787,12 @@ public:
switch (type) {
case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break;
case EbtUint: returnValue.setUConst(uConst ^ constant.uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(i8Const ^ constant.i8Const); break;
case EbtUint8: returnValue.setU8Const(u8Const ^ constant.u8Const); break;
case EbtInt16: returnValue.setI16Const(i16Const ^ constant.i16Const); break;
case EbtUint16: returnValue.setU16Const(u16Const ^ constant.u16Const); break;
case EbtInt64: returnValue.setI64Const(i64Const ^ constant.i64Const); break;
case EbtUint64: returnValue.setU64Const(u64Const ^ constant.u64Const); break;
-#endif
default: assert(false && "Default missing");
}
@@ -839,14 +805,12 @@ public:
switch (type) {
case EbtInt: returnValue.setIConst(~iConst); break;
case EbtUint: returnValue.setUConst(~uConst); break;
-#ifndef GLSLANG_WEB
case EbtInt8: returnValue.setI8Const(~i8Const); break;
case EbtUint8: returnValue.setU8Const(~u8Const); break;
case EbtInt16: returnValue.setI16Const(~i16Const); break;
case EbtUint16: returnValue.setU16Const(~u16Const); break;
case EbtInt64: returnValue.setI64Const(~i64Const); break;
case EbtUint64: returnValue.setU64Const(~u64Const); break;
-#endif
default: assert(false && "Default missing");
}
diff --git a/thirdparty/glslang/glslang/Include/InitializeGlobals.h b/thirdparty/glslang/glslang/Include/InitializeGlobals.h
index 95d0a40e99..b7fdd7aabc 100644
--- a/thirdparty/glslang/glslang/Include/InitializeGlobals.h
+++ b/thirdparty/glslang/glslang/Include/InitializeGlobals.h
@@ -37,7 +37,7 @@
namespace glslang {
-bool InitializePoolIndex();
+inline bool InitializePoolIndex() { return true; } // DEPRECATED: No need to call
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/Include/SpirvIntrinsics.h b/thirdparty/glslang/glslang/Include/SpirvIntrinsics.h
index 3c7d72ce97..bfb551e445 100644
--- a/thirdparty/glslang/glslang/Include/SpirvIntrinsics.h
+++ b/thirdparty/glslang/glslang/Include/SpirvIntrinsics.h
@@ -35,8 +35,6 @@
#pragma once
-#ifndef GLSLANG_WEB
-
//
// GL_EXT_spirv_intrinsics
//
@@ -98,12 +96,23 @@ struct TSpirvInstruction {
struct TSpirvTypeParameter {
POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
- TSpirvTypeParameter(const TIntermConstantUnion* arg) { constant = arg; }
+ TSpirvTypeParameter(const TIntermConstantUnion* arg)
+ {
+ constant = arg;
+ type = nullptr;
+ }
- bool operator==(const TSpirvTypeParameter& rhs) const { return constant == rhs.constant; }
+ TSpirvTypeParameter(const TType *arg)
+ {
+ constant = nullptr;
+ type = arg;
+ }
+
+ bool operator==(const TSpirvTypeParameter& rhs) const;
bool operator!=(const TSpirvTypeParameter& rhs) const { return !operator==(rhs); }
- const TIntermConstantUnion* constant;
+ const TIntermConstantUnion* constant; // Constant expression
+ const TType* type; // Type specifier
};
typedef TVector<TSpirvTypeParameter> TSpirvTypeParameters;
@@ -124,5 +133,3 @@ struct TSpirvType {
};
} // end namespace glslang
-
-#endif // GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/Include/Types.h b/thirdparty/glslang/glslang/Include/Types.h
index c3d0bff44b..26aba9bbf4 100644
--- a/thirdparty/glslang/glslang/Include/Types.h
+++ b/thirdparty/glslang/glslang/Include/Types.h
@@ -86,20 +86,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler
bool sampler : 1; // true means a pure sampler, other fields should be clear()
-#ifdef GLSLANG_WEB
- bool is1D() const { return false; }
- bool isBuffer() const { return false; }
- bool isRect() const { return false; }
- bool isSubpass() const { return false; }
- bool isAttachmentEXT() const { return false; }
- bool isCombined() const { return true; }
- bool isImage() const { return false; }
- bool isImageClass() const { return false; }
- bool isMultiSample() const { return false; }
- bool isExternal() const { return false; }
- void setExternal(bool e) { }
- bool isYuv() const { return false; }
-#else
unsigned int vectorSize : 3; // vector return type size.
// Some languages support structures as sample results. Storing the whole structure in the
// TSampler is too large, so there is an index to a separate table.
@@ -132,7 +118,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
bool isExternal() const { return external; }
void setExternal(bool e) { external = e; }
bool isYuv() const { return yuv; }
-#endif
bool isTexture() const { return !sampler && !image; }
bool isPureSampler() const { return sampler; }
@@ -152,10 +137,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
image = false;
combined = false;
sampler = false;
-#ifndef GLSLANG_WEB
external = false;
yuv = false;
-#endif
#ifdef ENABLE_HLSL
clearReturnStruct();
@@ -207,7 +190,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
shadow = s;
}
-#ifndef GLSLANG_WEB
// make a subpass input attachment
void setSubpass(TBasicType t, bool m = false)
{
@@ -226,7 +208,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
image = true;
dim = EsdAttachmentEXT;
}
-#endif
bool operator==(const TSampler& right) const
{
@@ -264,7 +245,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
switch (type) {
case EbtInt: s.append("i"); break;
case EbtUint: s.append("u"); break;
-#ifndef GLSLANG_WEB
case EbtFloat16: s.append("f16"); break;
case EbtInt8: s.append("i8"); break;
case EbtUint16: s.append("u8"); break;
@@ -272,7 +252,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
case EbtUint8: s.append("u16"); break;
case EbtInt64: s.append("i64"); break;
case EbtUint64: s.append("u64"); break;
-#endif
default: break;
}
if (isImageClass()) {
@@ -298,13 +277,11 @@ struct TSampler { // misnomer now; includes images, textures without sampler,
case Esd2D: s.append("2D"); break;
case Esd3D: s.append("3D"); break;
case EsdCube: s.append("Cube"); break;
-#ifndef GLSLANG_WEB
case Esd1D: s.append("1D"); break;
case EsdRect: s.append("2DRect"); break;
case EsdBuffer: s.append("Buffer"); break;
case EsdSubpass: s.append("Input"); break;
case EsdAttachmentEXT: s.append(""); break;
-#endif
default: break; // some compilers want this
}
if (isMultiSample())
@@ -533,12 +510,10 @@ public:
invariant = false;
makeTemporary();
declaredBuiltIn = EbvNone;
-#ifndef GLSLANG_WEB
noContraction = false;
nullInit = false;
spirvByReference = false;
spirvLiteral = false;
-#endif
defaultBlock = false;
}
@@ -555,21 +530,17 @@ public:
nullInit = false;
defaultBlock = false;
clearLayout();
-#ifndef GLSLANG_WEB
spirvStorageClass = -1;
spirvDecorate = nullptr;
spirvByReference = false;
spirvLiteral = false;
-#endif
}
void clearInterstage()
{
clearInterpolation();
-#ifndef GLSLANG_WEB
patch = false;
sample = false;
-#endif
}
void clearInterpolation()
@@ -577,20 +548,17 @@ public:
centroid = false;
smooth = false;
flat = false;
-#ifndef GLSLANG_WEB
nopersp = false;
explicitInterp = false;
pervertexNV = false;
perPrimitiveNV = false;
perViewNV = false;
perTaskNV = false;
-#endif
pervertexEXT = false;
}
void clearMemory()
{
-#ifndef GLSLANG_WEB
coherent = false;
devicecoherent = false;
queuefamilycoherent = false;
@@ -602,7 +570,6 @@ public:
restrict = false;
readonly = false;
writeonly = false;
-#endif
}
const char* semanticName;
@@ -621,31 +588,6 @@ public:
bool explicitOffset : 1;
bool defaultBlock : 1; // default blocks with matching names have structures merged when linking
-#ifdef GLSLANG_WEB
- bool isWriteOnly() const { return false; }
- bool isReadOnly() const { return false; }
- bool isRestrict() const { return false; }
- bool isCoherent() const { return false; }
- bool isVolatile() const { return false; }
- bool isSample() const { return false; }
- bool isMemory() const { return false; }
- bool isMemoryQualifierImageAndSSBOOnly() const { return false; }
- bool bufferReferenceNeedsVulkanMemoryModel() const { return false; }
- bool isInterpolation() const { return flat || smooth; }
- bool isExplicitInterpolation() const { return false; }
- bool isAuxiliary() const { return centroid; }
- bool isPatch() const { return false; }
- bool isNoContraction() const { return false; }
- void setNoContraction() { }
- bool isPervertexNV() const { return false; }
- bool isPervertexEXT() const { return pervertexEXT; }
- void setNullInit() {}
- bool isNullInit() const { return false; }
- void setSpirvByReference() { }
- bool isSpirvByReference() { return false; }
- void setSpirvLiteral() { }
- bool isSpirvLiteral() { return false; }
-#else
bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects
bool nopersp : 1;
bool explicitInterp : 1;
@@ -712,7 +654,6 @@ public:
bool isSpirvByReference() const { return spirvByReference; }
void setSpirvLiteral() { spirvLiteral = true; }
bool isSpirvLiteral() const { return spirvLiteral; }
-#endif
bool isPipeInput() const
{
@@ -843,9 +784,7 @@ public:
}
void setBlockStorage(TBlockStorageClass newBacking) {
-#ifndef GLSLANG_WEB
layoutPushConstant = (newBacking == EbsPushConstant);
-#endif
switch (newBacking) {
case EbsUniform :
if (layoutPacking == ElpStd430) {
@@ -857,23 +796,16 @@ public:
case EbsStorageBuffer :
storage = EvqBuffer;
break;
-#ifndef GLSLANG_WEB
case EbsPushConstant :
storage = EvqUniform;
layoutSet = TQualifier::layoutSetEnd;
layoutBinding = TQualifier::layoutBindingEnd;
break;
-#endif
default:
break;
}
}
-#ifdef GLSLANG_WEB
- bool isPerView() const { return false; }
- bool isTaskMemory() const { return false; }
- bool isArrayedIo(EShLanguage language) const { return false; }
-#else
bool isPerPrimitive() const { return perPrimitiveNV; }
bool isPerView() const { return perViewNV; }
bool isTaskMemory() const { return perTaskNV; }
@@ -907,14 +839,12 @@ public:
return false;
}
}
-#endif
// Implementing an embedded layout-qualifier class here, since C++ can't have a real class bitfield
void clearLayout() // all layout
{
clearUniformLayout();
-#ifndef GLSLANG_WEB
layoutPushConstant = false;
layoutBufferReference = false;
layoutPassthrough = false;
@@ -927,7 +857,6 @@ public:
layoutBindlessImage = false;
layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd;
layoutFormat = ElfNone;
-#endif
clearInterstageLayout();
@@ -937,14 +866,11 @@ public:
{
layoutLocation = layoutLocationEnd;
layoutComponent = layoutComponentEnd;
-#ifndef GLSLANG_WEB
layoutIndex = layoutIndexEnd;
clearStreamLayout();
clearXfbLayout();
-#endif
}
-#ifndef GLSLANG_WEB
void clearStreamLayout()
{
layoutStream = layoutStreamEnd;
@@ -955,7 +881,6 @@ public:
layoutXfbStride = layoutXfbStrideEnd;
layoutXfbOffset = layoutXfbOffsetEnd;
}
-#endif
bool hasNonXfbLayout() const
{
@@ -1011,7 +936,6 @@ public:
unsigned int layoutSpecConstantId : 11;
static const unsigned int layoutSpecConstantIdEnd = 0x7FF;
-#ifndef GLSLANG_WEB
// stored as log2 of the actual alignment value
unsigned int layoutBufferReferenceAlign : 6;
static const unsigned int layoutBufferReferenceAlignEnd = 0x3F;
@@ -1032,7 +956,6 @@ public:
bool layoutBindlessSampler;
bool layoutBindlessImage;
-#endif
bool hasUniformLayout() const
{
@@ -1052,9 +975,7 @@ public:
layoutSet = layoutSetEnd;
layoutBinding = layoutBindingEnd;
-#ifndef GLSLANG_WEB
layoutAttachment = layoutAttachmentEnd;
-#endif
}
bool hasMatrix() const
@@ -1087,26 +1008,6 @@ public:
{
return layoutBinding != layoutBindingEnd;
}
-#ifdef GLSLANG_WEB
- bool hasOffset() const { return false; }
- bool isNonPerspective() const { return false; }
- bool hasIndex() const { return false; }
- unsigned getIndex() const { return 0; }
- bool hasComponent() const { return false; }
- bool hasStream() const { return false; }
- bool hasFormat() const { return false; }
- bool hasXfb() const { return false; }
- bool hasXfbBuffer() const { return false; }
- bool hasXfbStride() const { return false; }
- bool hasXfbOffset() const { return false; }
- bool hasAttachment() const { return false; }
- TLayoutFormat getFormat() const { return ElfNone; }
- bool isPushConstant() const { return false; }
- bool isShaderRecord() const { return false; }
- bool hasBufferReference() const { return false; }
- bool hasBufferReferenceAlign() const { return false; }
- bool isNonUniform() const { return false; }
-#else
bool hasOffset() const
{
return layoutOffset != layoutNotSet;
@@ -1181,7 +1082,7 @@ public:
const TSpirvDecorate& getSpirvDecorate() const { assert(spirvDecorate); return *spirvDecorate; }
TSpirvDecorate& getSpirvDecorate() { assert(spirvDecorate); return *spirvDecorate; }
TString getSpirvDecorateQualifierString() const;
-#endif
+
bool hasSpecConstantId() const
{
// Not the same thing as being a specialization constant, this
@@ -1215,12 +1116,10 @@ public:
{
switch (packing) {
case ElpStd140: return "std140";
-#ifndef GLSLANG_WEB
case ElpPacked: return "packed";
case ElpShared: return "shared";
case ElpStd430: return "std430";
case ElpScalar: return "scalar";
-#endif
default: return "none";
}
}
@@ -1232,9 +1131,6 @@ public:
default: return "none";
}
}
-#ifdef GLSLANG_WEB
- static const char* getLayoutFormatString(TLayoutFormat f) { return "none"; }
-#else
static const char* getLayoutFormatString(TLayoutFormat f)
{
switch (f) {
@@ -1388,7 +1284,6 @@ public:
default: return "none";
}
}
-#endif
};
// Qualifiers that don't need to be keep per object. They have shader scope, not object scope.
@@ -1405,7 +1300,6 @@ struct TShaderQualifiers {
int localSize[3]; // compute shader
bool localSizeNotDefault[3]; // compute shader
int localSizeSpecId[3]; // compute shader specialization id for gl_WorkGroupSize
-#ifndef GLSLANG_WEB
bool earlyFragmentTests; // fragment input
bool postDepthCoverage; // fragment input
bool earlyAndLateFragmentTestsAMD; //fragment input
@@ -1424,9 +1318,6 @@ struct TShaderQualifiers {
bool layoutPrimitiveCulling; // true if layout primitive_culling set
TLayoutDepth getDepth() const { return layoutDepth; }
TLayoutStencil getStencil() const { return layoutStencil; }
-#else
- TLayoutDepth getDepth() const { return EldNone; }
-#endif
void init()
{
@@ -1447,7 +1338,6 @@ struct TShaderQualifiers {
localSizeSpecId[0] = TQualifier::layoutNotSet;
localSizeSpecId[1] = TQualifier::layoutNotSet;
localSizeSpecId[2] = TQualifier::layoutNotSet;
-#ifndef GLSLANG_WEB
earlyFragmentTests = false;
earlyAndLateFragmentTestsAMD = false;
postDepthCoverage = false;
@@ -1464,14 +1354,9 @@ struct TShaderQualifiers {
layoutPrimitiveCulling = false;
primitives = TQualifier::layoutNotSet;
interlockOrdering = EioNone;
-#endif
}
-#ifdef GLSLANG_WEB
- bool hasBlendEquation() const { return false; }
-#else
bool hasBlendEquation() const { return blendEquation; }
-#endif
// Merge in characteristics from the 'src' qualifier. They can override when
// set, but never erase when not set.
@@ -1504,7 +1389,6 @@ struct TShaderQualifiers {
if (src.localSizeSpecId[i] != TQualifier::layoutNotSet)
localSizeSpecId[i] = src.localSizeSpecId[i];
}
-#ifndef GLSLANG_WEB
if (src.earlyFragmentTests)
earlyFragmentTests = true;
if (src.earlyAndLateFragmentTestsAMD)
@@ -1537,10 +1421,22 @@ struct TShaderQualifiers {
interlockOrdering = src.interlockOrdering;
if (src.layoutPrimitiveCulling)
layoutPrimitiveCulling = src.layoutPrimitiveCulling;
-#endif
}
};
+class TTypeParameters {
+public:
+ POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+
+ TTypeParameters() : basicType(EbtVoid), arraySizes(nullptr) {}
+
+ TBasicType basicType;
+ TArraySizes *arraySizes;
+
+ bool operator==(const TTypeParameters& rhs) const { return basicType == rhs.basicType && *arraySizes == *rhs.arraySizes; }
+ bool operator!=(const TTypeParameters& rhs) const { return basicType != rhs.basicType || *arraySizes != *rhs.arraySizes; }
+};
+
//
// TPublicType is just temporarily used while parsing and not quite the same
// information kept per node in TType. Due to the bison stack, it can't have
@@ -1555,24 +1451,21 @@ public:
TSampler sampler;
TQualifier qualifier;
TShaderQualifiers shaderQualifiers;
- int vectorSize : 4;
- int matrixCols : 4;
- int matrixRows : 4;
- bool coopmat : 1;
+ int vectorSize : 4;
+ int matrixCols : 4;
+ int matrixRows : 4;
+ bool coopmatNV : 1;
+ bool coopmatKHR : 1;
TArraySizes* arraySizes;
const TType* userDef;
TSourceLoc loc;
- TArraySizes* typeParameters;
-#ifndef GLSLANG_WEB
+ TTypeParameters* typeParameters;
// SPIR-V type defined by spirv_type directive
TSpirvType* spirvType;
-#endif
-#ifdef GLSLANG_WEB
- bool isCoopmat() const { return false; }
-#else
- bool isCoopmat() const { return coopmat; }
-#endif
+ bool isCoopmat() const { return coopmatNV || coopmatKHR; }
+ bool isCoopmatNV() const { return coopmatNV; }
+ bool isCoopmatKHR() const { return coopmatKHR; }
void initType(const TSourceLoc& l)
{
@@ -1584,10 +1477,9 @@ public:
userDef = nullptr;
loc = l;
typeParameters = nullptr;
- coopmat = false;
-#ifndef GLSLANG_WEB
+ coopmatNV = false;
+ coopmatKHR = false;
spirvType = nullptr;
-#endif
}
void initQualifiers(bool global = false)
@@ -1624,10 +1516,8 @@ public:
return matrixCols == 0 && vectorSize == 1 && arraySizes == nullptr && userDef == nullptr;
}
-#ifndef GLSLANG_WEB
// GL_EXT_spirv_intrinsics
void setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams = nullptr);
-#endif
// "Image" is a superset of "Subpass"
bool isImage() const { return basicType == EbtSampler && sampler.isImage(); }
@@ -1645,11 +1535,9 @@ public:
// for "empty" type (no args) or simple scalar/vector/matrix
explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0,
bool isVector = false) :
- basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false),
- arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr)
-#ifndef GLSLANG_WEB
- , spirvType(nullptr)
-#endif
+ basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1),
+ arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
+ spirvType(nullptr)
{
sampler.clear();
qualifier.clear();
@@ -1659,11 +1547,9 @@ public:
// for explicit precision qualifier
TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0,
bool isVector = false) :
- basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false),
- arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr)
-#ifndef GLSLANG_WEB
- , spirvType(nullptr)
-#endif
+ basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1),
+ arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
+ spirvType(nullptr)
{
sampler.clear();
qualifier.clear();
@@ -1675,11 +1561,9 @@ public:
// for turning a TPublicType into a TType, using a shallow copy
explicit TType(const TPublicType& p) :
basicType(p.basicType),
- vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmat(p.coopmat),
- arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters)
-#ifndef GLSLANG_WEB
- , spirvType(p.spirvType)
-#endif
+ vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(-1),
+ arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters),
+ spirvType(p.spirvType)
{
if (basicType == EbtSampler)
sampler = p.sampler;
@@ -1695,28 +1579,39 @@ public:
}
typeName = NewPoolTString(p.userDef->getTypeName().c_str());
}
- if (p.isCoopmat() && p.typeParameters && p.typeParameters->getNumDims() > 0) {
- int numBits = p.typeParameters->getDimSize(0);
+ if (p.isCoopmatNV() && p.typeParameters && p.typeParameters->arraySizes->getNumDims() > 0) {
+ int numBits = p.typeParameters->arraySizes->getDimSize(0);
if (p.basicType == EbtFloat && numBits == 16) {
basicType = EbtFloat16;
qualifier.precision = EpqNone;
} else if (p.basicType == EbtUint && numBits == 8) {
basicType = EbtUint8;
qualifier.precision = EpqNone;
+ } else if (p.basicType == EbtUint && numBits == 16) {
+ basicType = EbtUint16;
+ qualifier.precision = EpqNone;
} else if (p.basicType == EbtInt && numBits == 8) {
basicType = EbtInt8;
qualifier.precision = EpqNone;
+ } else if (p.basicType == EbtInt && numBits == 16) {
+ basicType = EbtInt16;
+ qualifier.precision = EpqNone;
+ }
+ }
+ if (p.isCoopmatKHR() && p.typeParameters && p.typeParameters->arraySizes->getNumDims() > 0) {
+ basicType = p.typeParameters->basicType;
+
+ if (p.typeParameters->arraySizes->getNumDims() == 4) {
+ coopmatKHRuse = p.typeParameters->arraySizes->getDimSize(3);
+ p.typeParameters->arraySizes->removeLastSize();
}
}
}
// for construction of sampler types
TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) :
- basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false),
+ basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1),
arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr),
- sampler(sampler), typeParameters(nullptr)
-#ifndef GLSLANG_WEB
- , spirvType(nullptr)
-#endif
+ sampler(sampler), typeParameters(nullptr), spirvType(nullptr)
{
qualifier.clear();
qualifier.storage = q;
@@ -1758,18 +1653,18 @@ public:
vectorSize = 1;
vector1 = false;
} else if (isCoopMat()) {
- coopmat = false;
+ coopmatNV = false;
+ coopmatKHR = false;
+ coopmatKHRuse = -1;
typeParameters = nullptr;
}
}
}
// for making structures, ...
TType(TTypeList* userDef, const TString& n) :
- basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false),
- arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr)
-#ifndef GLSLANG_WEB
- , spirvType(nullptr)
-#endif
+ basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1),
+ arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr),
+ spirvType(nullptr)
{
sampler.clear();
qualifier.clear();
@@ -1777,25 +1672,22 @@ public:
}
// For interface blocks
TType(TTypeList* userDef, const TString& n, const TQualifier& q) :
- basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false),
- qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr)
-#ifndef GLSLANG_WEB
- , spirvType(nullptr)
-#endif
+ basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1),
+ qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr),
+ spirvType(nullptr)
{
sampler.clear();
typeName = NewPoolTString(n.c_str());
}
// for block reference (first parameter must be EbtReference)
explicit TType(TBasicType t, const TType &p, const TString& n) :
- basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false),
- arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr)
-#ifndef GLSLANG_WEB
- , spirvType(nullptr)
-#endif
+ basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1),
+ arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr),
+ spirvType(nullptr)
{
assert(t == EbtReference);
typeName = NewPoolTString(n.c_str());
+ sampler.clear();
qualifier.clear();
qualifier.storage = p.qualifier.storage;
referentType = p.clone();
@@ -1823,10 +1715,10 @@ public:
referentType = copyOf.referentType;
}
typeParameters = copyOf.typeParameters;
-#ifndef GLSLANG_WEB
spirvType = copyOf.spirvType;
-#endif
- coopmat = copyOf.isCoopMat();
+ coopmatNV = copyOf.isCoopMatNV();
+ coopmatKHR = copyOf.isCoopMatKHR();
+ coopmatKHRuse = copyOf.coopmatKHRuse;
}
// Make complete copy of the whole type graph rooted at 'copyOf'.
@@ -1902,17 +1794,13 @@ public:
virtual int getOuterArraySize() const { return arraySizes->getOuterSize(); }
virtual TIntermTyped* getOuterArrayNode() const { return arraySizes->getOuterNode(); }
virtual int getCumulativeArraySize() const { return arraySizes->getCumulativeSize(); }
-#ifdef GLSLANG_WEB
- bool isArrayOfArrays() const { return false; }
-#else
bool isArrayOfArrays() const { return arraySizes != nullptr && arraySizes->getNumDims() > 1; }
-#endif
virtual int getImplicitArraySize() const { return arraySizes->getImplicitSize(); }
virtual const TArraySizes* getArraySizes() const { return arraySizes; }
virtual TArraySizes* getArraySizes() { return arraySizes; }
virtual TType* getReferentType() const { return referentType; }
- virtual const TArraySizes* getTypeParameters() const { return typeParameters; }
- virtual TArraySizes* getTypeParameters() { return typeParameters; }
+ virtual const TTypeParameters* getTypeParameters() const { return typeParameters; }
+ virtual TTypeParameters* getTypeParameters() { return typeParameters; }
virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray(); }
virtual bool isScalarOrVec1() const { return isScalar() || vector1; }
@@ -1948,11 +1836,8 @@ public:
return false;
}
virtual bool isOpaque() const { return basicType == EbtSampler
-#ifndef GLSLANG_WEB
- || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery
- || basicType == EbtHitObjectNV
-#endif
- ; }
+ || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery
+ || basicType == EbtHitObjectNV; }
virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; }
virtual bool isAttachmentEXT() const { return basicType == EbtSampler && getSampler().isAttachmentEXT(); }
@@ -1964,17 +1849,13 @@ public:
// Check the block-name convention of creating a block without populating it's members:
virtual bool isUnusableName() const { return isStruct() && structure == nullptr; }
virtual bool isParameterized() const { return typeParameters != nullptr; }
-#ifdef GLSLANG_WEB
- bool isAtomic() const { return false; }
- bool isCoopMat() const { return false; }
- bool isReference() const { return false; }
- bool isSpirvType() const { return false; }
-#else
bool isAtomic() const { return basicType == EbtAtomicUint; }
- bool isCoopMat() const { return coopmat; }
+ bool isCoopMat() const { return coopmatNV || coopmatKHR; }
+ bool isCoopMatNV() const { return coopmatNV; }
+ bool isCoopMatKHR() const { return coopmatKHR; }
bool isReference() const { return getBasicType() == EbtReference; }
bool isSpirvType() const { return getBasicType() == EbtSpirvType; }
-#endif
+ int getCoopMatKHRuse() const { return coopmatKHRuse; }
// return true if this type contains any subtype which satisfies the given predicate.
template <typename P>
@@ -2060,15 +1941,6 @@ public:
return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } );
}
-#ifdef GLSLANG_WEB
- bool containsDouble() const { return false; }
- bool contains16BitFloat() const { return false; }
- bool contains64BitInt() const { return false; }
- bool contains16BitInt() const { return false; }
- bool contains8BitInt() const { return false; }
- bool containsCoopMat() const { return false; }
- bool containsReference() const { return false; }
-#else
bool containsDouble() const
{
return containsBasicType(EbtDouble);
@@ -2091,13 +1963,12 @@ public:
}
bool containsCoopMat() const
{
- return contains([](const TType* t) { return t->coopmat; } );
+ return contains([](const TType* t) { return t->coopmatNV || t->coopmatKHR; } );
}
bool containsReference() const
{
return containsBasicType(EbtReference);
}
-#endif
// Array editing methods. Array descriptors can be shared across
// type instances. This allows all uses of the same array
@@ -2173,43 +2044,12 @@ public:
}
}
-
- void updateTypeParameters(const TType& type)
- {
- // For when we may already be sharing existing array descriptors,
- // keeping the pointers the same, just updating the contents.
- assert(typeParameters != nullptr);
- assert(type.typeParameters != nullptr);
- *typeParameters = *type.typeParameters;
- }
- void copyTypeParameters(const TArraySizes& s)
+ void copyTypeParameters(const TTypeParameters& s)
{
// For setting a fresh new set of type parameters, not yet worrying about sharing.
- typeParameters = new TArraySizes;
+ typeParameters = new TTypeParameters;
*typeParameters = s;
}
- void transferTypeParameters(TArraySizes* s)
- {
- // For setting an already allocated set of sizes that this type can use
- // (no copy made).
- typeParameters = s;
- }
- void clearTypeParameters()
- {
- typeParameters = nullptr;
- }
-
- // Add inner array sizes, to any existing sizes, via copy; the
- // sizes passed in can still be reused for other purposes.
- void copyTypeParametersInnerSizes(const TArraySizes* s)
- {
- if (s != nullptr) {
- if (typeParameters == nullptr)
- copyTypeParameters(*s);
- else
- typeParameters->addInnerSizes(*s);
- }
- }
const char* getBasicString() const
{
@@ -2223,7 +2063,6 @@ public:
case EbtInt: return "int";
case EbtUint: return "uint";
case EbtSampler: return "sampler/image";
-#ifndef GLSLANG_WEB
case EbtVoid: return "void";
case EbtDouble: return "double";
case EbtFloat16: return "float16_t";
@@ -2242,18 +2081,11 @@ public:
case EbtReference: return "reference";
case EbtString: return "string";
case EbtSpirvType: return "spirv_type";
-#endif
+ case EbtCoopmat: return "coopmat";
default: return "unknown type";
}
}
-#ifdef GLSLANG_WEB
- TString getCompleteString() const { return ""; }
- const char* getStorageQualifierString() const { return ""; }
- const char* getBuiltInVariableString() const { return ""; }
- const char* getPrecisionQualifierString() const { return ""; }
- TString getBasicTypeString() const { return ""; }
-#else
TString getCompleteString(bool syntactic = false, bool getQualifiers = true, bool getPrecision = true,
bool getType = true, TString name = "", TString structName = "") const
{
@@ -2552,12 +2384,21 @@ public:
}
}
if (isParameterized()) {
+ if (isCoopMatKHR()) {
+ appendStr(" ");
+ appendStr("coopmat");
+ }
+
appendStr("<");
- for (int i = 0; i < (int)typeParameters->getNumDims(); ++i) {
- appendInt(typeParameters->getDimSize(i));
- if (i != (int)typeParameters->getNumDims() - 1)
+ for (int i = 0; i < (int)typeParameters->arraySizes->getNumDims(); ++i) {
+ appendInt(typeParameters->arraySizes->getDimSize(i));
+ if (i != (int)typeParameters->arraySizes->getNumDims() - 1)
appendStr(", ");
}
+ if (coopmatKHRuse != -1) {
+ appendStr(", ");
+ appendInt(coopmatKHRuse);
+ }
appendStr(">");
}
if (getPrecision && qualifier.precision != EpqNone) {
@@ -2618,7 +2459,6 @@ public:
const char* getStorageQualifierString() const { return GetStorageQualifierString(qualifier.storage); }
const char* getBuiltInVariableString() const { return GetBuiltInVariableString(qualifier.builtIn); }
const char* getPrecisionQualifierString() const { return GetPrecisionQualifierString(qualifier.precision); }
-#endif
const TTypeList* getStruct() const { assert(isStruct()); return structure; }
void setStruct(TTypeList* s) { assert(isStruct()); structure = s; }
@@ -2812,14 +2652,12 @@ public:
(typeParameters != nullptr && right.typeParameters != nullptr && *typeParameters == *right.typeParameters));
}
-#ifndef GLSLANG_WEB
// See if two type's SPIR-V type contents match
bool sameSpirvType(const TType& right) const
{
return ((spirvType == nullptr && right.spirvType == nullptr) ||
(spirvType != nullptr && right.spirvType != nullptr && *spirvType == *right.spirvType));
}
-#endif
// See if two type's elements match in all ways except basic type
// If mismatch in structure members, return member indices in lpidx and rpidx.
@@ -2834,7 +2672,8 @@ public:
matrixCols == right.matrixCols &&
matrixRows == right.matrixRows &&
vector1 == right.vector1 &&
- isCoopMat() == right.isCoopMat() &&
+ isCoopMatNV() == right.isCoopMatNV() &&
+ isCoopMatKHR() == right.isCoopMatKHR() &&
sameStructType(right, lpidx, rpidx) &&
sameReferenceType(right);
}
@@ -2843,32 +2682,69 @@ public:
// an OK function parameter
bool coopMatParameterOK(const TType& right) const
{
- return isCoopMat() && right.isCoopMat() && (getBasicType() == right.getBasicType()) &&
- typeParameters == nullptr && right.typeParameters != nullptr;
+ if (isCoopMatNV()) {
+ return right.isCoopMatNV() && (getBasicType() == right.getBasicType()) && typeParameters == nullptr &&
+ right.typeParameters != nullptr;
+ }
+ if (isCoopMatKHR() && right.isCoopMatKHR()) {
+ return ((getBasicType() == right.getBasicType()) || (getBasicType() == EbtCoopmat) ||
+ (right.getBasicType() == EbtCoopmat)) &&
+ typeParameters == nullptr && right.typeParameters != nullptr;
+ }
+ return false;
}
bool sameCoopMatBaseType(const TType &right) const {
- bool rv = coopmat && right.coopmat;
- if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16)
- rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16;
- else if (getBasicType() == EbtUint || getBasicType() == EbtUint8)
- rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8;
- else if (getBasicType() == EbtInt || getBasicType() == EbtInt8)
- rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8;
- else
- rv = false;
+ bool rv = false;
+
+ if (isCoopMatNV()) {
+ rv = isCoopMatNV() && right.isCoopMatNV();
+ if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16)
+ rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16;
+ else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16)
+ rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16;
+ else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16)
+ rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16;
+ else
+ rv = false;
+ } else if (isCoopMatKHR() && right.isCoopMatKHR()) {
+ if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16)
+ rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16 || right.getBasicType() == EbtCoopmat;
+ else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16)
+ rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16 || right.getBasicType() == EbtCoopmat;
+ else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16)
+ rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16 || right.getBasicType() == EbtCoopmat;
+ else
+ rv = false;
+ }
return rv;
}
+ bool sameCoopMatUse(const TType &right) const {
+ return coopmatKHRuse == right.coopmatKHRuse;
+ }
+
+ bool sameCoopMatShapeAndUse(const TType &right) const
+ {
+ if (!isCoopMat() || !right.isCoopMat() || isCoopMatKHR() != right.isCoopMatKHR())
+ return false;
+
+ if (coopmatKHRuse != right.coopmatKHRuse)
+ return false;
+
+ // Skip bit width type parameter (first array size) for coopmatNV
+ int firstArrayDimToCompare = isCoopMatNV() ? 1 : 0;
+ for (int i = firstArrayDimToCompare; i < typeParameters->arraySizes->getNumDims(); ++i) {
+ if (typeParameters->arraySizes->getDimSize(i) != right.typeParameters->arraySizes->getDimSize(i))
+ return false;
+ }
+ return true;
+ }
// See if two types match in all ways (just the actual type, not qualification)
bool operator==(const TType& right) const
{
-#ifndef GLSLANG_WEB
- return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameSpirvType(right);
-#else
- return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right);
-#endif
+ return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameCoopMatUse(right) && sameSpirvType(right);
}
bool operator!=(const TType& right) const
@@ -2878,18 +2754,14 @@ public:
unsigned int getBufferReferenceAlignment() const
{
-#ifndef GLSLANG_WEB
if (getBasicType() == glslang::EbtReference) {
return getReferentType()->getQualifier().hasBufferReferenceAlign() ?
(1u << getReferentType()->getQualifier().layoutBufferReferenceAlign) : 16u;
}
-#endif
return 0;
}
-#ifndef GLSLANG_WEB
const TSpirvType& getSpirvType() const { assert(spirvType); return *spirvType; }
-#endif
protected:
// Require consumer to pick between deep copy and shallow copy.
@@ -2903,7 +2775,6 @@ protected:
{
shallowCopy(copyOf);
-#ifndef GLSLANG_WEB
// GL_EXT_spirv_intrinsics
if (copyOf.qualifier.spirvDecorate) {
qualifier.spirvDecorate = new TSpirvDecorate;
@@ -2914,7 +2785,6 @@ protected:
spirvType = new TSpirvType;
*spirvType = *copyOf.spirvType;
}
-#endif
if (copyOf.arraySizes) {
arraySizes = new TArraySizes;
@@ -2922,8 +2792,10 @@ protected:
}
if (copyOf.typeParameters) {
- typeParameters = new TArraySizes;
- *typeParameters = *copyOf.typeParameters;
+ typeParameters = new TTypeParameters;
+ typeParameters->arraySizes = new TArraySizes;
+ *typeParameters->arraySizes = *copyOf.typeParameters->arraySizes;
+ typeParameters->basicType = copyOf.basicType;
}
if (copyOf.isStruct() && copyOf.structure) {
@@ -2961,7 +2833,9 @@ protected:
// functionality is added.
// HLSL does have a 1-component vectors, so this will be true to disambiguate
// from a scalar.
- bool coopmat : 1;
+ bool coopmatNV : 1;
+ bool coopmatKHR : 1;
+ int coopmatKHRuse : 4; // Accepts one of three values: 0, 1, 2 (gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator)
TQualifier qualifier;
TArraySizes* arraySizes; // nullptr unless an array; can be shared across types
@@ -2974,10 +2848,8 @@ protected:
TString *fieldName; // for structure field names
TString *typeName; // for structure type name
TSampler sampler;
- TArraySizes* typeParameters;// nullptr unless a parameterized type; can be shared across types
-#ifndef GLSLANG_WEB
+ TTypeParameters *typeParameters;// nullptr unless a parameterized type; can be shared across types
TSpirvType* spirvType; // SPIR-V type defined by spirv_type directive
-#endif
};
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/Include/arrays.h b/thirdparty/glslang/glslang/Include/arrays.h
index 1da14d09c8..91e1908355 100644
--- a/thirdparty/glslang/glslang/Include/arrays.h
+++ b/thirdparty/glslang/glslang/Include/arrays.h
@@ -147,6 +147,15 @@ struct TSmallArrayVector {
sizes->erase(sizes->begin());
}
+ void pop_back()
+ {
+ assert(sizes != nullptr && sizes->size() > 0);
+ if (sizes->size() == 1)
+ dealloc();
+ else
+ sizes->resize(sizes->size() - 1);
+ }
+
// 'this' should currently not be holding anything, and copyNonFront
// will make it hold a copy of all but the first element of rhs.
// (This would be useful for making a type that is dereferenced by
@@ -306,6 +315,7 @@ struct TArraySizes {
bool isDefaultImplicitlySized() const { return implicitlySized && implicitArraySize == 0; }
void setImplicitlySized(bool isImplicitSizing) { implicitlySized = isImplicitSizing; }
void dereference() { sizes.pop_front(); }
+ void removeLastSize() { sizes.pop_back(); }
void copyDereferenced(const TArraySizes& rhs)
{
assert(sizes.size() == 0);
diff --git a/thirdparty/glslang/glslang/Include/glslang_c_interface.h b/thirdparty/glslang/glslang/Include/glslang_c_interface.h
deleted file mode 100644
index a519f63583..0000000000
--- a/thirdparty/glslang/glslang/Include/glslang_c_interface.h
+++ /dev/null
@@ -1,287 +0,0 @@
-/**
- This code is based on the glslang_c_interface implementation by Viktor Latypov
-**/
-
-/**
-BSD 2-Clause License
-
-Copyright (c) 2019, Viktor Latypov
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**/
-
-#ifndef GLSLANG_C_IFACE_H_INCLUDED
-#define GLSLANG_C_IFACE_H_INCLUDED
-
-#include <stdbool.h>
-#include <stdlib.h>
-
-#include "glslang_c_shader_types.h"
-
-typedef struct glslang_shader_s glslang_shader_t;
-typedef struct glslang_program_s glslang_program_t;
-
-/* TLimits counterpart */
-typedef struct glslang_limits_s {
- bool non_inductive_for_loops;
- bool while_loops;
- bool do_while_loops;
- bool general_uniform_indexing;
- bool general_attribute_matrix_vector_indexing;
- bool general_varying_indexing;
- bool general_sampler_indexing;
- bool general_variable_indexing;
- bool general_constant_matrix_vector_indexing;
-} glslang_limits_t;
-
-/* TBuiltInResource counterpart */
-typedef struct glslang_resource_s {
- int max_lights;
- int max_clip_planes;
- int max_texture_units;
- int max_texture_coords;
- int max_vertex_attribs;
- int max_vertex_uniform_components;
- int max_varying_floats;
- int max_vertex_texture_image_units;
- int max_combined_texture_image_units;
- int max_texture_image_units;
- int max_fragment_uniform_components;
- int max_draw_buffers;
- int max_vertex_uniform_vectors;
- int max_varying_vectors;
- int max_fragment_uniform_vectors;
- int max_vertex_output_vectors;
- int max_fragment_input_vectors;
- int min_program_texel_offset;
- int max_program_texel_offset;
- int max_clip_distances;
- int max_compute_work_group_count_x;
- int max_compute_work_group_count_y;
- int max_compute_work_group_count_z;
- int max_compute_work_group_size_x;
- int max_compute_work_group_size_y;
- int max_compute_work_group_size_z;
- int max_compute_uniform_components;
- int max_compute_texture_image_units;
- int max_compute_image_uniforms;
- int max_compute_atomic_counters;
- int max_compute_atomic_counter_buffers;
- int max_varying_components;
- int max_vertex_output_components;
- int max_geometry_input_components;
- int max_geometry_output_components;
- int max_fragment_input_components;
- int max_image_units;
- int max_combined_image_units_and_fragment_outputs;
- int max_combined_shader_output_resources;
- int max_image_samples;
- int max_vertex_image_uniforms;
- int max_tess_control_image_uniforms;
- int max_tess_evaluation_image_uniforms;
- int max_geometry_image_uniforms;
- int max_fragment_image_uniforms;
- int max_combined_image_uniforms;
- int max_geometry_texture_image_units;
- int max_geometry_output_vertices;
- int max_geometry_total_output_components;
- int max_geometry_uniform_components;
- int max_geometry_varying_components;
- int max_tess_control_input_components;
- int max_tess_control_output_components;
- int max_tess_control_texture_image_units;
- int max_tess_control_uniform_components;
- int max_tess_control_total_output_components;
- int max_tess_evaluation_input_components;
- int max_tess_evaluation_output_components;
- int max_tess_evaluation_texture_image_units;
- int max_tess_evaluation_uniform_components;
- int max_tess_patch_components;
- int max_patch_vertices;
- int max_tess_gen_level;
- int max_viewports;
- int max_vertex_atomic_counters;
- int max_tess_control_atomic_counters;
- int max_tess_evaluation_atomic_counters;
- int max_geometry_atomic_counters;
- int max_fragment_atomic_counters;
- int max_combined_atomic_counters;
- int max_atomic_counter_bindings;
- int max_vertex_atomic_counter_buffers;
- int max_tess_control_atomic_counter_buffers;
- int max_tess_evaluation_atomic_counter_buffers;
- int max_geometry_atomic_counter_buffers;
- int max_fragment_atomic_counter_buffers;
- int max_combined_atomic_counter_buffers;
- int max_atomic_counter_buffer_size;
- int max_transform_feedback_buffers;
- int max_transform_feedback_interleaved_components;
- int max_cull_distances;
- int max_combined_clip_and_cull_distances;
- int max_samples;
- int max_mesh_output_vertices_nv;
- int max_mesh_output_primitives_nv;
- int max_mesh_work_group_size_x_nv;
- int max_mesh_work_group_size_y_nv;
- int max_mesh_work_group_size_z_nv;
- int max_task_work_group_size_x_nv;
- int max_task_work_group_size_y_nv;
- int max_task_work_group_size_z_nv;
- int max_mesh_view_count_nv;
- int max_mesh_output_vertices_ext;
- int max_mesh_output_primitives_ext;
- int max_mesh_work_group_size_x_ext;
- int max_mesh_work_group_size_y_ext;
- int max_mesh_work_group_size_z_ext;
- int max_task_work_group_size_x_ext;
- int max_task_work_group_size_y_ext;
- int max_task_work_group_size_z_ext;
- int max_mesh_view_count_ext;
- union
- {
- int max_dual_source_draw_buffers_ext;
-
- /* Incorrectly capitalized name retained for backward compatibility */
- int maxDualSourceDrawBuffersEXT;
- };
-
- glslang_limits_t limits;
-} glslang_resource_t;
-
-/* Inclusion result structure allocated by C include_local/include_system callbacks */
-typedef struct glsl_include_result_s {
- /* Header file name or NULL if inclusion failed */
- const char* header_name;
-
- /* Header contents or NULL */
- const char* header_data;
- size_t header_length;
-
-} glsl_include_result_t;
-
-/* Callback for local file inclusion */
-typedef glsl_include_result_t* (*glsl_include_local_func)(void* ctx, const char* header_name, const char* includer_name,
- size_t include_depth);
-
-/* Callback for system file inclusion */
-typedef glsl_include_result_t* (*glsl_include_system_func)(void* ctx, const char* header_name,
- const char* includer_name, size_t include_depth);
-
-/* Callback for include result destruction */
-typedef int (*glsl_free_include_result_func)(void* ctx, glsl_include_result_t* result);
-
-/* Collection of callbacks for GLSL preprocessor */
-typedef struct glsl_include_callbacks_s {
- glsl_include_system_func include_system;
- glsl_include_local_func include_local;
- glsl_free_include_result_func free_include_result;
-} glsl_include_callbacks_t;
-
-typedef struct glslang_input_s {
- glslang_source_t language;
- glslang_stage_t stage;
- glslang_client_t client;
- glslang_target_client_version_t client_version;
- glslang_target_language_t target_language;
- glslang_target_language_version_t target_language_version;
- /** Shader source code */
- const char* code;
- int default_version;
- glslang_profile_t default_profile;
- int force_default_version_and_profile;
- int forward_compatible;
- glslang_messages_t messages;
- const glslang_resource_t* resource;
- glsl_include_callbacks_t callbacks;
- void* callbacks_ctx;
-} glslang_input_t;
-
-/* SpvOptions counterpart */
-typedef struct glslang_spv_options_s {
- bool generate_debug_info;
- bool strip_debug_info;
- bool disable_optimizer;
- bool optimize_size;
- bool disassemble;
- bool validate;
- bool emit_nonsemantic_shader_debug_info;
- bool emit_nonsemantic_shader_debug_source;
-} glslang_spv_options_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifdef GLSLANG_IS_SHARED_LIBRARY
- #ifdef _WIN32
- #ifdef GLSLANG_EXPORTING
- #define GLSLANG_EXPORT __declspec(dllexport)
- #else
- #define GLSLANG_EXPORT __declspec(dllimport)
- #endif
- #elif __GNUC__ >= 4
- #define GLSLANG_EXPORT __attribute__((visibility("default")))
- #endif
-#endif // GLSLANG_IS_SHARED_LIBRARY
-
-#ifndef GLSLANG_EXPORT
-#define GLSLANG_EXPORT
-#endif
-
-GLSLANG_EXPORT int glslang_initialize_process();
-GLSLANG_EXPORT void glslang_finalize_process();
-
-GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input);
-GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader);
-GLSLANG_EXPORT void glslang_shader_set_preamble(glslang_shader_t* shader, const char* s);
-GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base);
-GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set);
-GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options); // glslang_shader_options_t
-GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version);
-GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input);
-GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input);
-GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader);
-GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader);
-GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader);
-
-GLSLANG_EXPORT glslang_program_t* glslang_program_create();
-GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program);
-GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader);
-GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t
-GLSLANG_EXPORT void glslang_program_add_source_text(glslang_program_t* program, glslang_stage_t stage, const char* text, size_t len);
-GLSLANG_EXPORT void glslang_program_set_source_file(glslang_program_t* program, glslang_stage_t stage, const char* file);
-GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program);
-GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage);
-GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options);
-GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program);
-GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*);
-GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program);
-GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* program);
-GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program);
-GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* #ifdef GLSLANG_C_IFACE_INCLUDED */
diff --git a/thirdparty/glslang/glslang/Include/glslang_c_shader_types.h b/thirdparty/glslang/glslang/Include/glslang_c_shader_types.h
deleted file mode 100644
index 9bc211496c..0000000000
--- a/thirdparty/glslang/glslang/Include/glslang_c_shader_types.h
+++ /dev/null
@@ -1,227 +0,0 @@
-/**
- This code is based on the glslang_c_interface implementation by Viktor Latypov
-**/
-
-/**
-BSD 2-Clause License
-
-Copyright (c) 2019, Viktor Latypov
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**/
-
-#ifndef C_SHADER_TYPES_H_INCLUDED
-#define C_SHADER_TYPES_H_INCLUDED
-
-#define LAST_ELEMENT_MARKER(x) x
-
-/* EShLanguage counterpart */
-typedef enum {
- GLSLANG_STAGE_VERTEX,
- GLSLANG_STAGE_TESSCONTROL,
- GLSLANG_STAGE_TESSEVALUATION,
- GLSLANG_STAGE_GEOMETRY,
- GLSLANG_STAGE_FRAGMENT,
- GLSLANG_STAGE_COMPUTE,
- GLSLANG_STAGE_RAYGEN,
- GLSLANG_STAGE_RAYGEN_NV = GLSLANG_STAGE_RAYGEN,
- GLSLANG_STAGE_INTERSECT,
- GLSLANG_STAGE_INTERSECT_NV = GLSLANG_STAGE_INTERSECT,
- GLSLANG_STAGE_ANYHIT,
- GLSLANG_STAGE_ANYHIT_NV = GLSLANG_STAGE_ANYHIT,
- GLSLANG_STAGE_CLOSESTHIT,
- GLSLANG_STAGE_CLOSESTHIT_NV = GLSLANG_STAGE_CLOSESTHIT,
- GLSLANG_STAGE_MISS,
- GLSLANG_STAGE_MISS_NV = GLSLANG_STAGE_MISS,
- GLSLANG_STAGE_CALLABLE,
- GLSLANG_STAGE_CALLABLE_NV = GLSLANG_STAGE_CALLABLE,
- GLSLANG_STAGE_TASK,
- GLSLANG_STAGE_TASK_NV = GLSLANG_STAGE_TASK,
- GLSLANG_STAGE_MESH,
- GLSLANG_STAGE_MESH_NV = GLSLANG_STAGE_MESH,
- LAST_ELEMENT_MARKER(GLSLANG_STAGE_COUNT),
-} glslang_stage_t; // would be better as stage, but this is ancient now
-
-/* EShLanguageMask counterpart */
-typedef enum {
- GLSLANG_STAGE_VERTEX_MASK = (1 << GLSLANG_STAGE_VERTEX),
- GLSLANG_STAGE_TESSCONTROL_MASK = (1 << GLSLANG_STAGE_TESSCONTROL),
- GLSLANG_STAGE_TESSEVALUATION_MASK = (1 << GLSLANG_STAGE_TESSEVALUATION),
- GLSLANG_STAGE_GEOMETRY_MASK = (1 << GLSLANG_STAGE_GEOMETRY),
- GLSLANG_STAGE_FRAGMENT_MASK = (1 << GLSLANG_STAGE_FRAGMENT),
- GLSLANG_STAGE_COMPUTE_MASK = (1 << GLSLANG_STAGE_COMPUTE),
- GLSLANG_STAGE_RAYGEN_MASK = (1 << GLSLANG_STAGE_RAYGEN),
- GLSLANG_STAGE_RAYGEN_NV_MASK = GLSLANG_STAGE_RAYGEN_MASK,
- GLSLANG_STAGE_INTERSECT_MASK = (1 << GLSLANG_STAGE_INTERSECT),
- GLSLANG_STAGE_INTERSECT_NV_MASK = GLSLANG_STAGE_INTERSECT_MASK,
- GLSLANG_STAGE_ANYHIT_MASK = (1 << GLSLANG_STAGE_ANYHIT),
- GLSLANG_STAGE_ANYHIT_NV_MASK = GLSLANG_STAGE_ANYHIT_MASK,
- GLSLANG_STAGE_CLOSESTHIT_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT),
- GLSLANG_STAGE_CLOSESTHIT_NV_MASK = GLSLANG_STAGE_CLOSESTHIT_MASK,
- GLSLANG_STAGE_MISS_MASK = (1 << GLSLANG_STAGE_MISS),
- GLSLANG_STAGE_MISS_NV_MASK = GLSLANG_STAGE_MISS_MASK,
- GLSLANG_STAGE_CALLABLE_MASK = (1 << GLSLANG_STAGE_CALLABLE),
- GLSLANG_STAGE_CALLABLE_NV_MASK = GLSLANG_STAGE_CALLABLE_MASK,
- GLSLANG_STAGE_TASK_MASK = (1 << GLSLANG_STAGE_TASK),
- GLSLANG_STAGE_TASK_NV_MASK = GLSLANG_STAGE_TASK_MASK,
- GLSLANG_STAGE_MESH_MASK = (1 << GLSLANG_STAGE_MESH),
- GLSLANG_STAGE_MESH_NV_MASK = GLSLANG_STAGE_MESH_MASK,
- LAST_ELEMENT_MARKER(GLSLANG_STAGE_MASK_COUNT),
-} glslang_stage_mask_t;
-
-/* EShSource counterpart */
-typedef enum {
- GLSLANG_SOURCE_NONE,
- GLSLANG_SOURCE_GLSL,
- GLSLANG_SOURCE_HLSL,
- LAST_ELEMENT_MARKER(GLSLANG_SOURCE_COUNT),
-} glslang_source_t;
-
-/* EShClient counterpart */
-typedef enum {
- GLSLANG_CLIENT_NONE,
- GLSLANG_CLIENT_VULKAN,
- GLSLANG_CLIENT_OPENGL,
- LAST_ELEMENT_MARKER(GLSLANG_CLIENT_COUNT),
-} glslang_client_t;
-
-/* EShTargetLanguage counterpart */
-typedef enum {
- GLSLANG_TARGET_NONE,
- GLSLANG_TARGET_SPV,
- LAST_ELEMENT_MARKER(GLSLANG_TARGET_COUNT),
-} glslang_target_language_t;
-
-/* SH_TARGET_ClientVersion counterpart */
-typedef enum {
- GLSLANG_TARGET_VULKAN_1_0 = (1 << 22),
- GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12),
- GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12),
- GLSLANG_TARGET_VULKAN_1_3 = (1 << 22) | (3 << 12),
- GLSLANG_TARGET_OPENGL_450 = 450,
- LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 5),
-} glslang_target_client_version_t;
-
-/* SH_TARGET_LanguageVersion counterpart */
-typedef enum {
- GLSLANG_TARGET_SPV_1_0 = (1 << 16),
- GLSLANG_TARGET_SPV_1_1 = (1 << 16) | (1 << 8),
- GLSLANG_TARGET_SPV_1_2 = (1 << 16) | (2 << 8),
- GLSLANG_TARGET_SPV_1_3 = (1 << 16) | (3 << 8),
- GLSLANG_TARGET_SPV_1_4 = (1 << 16) | (4 << 8),
- GLSLANG_TARGET_SPV_1_5 = (1 << 16) | (5 << 8),
- GLSLANG_TARGET_SPV_1_6 = (1 << 16) | (6 << 8),
- LAST_ELEMENT_MARKER(GLSLANG_TARGET_LANGUAGE_VERSION_COUNT = 7),
-} glslang_target_language_version_t;
-
-/* EShExecutable counterpart */
-typedef enum { GLSLANG_EX_VERTEX_FRAGMENT, GLSLANG_EX_FRAGMENT } glslang_executable_t;
-
-// EShOptimizationLevel counterpart
-// This enum is not used in the current C interface, but could be added at a later date.
-// GLSLANG_OPT_NONE is the current default.
-typedef enum {
- GLSLANG_OPT_NO_GENERATION,
- GLSLANG_OPT_NONE,
- GLSLANG_OPT_SIMPLE,
- GLSLANG_OPT_FULL,
- LAST_ELEMENT_MARKER(GLSLANG_OPT_LEVEL_COUNT),
-} glslang_optimization_level_t;
-
-/* EShTextureSamplerTransformMode counterpart */
-typedef enum {
- GLSLANG_TEX_SAMP_TRANS_KEEP,
- GLSLANG_TEX_SAMP_TRANS_UPGRADE_TEXTURE_REMOVE_SAMPLER,
- LAST_ELEMENT_MARKER(GLSLANG_TEX_SAMP_TRANS_COUNT),
-} glslang_texture_sampler_transform_mode_t;
-
-/* EShMessages counterpart */
-typedef enum {
- GLSLANG_MSG_DEFAULT_BIT = 0,
- GLSLANG_MSG_RELAXED_ERRORS_BIT = (1 << 0),
- GLSLANG_MSG_SUPPRESS_WARNINGS_BIT = (1 << 1),
- GLSLANG_MSG_AST_BIT = (1 << 2),
- GLSLANG_MSG_SPV_RULES_BIT = (1 << 3),
- GLSLANG_MSG_VULKAN_RULES_BIT = (1 << 4),
- GLSLANG_MSG_ONLY_PREPROCESSOR_BIT = (1 << 5),
- GLSLANG_MSG_READ_HLSL_BIT = (1 << 6),
- GLSLANG_MSG_CASCADING_ERRORS_BIT = (1 << 7),
- GLSLANG_MSG_KEEP_UNCALLED_BIT = (1 << 8),
- GLSLANG_MSG_HLSL_OFFSETS_BIT = (1 << 9),
- GLSLANG_MSG_DEBUG_INFO_BIT = (1 << 10),
- GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT = (1 << 11),
- GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12),
- GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13),
- GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14),
- GLSLANG_MSG_ENHANCED = (1 << 15),
- LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT),
-} glslang_messages_t;
-
-/* EShReflectionOptions counterpart */
-typedef enum {
- GLSLANG_REFLECTION_DEFAULT_BIT = 0,
- GLSLANG_REFLECTION_STRICT_ARRAY_SUFFIX_BIT = (1 << 0),
- GLSLANG_REFLECTION_BASIC_ARRAY_SUFFIX_BIT = (1 << 1),
- GLSLANG_REFLECTION_INTERMEDIATE_IOO_BIT = (1 << 2),
- GLSLANG_REFLECTION_SEPARATE_BUFFERS_BIT = (1 << 3),
- GLSLANG_REFLECTION_ALL_BLOCK_VARIABLES_BIT = (1 << 4),
- GLSLANG_REFLECTION_UNWRAP_IO_BLOCKS_BIT = (1 << 5),
- GLSLANG_REFLECTION_ALL_IO_VARIABLES_BIT = (1 << 6),
- GLSLANG_REFLECTION_SHARED_STD140_SSBO_BIT = (1 << 7),
- GLSLANG_REFLECTION_SHARED_STD140_UBO_BIT = (1 << 8),
- LAST_ELEMENT_MARKER(GLSLANG_REFLECTION_COUNT),
-} glslang_reflection_options_t;
-
-/* EProfile counterpart (from Versions.h) */
-typedef enum {
- GLSLANG_BAD_PROFILE = 0,
- GLSLANG_NO_PROFILE = (1 << 0),
- GLSLANG_CORE_PROFILE = (1 << 1),
- GLSLANG_COMPATIBILITY_PROFILE = (1 << 2),
- GLSLANG_ES_PROFILE = (1 << 3),
- LAST_ELEMENT_MARKER(GLSLANG_PROFILE_COUNT),
-} glslang_profile_t;
-
-/* Shader options */
-typedef enum {
- GLSLANG_SHADER_DEFAULT_BIT = 0,
- GLSLANG_SHADER_AUTO_MAP_BINDINGS = (1 << 0),
- GLSLANG_SHADER_AUTO_MAP_LOCATIONS = (1 << 1),
- GLSLANG_SHADER_VULKAN_RULES_RELAXED = (1 << 2),
- LAST_ELEMENT_MARKER(GLSLANG_SHADER_COUNT),
-} glslang_shader_options_t;
-
-/* TResourceType counterpart */
-typedef enum {
- GLSLANG_RESOURCE_TYPE_SAMPLER,
- GLSLANG_RESOURCE_TYPE_TEXTURE,
- GLSLANG_RESOURCE_TYPE_IMAGE,
- GLSLANG_RESOURCE_TYPE_UBO,
- GLSLANG_RESOURCE_TYPE_SSBO,
- GLSLANG_RESOURCE_TYPE_UAV,
- LAST_ELEMENT_MARKER(GLSLANG_RESOURCE_TYPE_COUNT),
-} glslang_resource_type_t;
-
-#undef LAST_ELEMENT_MARKER
-
-#endif
diff --git a/thirdparty/glslang/glslang/Include/intermediate.h b/thirdparty/glslang/glslang/Include/intermediate.h
index e6b4df4b65..b002ce889d 100644
--- a/thirdparty/glslang/glslang/Include/intermediate.h
+++ b/thirdparty/glslang/glslang/Include/intermediate.h
@@ -72,9 +72,7 @@ enum TOperator {
EOpFunctionCall,
EOpFunction, // For function definition
EOpParameters, // an aggregate listing the parameters to a function
-#ifndef GLSLANG_WEB
EOpSpirvInst,
-#endif
//
// Unary operators
@@ -629,6 +627,9 @@ enum TOperator {
EOpCooperativeMatrixLoad,
EOpCooperativeMatrixStore,
EOpCooperativeMatrixMulAdd,
+ EOpCooperativeMatrixLoadNV,
+ EOpCooperativeMatrixStoreNV,
+ EOpCooperativeMatrixMulAddNV,
EOpBeginInvocationInterlock, // Fragment only
EOpEndInvocationInterlock, // Fragment only
@@ -766,7 +767,8 @@ enum TOperator {
EOpConstructTextureSampler,
EOpConstructNonuniform, // expected to be transformed away, not present in final AST
EOpConstructReference,
- EOpConstructCooperativeMatrix,
+ EOpConstructCooperativeMatrixNV,
+ EOpConstructCooperativeMatrixKHR,
EOpConstructAccStruct,
EOpConstructGuardEnd,
@@ -1331,12 +1333,7 @@ public:
// per process threadPoolAllocator, then it causes increased memory usage per compile
// it is essential to use "symbol = sym" to assign to symbol
TIntermSymbol(long long i, const TString& n, const TType& t)
- : TIntermTyped(t), id(i),
-#ifndef GLSLANG_WEB
- flattenSubset(-1),
-#endif
- constSubtree(nullptr)
- { name = n; }
+ : TIntermTyped(t), id(i), flattenSubset(-1), constSubtree(nullptr) { name = n; }
virtual long long getId() const { return id; }
virtual void changeId(long long i) { id = i; }
virtual const TString& getName() const { return name; }
@@ -1347,12 +1344,10 @@ public:
const TConstUnionArray& getConstArray() const { return constArray; }
void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; }
TIntermTyped* getConstSubtree() const { return constSubtree; }
-#ifndef GLSLANG_WEB
void setFlattenSubset(int subset) { flattenSubset = subset; }
virtual const TString& getAccessName() const;
int getFlattenSubset() const { return flattenSubset; } // -1 means full object
-#endif
// This is meant for cases where a node has already been constructed, and
// later on, it becomes necessary to switch to a different symbol.
@@ -1360,9 +1355,7 @@ public:
protected:
long long id; // the unique id of the symbol this node represents
-#ifndef GLSLANG_WEB
int flattenSubset; // how deeply the flattened object rooted at id has been dereferenced
-#endif
TString name; // the name of the symbol this node represents
TConstUnionArray constArray; // if the symbol is a front-end compile-time constant, this is its value
TIntermTyped* constSubtree;
@@ -1417,19 +1410,11 @@ public:
bool isConstructor() const;
bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; }
bool isSampling() const { return op > EOpSamplingGuardBegin && op < EOpSamplingGuardEnd; }
-#ifdef GLSLANG_WEB
- bool isImage() const { return false; }
- bool isSparseTexture() const { return false; }
- bool isImageFootprint() const { return false; }
- bool isSparseImage() const { return false; }
- bool isSubgroup() const { return false; }
-#else
bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; }
bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; }
bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; }
bool isSparseImage() const { return op == EOpSparseImageLoad; }
bool isSubgroup() const { return op > EOpSubgroupGuardStart && op < EOpSubgroupGuardStop; }
-#endif
void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; }
TPrecisionQualifier getOperationPrecision() const { return operationPrecision != EpqNone ?
@@ -1535,7 +1520,6 @@ public:
cracked.offset = true;
cracked.proj = true;
break;
-#ifndef GLSLANG_WEB
case EOpTextureClamp:
case EOpSparseTextureClamp:
cracked.lodClamp = true;
@@ -1622,7 +1606,6 @@ public:
case EOpColorAttachmentReadEXT:
cracked.attachmentEXT = true;
break;
-#endif
default:
break;
}
@@ -1673,15 +1656,11 @@ public:
virtual TIntermUnary* getAsUnaryNode() { return this; }
virtual const TIntermUnary* getAsUnaryNode() const { return this; }
virtual void updatePrecision();
-#ifndef GLSLANG_WEB
void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; }
const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; }
-#endif
protected:
TIntermTyped* operand;
-#ifndef GLSLANG_WEB
TSpirvInstruction spirvInst;
-#endif
};
typedef TVector<TIntermNode*> TIntermSequence;
@@ -1713,10 +1692,8 @@ public:
bool getDebug() const { return debug; }
void setPragmaTable(const TPragmaTable& pTable);
const TPragmaTable& getPragmaTable() const { return *pragmaTable; }
-#ifndef GLSLANG_WEB
void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; }
const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; }
-#endif
protected:
TIntermAggregate(const TIntermAggregate&); // disallow copy constructor
TIntermAggregate& operator=(const TIntermAggregate&); // disallow assignment operator
@@ -1727,9 +1704,7 @@ protected:
bool optimize;
bool debug;
TPragmaTable* pragmaTable;
-#ifndef GLSLANG_WEB
TSpirvInstruction spirvInst;
-#endif
};
//
diff --git a/thirdparty/glslang/glslang/MachineIndependent/Constant.cpp b/thirdparty/glslang/glslang/MachineIndependent/Constant.cpp
index f6916cbef6..8acf9e5526 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/Constant.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/Constant.cpp
@@ -177,7 +177,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst());
break;
-#ifndef GLSLANG_WEB
case EbtInt8:
if (rightUnionArray[i] == (signed char)0)
newConstArray[i].setI8Const((signed char)0x7F);
@@ -227,7 +226,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
break;
default:
return nullptr;
-#endif
}
}
break;
@@ -266,7 +264,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
newConstArray[i].setIConst(0);
break;
} else goto modulo_default;
-#ifndef GLSLANG_WEB
case EbtInt64:
if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == LLONG_MIN) {
newConstArray[i].setI64Const(0);
@@ -277,7 +274,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right
newConstArray[i].setIConst(0);
break;
} else goto modulo_default;
-#endif
default:
modulo_default:
newConstArray[i] = leftUnionArray[i] % rightUnionArray[i];
@@ -507,14 +503,12 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
: -unionArray[i].getIConst());
break;
case EbtUint: newConstArray[i].setUConst(static_cast<unsigned int>(-static_cast<int>(unionArray[i].getUConst()))); break;
-#ifndef GLSLANG_WEB
case EbtInt8: newConstArray[i].setI8Const(-unionArray[i].getI8Const()); break;
case EbtUint8: newConstArray[i].setU8Const(static_cast<unsigned int>(-static_cast<signed int>(unionArray[i].getU8Const()))); break;
case EbtInt16: newConstArray[i].setI16Const(-unionArray[i].getI16Const()); break;
case EbtUint16:newConstArray[i].setU16Const(static_cast<unsigned int>(-static_cast<signed int>(unionArray[i].getU16Const()))); break;
case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break;
case EbtUint64: newConstArray[i].setU64Const(static_cast<unsigned long long>(-static_cast<long long>(unionArray[i].getU64Const()))); break;
-#endif
default:
return nullptr;
}
@@ -684,7 +678,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EOpConvDoubleToInt:
newConstArray[i].setIConst(static_cast<int>(unionArray[i].getDConst())); break;
-#ifndef GLSLANG_WEB
case EOpConvInt8ToBool:
newConstArray[i].setBConst(unionArray[i].getI8Const() != 0); break;
case EOpConvUint8ToBool:
@@ -919,7 +912,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType)
case EOpConvUint64ToPtr:
case EOpConstructReference:
newConstArray[i].setU64Const(unionArray[i].getU64Const()); break;
-#endif
// TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out
@@ -1066,7 +1058,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
case EbtUint:
newConstArray[comp].setUConst(std::min(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()));
break;
-#ifndef GLSLANG_WEB
case EbtInt8:
newConstArray[comp].setI8Const(std::min(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()));
break;
@@ -1085,7 +1076,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
case EbtUint64:
newConstArray[comp].setU64Const(std::min(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()));
break;
-#endif
default: assert(false && "Default missing");
}
break;
@@ -1102,7 +1092,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
case EbtUint:
newConstArray[comp].setUConst(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()));
break;
-#ifndef GLSLANG_WEB
case EbtInt8:
newConstArray[comp].setI8Const(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()));
break;
@@ -1121,7 +1110,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
case EbtUint64:
newConstArray[comp].setU64Const(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()));
break;
-#endif
default: assert(false && "Default missing");
}
break;
@@ -1137,7 +1125,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
newConstArray[comp].setUConst(std::min(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()),
childConstUnions[2][arg2comp].getUConst()));
break;
-#ifndef GLSLANG_WEB
case EbtInt8:
newConstArray[comp].setI8Const(std::min(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()),
childConstUnions[2][arg2comp].getI8Const()));
@@ -1166,7 +1153,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode)
newConstArray[comp].setU64Const(std::min(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()),
childConstUnions[2][arg2comp].getU64Const()));
break;
-#endif
default: assert(false && "Default missing");
}
break;
diff --git a/thirdparty/glslang/glslang/MachineIndependent/Initialize.cpp b/thirdparty/glslang/glslang/MachineIndependent/Initialize.cpp
index 39f42b62f1..3c7aaea3ff 100644..100755
--- a/thirdparty/glslang/glslang/MachineIndependent/Initialize.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/Initialize.cpp
@@ -144,10 +144,6 @@ struct Versioning {
EProfile EDesktopProfile = static_cast<EProfile>(ENoProfile | ECoreProfile | ECompatibilityProfile);
// Declare pointers to put into the table for versioning.
-#ifdef GLSLANG_WEB
- const Versioning* Es300Desktop130 = nullptr;
- const Versioning* Es310Desktop420 = nullptr;
-#else
const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr },
{ EDesktopProfile, 0, 130, 0, nullptr },
{ EBadProfile } };
@@ -162,7 +158,6 @@ EProfile EDesktopProfile = static_cast<EProfile>(ENoProfile | ECoreProfile | ECo
{ EDesktopProfile, 0, 450, 0, nullptr },
{ EBadProfile } };
const Versioning* Es310Desktop450 = &Es310Desktop450Version[0];
-#endif
// The main descriptor of what a set of function prototypes can look like, and
// a pointer to extra versioning information, when needed.
@@ -264,10 +259,8 @@ const BuiltInFunction BaseFunctions[] = {
{ EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
{ EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 },
{ EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop420 },
-#ifndef GLSLANG_WEB
{ EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 },
{ EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 },
-#endif
{ EOpNull }
};
@@ -386,10 +379,8 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function)
if (arg == function.numArguments - 1 && (function.classes & ClassLO))
decls.append("out ");
if (arg == 0) {
-#ifndef GLSLANG_WEB
if (function.classes & ClassCV)
decls.append("coherent volatile ");
-#endif
if (function.classes & ClassFIO)
decls.append("inout ");
if (function.classes & ClassFO)
@@ -416,11 +407,6 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function)
// See if the tabled versioning information allows the current version.
bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */)
{
-#if defined(GLSLANG_WEB)
- // all entries in table are valid
- return true;
-#endif
-
// nullptr means always valid
if (function.versioning == nullptr)
return true;
@@ -501,7 +487,6 @@ TBuiltIns::TBuiltIns()
prefixes[EbtFloat] = "";
prefixes[EbtInt] = "i";
prefixes[EbtUint] = "u";
-#if !defined(GLSLANG_WEB)
prefixes[EbtFloat16] = "f16";
prefixes[EbtInt8] = "i8";
prefixes[EbtUint8] = "u8";
@@ -509,7 +494,6 @@ TBuiltIns::TBuiltIns()
prefixes[EbtUint16] = "u16";
prefixes[EbtInt64] = "i64";
prefixes[EbtUint64] = "u64";
-#endif
postfixes[2] = "2";
postfixes[3] = "3";
@@ -519,13 +503,11 @@ TBuiltIns::TBuiltIns()
dimMap[Esd2D] = 2;
dimMap[Esd3D] = 3;
dimMap[EsdCube] = 3;
-#ifndef GLSLANG_WEB
dimMap[Esd1D] = 1;
dimMap[EsdRect] = 2;
dimMap[EsdBuffer] = 1;
dimMap[EsdSubpass] = 2; // potentially unused for now
dimMap[EsdAttachmentEXT] = 2; // potentially unused for now
-#endif
}
TBuiltIns::~TBuiltIns()
@@ -543,10 +525,6 @@ TBuiltIns::~TBuiltIns()
//
void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion)
{
-#ifdef GLSLANG_WEB
- version = 310;
- profile = EEsProfile;
-#endif
addTabledBuiltins(version, profile, spvVersion);
//============================================================================
@@ -555,7 +533,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
//
//============================================================================
-#ifndef GLSLANG_WEB
//
// Derivatives Functions.
//
@@ -1500,7 +1477,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"void atomicStore(coherent volatile out double, double, int, int, int);"
"\n");
}
-#endif // !GLSLANG_WEB
if ((profile == EEsProfile && version >= 300) ||
(profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding
@@ -1528,7 +1504,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
-#ifndef GLSLANG_WEB
if ((profile != EEsProfile && version >= 400) ||
(profile == EEsProfile && version >= 310)) { // GL_OES_gpu_shader5
@@ -1606,7 +1581,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
-#endif
if ((profile == EEsProfile && version >= 300) ||
(profile != EEsProfile && version >= 150)) {
@@ -1635,7 +1609,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
-#ifndef GLSLANG_WEB
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 150)) {
commonBuiltins.append(
@@ -1655,7 +1628,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"vec4 unpackUnorm4x8(highp uint);"
"\n");
}
-#endif
//
// Matrix Functions.
@@ -1714,7 +1686,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
}
}
-#ifndef GLSLANG_WEB
//
// Original-style texture functions existing in all stages.
// (Per-stage functions below.)
@@ -4257,7 +4228,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"void EndPrimitive();"
"\n");
}
-#endif // !GLSLANG_WEB
//============================================================================
//
@@ -4294,7 +4264,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"void groupMemoryBarrier();"
);
}
-#ifndef GLSLANG_WEB
if ((profile != EEsProfile && version >= 420) || esBarrier) {
if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) {
commonBuiltins.append("void memoryBarrierAtomicCounter();");
@@ -4397,6 +4366,94 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"icoopmatNV coopMatMulAddNV(icoopmatNV A, icoopmatNV B, icoopmatNV C);\n"
"ucoopmatNV coopMatMulAddNV(ucoopmatNV A, ucoopmatNV B, ucoopmatNV C);\n"
);
+
+ std::string cooperativeMatrixFuncs =
+ "void coopMatLoad(out coopmat m, volatile coherent int8_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent int16_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent int32_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent int64_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent uint8_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent uint16_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent uint32_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent uint64_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent float16_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent float[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent float64_t[] buf, uint element, uint stride, int matrixLayout);\n"
+
+ "void coopMatLoad(out coopmat m, volatile coherent i8vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent i16vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent i32vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent i64vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u8vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u16vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u32vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u64vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent f16vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent f32vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent f64vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+
+ "void coopMatLoad(out coopmat m, volatile coherent i8vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent i16vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent i32vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent i64vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u8vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u16vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u32vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent u64vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent f16vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent f32vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatLoad(out coopmat m, volatile coherent f64vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+
+ "void coopMatStore(coopmat m, volatile coherent int8_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent int16_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent int32_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent int64_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent uint8_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent uint16_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent uint32_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent uint64_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent float16_t[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent float[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent float64_t[] buf, uint element, uint stride, int matrixLayout);\n"
+
+ "void coopMatStore(coopmat m, volatile coherent i8vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent i16vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent i32vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent i64vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u8vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u16vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u32vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u64vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent f16vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent f32vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent f64vec2[] buf, uint element, uint stride, int matrixLayout);\n"
+
+ "void coopMatStore(coopmat m, volatile coherent i8vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent i16vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent i32vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent i64vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u8vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u16vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u32vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent u64vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent f16vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent f32vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+ "void coopMatStore(coopmat m, volatile coherent f64vec4[] buf, uint element, uint stride, int matrixLayout);\n"
+
+ "coopmat coopMatMulAdd(coopmat A, coopmat B, coopmat C);\n"
+ "coopmat coopMatMulAdd(coopmat A, coopmat B, coopmat C, int matrixOperands);\n";
+
+ commonBuiltins.append(cooperativeMatrixFuncs.c_str());
+
+ commonBuiltins.append(
+ "const int gl_MatrixUseA = 0;\n"
+ "const int gl_MatrixUseB = 1;\n"
+ "const int gl_MatrixUseAccumulator = 2;\n"
+ "const int gl_MatrixOperandsSaturatingAccumulation = 0x10;\n"
+ "const int gl_CooperativeMatrixLayoutRowMajor = 0;\n"
+ "const int gl_CooperativeMatrixLayoutColumnMajor = 1;\n"
+ "\n"
+ );
}
//============================================================================
@@ -4754,7 +4811,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"void SetMeshOutputsEXT(uint, uint);"
"\n");
}
-#endif // !GLSLANG_WEB
//============================================================================
//
@@ -4776,13 +4832,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"highp float diff;" // f - n
);
} else {
-#ifndef GLSLANG_WEB
commonBuiltins.append(
"float near;" // n
"float far;" // f
"float diff;" // f - n
);
-#endif
}
commonBuiltins.append(
@@ -4791,7 +4845,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
-#if !defined(GLSLANG_WEB)
if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) {
//
// Matrix state. p. 31, 32, 37, 39, 40.
@@ -4909,7 +4962,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
-#endif // !GLSLANG_WEB
//============================================================================
//
@@ -4939,7 +4991,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"\n");
}
-#ifndef GLSLANG_WEB
//============================================================================
//
// Define the interface to the mesh/task shader.
@@ -5222,19 +5273,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"in highp int gl_InstanceID;" // needs qualifier fixed later
);
if (spvVersion.vulkan > 0)
-#endif
stageBuiltins[EShLangVertex].append(
"in highp int gl_VertexIndex;"
"in highp int gl_InstanceIndex;"
);
-#ifndef GLSLANG_WEB
if (version < 310)
-#endif
stageBuiltins[EShLangVertex].append(
"highp vec4 gl_Position;" // needs qualifier fixed later
"highp float gl_PointSize;" // needs qualifier fixed later
);
-#ifndef GLSLANG_WEB
else
stageBuiltins[EShLangVertex].append(
"out gl_PerVertex {"
@@ -5712,7 +5759,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"mediump vec2 gl_PointCoord;" // needs qualifier fixed later
);
}
-#endif
if (version >= 300) {
stageBuiltins[EShLangFragment].append(
"highp vec4 gl_FragCoord;" // needs qualifier fixed later
@@ -5721,7 +5767,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"highp float gl_FragDepth;" // needs qualifier fixed later
);
}
-#ifndef GLSLANG_WEB
if (version >= 310) {
stageBuiltins[EShLangFragment].append(
"bool gl_HelperInvocation;" // needs qualifier fixed later
@@ -5766,15 +5811,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"flat in highp int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate
);
}
-#endif
stageBuiltins[EShLangFragment].append("\n");
if (version >= 130)
add2ndGenerationSamplingImaging(version, profile, spvVersion);
-#ifndef GLSLANG_WEB
-
if ((profile != EEsProfile && version >= 140) ||
(profile == EEsProfile && version >= 310)) {
stageBuiltins[EShLangFragment].append(
@@ -6166,7 +6208,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
}
}
}
-#endif // !GLSLANG_WEB
// printf("%s\n", commonBuiltins.c_str());
// printf("%s\n", stageBuiltins[EShLangFragment].c_str());
@@ -6185,26 +6226,14 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
// enumerate all the types
const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint,
-#if !defined(GLSLANG_WEB)
- EbtFloat16
-#endif
+ EbtFloat16
};
-#ifdef GLSLANG_WEB
- bool skipBuffer = true;
- bool skipCubeArrayed = true;
- const int image = 0;
-#else
bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140);
bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130);
for (int image = 0; image <= 1; ++image) // loop over "bool" image vs sampler
-#endif
{
for (int shadow = 0; shadow <= 1; ++shadow) { // loop over "bool" shadow or not
-#ifdef GLSLANG_WEB
- const int ms = 0;
-#else
for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not
-#endif
{
if ((ms || image) && shadow)
continue;
@@ -6216,9 +6245,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
continue;
for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not
-#ifdef GLSLANG_WEB
- for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube
-#else
for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass
if (dim == EsdAttachmentEXT)
continue;
@@ -6242,7 +6268,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
continue;
if (ms && arrayed && profile == EEsProfile && version < 310)
continue;
-#endif
if (dim == Esd3D && shadow)
continue;
if (dim == EsdCube && arrayed && skipCubeArrayed)
@@ -6252,25 +6277,21 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
// Loop over the bTypes
for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) {
-#ifndef GLSLANG_WEB
if (bTypes[bType] == EbtFloat16 && (profile == EEsProfile || version < 450))
continue;
if (dim == EsdRect && version < 140 && bType > 0)
continue;
-#endif
if (shadow && (bTypes[bType] == EbtInt || bTypes[bType] == EbtUint))
continue;
//
// Now, make all the function prototypes for the type we just built...
//
TSampler sampler;
-#ifndef GLSLANG_WEB
if (dim == EsdSubpass) {
sampler.setSubpass(bTypes[bType], ms ? true : false);
} else if (dim == EsdAttachmentEXT) {
sampler.setAttachmentEXT(bTypes[bType]);
} else
-#endif
if (image) {
sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false,
shadow ? true : false,
@@ -6283,12 +6304,10 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
TString typeName = sampler.getString();
-#ifndef GLSLANG_WEB
if (dim == EsdSubpass) {
addSubpassSampling(sampler, typeName, version, profile);
continue;
}
-#endif
addQueryFunctions(sampler, typeName, version, profile);
@@ -6296,7 +6315,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
addImageFunctions(sampler, typeName, version, profile);
else {
addSamplingFunctions(sampler, typeName, version, profile);
-#ifndef GLSLANG_WEB
addGatherFunctions(sampler, typeName, version, profile);
if (spvVersion.vulkan > 0 && sampler.isCombined() && !sampler.shadow) {
// Base Vulkan allows texelFetch() for
@@ -6312,7 +6330,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c
addSamplingFunctions(sampler, textureTypeName, version, profile);
addQueryFunctions(sampler, textureTypeName, version, profile);
}
-#endif
}
}
}
@@ -6343,16 +6360,6 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int
int sizeDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0);
-#ifdef GLSLANG_WEB
- commonBuiltins.append("highp ");
- commonBuiltins.append("ivec");
- commonBuiltins.append(postfixes[sizeDims]);
- commonBuiltins.append(" textureSize(");
- commonBuiltins.append(typeName);
- commonBuiltins.append(",int);\n");
- return;
-#endif
-
if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 420)))
return;
@@ -6672,11 +6679,6 @@ void TBuiltIns::addSubpassSampling(TSampler sampler, const TString& typeName, in
//
void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
{
-#ifdef GLSLANG_WEB
- profile = EEsProfile;
- version = 310;
-#endif
-
//
// texturing
//
@@ -6751,11 +6753,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
continue;
// loop over 16-bit floating-point texel addressing
-#if defined(GLSLANG_WEB)
- const int f16TexAddr = 0;
-#else
for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr)
-#endif
{
if (f16TexAddr && sampler.type != EbtFloat16)
continue;
@@ -6764,11 +6762,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
totalDims--;
}
// loop over "bool" lod clamp
-#if defined(GLSLANG_WEB)
- const int lodClamp = 0;
-#else
for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp)
-#endif
{
if (lodClamp && (profile == EEsProfile || version < 450))
continue;
@@ -6776,11 +6770,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
continue;
// loop over "bool" sparse or not
-#if defined(GLSLANG_WEB)
- const int sparse = 0;
-#else
for (int sparse = 0; sparse <= 1; ++sparse)
-#endif
{
if (sparse && (profile == EEsProfile || version < 450))
continue;
@@ -6957,11 +6947,6 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName,
//
void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile)
{
-#ifdef GLSLANG_WEB
- profile = EEsProfile;
- version = 310;
-#endif
-
switch (sampler.dim) {
case Esd2D:
case EsdRect:
@@ -7200,11 +7185,6 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in
//
void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language)
{
-#ifdef GLSLANG_WEB
- version = 310;
- profile = EEsProfile;
-#endif
-
//
// Initialize the context-dependent (resource-dependent) built-in strings for parsing.
//
@@ -7262,7 +7242,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
s.append(builtInConstant);
}
-#ifndef GLSLANG_WEB
if (version >= 310) {
// geometry
@@ -7585,7 +7564,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
snprintf(builtInConstant, maxSize, "const int gl_MaxTransformFeedbackInterleavedComponents = %d;", resources.maxTransformFeedbackInterleavedComponents);
s.append(builtInConstant);
}
-#endif
}
// compute
@@ -7607,7 +7585,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
s.append("\n");
}
-#ifndef GLSLANG_WEB
// images (some in compute below)
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 130)) {
@@ -7709,7 +7686,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf
s.append("\n");
}
-#endif
s.append("\n");
}
@@ -7812,11 +7788,6 @@ static void BuiltInVariable(const char* blockName, const char* name, TBuiltInVar
//
void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable)
{
-#ifdef GLSLANG_WEB
- version = 310;
- profile = EEsProfile;
-#endif
-
//
// Tag built-in variables and functions with additional qualifier and extension information
// that cannot be declared with the text strings.
@@ -7836,7 +7807,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_InstanceIndex", EbvInstanceIndex, symbolTable);
}
-#ifndef GLSLANG_WEB
if (spvVersion.vulkan == 0) {
SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable);
SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable);
@@ -8010,7 +7980,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
case EShLangTessEvaluation:
case EShLangGeometry:
-#endif // !GLSLANG_WEB
SpecialQualifier("gl_Position", EvqPosition, EbvPosition, symbolTable);
SpecialQualifier("gl_PointSize", EvqPointSize, EbvPointSize, symbolTable);
@@ -8020,7 +7989,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_out", "gl_Position", EbvPosition, symbolTable);
BuiltInVariable("gl_out", "gl_PointSize", EbvPointSize, symbolTable);
-#ifndef GLSLANG_WEB
SpecialQualifier("gl_ClipVertex", EvqClipVertex, EbvClipVertex, symbolTable);
BuiltInVariable("gl_in", "gl_ClipDistance", EbvClipDistance, symbolTable);
@@ -8200,8 +8168,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
}
}
-
-#endif // !GLSLANG_WEB
break;
case EShLangFragment:
@@ -8218,7 +8184,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
}
}
SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable);
-#ifndef GLSLANG_WEB
SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable);
SpecialQualifier("gl_FragStencilRefARB", EvqFragStencil, EbvFragStencilRef, symbolTable);
SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable);
@@ -8760,7 +8725,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setFunctionExtensions("stencilAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image);
symbolTable.setFunctionExtensions("depthAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image);
symbolTable.setFunctionExtensions("colorAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image);
-#endif // !GLSLANG_WEB
break;
case EShLangCompute:
@@ -8773,7 +8737,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable);
BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable);
-#ifndef GLSLANG_WEB
if ((profile != EEsProfile && version >= 140) ||
(profile == EEsProfile && version >= 310)) {
symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
@@ -8897,6 +8860,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setFunctionExtensions("coopMatMulAddNV", 2, coopExt);
}
+ {
+ symbolTable.setFunctionExtensions("coopMatLoad", 1, &E_GL_KHR_cooperative_matrix);
+ symbolTable.setFunctionExtensions("coopMatStore", 1, &E_GL_KHR_cooperative_matrix);
+ symbolTable.setFunctionExtensions("coopMatMulAdd", 1, &E_GL_KHR_cooperative_matrix);
+ }
+
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives);
symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives);
@@ -8916,10 +8885,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
}
-#endif // !GLSLANG_WEB
break;
-#if !defined(GLSLANG_WEB)
case EShLangRayGen:
case EShLangIntersect:
case EShLangAnyHit:
@@ -9239,7 +9206,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_Layer", 1, &E_GL_EXT_mesh_shader);
symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_ViewportIndex", 1, &E_GL_EXT_mesh_shader);
symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", 1, &E_GL_EXT_mesh_shader);
- symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_mesh_shader);
+
+ // note: technically this member requires both GL_EXT_mesh_shader and GL_EXT_fragment_shading_rate
+ // since setVariableExtensions only needs *one of* the extensions to validate, it's more useful to specify EXT_fragment_shading_rate
+ // GL_EXT_mesh_shader will be required in practice by use of other fields of gl_MeshPrimitivesEXT
+ symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate);
BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveID", EbvPrimitiveId, symbolTable);
BuiltInVariable("gl_MeshPrimitivesEXT", "gl_Layer", EbvLayer, symbolTable);
@@ -9488,7 +9459,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate);
}
break;
-#endif
default:
assert(false && "Language not supported");
@@ -9504,7 +9474,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
relateTabledBuiltins(version, profile, spvVersion, language, symbolTable);
-#ifndef GLSLANG_WEB
symbolTable.relateToOperator("doubleBitsToInt64", EOpDoubleBitsToInt64);
symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64);
symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble);
@@ -10005,9 +9974,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse);
symbolTable.relateToOperator("fwidthCoarse",EOpFwidthCoarse);
}
- symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoad);
- symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStore);
- symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd);
+ symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoadNV);
+ symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStoreNV);
+ symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAddNV);
+
+ symbolTable.relateToOperator("coopMatLoad", EOpCooperativeMatrixLoad);
+ symbolTable.relateToOperator("coopMatStore", EOpCooperativeMatrixStore);
+ symbolTable.relateToOperator("coopMatMulAdd", EOpCooperativeMatrixMulAdd);
break;
case EShLangRayGen:
@@ -10097,7 +10070,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
default:
assert(false && "Language not supported");
}
-#endif // !GLSLANG_WEB
}
//
@@ -10111,7 +10083,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
//
void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources)
{
-#ifndef GLSLANG_WEB
if (profile != EEsProfile && version >= 430 && version < 440) {
symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts);
symbolTable.setVariableExtensions("gl_MaxTransformFeedbackInterleavedComponents", 1, &E_GL_ARB_enhanced_layouts);
@@ -10183,7 +10154,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
default:
break;
}
-#endif
}
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/MachineIndependent/Intermediate.cpp b/thirdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
index e542f90c8f..a8e3b38bfd 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/Intermediate.cpp
@@ -388,7 +388,6 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child,
case EOpConstructFloat: newType = EbtFloat; break;
case EOpConstructInt: newType = EbtInt; break;
case EOpConstructUint: newType = EbtUint; break;
-#ifndef GLSLANG_WEB
case EOpConstructInt8: newType = EbtInt8; break;
case EOpConstructUint8: newType = EbtUint8; break;
case EOpConstructInt16: newType = EbtInt16; break;
@@ -397,7 +396,6 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child,
case EOpConstructUint64: newType = EbtUint64; break;
case EOpConstructDouble: newType = EbtDouble; break;
case EOpConstructFloat16: newType = EbtFloat16; break;
-#endif
default: break; // some compilers want this
}
@@ -569,7 +567,6 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const
{
switch (dst) {
-#ifndef GLSLANG_WEB
case EbtDouble:
switch (src) {
case EbtUint: newOp = EOpConvUintToDouble; break;
@@ -587,13 +584,11 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
return false;
}
break;
-#endif
case EbtFloat:
switch (src) {
case EbtInt: newOp = EOpConvIntToFloat; break;
case EbtUint: newOp = EOpConvUintToFloat; break;
case EbtBool: newOp = EOpConvBoolToFloat; break;
-#ifndef GLSLANG_WEB
case EbtDouble: newOp = EOpConvDoubleToFloat; break;
case EbtInt8: newOp = EOpConvInt8ToFloat; break;
case EbtUint8: newOp = EOpConvUint8ToFloat; break;
@@ -602,12 +597,10 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
case EbtFloat16: newOp = EOpConvFloat16ToFloat; break;
case EbtInt64: newOp = EOpConvInt64ToFloat; break;
case EbtUint64: newOp = EOpConvUint64ToFloat; break;
-#endif
default:
return false;
}
break;
-#ifndef GLSLANG_WEB
case EbtFloat16:
switch (src) {
case EbtInt8: newOp = EOpConvInt8ToFloat16; break;
@@ -625,13 +618,11 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
return false;
}
break;
-#endif
case EbtBool:
switch (src) {
case EbtInt: newOp = EOpConvIntToBool; break;
case EbtUint: newOp = EOpConvUintToBool; break;
case EbtFloat: newOp = EOpConvFloatToBool; break;
-#ifndef GLSLANG_WEB
case EbtDouble: newOp = EOpConvDoubleToBool; break;
case EbtInt8: newOp = EOpConvInt8ToBool; break;
case EbtUint8: newOp = EOpConvUint8ToBool; break;
@@ -640,12 +631,10 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
case EbtFloat16: newOp = EOpConvFloat16ToBool; break;
case EbtInt64: newOp = EOpConvInt64ToBool; break;
case EbtUint64: newOp = EOpConvUint64ToBool; break;
-#endif
default:
return false;
}
break;
-#ifndef GLSLANG_WEB
case EbtInt8:
switch (src) {
case EbtUint8: newOp = EOpConvUint8ToInt8; break;
@@ -715,14 +704,12 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
return false;
}
break;
-#endif
case EbtInt:
switch (src) {
case EbtUint: newOp = EOpConvUintToInt; break;
case EbtBool: newOp = EOpConvBoolToInt; break;
case EbtFloat: newOp = EOpConvFloatToInt; break;
-#ifndef GLSLANG_WEB
case EbtInt8: newOp = EOpConvInt8ToInt; break;
case EbtUint8: newOp = EOpConvUint8ToInt; break;
case EbtInt16: newOp = EOpConvInt16ToInt; break;
@@ -731,7 +718,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
case EbtFloat16: newOp = EOpConvFloat16ToInt; break;
case EbtInt64: newOp = EOpConvInt64ToInt; break;
case EbtUint64: newOp = EOpConvUint64ToInt; break;
-#endif
default:
return false;
}
@@ -741,7 +727,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
case EbtInt: newOp = EOpConvIntToUint; break;
case EbtBool: newOp = EOpConvBoolToUint; break;
case EbtFloat: newOp = EOpConvFloatToUint; break;
-#ifndef GLSLANG_WEB
case EbtInt8: newOp = EOpConvInt8ToUint; break;
case EbtUint8: newOp = EOpConvUint8ToUint; break;
case EbtInt16: newOp = EOpConvInt16ToUint; break;
@@ -750,7 +735,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
case EbtFloat16: newOp = EOpConvFloat16ToUint; break;
case EbtInt64: newOp = EOpConvInt64ToUint; break;
case EbtUint64: newOp = EOpConvUint64ToUint; break;
-#endif
// For bindless texture type conversion, add a dummy convert op, just
// to generate a new TIntermTyped
// uvec2(any sampler type)
@@ -760,7 +744,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
return false;
}
break;
-#ifndef GLSLANG_WEB
case EbtInt64:
switch (src) {
case EbtInt8: newOp = EOpConvInt8ToInt64; break;
@@ -795,7 +778,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne
return false;
}
break;
-#endif
default:
return false;
}
@@ -811,7 +793,6 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
// Add a new newNode for the conversion.
//
-#ifndef GLSLANG_WEB
bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 ||
convertTo == EbtInt16 || convertTo == EbtUint16 ||
convertTo == EbtInt || convertTo == EbtUint ||
@@ -848,7 +829,6 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
return nullptr;
}
}
-#endif
TIntermUnary* newNode = nullptr;
TOperator newOp = EOpNull;
@@ -860,13 +840,11 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
newNode = addUnaryNode(newOp, node, node->getLoc(), newType);
if (node->getAsConstantUnion()) {
-#ifndef GLSLANG_WEB
// 8/16-bit storage extensions don't support 8/16-bit constants, so don't fold conversions
// to those types
if ((getArithemeticInt8Enabled() || !(convertTo == EbtInt8 || convertTo == EbtUint8)) &&
(getArithemeticInt16Enabled() || !(convertTo == EbtInt16 || convertTo == EbtUint16)) &&
(getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16)))
-#endif
{
TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType);
if (folded)
@@ -1049,6 +1027,12 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
if (type.isArray() || node->getType().isArray())
return nullptr;
+ // Reject implicit conversions to cooperative matrix types
+ if (node->getType().isCoopMat() &&
+ op != EOpConstructCooperativeMatrixNV &&
+ op != EOpConstructCooperativeMatrixKHR)
+ return nullptr;
+
// Note: callers are responsible for other aspects of shape,
// like vector and matrix sizes.
@@ -1060,7 +1044,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EOpConstructFloat:
case EOpConstructInt:
case EOpConstructUint:
-#ifndef GLSLANG_WEB
case EOpConstructDouble:
case EOpConstructFloat16:
case EOpConstructInt8:
@@ -1071,8 +1054,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EOpConstructUint64:
break;
-#endif
-
//
// Implicit conversions
//
@@ -1117,7 +1098,8 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case EOpSequence:
case EOpConstructStruct:
- case EOpConstructCooperativeMatrix:
+ case EOpConstructCooperativeMatrixNV:
+ case EOpConstructCooperativeMatrixKHR:
if (type.isReference() || node->getType().isReference()) {
// types must match to assign a reference
@@ -1159,7 +1141,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
}
bool canPromoteConstant = true;
-#ifndef GLSLANG_WEB
// GL_EXT_shader_16bit_storage can't do OpConstantComposite with
// 16-bit types, so disable promotion for those types.
// Many issues with this, from JohnK:
@@ -1187,7 +1168,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
default:
break;
}
-#endif
if (canPromoteConstant && node->getAsConstantUnion())
return promoteConstantUnion(type.getBasicType(), node->getAsConstantUnion());
@@ -1484,10 +1464,6 @@ bool TIntermediate::isFPPromotion(TBasicType from, TBasicType to) const
bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const
{
-#ifdef GLSLANG_WEB
- return false;
-#endif
-
switch (from) {
case EbtInt:
switch(to) {
@@ -1568,10 +1544,6 @@ bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const
bool TIntermediate::isFPConversion(TBasicType from, TBasicType to) const
{
-#ifdef GLSLANG_WEB
- return false;
-#endif
-
if (to == EbtFloat && from == EbtFloat16) {
return true;
} else {
@@ -1592,7 +1564,6 @@ bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const
break;
}
break;
-#ifndef GLSLANG_WEB
case EbtInt8:
case EbtUint8:
case EbtInt16:
@@ -1612,7 +1583,6 @@ bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const
return true;
}
break;
-#endif
default:
break;
}
@@ -1814,10 +1784,6 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBasicType uintType)
{
-#ifdef GLSLANG_WEB
- return false;
-#endif
-
switch(sintType) {
case EbtInt8:
switch(uintType) {
@@ -1878,11 +1844,6 @@ static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBas
static TBasicType getCorrespondingUnsignedType(TBasicType type)
{
-#ifdef GLSLANG_WEB
- assert(type == EbtInt);
- return EbtUint;
-#endif
-
switch(type) {
case EbtInt8:
return EbtUint8;
@@ -2008,8 +1969,11 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const
if (type.getQualifier().isNonUniform())
return EOpConstructNonuniform;
- if (type.isCoopMat())
- return EOpConstructCooperativeMatrix;
+ if (type.isCoopMatNV())
+ return EOpConstructCooperativeMatrixNV;
+
+ if (type.isCoopMatKHR())
+ return EOpConstructCooperativeMatrixKHR;
switch (type.getBasicType()) {
case EbtStruct:
@@ -2172,7 +2136,6 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const
}
}
break;
-#ifndef GLSLANG_WEB
case EbtDouble:
if (type.getMatrixCols()) {
switch (type.getMatrixCols()) {
@@ -2311,7 +2274,6 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const
case EbtAccStruct:
op = EOpConstructAccStruct;
break;
-#endif
default:
break;
}
@@ -2792,7 +2754,6 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/)
if (aggRoot && aggRoot->getOp() == EOpNull)
aggRoot->setOperator(EOpSequence);
-#ifndef GLSLANG_WEB
// Propagate 'noContraction' label in backward from 'precise' variables.
glslang::PropagateNoContraction(*this);
@@ -2806,7 +2767,6 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/)
assert(0);
break;
}
-#endif
return true;
}
@@ -3526,20 +3486,28 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
}
if (left->getType().isCoopMat() || right->getType().isCoopMat()) {
+ // Operations on two cooperative matrices must have identical types
if (left->getType().isCoopMat() && right->getType().isCoopMat() &&
- *left->getType().getTypeParameters() != *right->getType().getTypeParameters()) {
+ left->getType() != right->getType()) {
return false;
}
switch (op) {
case EOpMul:
case EOpMulAssign:
- if (left->getType().isCoopMat() && right->getType().isCoopMat()) {
+ // Mul not supported in NV_cooperative_matrix
+ if (left->getType().isCoopMatNV() && right->getType().isCoopMatNV()) {
return false;
}
- if (op == EOpMulAssign && right->getType().isCoopMat()) {
+ // NV_cooperative_matrix supports MulAssign is for mat*=scalar only.
+ // KHR_cooperative_matrix supports it for mat*=mat as well.
+ if (op == EOpMulAssign && right->getType().isCoopMatNV()) {
return false;
}
- node.setOp(op == EOpMulAssign ? EOpMatrixTimesScalarAssign : EOpMatrixTimesScalar);
+ // Use MatrixTimesScalar if either operand is not a matrix. Otherwise use Mul.
+ if (!left->getType().isCoopMat() || !right->getType().isCoopMat()) {
+ node.setOp(op == EOpMulAssign ? EOpMatrixTimesScalarAssign : EOpMatrixTimesScalar);
+ }
+ // In case of scalar*matrix, take the result type from the matrix.
if (right->getType().isCoopMat()) {
node.setType(right->getType());
}
@@ -3892,16 +3860,6 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
#define PROMOTE(Set, CType, Get) leftUnionArray[i].Set(static_cast<CType>(rightUnionArray[i].Get()))
#define PROMOTE_TO_BOOL(Get) leftUnionArray[i].setBConst(rightUnionArray[i].Get() != 0)
-#ifdef GLSLANG_WEB
-#define TO_ALL(Get) \
- switch (promoteTo) { \
- case EbtFloat: PROMOTE(setDConst, double, Get); break; \
- case EbtInt: PROMOTE(setIConst, int, Get); break; \
- case EbtUint: PROMOTE(setUConst, unsigned int, Get); break; \
- case EbtBool: PROMOTE_TO_BOOL(Get); break; \
- default: return node; \
- }
-#else
#define TO_ALL(Get) \
switch (promoteTo) { \
case EbtFloat16: PROMOTE(setDConst, double, Get); break; \
@@ -3918,14 +3876,12 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
case EbtBool: PROMOTE_TO_BOOL(Get); break; \
default: return node; \
}
-#endif
switch (node->getType().getBasicType()) {
case EbtFloat: TO_ALL(getDConst); break;
case EbtInt: TO_ALL(getIConst); break;
case EbtUint: TO_ALL(getUConst); break;
case EbtBool: TO_ALL(getBConst); break;
-#ifndef GLSLANG_WEB
case EbtFloat16: TO_ALL(getDConst); break;
case EbtDouble: TO_ALL(getDConst); break;
case EbtInt8: TO_ALL(getI8Const); break;
@@ -3934,7 +3890,6 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC
case EbtUint8: TO_ALL(getU8Const); break;
case EbtUint16: TO_ALL(getU16Const); break;
case EbtUint64: TO_ALL(getU64Const); break;
-#endif
default: return node;
}
}
diff --git a/thirdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp b/thirdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
index c34c04f6c7..d73f403b80 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/ParseContextBase.cpp
@@ -67,8 +67,6 @@ void TParseContextBase::outputMessage(const TSourceLoc& loc, const char* szReaso
}
}
-#if !defined(GLSLANG_WEB) || defined(GLSLANG_WEB_DEVEL)
-
void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, ...)
{
@@ -118,8 +116,6 @@ void C_DECL TParseContextBase::ppWarn(const TSourceLoc& loc, const char* szReaso
va_end(args);
}
-#endif
-
//
// Both test and if necessary, spit out an error, to see if the node is really
// an l-value that can be operated on this way.
@@ -140,7 +136,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op,
case EvqConst: message = "can't modify a const"; break;
case EvqConstReadOnly: message = "can't modify a const"; break;
case EvqUniform: message = "can't modify a uniform"; break;
-#ifndef GLSLANG_WEB
case EvqBuffer:
if (node->getQualifier().isReadOnly())
message = "can't modify a readonly buffer";
@@ -151,7 +146,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op,
if (language != EShLangIntersect)
message = "cannot modify hitAttributeNV in this stage";
break;
-#endif
default:
//
@@ -165,7 +159,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op,
case EbtVoid:
message = "can't modify void";
break;
-#ifndef GLSLANG_WEB
case EbtAtomicUint:
message = "can't modify an atomic_uint";
break;
@@ -178,7 +171,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op,
case EbtHitObjectNV:
message = "can't modify hitObjectNV";
break;
-#endif
default:
break;
}
diff --git a/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp b/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
index c6f947d9b2..b8c64e0985 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.cpp
@@ -57,11 +57,8 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b
infoSink, forwardCompatible, messages, entryPoint),
inMain(false),
blockName(nullptr),
- limits(resources.limits)
-#ifndef GLSLANG_WEB
- ,
+ limits(resources.limits),
atomicUintOffsets(nullptr), anyIndexLimits(false)
-#endif
{
// decide whether precision qualifiers should be ignored or respected
if (isEsProfile() || spvVersion.vulkan > 0) {
@@ -87,7 +84,6 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b
globalSharedDefaults.layoutMatrix = ElmColumnMajor;
globalSharedDefaults.layoutPacking = ElpStd430;
-#ifndef GLSLANG_WEB
// "Shaders in the transform
// feedback capturing mode have an initial global default of
// layout(xfb_buffer = 0) out;"
@@ -99,7 +95,6 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b
if (language == EShLangGeometry)
globalOutputDefaults.layoutStream = 0;
-#endif
if (entryPoint != nullptr && entryPoint->size() > 0 && *entryPoint != "main")
infoSink.info.message(EPrefixError, "Source entry point must be \"main\"");
@@ -107,9 +102,7 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b
TParseContext::~TParseContext()
{
-#ifndef GLSLANG_WEB
delete [] atomicUintOffsets;
-#endif
}
// Set up all default precisions as needed by the current environment.
@@ -173,7 +166,6 @@ void TParseContext::setLimits(const TBuiltInResource& r)
resources = r;
intermediate.setLimits(r);
-#ifndef GLSLANG_WEB
anyIndexLimits = ! limits.generalAttributeMatrixVectorIndexing ||
! limits.generalConstantMatrixVectorIndexing ||
! limits.generalSamplerIndexing ||
@@ -188,7 +180,6 @@ void TParseContext::setLimits(const TBuiltInResource& r)
atomicUintOffsets = new int[resources.maxAtomicCounterBindings];
for (int b = 0; b < resources.maxAtomicCounterBindings; ++b)
atomicUintOffsets[b] = 0;
-#endif
}
//
@@ -335,7 +326,6 @@ void TParseContext::setInvariant(const TSourceLoc& loc, const char* builtin) {
void TParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString>& tokens)
{
-#ifndef GLSLANG_WEB
if (pragmaCallback)
pragmaCallback(loc.line, tokens);
@@ -437,7 +427,6 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString>&
setInvariant(loc, "gl_FragColor");
setInvariant(loc, "gl_FragData");
}
-#endif
}
//
@@ -451,7 +440,6 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb
if (symbol && symbol->getNumExtensions())
requireExtensions(loc, symbol->getNumExtensions(), symbol->getExtensions(), symbol->getName().c_str());
-#ifndef GLSLANG_WEB
if (symbol && symbol->isReadOnly()) {
// All shared things containing an unsized array must be copied up
// on first use, so that all future references will share its array structure,
@@ -471,7 +459,6 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb
makeEditable(symbol);
}
}
-#endif
const TVariable* variable;
const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr;
@@ -576,7 +563,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
// at least one of base and index is not a front-end constant variable...
TIntermTyped* result = nullptr;
-#ifndef GLSLANG_WEB
if (base->isReference() && ! base->isArray()) {
requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference indexing");
if (base->getType().getReferentType()->containsUnsizedArray()) {
@@ -595,13 +581,11 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
}
if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
handleIoResizeArrayAccess(loc, base);
-#endif
if (index->getQualifier().isFrontEndConstant())
checkIndex(loc, base->getType(), indexValue);
if (index->getQualifier().isFrontEndConstant()) {
-#ifndef GLSLANG_WEB
if (base->getType().isUnsizedArray()) {
base->getWritableType().updateImplicitArraySize(indexValue + 1);
base->getWritableType().setImplicitlySized(true);
@@ -624,11 +608,9 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
}
}
} else
-#endif
checkIndex(loc, base->getType(), indexValue);
result = intermediate.addIndex(EOpIndexDirect, base, index, loc);
} else {
-#ifndef GLSLANG_WEB
if (base->getType().isUnsizedArray()) {
// we have a variable index into an unsized array, which is okay,
// depending on the situation
@@ -640,7 +622,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
}
base->getWritableType().setArrayVariablyIndexed();
}
-#endif
if (base->getBasicType() == EbtBlock) {
if (base->getQualifier().storage == EvqBuffer)
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array");
@@ -676,7 +657,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
}
result->setType(newType);
-#ifndef GLSLANG_WEB
inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier());
// Propagate nonuniform
@@ -685,13 +665,10 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn
if (anyIndexLimits)
handleIndexLimits(loc, base, index);
-#endif
return result;
}
-#ifndef GLSLANG_WEB
-
// for ES 2.0 (version 100) limitations for almost all index operations except vertex-shader uniforms
void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* base, TIntermTyped* index)
{
@@ -885,8 +862,6 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS
}
}
-#endif // GLSLANG_WEB
-
// Handle seeing a binary node with a math operation.
// Returns nullptr if not semantically allowed.
TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right)
@@ -1165,7 +1140,6 @@ TFunction* TParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunct
TSymbol* symbol = symbolTable.find(function.getMangledName(), &builtIn);
if (symbol && symbol->getAsFunction() && builtIn)
requireProfile(loc, ~EEsProfile, "redefinition of built-in function");
-#ifndef GLSLANG_WEB
// Check the validity of using spirv_literal qualifier
for (int i = 0; i < function.getParamCount(); ++i) {
if (function[i].type->getQualifier().isSpirvLiteral() && function.getBuiltInOp() != EOpSpirvInst)
@@ -1177,19 +1151,16 @@ TFunction* TParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunct
// respect this redeclared one.
if (symbol && builtIn && function.getBuiltInOp() == EOpSpirvInst)
symbol = nullptr;
-#endif
const TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr;
if (prevDec) {
if (prevDec->isPrototyped() && prototype)
profileRequires(loc, EEsProfile, 300, nullptr, "multiple prototypes for same function");
if (prevDec->getType() != function.getType())
error(loc, "overloaded functions must have the same return type", function.getName().c_str(), "");
-#ifndef GLSLANG_WEB
if (prevDec->getSpirvInstruction() != function.getSpirvInstruction()) {
error(loc, "overloaded functions must have the same qualifiers", function.getName().c_str(),
"spirv_instruction");
}
-#endif
for (int i = 0; i < prevDec->getParamCount(); ++i) {
if ((*prevDec)[i].type->getQualifier().storage != function[i].type->getQualifier().storage)
error(loc, "overloaded functions must have the same parameter storage qualifiers for argument", function[i].type->getStorageQualifierString(), "%d", i+1);
@@ -1391,7 +1362,6 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped()))
error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", "");
}
-#ifndef GLSLANG_WEB
if (formalQualifier.isSpirvLiteral()) {
if (!arg->getAsTyped()->getQualifier().isFrontEndConstant()) {
error(arguments->getLoc(),
@@ -1399,13 +1369,11 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
"spirv_literal", "");
}
}
-#endif
const TType& argType = arg->getAsTyped()->getType();
const TQualifier& argQualifier = argType.getQualifier();
bool containsBindlessSampler = intermediate.getBindlessMode() && argType.containsSampler();
if (argQualifier.isMemory() && !containsBindlessSampler && (argType.containsOpaque() || argType.isReference())) {
const char* message = "argument cannot drop memory qualifier when passed to formal parameter";
-#ifndef GLSLANG_WEB
if (argQualifier.volatil && ! formalQualifier.volatil)
error(arguments->getLoc(), message, "volatile", "");
if (argQualifier.coherent && ! (formalQualifier.devicecoherent || formalQualifier.coherent))
@@ -1425,7 +1393,6 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
// Don't check 'restrict', it is different than the rest:
// "...but only restrict can be taken away from a calling argument, by a formal parameter that
// lacks the restrict qualifier..."
-#endif
}
if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) {
// we have mismatched formats, which should only be allowed if writeonly
@@ -1455,11 +1422,9 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) {
// A function call mapped to a built-in operation.
result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate);
-#ifndef GLSLANG_WEB
} else if (fnCandidate->getBuiltInOp() == EOpSpirvInst) {
// When SPIR-V instruction qualifier is specified, the function call is still mapped to a built-in operation.
result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate);
-#endif
} else {
// This is a function call not mapped to built-in operator.
// It could still be a built-in function, but only if PureOperatorBuiltins == false.
@@ -1479,11 +1444,9 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
intermediate.addToCallGraph(infoSink, currentCaller, fnCandidate->getMangledName());
}
-#ifndef GLSLANG_WEB
if (builtIn)
nonOpBuiltInCheck(loc, *fnCandidate, *call);
else
-#endif
userFunctionCallCheck(loc, *call);
}
@@ -1501,7 +1464,8 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction
if (result->getAsTyped()->getType().isCoopMat() &&
!result->getAsTyped()->getType().isParameterized()) {
- assert(fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAdd);
+ assert(fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAdd ||
+ fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAddNV);
result->setType(result->getAsAggregate()->getSequence()[2]->getAsTyped()->getType());
}
@@ -1537,7 +1501,6 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo
} else if (result->getAsOperator())
builtInOpCheck(loc, function, *result->getAsOperator());
-#ifndef GLSLANG_WEB
// Special handling for function call with SPIR-V instruction qualifier specified
if (function.getBuiltInOp() == EOpSpirvInst) {
if (auto agg = result->getAsAggregate()) {
@@ -1564,7 +1527,6 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo
} else
assert(0);
}
-#endif
return result;
}
@@ -1667,9 +1629,7 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction
TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value)
{
-#ifndef GLSLANG_WEB
storage16BitAssignmentCheck(loc, value->getType(), "return");
-#endif
functionReturnsValue = true;
TIntermBranch* branch = nullptr;
@@ -1703,7 +1663,6 @@ TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermType
// See if the operation is being done in an illegal location.
void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op)
{
-#ifndef GLSLANG_WEB
switch (op) {
case EOpBarrier:
if (language == EShLangTessControl) {
@@ -1756,7 +1715,6 @@ void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op)
default:
break;
}
-#endif
}
// Finish processing object.length(). This started earlier in handleDotDereference(), where
@@ -1774,7 +1732,6 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction
const TType& type = intermNode->getAsTyped()->getType();
if (type.isArray()) {
if (type.isUnsizedArray()) {
-#ifndef GLSLANG_WEB
if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) {
// We could be between a layout declaration that gives a built-in io array implicit size and
// a user redeclaration of that array, meaning we have to substitute its implicit size here
@@ -1786,16 +1743,13 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction
length = getIoArrayImplicitSize(type.getQualifier());
}
}
-#endif
if (length == 0) {
-#ifndef GLSLANG_WEB
if (intermNode->getAsSymbolNode() && isIoResizeArray(type))
error(loc, "", function->getName().c_str(), "array must first be sized by a redeclaration or layout qualifier");
else if (isRuntimeLength(*intermNode->getAsTyped())) {
// Create a unary op and let the back end handle it
return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt));
} else
-#endif
error(loc, "", function->getName().c_str(), "array must be declared with a size before using this method");
}
} else if (type.getOuterArrayNode()) {
@@ -1828,7 +1782,6 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction
//
void TParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) const
{
-#ifndef GLSLANG_WEB
TIntermAggregate* aggregate = arguments->getAsAggregate();
// Process each argument's conversion
@@ -1856,7 +1809,6 @@ void TParseContext::addInputArgumentConversions(const TFunction& function, TInte
}
}
}
-#endif
}
//
@@ -1868,9 +1820,6 @@ void TParseContext::addInputArgumentConversions(const TFunction& function, TInte
//
TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const
{
-#ifdef GLSLANG_WEB
- return &intermNode;
-#else
TIntermSequence& arguments = intermNode.getSequence();
// Will there be any output conversions?
@@ -1938,7 +1887,6 @@ TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& funct
conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), intermNode.getLoc());
return conversionTree;
-#endif
}
TIntermTyped* TParseContext::addAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right)
@@ -2148,7 +2096,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
TString featureString;
const char* feature = nullptr;
switch (callNode.getOp()) {
-#ifndef GLSLANG_WEB
case EOpTextureGather:
case EOpTextureGatherOffset:
case EOpTextureGatherOffsets:
@@ -2289,7 +2236,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
break;
}
-#endif
case EOpTextureOffset:
case EOpTextureFetchOffset:
@@ -2317,12 +2263,10 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
if (arg > 0) {
-#ifndef GLSLANG_WEB
bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 &&
arg0->getType().getSampler().shadow;
if (f16ShadowCompare)
++arg;
-#endif
if (! (*argp)[arg]->getAsTyped()->getQualifier().isConstant())
error(loc, "argument must be compile-time constant", "texel offset", "");
else if ((*argp)[arg]->getAsConstantUnion()) {
@@ -2349,7 +2293,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
break;
}
-#ifndef GLSLANG_WEB
case EOpTraceNV:
if (!(*argp)[10]->getAsConstantUnion())
error(loc, "argument must be compile-time constant", "payload number", "a");
@@ -2680,7 +2623,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
}
break;
-#endif
default:
break;
@@ -2743,8 +2685,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
}
}
-#ifndef GLSLANG_WEB
-
extern bool PureOperatorBuiltins;
// Deprecated! Use PureOperatorBuiltins == true instead, in which case this
@@ -2871,8 +2811,6 @@ void TParseContext::nonOpBuiltInCheck(const TSourceLoc& loc, const TFunction& fn
}
}
-#endif
-
//
// Do any extra checking for a user function call.
//
@@ -3031,7 +2969,6 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt
bool errorReturn = false;
switch(binaryNode->getOp()) {
-#ifndef GLSLANG_WEB
case EOpIndexDirect:
case EOpIndexIndirect:
// ... tessellation control shader ...
@@ -3048,7 +2985,6 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt
}
}
break; // left node is checked by base class
-#endif
case EOpVectorSwizzle:
errorReturn = lValueErrorCheck(loc, op, binaryNode->getLeft());
if (!errorReturn) {
@@ -3266,10 +3202,6 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden
//
bool TParseContext::lineContinuationCheck(const TSourceLoc& loc, bool endOfComment)
{
-#ifdef GLSLANG_WEB
- return true;
-#endif
-
const char* message = "line continuation";
bool lineContinuationAllowed = (isEsProfile() && version >= 300) ||
@@ -3326,7 +3258,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
// it, in which case the type comes from the argument instead of from the
// constructor function.
switch (op) {
-#ifndef GLSLANG_WEB
case EOpConstructNonuniform:
if (node != nullptr && node->getAsTyped() != nullptr) {
type.shallowCopy(node->getAsTyped()->getType());
@@ -3334,7 +3265,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
type.getQualifier().nonUniform = true;
}
break;
-#endif
default:
type.shallowCopy(function.getType());
break;
@@ -3360,7 +3290,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
case EOpConstructMat4x2:
case EOpConstructMat4x3:
case EOpConstructMat4x4:
-#ifndef GLSLANG_WEB
case EOpConstructDMat2x2:
case EOpConstructDMat2x3:
case EOpConstructDMat2x4:
@@ -3379,7 +3308,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
case EOpConstructF16Mat4x2:
case EOpConstructF16Mat4x3:
case EOpConstructF16Mat4x4:
-#endif
constructingMatrix = true;
break;
default:
@@ -3446,7 +3374,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
if (op == EOpConstructNonuniform)
constType = false;
-#ifndef GLSLANG_WEB
switch (op) {
case EOpConstructFloat16:
case EOpConstructF16Vec2:
@@ -3486,7 +3413,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
default:
break;
}
-#endif
// inherit constness from children
if (constType) {
@@ -3507,7 +3433,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
case EOpConstructUVec2:
case EOpConstructUVec3:
case EOpConstructUVec4:
-#ifndef GLSLANG_WEB
case EOpConstructUint8:
case EOpConstructInt16:
case EOpConstructUint16:
@@ -3531,7 +3456,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
case EOpConstructU64Vec2:
case EOpConstructU64Vec3:
case EOpConstructU64Vec4:
-#endif
// This was the list of valid ones, if they aren't converting from float
// and aren't making an array.
makeSpecConst = ! floatArgument && ! type.isArray();
@@ -3642,6 +3566,12 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T
}
TIntermTyped* typed = node->getAsTyped();
+ if (type.isCoopMat() && typed->getType().isCoopMat() &&
+ !type.sameCoopMatShapeAndUse(typed->getType())) {
+ error(loc, "Cooperative matrix type parameters mismatch", constructorString.c_str(), "");
+ return true;
+ }
+
if (typed == nullptr) {
error(loc, "constructor argument does not have a type", constructorString.c_str(), "");
return true;
@@ -3820,8 +3750,6 @@ void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const
}
}
-#ifndef GLSLANG_WEB
-
void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
if (type.getQualifier().storage == EvqUniform)
@@ -3846,8 +3774,6 @@ void TParseContext::accStructCheck(const TSourceLoc& loc, const TType& type, con
}
-#endif // GLSLANG_WEB
-
void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
if (parsingBuiltins)
@@ -3931,13 +3857,11 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q
if (!nonuniformOkay && qualifier.isNonUniform())
error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", "");
-#ifndef GLSLANG_WEB
if (qualifier.isSpirvByReference())
error(loc, "can only apply to parameter", "spirv_by_reference", "");
if (qualifier.isSpirvLiteral())
error(loc, "can only apply to parameter", "spirv_literal", "");
-#endif
// Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it.
if (!isMemberCheck || structNestingLevel > 0)
@@ -4043,12 +3967,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
if (! symbolTable.atBuiltInLevel())
error(loc, "global storage input qualifier cannot be used in a compute shader", "in", "");
break;
-#ifndef GLSLANG_WEB
case EShLangTessControl:
if (qualifier.patch)
error(loc, "can only use on output in tessellation-control shader", "patch", "");
break;
-#endif
default:
break;
}
@@ -4087,12 +4009,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali
case EShLangCompute:
error(loc, "global storage output qualifier cannot be used in a compute shader", "out", "");
break;
-#ifndef GLSLANG_WEB
case EShLangTessEvaluation:
if (qualifier.patch)
error(loc, "can only use on input in tessellation-evaluation shader", "patch", "");
break;
-#endif
default:
break;
}
@@ -4160,7 +4080,6 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons
if (dst.precision == EpqNone || (force && src.precision != EpqNone))
dst.precision = src.precision;
-#ifndef GLSLANG_WEB
if (!force && ((src.coherent && (dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) ||
(src.devicecoherent && (dst.coherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) ||
(src.queuefamilycoherent && (dst.coherent || dst.devicecoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) ||
@@ -4170,7 +4089,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons
error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed",
GetPrecisionQualifierString(src.precision), "");
}
-#endif
+
// Layout qualifiers
mergeObjectLayoutQualifiers(dst, src, false);
@@ -4182,7 +4101,6 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons
MERGE_SINGLETON(smooth);
MERGE_SINGLETON(flat);
MERGE_SINGLETON(specConstant);
-#ifndef GLSLANG_WEB
MERGE_SINGLETON(noContraction);
MERGE_SINGLETON(nopersp);
MERGE_SINGLETON(explicitInterp);
@@ -4203,9 +4121,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons
MERGE_SINGLETON(readonly);
MERGE_SINGLETON(writeonly);
MERGE_SINGLETON(nonUniform);
-#endif
-#ifndef GLSLANG_WEB
// SPIR-V storage class qualifier (GL_EXT_spirv_intrinsics)
dst.spirvStorageClass = src.spirvStorageClass;
@@ -4238,7 +4154,6 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons
dst.spirvDecorate = src.spirvDecorate;
}
}
-#endif
if (repeated)
error(loc, "replicated qualifiers", "", "");
@@ -4302,17 +4217,18 @@ TPrecisionQualifier TParseContext::getDefaultPrecision(TPublicType& publicType)
return defaultPrecision[publicType.basicType];
}
-void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType baseType, TQualifier& qualifier)
+void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType baseType, TQualifier& qualifier, bool isCoopMat)
{
// Built-in symbols are allowed some ambiguous precisions, to be pinned down
// later by context.
if (! obeyPrecisionQualifiers() || parsingBuiltins)
return;
-#ifndef GLSLANG_WEB
if (baseType == EbtAtomicUint && qualifier.precision != EpqNone && qualifier.precision != EpqHigh)
error(loc, "atomic counters can only be highp", "atomic_uint", "");
-#endif
+
+ if (isCoopMat)
+ return;
if (baseType == EbtFloat || baseType == EbtUint || baseType == EbtInt || baseType == EbtSampler || baseType == EbtAtomicUint) {
if (qualifier.precision == EpqNone) {
@@ -4358,7 +4274,8 @@ bool TParseContext::containsFieldWithBasicType(const TType& type, TBasicType bas
//
// Do size checking for an array type's size.
//
-void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TArraySize& sizePair, const char *sizeType)
+void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TArraySize& sizePair,
+ const char* sizeType, const bool allowZero)
{
bool isConst = false;
sizePair.node = nullptr;
@@ -4378,9 +4295,8 @@ void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TA
TIntermSymbol* symbol = expr->getAsSymbolNode();
if (symbol && symbol->getConstArray().size() > 0)
size = symbol->getConstArray()[0].getIConst();
- } else if (expr->getAsUnaryNode() &&
- expr->getAsUnaryNode()->getOp() == glslang::EOpArrayLength &&
- expr->getAsUnaryNode()->getOperand()->getType().isCoopMat()) {
+ } else if (expr->getAsUnaryNode() && expr->getAsUnaryNode()->getOp() == glslang::EOpArrayLength &&
+ expr->getAsUnaryNode()->getOperand()->getType().isCoopMatNV()) {
isConst = true;
size = 1;
sizePair.node = expr->getAsUnaryNode();
@@ -4394,9 +4310,16 @@ void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TA
return;
}
- if (size <= 0) {
- error(loc, sizeType, "", "must be a positive integer");
- return;
+ if (allowZero) {
+ if (size < 0) {
+ error(loc, sizeType, "", "must be a non-negative integer");
+ return;
+ }
+ } else {
+ if (size <= 0) {
+ error(loc, sizeType, "", "must be a positive integer");
+ return;
+ }
}
}
@@ -4494,8 +4417,6 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua
(qualifier.storage != EvqTemporary && qualifier.storage != EvqGlobal && qualifier.storage != EvqShared && qualifier.storage != EvqConst))
error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", "");
-#ifndef GLSLANG_WEB
-
// desktop always allows outer-dimension-unsized variable arrays,
if (!isEsProfile())
return;
@@ -4535,8 +4456,6 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua
break;
}
-#endif
-
// last member of ssbo block exception:
if (qualifier.storage == EvqBuffer && lastMember)
return;
@@ -4581,7 +4500,6 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie
if (symbolTable.atGlobalLevel())
trackLinkage(*symbol);
-#ifndef GLSLANG_WEB
if (! symbolTable.atBuiltInLevel()) {
if (isIoResizeArray(type)) {
ioArraySymbolResizeList.push_back(symbol);
@@ -4589,7 +4507,6 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie
} else
fixIoArraySize(loc, symbol->getWritableType());
}
-#endif
return;
}
@@ -4627,7 +4544,6 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie
return;
}
-#ifndef GLSLANG_WEB
if (existingType.isSizedArray()) {
// be more leniant for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size
if (! (isIoResizeArray(type) && existingType.getOuterArraySize() == type.getOuterArraySize()))
@@ -4641,11 +4557,8 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie
if (isIoResizeArray(type))
checkIoArraysConsistency(loc);
-#endif
}
-#ifndef GLSLANG_WEB
-
// Policy and error check for needing a runtime sized array.
void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermTyped& base)
{
@@ -4728,8 +4641,6 @@ void TParseContext::checkAndResizeMeshViewDim(const TSourceLoc& loc, TType& type
}
}
-#endif // GLSLANG_WEB
-
// Returns true if the first argument to the #line directive is the line number for the next line.
//
// Desktop, pre-version 3.30: "After processing this directive
@@ -4772,7 +4683,6 @@ void TParseContext::nonInitConstCheck(const TSourceLoc& loc, TString& identifier
TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TString& identifier,
const TQualifier& qualifier, const TShaderQualifiers& publicType)
{
-#ifndef GLSLANG_WEB
if (! builtInName(identifier) || symbolTable.atBuiltInLevel() || ! symbolTable.atGlobalLevel())
return nullptr;
@@ -4935,7 +4845,6 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS
return symbol;
}
-#endif
return nullptr;
}
@@ -4947,7 +4856,6 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS
void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newTypeList, const TString& blockName,
const TString* instanceName, TArraySizes* arraySizes)
{
-#ifndef GLSLANG_WEB
const char* feature = "built-in block redeclaration";
profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature);
profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature);
@@ -5163,7 +5071,6 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT
// Save it in the AST for linker use.
trackLinkage(*block);
-#endif // GLSLANG_WEB
}
void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQualifier& qualifier, TType& type)
@@ -5192,7 +5099,6 @@ void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQu
void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& qualifier, TType& type)
{
-#ifndef GLSLANG_WEB
if (qualifier.isMemory()) {
type.getQualifier().volatil = qualifier.volatil;
type.getQualifier().coherent = qualifier.coherent;
@@ -5206,7 +5112,6 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali
type.getQualifier().writeonly = qualifier.writeonly;
type.getQualifier().restrict = qualifier.restrict;
}
-#endif
if (qualifier.isAuxiliary() ||
qualifier.isInterpolation())
@@ -5223,7 +5128,6 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali
}
if (qualifier.isNonUniform())
type.getQualifier().nonUniform = qualifier.nonUniform;
-#ifndef GLSLANG_WEB
if (qualifier.isSpirvByReference())
type.getQualifier().setSpirvByReference();
if (qualifier.isSpirvLiteral()) {
@@ -5232,7 +5136,6 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali
type.getQualifier().setSpirvLiteral();
else
error(loc, "cannot use spirv_literal qualifier", type.getBasicTypeString().c_str(), "");
-#endif
}
paramCheckFixStorage(loc, qualifier.storage, type);
@@ -5269,15 +5172,12 @@ void TParseContext::opaqueCheck(const TSourceLoc& loc, const TType& type, const
void TParseContext::referenceCheck(const TSourceLoc& loc, const TType& type, const char* op)
{
-#ifndef GLSLANG_WEB
if (containsFieldWithBasicType(type, EbtReference))
error(loc, "can't use with reference types", op, "");
-#endif
}
void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TType& type, const char* op)
{
-#ifndef GLSLANG_WEB
if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtFloat16))
requireFloat16Arithmetic(loc, op, "can't use with structs containing float16");
@@ -5307,7 +5207,6 @@ void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TTy
if (type.isArray() && type.getBasicType() == EbtUint8)
requireInt8Arithmetic(loc, op, "can't use with arrays containing uint8");
-#endif
}
void TParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op)
@@ -5359,7 +5258,6 @@ void TParseContext::structTypeCheck(const TSourceLoc& /*loc*/, TPublicType& publ
//
void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, TIntermLoop* loop)
{
-#ifndef GLSLANG_WEB
// loop index init must exist and be a declaration, which shows up in the AST as an aggregate of size 1 of the declaration
bool badInit = false;
if (! init || ! init->getAsAggregate() || init->getAsAggregate()->getSequence().size() != 1)
@@ -5455,10 +5353,8 @@ void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init,
// the body
inductiveLoopBodyCheck(loop->getBody(), loopIndex, symbolTable);
-#endif
}
-#ifndef GLSLANG_WEB
// Do limit checks for built-in arrays.
void TParseContext::arrayLimitCheck(const TSourceLoc& loc, const TString& identifier, int size)
{
@@ -5473,7 +5369,6 @@ void TParseContext::arrayLimitCheck(const TSourceLoc& loc, const TString& identi
else if (identifier.compare("gl_CullDistancePerViewNV") == 0)
limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistancePerViewNV array size");
}
-#endif // GLSLANG_WEB
// See if the provided value is less than or equal to the symbol indicated by limit,
// which should be a constant in the symbol table.
@@ -5487,8 +5382,6 @@ void TParseContext::limitCheck(const TSourceLoc& loc, int value, const char* lim
error(loc, "must be less than or equal to", feature, "%s (%d)", limit, constArray[0].getIConst());
}
-#ifndef GLSLANG_WEB
-
//
// Do any additional error checking, etc., once we know the parsing is done.
//
@@ -5554,7 +5447,6 @@ void TParseContext::finish()
}
}
}
-#endif // GLSLANG_WEB
//
// Layout qualifier stuff.
@@ -5598,7 +5490,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
publicType.qualifier.layoutPacking = ElpStd140;
return;
}
-#ifndef GLSLANG_WEB
if (id == TQualifier::getLayoutPackingString(ElpStd430)) {
requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "std430");
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "std430");
@@ -5896,7 +5787,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
publicType.shaderQualifiers.layoutPrimitiveCulling = true;
return;
}
-#endif
error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), "");
}
@@ -5984,10 +5874,8 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
error(loc, "needs a literal integer", "set", "");
return;
} else if (id == "binding") {
-#ifndef GLSLANG_WEB
profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, "binding");
profileRequires(loc, EEsProfile, 310, nullptr, "binding");
-#endif
if ((unsigned int)value >= TQualifier::layoutBindingEnd)
error(loc, "binding is too large", id.c_str(), "");
else
@@ -6010,7 +5898,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
error(loc, "needs a literal integer", "constant_id", "");
return;
}
-#ifndef GLSLANG_WEB
if (id == "component") {
requireProfile(loc, ECoreProfile | ECompatibilityProfile, "component");
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "component");
@@ -6108,10 +5995,8 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
error(loc, "needs a literal integer", "buffer_reference_align", "");
return;
}
-#endif
switch (language) {
-#ifndef GLSLANG_WEB
case EShLangTessControl:
if (id == "vertices") {
if (value == 0)
@@ -6208,17 +6093,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi
case EShLangTask:
// Fall through
-#endif
case EShLangCompute:
if (id.compare(0, 11, "local_size_") == 0) {
-#ifndef GLSLANG_WEB
if (language == EShLangMesh || language == EShLangTask) {
requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "gl_WorkGroupSize");
} else {
profileRequires(loc, EEsProfile, 310, nullptr, "gl_WorkGroupSize");
profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize");
}
-#endif
if (nonLiteral)
error(loc, "needs a literal integer", "local_size", "");
if (id.size() == 12 && value == 0) {
@@ -6285,7 +6167,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie
if (src.hasPacking())
dst.layoutPacking = src.layoutPacking;
-#ifndef GLSLANG_WEB
if (src.hasStream())
dst.layoutStream = src.layoutStream;
if (src.hasFormat())
@@ -6294,7 +6175,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie
dst.layoutXfbBuffer = src.layoutXfbBuffer;
if (src.hasBufferReferenceAlign())
dst.layoutBufferReferenceAlign = src.layoutBufferReferenceAlign;
-#endif
if (src.hasAlign())
dst.layoutAlign = src.layoutAlign;
@@ -6312,7 +6192,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie
if (src.hasSpecConstantId())
dst.layoutSpecConstantId = src.layoutSpecConstantId;
-#ifndef GLSLANG_WEB
if (src.hasComponent())
dst.layoutComponent = src.layoutComponent;
if (src.hasIndex())
@@ -6347,7 +6226,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie
dst.pervertexEXT = true;
if (src.layoutHitObjectShaderRecordNV)
dst.layoutHitObjectShaderRecordNV = true;
-#endif
}
}
@@ -6384,9 +6262,7 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb
case EvqVaryingIn:
case EvqVaryingOut:
if (!type.getQualifier().isTaskMemory() &&
-#ifndef GLSLANG_WEB
!type.getQualifier().hasSprivDecorate() &&
-#endif
(type.getBasicType() != EbtBlock ||
(!(*type.getStruct())[0].type->getQualifier().hasLocation() &&
(*type.getStruct())[0].type->getQualifier().builtIn == EbvNone)))
@@ -6448,10 +6324,8 @@ void TParseContext::layoutMemberLocationArrayCheck(const TSourceLoc& loc, bool m
// Do layout error checking with respect to a type.
void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
{
-#ifndef GLSLANG_WEB
if (extensionTurnedOn(E_GL_EXT_spirv_intrinsics))
return; // Skip any check if GL_EXT_spirv_intrinsics is turned on
-#endif
const TQualifier& qualifier = type.getQualifier();
@@ -6500,7 +6374,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
case EvqtaskPayloadSharedEXT:
error(loc, "cannot apply to taskPayloadSharedEXT", "location", "");
break;
-#ifndef GLSLANG_WEB
case EvqPayload:
case EvqPayloadIn:
case EvqHitAttr:
@@ -6508,7 +6381,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
case EvqCallableDataIn:
case EvqHitObjectAttrNV:
break;
-#endif
case EvqTileImageEXT:
break;
default:
@@ -6526,7 +6398,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
error(loc, "fragment outputs or tileImageEXTs sharing the same location", "location", "%d must be the same basic type", repeated);
}
-#ifndef GLSLANG_WEB
if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) {
if (type.isUnsizedArray()) {
error(loc, "unsized array", "xfb_offset", "in buffer %d", qualifier.layoutXfbBuffer);
@@ -6555,7 +6426,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
if (! intermediate.setXfbBufferStride(qualifier.layoutXfbBuffer, qualifier.layoutXfbStride))
error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer);
}
-#endif
if (qualifier.hasBinding()) {
// Binding checking, from the spec:
@@ -6575,16 +6445,12 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
if (type.isSizedArray())
lastBinding += (type.getCumulativeArraySize() - 1);
else {
-#ifndef GLSLANG_WEB
warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", "");
-#endif
}
}
}
-#ifndef GLSLANG_WEB
if (spvVersion.vulkan == 0 && lastBinding >= resources.maxCombinedTextureImageUnits)
error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : "");
-#endif
}
if (type.isAtomic() && !spvVersion.vulkanRelaxed) {
if (qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) {
@@ -6740,7 +6606,6 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier
// output block declarations, and output block member declarations."
switch (qualifier.storage) {
-#ifndef GLSLANG_WEB
case EvqVaryingIn:
{
const char* feature = "location qualifier on input";
@@ -6775,7 +6640,6 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier
}
break;
}
-#endif
case EvqUniform:
case EvqBuffer:
{
@@ -6854,7 +6718,6 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier
// For places that can't have shader-level layout qualifiers
void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQualifiers& shaderQualifiers)
{
-#ifndef GLSLANG_WEB
const char* message = "can only apply to a standalone qualifier";
if (shaderQualifiers.geometry != ElgNone)
@@ -6905,14 +6768,12 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua
error(loc, message, TQualifier::getInterlockOrderingString(shaderQualifiers.interlockOrdering), "");
if (shaderQualifiers.layoutPrimitiveCulling)
error(loc, "can only be applied as standalone", "primitive_culling", "");
-#endif
}
// Correct and/or advance an object's offset layout qualifier.
void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol)
{
const TQualifier& qualifier = symbol.getType().getQualifier();
-#ifndef GLSLANG_WEB
if (symbol.getType().isAtomic()) {
if (qualifier.hasBinding() && (int)qualifier.layoutBinding < resources.maxAtomicCounterBindings) {
@@ -6946,7 +6807,6 @@ void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol)
atomicUintOffsets[qualifier.layoutBinding] = offset + numOffsets;
}
}
-#endif
}
//
@@ -6961,10 +6821,6 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct
return nullptr;
}
-#ifdef GLSLANG_WEB
- return findFunctionExact(loc, call, builtIn);
-#endif
-
const TFunction* function = nullptr;
// debugPrintfEXT has var args and is in the symbol table as "debugPrintfEXT()",
@@ -7291,7 +7147,6 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T
{
TIntermTyped* result = nullptr;
-#ifndef GLSLANG_WEB
if (function->getBuiltInOp() != EOpNull) {
return nullptr;
}
@@ -7342,7 +7197,6 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T
result = arguments->getAsTyped();
}
}
-#endif
return result;
}
@@ -7351,7 +7205,6 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T
// to establish defaults.
void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType)
{
-#ifndef GLSLANG_WEB
if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding()) {
if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) {
error(loc, "atomic_uint binding is too large", "binding", "");
@@ -7368,7 +7221,41 @@ void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType
if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference())
warn(loc, "useless application of layout qualifier", "layout", "");
-#endif
+}
+
+void TParseContext::coopMatTypeParametersCheck(const TSourceLoc& loc, const TPublicType& publicType)
+{
+ if (parsingBuiltins)
+ return;
+ if (publicType.isCoopmatKHR()) {
+ if (publicType.typeParameters == nullptr) {
+ error(loc, "coopmat missing type parameters", "", "");
+ return;
+ }
+ switch (publicType.typeParameters->basicType) {
+ case EbtFloat:
+ case EbtFloat16:
+ case EbtInt:
+ case EbtInt8:
+ case EbtInt16:
+ case EbtUint:
+ case EbtUint8:
+ case EbtUint16:
+ break;
+ default:
+ error(loc, "coopmat invalid basic type", TType::getBasicString(publicType.typeParameters->basicType), "");
+ break;
+ }
+ if (publicType.typeParameters->arraySizes->getNumDims() != 4) {
+ error(loc, "coopmat incorrect number of type parameters", "", "");
+ return;
+ }
+ int use = publicType.typeParameters->arraySizes->getDimSize(3);
+ if (use < 0 || use > 2) {
+ error(loc, "coopmat invalid matrix Use", "", "");
+ return;
+ }
+ }
}
bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType&,
@@ -7376,11 +7263,7 @@ bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString
{
if (parsingBuiltins || symbolTable.atBuiltInLevel() || !symbolTable.atGlobalLevel() ||
type.getQualifier().storage != EvqUniform ||
- !(type.containsNonOpaque()
-#ifndef GLSLANG_WEB
- || type.getBasicType() == EbtAtomicUint
-#endif
- )) {
+ !(type.containsNonOpaque()|| type.getBasicType() == EbtAtomicUint)) {
return false;
}
@@ -7409,7 +7292,6 @@ bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString
int bufferBinding = TQualifier::layoutBindingEnd;
TVariable* updatedBlock = nullptr;
-#ifndef GLSLANG_WEB
// Convert atomic_uint into members of a buffer block
if (type.isAtomic()) {
type.setBasicType(EbtUint);
@@ -7425,7 +7307,6 @@ bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString
growAtomicCounterBlock(bufferBinding, loc, type, identifier, nullptr);
updatedBlock = atomicCounterBuffers[bufferBinding];
}
-#endif
if (!updatedBlock) {
growGlobalUniformBlock(loc, type, identifier, nullptr);
@@ -7486,29 +7367,43 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
}
- if (type.isCoopMat()) {
+ if (type.isCoopMatKHR()) {
intermediate.setUseVulkanMemoryModel();
intermediate.setUseStorageBuffer();
- if (!publicType.typeParameters || publicType.typeParameters->getNumDims() != 4) {
+ if (!publicType.typeParameters || !publicType.typeParameters->arraySizes ||
+ publicType.typeParameters->arraySizes->getNumDims() != 3) {
+ error(loc, "unexpected number type parameters", identifier.c_str(), "");
+ }
+ if (publicType.typeParameters) {
+ if (!isTypeFloat(publicType.typeParameters->basicType) && !isTypeInt(publicType.typeParameters->basicType)) {
+ error(loc, "expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type", identifier.c_str(), "");
+ }
+ }
+ }
+ else if (type.isCoopMatNV()) {
+ intermediate.setUseVulkanMemoryModel();
+ intermediate.setUseStorageBuffer();
+
+ if (!publicType.typeParameters || publicType.typeParameters->arraySizes->getNumDims() != 4) {
error(loc, "expected four type parameters", identifier.c_str(), "");
}
if (publicType.typeParameters) {
if (isTypeFloat(publicType.basicType) &&
- publicType.typeParameters->getDimSize(0) != 16 &&
- publicType.typeParameters->getDimSize(0) != 32 &&
- publicType.typeParameters->getDimSize(0) != 64) {
+ publicType.typeParameters->arraySizes->getDimSize(0) != 16 &&
+ publicType.typeParameters->arraySizes->getDimSize(0) != 32 &&
+ publicType.typeParameters->arraySizes->getDimSize(0) != 64) {
error(loc, "expected 16, 32, or 64 bits for first type parameter", identifier.c_str(), "");
}
if (isTypeInt(publicType.basicType) &&
- publicType.typeParameters->getDimSize(0) != 8 &&
- publicType.typeParameters->getDimSize(0) != 32) {
- error(loc, "expected 8 or 32 bits for first type parameter", identifier.c_str(), "");
+ publicType.typeParameters->arraySizes->getDimSize(0) != 8 &&
+ publicType.typeParameters->arraySizes->getDimSize(0) != 16 &&
+ publicType.typeParameters->arraySizes->getDimSize(0) != 32) {
+ error(loc, "expected 8, 16, or 32 bits for first type parameter", identifier.c_str(), "");
}
}
-
} else {
- if (publicType.typeParameters && publicType.typeParameters->getNumDims() != 0) {
+ if (publicType.typeParameters && publicType.typeParameters->arraySizes->getNumDims() != 0) {
error(loc, "unexpected type parameters", identifier.c_str(), "");
}
}
@@ -7523,11 +7418,9 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
samplerCheck(loc, type, identifier, initializer);
transparentOpaqueCheck(loc, type, identifier);
-#ifndef GLSLANG_WEB
atomicUintCheck(loc, type, identifier);
accStructCheck(loc, type, identifier);
checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false);
-#endif
if (type.getQualifier().storage == EvqConst && type.containsReference()) {
error(loc, "variables with reference type can't have qualifier 'const'", "qualifier", "");
}
@@ -7630,14 +7523,12 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden
// Pick up global defaults from the provide global defaults into dst.
void TParseContext::inheritGlobalDefaults(TQualifier& dst) const
{
-#ifndef GLSLANG_WEB
if (dst.storage == EvqVaryingOut) {
if (! dst.hasStream() && language == EShLangGeometry)
dst.layoutStream = globalOutputDefaults.layoutStream;
if (! dst.hasXfbBuffer())
dst.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer;
}
-#endif
}
//
@@ -7666,9 +7557,7 @@ TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, const TString&
// make a new variable
TVariable* variable = new TVariable(&identifier, type);
-#ifndef GLSLANG_WEB
ioArrayCheck(loc, type, identifier);
-#endif
// add variable to symbol table
if (symbolTable.insert(*variable)) {
@@ -7745,9 +7634,7 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp
TType skeletalType;
skeletalType.shallowCopy(variable->getType());
skeletalType.getQualifier().makeTemporary();
-#ifndef GLSLANG_WEB
initializer = convertInitializerList(loc, skeletalType, initializer);
-#endif
if (! initializer) {
// error recovery; don't leave const without constant values
if (qualifier == EvqConst)
@@ -8149,8 +8036,6 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
intermediate.addBuiltInFunctionCall(node->getLoc(), EOpPackUint2x32, true, node, type);
return newNode;
}
-#ifndef GLSLANG_WEB
-
case EOpConstructDVec2:
case EOpConstructDVec3:
case EOpConstructDVec4:
@@ -8336,14 +8221,18 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
return nullptr;
}
- case EOpConstructCooperativeMatrix:
+ case EOpConstructCooperativeMatrixNV:
+ case EOpConstructCooperativeMatrixKHR:
+ if (node->getType() == type) {
+ return node;
+ }
if (!node->getType().isCoopMat()) {
if (type.getBasicType() != node->getType().getBasicType()) {
node = intermediate.addConversion(type.getBasicType(), node);
if (node == nullptr)
return nullptr;
}
- node = intermediate.setAggregateOperator(node, EOpConstructCooperativeMatrix, type, node->getLoc());
+ node = intermediate.setAggregateOperator(node, op, type, node->getLoc());
} else {
TOperator op = EOpNull;
switch (type.getBasicType()) {
@@ -8356,6 +8245,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
case EbtFloat16: op = EOpConvFloat16ToInt; break;
case EbtUint8: op = EOpConvUint8ToInt; break;
case EbtInt8: op = EOpConvInt8ToInt; break;
+ case EbtUint16: op = EOpConvUint16ToInt; break;
+ case EbtInt16: op = EOpConvInt16ToInt; break;
case EbtUint: op = EOpConvUintToInt; break;
default: assert(0);
}
@@ -8366,8 +8257,33 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
case EbtFloat16: op = EOpConvFloat16ToUint; break;
case EbtUint8: op = EOpConvUint8ToUint; break;
case EbtInt8: op = EOpConvInt8ToUint; break;
+ case EbtUint16: op = EOpConvUint16ToUint; break;
+ case EbtInt16: op = EOpConvInt16ToUint; break;
case EbtInt: op = EOpConvIntToUint; break;
- case EbtUint: op = EOpConvUintToInt8; break;
+ default: assert(0);
+ }
+ break;
+ case EbtInt16:
+ switch (node->getType().getBasicType()) {
+ case EbtFloat: op = EOpConvFloatToInt16; break;
+ case EbtFloat16: op = EOpConvFloat16ToInt16; break;
+ case EbtUint8: op = EOpConvUint8ToInt16; break;
+ case EbtInt8: op = EOpConvInt8ToInt16; break;
+ case EbtUint16: op = EOpConvUint16ToInt16; break;
+ case EbtInt: op = EOpConvIntToInt16; break;
+ case EbtUint: op = EOpConvUintToInt16; break;
+ default: assert(0);
+ }
+ break;
+ case EbtUint16:
+ switch (node->getType().getBasicType()) {
+ case EbtFloat: op = EOpConvFloatToUint16; break;
+ case EbtFloat16: op = EOpConvFloat16ToUint16; break;
+ case EbtUint8: op = EOpConvUint8ToUint16; break;
+ case EbtInt8: op = EOpConvInt8ToUint16; break;
+ case EbtInt16: op = EOpConvInt16ToUint16; break;
+ case EbtInt: op = EOpConvIntToUint16; break;
+ case EbtUint: op = EOpConvUintToUint16; break;
default: assert(0);
}
break;
@@ -8376,6 +8292,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
case EbtFloat: op = EOpConvFloatToInt8; break;
case EbtFloat16: op = EOpConvFloat16ToInt8; break;
case EbtUint8: op = EOpConvUint8ToInt8; break;
+ case EbtInt16: op = EOpConvInt16ToInt8; break;
+ case EbtUint16: op = EOpConvUint16ToInt8; break;
case EbtInt: op = EOpConvIntToInt8; break;
case EbtUint: op = EOpConvUintToInt8; break;
default: assert(0);
@@ -8386,6 +8304,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
case EbtFloat: op = EOpConvFloatToUint8; break;
case EbtFloat16: op = EOpConvFloat16ToUint8; break;
case EbtInt8: op = EOpConvInt8ToUint8; break;
+ case EbtInt16: op = EOpConvInt16ToUint8; break;
+ case EbtUint16: op = EOpConvUint16ToUint8; break;
case EbtInt: op = EOpConvIntToUint8; break;
case EbtUint: op = EOpConvUintToUint8; break;
default: assert(0);
@@ -8396,6 +8316,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
case EbtFloat16: op = EOpConvFloat16ToFloat; break;
case EbtInt8: op = EOpConvInt8ToFloat; break;
case EbtUint8: op = EOpConvUint8ToFloat; break;
+ case EbtInt16: op = EOpConvInt16ToFloat; break;
+ case EbtUint16: op = EOpConvUint16ToFloat; break;
case EbtInt: op = EOpConvIntToFloat; break;
case EbtUint: op = EOpConvUintToFloat; break;
default: assert(0);
@@ -8406,6 +8328,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
case EbtFloat: op = EOpConvFloatToFloat16; break;
case EbtInt8: op = EOpConvInt8ToFloat16; break;
case EbtUint8: op = EOpConvUint8ToFloat16; break;
+ case EbtInt16: op = EOpConvInt16ToFloat16; break;
+ case EbtUint16: op = EOpConvUint16ToFloat16; break;
case EbtInt: op = EOpConvIntToFloat16; break;
case EbtUint: op = EOpConvUintToFloat16; break;
default: assert(0);
@@ -8434,7 +8358,6 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T
type);
} else
return nullptr;
-#endif // GLSLANG_WEB
default:
error(loc, "unsupported construction", "", "");
@@ -8481,7 +8404,6 @@ TIntermTyped* TParseContext::constructAggregate(TIntermNode* node, const TType&
// If a memory qualifier is present in 'to', also make it present in 'from'.
void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier& to)
{
-#ifndef GLSLANG_WEB
if (from.isReadOnly())
to.readonly = from.readonly;
if (from.isWriteOnly())
@@ -8492,7 +8414,6 @@ void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier&
to.volatil = from.volatil;
if (from.restrict)
to.restrict = from.restrict;
-#endif
}
//
@@ -8545,7 +8466,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), "");
memberQualifier.storage = currentBlockQualifier.storage;
globalQualifierFixCheck(memberLoc, memberQualifier);
-#ifndef GLSLANG_WEB
inheritMemoryQualifiers(currentBlockQualifier, memberQualifier);
if (currentBlockQualifier.perPrimitiveNV)
memberQualifier.perPrimitiveNV = currentBlockQualifier.perPrimitiveNV;
@@ -8559,7 +8479,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), "");
if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty())
error(memberLoc, "member cannot have a spirv_decorate_id qualifier", memberType.getFieldName().c_str(), "");
-#endif
if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary()))
error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), "");
if (memberType.isArray())
@@ -8639,7 +8558,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
for (unsigned int member = 0; member < typeList.size(); ++member) {
TQualifier& memberQualifier = typeList[member].type->getQualifier();
const TSourceLoc& memberLoc = typeList[member].loc;
-#ifndef GLSLANG_WEB
if (memberQualifier.hasStream()) {
if (defaultQualification.layoutStream != memberQualifier.layoutStream)
error(memberLoc, "member cannot contradict block", "stream", "");
@@ -8653,14 +8571,12 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
if (defaultQualification.layoutXfbBuffer != memberQualifier.layoutXfbBuffer)
error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", "");
}
-#endif
if (memberQualifier.hasPacking())
error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), "");
if (memberQualifier.hasLocation()) {
const char* feature = "location on block member";
switch (currentBlockQualifier.storage) {
-#ifndef GLSLANG_WEB
case EvqVaryingIn:
case EvqVaryingOut:
requireProfile(memberLoc, ECoreProfile | ECompatibilityProfile | EEsProfile, feature);
@@ -8668,7 +8584,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
profileRequires(memberLoc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature);
memberWithLocation = true;
break;
-#endif
default:
error(memberLoc, "can only use in an in/out block", feature, "");
break;
@@ -8696,7 +8611,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes);
-#ifndef GLSLANG_WEB
// Ensure that the block has an XfbBuffer assigned. This is needed
// because if the block has a XfbOffset assigned, then it is
// assumed that it has implicitly assigned the current global
@@ -8706,7 +8620,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset())
currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer;
}
-#endif
// Process the members
fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation);
@@ -8717,13 +8630,11 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
for (unsigned int member = 0; member < typeList.size(); ++member)
layoutTypeCheck(typeList[member].loc, *typeList[member].type);
-#ifndef GLSLANG_WEB
if (memberWithPerViewQualifier) {
for (unsigned int member = 0; member < typeList.size(); ++member) {
checkAndResizeMeshViewDim(typeList[member].loc, *typeList[member].type, /*isBlockMember*/ true);
}
}
-#endif
// reverse merge, so that currentBlockQualifier now has all layout information
// (can't use defaultQualification directly, it's missing other non-layout-default-class qualifiers)
@@ -8737,7 +8648,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
if (arraySizes != nullptr)
blockType.transferArraySizes(arraySizes);
-#ifndef GLSLANG_WEB
if (arraySizes == nullptr)
ioArrayCheck(loc, blockType, instanceName ? *instanceName : *blockName);
if (currentBlockQualifier.hasBufferReference()) {
@@ -8764,9 +8674,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
if (!instanceName) {
return;
}
- } else
-#endif
- {
+ } else {
//
// Don't make a user-defined type out of block name; that will cause an error
// if the same block name gets reused in a different interface.
@@ -8814,14 +8722,12 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con
// Check for general layout qualifier errors
layoutObjectCheck(loc, variable);
-#ifndef GLSLANG_WEB
// fix up
if (isIoResizeArray(blockType)) {
ioArraySymbolResizeList.push_back(&variable);
checkIoArraysConsistency(loc, true);
} else
fixIoArraySize(loc, variable.getWritableType());
-#endif
// Save it in the AST for linker use.
trackLinkage(variable);
@@ -8886,7 +8792,6 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q
}
profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block");
break;
-#ifndef GLSLANG_WEB
case EvqPayload:
profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadNV block");
requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask),
@@ -8914,7 +8819,6 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q
profileRequires(loc, ~EEsProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV block");
requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV block");
break;
-#endif
default:
error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), "");
break;
@@ -9003,7 +8907,6 @@ void TParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qualifi
void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList)
{
-#ifndef GLSLANG_WEB
// "If a block is qualified with xfb_offset, all its
// members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any
// members of that block not qualified with an xfb_offset will not be assigned transform feedback buffer
@@ -9037,7 +8940,6 @@ void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList)
// The above gave all block members an offset, so we can take it off the block now,
// which will avoid double counting the offset usage.
qualifier.layoutXfbOffset = TQualifier::layoutXfbOffsetEnd;
-#endif
}
// Calculate and save the offset of each block member, using the recursively
@@ -9214,7 +9116,7 @@ void TParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qua
// TParseContext::declareBlock.
if (!symbol && qualifier.hasBufferReference()) {
TTypeList typeList;
- TType blockType(&typeList, identifier, qualifier);;
+ TType blockType(&typeList, identifier, qualifier);
TType blockNameType(EbtReference, blockType, identifier);
TVariable* blockNameVar = new TVariable(&identifier, blockNameType, true);
if (! symbolTable.insert(*blockNameVar)) {
@@ -9293,7 +9195,6 @@ void TParseContext::invariantCheck(const TSourceLoc& loc, const TQualifier& qual
//
void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, const TPublicType& publicType)
{
-#ifndef GLSLANG_WEB
if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) {
assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMesh);
const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices";
@@ -9385,7 +9286,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
else
error(loc, "can only apply to 'in'", "point_mode", "");
}
-#endif
+
for (int i = 0; i < 3; ++i) {
if (publicType.shaderQualifiers.localSizeNotDefault[i]) {
if (publicType.qualifier.storage == EvqVaryingIn) {
@@ -9402,9 +9303,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
}
if (intermediate.getLocalSize(i) > (unsigned int)max)
error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", "");
- }
-#ifndef GLSLANG_WEB
- else if (language == EShLangMesh) {
+ } else if (language == EShLangMesh) {
switch (i) {
case 0:
max = extensionTurnedOn(E_GL_EXT_mesh_shader) ?
@@ -9454,9 +9353,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
"gl_MaxTaskWorkGroupSizeEXT" : "gl_MaxTaskWorkGroupSizeNV");
error(loc, maxsErrtring.c_str(), "local_size", "");
}
- }
-#endif
- else {
+ } else {
assert(0);
}
@@ -9481,7 +9378,6 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
}
}
-#ifndef GLSLANG_WEB
if (publicType.shaderQualifiers.earlyFragmentTests) {
if (publicType.qualifier.storage == EvqVaryingIn)
intermediate.setEarlyFragmentTests();
@@ -9577,7 +9473,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
// Exit early as further checks are not valid
return;
}
-#endif
+
const TQualifier& qualifier = publicType.qualifier;
if (qualifier.isAuxiliary() ||
@@ -9610,7 +9506,6 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
case EvqVaryingIn:
break;
case EvqVaryingOut:
-#ifndef GLSLANG_WEB
if (qualifier.hasStream())
globalOutputDefaults.layoutStream = qualifier.layoutStream;
if (qualifier.hasXfbBuffer())
@@ -9619,7 +9514,6 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con
if (! intermediate.setXfbBufferStride(globalOutputDefaults.layoutXfbBuffer, qualifier.layoutXfbStride))
error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer);
}
-#endif
break;
case EvqShared:
if (qualifier.hasMatrix())
diff --git a/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.h b/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.h
index 509b3004e3..d74662939f 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/ParseHelper.h
@@ -104,7 +104,6 @@ public:
}
virtual ~TParseContextBase() { }
-#if !defined(GLSLANG_WEB) || defined(GLSLANG_WEB_DEVEL)
virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, ...);
virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken,
@@ -113,7 +112,6 @@ public:
const char* szExtraInfoFormat, ...);
virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, ...);
-#endif
virtual void setLimits(const TBuiltInResource&) = 0;
@@ -331,10 +329,8 @@ public:
TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
-#ifndef GLSLANG_WEB
void makeEditable(TSymbol*&) override;
void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier);
-#endif
bool isIoResizeArray(const TType&) const;
void fixIoArraySize(const TSourceLoc&, TType&);
void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base);
@@ -382,7 +378,7 @@ public:
void globalCheck(const TSourceLoc&, const char* token);
bool constructorError(const TSourceLoc&, TIntermNode*, TFunction&, TOperator, TType&);
bool constructorTextureSamplerError(const TSourceLoc&, const TFunction&);
- void arraySizeCheck(const TSourceLoc&, TIntermTyped* expr, TArraySize&, const char *sizeType);
+ void arraySizeCheck(const TSourceLoc&, TIntermTyped* expr, TArraySize&, const char *sizeType, const bool allowZero = false);
bool arrayQualifierError(const TSourceLoc&, const TQualifier&);
bool arrayError(const TSourceLoc&, const TType&);
void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&);
@@ -404,7 +400,7 @@ public:
void setDefaultPrecision(const TSourceLoc&, TPublicType&, TPrecisionQualifier);
int computeSamplerTypeIndex(TSampler&);
TPrecisionQualifier getDefaultPrecision(TPublicType&);
- void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&);
+ void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&, bool isCoopMat);
void parameterTypeCheck(const TSourceLoc&, TStorageQualifier qualifier, const TType& type);
bool containsFieldWithBasicType(const TType& type ,TBasicType basicType);
TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&);
@@ -422,6 +418,7 @@ public:
void inductiveLoopCheck(const TSourceLoc&, TIntermNode* init, TIntermLoop* loop);
void arrayLimitCheck(const TSourceLoc&, const TString&, int size);
void limitCheck(const TSourceLoc&, int value, const char* limit, const char* feature);
+ void coopMatTypeParametersCheck(const TSourceLoc&, const TPublicType&);
void inductiveLoopBodyCheck(TIntermNode*, long long loopIndexId, TSymbolTable&);
void constantIndexExpressionCheck(TIntermNode*);
@@ -466,7 +463,6 @@ public:
const TTypeList* recordStructCopy(TStructRecord&, const TType*, const TType*);
TLayoutFormat mapLegacyLayoutFormat(TLayoutFormat legacyLayoutFormat, TBasicType imageType);
-#ifndef GLSLANG_WEB
TAttributeType attributeFromName(const TString& name) const;
TAttributes* makeAttributes(const TString& identifier) const;
TAttributes* makeAttributes(const TString& identifier, TIntermNode* node) const;
@@ -486,14 +482,13 @@ public:
TSpirvRequirement* mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1,
TSpirvRequirement* spirvReq2);
TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant);
+ TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TPublicType& type);
TSpirvTypeParameters* mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1,
TSpirvTypeParameters* spirvTypeParams2);
TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value);
TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value);
TSpirvInstruction* mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1,
TSpirvInstruction* spirvInst2);
-#endif
-
void checkAndResizeMeshViewDim(const TSourceLoc&, TType&, bool isBlockMember);
protected:
@@ -506,9 +501,7 @@ protected:
bool isRuntimeLength(const TIntermTyped&) const;
TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable);
TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
-#ifndef GLSLANG_WEB
void finish() override;
-#endif
virtual const char* getGlobalUniformBlockName() const override;
virtual void finalizeGlobalUniformBlockLayout(TVariable&) override;
@@ -545,7 +538,6 @@ protected:
TQualifier globalOutputDefaults;
TQualifier globalSharedDefaults;
TString currentCaller; // name of last function body entered (not valid when at global scope)
-#ifndef GLSLANG_WEB
int* atomicUintOffsets; // to become an array of the right size to hold an offset per binding point
bool anyIndexLimits;
TIdSetType inductiveLoopIds;
@@ -586,7 +578,6 @@ protected:
// array-sizing declarations
//
TVector<TSymbol*> ioArraySymbolResizeList;
-#endif
};
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp b/thirdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp
index c3a3928ce3..471a980409 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/PoolAlloc.cpp
@@ -35,34 +35,28 @@
#include "../Include/Common.h"
#include "../Include/PoolAlloc.h"
-#include "../Include/InitializeGlobals.h"
-#include "../OSDependent/osinclude.h"
-
namespace glslang {
-// Process-wide TLS index
-OS_TLSIndex PoolIndex;
+namespace {
+thread_local TPoolAllocator* threadPoolAllocator = nullptr;
+
+TPoolAllocator* GetDefaultThreadPoolAllocator()
+{
+ thread_local TPoolAllocator defaultAllocator;
+ return &defaultAllocator;
+}
+} // anonymous namespace
// Return the thread-specific current pool.
TPoolAllocator& GetThreadPoolAllocator()
{
- return *static_cast<TPoolAllocator*>(OS_GetTLSValue(PoolIndex));
+ return *(threadPoolAllocator ? threadPoolAllocator : GetDefaultThreadPoolAllocator());
}
// Set the thread-specific current pool.
void SetThreadPoolAllocator(TPoolAllocator* poolAllocator)
{
- OS_SetTLSValue(PoolIndex, poolAllocator);
-}
-
-// Process-wide set up of the TLS pool storage.
-bool InitializePoolIndex()
-{
- // Allocate a TLS index.
- if ((PoolIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX)
- return false;
-
- return true;
+ threadPoolAllocator = poolAllocator;
}
//
diff --git a/thirdparty/glslang/glslang/MachineIndependent/Scan.cpp b/thirdparty/glslang/glslang/MachineIndependent/Scan.cpp
index bb21c20345..99c9ecbbba 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/Scan.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/Scan.cpp
@@ -324,11 +324,9 @@ struct str_hash
// A single global usable by all threads, by all versions, by all languages.
// After a single process-level initialization, this is read only and thread safe
std::unordered_map<const char*, int, str_hash, str_eq>* KeywordMap = nullptr;
-#ifndef GLSLANG_WEB
std::unordered_set<const char*, str_hash, str_eq>* ReservedSet = nullptr;
-#endif
-};
+}
namespace glslang {
@@ -409,7 +407,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["uvec3"] = UVEC3;
(*KeywordMap)["uvec4"] = UVEC4;
-#ifndef GLSLANG_WEB
(*KeywordMap)["nonuniformEXT"] = NONUNIFORM;
(*KeywordMap)["demote"] = DEMOTE;
(*KeywordMap)["attribute"] = ATTRIBUTE;
@@ -599,7 +596,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["spirv_storage_class"] = SPIRV_STORAGE_CLASS;
(*KeywordMap)["spirv_by_reference"] = SPIRV_BY_REFERENCE;
(*KeywordMap)["spirv_literal"] = SPIRV_LITERAL;
-#endif
(*KeywordMap)["sampler2D"] = SAMPLER2D;
(*KeywordMap)["samplerCube"] = SAMPLERCUBE;
@@ -633,7 +629,6 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["sampler"] = SAMPLER;
(*KeywordMap)["samplerShadow"] = SAMPLERSHADOW;
-#ifndef GLSLANG_WEB
(*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY;
(*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY;
(*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY;
@@ -770,6 +765,8 @@ void TScanContext::fillInKeywordMap()
(*KeywordMap)["icoopmatNV"] = ICOOPMATNV;
(*KeywordMap)["ucoopmatNV"] = UCOOPMATNV;
+ (*KeywordMap)["coopmat"] = COOPMAT;
+
(*KeywordMap)["hitObjectNV"] = HITOBJECTNV;
(*KeywordMap)["hitObjectAttributeNV"] = HITOBJECTATTRNV;
@@ -812,17 +809,14 @@ void TScanContext::fillInKeywordMap()
ReservedSet->insert("cast");
ReservedSet->insert("namespace");
ReservedSet->insert("using");
-#endif
}
void TScanContext::deleteKeywordMap()
{
delete KeywordMap;
KeywordMap = nullptr;
-#ifndef GLSLANG_WEB
delete ReservedSet;
ReservedSet = nullptr;
-#endif
}
// Called by yylex to get the next token.
@@ -903,14 +897,12 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT;
case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT;
case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT;
-#ifndef GLSLANG_WEB
case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT;
case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT;
case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT;
case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT;
case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT;
case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT;
-#endif
case PpAtomIdentifier:
{
int token = tokenizeIdentifier();
@@ -932,10 +924,8 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token)
int TScanContext::tokenizeIdentifier()
{
-#ifndef GLSLANG_WEB
if (ReservedSet->find(tokenText) != ReservedSet->end())
return reservedWord();
-#endif
auto it = KeywordMap->find(tokenText);
if (it == KeywordMap->end()) {
@@ -1058,7 +1048,6 @@ int TScanContext::tokenizeIdentifier()
return identifierOrReserved(reserved);
}
-#ifndef GLSLANG_WEB
case NOPERSPECTIVE:
if (parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation))
return keyword;
@@ -1145,7 +1134,7 @@ int TScanContext::tokenizeIdentifier()
case SUBROUTINE:
return es30ReservedFromGLSL(400);
-#endif
+
case SHARED:
if ((parseContext.isEsProfile() && parseContext.version < 300) ||
(!parseContext.isEsProfile() && parseContext.version < 140))
@@ -1180,7 +1169,6 @@ int TScanContext::tokenizeIdentifier()
case MAT4X4:
return matNxM();
-#ifndef GLSLANG_WEB
case DMAT2:
case DMAT3:
case DMAT4:
@@ -1485,7 +1473,6 @@ int TScanContext::tokenizeIdentifier()
return keyword;
else
return identifierOrType();
-#endif
case UINT:
case UVEC2:
@@ -1540,7 +1527,6 @@ int TScanContext::tokenizeIdentifier()
else
return identifierOrType();
-#ifndef GLSLANG_WEB
case ISAMPLER1D:
case ISAMPLER1DARRAY:
case SAMPLER1DARRAYSHADOW:
@@ -1781,6 +1767,13 @@ int TScanContext::tokenizeIdentifier()
return keyword;
return identifierOrType();
+ case COOPMAT:
+ afterType = true;
+ if (parseContext.symbolTable.atBuiltInLevel() ||
+ parseContext.extensionTurnedOn(E_GL_KHR_cooperative_matrix))
+ return keyword;
+ return identifierOrType();
+
case DEMOTE:
if (parseContext.extensionTurnedOn(E_GL_EXT_demote_to_helper_invocation))
return keyword;
@@ -1815,7 +1808,6 @@ int TScanContext::tokenizeIdentifier()
&& parseContext.extensionTurnedOn(E_GL_NV_shader_invocation_reorder)))
return keyword;
return identifierOrType();
-#endif
default:
parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc);
diff --git a/thirdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp b/thirdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp
index 5d16361cc4..51c524bbec 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/ShaderLang.cpp
@@ -45,6 +45,7 @@
#include <iostream>
#include <sstream>
#include <memory>
+#include <mutex>
#include "SymbolTable.h"
#include "ParseHelper.h"
#include "Scan.h"
@@ -81,6 +82,9 @@ namespace { // anonymous namespace for file-local functions and symbols
// Shared global; access should be protected by a global mutex/critical section.
int NumberOfClients = 0;
+// global initialization lock
+std::mutex init_lock;
+
using namespace glslang;
// Create a language specific version of parseables.
@@ -295,11 +299,6 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi
EShLanguage language, EShSource source, TInfoSink& infoSink, TSymbolTable** commonTable,
TSymbolTable** symbolTables)
{
-#ifdef GLSLANG_WEB
- profile = EEsProfile;
- version = 310;
-#endif
-
(*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]);
InitializeSymbolTable(builtInParseables.getStageString(language), version, profile, spvVersion, language, source,
infoSink, *symbolTables[language]);
@@ -316,11 +315,6 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi
//
bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables, int version, EProfile profile, const SpvVersion& spvVersion, EShSource source)
{
-#ifdef GLSLANG_WEB
- profile = EEsProfile;
- version = 310;
-#endif
-
std::unique_ptr<TBuiltInParseables> builtInParseables(CreateBuiltInParseables(infoSink, source));
if (builtInParseables == nullptr)
@@ -343,7 +337,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangFragment, source,
infoSink, commonTable, symbolTables);
-#ifndef GLSLANG_WEB
// check for tessellation
if ((profile != EEsProfile && version >= 150) ||
(profile == EEsProfile && version >= 310)) {
@@ -392,7 +385,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS
(profile == EEsProfile && version >= 320))
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTask, source,
infoSink, commonTable, symbolTables);
-#endif // !GLSLANG_WEB
return true;
}
@@ -429,18 +421,15 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
TInfoSink infoSink;
// Make sure only one thread tries to do this at a time
- glslang::GetGlobalLock();
+ const std::lock_guard<std::mutex> lock(init_lock);
// See if it's already been done for this version/profile combination
int versionIndex = MapVersionToIndex(version);
int spvVersionIndex = MapSpvVersionToIndex(spvVersion);
int profileIndex = MapProfileToIndex(profile);
int sourceIndex = MapSourceToIndex(source);
- if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) {
- glslang::ReleaseGlobalLock();
-
+ if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral])
return;
- }
// Switch to a new pool
TPoolAllocator& previousAllocator = GetThreadPoolAllocator();
@@ -487,20 +476,16 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp
delete builtInPoolAllocator;
SetThreadPoolAllocator(&previousAllocator);
-
- glslang::ReleaseGlobalLock();
}
// Function to Print all builtins
void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable)
{
-#if !defined(GLSLANG_WEB)
infoSink.debug << "BuiltinSymbolTable {\n";
symbolTable.dump(infoSink, true);
infoSink.debug << "}\n";
-#endif
}
// Return true if the shader was correctly specified for version/profile/stage.
@@ -598,7 +583,6 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
break;
}
-#if !defined(GLSLANG_WEB)
// Correct for stage type...
switch (stage) {
case EShLangGeometry:
@@ -686,7 +670,6 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo
break;
}
}
-#endif
return correct;
}
@@ -876,7 +859,6 @@ bool ProcessDeferred(
: userInput.scanVersion(version, profile, versionNotFirstToken);
bool versionNotFound = version == 0;
if (forceDefaultVersionAndProfile && source == EShSourceGlsl) {
-#if !defined(GLSLANG_WEB)
if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound &&
(version != defaultVersion || profile != defaultProfile)) {
compiler->infoSink.info << "Warning, (version, profile) forced to be ("
@@ -884,7 +866,7 @@ bool ProcessDeferred(
<< "), while in source code it is ("
<< version << ", " << ProfileName(profile) << ")\n";
}
-#endif
+
if (versionNotFound) {
versionNotFirstToken = false;
versionNotFirst = false;
@@ -899,13 +881,7 @@ bool ProcessDeferred(
bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage,
versionNotFirst, defaultVersion, source, version, profile, spvVersion);
-#ifdef GLSLANG_WEB
- profile = EEsProfile;
- version = 310;
-#endif
-
bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst));
-#if !defined(GLSLANG_WEB)
bool warnVersionNotFirst = false;
if (! versionWillBeError && versionNotFirstToken) {
if (messages & EShMsgRelaxedErrors)
@@ -913,7 +889,6 @@ bool ProcessDeferred(
else
versionWillBeError = true;
}
-#endif
intermediate.setSource(source);
intermediate.setVersion(version);
@@ -978,13 +953,11 @@ bool ProcessDeferred(
parseContext->setLimits(*resources);
if (! goodVersion)
parseContext->addError();
-#if !defined(GLSLANG_WEB)
if (warnVersionNotFirst) {
TSourceLoc loc;
loc.init();
parseContext->warn(loc, "Illegal to have non-comment, non-whitespace tokens before #version", "#version", "");
}
-#endif
parseContext->initializeExtensionBehavior();
@@ -1016,8 +989,6 @@ bool ProcessDeferred(
return success;
}
-#if !defined(GLSLANG_WEB)
-
// Responsible for keeping track of the most recent source string and line in
// the preprocessor and outputting newlines appropriately if the source string
// or line changes.
@@ -1214,8 +1185,6 @@ struct DoPreprocessing {
std::string* outputString;
};
-#endif
-
// DoFullParse is a valid ProcessingConext template argument for fully
// parsing the shader. It populates the "intermediate" with the AST.
struct DoFullParse{
@@ -1246,7 +1215,6 @@ struct DoFullParse{
}
};
-#if !defined(GLSLANG_WEB)
// Take a single compilation unit, and run the preprocessor on it.
// Return: True if there were no issues found in preprocessing,
// False if during preprocessing any unknown version, pragmas or
@@ -1281,7 +1249,6 @@ bool PreprocessDeferred(
forwardCompatible, messages, intermediate, parser,
false, includer, "", environment);
}
-#endif
//
// do a partial compile on the given strings for a single compilation unit
@@ -1329,12 +1296,10 @@ bool CompileDeferred(
//
int ShInitialize()
{
- glslang::InitGlobalLock();
-
if (! InitProcess())
return 0;
- glslang::GetGlobalLock();
+ const std::lock_guard<std::mutex> lock(init_lock);
++NumberOfClients;
if (PerProcessGPA == nullptr)
@@ -1345,7 +1310,6 @@ int ShInitialize()
glslang::HlslScanContext::fillInKeywordMap();
#endif
- glslang::ReleaseGlobalLock();
return 1;
}
@@ -1404,14 +1368,11 @@ void ShDestruct(ShHandle handle)
//
int ShFinalize()
{
- glslang::GetGlobalLock();
+ const std::lock_guard<std::mutex> lock(init_lock);
--NumberOfClients;
assert(NumberOfClients >= 0);
- bool finalize = NumberOfClients == 0;
- if (! finalize) {
- glslang::ReleaseGlobalLock();
+ if (NumberOfClients > 0)
return 1;
- }
for (int version = 0; version < VersionCount; ++version) {
for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) {
@@ -1449,7 +1410,6 @@ int ShFinalize()
glslang::HlslScanContext::deleteKeywordMap();
#endif
- glslang::ReleaseGlobalLock();
return 1;
}
@@ -1831,8 +1791,6 @@ void TShader::setDxPositionW(bool invert) { intermediate->setDxPos
void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); }
void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); }
-#ifndef GLSLANG_WEB
-
// Set binding base for given resource type
void TShader::setShiftBinding(TResourceType res, unsigned int base) {
intermediate->setShiftBinding(res, base);
@@ -1874,7 +1832,6 @@ void TShader::setUniformLocationBase(int base)
void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); }
void TShader::setResourceSetBinding(const std::vector<std::string>& base) { intermediate->setResourceSetBinding(base); }
void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); }
-#endif
void TShader::addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) { intermediate->addBlockStorageOverride(nameStr, backing); }
@@ -1913,7 +1870,6 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion
&environment);
}
-#if !defined(GLSLANG_WEB)
// Fill in a string with the result of preprocessing ShaderStrings
// Returns true if all extensions, pragmas and version strings were valid.
//
@@ -1939,7 +1895,6 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources,
forwardCompatible, message, includer, *intermediate, output_string,
&environment);
}
-#endif
const char* TShader::getInfoLog()
{
@@ -1951,11 +1906,7 @@ const char* TShader::getInfoDebugLog()
return infoSink->debug.c_str();
}
-TProgram::TProgram() :
-#if !defined(GLSLANG_WEB)
- reflection(nullptr),
-#endif
- linked(false)
+TProgram::TProgram() : reflection(nullptr), linked(false)
{
pool = new TPoolAllocator;
infoSink = new TInfoSink;
@@ -1968,9 +1919,7 @@ TProgram::TProgram() :
TProgram::~TProgram()
{
delete infoSink;
-#if !defined(GLSLANG_WEB)
delete reflection;
-#endif
for (int s = 0; s < EShLangCount; ++s)
if (newedIntermediate[s])
@@ -2018,7 +1967,6 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages)
if (stages[stage].size() == 0)
return true;
-#if !defined(GLSLANG_WEB)
int numEsShaders = 0, numNonEsShaders = 0;
for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) {
if ((*it)->intermediate->getProfile() == EEsProfile) {
@@ -2069,9 +2017,6 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages)
for (it = stages[stage].begin(); it != stages[stage].end(); ++it)
intermediate[stage]->merge(*infoSink, *(*it)->intermediate);
}
-#else
- intermediate[stage] = stages[stage].front()->intermediate;
-#endif
intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0);
if (messages & EShMsgAST)
@@ -2153,8 +2098,6 @@ const char* TProgram::getInfoDebugLog()
return infoSink->debug.c_str();
}
-#if !defined(GLSLANG_WEB)
-
//
// Reflection implementation.
//
@@ -2235,6 +2178,4 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper)
return ioMapper->doMap(pResolver, *infoSink);
}
-#endif // !GLSLANG_WEB
-
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp b/thirdparty/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp
index 49d8b8c774..4e130c31be 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/SpirvIntrinsics.cpp
@@ -33,8 +33,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#ifndef GLSLANG_WEB
-
//
// GL_EXT_spirv_intrinsics
//
@@ -45,6 +43,15 @@
namespace glslang {
+bool TSpirvTypeParameter::operator==(const TSpirvTypeParameter& rhs) const
+{
+ if (constant != nullptr)
+ return constant->getConstArray() == rhs.constant->getConstArray();
+
+ assert(type != nullptr);
+ return *type == *rhs.type;
+}
+
//
// Handle SPIR-V requirements
//
@@ -67,7 +74,7 @@ TSpirvRequirement* TParseContext::makeSpirvRequirement(const TSourceLoc& loc, co
spirvReq->capabilities.insert(capability->getAsConstantUnion()->getConstArray()[0].getIConst());
}
} else
- error(loc, "unknow SPIR-V requirement", name.c_str(), "");
+ error(loc, "unknown SPIR-V requirement", name.c_str(), "");
return spirvReq;
}
@@ -283,14 +290,20 @@ TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& l
constant->getBasicType() != EbtBool &&
constant->getBasicType() != EbtString)
error(loc, "this type not allowed", constant->getType().getBasicString(), "");
- else {
- assert(constant);
+ else
spirvTypeParams->push_back(TSpirvTypeParameter(constant));
- }
return spirvTypeParams;
}
+TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& /* loc */,
+ const TPublicType& type)
+{
+ TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters;
+ spirvTypeParams->push_back(TSpirvTypeParameter(new TType(type)));
+ return spirvTypeParams;
+}
+
TSpirvTypeParameters* TParseContext::mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2)
{
// Merge SPIR-V type parameters of the second one to the first one
@@ -345,5 +358,3 @@ TSpirvInstruction* TParseContext::mergeSpirvInstruction(const TSourceLoc& loc, T
}
} // end namespace glslang
-
-#endif // GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp b/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp
index f5f98a0b02..1e007a7120 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.cpp
@@ -65,7 +65,6 @@ void TType::buildMangledName(TString& mangledName) const
case EbtInt: mangledName += 'i'; break;
case EbtUint: mangledName += 'u'; break;
case EbtBool: mangledName += 'b'; break;
-#ifndef GLSLANG_WEB
case EbtDouble: mangledName += 'd'; break;
case EbtFloat16: mangledName += "f16"; break;
case EbtInt8: mangledName += "i8"; break;
@@ -79,12 +78,9 @@ void TType::buildMangledName(TString& mangledName) const
case EbtRayQuery: mangledName += "rq"; break;
case EbtSpirvType: mangledName += "spv-t"; break;
case EbtHitObjectNV: mangledName += "ho"; break;
-#endif
case EbtSampler:
switch (sampler.type) {
-#ifndef GLSLANG_WEB
case EbtFloat16: mangledName += "f16"; break;
-#endif
case EbtInt: mangledName += "i"; break;
case EbtUint: mangledName += "u"; break;
case EbtInt64: mangledName += "i64"; break;
@@ -111,12 +107,10 @@ void TType::buildMangledName(TString& mangledName) const
case Esd2D: mangledName += "2"; break;
case Esd3D: mangledName += "3"; break;
case EsdCube: mangledName += "C"; break;
-#ifndef GLSLANG_WEB
case Esd1D: mangledName += "1"; break;
case EsdRect: mangledName += "R2"; break;
case EsdBuffer: mangledName += "B"; break;
case EsdSubpass: mangledName += "P"; break;
-#endif
default: break; // some compilers want this
}
@@ -184,8 +178,6 @@ void TType::buildMangledName(TString& mangledName) const
}
}
-#if !defined(GLSLANG_WEB)
-
//
// Dump functions.
//
@@ -264,8 +256,6 @@ void TSymbolTable::dump(TInfoSink& infoSink, bool complete) const
}
}
-#endif
-
//
// Functions have buried pointers to delete.
//
@@ -382,7 +372,7 @@ TVariable* TVariable::clone() const
TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf)
{
for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) {
- TParameter param;
+ TParameter param{};
parameters.push_back(param);
(void)parameters.back().copyParam(copyOf.parameters[i]);
}
@@ -398,9 +388,7 @@ TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf)
implicitThis = copyOf.implicitThis;
illegalImplicitThis = copyOf.illegalImplicitThis;
defaultParamCount = copyOf.defaultParamCount;
-#ifndef GLSLANG_WEB
spirvInst = copyOf.spirvInst;
-#endif
}
TFunction* TFunction::clone() const
diff --git a/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.h b/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.h
index c2b386e807..fc86ad6229 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/SymbolTable.h
@@ -117,10 +117,8 @@ public:
virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); }
virtual const char** getExtensions() const { return extensions->data(); }
-#if !defined(GLSLANG_WEB)
virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0;
void dumpExtensions(TInfoSink& infoSink) const;
-#endif
virtual bool isReadOnly() const { return ! writable; }
virtual void makeReadOnly() { writable = false; }
@@ -196,9 +194,7 @@ public:
}
virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); }
-#if !defined(GLSLANG_WEB)
virtual void dump(TInfoSink& infoSink, bool complete = false) const;
-#endif
protected:
explicit TVariable(const TVariable&);
@@ -321,18 +317,14 @@ public:
virtual const TParameter& operator[](int i) const { return parameters[i]; }
const TQualifier& getQualifier() const { return returnType.getQualifier(); }
-#ifndef GLSLANG_WEB
virtual void setSpirvInstruction(const TSpirvInstruction& inst)
{
relateToOperator(EOpSpirvInst);
spirvInst = inst;
}
virtual const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; }
-#endif
-#if !defined(GLSLANG_WEB)
virtual void dump(TInfoSink& infoSink, bool complete = false) const override;
-#endif
protected:
explicit TFunction(const TFunction&);
@@ -354,9 +346,7 @@ protected:
// but is not allowed to use them, or see hidden symbols instead.
int defaultParamCount;
-#ifndef GLSLANG_WEB
TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers
-#endif
};
//
@@ -396,9 +386,7 @@ public:
virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); }
virtual int getAnonId() const { return anonId; }
-#if !defined(GLSLANG_WEB)
virtual void dump(TInfoSink& infoSink, bool complete = false) const override;
-#endif
protected:
explicit TAnonMember(const TAnonMember&);
@@ -583,9 +571,7 @@ public:
void relateToOperator(const char* name, TOperator op);
void setFunctionExtensions(const char* name, int num, const char* const extensions[]);
-#if !defined(GLSLANG_WEB)
void dump(TInfoSink& infoSink, bool complete = false) const;
-#endif
TSymbolTableLevel* clone() const;
void readOnly();
@@ -913,9 +899,7 @@ public:
}
long long getMaxSymbolId() { return uniqueId; }
-#if !defined(GLSLANG_WEB)
void dump(TInfoSink& infoSink, bool complete = false) const;
-#endif
void copyTable(const TSymbolTable& copyOf);
void setPreviousDefaultPrecisions(TPrecisionQualifier *p) { table[currentLevel()]->setPreviousDefaultPrecisions(p); }
diff --git a/thirdparty/glslang/glslang/MachineIndependent/Versions.cpp b/thirdparty/glslang/glslang/MachineIndependent/Versions.cpp
index 71032c8d10..40cf3ed81e 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/Versions.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/Versions.cpp
@@ -151,8 +151,6 @@
namespace glslang {
-#ifndef GLSLANG_WEB
-
//
// Initialize all extensions, almost always to 'disable', as once their features
// are incorporated into a core version, their features are supported through allowing that
@@ -263,6 +261,8 @@ void TParseVersions::initializeExtensionBehavior()
extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable;
+ extensionBehavior[E_GL_KHR_cooperative_matrix] = EBhDisable;
+
// #line and #include
extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable;
extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable;
@@ -383,8 +383,6 @@ void TParseVersions::initializeExtensionBehavior()
spvUnsupportedExt.push_back(E_GL_ARB_bindless_texture);
}
-#endif // GLSLANG_WEB
-
// Get code that is not part of a shared symbol table, is specific to this shader,
// or needed by the preprocessor (which does not use a shared symbol table).
void TParseVersions::getPreamble(std::string& preamble)
@@ -393,9 +391,6 @@ void TParseVersions::getPreamble(std::string& preamble)
preamble =
"#define GL_ES 1\n"
"#define GL_FRAGMENT_PRECISION_HIGH 1\n"
-#ifdef GLSLANG_WEB
- ;
-#else
"#define GL_OES_texture_3D 1\n"
"#define GL_OES_standard_derivatives 1\n"
"#define GL_EXT_frag_depth 1\n"
@@ -517,6 +512,8 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_KHR_shader_subgroup_clustered 1\n"
"#define GL_KHR_shader_subgroup_quad 1\n"
+ "#define GL_KHR_cooperative_matrix 1\n"
+
"#define GL_EXT_shader_image_int64 1\n"
"#define GL_EXT_shader_atomic_int64 1\n"
"#define GL_EXT_shader_realtime_clock 1\n"
@@ -556,7 +553,7 @@ void TParseVersions::getPreamble(std::string& preamble)
"#define GL_NV_mesh_shader 1\n"
"#define GL_NV_cooperative_matrix 1\n"
"#define GL_NV_integer_cooperative_matrix 1\n"
- "#define GL_NV_shader_execution_reorder 1\n"
+ "#define GL_NV_shader_invocation_reorder 1\n"
"#define GL_EXT_shader_explicit_arithmetic_types 1\n"
"#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n"
@@ -592,11 +589,8 @@ void TParseVersions::getPreamble(std::string& preamble)
if (version >= 130) {
preamble +="#define GL_FRAGMENT_PRECISION_HIGH 1\n";
}
-
-#endif // GLSLANG_WEB
}
-#ifndef GLSLANG_WEB
if ((!isEsProfile() && version >= 140) ||
(isEsProfile() && version >= 310)) {
preamble +=
@@ -624,7 +618,6 @@ void TParseVersions::getPreamble(std::string& preamble)
preamble +=
"#define GL_EXT_terminate_invocation 1\n"
;
-#endif
// #define VULKAN XXXX
const int numberBufSize = 12;
@@ -636,7 +629,6 @@ void TParseVersions::getPreamble(std::string& preamble)
preamble += "\n";
}
-#ifndef GLSLANG_WEB
// #define GL_SPIRV XXXX
if (spvVersion.openGl > 0) {
preamble += "#define GL_SPIRV ";
@@ -644,9 +636,7 @@ void TParseVersions::getPreamble(std::string& preamble)
preamble += numberBuf;
preamble += "\n";
}
-#endif
-#ifndef GLSLANG_WEB
// GL_EXT_spirv_intrinsics
if (!isEsProfile()) {
switch (language) {
@@ -667,7 +657,6 @@ void TParseVersions::getPreamble(std::string& preamble)
default: break;
}
}
-#endif
}
//
@@ -679,7 +668,6 @@ const char* StageName(EShLanguage stage)
case EShLangVertex: return "vertex";
case EShLangFragment: return "fragment";
case EShLangCompute: return "compute";
-#ifndef GLSLANG_WEB
case EShLangTessControl: return "tessellation control";
case EShLangTessEvaluation: return "tessellation evaluation";
case EShLangGeometry: return "geometry";
@@ -691,7 +679,6 @@ const char* StageName(EShLanguage stage)
case EShLangCallable: return "callable";
case EShLangMesh: return "mesh";
case EShLangTask: return "task";
-#endif
default: return "unknown stage";
}
}
@@ -716,7 +703,6 @@ void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguage stage, cons
requireStage(loc, static_cast<EShLanguageMask>(1 << stage), featureDesc);
}
-#ifndef GLSLANG_WEB
//
// When to use requireProfile():
//
@@ -754,7 +740,6 @@ void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int
{
if (profile & profileMask) {
bool okay = minVersion > 0 && version >= minVersion;
-#ifndef GLSLANG_WEB
for (int i = 0; i < numExtensions; ++i) {
switch (getExtensionBehavior(extensions[i])) {
case EBhWarn:
@@ -767,7 +752,6 @@ void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int
default: break; // some compilers want this
}
}
-#endif
if (! okay)
error(loc, "not supported for this version or the enabled extensions", featureDesc, "");
}
@@ -1335,7 +1319,7 @@ void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool buil
}
}
-void TParseVersions::fcoopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn)
+void TParseVersions::fcoopmatCheckNV(const TSourceLoc& loc, const char* op, bool builtIn)
{
if (!builtIn) {
const char* const extensions[] = {E_GL_NV_cooperative_matrix};
@@ -1343,14 +1327,22 @@ void TParseVersions::fcoopmatCheck(const TSourceLoc& loc, const char* op, bool b
}
}
-void TParseVersions::intcoopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn)
+void TParseVersions::intcoopmatCheckNV(const TSourceLoc& loc, const char* op, bool builtIn)
{
if (!builtIn) {
const char* const extensions[] = {E_GL_NV_integer_cooperative_matrix};
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
}
}
-#endif // GLSLANG_WEB
+
+void TParseVersions::coopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn)
+{
+ if (!builtIn) {
+ const char* const extensions[] = {E_GL_KHR_cooperative_matrix};
+ requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
+ }
+}
+
// Call for any operation removed because SPIR-V is in use.
void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op)
{
@@ -1368,26 +1360,20 @@ void TParseVersions::vulkanRemoved(const TSourceLoc& loc, const char* op)
// Call for any operation that requires Vulkan.
void TParseVersions::requireVulkan(const TSourceLoc& loc, const char* op)
{
-#ifndef GLSLANG_WEB
if (spvVersion.vulkan == 0)
error(loc, "only allowed when using GLSL for Vulkan", op, "");
-#endif
}
// Call for any operation that requires SPIR-V.
void TParseVersions::requireSpv(const TSourceLoc& loc, const char* op)
{
-#ifndef GLSLANG_WEB
if (spvVersion.spv == 0)
error(loc, "only allowed when generating SPIR-V", op, "");
-#endif
}
void TParseVersions::requireSpv(const TSourceLoc& loc, const char *op, unsigned int version)
{
-#ifndef GLSLANG_WEB
if (spvVersion.spv < version)
error(loc, "not supported for current targeted SPIR-V version", op, "");
-#endif
}
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/MachineIndependent/Versions.h b/thirdparty/glslang/glslang/MachineIndependent/Versions.h
index 01b8b5d3ca..29ebed248e 100644..100755
--- a/thirdparty/glslang/glslang/MachineIndependent/Versions.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/Versions.h
@@ -174,6 +174,7 @@ const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_sub
const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered";
const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad";
const char* const E_GL_KHR_memory_scope_semantics = "GL_KHR_memory_scope_semantics";
+const char* const E_GL_KHR_cooperative_matrix = "GL_KHR_cooperative_matrix";
const char* const E_GL_EXT_shader_atomic_int64 = "GL_EXT_shader_atomic_int64";
diff --git a/thirdparty/glslang/glslang/MachineIndependent/attribute.cpp b/thirdparty/glslang/glslang/MachineIndependent/attribute.cpp
index df7fdc2a60..21ef736870 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/attribute.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/attribute.cpp
@@ -34,8 +34,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#ifndef GLSLANG_WEB
-
#include "attribute.h"
#include "../Include/intermediate.h"
#include "ParseHelper.h"
@@ -367,5 +365,3 @@ void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttri
}
} // end namespace glslang
-
-#endif // GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/MachineIndependent/glslang.y b/thirdparty/glslang/glslang/MachineIndependent/glslang.y
index 362c13aa9b..d47f29259a 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/glslang.y
+++ b/thirdparty/glslang/glslang/MachineIndependent/glslang.y
@@ -37,31 +37,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-//
-// Do not edit the .y file, only edit the .m4 file.
-// The .y bison file is not a source file, it is a derivative of the .m4 file.
-// The m4 file needs to be processed by m4 to generate the .y bison file.
-//
-// Code sandwiched between a pair:
-//
-// GLSLANG_WEB_EXCLUDE_ON
-// ...
-// ...
-// ...
-// GLSLANG_WEB_EXCLUDE_OFF
-//
-// Will be excluded from the grammar when m4 is executed as:
-//
-// m4 -P -DGLSLANG_WEB
-//
-// It will be included when m4 is executed as:
-//
-// m4 -P
-//
-
-
-
-
/**
* This is bison grammar and productions for parsing all versions of the
* GLSL shading languages.
@@ -129,7 +104,7 @@ using namespace glslang;
glslang::TArraySizes* arraySizes;
glslang::TIdentifierList* identifierList;
};
- glslang::TArraySizes* typeParameters;
+ glslang::TTypeParameters* typeParameters;
} interm;
}
@@ -177,8 +152,6 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY
%token <lex> UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY
-
-
%token <lex> ATTRIBUTE VARYING
%token <lex> FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T
%token <lex> INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T
@@ -211,6 +184,7 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> ACCSTRUCTEXT
%token <lex> RAYQUERYEXT
%token <lex> FCOOPMATNV ICOOPMATNV UCOOPMATNV
+%token <lex> COOPMAT
%token <lex> HITOBJECTNV HITOBJECTATTRNV
// combined image/sampler
@@ -281,8 +255,6 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL
%token <lex> ATTACHMENTEXT IATTACHMENTEXT UATTACHMENTEXT
-
-
%token <lex> LEFT_OP RIGHT_OP
%token <lex> INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP
%token <lex> AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN
@@ -308,7 +280,6 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> UNIFORM SHARED BUFFER TILEIMAGEEXT
%token <lex> FLAT SMOOTH LAYOUT
-
%token <lex> DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT
%token <lex> INT64CONSTANT UINT64CONSTANT
%token <lex> SUBROUTINE DEMOTE
@@ -320,7 +291,6 @@ extern int yylex(YYSTYPE*, TParseContext&);
%token <lex> NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT
%token <lex> PRECISE
-
%type <interm> assignment_operator unary_operator
%type <interm.intermTypedNode> variable_identifier primary_expression postfix_expression
%type <interm.intermTypedNode> expression integer_expression assignment_expression
@@ -366,7 +336,6 @@ extern int yylex(YYSTYPE*, TParseContext&);
%type <interm.identifierList> identifier_list
-
%type <interm.type> precise_qualifier non_uniform_qualifier
%type <interm.typeList> type_name_list
%type <interm.attributes> attribute attribute_list single_attribute
@@ -386,7 +355,6 @@ extern int yylex(YYSTYPE*, TParseContext&);
%type <interm.spirvInst> spirv_instruction_qualifier
%type <interm.spirvInst> spirv_instruction_qualifier_list spirv_instruction_qualifier_id
-
%start translation_unit
%%
@@ -418,7 +386,6 @@ primary_expression
| BOOLCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
}
-
| STRING_LITERAL {
$$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true);
}
@@ -456,7 +423,6 @@ primary_expression
parseContext.float16Check($1.loc, "half float literal");
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true);
}
-
;
postfix_expression
@@ -582,13 +548,11 @@ function_identifier
$$.function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
-
| non_uniform_qualifier {
// Constructor
$$.intermNode = 0;
$$.function = parseContext.handleConstructorCall($1.loc, $1);
}
-
;
unary_expression
@@ -898,7 +862,6 @@ declaration
$$ = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-
| spirv_instruction_qualifier function_prototype SEMICOLON {
parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier");
$2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier
@@ -911,7 +874,6 @@ declaration
parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier");
$$ = 0;
}
-
| init_declarator_list SEMICOLON {
if ($1.intermNode && $1.intermNode->getAsAggregate())
$1.intermNode->getAsAggregate()->setOperator(EOpSequence);
@@ -1108,7 +1070,7 @@ parameter_declaration
$$ = $2;
if ($1.qualifier.precision != EpqNone)
$$.param.type->getQualifier().precision = $1.qualifier.precision;
- parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier());
+ parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat());
parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers);
parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type);
@@ -1120,7 +1082,7 @@ parameter_declaration
parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type);
parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type);
- parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier());
+ parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat());
}
//
// Without name
@@ -1129,7 +1091,7 @@ parameter_declaration
$$ = $2;
if ($1.qualifier.precision != EpqNone)
$$.param.type->getQualifier().precision = $1.qualifier.precision;
- parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier());
+ parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat());
parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers);
parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type);
@@ -1140,7 +1102,7 @@ parameter_declaration
parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type);
parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type);
- parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier());
+ parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat());
}
;
@@ -1181,9 +1143,7 @@ single_declaration
: fully_specified_type {
$$.type = $1;
$$.intermNode = 0;
-
parseContext.declareTypeDefaults($$.loc, $$.type);
-
}
| fully_specified_type IDENTIFIER {
$$.type = $1;
@@ -1217,7 +1177,7 @@ fully_specified_type
parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type");
}
- parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier);
+ parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier, $$.isCoopmat());
}
| type_qualifier type_specifier {
parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2);
@@ -1234,7 +1194,7 @@ fully_specified_type
parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers);
$2.shaderQualifiers.merge($1.shaderQualifiers);
parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true);
- parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier);
+ parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat());
$$ = $2;
@@ -1269,7 +1229,6 @@ interpolation_qualifier
$$.init($1.loc);
$$.qualifier.flat = true;
}
-
| NOPERSPECTIVE {
parseContext.globalCheck($1.loc, "noperspective");
parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective");
@@ -1334,7 +1293,6 @@ interpolation_qualifier
$$.init($1.loc);
$$.qualifier.perTaskNV = true;
}
-
;
layout_qualifier
@@ -1369,7 +1327,6 @@ layout_qualifier_id
}
;
-
precise_qualifier
: PRECISE {
parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
@@ -1379,7 +1336,6 @@ precise_qualifier
}
;
-
type_qualifier
: single_type_qualifier {
$$ = $1;
@@ -1413,7 +1369,6 @@ single_type_qualifier
// allow inheritance of storage qualifier from block declaration
$$ = $1;
}
-
| precise_qualifier {
// allow inheritance of storage qualifier from block declaration
$$ = $1;
@@ -1440,7 +1395,6 @@ single_type_qualifier
$$.init($1.loc);
$$.qualifier.setSpirvLiteral();
}
-
;
storage_qualifier
@@ -1495,7 +1449,6 @@ storage_qualifier
$$.init($1.loc);
$$.qualifier.storage = EvqBuffer;
}
-
| ATTRIBUTE {
parseContext.requireStage($1.loc, EShLangVertex, "attribute");
parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute");
@@ -1688,10 +1641,8 @@ storage_qualifier
$$.init($1.loc);
$$.qualifier.storage = EvqtaskPayloadSharedEXT;
}
-
;
-
non_uniform_qualifier
: NONUNIFORM {
$$.init($1.loc);
@@ -1710,12 +1661,13 @@ type_name_list
}
;
-
type_specifier
: type_specifier_nonarray type_parameter_specifier_opt {
$$ = $1;
$$.qualifier.precision = parseContext.getDefaultPrecision($$);
$$.typeParameters = $2;
+ parseContext.coopMatTypeParametersCheck($1.loc, $$);
+
}
| type_specifier_nonarray type_parameter_specifier_opt array_specifier {
parseContext.arrayOfArrayVersionCheck($3.loc, $3.arraySizes);
@@ -1723,6 +1675,7 @@ type_specifier
$$.qualifier.precision = parseContext.getDefaultPrecision($$);
$$.typeParameters = $2;
$$.arraySizes = $3.arraySizes;
+ parseContext.coopMatTypeParametersCheck($1.loc, $$);
}
;
@@ -1769,19 +1722,25 @@ type_parameter_specifier
;
type_parameter_specifier_list
- : unary_expression {
- $$ = new TArraySizes;
+ : type_specifier {
+ $$ = new TTypeParameters;
+ $$->arraySizes = new TArraySizes;
+ $$->basicType = $1.basicType;
+ }
+ | unary_expression {
+ $$ = new TTypeParameters;
+ $$->arraySizes = new TArraySizes;
TArraySize size;
- parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter");
- $$->addInnerSize(size);
+ parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter", true);
+ $$->arraySizes->addInnerSize(size);
}
| type_parameter_specifier_list COMMA unary_expression {
$$ = $1;
TArraySize size;
- parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter");
- $$->addInnerSize(size);
+ parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter", true);
+ $$->arraySizes->addInnerSize(size);
}
;
@@ -1930,7 +1889,6 @@ type_specifier_nonarray
$$.basicType = EbtFloat;
$$.setMatrix(4, 4);
}
-
| DOUBLE {
parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -2549,7 +2507,6 @@ type_specifier_nonarray
$$.basicType = EbtSampler;
$$.sampler.set(EbtFloat, Esd1D);
}
-
| SAMPLER2D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2585,7 +2542,6 @@ type_specifier_nonarray
$$.basicType = EbtSampler;
$$.sampler.set(EbtFloat, Esd2D, true, true);
}
-
| SAMPLER1DSHADOW {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2694,7 +2650,6 @@ type_specifier_nonarray
$$.basicType = EbtSampler;
$$.sampler.set(EbtInt, Esd1D);
}
-
| ISAMPLER2D {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2730,7 +2685,6 @@ type_specifier_nonarray
$$.basicType = EbtSampler;
$$.sampler.set(EbtUint, EsdCube);
}
-
| ISAMPLER1DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2771,7 +2725,6 @@ type_specifier_nonarray
$$.basicType = EbtSampler;
$$.sampler.setTexture(EbtUint, EsdCube, true);
}
-
| USAMPLER2DARRAY {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -2847,7 +2800,6 @@ type_specifier_nonarray
$$.basicType = EbtSampler;
$$.sampler.setPureSampler(true);
}
-
| SAMPLER2DRECT {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtSampler;
@@ -3521,22 +3473,32 @@ type_specifier_nonarray
$$.sampler.setSubpass(EbtUint, true);
}
| FCOOPMATNV {
- parseContext.fcoopmatCheck($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.fcoopmatCheckNV($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
- $$.coopmat = true;
+ $$.coopmatNV = true;
+ $$.coopmatKHR = false;
}
| ICOOPMATNV {
- parseContext.intcoopmatCheck($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.intcoopmatCheckNV($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt;
- $$.coopmat = true;
+ $$.coopmatNV = true;
+ $$.coopmatKHR = false;
}
| UCOOPMATNV {
- parseContext.intcoopmatCheck($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.intcoopmatCheckNV($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint;
- $$.coopmat = true;
+ $$.coopmatNV = true;
+ $$.coopmatKHR = false;
+ }
+ | COOPMAT {
+ parseContext.coopmatCheck($1.loc, "coopmat", parseContext.symbolTable.atBuiltInLevel());
+ $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+ $$.basicType = EbtCoopmat;
+ $$.coopmatNV = false;
+ $$.coopmatKHR = true;
}
| spirv_type_specifier {
parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier");
@@ -3546,7 +3508,6 @@ type_specifier_nonarray
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtHitObjectNV;
}
-
| struct_specifier {
$$ = $1;
$$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
@@ -3634,7 +3595,7 @@ struct_declaration
$$ = $2;
parseContext.voidErrorCheck($1.loc, (*$2)[0].type->getFieldName(), $1.basicType);
- parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier);
+ parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier, $1.isCoopmat());
for (unsigned int i = 0; i < $$->size(); ++i) {
TType type($1);
@@ -3658,7 +3619,7 @@ struct_declaration
parseContext.memberQualifierCheck($1);
parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType);
parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true);
- parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier);
+ parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat());
for (unsigned int i = 0; i < $$->size(); ++i) {
TType type($2);
@@ -3701,7 +3662,6 @@ initializer
: assignment_expression {
$$ = $1;
}
-
| LEFT_BRACE initializer_list RIGHT_BRACE {
const char* initFeature = "{ } style initializers";
parseContext.requireProfile($1.loc, ~EEsProfile, initFeature);
@@ -3720,10 +3680,8 @@ initializer
parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
$$ = parseContext.intermediate.makeAggregate($1.loc);
}
-
;
-
initializer_list
: initializer {
$$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc());
@@ -3733,7 +3691,6 @@ initializer_list
}
;
-
declaration_statement
: declaration { $$ = $1; }
;
@@ -3753,12 +3710,9 @@ simple_statement
| case_label { $$ = $1; }
| iteration_statement { $$ = $1; }
| jump_statement { $$ = $1; }
-
| demote_statement { $$ = $1; }
-
;
-
demote_statement
: DEMOTE SEMICOLON {
parseContext.requireStage($1.loc, EShLangFragment, "demote");
@@ -3767,7 +3721,6 @@ demote_statement
}
;
-
compound_statement
: LEFT_BRACE RIGHT_BRACE { $$ = 0; }
| LEFT_BRACE {
@@ -3850,14 +3803,12 @@ selection_statement
: selection_statement_nonattributed {
$$ = $1;
}
-
| attribute selection_statement_nonattributed {
parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSelectionAttributes(*$1, $2);
$$ = $2;
}
-
selection_statement_nonattributed
: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement {
parseContext.boolCheck($1.loc, $3);
@@ -3898,14 +3849,12 @@ switch_statement
: switch_statement_nonattributed {
$$ = $1;
}
-
| attribute switch_statement_nonattributed {
parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSwitchAttributes(*$1, $2);
$$ = $2;
}
-
switch_statement_nonattributed
: SWITCH LEFT_PAREN expression RIGHT_PAREN {
// start new switch sequence on the switch stack
@@ -3963,14 +3912,12 @@ iteration_statement
: iteration_statement_nonattributed {
$$ = $1;
}
-
| attribute iteration_statement_nonattributed {
parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleLoopAttributes(*$1, $2);
$$ = $2;
}
-
iteration_statement_nonattributed
: WHILE LEFT_PAREN {
if (! parseContext.limits.whileLoops)
@@ -4083,7 +4030,6 @@ jump_statement
parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation");
$$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc);
}
-
| TERMINATE_RAY SEMICOLON {
parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT");
$$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc);
@@ -4092,7 +4038,6 @@ jump_statement
parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT");
$$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc);
}
-
;
// Grammar Note: No 'goto'. Gotos are not supported.
@@ -4117,13 +4062,11 @@ external_declaration
| declaration {
$$ = $1;
}
-
| SEMICOLON {
parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon");
parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
$$ = nullptr;
}
-
;
function_definition
@@ -4167,7 +4110,6 @@ function_definition
}
;
-
attribute
: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET {
$$ = $3;
@@ -4189,8 +4131,6 @@ single_attribute
$$ = parseContext.makeAttributes(*$1.string, $3);
}
-
-
spirv_requirements_list
: spirv_requirements_parameter {
$$ = $1;
@@ -4439,6 +4379,9 @@ spirv_type_parameter
: constant_expression {
$$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion());
}
+ | type_specifier_nonarray {
+ $$ = parseContext.makeSpirvTypeParameters($1.loc, $1);
+ }
spirv_instruction_qualifier
: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN {
@@ -4465,5 +4408,4 @@ spirv_instruction_qualifier_id
$$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i);
}
-
%%
diff --git a/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp b/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
index 3b96db1255..a265abc802 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp
@@ -287,436 +287,437 @@ enum yysymbol_kind_t
YYSYMBOL_FCOOPMATNV = 163, /* FCOOPMATNV */
YYSYMBOL_ICOOPMATNV = 164, /* ICOOPMATNV */
YYSYMBOL_UCOOPMATNV = 165, /* UCOOPMATNV */
- YYSYMBOL_HITOBJECTNV = 166, /* HITOBJECTNV */
- YYSYMBOL_HITOBJECTATTRNV = 167, /* HITOBJECTATTRNV */
- YYSYMBOL_SAMPLERCUBEARRAY = 168, /* SAMPLERCUBEARRAY */
- YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 169, /* SAMPLERCUBEARRAYSHADOW */
- YYSYMBOL_ISAMPLERCUBEARRAY = 170, /* ISAMPLERCUBEARRAY */
- YYSYMBOL_USAMPLERCUBEARRAY = 171, /* USAMPLERCUBEARRAY */
- YYSYMBOL_SAMPLER1D = 172, /* SAMPLER1D */
- YYSYMBOL_SAMPLER1DARRAY = 173, /* SAMPLER1DARRAY */
- YYSYMBOL_SAMPLER1DARRAYSHADOW = 174, /* SAMPLER1DARRAYSHADOW */
- YYSYMBOL_ISAMPLER1D = 175, /* ISAMPLER1D */
- YYSYMBOL_SAMPLER1DSHADOW = 176, /* SAMPLER1DSHADOW */
- YYSYMBOL_SAMPLER2DRECT = 177, /* SAMPLER2DRECT */
- YYSYMBOL_SAMPLER2DRECTSHADOW = 178, /* SAMPLER2DRECTSHADOW */
- YYSYMBOL_ISAMPLER2DRECT = 179, /* ISAMPLER2DRECT */
- YYSYMBOL_USAMPLER2DRECT = 180, /* USAMPLER2DRECT */
- YYSYMBOL_SAMPLERBUFFER = 181, /* SAMPLERBUFFER */
- YYSYMBOL_ISAMPLERBUFFER = 182, /* ISAMPLERBUFFER */
- YYSYMBOL_USAMPLERBUFFER = 183, /* USAMPLERBUFFER */
- YYSYMBOL_SAMPLER2DMS = 184, /* SAMPLER2DMS */
- YYSYMBOL_ISAMPLER2DMS = 185, /* ISAMPLER2DMS */
- YYSYMBOL_USAMPLER2DMS = 186, /* USAMPLER2DMS */
- YYSYMBOL_SAMPLER2DMSARRAY = 187, /* SAMPLER2DMSARRAY */
- YYSYMBOL_ISAMPLER2DMSARRAY = 188, /* ISAMPLER2DMSARRAY */
- YYSYMBOL_USAMPLER2DMSARRAY = 189, /* USAMPLER2DMSARRAY */
- YYSYMBOL_SAMPLEREXTERNALOES = 190, /* SAMPLEREXTERNALOES */
- YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 191, /* SAMPLEREXTERNAL2DY2YEXT */
- YYSYMBOL_ISAMPLER1DARRAY = 192, /* ISAMPLER1DARRAY */
- YYSYMBOL_USAMPLER1D = 193, /* USAMPLER1D */
- YYSYMBOL_USAMPLER1DARRAY = 194, /* USAMPLER1DARRAY */
- YYSYMBOL_F16SAMPLER1D = 195, /* F16SAMPLER1D */
- YYSYMBOL_F16SAMPLER2D = 196, /* F16SAMPLER2D */
- YYSYMBOL_F16SAMPLER3D = 197, /* F16SAMPLER3D */
- YYSYMBOL_F16SAMPLER2DRECT = 198, /* F16SAMPLER2DRECT */
- YYSYMBOL_F16SAMPLERCUBE = 199, /* F16SAMPLERCUBE */
- YYSYMBOL_F16SAMPLER1DARRAY = 200, /* F16SAMPLER1DARRAY */
- YYSYMBOL_F16SAMPLER2DARRAY = 201, /* F16SAMPLER2DARRAY */
- YYSYMBOL_F16SAMPLERCUBEARRAY = 202, /* F16SAMPLERCUBEARRAY */
- YYSYMBOL_F16SAMPLERBUFFER = 203, /* F16SAMPLERBUFFER */
- YYSYMBOL_F16SAMPLER2DMS = 204, /* F16SAMPLER2DMS */
- YYSYMBOL_F16SAMPLER2DMSARRAY = 205, /* F16SAMPLER2DMSARRAY */
- YYSYMBOL_F16SAMPLER1DSHADOW = 206, /* F16SAMPLER1DSHADOW */
- YYSYMBOL_F16SAMPLER2DSHADOW = 207, /* F16SAMPLER2DSHADOW */
- YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 208, /* F16SAMPLER1DARRAYSHADOW */
- YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 209, /* F16SAMPLER2DARRAYSHADOW */
- YYSYMBOL_F16SAMPLER2DRECTSHADOW = 210, /* F16SAMPLER2DRECTSHADOW */
- YYSYMBOL_F16SAMPLERCUBESHADOW = 211, /* F16SAMPLERCUBESHADOW */
- YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 212, /* F16SAMPLERCUBEARRAYSHADOW */
- YYSYMBOL_IMAGE1D = 213, /* IMAGE1D */
- YYSYMBOL_IIMAGE1D = 214, /* IIMAGE1D */
- YYSYMBOL_UIMAGE1D = 215, /* UIMAGE1D */
- YYSYMBOL_IMAGE2D = 216, /* IMAGE2D */
- YYSYMBOL_IIMAGE2D = 217, /* IIMAGE2D */
- YYSYMBOL_UIMAGE2D = 218, /* UIMAGE2D */
- YYSYMBOL_IMAGE3D = 219, /* IMAGE3D */
- YYSYMBOL_IIMAGE3D = 220, /* IIMAGE3D */
- YYSYMBOL_UIMAGE3D = 221, /* UIMAGE3D */
- YYSYMBOL_IMAGE2DRECT = 222, /* IMAGE2DRECT */
- YYSYMBOL_IIMAGE2DRECT = 223, /* IIMAGE2DRECT */
- YYSYMBOL_UIMAGE2DRECT = 224, /* UIMAGE2DRECT */
- YYSYMBOL_IMAGECUBE = 225, /* IMAGECUBE */
- YYSYMBOL_IIMAGECUBE = 226, /* IIMAGECUBE */
- YYSYMBOL_UIMAGECUBE = 227, /* UIMAGECUBE */
- YYSYMBOL_IMAGEBUFFER = 228, /* IMAGEBUFFER */
- YYSYMBOL_IIMAGEBUFFER = 229, /* IIMAGEBUFFER */
- YYSYMBOL_UIMAGEBUFFER = 230, /* UIMAGEBUFFER */
- YYSYMBOL_IMAGE1DARRAY = 231, /* IMAGE1DARRAY */
- YYSYMBOL_IIMAGE1DARRAY = 232, /* IIMAGE1DARRAY */
- YYSYMBOL_UIMAGE1DARRAY = 233, /* UIMAGE1DARRAY */
- YYSYMBOL_IMAGE2DARRAY = 234, /* IMAGE2DARRAY */
- YYSYMBOL_IIMAGE2DARRAY = 235, /* IIMAGE2DARRAY */
- YYSYMBOL_UIMAGE2DARRAY = 236, /* UIMAGE2DARRAY */
- YYSYMBOL_IMAGECUBEARRAY = 237, /* IMAGECUBEARRAY */
- YYSYMBOL_IIMAGECUBEARRAY = 238, /* IIMAGECUBEARRAY */
- YYSYMBOL_UIMAGECUBEARRAY = 239, /* UIMAGECUBEARRAY */
- YYSYMBOL_IMAGE2DMS = 240, /* IMAGE2DMS */
- YYSYMBOL_IIMAGE2DMS = 241, /* IIMAGE2DMS */
- YYSYMBOL_UIMAGE2DMS = 242, /* UIMAGE2DMS */
- YYSYMBOL_IMAGE2DMSARRAY = 243, /* IMAGE2DMSARRAY */
- YYSYMBOL_IIMAGE2DMSARRAY = 244, /* IIMAGE2DMSARRAY */
- YYSYMBOL_UIMAGE2DMSARRAY = 245, /* UIMAGE2DMSARRAY */
- YYSYMBOL_F16IMAGE1D = 246, /* F16IMAGE1D */
- YYSYMBOL_F16IMAGE2D = 247, /* F16IMAGE2D */
- YYSYMBOL_F16IMAGE3D = 248, /* F16IMAGE3D */
- YYSYMBOL_F16IMAGE2DRECT = 249, /* F16IMAGE2DRECT */
- YYSYMBOL_F16IMAGECUBE = 250, /* F16IMAGECUBE */
- YYSYMBOL_F16IMAGE1DARRAY = 251, /* F16IMAGE1DARRAY */
- YYSYMBOL_F16IMAGE2DARRAY = 252, /* F16IMAGE2DARRAY */
- YYSYMBOL_F16IMAGECUBEARRAY = 253, /* F16IMAGECUBEARRAY */
- YYSYMBOL_F16IMAGEBUFFER = 254, /* F16IMAGEBUFFER */
- YYSYMBOL_F16IMAGE2DMS = 255, /* F16IMAGE2DMS */
- YYSYMBOL_F16IMAGE2DMSARRAY = 256, /* F16IMAGE2DMSARRAY */
- YYSYMBOL_I64IMAGE1D = 257, /* I64IMAGE1D */
- YYSYMBOL_U64IMAGE1D = 258, /* U64IMAGE1D */
- YYSYMBOL_I64IMAGE2D = 259, /* I64IMAGE2D */
- YYSYMBOL_U64IMAGE2D = 260, /* U64IMAGE2D */
- YYSYMBOL_I64IMAGE3D = 261, /* I64IMAGE3D */
- YYSYMBOL_U64IMAGE3D = 262, /* U64IMAGE3D */
- YYSYMBOL_I64IMAGE2DRECT = 263, /* I64IMAGE2DRECT */
- YYSYMBOL_U64IMAGE2DRECT = 264, /* U64IMAGE2DRECT */
- YYSYMBOL_I64IMAGECUBE = 265, /* I64IMAGECUBE */
- YYSYMBOL_U64IMAGECUBE = 266, /* U64IMAGECUBE */
- YYSYMBOL_I64IMAGEBUFFER = 267, /* I64IMAGEBUFFER */
- YYSYMBOL_U64IMAGEBUFFER = 268, /* U64IMAGEBUFFER */
- YYSYMBOL_I64IMAGE1DARRAY = 269, /* I64IMAGE1DARRAY */
- YYSYMBOL_U64IMAGE1DARRAY = 270, /* U64IMAGE1DARRAY */
- YYSYMBOL_I64IMAGE2DARRAY = 271, /* I64IMAGE2DARRAY */
- YYSYMBOL_U64IMAGE2DARRAY = 272, /* U64IMAGE2DARRAY */
- YYSYMBOL_I64IMAGECUBEARRAY = 273, /* I64IMAGECUBEARRAY */
- YYSYMBOL_U64IMAGECUBEARRAY = 274, /* U64IMAGECUBEARRAY */
- YYSYMBOL_I64IMAGE2DMS = 275, /* I64IMAGE2DMS */
- YYSYMBOL_U64IMAGE2DMS = 276, /* U64IMAGE2DMS */
- YYSYMBOL_I64IMAGE2DMSARRAY = 277, /* I64IMAGE2DMSARRAY */
- YYSYMBOL_U64IMAGE2DMSARRAY = 278, /* U64IMAGE2DMSARRAY */
- YYSYMBOL_TEXTURECUBEARRAY = 279, /* TEXTURECUBEARRAY */
- YYSYMBOL_ITEXTURECUBEARRAY = 280, /* ITEXTURECUBEARRAY */
- YYSYMBOL_UTEXTURECUBEARRAY = 281, /* UTEXTURECUBEARRAY */
- YYSYMBOL_TEXTURE1D = 282, /* TEXTURE1D */
- YYSYMBOL_ITEXTURE1D = 283, /* ITEXTURE1D */
- YYSYMBOL_UTEXTURE1D = 284, /* UTEXTURE1D */
- YYSYMBOL_TEXTURE1DARRAY = 285, /* TEXTURE1DARRAY */
- YYSYMBOL_ITEXTURE1DARRAY = 286, /* ITEXTURE1DARRAY */
- YYSYMBOL_UTEXTURE1DARRAY = 287, /* UTEXTURE1DARRAY */
- YYSYMBOL_TEXTURE2DRECT = 288, /* TEXTURE2DRECT */
- YYSYMBOL_ITEXTURE2DRECT = 289, /* ITEXTURE2DRECT */
- YYSYMBOL_UTEXTURE2DRECT = 290, /* UTEXTURE2DRECT */
- YYSYMBOL_TEXTUREBUFFER = 291, /* TEXTUREBUFFER */
- YYSYMBOL_ITEXTUREBUFFER = 292, /* ITEXTUREBUFFER */
- YYSYMBOL_UTEXTUREBUFFER = 293, /* UTEXTUREBUFFER */
- YYSYMBOL_TEXTURE2DMS = 294, /* TEXTURE2DMS */
- YYSYMBOL_ITEXTURE2DMS = 295, /* ITEXTURE2DMS */
- YYSYMBOL_UTEXTURE2DMS = 296, /* UTEXTURE2DMS */
- YYSYMBOL_TEXTURE2DMSARRAY = 297, /* TEXTURE2DMSARRAY */
- YYSYMBOL_ITEXTURE2DMSARRAY = 298, /* ITEXTURE2DMSARRAY */
- YYSYMBOL_UTEXTURE2DMSARRAY = 299, /* UTEXTURE2DMSARRAY */
- YYSYMBOL_F16TEXTURE1D = 300, /* F16TEXTURE1D */
- YYSYMBOL_F16TEXTURE2D = 301, /* F16TEXTURE2D */
- YYSYMBOL_F16TEXTURE3D = 302, /* F16TEXTURE3D */
- YYSYMBOL_F16TEXTURE2DRECT = 303, /* F16TEXTURE2DRECT */
- YYSYMBOL_F16TEXTURECUBE = 304, /* F16TEXTURECUBE */
- YYSYMBOL_F16TEXTURE1DARRAY = 305, /* F16TEXTURE1DARRAY */
- YYSYMBOL_F16TEXTURE2DARRAY = 306, /* F16TEXTURE2DARRAY */
- YYSYMBOL_F16TEXTURECUBEARRAY = 307, /* F16TEXTURECUBEARRAY */
- YYSYMBOL_F16TEXTUREBUFFER = 308, /* F16TEXTUREBUFFER */
- YYSYMBOL_F16TEXTURE2DMS = 309, /* F16TEXTURE2DMS */
- YYSYMBOL_F16TEXTURE2DMSARRAY = 310, /* F16TEXTURE2DMSARRAY */
- YYSYMBOL_SUBPASSINPUT = 311, /* SUBPASSINPUT */
- YYSYMBOL_SUBPASSINPUTMS = 312, /* SUBPASSINPUTMS */
- YYSYMBOL_ISUBPASSINPUT = 313, /* ISUBPASSINPUT */
- YYSYMBOL_ISUBPASSINPUTMS = 314, /* ISUBPASSINPUTMS */
- YYSYMBOL_USUBPASSINPUT = 315, /* USUBPASSINPUT */
- YYSYMBOL_USUBPASSINPUTMS = 316, /* USUBPASSINPUTMS */
- YYSYMBOL_F16SUBPASSINPUT = 317, /* F16SUBPASSINPUT */
- YYSYMBOL_F16SUBPASSINPUTMS = 318, /* F16SUBPASSINPUTMS */
- YYSYMBOL_SPIRV_INSTRUCTION = 319, /* SPIRV_INSTRUCTION */
- YYSYMBOL_SPIRV_EXECUTION_MODE = 320, /* SPIRV_EXECUTION_MODE */
- YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 321, /* SPIRV_EXECUTION_MODE_ID */
- YYSYMBOL_SPIRV_DECORATE = 322, /* SPIRV_DECORATE */
- YYSYMBOL_SPIRV_DECORATE_ID = 323, /* SPIRV_DECORATE_ID */
- YYSYMBOL_SPIRV_DECORATE_STRING = 324, /* SPIRV_DECORATE_STRING */
- YYSYMBOL_SPIRV_TYPE = 325, /* SPIRV_TYPE */
- YYSYMBOL_SPIRV_STORAGE_CLASS = 326, /* SPIRV_STORAGE_CLASS */
- YYSYMBOL_SPIRV_BY_REFERENCE = 327, /* SPIRV_BY_REFERENCE */
- YYSYMBOL_SPIRV_LITERAL = 328, /* SPIRV_LITERAL */
- YYSYMBOL_ATTACHMENTEXT = 329, /* ATTACHMENTEXT */
- YYSYMBOL_IATTACHMENTEXT = 330, /* IATTACHMENTEXT */
- YYSYMBOL_UATTACHMENTEXT = 331, /* UATTACHMENTEXT */
- YYSYMBOL_LEFT_OP = 332, /* LEFT_OP */
- YYSYMBOL_RIGHT_OP = 333, /* RIGHT_OP */
- YYSYMBOL_INC_OP = 334, /* INC_OP */
- YYSYMBOL_DEC_OP = 335, /* DEC_OP */
- YYSYMBOL_LE_OP = 336, /* LE_OP */
- YYSYMBOL_GE_OP = 337, /* GE_OP */
- YYSYMBOL_EQ_OP = 338, /* EQ_OP */
- YYSYMBOL_NE_OP = 339, /* NE_OP */
- YYSYMBOL_AND_OP = 340, /* AND_OP */
- YYSYMBOL_OR_OP = 341, /* OR_OP */
- YYSYMBOL_XOR_OP = 342, /* XOR_OP */
- YYSYMBOL_MUL_ASSIGN = 343, /* MUL_ASSIGN */
- YYSYMBOL_DIV_ASSIGN = 344, /* DIV_ASSIGN */
- YYSYMBOL_ADD_ASSIGN = 345, /* ADD_ASSIGN */
- YYSYMBOL_MOD_ASSIGN = 346, /* MOD_ASSIGN */
- YYSYMBOL_LEFT_ASSIGN = 347, /* LEFT_ASSIGN */
- YYSYMBOL_RIGHT_ASSIGN = 348, /* RIGHT_ASSIGN */
- YYSYMBOL_AND_ASSIGN = 349, /* AND_ASSIGN */
- YYSYMBOL_XOR_ASSIGN = 350, /* XOR_ASSIGN */
- YYSYMBOL_OR_ASSIGN = 351, /* OR_ASSIGN */
- YYSYMBOL_SUB_ASSIGN = 352, /* SUB_ASSIGN */
- YYSYMBOL_STRING_LITERAL = 353, /* STRING_LITERAL */
- YYSYMBOL_LEFT_PAREN = 354, /* LEFT_PAREN */
- YYSYMBOL_RIGHT_PAREN = 355, /* RIGHT_PAREN */
- YYSYMBOL_LEFT_BRACKET = 356, /* LEFT_BRACKET */
- YYSYMBOL_RIGHT_BRACKET = 357, /* RIGHT_BRACKET */
- YYSYMBOL_LEFT_BRACE = 358, /* LEFT_BRACE */
- YYSYMBOL_RIGHT_BRACE = 359, /* RIGHT_BRACE */
- YYSYMBOL_DOT = 360, /* DOT */
- YYSYMBOL_COMMA = 361, /* COMMA */
- YYSYMBOL_COLON = 362, /* COLON */
- YYSYMBOL_EQUAL = 363, /* EQUAL */
- YYSYMBOL_SEMICOLON = 364, /* SEMICOLON */
- YYSYMBOL_BANG = 365, /* BANG */
- YYSYMBOL_DASH = 366, /* DASH */
- YYSYMBOL_TILDE = 367, /* TILDE */
- YYSYMBOL_PLUS = 368, /* PLUS */
- YYSYMBOL_STAR = 369, /* STAR */
- YYSYMBOL_SLASH = 370, /* SLASH */
- YYSYMBOL_PERCENT = 371, /* PERCENT */
- YYSYMBOL_LEFT_ANGLE = 372, /* LEFT_ANGLE */
- YYSYMBOL_RIGHT_ANGLE = 373, /* RIGHT_ANGLE */
- YYSYMBOL_VERTICAL_BAR = 374, /* VERTICAL_BAR */
- YYSYMBOL_CARET = 375, /* CARET */
- YYSYMBOL_AMPERSAND = 376, /* AMPERSAND */
- YYSYMBOL_QUESTION = 377, /* QUESTION */
- YYSYMBOL_INVARIANT = 378, /* INVARIANT */
- YYSYMBOL_HIGH_PRECISION = 379, /* HIGH_PRECISION */
- YYSYMBOL_MEDIUM_PRECISION = 380, /* MEDIUM_PRECISION */
- YYSYMBOL_LOW_PRECISION = 381, /* LOW_PRECISION */
- YYSYMBOL_PRECISION = 382, /* PRECISION */
- YYSYMBOL_PACKED = 383, /* PACKED */
- YYSYMBOL_RESOURCE = 384, /* RESOURCE */
- YYSYMBOL_SUPERP = 385, /* SUPERP */
- YYSYMBOL_FLOATCONSTANT = 386, /* FLOATCONSTANT */
- YYSYMBOL_INTCONSTANT = 387, /* INTCONSTANT */
- YYSYMBOL_UINTCONSTANT = 388, /* UINTCONSTANT */
- YYSYMBOL_BOOLCONSTANT = 389, /* BOOLCONSTANT */
- YYSYMBOL_IDENTIFIER = 390, /* IDENTIFIER */
- YYSYMBOL_TYPE_NAME = 391, /* TYPE_NAME */
- YYSYMBOL_CENTROID = 392, /* CENTROID */
- YYSYMBOL_IN = 393, /* IN */
- YYSYMBOL_OUT = 394, /* OUT */
- YYSYMBOL_INOUT = 395, /* INOUT */
- YYSYMBOL_STRUCT = 396, /* STRUCT */
- YYSYMBOL_VOID = 397, /* VOID */
- YYSYMBOL_WHILE = 398, /* WHILE */
- YYSYMBOL_BREAK = 399, /* BREAK */
- YYSYMBOL_CONTINUE = 400, /* CONTINUE */
- YYSYMBOL_DO = 401, /* DO */
- YYSYMBOL_ELSE = 402, /* ELSE */
- YYSYMBOL_FOR = 403, /* FOR */
- YYSYMBOL_IF = 404, /* IF */
- YYSYMBOL_DISCARD = 405, /* DISCARD */
- YYSYMBOL_RETURN = 406, /* RETURN */
- YYSYMBOL_SWITCH = 407, /* SWITCH */
- YYSYMBOL_CASE = 408, /* CASE */
- YYSYMBOL_DEFAULT = 409, /* DEFAULT */
- YYSYMBOL_TERMINATE_INVOCATION = 410, /* TERMINATE_INVOCATION */
- YYSYMBOL_TERMINATE_RAY = 411, /* TERMINATE_RAY */
- YYSYMBOL_IGNORE_INTERSECTION = 412, /* IGNORE_INTERSECTION */
- YYSYMBOL_UNIFORM = 413, /* UNIFORM */
- YYSYMBOL_SHARED = 414, /* SHARED */
- YYSYMBOL_BUFFER = 415, /* BUFFER */
- YYSYMBOL_TILEIMAGEEXT = 416, /* TILEIMAGEEXT */
- YYSYMBOL_FLAT = 417, /* FLAT */
- YYSYMBOL_SMOOTH = 418, /* SMOOTH */
- YYSYMBOL_LAYOUT = 419, /* LAYOUT */
- YYSYMBOL_DOUBLECONSTANT = 420, /* DOUBLECONSTANT */
- YYSYMBOL_INT16CONSTANT = 421, /* INT16CONSTANT */
- YYSYMBOL_UINT16CONSTANT = 422, /* UINT16CONSTANT */
- YYSYMBOL_FLOAT16CONSTANT = 423, /* FLOAT16CONSTANT */
- YYSYMBOL_INT32CONSTANT = 424, /* INT32CONSTANT */
- YYSYMBOL_UINT32CONSTANT = 425, /* UINT32CONSTANT */
- YYSYMBOL_INT64CONSTANT = 426, /* INT64CONSTANT */
- YYSYMBOL_UINT64CONSTANT = 427, /* UINT64CONSTANT */
- YYSYMBOL_SUBROUTINE = 428, /* SUBROUTINE */
- YYSYMBOL_DEMOTE = 429, /* DEMOTE */
- YYSYMBOL_PAYLOADNV = 430, /* PAYLOADNV */
- YYSYMBOL_PAYLOADINNV = 431, /* PAYLOADINNV */
- YYSYMBOL_HITATTRNV = 432, /* HITATTRNV */
- YYSYMBOL_CALLDATANV = 433, /* CALLDATANV */
- YYSYMBOL_CALLDATAINNV = 434, /* CALLDATAINNV */
- YYSYMBOL_PAYLOADEXT = 435, /* PAYLOADEXT */
- YYSYMBOL_PAYLOADINEXT = 436, /* PAYLOADINEXT */
- YYSYMBOL_HITATTREXT = 437, /* HITATTREXT */
- YYSYMBOL_CALLDATAEXT = 438, /* CALLDATAEXT */
- YYSYMBOL_CALLDATAINEXT = 439, /* CALLDATAINEXT */
- YYSYMBOL_PATCH = 440, /* PATCH */
- YYSYMBOL_SAMPLE = 441, /* SAMPLE */
- YYSYMBOL_NONUNIFORM = 442, /* NONUNIFORM */
- YYSYMBOL_COHERENT = 443, /* COHERENT */
- YYSYMBOL_VOLATILE = 444, /* VOLATILE */
- YYSYMBOL_RESTRICT = 445, /* RESTRICT */
- YYSYMBOL_READONLY = 446, /* READONLY */
- YYSYMBOL_WRITEONLY = 447, /* WRITEONLY */
- YYSYMBOL_DEVICECOHERENT = 448, /* DEVICECOHERENT */
- YYSYMBOL_QUEUEFAMILYCOHERENT = 449, /* QUEUEFAMILYCOHERENT */
- YYSYMBOL_WORKGROUPCOHERENT = 450, /* WORKGROUPCOHERENT */
- YYSYMBOL_SUBGROUPCOHERENT = 451, /* SUBGROUPCOHERENT */
- YYSYMBOL_NONPRIVATE = 452, /* NONPRIVATE */
- YYSYMBOL_SHADERCALLCOHERENT = 453, /* SHADERCALLCOHERENT */
- YYSYMBOL_NOPERSPECTIVE = 454, /* NOPERSPECTIVE */
- YYSYMBOL_EXPLICITINTERPAMD = 455, /* EXPLICITINTERPAMD */
- YYSYMBOL_PERVERTEXEXT = 456, /* PERVERTEXEXT */
- YYSYMBOL_PERVERTEXNV = 457, /* PERVERTEXNV */
- YYSYMBOL_PERPRIMITIVENV = 458, /* PERPRIMITIVENV */
- YYSYMBOL_PERVIEWNV = 459, /* PERVIEWNV */
- YYSYMBOL_PERTASKNV = 460, /* PERTASKNV */
- YYSYMBOL_PERPRIMITIVEEXT = 461, /* PERPRIMITIVEEXT */
- YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 462, /* TASKPAYLOADWORKGROUPEXT */
- YYSYMBOL_PRECISE = 463, /* PRECISE */
- YYSYMBOL_YYACCEPT = 464, /* $accept */
- YYSYMBOL_variable_identifier = 465, /* variable_identifier */
- YYSYMBOL_primary_expression = 466, /* primary_expression */
- YYSYMBOL_postfix_expression = 467, /* postfix_expression */
- YYSYMBOL_integer_expression = 468, /* integer_expression */
- YYSYMBOL_function_call = 469, /* function_call */
- YYSYMBOL_function_call_or_method = 470, /* function_call_or_method */
- YYSYMBOL_function_call_generic = 471, /* function_call_generic */
- YYSYMBOL_function_call_header_no_parameters = 472, /* function_call_header_no_parameters */
- YYSYMBOL_function_call_header_with_parameters = 473, /* function_call_header_with_parameters */
- YYSYMBOL_function_call_header = 474, /* function_call_header */
- YYSYMBOL_function_identifier = 475, /* function_identifier */
- YYSYMBOL_unary_expression = 476, /* unary_expression */
- YYSYMBOL_unary_operator = 477, /* unary_operator */
- YYSYMBOL_multiplicative_expression = 478, /* multiplicative_expression */
- YYSYMBOL_additive_expression = 479, /* additive_expression */
- YYSYMBOL_shift_expression = 480, /* shift_expression */
- YYSYMBOL_relational_expression = 481, /* relational_expression */
- YYSYMBOL_equality_expression = 482, /* equality_expression */
- YYSYMBOL_and_expression = 483, /* and_expression */
- YYSYMBOL_exclusive_or_expression = 484, /* exclusive_or_expression */
- YYSYMBOL_inclusive_or_expression = 485, /* inclusive_or_expression */
- YYSYMBOL_logical_and_expression = 486, /* logical_and_expression */
- YYSYMBOL_logical_xor_expression = 487, /* logical_xor_expression */
- YYSYMBOL_logical_or_expression = 488, /* logical_or_expression */
- YYSYMBOL_conditional_expression = 489, /* conditional_expression */
- YYSYMBOL_490_1 = 490, /* $@1 */
- YYSYMBOL_assignment_expression = 491, /* assignment_expression */
- YYSYMBOL_assignment_operator = 492, /* assignment_operator */
- YYSYMBOL_expression = 493, /* expression */
- YYSYMBOL_constant_expression = 494, /* constant_expression */
- YYSYMBOL_declaration = 495, /* declaration */
- YYSYMBOL_block_structure = 496, /* block_structure */
- YYSYMBOL_497_2 = 497, /* $@2 */
- YYSYMBOL_identifier_list = 498, /* identifier_list */
- YYSYMBOL_function_prototype = 499, /* function_prototype */
- YYSYMBOL_function_declarator = 500, /* function_declarator */
- YYSYMBOL_function_header_with_parameters = 501, /* function_header_with_parameters */
- YYSYMBOL_function_header = 502, /* function_header */
- YYSYMBOL_parameter_declarator = 503, /* parameter_declarator */
- YYSYMBOL_parameter_declaration = 504, /* parameter_declaration */
- YYSYMBOL_parameter_type_specifier = 505, /* parameter_type_specifier */
- YYSYMBOL_init_declarator_list = 506, /* init_declarator_list */
- YYSYMBOL_single_declaration = 507, /* single_declaration */
- YYSYMBOL_fully_specified_type = 508, /* fully_specified_type */
- YYSYMBOL_invariant_qualifier = 509, /* invariant_qualifier */
- YYSYMBOL_interpolation_qualifier = 510, /* interpolation_qualifier */
- YYSYMBOL_layout_qualifier = 511, /* layout_qualifier */
- YYSYMBOL_layout_qualifier_id_list = 512, /* layout_qualifier_id_list */
- YYSYMBOL_layout_qualifier_id = 513, /* layout_qualifier_id */
- YYSYMBOL_precise_qualifier = 514, /* precise_qualifier */
- YYSYMBOL_type_qualifier = 515, /* type_qualifier */
- YYSYMBOL_single_type_qualifier = 516, /* single_type_qualifier */
- YYSYMBOL_storage_qualifier = 517, /* storage_qualifier */
- YYSYMBOL_non_uniform_qualifier = 518, /* non_uniform_qualifier */
- YYSYMBOL_type_name_list = 519, /* type_name_list */
- YYSYMBOL_type_specifier = 520, /* type_specifier */
- YYSYMBOL_array_specifier = 521, /* array_specifier */
- YYSYMBOL_type_parameter_specifier_opt = 522, /* type_parameter_specifier_opt */
- YYSYMBOL_type_parameter_specifier = 523, /* type_parameter_specifier */
- YYSYMBOL_type_parameter_specifier_list = 524, /* type_parameter_specifier_list */
- YYSYMBOL_type_specifier_nonarray = 525, /* type_specifier_nonarray */
- YYSYMBOL_precision_qualifier = 526, /* precision_qualifier */
- YYSYMBOL_struct_specifier = 527, /* struct_specifier */
- YYSYMBOL_528_3 = 528, /* $@3 */
- YYSYMBOL_529_4 = 529, /* $@4 */
- YYSYMBOL_struct_declaration_list = 530, /* struct_declaration_list */
- YYSYMBOL_struct_declaration = 531, /* struct_declaration */
- YYSYMBOL_struct_declarator_list = 532, /* struct_declarator_list */
- YYSYMBOL_struct_declarator = 533, /* struct_declarator */
- YYSYMBOL_initializer = 534, /* initializer */
- YYSYMBOL_initializer_list = 535, /* initializer_list */
- YYSYMBOL_declaration_statement = 536, /* declaration_statement */
- YYSYMBOL_statement = 537, /* statement */
- YYSYMBOL_simple_statement = 538, /* simple_statement */
- YYSYMBOL_demote_statement = 539, /* demote_statement */
- YYSYMBOL_compound_statement = 540, /* compound_statement */
- YYSYMBOL_541_5 = 541, /* $@5 */
- YYSYMBOL_542_6 = 542, /* $@6 */
- YYSYMBOL_statement_no_new_scope = 543, /* statement_no_new_scope */
- YYSYMBOL_statement_scoped = 544, /* statement_scoped */
- YYSYMBOL_545_7 = 545, /* $@7 */
- YYSYMBOL_546_8 = 546, /* $@8 */
- YYSYMBOL_compound_statement_no_new_scope = 547, /* compound_statement_no_new_scope */
- YYSYMBOL_statement_list = 548, /* statement_list */
- YYSYMBOL_expression_statement = 549, /* expression_statement */
- YYSYMBOL_selection_statement = 550, /* selection_statement */
- YYSYMBOL_selection_statement_nonattributed = 551, /* selection_statement_nonattributed */
- YYSYMBOL_selection_rest_statement = 552, /* selection_rest_statement */
- YYSYMBOL_condition = 553, /* condition */
- YYSYMBOL_switch_statement = 554, /* switch_statement */
- YYSYMBOL_switch_statement_nonattributed = 555, /* switch_statement_nonattributed */
- YYSYMBOL_556_9 = 556, /* $@9 */
- YYSYMBOL_switch_statement_list = 557, /* switch_statement_list */
- YYSYMBOL_case_label = 558, /* case_label */
- YYSYMBOL_iteration_statement = 559, /* iteration_statement */
- YYSYMBOL_iteration_statement_nonattributed = 560, /* iteration_statement_nonattributed */
- YYSYMBOL_561_10 = 561, /* $@10 */
- YYSYMBOL_562_11 = 562, /* $@11 */
- YYSYMBOL_563_12 = 563, /* $@12 */
- YYSYMBOL_for_init_statement = 564, /* for_init_statement */
- YYSYMBOL_conditionopt = 565, /* conditionopt */
- YYSYMBOL_for_rest_statement = 566, /* for_rest_statement */
- YYSYMBOL_jump_statement = 567, /* jump_statement */
- YYSYMBOL_translation_unit = 568, /* translation_unit */
- YYSYMBOL_external_declaration = 569, /* external_declaration */
- YYSYMBOL_function_definition = 570, /* function_definition */
- YYSYMBOL_571_13 = 571, /* $@13 */
- YYSYMBOL_attribute = 572, /* attribute */
- YYSYMBOL_attribute_list = 573, /* attribute_list */
- YYSYMBOL_single_attribute = 574, /* single_attribute */
- YYSYMBOL_spirv_requirements_list = 575, /* spirv_requirements_list */
- YYSYMBOL_spirv_requirements_parameter = 576, /* spirv_requirements_parameter */
- YYSYMBOL_spirv_extension_list = 577, /* spirv_extension_list */
- YYSYMBOL_spirv_capability_list = 578, /* spirv_capability_list */
- YYSYMBOL_spirv_execution_mode_qualifier = 579, /* spirv_execution_mode_qualifier */
- YYSYMBOL_spirv_execution_mode_parameter_list = 580, /* spirv_execution_mode_parameter_list */
- YYSYMBOL_spirv_execution_mode_parameter = 581, /* spirv_execution_mode_parameter */
- YYSYMBOL_spirv_execution_mode_id_parameter_list = 582, /* spirv_execution_mode_id_parameter_list */
- YYSYMBOL_spirv_storage_class_qualifier = 583, /* spirv_storage_class_qualifier */
- YYSYMBOL_spirv_decorate_qualifier = 584, /* spirv_decorate_qualifier */
- YYSYMBOL_spirv_decorate_parameter_list = 585, /* spirv_decorate_parameter_list */
- YYSYMBOL_spirv_decorate_parameter = 586, /* spirv_decorate_parameter */
- YYSYMBOL_spirv_decorate_id_parameter_list = 587, /* spirv_decorate_id_parameter_list */
- YYSYMBOL_spirv_decorate_id_parameter = 588, /* spirv_decorate_id_parameter */
- YYSYMBOL_spirv_decorate_string_parameter_list = 589, /* spirv_decorate_string_parameter_list */
- YYSYMBOL_spirv_type_specifier = 590, /* spirv_type_specifier */
- YYSYMBOL_spirv_type_parameter_list = 591, /* spirv_type_parameter_list */
- YYSYMBOL_spirv_type_parameter = 592, /* spirv_type_parameter */
- YYSYMBOL_spirv_instruction_qualifier = 593, /* spirv_instruction_qualifier */
- YYSYMBOL_spirv_instruction_qualifier_list = 594, /* spirv_instruction_qualifier_list */
- YYSYMBOL_spirv_instruction_qualifier_id = 595 /* spirv_instruction_qualifier_id */
+ YYSYMBOL_COOPMAT = 166, /* COOPMAT */
+ YYSYMBOL_HITOBJECTNV = 167, /* HITOBJECTNV */
+ YYSYMBOL_HITOBJECTATTRNV = 168, /* HITOBJECTATTRNV */
+ YYSYMBOL_SAMPLERCUBEARRAY = 169, /* SAMPLERCUBEARRAY */
+ YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 170, /* SAMPLERCUBEARRAYSHADOW */
+ YYSYMBOL_ISAMPLERCUBEARRAY = 171, /* ISAMPLERCUBEARRAY */
+ YYSYMBOL_USAMPLERCUBEARRAY = 172, /* USAMPLERCUBEARRAY */
+ YYSYMBOL_SAMPLER1D = 173, /* SAMPLER1D */
+ YYSYMBOL_SAMPLER1DARRAY = 174, /* SAMPLER1DARRAY */
+ YYSYMBOL_SAMPLER1DARRAYSHADOW = 175, /* SAMPLER1DARRAYSHADOW */
+ YYSYMBOL_ISAMPLER1D = 176, /* ISAMPLER1D */
+ YYSYMBOL_SAMPLER1DSHADOW = 177, /* SAMPLER1DSHADOW */
+ YYSYMBOL_SAMPLER2DRECT = 178, /* SAMPLER2DRECT */
+ YYSYMBOL_SAMPLER2DRECTSHADOW = 179, /* SAMPLER2DRECTSHADOW */
+ YYSYMBOL_ISAMPLER2DRECT = 180, /* ISAMPLER2DRECT */
+ YYSYMBOL_USAMPLER2DRECT = 181, /* USAMPLER2DRECT */
+ YYSYMBOL_SAMPLERBUFFER = 182, /* SAMPLERBUFFER */
+ YYSYMBOL_ISAMPLERBUFFER = 183, /* ISAMPLERBUFFER */
+ YYSYMBOL_USAMPLERBUFFER = 184, /* USAMPLERBUFFER */
+ YYSYMBOL_SAMPLER2DMS = 185, /* SAMPLER2DMS */
+ YYSYMBOL_ISAMPLER2DMS = 186, /* ISAMPLER2DMS */
+ YYSYMBOL_USAMPLER2DMS = 187, /* USAMPLER2DMS */
+ YYSYMBOL_SAMPLER2DMSARRAY = 188, /* SAMPLER2DMSARRAY */
+ YYSYMBOL_ISAMPLER2DMSARRAY = 189, /* ISAMPLER2DMSARRAY */
+ YYSYMBOL_USAMPLER2DMSARRAY = 190, /* USAMPLER2DMSARRAY */
+ YYSYMBOL_SAMPLEREXTERNALOES = 191, /* SAMPLEREXTERNALOES */
+ YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 192, /* SAMPLEREXTERNAL2DY2YEXT */
+ YYSYMBOL_ISAMPLER1DARRAY = 193, /* ISAMPLER1DARRAY */
+ YYSYMBOL_USAMPLER1D = 194, /* USAMPLER1D */
+ YYSYMBOL_USAMPLER1DARRAY = 195, /* USAMPLER1DARRAY */
+ YYSYMBOL_F16SAMPLER1D = 196, /* F16SAMPLER1D */
+ YYSYMBOL_F16SAMPLER2D = 197, /* F16SAMPLER2D */
+ YYSYMBOL_F16SAMPLER3D = 198, /* F16SAMPLER3D */
+ YYSYMBOL_F16SAMPLER2DRECT = 199, /* F16SAMPLER2DRECT */
+ YYSYMBOL_F16SAMPLERCUBE = 200, /* F16SAMPLERCUBE */
+ YYSYMBOL_F16SAMPLER1DARRAY = 201, /* F16SAMPLER1DARRAY */
+ YYSYMBOL_F16SAMPLER2DARRAY = 202, /* F16SAMPLER2DARRAY */
+ YYSYMBOL_F16SAMPLERCUBEARRAY = 203, /* F16SAMPLERCUBEARRAY */
+ YYSYMBOL_F16SAMPLERBUFFER = 204, /* F16SAMPLERBUFFER */
+ YYSYMBOL_F16SAMPLER2DMS = 205, /* F16SAMPLER2DMS */
+ YYSYMBOL_F16SAMPLER2DMSARRAY = 206, /* F16SAMPLER2DMSARRAY */
+ YYSYMBOL_F16SAMPLER1DSHADOW = 207, /* F16SAMPLER1DSHADOW */
+ YYSYMBOL_F16SAMPLER2DSHADOW = 208, /* F16SAMPLER2DSHADOW */
+ YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 209, /* F16SAMPLER1DARRAYSHADOW */
+ YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 210, /* F16SAMPLER2DARRAYSHADOW */
+ YYSYMBOL_F16SAMPLER2DRECTSHADOW = 211, /* F16SAMPLER2DRECTSHADOW */
+ YYSYMBOL_F16SAMPLERCUBESHADOW = 212, /* F16SAMPLERCUBESHADOW */
+ YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 213, /* F16SAMPLERCUBEARRAYSHADOW */
+ YYSYMBOL_IMAGE1D = 214, /* IMAGE1D */
+ YYSYMBOL_IIMAGE1D = 215, /* IIMAGE1D */
+ YYSYMBOL_UIMAGE1D = 216, /* UIMAGE1D */
+ YYSYMBOL_IMAGE2D = 217, /* IMAGE2D */
+ YYSYMBOL_IIMAGE2D = 218, /* IIMAGE2D */
+ YYSYMBOL_UIMAGE2D = 219, /* UIMAGE2D */
+ YYSYMBOL_IMAGE3D = 220, /* IMAGE3D */
+ YYSYMBOL_IIMAGE3D = 221, /* IIMAGE3D */
+ YYSYMBOL_UIMAGE3D = 222, /* UIMAGE3D */
+ YYSYMBOL_IMAGE2DRECT = 223, /* IMAGE2DRECT */
+ YYSYMBOL_IIMAGE2DRECT = 224, /* IIMAGE2DRECT */
+ YYSYMBOL_UIMAGE2DRECT = 225, /* UIMAGE2DRECT */
+ YYSYMBOL_IMAGECUBE = 226, /* IMAGECUBE */
+ YYSYMBOL_IIMAGECUBE = 227, /* IIMAGECUBE */
+ YYSYMBOL_UIMAGECUBE = 228, /* UIMAGECUBE */
+ YYSYMBOL_IMAGEBUFFER = 229, /* IMAGEBUFFER */
+ YYSYMBOL_IIMAGEBUFFER = 230, /* IIMAGEBUFFER */
+ YYSYMBOL_UIMAGEBUFFER = 231, /* UIMAGEBUFFER */
+ YYSYMBOL_IMAGE1DARRAY = 232, /* IMAGE1DARRAY */
+ YYSYMBOL_IIMAGE1DARRAY = 233, /* IIMAGE1DARRAY */
+ YYSYMBOL_UIMAGE1DARRAY = 234, /* UIMAGE1DARRAY */
+ YYSYMBOL_IMAGE2DARRAY = 235, /* IMAGE2DARRAY */
+ YYSYMBOL_IIMAGE2DARRAY = 236, /* IIMAGE2DARRAY */
+ YYSYMBOL_UIMAGE2DARRAY = 237, /* UIMAGE2DARRAY */
+ YYSYMBOL_IMAGECUBEARRAY = 238, /* IMAGECUBEARRAY */
+ YYSYMBOL_IIMAGECUBEARRAY = 239, /* IIMAGECUBEARRAY */
+ YYSYMBOL_UIMAGECUBEARRAY = 240, /* UIMAGECUBEARRAY */
+ YYSYMBOL_IMAGE2DMS = 241, /* IMAGE2DMS */
+ YYSYMBOL_IIMAGE2DMS = 242, /* IIMAGE2DMS */
+ YYSYMBOL_UIMAGE2DMS = 243, /* UIMAGE2DMS */
+ YYSYMBOL_IMAGE2DMSARRAY = 244, /* IMAGE2DMSARRAY */
+ YYSYMBOL_IIMAGE2DMSARRAY = 245, /* IIMAGE2DMSARRAY */
+ YYSYMBOL_UIMAGE2DMSARRAY = 246, /* UIMAGE2DMSARRAY */
+ YYSYMBOL_F16IMAGE1D = 247, /* F16IMAGE1D */
+ YYSYMBOL_F16IMAGE2D = 248, /* F16IMAGE2D */
+ YYSYMBOL_F16IMAGE3D = 249, /* F16IMAGE3D */
+ YYSYMBOL_F16IMAGE2DRECT = 250, /* F16IMAGE2DRECT */
+ YYSYMBOL_F16IMAGECUBE = 251, /* F16IMAGECUBE */
+ YYSYMBOL_F16IMAGE1DARRAY = 252, /* F16IMAGE1DARRAY */
+ YYSYMBOL_F16IMAGE2DARRAY = 253, /* F16IMAGE2DARRAY */
+ YYSYMBOL_F16IMAGECUBEARRAY = 254, /* F16IMAGECUBEARRAY */
+ YYSYMBOL_F16IMAGEBUFFER = 255, /* F16IMAGEBUFFER */
+ YYSYMBOL_F16IMAGE2DMS = 256, /* F16IMAGE2DMS */
+ YYSYMBOL_F16IMAGE2DMSARRAY = 257, /* F16IMAGE2DMSARRAY */
+ YYSYMBOL_I64IMAGE1D = 258, /* I64IMAGE1D */
+ YYSYMBOL_U64IMAGE1D = 259, /* U64IMAGE1D */
+ YYSYMBOL_I64IMAGE2D = 260, /* I64IMAGE2D */
+ YYSYMBOL_U64IMAGE2D = 261, /* U64IMAGE2D */
+ YYSYMBOL_I64IMAGE3D = 262, /* I64IMAGE3D */
+ YYSYMBOL_U64IMAGE3D = 263, /* U64IMAGE3D */
+ YYSYMBOL_I64IMAGE2DRECT = 264, /* I64IMAGE2DRECT */
+ YYSYMBOL_U64IMAGE2DRECT = 265, /* U64IMAGE2DRECT */
+ YYSYMBOL_I64IMAGECUBE = 266, /* I64IMAGECUBE */
+ YYSYMBOL_U64IMAGECUBE = 267, /* U64IMAGECUBE */
+ YYSYMBOL_I64IMAGEBUFFER = 268, /* I64IMAGEBUFFER */
+ YYSYMBOL_U64IMAGEBUFFER = 269, /* U64IMAGEBUFFER */
+ YYSYMBOL_I64IMAGE1DARRAY = 270, /* I64IMAGE1DARRAY */
+ YYSYMBOL_U64IMAGE1DARRAY = 271, /* U64IMAGE1DARRAY */
+ YYSYMBOL_I64IMAGE2DARRAY = 272, /* I64IMAGE2DARRAY */
+ YYSYMBOL_U64IMAGE2DARRAY = 273, /* U64IMAGE2DARRAY */
+ YYSYMBOL_I64IMAGECUBEARRAY = 274, /* I64IMAGECUBEARRAY */
+ YYSYMBOL_U64IMAGECUBEARRAY = 275, /* U64IMAGECUBEARRAY */
+ YYSYMBOL_I64IMAGE2DMS = 276, /* I64IMAGE2DMS */
+ YYSYMBOL_U64IMAGE2DMS = 277, /* U64IMAGE2DMS */
+ YYSYMBOL_I64IMAGE2DMSARRAY = 278, /* I64IMAGE2DMSARRAY */
+ YYSYMBOL_U64IMAGE2DMSARRAY = 279, /* U64IMAGE2DMSARRAY */
+ YYSYMBOL_TEXTURECUBEARRAY = 280, /* TEXTURECUBEARRAY */
+ YYSYMBOL_ITEXTURECUBEARRAY = 281, /* ITEXTURECUBEARRAY */
+ YYSYMBOL_UTEXTURECUBEARRAY = 282, /* UTEXTURECUBEARRAY */
+ YYSYMBOL_TEXTURE1D = 283, /* TEXTURE1D */
+ YYSYMBOL_ITEXTURE1D = 284, /* ITEXTURE1D */
+ YYSYMBOL_UTEXTURE1D = 285, /* UTEXTURE1D */
+ YYSYMBOL_TEXTURE1DARRAY = 286, /* TEXTURE1DARRAY */
+ YYSYMBOL_ITEXTURE1DARRAY = 287, /* ITEXTURE1DARRAY */
+ YYSYMBOL_UTEXTURE1DARRAY = 288, /* UTEXTURE1DARRAY */
+ YYSYMBOL_TEXTURE2DRECT = 289, /* TEXTURE2DRECT */
+ YYSYMBOL_ITEXTURE2DRECT = 290, /* ITEXTURE2DRECT */
+ YYSYMBOL_UTEXTURE2DRECT = 291, /* UTEXTURE2DRECT */
+ YYSYMBOL_TEXTUREBUFFER = 292, /* TEXTUREBUFFER */
+ YYSYMBOL_ITEXTUREBUFFER = 293, /* ITEXTUREBUFFER */
+ YYSYMBOL_UTEXTUREBUFFER = 294, /* UTEXTUREBUFFER */
+ YYSYMBOL_TEXTURE2DMS = 295, /* TEXTURE2DMS */
+ YYSYMBOL_ITEXTURE2DMS = 296, /* ITEXTURE2DMS */
+ YYSYMBOL_UTEXTURE2DMS = 297, /* UTEXTURE2DMS */
+ YYSYMBOL_TEXTURE2DMSARRAY = 298, /* TEXTURE2DMSARRAY */
+ YYSYMBOL_ITEXTURE2DMSARRAY = 299, /* ITEXTURE2DMSARRAY */
+ YYSYMBOL_UTEXTURE2DMSARRAY = 300, /* UTEXTURE2DMSARRAY */
+ YYSYMBOL_F16TEXTURE1D = 301, /* F16TEXTURE1D */
+ YYSYMBOL_F16TEXTURE2D = 302, /* F16TEXTURE2D */
+ YYSYMBOL_F16TEXTURE3D = 303, /* F16TEXTURE3D */
+ YYSYMBOL_F16TEXTURE2DRECT = 304, /* F16TEXTURE2DRECT */
+ YYSYMBOL_F16TEXTURECUBE = 305, /* F16TEXTURECUBE */
+ YYSYMBOL_F16TEXTURE1DARRAY = 306, /* F16TEXTURE1DARRAY */
+ YYSYMBOL_F16TEXTURE2DARRAY = 307, /* F16TEXTURE2DARRAY */
+ YYSYMBOL_F16TEXTURECUBEARRAY = 308, /* F16TEXTURECUBEARRAY */
+ YYSYMBOL_F16TEXTUREBUFFER = 309, /* F16TEXTUREBUFFER */
+ YYSYMBOL_F16TEXTURE2DMS = 310, /* F16TEXTURE2DMS */
+ YYSYMBOL_F16TEXTURE2DMSARRAY = 311, /* F16TEXTURE2DMSARRAY */
+ YYSYMBOL_SUBPASSINPUT = 312, /* SUBPASSINPUT */
+ YYSYMBOL_SUBPASSINPUTMS = 313, /* SUBPASSINPUTMS */
+ YYSYMBOL_ISUBPASSINPUT = 314, /* ISUBPASSINPUT */
+ YYSYMBOL_ISUBPASSINPUTMS = 315, /* ISUBPASSINPUTMS */
+ YYSYMBOL_USUBPASSINPUT = 316, /* USUBPASSINPUT */
+ YYSYMBOL_USUBPASSINPUTMS = 317, /* USUBPASSINPUTMS */
+ YYSYMBOL_F16SUBPASSINPUT = 318, /* F16SUBPASSINPUT */
+ YYSYMBOL_F16SUBPASSINPUTMS = 319, /* F16SUBPASSINPUTMS */
+ YYSYMBOL_SPIRV_INSTRUCTION = 320, /* SPIRV_INSTRUCTION */
+ YYSYMBOL_SPIRV_EXECUTION_MODE = 321, /* SPIRV_EXECUTION_MODE */
+ YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 322, /* SPIRV_EXECUTION_MODE_ID */
+ YYSYMBOL_SPIRV_DECORATE = 323, /* SPIRV_DECORATE */
+ YYSYMBOL_SPIRV_DECORATE_ID = 324, /* SPIRV_DECORATE_ID */
+ YYSYMBOL_SPIRV_DECORATE_STRING = 325, /* SPIRV_DECORATE_STRING */
+ YYSYMBOL_SPIRV_TYPE = 326, /* SPIRV_TYPE */
+ YYSYMBOL_SPIRV_STORAGE_CLASS = 327, /* SPIRV_STORAGE_CLASS */
+ YYSYMBOL_SPIRV_BY_REFERENCE = 328, /* SPIRV_BY_REFERENCE */
+ YYSYMBOL_SPIRV_LITERAL = 329, /* SPIRV_LITERAL */
+ YYSYMBOL_ATTACHMENTEXT = 330, /* ATTACHMENTEXT */
+ YYSYMBOL_IATTACHMENTEXT = 331, /* IATTACHMENTEXT */
+ YYSYMBOL_UATTACHMENTEXT = 332, /* UATTACHMENTEXT */
+ YYSYMBOL_LEFT_OP = 333, /* LEFT_OP */
+ YYSYMBOL_RIGHT_OP = 334, /* RIGHT_OP */
+ YYSYMBOL_INC_OP = 335, /* INC_OP */
+ YYSYMBOL_DEC_OP = 336, /* DEC_OP */
+ YYSYMBOL_LE_OP = 337, /* LE_OP */
+ YYSYMBOL_GE_OP = 338, /* GE_OP */
+ YYSYMBOL_EQ_OP = 339, /* EQ_OP */
+ YYSYMBOL_NE_OP = 340, /* NE_OP */
+ YYSYMBOL_AND_OP = 341, /* AND_OP */
+ YYSYMBOL_OR_OP = 342, /* OR_OP */
+ YYSYMBOL_XOR_OP = 343, /* XOR_OP */
+ YYSYMBOL_MUL_ASSIGN = 344, /* MUL_ASSIGN */
+ YYSYMBOL_DIV_ASSIGN = 345, /* DIV_ASSIGN */
+ YYSYMBOL_ADD_ASSIGN = 346, /* ADD_ASSIGN */
+ YYSYMBOL_MOD_ASSIGN = 347, /* MOD_ASSIGN */
+ YYSYMBOL_LEFT_ASSIGN = 348, /* LEFT_ASSIGN */
+ YYSYMBOL_RIGHT_ASSIGN = 349, /* RIGHT_ASSIGN */
+ YYSYMBOL_AND_ASSIGN = 350, /* AND_ASSIGN */
+ YYSYMBOL_XOR_ASSIGN = 351, /* XOR_ASSIGN */
+ YYSYMBOL_OR_ASSIGN = 352, /* OR_ASSIGN */
+ YYSYMBOL_SUB_ASSIGN = 353, /* SUB_ASSIGN */
+ YYSYMBOL_STRING_LITERAL = 354, /* STRING_LITERAL */
+ YYSYMBOL_LEFT_PAREN = 355, /* LEFT_PAREN */
+ YYSYMBOL_RIGHT_PAREN = 356, /* RIGHT_PAREN */
+ YYSYMBOL_LEFT_BRACKET = 357, /* LEFT_BRACKET */
+ YYSYMBOL_RIGHT_BRACKET = 358, /* RIGHT_BRACKET */
+ YYSYMBOL_LEFT_BRACE = 359, /* LEFT_BRACE */
+ YYSYMBOL_RIGHT_BRACE = 360, /* RIGHT_BRACE */
+ YYSYMBOL_DOT = 361, /* DOT */
+ YYSYMBOL_COMMA = 362, /* COMMA */
+ YYSYMBOL_COLON = 363, /* COLON */
+ YYSYMBOL_EQUAL = 364, /* EQUAL */
+ YYSYMBOL_SEMICOLON = 365, /* SEMICOLON */
+ YYSYMBOL_BANG = 366, /* BANG */
+ YYSYMBOL_DASH = 367, /* DASH */
+ YYSYMBOL_TILDE = 368, /* TILDE */
+ YYSYMBOL_PLUS = 369, /* PLUS */
+ YYSYMBOL_STAR = 370, /* STAR */
+ YYSYMBOL_SLASH = 371, /* SLASH */
+ YYSYMBOL_PERCENT = 372, /* PERCENT */
+ YYSYMBOL_LEFT_ANGLE = 373, /* LEFT_ANGLE */
+ YYSYMBOL_RIGHT_ANGLE = 374, /* RIGHT_ANGLE */
+ YYSYMBOL_VERTICAL_BAR = 375, /* VERTICAL_BAR */
+ YYSYMBOL_CARET = 376, /* CARET */
+ YYSYMBOL_AMPERSAND = 377, /* AMPERSAND */
+ YYSYMBOL_QUESTION = 378, /* QUESTION */
+ YYSYMBOL_INVARIANT = 379, /* INVARIANT */
+ YYSYMBOL_HIGH_PRECISION = 380, /* HIGH_PRECISION */
+ YYSYMBOL_MEDIUM_PRECISION = 381, /* MEDIUM_PRECISION */
+ YYSYMBOL_LOW_PRECISION = 382, /* LOW_PRECISION */
+ YYSYMBOL_PRECISION = 383, /* PRECISION */
+ YYSYMBOL_PACKED = 384, /* PACKED */
+ YYSYMBOL_RESOURCE = 385, /* RESOURCE */
+ YYSYMBOL_SUPERP = 386, /* SUPERP */
+ YYSYMBOL_FLOATCONSTANT = 387, /* FLOATCONSTANT */
+ YYSYMBOL_INTCONSTANT = 388, /* INTCONSTANT */
+ YYSYMBOL_UINTCONSTANT = 389, /* UINTCONSTANT */
+ YYSYMBOL_BOOLCONSTANT = 390, /* BOOLCONSTANT */
+ YYSYMBOL_IDENTIFIER = 391, /* IDENTIFIER */
+ YYSYMBOL_TYPE_NAME = 392, /* TYPE_NAME */
+ YYSYMBOL_CENTROID = 393, /* CENTROID */
+ YYSYMBOL_IN = 394, /* IN */
+ YYSYMBOL_OUT = 395, /* OUT */
+ YYSYMBOL_INOUT = 396, /* INOUT */
+ YYSYMBOL_STRUCT = 397, /* STRUCT */
+ YYSYMBOL_VOID = 398, /* VOID */
+ YYSYMBOL_WHILE = 399, /* WHILE */
+ YYSYMBOL_BREAK = 400, /* BREAK */
+ YYSYMBOL_CONTINUE = 401, /* CONTINUE */
+ YYSYMBOL_DO = 402, /* DO */
+ YYSYMBOL_ELSE = 403, /* ELSE */
+ YYSYMBOL_FOR = 404, /* FOR */
+ YYSYMBOL_IF = 405, /* IF */
+ YYSYMBOL_DISCARD = 406, /* DISCARD */
+ YYSYMBOL_RETURN = 407, /* RETURN */
+ YYSYMBOL_SWITCH = 408, /* SWITCH */
+ YYSYMBOL_CASE = 409, /* CASE */
+ YYSYMBOL_DEFAULT = 410, /* DEFAULT */
+ YYSYMBOL_TERMINATE_INVOCATION = 411, /* TERMINATE_INVOCATION */
+ YYSYMBOL_TERMINATE_RAY = 412, /* TERMINATE_RAY */
+ YYSYMBOL_IGNORE_INTERSECTION = 413, /* IGNORE_INTERSECTION */
+ YYSYMBOL_UNIFORM = 414, /* UNIFORM */
+ YYSYMBOL_SHARED = 415, /* SHARED */
+ YYSYMBOL_BUFFER = 416, /* BUFFER */
+ YYSYMBOL_TILEIMAGEEXT = 417, /* TILEIMAGEEXT */
+ YYSYMBOL_FLAT = 418, /* FLAT */
+ YYSYMBOL_SMOOTH = 419, /* SMOOTH */
+ YYSYMBOL_LAYOUT = 420, /* LAYOUT */
+ YYSYMBOL_DOUBLECONSTANT = 421, /* DOUBLECONSTANT */
+ YYSYMBOL_INT16CONSTANT = 422, /* INT16CONSTANT */
+ YYSYMBOL_UINT16CONSTANT = 423, /* UINT16CONSTANT */
+ YYSYMBOL_FLOAT16CONSTANT = 424, /* FLOAT16CONSTANT */
+ YYSYMBOL_INT32CONSTANT = 425, /* INT32CONSTANT */
+ YYSYMBOL_UINT32CONSTANT = 426, /* UINT32CONSTANT */
+ YYSYMBOL_INT64CONSTANT = 427, /* INT64CONSTANT */
+ YYSYMBOL_UINT64CONSTANT = 428, /* UINT64CONSTANT */
+ YYSYMBOL_SUBROUTINE = 429, /* SUBROUTINE */
+ YYSYMBOL_DEMOTE = 430, /* DEMOTE */
+ YYSYMBOL_PAYLOADNV = 431, /* PAYLOADNV */
+ YYSYMBOL_PAYLOADINNV = 432, /* PAYLOADINNV */
+ YYSYMBOL_HITATTRNV = 433, /* HITATTRNV */
+ YYSYMBOL_CALLDATANV = 434, /* CALLDATANV */
+ YYSYMBOL_CALLDATAINNV = 435, /* CALLDATAINNV */
+ YYSYMBOL_PAYLOADEXT = 436, /* PAYLOADEXT */
+ YYSYMBOL_PAYLOADINEXT = 437, /* PAYLOADINEXT */
+ YYSYMBOL_HITATTREXT = 438, /* HITATTREXT */
+ YYSYMBOL_CALLDATAEXT = 439, /* CALLDATAEXT */
+ YYSYMBOL_CALLDATAINEXT = 440, /* CALLDATAINEXT */
+ YYSYMBOL_PATCH = 441, /* PATCH */
+ YYSYMBOL_SAMPLE = 442, /* SAMPLE */
+ YYSYMBOL_NONUNIFORM = 443, /* NONUNIFORM */
+ YYSYMBOL_COHERENT = 444, /* COHERENT */
+ YYSYMBOL_VOLATILE = 445, /* VOLATILE */
+ YYSYMBOL_RESTRICT = 446, /* RESTRICT */
+ YYSYMBOL_READONLY = 447, /* READONLY */
+ YYSYMBOL_WRITEONLY = 448, /* WRITEONLY */
+ YYSYMBOL_DEVICECOHERENT = 449, /* DEVICECOHERENT */
+ YYSYMBOL_QUEUEFAMILYCOHERENT = 450, /* QUEUEFAMILYCOHERENT */
+ YYSYMBOL_WORKGROUPCOHERENT = 451, /* WORKGROUPCOHERENT */
+ YYSYMBOL_SUBGROUPCOHERENT = 452, /* SUBGROUPCOHERENT */
+ YYSYMBOL_NONPRIVATE = 453, /* NONPRIVATE */
+ YYSYMBOL_SHADERCALLCOHERENT = 454, /* SHADERCALLCOHERENT */
+ YYSYMBOL_NOPERSPECTIVE = 455, /* NOPERSPECTIVE */
+ YYSYMBOL_EXPLICITINTERPAMD = 456, /* EXPLICITINTERPAMD */
+ YYSYMBOL_PERVERTEXEXT = 457, /* PERVERTEXEXT */
+ YYSYMBOL_PERVERTEXNV = 458, /* PERVERTEXNV */
+ YYSYMBOL_PERPRIMITIVENV = 459, /* PERPRIMITIVENV */
+ YYSYMBOL_PERVIEWNV = 460, /* PERVIEWNV */
+ YYSYMBOL_PERTASKNV = 461, /* PERTASKNV */
+ YYSYMBOL_PERPRIMITIVEEXT = 462, /* PERPRIMITIVEEXT */
+ YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 463, /* TASKPAYLOADWORKGROUPEXT */
+ YYSYMBOL_PRECISE = 464, /* PRECISE */
+ YYSYMBOL_YYACCEPT = 465, /* $accept */
+ YYSYMBOL_variable_identifier = 466, /* variable_identifier */
+ YYSYMBOL_primary_expression = 467, /* primary_expression */
+ YYSYMBOL_postfix_expression = 468, /* postfix_expression */
+ YYSYMBOL_integer_expression = 469, /* integer_expression */
+ YYSYMBOL_function_call = 470, /* function_call */
+ YYSYMBOL_function_call_or_method = 471, /* function_call_or_method */
+ YYSYMBOL_function_call_generic = 472, /* function_call_generic */
+ YYSYMBOL_function_call_header_no_parameters = 473, /* function_call_header_no_parameters */
+ YYSYMBOL_function_call_header_with_parameters = 474, /* function_call_header_with_parameters */
+ YYSYMBOL_function_call_header = 475, /* function_call_header */
+ YYSYMBOL_function_identifier = 476, /* function_identifier */
+ YYSYMBOL_unary_expression = 477, /* unary_expression */
+ YYSYMBOL_unary_operator = 478, /* unary_operator */
+ YYSYMBOL_multiplicative_expression = 479, /* multiplicative_expression */
+ YYSYMBOL_additive_expression = 480, /* additive_expression */
+ YYSYMBOL_shift_expression = 481, /* shift_expression */
+ YYSYMBOL_relational_expression = 482, /* relational_expression */
+ YYSYMBOL_equality_expression = 483, /* equality_expression */
+ YYSYMBOL_and_expression = 484, /* and_expression */
+ YYSYMBOL_exclusive_or_expression = 485, /* exclusive_or_expression */
+ YYSYMBOL_inclusive_or_expression = 486, /* inclusive_or_expression */
+ YYSYMBOL_logical_and_expression = 487, /* logical_and_expression */
+ YYSYMBOL_logical_xor_expression = 488, /* logical_xor_expression */
+ YYSYMBOL_logical_or_expression = 489, /* logical_or_expression */
+ YYSYMBOL_conditional_expression = 490, /* conditional_expression */
+ YYSYMBOL_491_1 = 491, /* $@1 */
+ YYSYMBOL_assignment_expression = 492, /* assignment_expression */
+ YYSYMBOL_assignment_operator = 493, /* assignment_operator */
+ YYSYMBOL_expression = 494, /* expression */
+ YYSYMBOL_constant_expression = 495, /* constant_expression */
+ YYSYMBOL_declaration = 496, /* declaration */
+ YYSYMBOL_block_structure = 497, /* block_structure */
+ YYSYMBOL_498_2 = 498, /* $@2 */
+ YYSYMBOL_identifier_list = 499, /* identifier_list */
+ YYSYMBOL_function_prototype = 500, /* function_prototype */
+ YYSYMBOL_function_declarator = 501, /* function_declarator */
+ YYSYMBOL_function_header_with_parameters = 502, /* function_header_with_parameters */
+ YYSYMBOL_function_header = 503, /* function_header */
+ YYSYMBOL_parameter_declarator = 504, /* parameter_declarator */
+ YYSYMBOL_parameter_declaration = 505, /* parameter_declaration */
+ YYSYMBOL_parameter_type_specifier = 506, /* parameter_type_specifier */
+ YYSYMBOL_init_declarator_list = 507, /* init_declarator_list */
+ YYSYMBOL_single_declaration = 508, /* single_declaration */
+ YYSYMBOL_fully_specified_type = 509, /* fully_specified_type */
+ YYSYMBOL_invariant_qualifier = 510, /* invariant_qualifier */
+ YYSYMBOL_interpolation_qualifier = 511, /* interpolation_qualifier */
+ YYSYMBOL_layout_qualifier = 512, /* layout_qualifier */
+ YYSYMBOL_layout_qualifier_id_list = 513, /* layout_qualifier_id_list */
+ YYSYMBOL_layout_qualifier_id = 514, /* layout_qualifier_id */
+ YYSYMBOL_precise_qualifier = 515, /* precise_qualifier */
+ YYSYMBOL_type_qualifier = 516, /* type_qualifier */
+ YYSYMBOL_single_type_qualifier = 517, /* single_type_qualifier */
+ YYSYMBOL_storage_qualifier = 518, /* storage_qualifier */
+ YYSYMBOL_non_uniform_qualifier = 519, /* non_uniform_qualifier */
+ YYSYMBOL_type_name_list = 520, /* type_name_list */
+ YYSYMBOL_type_specifier = 521, /* type_specifier */
+ YYSYMBOL_array_specifier = 522, /* array_specifier */
+ YYSYMBOL_type_parameter_specifier_opt = 523, /* type_parameter_specifier_opt */
+ YYSYMBOL_type_parameter_specifier = 524, /* type_parameter_specifier */
+ YYSYMBOL_type_parameter_specifier_list = 525, /* type_parameter_specifier_list */
+ YYSYMBOL_type_specifier_nonarray = 526, /* type_specifier_nonarray */
+ YYSYMBOL_precision_qualifier = 527, /* precision_qualifier */
+ YYSYMBOL_struct_specifier = 528, /* struct_specifier */
+ YYSYMBOL_529_3 = 529, /* $@3 */
+ YYSYMBOL_530_4 = 530, /* $@4 */
+ YYSYMBOL_struct_declaration_list = 531, /* struct_declaration_list */
+ YYSYMBOL_struct_declaration = 532, /* struct_declaration */
+ YYSYMBOL_struct_declarator_list = 533, /* struct_declarator_list */
+ YYSYMBOL_struct_declarator = 534, /* struct_declarator */
+ YYSYMBOL_initializer = 535, /* initializer */
+ YYSYMBOL_initializer_list = 536, /* initializer_list */
+ YYSYMBOL_declaration_statement = 537, /* declaration_statement */
+ YYSYMBOL_statement = 538, /* statement */
+ YYSYMBOL_simple_statement = 539, /* simple_statement */
+ YYSYMBOL_demote_statement = 540, /* demote_statement */
+ YYSYMBOL_compound_statement = 541, /* compound_statement */
+ YYSYMBOL_542_5 = 542, /* $@5 */
+ YYSYMBOL_543_6 = 543, /* $@6 */
+ YYSYMBOL_statement_no_new_scope = 544, /* statement_no_new_scope */
+ YYSYMBOL_statement_scoped = 545, /* statement_scoped */
+ YYSYMBOL_546_7 = 546, /* $@7 */
+ YYSYMBOL_547_8 = 547, /* $@8 */
+ YYSYMBOL_compound_statement_no_new_scope = 548, /* compound_statement_no_new_scope */
+ YYSYMBOL_statement_list = 549, /* statement_list */
+ YYSYMBOL_expression_statement = 550, /* expression_statement */
+ YYSYMBOL_selection_statement = 551, /* selection_statement */
+ YYSYMBOL_selection_statement_nonattributed = 552, /* selection_statement_nonattributed */
+ YYSYMBOL_selection_rest_statement = 553, /* selection_rest_statement */
+ YYSYMBOL_condition = 554, /* condition */
+ YYSYMBOL_switch_statement = 555, /* switch_statement */
+ YYSYMBOL_switch_statement_nonattributed = 556, /* switch_statement_nonattributed */
+ YYSYMBOL_557_9 = 557, /* $@9 */
+ YYSYMBOL_switch_statement_list = 558, /* switch_statement_list */
+ YYSYMBOL_case_label = 559, /* case_label */
+ YYSYMBOL_iteration_statement = 560, /* iteration_statement */
+ YYSYMBOL_iteration_statement_nonattributed = 561, /* iteration_statement_nonattributed */
+ YYSYMBOL_562_10 = 562, /* $@10 */
+ YYSYMBOL_563_11 = 563, /* $@11 */
+ YYSYMBOL_564_12 = 564, /* $@12 */
+ YYSYMBOL_for_init_statement = 565, /* for_init_statement */
+ YYSYMBOL_conditionopt = 566, /* conditionopt */
+ YYSYMBOL_for_rest_statement = 567, /* for_rest_statement */
+ YYSYMBOL_jump_statement = 568, /* jump_statement */
+ YYSYMBOL_translation_unit = 569, /* translation_unit */
+ YYSYMBOL_external_declaration = 570, /* external_declaration */
+ YYSYMBOL_function_definition = 571, /* function_definition */
+ YYSYMBOL_572_13 = 572, /* $@13 */
+ YYSYMBOL_attribute = 573, /* attribute */
+ YYSYMBOL_attribute_list = 574, /* attribute_list */
+ YYSYMBOL_single_attribute = 575, /* single_attribute */
+ YYSYMBOL_spirv_requirements_list = 576, /* spirv_requirements_list */
+ YYSYMBOL_spirv_requirements_parameter = 577, /* spirv_requirements_parameter */
+ YYSYMBOL_spirv_extension_list = 578, /* spirv_extension_list */
+ YYSYMBOL_spirv_capability_list = 579, /* spirv_capability_list */
+ YYSYMBOL_spirv_execution_mode_qualifier = 580, /* spirv_execution_mode_qualifier */
+ YYSYMBOL_spirv_execution_mode_parameter_list = 581, /* spirv_execution_mode_parameter_list */
+ YYSYMBOL_spirv_execution_mode_parameter = 582, /* spirv_execution_mode_parameter */
+ YYSYMBOL_spirv_execution_mode_id_parameter_list = 583, /* spirv_execution_mode_id_parameter_list */
+ YYSYMBOL_spirv_storage_class_qualifier = 584, /* spirv_storage_class_qualifier */
+ YYSYMBOL_spirv_decorate_qualifier = 585, /* spirv_decorate_qualifier */
+ YYSYMBOL_spirv_decorate_parameter_list = 586, /* spirv_decorate_parameter_list */
+ YYSYMBOL_spirv_decorate_parameter = 587, /* spirv_decorate_parameter */
+ YYSYMBOL_spirv_decorate_id_parameter_list = 588, /* spirv_decorate_id_parameter_list */
+ YYSYMBOL_spirv_decorate_id_parameter = 589, /* spirv_decorate_id_parameter */
+ YYSYMBOL_spirv_decorate_string_parameter_list = 590, /* spirv_decorate_string_parameter_list */
+ YYSYMBOL_spirv_type_specifier = 591, /* spirv_type_specifier */
+ YYSYMBOL_spirv_type_parameter_list = 592, /* spirv_type_parameter_list */
+ YYSYMBOL_spirv_type_parameter = 593, /* spirv_type_parameter */
+ YYSYMBOL_spirv_instruction_qualifier = 594, /* spirv_instruction_qualifier */
+ YYSYMBOL_spirv_instruction_qualifier_list = 595, /* spirv_instruction_qualifier_list */
+ YYSYMBOL_spirv_instruction_qualifier_id = 596 /* spirv_instruction_qualifier_id */
};
typedef enum yysymbol_kind_t yysymbol_kind_t;
@@ -738,7 +739,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t;
extern int yylex(YYSTYPE*, TParseContext&);
-#line 742 "MachineIndependent/glslang_tab.cpp"
+#line 743 "MachineIndependent/glslang_tab.cpp"
#ifdef short
@@ -1060,21 +1061,21 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 451
+#define YYFINAL 452
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 12669
+#define YYLAST 12701
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 464
+#define YYNTOKENS 465
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 132
/* YYNRULES -- Number of rules. */
-#define YYNRULES 697
+#define YYNRULES 700
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 943
+#define YYNSTATES 946
/* YYMAXUTOK -- Last valid token kind. */
-#define YYMAXUTOK 718
+#define YYMAXUTOK 719
/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1159,83 +1160,84 @@ static const yytype_int16 yytranslate[] =
425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463
+ 455, 456, 457, 458, 459, 460, 461, 462, 463, 464
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 394, 394, 400, 403, 408, 411, 414, 418, 422,
- 425, 429, 433, 437, 441, 445, 449, 455, 463, 466,
- 469, 472, 475, 480, 488, 495, 502, 508, 512, 519,
- 522, 528, 535, 545, 553, 558, 586, 595, 601, 605,
- 609, 629, 630, 631, 632, 638, 639, 644, 649, 658,
- 659, 664, 672, 673, 679, 688, 689, 694, 699, 704,
- 712, 713, 722, 734, 735, 744, 745, 754, 755, 764,
- 765, 773, 774, 782, 783, 791, 792, 792, 810, 811,
- 827, 831, 835, 839, 844, 848, 852, 856, 860, 864,
- 868, 875, 878, 889, 896, 902, 909, 915, 920, 927,
- 931, 935, 939, 944, 949, 958, 958, 969, 973, 980,
- 984, 990, 996, 1006, 1009, 1016, 1024, 1044, 1067, 1082,
- 1107, 1118, 1128, 1138, 1148, 1157, 1160, 1164, 1168, 1173,
- 1181, 1188, 1193, 1198, 1203, 1212, 1222, 1249, 1258, 1265,
- 1273, 1280, 1287, 1295, 1303, 1313, 1323, 1330, 1341, 1347,
- 1350, 1357, 1361, 1365, 1374, 1384, 1387, 1398, 1401, 1404,
- 1408, 1412, 1417, 1421, 1424, 1429, 1433, 1438, 1447, 1451,
- 1456, 1462, 1468, 1475, 1480, 1485, 1493, 1499, 1511, 1525,
- 1531, 1536, 1544, 1552, 1560, 1568, 1576, 1584, 1592, 1600,
- 1608, 1615, 1622, 1626, 1631, 1636, 1641, 1646, 1651, 1656,
- 1660, 1664, 1668, 1672, 1678, 1684, 1696, 1703, 1706, 1715,
- 1720, 1730, 1735, 1743, 1747, 1757, 1760, 1766, 1772, 1779,
- 1789, 1793, 1797, 1801, 1806, 1810, 1815, 1820, 1825, 1830,
- 1835, 1840, 1845, 1850, 1855, 1861, 1867, 1873, 1878, 1883,
- 1888, 1893, 1898, 1903, 1908, 1913, 1918, 1923, 1928, 1934,
- 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, 1981, 1986,
- 1991, 1996, 2004, 2012, 2020, 2026, 2032, 2038, 2044, 2050,
- 2056, 2062, 2068, 2074, 2080, 2086, 2092, 2098, 2104, 2110,
- 2116, 2122, 2128, 2134, 2140, 2146, 2152, 2158, 2164, 2170,
- 2176, 2182, 2188, 2194, 2200, 2206, 2212, 2218, 2226, 2234,
- 2242, 2250, 2258, 2266, 2274, 2282, 2290, 2298, 2306, 2314,
- 2320, 2326, 2332, 2338, 2344, 2350, 2356, 2362, 2368, 2374,
- 2380, 2386, 2392, 2398, 2404, 2410, 2416, 2422, 2428, 2434,
- 2440, 2446, 2452, 2458, 2464, 2470, 2476, 2482, 2488, 2494,
- 2500, 2506, 2512, 2518, 2524, 2530, 2534, 2538, 2542, 2547,
- 2553, 2558, 2563, 2568, 2573, 2578, 2583, 2589, 2594, 2599,
- 2604, 2609, 2614, 2620, 2626, 2632, 2638, 2644, 2650, 2656,
- 2662, 2668, 2674, 2680, 2686, 2692, 2698, 2703, 2708, 2713,
- 2718, 2723, 2728, 2734, 2739, 2744, 2749, 2754, 2759, 2764,
- 2769, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, 2815,
- 2820, 2825, 2830, 2835, 2840, 2845, 2851, 2856, 2861, 2867,
- 2873, 2878, 2883, 2888, 2894, 2899, 2904, 2909, 2915, 2920,
- 2925, 2930, 2936, 2941, 2946, 2951, 2957, 2963, 2969, 2975,
- 2980, 2986, 2992, 2998, 3003, 3008, 3013, 3018, 3023, 3029,
- 3034, 3039, 3044, 3050, 3055, 3060, 3065, 3071, 3076, 3081,
- 3086, 3092, 3097, 3102, 3107, 3113, 3118, 3123, 3128, 3134,
- 3139, 3144, 3149, 3155, 3160, 3165, 3170, 3176, 3181, 3186,
- 3191, 3197, 3202, 3207, 3212, 3218, 3223, 3228, 3233, 3239,
- 3244, 3249, 3254, 3260, 3265, 3270, 3275, 3281, 3286, 3291,
- 3296, 3302, 3307, 3312, 3317, 3323, 3328, 3333, 3338, 3343,
- 3348, 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, 3393,
- 3398, 3403, 3408, 3413, 3418, 3423, 3428, 3433, 3438, 3443,
- 3449, 3455, 3461, 3467, 3473, 3479, 3485, 3492, 3499, 3505,
- 3511, 3517, 3523, 3529, 3535, 3541, 3545, 3550, 3555, 3571,
- 3576, 3581, 3589, 3589, 3600, 3600, 3610, 3613, 3626, 3648,
- 3675, 3679, 3685, 3690, 3701, 3705, 3711, 3717, 3728, 3731,
- 3738, 3742, 3743, 3749, 3750, 3751, 3752, 3753, 3754, 3755,
- 3757, 3763, 3772, 3773, 3777, 3773, 3789, 3790, 3794, 3794,
- 3801, 3801, 3815, 3818, 3826, 3834, 3845, 3846, 3850, 3854,
- 3862, 3869, 3873, 3881, 3885, 3898, 3902, 3910, 3910, 3930,
- 3933, 3939, 3951, 3963, 3967, 3975, 3975, 3990, 3990, 4008,
- 4008, 4029, 4032, 4038, 4041, 4047, 4051, 4058, 4063, 4068,
- 4075, 4078, 4082, 4087, 4091, 4101, 4105, 4114, 4117, 4121,
- 4130, 4130, 4172, 4177, 4180, 4185, 4188, 4195, 4198, 4203,
- 4206, 4211, 4214, 4219, 4222, 4227, 4231, 4236, 4240, 4245,
- 4249, 4256, 4259, 4264, 4267, 4270, 4273, 4276, 4281, 4290,
- 4301, 4306, 4314, 4318, 4323, 4327, 4332, 4336, 4341, 4345,
- 4352, 4355, 4360, 4363, 4366, 4369, 4374, 4377, 4382, 4388,
- 4391, 4394, 4397, 4402, 4406, 4411, 4415, 4420, 4424, 4431,
- 4434, 4439, 4444, 4447, 4453, 4456, 4461, 4464
+ 0, 395, 395, 401, 404, 409, 412, 415, 419, 423,
+ 426, 430, 434, 438, 442, 446, 450, 456, 464, 467,
+ 470, 473, 476, 481, 489, 496, 503, 509, 513, 520,
+ 523, 529, 536, 546, 554, 559, 587, 596, 602, 606,
+ 610, 630, 631, 632, 633, 639, 640, 645, 650, 659,
+ 660, 665, 673, 674, 680, 689, 690, 695, 700, 705,
+ 713, 714, 723, 735, 736, 745, 746, 755, 756, 765,
+ 766, 774, 775, 783, 784, 792, 793, 793, 811, 812,
+ 828, 832, 836, 840, 845, 849, 853, 857, 861, 865,
+ 869, 876, 879, 890, 897, 903, 910, 916, 921, 928,
+ 932, 936, 940, 945, 950, 959, 959, 970, 974, 981,
+ 985, 991, 997, 1007, 1010, 1017, 1025, 1045, 1068, 1083,
+ 1108, 1119, 1129, 1139, 1149, 1158, 1161, 1165, 1169, 1174,
+ 1182, 1189, 1194, 1199, 1204, 1213, 1223, 1250, 1259, 1266,
+ 1274, 1281, 1288, 1296, 1304, 1314, 1324, 1331, 1342, 1348,
+ 1351, 1358, 1362, 1366, 1375, 1385, 1388, 1399, 1402, 1405,
+ 1409, 1413, 1418, 1422, 1425, 1430, 1434, 1439, 1448, 1452,
+ 1457, 1463, 1469, 1476, 1481, 1486, 1494, 1500, 1512, 1526,
+ 1532, 1537, 1545, 1553, 1561, 1569, 1577, 1585, 1593, 1601,
+ 1609, 1616, 1623, 1627, 1632, 1637, 1642, 1647, 1652, 1657,
+ 1661, 1665, 1669, 1673, 1679, 1685, 1697, 1704, 1707, 1716,
+ 1723, 1734, 1739, 1747, 1751, 1761, 1764, 1770, 1776, 1781,
+ 1789, 1799, 1803, 1807, 1811, 1816, 1820, 1825, 1830, 1835,
+ 1840, 1845, 1850, 1855, 1860, 1865, 1871, 1877, 1883, 1888,
+ 1893, 1898, 1903, 1908, 1913, 1918, 1923, 1928, 1933, 1938,
+ 1944, 1951, 1956, 1961, 1966, 1971, 1976, 1981, 1986, 1991,
+ 1996, 2001, 2006, 2014, 2022, 2030, 2036, 2042, 2048, 2054,
+ 2060, 2066, 2072, 2078, 2084, 2090, 2096, 2102, 2108, 2114,
+ 2120, 2126, 2132, 2138, 2144, 2150, 2156, 2162, 2168, 2174,
+ 2180, 2186, 2192, 2198, 2204, 2210, 2216, 2222, 2228, 2236,
+ 2244, 2252, 2260, 2268, 2276, 2284, 2292, 2300, 2308, 2316,
+ 2324, 2330, 2336, 2342, 2348, 2354, 2360, 2366, 2372, 2378,
+ 2384, 2390, 2396, 2402, 2408, 2414, 2420, 2426, 2432, 2438,
+ 2444, 2450, 2456, 2462, 2468, 2474, 2480, 2486, 2492, 2498,
+ 2504, 2510, 2516, 2522, 2528, 2534, 2540, 2544, 2548, 2552,
+ 2557, 2563, 2568, 2573, 2578, 2583, 2588, 2593, 2599, 2604,
+ 2609, 2614, 2619, 2624, 2630, 2636, 2642, 2648, 2654, 2660,
+ 2666, 2672, 2678, 2684, 2690, 2696, 2702, 2708, 2713, 2718,
+ 2723, 2728, 2733, 2738, 2744, 2749, 2754, 2759, 2764, 2769,
+ 2774, 2779, 2785, 2790, 2795, 2800, 2805, 2810, 2815, 2820,
+ 2825, 2830, 2835, 2840, 2845, 2850, 2855, 2861, 2866, 2871,
+ 2877, 2883, 2888, 2893, 2898, 2904, 2909, 2914, 2919, 2925,
+ 2930, 2935, 2940, 2946, 2951, 2956, 2961, 2967, 2973, 2979,
+ 2985, 2990, 2996, 3002, 3008, 3013, 3018, 3023, 3028, 3033,
+ 3039, 3044, 3049, 3054, 3060, 3065, 3070, 3075, 3081, 3086,
+ 3091, 3096, 3102, 3107, 3112, 3117, 3123, 3128, 3133, 3138,
+ 3144, 3149, 3154, 3159, 3165, 3170, 3175, 3180, 3186, 3191,
+ 3196, 3201, 3207, 3212, 3217, 3222, 3228, 3233, 3238, 3243,
+ 3249, 3254, 3259, 3264, 3270, 3275, 3280, 3285, 3291, 3296,
+ 3301, 3306, 3312, 3317, 3322, 3327, 3333, 3338, 3343, 3348,
+ 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, 3393, 3398,
+ 3403, 3408, 3413, 3418, 3423, 3428, 3433, 3438, 3443, 3448,
+ 3453, 3459, 3465, 3471, 3477, 3483, 3489, 3495, 3502, 3509,
+ 3515, 3521, 3527, 3533, 3540, 3547, 3554, 3561, 3565, 3570,
+ 3575, 3591, 3596, 3601, 3609, 3609, 3620, 3620, 3630, 3633,
+ 3646, 3668, 3695, 3699, 3705, 3710, 3721, 3725, 3731, 3737,
+ 3748, 3751, 3758, 3762, 3763, 3769, 3770, 3771, 3772, 3773,
+ 3774, 3775, 3777, 3783, 3792, 3793, 3797, 3793, 3809, 3810,
+ 3814, 3814, 3821, 3821, 3835, 3838, 3846, 3854, 3865, 3866,
+ 3870, 3874, 3882, 3889, 3893, 3901, 3905, 3918, 3922, 3930,
+ 3930, 3950, 3953, 3959, 3971, 3983, 3987, 3995, 3995, 4010,
+ 4010, 4028, 4028, 4049, 4052, 4058, 4061, 4067, 4071, 4078,
+ 4083, 4088, 4095, 4098, 4102, 4107, 4111, 4121, 4125, 4134,
+ 4137, 4141, 4150, 4150, 4192, 4197, 4200, 4205, 4208, 4215,
+ 4218, 4223, 4226, 4231, 4234, 4239, 4242, 4247, 4251, 4256,
+ 4260, 4265, 4269, 4276, 4279, 4284, 4287, 4290, 4293, 4296,
+ 4301, 4310, 4321, 4326, 4334, 4338, 4343, 4347, 4352, 4356,
+ 4361, 4365, 4372, 4375, 4380, 4383, 4386, 4389, 4394, 4397,
+ 4402, 4408, 4411, 4414, 4417, 4422, 4426, 4431, 4435, 4440,
+ 4444, 4451, 4454, 4459, 4462, 4467, 4470, 4476, 4479, 4484,
+ 4487
};
#endif
@@ -1280,16 +1282,17 @@ static const char *const yytname[] =
"F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", "F64MAT2X3",
"F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2",
"F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT",
- "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "HITOBJECTNV",
- "HITOBJECTATTRNV", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW",
- "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY",
- "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT",
- "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT",
- "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS",
- "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY",
- "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT",
- "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D",
- "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE",
+ "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "COOPMAT",
+ "HITOBJECTNV", "HITOBJECTATTRNV", "SAMPLERCUBEARRAY",
+ "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY",
+ "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D",
+ "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW",
+ "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER",
+ "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS",
+ "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY",
+ "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY",
+ "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D",
+ "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE",
"F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY",
"F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY",
"F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW",
@@ -1411,12 +1414,12 @@ yysymbol_name (yysymbol_kind_t yysymbol)
}
#endif
-#define YYPACT_NINF (-833)
+#define YYPACT_NINF (-872)
#define yypact_value_is_default(Yyn) \
((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF (-579)
+#define YYTABLE_NINF (-695)
#define yytable_value_is_error(Yyn) \
0
@@ -1425,101 +1428,101 @@ yysymbol_name (yysymbol_kind_t yysymbol)
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 4634, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -322, -303, -269,
- -258, -250, -241, -204, -105, -833, -833, -833, -833, -833,
- -219, -833, -833, -833, -833, -833, -57, -833, -833, -833,
- -833, -833, -320, -833, -833, -833, -833, -833, -833, -833,
- -80, -63, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -325, -182, -130,
- -109, 7861, -222, -833, -71, -833, -833, -833, -833, 5556,
- -833, -833, -833, -833, -141, -833, -833, 946, -833, -833,
- 7861, -85, -833, -833, -833, 6017, -54, -279, -155, -133,
- -129, -125, -54, -124, -51, 12272, -833, -25, -341, -49,
- -833, -310, -833, -15, -12, 7861, -833, -833, -833, 7861,
- -42, -41, -833, -265, -833, -311, -833, -833, 10955, -9,
- -833, -833, -833, -5, -39, 7861, -833, -10, -11, -6,
- -833, -267, -833, -256, -4, -3, -1, 1, -221, 3,
- 5, 6, 8, 10, 11, -217, 13, 12, 20, -309,
- -833, -7, 7861, -833, -2, -833, -195, -833, -833, -188,
- 9199, -833, -280, 1407, -833, -833, -833, -833, -833, -9,
- -294, -833, 9638, -263, -833, -27, -833, -169, 10955, 10955,
- -833, 10955, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -253, -833, -833, -833, 21, -185, 11394, 25, -833,
- 10955, -833, -833, -318, 19, -12, 26, -833, -326, -54,
- -833, -8, -833, -329, 27, -123, 10955, -119, -833, -146,
- -112, -160, -107, 28, -102, -54, -833, 11833, -833, -75,
- 10955, 29, -51, -833, 7861, 14, 6478, -833, 7861, 10955,
- -833, -341, -833, 15, -833, -833, -40, -79, -170, -295,
- -120, 17, 22, 24, 44, 23, -313, 30, 10077, -833,
- 35, -833, -833, 31, 37, 39, -833, 34, 41, 42,
- 10516, 64, 10955, 58, 57, 59, 63, 65, -220, -833,
- -833, -111, -833, -182, 76, 77, -833, -833, -833, -833,
- -833, 1868, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, 5095, 19, 9638, -254, 8321, -833, -833, 9638, 7861,
- -833, 43, -833, -833, -833, -184, -833, -833, 10955, 47,
- -833, -833, 10955, 79, -833, -833, -833, 10955, -833, -833,
- -833, -319, -833, -833, -183, 69, -833, -833, -833, -833,
- -833, -833, -181, -833, -176, -833, -833, -174, 80, -833,
- -833, -833, -833, -172, -833, -171, -833, -833, -833, -833,
- -833, -164, -833, 81, -833, -162, 82, -161, 69, -833,
- -159, -833, 83, 85, -833, -833, 14, -9, -48, -833,
- -833, -833, 6939, -833, -833, -833, 10955, 10955, 10955, 10955,
- 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955,
- 10955, 10955, 10955, 10955, 10955, -833, -833, -833, 32, -833,
- 2329, -833, -833, -833, 2329, -833, 10955, -833, -833, -47,
- 10955, -92, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, 10955, 10955,
- -833, -833, -833, -833, -833, -833, -833, 9638, -833, -833,
- -122, -833, 7400, -833, -833, 88, 86, -833, -833, -833,
- -833, -833, -202, -137, -833, -316, -833, -329, -833, -329,
- -833, 10955, 10955, -833, -146, -833, -146, -833, -160, -160,
- -833, 93, 28, -833, 11833, -833, 10955, -833, -833, -43,
- 19, 14, -833, -833, -833, -833, -833, -40, -40, -79,
- -79, -170, -170, -170, -170, -295, -295, -120, 17, 22,
- 24, 44, 23, 10955, -833, 2329, 4173, 52, 3712, -152,
- -833, -151, -833, -833, -833, -833, -833, 8760, -833, -833,
- -833, 98, -833, 66, -833, -150, -833, -149, -833, -148,
- -833, -147, -833, -140, -139, -833, -833, -833, -36, 95,
- 86, 62, 101, 103, -833, -833, 4173, 100, -833, -833,
- -833, -833, -833, -833, -833, -833, -833, -833, -833, 10955,
- -833, 96, 2790, 10955, -833, 97, 105, 60, 107, 3251,
- -833, 109, -833, 9638, -833, -833, -833, -138, 10955, 2790,
- 100, -833, -833, 2329, -833, 99, 86, -833, -833, 2329,
- 110, -833, -833
+ 4648, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -305, -301,
+ -289, -276, -246, -238, -227, -182, -872, -872, -872, -872,
+ -872, -168, -872, -872, -872, -872, -872, -55, -872, -872,
+ -872, -872, -872, -319, -872, -872, -872, -872, -872, -872,
+ -872, -135, -120, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -327, -114,
+ -81, -124, 7882, -313, -872, -101, -872, -872, -872, -872,
+ 5572, -872, -872, -872, -872, -94, -872, -872, 952, -872,
+ -872, 7882, -73, -872, -872, -872, 6034, -78, -252, -250,
+ -216, -197, -136, -78, -127, -49, 12303, -872, -13, -346,
+ -39, -872, -309, -872, -10, -9, 7882, -872, -872, -872,
+ 7882, -38, -37, -872, -267, -872, -236, -872, -872, 10983,
+ -2, -872, -872, -872, 3, -35, 7882, -872, -8, -6,
+ -1, -872, -256, -872, -255, -4, 4, 7, 8, -237,
+ 10, 11, 13, 14, 15, 18, -232, 9, 19, 27,
+ -188, -872, -3, 7882, -872, 20, -872, -229, -872, -872,
+ -219, 9223, -872, -272, 1414, -872, -872, -872, -872, -872,
+ -2, -277, -872, 9663, -265, -872, -23, -872, -112, 10983,
+ 10983, -872, 10983, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -253, -872, -872, -872, 29, -204, 11423, 28,
+ -872, 10983, -872, 31, -321, 17, -9, 32, -872, -325,
+ -78, -872, 5, -872, -330, 33, -125, 10983, -123, -872,
+ -130, -119, -146, -118, 34, -103, -78, -872, 11863, -872,
+ -74, 10983, 36, -49, -872, 7882, 24, 6496, -872, 7882,
+ 10983, -872, -346, -872, 30, -872, -872, -33, -133, -105,
+ -303, -11, -14, 21, 23, 48, 52, -316, 41, -872,
+ 10103, -872, 42, -872, -872, 46, 38, 40, -872, 64,
+ 67, 60, 10543, 74, 10983, 68, 65, 69, 70, 73,
+ -167, -872, -872, -47, -872, -114, 77, 31, -872, -872,
+ -872, -872, -872, 1876, -872, -872, -872, -872, -872, -872,
+ -872, -872, -872, 5110, 17, 9663, -261, 8343, -872, -872,
+ 9663, 7882, -872, 50, -872, -872, -872, -203, -872, -872,
+ 10983, 51, -872, -872, 10983, 87, -872, -872, -872, 10983,
+ -872, -872, -872, -312, -872, -872, -200, 80, -872, -872,
+ -872, -872, -872, -872, -199, -872, -196, -872, -872, -195,
+ 71, -872, -872, -872, -872, -169, -872, -164, -872, -872,
+ -872, -872, -872, -161, -872, 83, -872, -160, 84, -153,
+ 80, -872, -278, -152, -872, 91, 94, -872, -872, 24,
+ -2, -43, -872, -872, -872, 6958, -872, -872, -872, 10983,
+ 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983,
+ 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, -872, -872,
+ -872, 93, -872, 2338, -872, -872, -872, 2338, -872, 10983,
+ -872, -872, -42, 10983, -32, -872, -872, -872, -872, -872,
+ -872, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, 10983, 10983, -872, -872, -872, -872, -872, -872, -872,
+ 9663, -872, -872, -76, -872, 7420, -872, -872, 96, 95,
+ -872, -872, -872, -872, -872, -132, -131, -872, -311, -872,
+ -330, -872, -330, -872, 10983, 10983, -872, -130, -872, -130,
+ -872, -146, -146, -872, 101, 34, -872, 11863, -872, 10983,
+ -872, -872, -41, 17, 24, -872, -872, -872, -872, -872,
+ -33, -33, -133, -133, -105, -105, -105, -105, -303, -303,
+ -11, -14, 21, 23, 48, 52, 10983, -872, 2338, 4186,
+ 59, 3724, -151, -872, -150, -872, -872, -872, -872, -872,
+ 8783, -872, -872, -872, 105, -872, 72, -872, -149, -872,
+ -148, -872, -141, -872, -140, -872, -139, -138, -872, -872,
+ -872, -28, 102, 95, 75, 107, 106, -872, -872, 4186,
+ 108, -872, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, 10983, -872, 100, 2800, 10983, -872, 104, 109,
+ 76, 112, 3262, -872, 113, -872, 9663, -872, -872, -872,
+ -137, 10983, 2800, 108, -872, -872, 2338, -872, 110, 95,
+ -872, -872, 2338, 114, -872, -872
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1527,139 +1530,139 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_int16 yydefact[] =
{
- 0, 168, 224, 222, 223, 221, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 225, 226, 227, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 350, 351, 352, 353, 354, 355, 356, 376, 377, 378,
- 379, 380, 381, 382, 391, 404, 405, 392, 393, 395,
- 394, 396, 397, 398, 399, 400, 401, 402, 403, 177,
- 178, 250, 251, 249, 252, 259, 260, 257, 258, 255,
- 256, 253, 254, 282, 283, 284, 294, 295, 296, 279,
- 280, 281, 291, 292, 293, 276, 277, 278, 288, 289,
- 290, 273, 274, 275, 285, 286, 287, 261, 262, 263,
- 297, 298, 299, 264, 265, 266, 309, 310, 311, 267,
- 268, 269, 321, 322, 323, 270, 271, 272, 333, 334,
- 335, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 312, 313, 314, 315, 316, 317, 318, 319, 320, 324,
- 325, 326, 327, 328, 329, 330, 331, 332, 336, 337,
- 338, 339, 340, 341, 342, 343, 344, 348, 345, 346,
- 347, 532, 533, 534, 536, 182, 360, 361, 384, 387,
- 349, 358, 359, 375, 357, 406, 407, 410, 411, 412,
- 414, 415, 416, 418, 419, 420, 422, 423, 519, 520,
- 383, 385, 386, 362, 363, 364, 408, 365, 369, 370,
- 373, 413, 417, 421, 366, 367, 371, 372, 409, 368,
- 374, 453, 455, 456, 457, 459, 460, 461, 463, 464,
- 465, 467, 468, 469, 471, 472, 473, 475, 476, 477,
- 479, 480, 481, 483, 484, 485, 487, 488, 489, 491,
- 492, 493, 495, 496, 454, 458, 462, 466, 470, 478,
- 482, 486, 474, 490, 494, 497, 498, 499, 500, 501,
+ 0, 168, 225, 223, 224, 222, 229, 230, 231, 232,
+ 233, 234, 235, 236, 237, 226, 227, 228, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 351, 352, 353, 354, 355, 356, 357, 377, 378, 379,
+ 380, 381, 382, 383, 392, 405, 406, 393, 394, 396,
+ 395, 397, 398, 399, 400, 401, 402, 403, 404, 177,
+ 178, 251, 252, 250, 253, 260, 261, 258, 259, 256,
+ 257, 254, 255, 283, 284, 285, 295, 296, 297, 280,
+ 281, 282, 292, 293, 294, 277, 278, 279, 289, 290,
+ 291, 274, 275, 276, 286, 287, 288, 262, 263, 264,
+ 298, 299, 300, 265, 266, 267, 310, 311, 312, 268,
+ 269, 270, 322, 323, 324, 271, 272, 273, 334, 335,
+ 336, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 313, 314, 315, 316, 317, 318, 319, 320, 321, 325,
+ 326, 327, 328, 329, 330, 331, 332, 333, 337, 338,
+ 339, 340, 341, 342, 343, 344, 345, 349, 346, 347,
+ 348, 533, 534, 535, 536, 538, 182, 361, 362, 385,
+ 388, 350, 359, 360, 376, 358, 407, 408, 411, 412,
+ 413, 415, 416, 417, 419, 420, 421, 423, 424, 520,
+ 521, 384, 386, 387, 363, 364, 365, 409, 366, 370,
+ 371, 374, 414, 418, 422, 367, 368, 372, 373, 410,
+ 369, 375, 454, 456, 457, 458, 460, 461, 462, 464,
+ 465, 466, 468, 469, 470, 472, 473, 474, 476, 477,
+ 478, 480, 481, 482, 484, 485, 486, 488, 489, 490,
+ 492, 493, 494, 496, 497, 455, 459, 463, 467, 471,
+ 479, 483, 487, 475, 491, 495, 498, 499, 500, 501,
502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
- 512, 513, 514, 515, 516, 517, 518, 388, 389, 390,
- 424, 433, 435, 429, 434, 436, 437, 439, 440, 441,
- 443, 444, 445, 447, 448, 449, 451, 452, 425, 426,
- 427, 438, 428, 430, 431, 432, 442, 446, 450, 524,
- 525, 528, 529, 530, 531, 526, 527, 0, 0, 0,
- 0, 0, 0, 0, 0, 166, 167, 521, 522, 523,
- 0, 629, 137, 539, 540, 541, 0, 538, 172, 170,
- 171, 169, 0, 220, 173, 175, 176, 174, 139, 138,
- 0, 203, 184, 186, 181, 188, 190, 185, 187, 183,
- 189, 191, 179, 180, 206, 192, 199, 200, 201, 202,
- 193, 194, 195, 196, 197, 198, 140, 141, 143, 142,
- 144, 146, 147, 145, 205, 154, 628, 0, 630, 0,
- 114, 113, 0, 125, 130, 161, 160, 158, 162, 0,
- 155, 157, 163, 135, 216, 159, 537, 0, 625, 627,
- 0, 0, 164, 165, 535, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 544, 0, 0, 0,
- 99, 0, 94, 0, 109, 0, 121, 115, 123, 0,
- 124, 0, 97, 131, 102, 0, 156, 136, 0, 209,
- 215, 1, 626, 0, 0, 0, 96, 0, 0, 0,
- 637, 0, 694, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 635, 0,
- 633, 0, 0, 542, 151, 153, 0, 149, 207, 0,
- 0, 100, 0, 0, 631, 110, 116, 120, 122, 118,
- 126, 117, 0, 132, 105, 0, 103, 0, 0, 0,
- 9, 0, 43, 42, 44, 41, 5, 6, 7, 8,
- 2, 16, 14, 15, 17, 10, 11, 12, 13, 3,
- 18, 37, 20, 25, 26, 0, 0, 30, 0, 218,
- 0, 36, 34, 0, 210, 111, 0, 95, 0, 0,
- 692, 0, 645, 0, 0, 0, 0, 0, 662, 0,
- 0, 0, 0, 0, 0, 0, 687, 0, 660, 0,
- 0, 0, 0, 98, 0, 0, 0, 546, 0, 0,
- 148, 0, 204, 0, 211, 45, 49, 52, 55, 60,
- 63, 65, 67, 69, 71, 73, 75, 0, 0, 101,
- 573, 582, 586, 0, 0, 0, 607, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 45, 78,
- 91, 0, 560, 0, 163, 135, 563, 584, 562, 570,
- 561, 0, 564, 565, 588, 566, 595, 567, 568, 603,
- 569, 0, 119, 0, 127, 0, 554, 134, 0, 0,
- 107, 0, 104, 38, 39, 0, 22, 23, 0, 0,
- 28, 27, 0, 220, 31, 33, 40, 0, 217, 112,
- 696, 0, 697, 638, 0, 0, 695, 657, 653, 654,
- 655, 656, 0, 651, 0, 93, 658, 0, 0, 672,
- 673, 674, 675, 0, 670, 0, 679, 680, 681, 682,
- 678, 0, 676, 0, 683, 0, 0, 0, 2, 691,
- 0, 689, 0, 0, 632, 634, 0, 552, 0, 550,
- 545, 547, 0, 152, 150, 208, 0, 0, 0, 0,
+ 512, 513, 514, 515, 516, 517, 518, 519, 389, 390,
+ 391, 425, 434, 436, 430, 435, 437, 438, 440, 441,
+ 442, 444, 445, 446, 448, 449, 450, 452, 453, 426,
+ 427, 428, 439, 429, 431, 432, 433, 443, 447, 451,
+ 525, 526, 529, 530, 531, 532, 527, 528, 0, 0,
+ 0, 0, 0, 0, 0, 0, 166, 167, 522, 523,
+ 524, 0, 631, 137, 541, 542, 543, 0, 540, 172,
+ 170, 171, 169, 0, 221, 173, 175, 176, 174, 139,
+ 138, 0, 203, 184, 186, 181, 188, 190, 185, 187,
+ 183, 189, 191, 179, 180, 206, 192, 199, 200, 201,
+ 202, 193, 194, 195, 196, 197, 198, 140, 141, 143,
+ 142, 144, 146, 147, 145, 205, 154, 630, 0, 632,
+ 0, 114, 113, 0, 125, 130, 161, 160, 158, 162,
+ 0, 155, 157, 163, 135, 216, 159, 539, 0, 627,
+ 629, 0, 0, 164, 165, 537, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 546, 0, 0,
+ 0, 99, 0, 94, 0, 109, 0, 121, 115, 123,
+ 0, 124, 0, 97, 131, 102, 0, 156, 136, 0,
+ 209, 215, 1, 628, 0, 0, 0, 96, 0, 0,
+ 0, 639, 0, 697, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 637,
+ 0, 635, 0, 0, 544, 151, 153, 0, 149, 207,
+ 0, 0, 100, 0, 0, 633, 110, 116, 120, 122,
+ 118, 126, 117, 0, 132, 105, 0, 103, 0, 0,
+ 0, 9, 0, 43, 42, 44, 41, 5, 6, 7,
+ 8, 2, 16, 14, 15, 17, 10, 11, 12, 13,
+ 3, 18, 37, 20, 25, 26, 0, 0, 30, 0,
+ 219, 0, 36, 218, 0, 210, 111, 0, 95, 0,
+ 0, 695, 0, 647, 0, 0, 0, 0, 0, 664,
+ 0, 0, 0, 0, 0, 0, 0, 689, 0, 662,
+ 0, 0, 0, 0, 98, 0, 0, 0, 548, 0,
+ 0, 148, 0, 204, 0, 211, 45, 49, 52, 55,
+ 60, 63, 65, 67, 69, 71, 73, 75, 0, 34,
+ 0, 101, 575, 584, 588, 0, 0, 0, 609, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 45, 78, 91, 0, 562, 0, 163, 135, 565, 586,
+ 564, 572, 563, 0, 566, 567, 590, 568, 597, 569,
+ 570, 605, 571, 0, 119, 0, 127, 0, 556, 134,
+ 0, 0, 107, 0, 104, 38, 39, 0, 22, 23,
+ 0, 0, 28, 27, 0, 221, 31, 33, 40, 0,
+ 217, 112, 699, 0, 700, 640, 0, 0, 698, 659,
+ 655, 656, 657, 658, 0, 653, 0, 93, 660, 0,
+ 0, 674, 675, 676, 677, 0, 672, 0, 681, 682,
+ 683, 684, 680, 0, 678, 0, 685, 0, 0, 0,
+ 2, 693, 216, 0, 691, 0, 0, 634, 636, 0,
+ 554, 0, 552, 547, 549, 0, 152, 150, 208, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 76, 212, 213, 0, 572,
- 0, 605, 618, 617, 0, 609, 0, 621, 619, 0,
- 0, 0, 602, 622, 623, 624, 571, 81, 82, 84,
- 83, 86, 87, 88, 89, 90, 85, 80, 0, 0,
- 587, 583, 585, 589, 596, 604, 129, 0, 557, 558,
- 0, 133, 0, 108, 4, 0, 24, 21, 32, 219,
- 641, 643, 0, 0, 693, 0, 647, 0, 646, 0,
- 649, 0, 0, 664, 0, 663, 0, 666, 0, 0,
- 668, 0, 0, 688, 0, 685, 0, 661, 636, 0,
- 553, 0, 548, 543, 46, 47, 48, 51, 50, 53,
- 54, 58, 59, 56, 57, 61, 62, 64, 66, 68,
- 70, 72, 74, 0, 214, 574, 0, 0, 0, 0,
- 620, 0, 601, 79, 92, 128, 555, 0, 106, 19,
- 639, 0, 640, 0, 652, 0, 659, 0, 671, 0,
- 677, 0, 684, 0, 0, 690, 549, 551, 0, 0,
- 593, 0, 0, 0, 612, 611, 614, 580, 597, 556,
- 559, 642, 644, 648, 650, 665, 667, 669, 686, 0,
- 575, 0, 0, 0, 613, 0, 0, 592, 0, 0,
- 590, 0, 77, 0, 577, 606, 576, 0, 615, 0,
- 580, 579, 581, 599, 594, 0, 616, 610, 591, 600,
- 0, 608, 598
+ 0, 0, 0, 0, 0, 0, 0, 0, 76, 212,
+ 213, 0, 574, 0, 607, 620, 619, 0, 611, 0,
+ 623, 621, 0, 0, 0, 604, 624, 625, 626, 573,
+ 81, 82, 84, 83, 86, 87, 88, 89, 90, 85,
+ 80, 0, 0, 589, 585, 587, 591, 598, 606, 129,
+ 0, 559, 560, 0, 133, 0, 108, 4, 0, 24,
+ 21, 32, 220, 643, 645, 0, 0, 696, 0, 649,
+ 0, 648, 0, 651, 0, 0, 666, 0, 665, 0,
+ 668, 0, 0, 670, 0, 0, 690, 0, 687, 0,
+ 663, 638, 0, 555, 0, 550, 545, 46, 47, 48,
+ 51, 50, 53, 54, 58, 59, 56, 57, 61, 62,
+ 64, 66, 68, 70, 72, 74, 0, 214, 576, 0,
+ 0, 0, 0, 622, 0, 603, 79, 92, 128, 557,
+ 0, 106, 19, 641, 0, 642, 0, 654, 0, 661,
+ 0, 673, 0, 679, 0, 686, 0, 0, 692, 551,
+ 553, 0, 0, 595, 0, 0, 0, 614, 613, 616,
+ 582, 599, 558, 561, 644, 646, 650, 652, 667, 669,
+ 671, 688, 0, 577, 0, 0, 0, 615, 0, 0,
+ 594, 0, 0, 592, 0, 77, 0, 579, 608, 578,
+ 0, 617, 0, 582, 581, 583, 601, 596, 0, 618,
+ 612, 593, 602, 0, 610, 600
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -833, -546, -833, -833, -833, -833, -833, -833, -833, -833,
- -833, -833, -434, -833, -395, -394, -489, -392, -271, -270,
- -268, -266, -272, -264, -833, -484, -833, -497, -833, -500,
- -535, 4, -833, -833, -833, 7, -393, -833, -833, 33,
- 40, 38, -833, -833, -407, -833, -833, -833, -833, -103,
- -833, -390, -376, -833, 9, -833, 0, -433, -833, -833,
- -833, -833, 138, -833, -833, -833, -559, -554, -237, -350,
- -612, -833, -375, -619, -832, -833, -432, -833, -833, -445,
- -443, -833, -833, 55, -732, -373, -833, -145, -833, -406,
- -833, -144, -833, -833, -833, -833, -143, -833, -833, -833,
- -833, -833, -833, -833, -833, 87, -833, -833, 2, -833,
- -77, -302, -408, -833, -833, -833, -317, -308, -312, -833,
- -833, -315, -307, -314, -306, -305, -833, -321, -304, -833,
- -396, -538
+ -872, -544, -872, -872, -872, -872, -872, -872, -872, -872,
+ -872, -872, -436, -872, -392, -391, -490, -390, -269, -266,
+ -268, -264, -262, -260, -872, -482, -872, -499, -872, -492,
+ -534, 6, -872, -872, -872, 1, -403, -872, -872, 45,
+ 44, 49, -872, -872, -406, -872, -872, -872, -872, -104,
+ -872, -389, -375, -872, 12, -872, 0, -433, -872, -872,
+ -872, -553, 145, -872, -872, -872, -560, -556, -233, -344,
+ -614, -872, -373, -626, -871, -872, -430, -872, -872, -440,
+ -437, -872, -872, 63, -737, -363, -872, -144, -872, -399,
+ -872, -142, -872, -872, -872, -872, -134, -872, -872, -872,
+ -872, -872, -872, -872, -872, 97, -872, -872, 2, -872,
+ -71, -308, -416, -872, -872, -872, -304, -307, -302, -872,
+ -872, -315, -310, -306, -300, -314, -872, -299, -317, -872,
+ -395, -538
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- 0, 529, 530, 531, 795, 532, 533, 534, 535, 536,
- 537, 538, 618, 540, 586, 587, 588, 589, 590, 591,
- 592, 593, 594, 595, 596, 619, 853, 620, 778, 621,
- 709, 622, 387, 649, 507, 623, 389, 390, 391, 436,
- 437, 438, 392, 393, 394, 395, 396, 397, 486, 487,
- 398, 399, 400, 401, 541, 489, 542, 492, 449, 450,
- 543, 404, 405, 406, 578, 482, 576, 577, 718, 719,
- 647, 790, 626, 627, 628, 629, 630, 750, 889, 925,
- 917, 918, 919, 926, 631, 632, 633, 634, 920, 892,
- 635, 636, 921, 940, 637, 638, 639, 856, 754, 858,
- 896, 915, 916, 640, 407, 408, 409, 433, 641, 479,
- 480, 459, 460, 802, 803, 411, 682, 683, 687, 412,
- 413, 693, 694, 701, 702, 705, 414, 710, 711, 415,
- 461, 462
+ 0, 530, 531, 532, 798, 533, 534, 535, 536, 537,
+ 538, 539, 620, 541, 587, 588, 589, 590, 591, 592,
+ 593, 594, 595, 596, 597, 621, 856, 622, 781, 623,
+ 711, 624, 388, 651, 508, 625, 390, 391, 392, 437,
+ 438, 439, 393, 394, 395, 396, 397, 398, 487, 488,
+ 399, 400, 401, 402, 542, 490, 599, 493, 450, 451,
+ 544, 405, 406, 407, 579, 483, 577, 578, 721, 722,
+ 649, 793, 628, 629, 630, 631, 632, 753, 892, 928,
+ 920, 921, 922, 929, 633, 634, 635, 636, 923, 895,
+ 637, 638, 924, 943, 639, 640, 641, 859, 757, 861,
+ 899, 918, 919, 642, 408, 409, 410, 434, 643, 480,
+ 481, 460, 461, 805, 806, 412, 684, 685, 689, 413,
+ 414, 695, 696, 703, 704, 707, 415, 713, 714, 416,
+ 462, 463
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1667,101 +1670,194 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 403, 439, 410, 454, 386, 646, 597, 388, 454, 402,
- 503, 655, 782, 676, 539, 700, 544, 453, 855, 722,
- 455, 686, 721, 446, 677, 455, 475, 670, 744, 676,
- 671, 786, 416, 789, 800, 713, 791, 670, 426, 430,
- 664, 733, 734, 667, 723, 439, 490, 504, 571, 484,
- 505, 417, 572, 506, 491, 668, 585, 678, 679, 680,
- 681, 672, 490, 446, 745, 431, 642, 644, 801, 643,
- 427, 672, 685, 485, 653, 654, 598, 735, 736, 446,
- 924, 656, 657, 685, 599, 418, 685, 932, 550, 501,
- 792, 490, 574, 598, 551, 685, 419, 924, 502, 552,
- 648, -35, 598, 658, 420, 553, 666, 659, 463, 787,
- 759, 464, 761, 421, 748, 465, 467, 469, 471, 473,
- 474, 477, 585, 767, 768, 769, 770, 771, 772, 773,
- 774, 775, 776, 585, 558, 857, 585, 424, 566, 441,
- 559, 673, 442, 777, 567, 585, 646, 673, 646, 673,
- 422, 646, 673, 674, 673, 870, 673, 673, 796, 871,
- 580, 673, 731, 732, 585, 798, 581, 582, 721, 707,
- 661, 794, 804, 583, 806, 865, 662, 779, 551, 808,
- 807, 810, 432, 813, 815, 809, 574, 811, 574, 814,
- 816, 817, 651, 820, 823, 652, 825, 818, 446, 821,
- 824, 939, 826, 897, 898, 903, 904, 905, 906, 779,
- 779, 807, 811, 814, 818, 907, 908, 935, 737, 738,
- 872, 821, 826, 779, 873, 434, 696, 697, 698, 699,
- 520, 448, 466, 799, 454, 464, 782, 866, 721, 867,
- 689, 690, 691, 692, 841, 842, 843, 844, 453, 423,
- 779, 455, 435, 780, 468, 900, 859, 464, 470, 574,
- 861, 464, 472, 476, 684, 464, 464, 464, 688, 779,
- 862, 464, 700, 700, 428, 695, 876, 686, 464, 456,
- 703, 863, 864, 464, 830, 706, 676, 729, 464, 730,
- 646, 429, 834, 835, 836, 585, 585, 585, 585, 585,
- 585, 585, 585, 585, 585, 585, 585, 585, 585, 585,
- 585, 934, 712, 831, 779, 464, 832, 860, 831, 443,
- 782, 886, 333, 334, 335, 779, 909, 685, 685, 726,
- 727, 728, 574, 483, 837, 838, 458, 839, 840, 478,
- 685, 488, 685, 493, 330, 845, 846, 490, 499, 500,
- 545, 546, 548, 888, 547, 549, 890, 573, 555, 554,
- 556, 579, 557, 650, 560, 743, 561, 562, 568, 563,
- 646, 564, 565, 569, 570, 598, 660, 585, 585, 665,
- 501, 704, 675, 671, 742, 751, 714, 746, 755, 854,
- 585, 440, 585, 739, 749, 756, 890, 740, 741, 447,
- 402, 752, 574, 753, 717, 725, 757, 403, 402, 410,
- 403, 386, 922, 927, 388, 403, 402, 410, 760, 402,
- 762, 763, 457, 764, 402, 481, 646, 765, 936, 766,
- -36, -34, 805, 793, -29, 440, 495, 797, 827, 440,
- 828, 812, 819, 822, 402, 869, 882, 779, 402, 891,
- 893, 901, 911, 902, 910, 447, 912, 913, -578, 923,
- 929, 928, 930, 941, 402, 600, 455, 933, 847, 942,
- 848, 851, 497, 849, 425, 496, 850, 498, 724, 829,
- 852, 887, 575, 894, 937, 895, 931, 938, 494, 891,
- 914, 402, 875, 625, 452, 715, 783, 784, 785, 874,
- 877, 879, 624, 884, 0, 881, 455, 878, 0, 0,
- 0, 0, 880, 0, 0, 0, 0, 883, 0, 0,
- 0, 0, 885, 0, 0, 0, 0, 0, 0, 0,
+ 404, 389, 411, 440, 648, 455, 387, 785, 454, 598,
+ 455, 504, 403, 540, 678, 712, 858, 545, 702, 725,
+ 657, 724, 456, 688, 679, 447, 747, 456, 476, 672,
+ 678, 789, 673, 792, 736, 737, 794, 716, 431, 666,
+ 427, 669, 803, 672, 927, 485, 726, 440, 491, 442,
+ 417, 935, 443, 670, 418, 586, 492, 680, 681, 682,
+ 683, 927, 748, 674, 432, 447, 419, 644, 646, 486,
+ 738, 739, 428, 655, 656, 687, 804, 674, -694, 420,
+ 491, 447, 658, 659, -694, 600, 687, 645, 502, 687,
+ 491, 795, 600, 601, 575, 449, 600, 503, 687, 650,
+ 551, 553, -35, 790, 660, 668, 552, 554, 661, 421,
+ 466, 468, 470, 472, 474, 475, 478, 422, 751, 559,
+ 762, 586, 764, 505, 567, 560, 506, 581, 423, 507,
+ 568, 860, 586, 582, 675, 586, 464, 583, 467, 465,
+ 675, 465, 675, 584, 586, 675, 648, 675, 648, 675,
+ 675, 648, 663, 797, 675, 676, 807, 809, 664, 782,
+ 811, 813, 552, 810, 586, 801, 812, 814, 799, 724,
+ 572, 709, 469, 424, 573, 465, 868, 770, 771, 772,
+ 773, 774, 775, 776, 777, 778, 779, 816, 575, 425,
+ 575, 471, 818, 817, 465, 820, 823, 780, 819, 942,
+ 447, 821, 824, 826, 828, 900, 901, 906, 907, 827,
+ 829, 782, 782, 810, 814, 908, 909, 910, 911, 938,
+ 429, 817, 821, 824, 829, 782, 873, 875, 734, 735,
+ 874, 876, 785, 802, 732, 430, 733, 455, 436, 724,
+ 454, 698, 699, 700, 701, 521, 844, 845, 846, 847,
+ 653, 433, 473, 654, 456, 465, 903, 691, 692, 693,
+ 694, 477, 575, 686, 465, 690, 465, 862, 465, 697,
+ 705, 864, 465, 465, 712, 435, 712, 702, 702, 449,
+ 879, 688, 866, 867, 869, 708, 870, 833, 465, 678,
+ 444, 648, 457, 837, 838, 839, 586, 586, 586, 586,
+ 586, 586, 586, 586, 586, 586, 586, 586, 586, 586,
+ 586, 586, 937, 459, 715, 782, 785, 465, 783, 834,
+ 782, 834, 835, 863, 889, 334, 335, 336, 740, 741,
+ 782, 865, 687, 687, 782, 912, 575, 729, 730, 731,
+ 840, 841, 479, 842, 843, 687, 484, 687, 331, 494,
+ 848, 849, 489, 500, 501, 491, 547, 548, 549, 546,
+ 555, 550, 574, 742, 891, 569, 556, 893, 652, 557,
+ 558, 648, 561, 562, 600, 563, 564, 565, 586, 586,
+ 566, 570, 571, 667, 580, 662, -34, 502, 706, 745,
+ 673, 586, 441, 586, 717, 746, 677, 743, 744, 749,
+ 448, 754, 752, 755, 403, 756, 575, 893, 404, 389,
+ 411, 404, 403, 925, 387, 720, 404, 458, 411, 758,
+ 403, 728, 759, 403, 930, 760, 482, 648, 403, 763,
+ 766, 765, -36, 815, 767, 768, 441, 496, 769, 939,
+ 441, 796, 800, -29, 808, 822, 825, 830, 403, 543,
+ 831, 857, 403, 894, 872, 885, 448, 782, 896, 904,
+ 905, 916, 913, 915, 926, 932, 914, -580, 403, 931,
+ 456, 602, 936, 850, 945, 944, 852, 851, 727, 933,
+ 497, 853, 426, 576, 854, 498, 832, 855, 897, 499,
+ 890, 934, 940, 894, 627, 403, 941, 495, 898, 786,
+ 917, 787, 718, 877, 882, 453, 626, 881, 878, 788,
+ 456, 886, 888, 880, 0, 0, 884, 0, 0, 0,
+ 0, 883, 0, 0, 0, 0, 0, 0, 887, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 669, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 671, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 716, 0, 575, 0, 575, 0,
- 0, 0, 0, 402, 0, 402, 0, 402, 0, 0,
+ 0, 0, 0, 0, 0, 719, 0, 576, 0, 576,
+ 0, 0, 0, 0, 0, 0, 0, 403, 0, 403,
+ 0, 403, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 627, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 404, 0, 626, 0, 0, 0, 0,
+ 0, 576, 0, 0, 0, 403, 0, 0, 0, 0,
+ 0, 0, 0, 403, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 625, 0, 0, 0, 0, 0, 0, 0, 0,
- 624, 403, 0, 0, 0, 0, 0, 0, 0, 575,
- 402, 0, 0, 0, 0, 0, 0, 0, 402, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 576, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 403, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 627, 0, 0, 0, 627, 0, 0,
+ 0, 0, 0, 0, 0, 626, 0, 0, 0, 626,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 575, 0, 0, 0, 0, 0, 0, 0,
- 0, 402, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 625, 0, 0, 0, 625, 0, 0, 0, 0, 624,
- 0, 0, 0, 624, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 576, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 403, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 575, 0, 0, 0, 0, 0, 0, 0,
- 0, 402, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 627, 627,
+ 0, 627, 0, 411, 0, 0, 0, 0, 0, 0,
+ 626, 626, 0, 626, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 627,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 625, 625, 0, 625, 0,
- 410, 0, 0, 0, 624, 624, 0, 624, 0, 0,
+ 0, 626, 0, 0, 0, 627, 0, 0, 0, 0,
+ 0, 0, 627, 0, 0, 0, 0, 626, 0, 0,
+ 0, 0, 627, 0, 626, 0, 627, 0, 0, 0,
+ 0, 0, 627, 0, 626, 0, 0, 0, 626, 0,
+ 0, 0, 452, 0, 626, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 331,
+ 0, 0, 0, 0, 0, 0, 0, 332, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 625, 0, 0, 0,
- 0, 0, 0, 0, 0, 624, 0, 0, 0, 0,
- 0, 0, 625, 0, 0, 0, 0, 0, 0, 625,
- 0, 624, 0, 0, 0, 0, 0, 0, 624, 625,
- 0, 0, 0, 625, 0, 0, 0, 0, 624, 625,
- 0, 0, 624, 0, 0, 0, 451, 0, 624, 1,
+ 0, 333, 334, 335, 336, 337, 0, 0, 0, 0,
+ 0, 0, 0, 0, 338, 339, 340, 341, 342, 343,
+ 344, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 345, 346, 347, 348,
+ 349, 350, 351, 0, 0, 0, 0, 0, 0, 0,
+ 0, 352, 0, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 0, 0, 509,
+ 510, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 511, 512,
+ 0, 331, 0, 602, 603, 0, 0, 0, 0, 604,
+ 513, 514, 515, 516, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 333, 334, 335, 336, 337, 0, 0,
+ 0, 517, 518, 519, 520, 521, 338, 339, 340, 341,
+ 342, 343, 344, 605, 606, 607, 608, 0, 609, 610,
+ 611, 612, 613, 614, 615, 616, 617, 618, 345, 346,
+ 347, 348, 349, 350, 351, 522, 523, 524, 525, 526,
+ 527, 528, 529, 352, 619, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
@@ -1794,67 +1890,21 @@ static const yytype_int16 yytable[] =
292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 0,
+ 0, 509, 510, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 330, 0, 0, 0, 0, 0, 0, 0,
- 331, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 332, 333, 334, 335, 336, 0,
- 0, 0, 0, 0, 0, 0, 0, 337, 338, 339,
- 340, 341, 342, 343, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 344,
- 345, 346, 347, 348, 349, 350, 0, 0, 0, 0,
- 0, 0, 0, 0, 351, 0, 352, 353, 354, 355,
+ 511, 512, 0, 331, 0, 602, 784, 0, 0, 0,
+ 0, 604, 513, 514, 515, 516, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 333, 334, 335, 336, 337,
+ 0, 0, 0, 517, 518, 519, 520, 521, 338, 339,
+ 340, 341, 342, 343, 344, 605, 606, 607, 608, 0,
+ 609, 610, 611, 612, 613, 614, 615, 616, 617, 618,
+ 345, 346, 347, 348, 349, 350, 351, 522, 523, 524,
+ 525, 526, 527, 528, 529, 352, 619, 353, 354, 355,
356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 0,
- 0, 508, 509, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 510, 511, 0, 330, 0, 600, 601, 0, 0, 0,
- 0, 602, 512, 513, 514, 515, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 332, 333, 334, 335, 336,
- 0, 0, 0, 516, 517, 518, 519, 520, 337, 338,
- 339, 340, 341, 342, 343, 603, 604, 605, 606, 0,
- 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
- 344, 345, 346, 347, 348, 349, 350, 521, 522, 523,
- 524, 525, 526, 527, 528, 351, 617, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 386, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -1887,66 +1937,20 @@ static const yytype_int16 yytable[] =
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 0, 0, 508, 509, 0, 0, 0, 0, 0, 0,
+ 330, 0, 0, 509, 510, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 510, 511, 0, 330, 0, 600, 781, 0, 0,
- 0, 0, 602, 512, 513, 514, 515, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 332, 333, 334, 335,
- 336, 0, 0, 0, 516, 517, 518, 519, 520, 337,
- 338, 339, 340, 341, 342, 343, 603, 604, 605, 606,
- 0, 607, 608, 609, 610, 611, 612, 613, 614, 615,
- 616, 344, 345, 346, 347, 348, 349, 350, 521, 522,
- 523, 524, 525, 526, 527, 528, 351, 617, 352, 353,
+ 0, 0, 511, 512, 0, 331, 0, 602, 0, 0,
+ 0, 0, 0, 604, 513, 514, 515, 516, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
+ 336, 337, 0, 0, 0, 517, 518, 519, 520, 521,
+ 338, 339, 340, 341, 342, 343, 344, 605, 606, 607,
+ 608, 0, 609, 610, 611, 612, 613, 614, 615, 616,
+ 617, 618, 345, 346, 347, 348, 349, 350, 351, 522,
+ 523, 524, 525, 526, 527, 528, 529, 352, 619, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 0, 0, 508, 509, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 510, 511, 0, 330, 0, 600, 0, 0,
- 0, 0, 0, 602, 512, 513, 514, 515, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 332, 333, 334,
- 335, 336, 0, 0, 0, 516, 517, 518, 519, 520,
- 337, 338, 339, 340, 341, 342, 343, 603, 604, 605,
- 606, 0, 607, 608, 609, 610, 611, 612, 613, 614,
- 615, 616, 344, 345, 346, 347, 348, 349, 350, 521,
- 522, 523, 524, 525, 526, 527, 528, 351, 617, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 1, 2, 3, 4, 5, 6, 7,
+ 384, 385, 386, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
@@ -1979,66 +1983,20 @@ static const yytype_int16 yytable[] =
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 0, 0, 508, 509, 0, 0, 0, 0,
+ 328, 329, 330, 0, 0, 509, 510, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 510, 511, 0, 330, 0, 493, 0,
- 0, 0, 0, 0, 602, 512, 513, 514, 515, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 332, 333,
- 334, 335, 336, 0, 0, 0, 516, 517, 518, 519,
- 520, 337, 338, 339, 340, 341, 342, 343, 603, 604,
- 605, 606, 0, 607, 608, 609, 610, 611, 612, 613,
- 614, 615, 616, 344, 345, 346, 347, 348, 349, 350,
- 521, 522, 523, 524, 525, 526, 527, 528, 351, 617,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 0, 0, 0, 0, 511, 512, 0, 331, 0, 494,
+ 0, 0, 0, 0, 0, 604, 513, 514, 515, 516,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
+ 334, 335, 336, 337, 0, 0, 0, 517, 518, 519,
+ 520, 521, 338, 339, 340, 341, 342, 343, 344, 605,
+ 606, 607, 608, 0, 609, 610, 611, 612, 613, 614,
+ 615, 616, 617, 618, 345, 346, 347, 348, 349, 350,
+ 351, 522, 523, 524, 525, 526, 527, 528, 529, 352,
+ 619, 353, 354, 355, 356, 357, 358, 359, 360, 361,
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 0, 0, 508, 509, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 510, 511, 0, 330, 0, 0,
- 0, 0, 0, 0, 0, 602, 512, 513, 514, 515,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 332,
- 333, 334, 335, 336, 0, 0, 0, 516, 517, 518,
- 519, 520, 337, 338, 339, 340, 341, 342, 343, 603,
- 604, 605, 606, 0, 607, 608, 609, 610, 611, 612,
- 613, 614, 615, 616, 344, 345, 346, 347, 348, 349,
- 350, 521, 522, 523, 524, 525, 526, 527, 528, 351,
- 617, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 1, 2, 3, 4, 5,
+ 382, 383, 384, 385, 386, 1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
@@ -2071,66 +2029,20 @@ static const yytype_int16 yytable[] =
296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 0, 0, 508, 509, 0, 0,
+ 326, 327, 328, 329, 330, 0, 0, 509, 510, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 510, 511, 0, 330, 0,
- 0, 0, 0, 0, 0, 0, 602, 512, 513, 514,
- 515, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 332, 333, 334, 335, 336, 0, 0, 0, 516, 517,
- 518, 519, 520, 337, 338, 339, 340, 341, 342, 343,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 344, 345, 346, 347, 348,
- 349, 350, 521, 522, 523, 524, 525, 526, 527, 528,
- 351, 0, 352, 353, 354, 355, 356, 357, 358, 359,
+ 0, 0, 0, 0, 0, 0, 511, 512, 0, 331,
+ 0, 0, 0, 0, 0, 0, 0, 604, 513, 514,
+ 515, 516, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 333, 334, 335, 336, 337, 0, 0, 0, 517,
+ 518, 519, 520, 521, 338, 339, 340, 341, 342, 343,
+ 344, 605, 606, 607, 608, 0, 609, 610, 611, 612,
+ 613, 614, 615, 616, 617, 618, 345, 346, 347, 348,
+ 349, 350, 351, 522, 523, 524, 525, 526, 527, 528,
+ 529, 352, 619, 353, 354, 355, 356, 357, 358, 359,
360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
- 380, 381, 382, 383, 384, 385, 1, 2, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 0, 0, 0, 320, 321, 322, 323, 324,
- 325, 326, 327, 328, 329, 0, 0, 508, 509, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 510, 511, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 512, 513,
- 514, 515, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 332, 333, 334, 335, 0, 0, 0, 0, 516,
- 517, 518, 519, 520, 337, 338, 339, 340, 341, 342,
- 343, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 344, 345, 346, 347,
- 348, 349, 350, 521, 522, 523, 524, 525, 526, 527,
- 528, 351, 0, 352, 353, 354, 355, 356, 357, 358,
- 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
- 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
- 379, 380, 381, 382, 383, 384, 385, 1, 2, 3,
+ 380, 381, 382, 383, 384, 385, 386, 1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
@@ -2163,66 +2075,20 @@ static const yytype_int16 yytable[] =
294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 330, 0, 0, 0, 0, 0, 0, 0, 331, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 332, 333, 334, 335, 336, 0, 0, 0,
- 0, 0, 0, 0, 0, 337, 338, 339, 340, 341,
- 342, 343, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 344, 345, 346,
- 347, 348, 349, 350, 0, 0, 0, 0, 0, 0,
- 0, 0, 351, 0, 352, 353, 354, 355, 356, 357,
+ 324, 325, 326, 327, 328, 329, 330, 0, 0, 509,
+ 510, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 511, 512,
+ 0, 331, 0, 0, 0, 0, 0, 0, 0, 604,
+ 513, 514, 515, 516, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 333, 334, 335, 336, 337, 0, 0,
+ 0, 517, 518, 519, 520, 521, 338, 339, 340, 341,
+ 342, 343, 344, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 345, 346,
+ 347, 348, 349, 350, 351, 522, 523, 524, 525, 526,
+ 527, 528, 529, 352, 0, 353, 354, 355, 356, 357,
358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
- 378, 379, 380, 381, 382, 383, 384, 385, 1, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 0, 0, 0, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 332, 333, 334, 335, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 337, 338, 339, 340,
- 341, 342, 343, 603, 0, 0, 606, 0, 607, 608,
- 0, 0, 611, 0, 0, 0, 0, 0, 344, 345,
- 346, 347, 348, 349, 350, 0, 0, 0, 0, 0,
- 0, 0, 0, 351, 0, 352, 353, 354, 355, 356,
- 357, 358, 359, 360, 361, 362, 363, 364, 365, 366,
- 367, 368, 369, 370, 371, 372, 373, 374, 375, 376,
- 377, 378, 379, 380, 381, 382, 383, 384, 385, 1,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 1,
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
@@ -2254,68 +2120,22 @@ static const yytype_int16 yytable[] =
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 0, 0, 0, 320, 321,
- 322, 323, 324, 325, 326, 327, 328, 329, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 312, 313, 314, 315, 316, 317, 0, 0, 0, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 0,
+ 0, 509, 510, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 511, 512, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 513, 514, 515, 516, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 333, 334, 335, 336, 0,
+ 0, 0, 0, 517, 518, 519, 520, 521, 338, 339,
+ 340, 341, 342, 343, 344, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 444, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 332, 333, 334, 335, 0, 0,
- 0, 0, 0, 0, 0, 0, 445, 337, 338, 339,
- 340, 341, 342, 343, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 344,
- 345, 346, 347, 348, 349, 350, 0, 0, 0, 0,
- 0, 0, 0, 0, 351, 0, 352, 353, 354, 355,
+ 345, 346, 347, 348, 349, 350, 351, 522, 523, 524,
+ 525, 526, 527, 528, 529, 352, 0, 353, 354, 355,
356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
- 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 0, 0, 0, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 330, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 332, 333, 334, 335, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 337, 338,
- 339, 340, 341, 342, 343, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 344, 345, 346, 347, 348, 349, 350, 0, 0, 0,
- 0, 0, 0, 0, 0, 351, 0, 352, 353, 354,
- 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
- 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
- 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
- 385, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 386, 1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -2346,68 +2166,22 @@ static const yytype_int16 yytable[] =
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 0, 0, 0,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 331, 0, 0, 0, 0,
+ 0, 0, 0, 332, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
+ 336, 337, 0, 0, 0, 0, 0, 0, 0, 0,
+ 338, 339, 340, 341, 342, 343, 344, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 720, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 332, 333, 334, 335,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 337,
- 338, 339, 340, 341, 342, 343, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 344, 345, 346, 347, 348, 349, 350, 0, 0,
- 0, 0, 0, 0, 0, 0, 351, 0, 352, 353,
+ 0, 0, 345, 346, 347, 348, 349, 350, 351, 0,
+ 0, 0, 0, 0, 0, 0, 0, 352, 0, 353,
354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
- 384, 385, 1, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 0, 0,
- 0, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 833, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 332, 333, 334,
- 335, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 337, 338, 339, 340, 341, 342, 343, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 344, 345, 346, 347, 348, 349, 350, 0,
- 0, 0, 0, 0, 0, 0, 0, 351, 0, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 1, 2, 3, 4, 5, 6, 7,
+ 384, 385, 386, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
@@ -2438,118 +2212,213 @@ static const yytype_int16 yytable[] =
278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 0,
- 0, 0, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 0, 0, 0, 0, 0, 0, 0, 0,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 0, 0, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 868,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 332, 333,
- 334, 335, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 337, 338, 339, 340, 341, 342, 343, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 344, 345, 346, 347, 348, 349, 350,
- 0, 0, 0, 0, 0, 0, 0, 0, 351, 0,
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
+ 334, 335, 336, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 338, 339, 340, 341, 342, 343, 344, 605,
+ 0, 0, 608, 0, 609, 610, 0, 0, 613, 0,
+ 0, 0, 0, 0, 345, 346, 347, 348, 349, 350,
+ 351, 0, 0, 0, 0, 0, 0, 0, 0, 352,
+ 0, 353, 354, 355, 356, 357, 358, 359, 360, 361,
362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
- 382, 383, 384, 385, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 0, 0, 0, 320, 321, 322, 323, 324, 325, 326,
- 327, 328, 329, 0, 0, 0, 0, 0, 0, 0,
+ 382, 383, 384, 385, 386, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 0, 0, 0, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 445, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 332,
- 333, 334, 335, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 337, 338, 339, 340, 341, 342, 343, 0,
+ 0, 333, 334, 335, 336, 0, 0, 0, 0, 0,
+ 0, 0, 0, 446, 338, 339, 340, 341, 342, 343,
+ 344, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 345, 346, 347, 348,
+ 349, 350, 351, 0, 0, 0, 0, 0, 0, 0,
+ 0, 352, 0, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 0, 0, 0, 321, 322, 323,
+ 324, 325, 326, 327, 328, 329, 330, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 344, 345, 346, 347, 348, 349,
- 350, 0, 0, 0, 0, 0, 0, 0, 0, 351,
- 0, 352, 353, 354, 355, 356, 357, 358, 359, 360,
- 361, 362, 363, 364, 365, 366, 367, 368, 369, 370,
- 371, 372, 373, 374, 375, 376, 377, 378, 379, 380,
- 381, 382, 383, 384, 385, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 0, 0, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 0, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 0, 0, 0, 0, 0, 0, 323, 0, 0, 0,
- 327, 328, 329, 0, 0, 508, 509, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 510, 511, 0, 0, 0, 645,
- 788, 0, 0, 0, 0, 0, 512, 513, 514, 515,
+ 0, 331, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 333, 334, 335, 336, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 338, 339, 340, 341,
+ 342, 343, 344, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 345, 346,
+ 347, 348, 349, 350, 351, 0, 0, 0, 0, 0,
+ 0, 0, 0, 352, 0, 353, 354, 355, 356, 357,
+ 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
+ 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
+ 378, 379, 380, 381, 382, 383, 384, 385, 386, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 0, 0, 0, 321,
+ 322, 323, 324, 325, 326, 327, 328, 329, 330, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 723, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 333, 334, 335, 336, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 338, 339,
+ 340, 341, 342, 343, 344, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 516, 517, 518,
- 519, 520, 337, 0, 0, 0, 0, 342, 343, 0,
+ 345, 346, 347, 348, 349, 350, 351, 0, 0, 0,
+ 0, 0, 0, 0, 0, 352, 0, 353, 354, 355,
+ 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
+ 366, 367, 368, 369, 370, 371, 372, 373, 374, 375,
+ 376, 377, 378, 379, 380, 381, 382, 383, 384, 385,
+ 386, 1, 2, 3, 4, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
+ 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
+ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
+ 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
+ 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
+ 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
+ 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
+ 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
+ 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
+ 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
+ 310, 311, 312, 313, 314, 315, 316, 317, 0, 0,
+ 0, 321, 322, 323, 324, 325, 326, 327, 328, 329,
+ 330, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 836, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 521, 522, 523, 524, 525, 526, 527, 528, 0,
+ 0, 0, 0, 0, 0, 0, 0, 333, 334, 335,
+ 336, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 338, 339, 340, 341, 342, 343, 344, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 364, 2, 3, 4, 5, 6, 7,
+ 0, 0, 345, 346, 347, 348, 349, 350, 351, 0,
+ 0, 0, 0, 0, 0, 0, 0, 352, 0, 353,
+ 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,
+ 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
+ 374, 375, 376, 377, 378, 379, 380, 381, 382, 383,
+ 384, 385, 386, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 0, 0, 61, 62, 63, 64, 65, 66, 67,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
@@ -2559,7 +2428,7 @@ static const yytype_int16 yytable[] =
128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 0, 166, 167,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
@@ -2574,283 +2443,332 @@ static const yytype_int16 yytable[] =
278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 0,
- 0, 0, 0, 0, 0, 323, 0, 0, 0, 327,
- 328, 329, 0, 0, 508, 509, 0, 0, 0, 0,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 0, 0, 0, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 510, 511, 0, 0, 0, 645, 899,
- 0, 0, 0, 0, 0, 512, 513, 514, 515, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 516, 517, 518, 519,
- 520, 337, 0, 0, 0, 0, 342, 343, 0, 0,
+ 871, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 333,
+ 334, 335, 336, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 338, 339, 340, 341, 342, 343, 344, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 345, 346, 347, 348, 349, 350,
+ 351, 0, 0, 0, 0, 0, 0, 0, 0, 352,
+ 0, 353, 354, 355, 356, 357, 358, 359, 360, 361,
+ 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
+ 372, 373, 374, 375, 376, 377, 378, 379, 380, 381,
+ 382, 383, 384, 385, 386, 1, 2, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 0, 0, 0, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 521, 522, 523, 524, 525, 526, 527, 528, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 364, 2, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 0, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 0, 0,
- 0, 0, 0, 0, 323, 0, 0, 0, 327, 328,
- 329, 0, 0, 508, 509, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 510, 511, 0, 0, 584, 0, 0, 0,
- 0, 0, 0, 0, 512, 513, 514, 515, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 516, 517, 518, 519, 520,
- 337, 0, 0, 0, 0, 342, 343, 0, 0, 0,
+ 0, 333, 334, 335, 336, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 338, 339, 340, 341, 342, 343,
+ 344, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 345, 346, 347, 348,
+ 349, 350, 351, 0, 0, 0, 0, 0, 0, 0,
+ 0, 352, 0, 353, 354, 355, 356, 357, 358, 359,
+ 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
+ 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
+ 380, 381, 382, 383, 384, 385, 386, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 521,
- 522, 523, 524, 525, 526, 527, 528, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 0, 647, 791, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 364, 2, 3, 4, 5, 6, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 0,
- 0, 61, 62, 63, 64, 65, 66, 67, 68, 69,
- 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
- 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
- 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
- 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
- 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 0, 166, 167, 168, 169,
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
- 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
- 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
- 250, 251, 252, 253, 254, 255, 256, 257, 258, 259,
- 260, 261, 262, 263, 264, 265, 266, 267, 268, 269,
- 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
- 280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
- 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
- 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 0, 0, 0,
- 0, 0, 0, 323, 0, 0, 0, 327, 328, 329,
- 0, 0, 508, 509, 0, 0, 0, 0, 0, 0,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 510, 511, 0, 0, 0, 645, 0, 0, 0,
- 0, 0, 0, 512, 513, 514, 515, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 516, 517, 518, 519, 520, 337,
- 0, 0, 0, 0, 342, 343, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 0, 647, 902, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 521, 522,
- 523, 524, 525, 526, 527, 528, 0, 0, 0, 0,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 364, 2, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 0, 0,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 0, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 0, 0, 0, 0,
- 0, 0, 323, 0, 0, 0, 327, 328, 329, 0,
- 0, 508, 509, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 510, 511, 0, 0, 747, 0, 0, 0, 0, 0,
- 0, 0, 512, 513, 514, 515, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 585, 0, 0, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 516, 517, 518, 519, 520, 337, 0,
- 0, 0, 0, 342, 343, 0, 0, 0, 0, 0,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 521, 522, 523,
- 524, 525, 526, 527, 528, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 364,
- 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 0, 0, 61,
- 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 0, 166, 167, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 0, 0, 0, 0, 0,
- 0, 323, 0, 0, 0, 327, 328, 329, 0, 0,
- 508, 509, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 510,
- 511, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 758, 512, 513, 514, 515, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 516, 517, 518, 519, 520, 337, 0, 0,
- 0, 0, 342, 343, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 0, 647, 0, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 521, 522, 523, 524,
- 525, 526, 527, 528, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 364, 2,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 0, 0, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 0, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 0, 0, 0, 0, 0, 0,
- 323, 0, 0, 0, 327, 328, 329, 0, 0, 508,
- 509, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 510, 511,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 512, 513, 514, 515, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 516, 517, 518, 519, 520, 337, 0, 0, 0,
- 0, 342, 343, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 750, 0, 0, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 521, 522, 523, 524, 525,
- 526, 527, 528, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 364, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 0, 0, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 0, 166, 167, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 0, 0, 0, 0, 0, 0, 323,
- 0, 0, 0, 327, 328, 329, 0, 0, 508, 509,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 510, 511, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 512,
- 513, 514, 515, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 761, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 516, 517, 518, 519, 520, 337, 0, 0, 0, 0,
- 342, 663, 0, 0, 0, 0, 0, 0, 0, 0,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 521, 522, 523, 524, 525, 526,
- 527, 528, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 364, 2, 3, 4,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
@@ -2867,7 +2785,7 @@ static const yytype_int16 yytable[] =
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 0, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
@@ -2882,157 +2800,339 @@ static const yytype_int16 yytable[] =
285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 0, 0, 0, 0, 0, 0, 323, 0,
- 0, 0, 327, 328, 329, 0, 0, 508, 509, 0,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 510, 511, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 512, 513,
- 514, 515, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 516,
- 517, 518, 519, 708, 337, 0, 0, 0, 0, 342,
- 343, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 521, 522, 523, 524, 525, 526, 527,
- 528, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 364, 2, 3, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 0, 0, 61, 62, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 0,
- 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 0, 0, 0, 0, 0, 0, 323, 0, 0,
- 0, 327, 328, 329, 0, 0, 0, 0, 0, 0,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 517, 518, 519, 520, 521, 338, 0, 0, 0, 0,
+ 343, 665, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 509, 510,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 511, 512, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 513,
+ 514, 515, 516, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 517, 518, 519, 520, 710, 338, 0, 0, 0, 0,
+ 343, 344, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 522, 523, 524, 525, 526, 527,
+ 528, 529, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 365, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 0, 0, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
+ 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 0, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
+ 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
+ 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
+ 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
+ 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
+ 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
+ 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 0, 0, 0, 0, 0, 0, 324,
+ 0, 0, 0, 328, 329, 330, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 337, 0, 0, 0, 0, 342, 343
+ 0, 0, 0, 0, 0, 338, 0, 0, 0, 0,
+ 343, 344
};
static const yytype_int16 yycheck[] =
{
- 0, 391, 0, 410, 0, 502, 490, 0, 415, 0,
- 443, 511, 631, 551, 448, 561, 449, 410, 750, 578,
- 410, 556, 576, 399, 353, 415, 422, 353, 341, 567,
- 356, 643, 354, 645, 353, 570, 648, 353, 358, 364,
- 537, 336, 337, 361, 579, 435, 356, 358, 357, 390,
- 361, 354, 361, 364, 364, 373, 490, 386, 387, 388,
- 389, 387, 356, 439, 377, 390, 499, 500, 387, 363,
- 390, 387, 556, 414, 508, 509, 356, 372, 373, 455,
- 912, 334, 335, 567, 364, 354, 570, 919, 355, 354,
- 649, 356, 482, 356, 361, 579, 354, 929, 363, 355,
- 363, 354, 356, 356, 354, 361, 540, 360, 387, 363,
- 610, 390, 612, 354, 598, 417, 418, 419, 420, 421,
- 422, 423, 556, 343, 344, 345, 346, 347, 348, 349,
- 350, 351, 352, 567, 355, 754, 570, 356, 355, 361,
- 361, 549, 364, 363, 361, 579, 643, 555, 645, 557,
- 354, 648, 560, 549, 562, 357, 564, 565, 658, 361,
- 355, 569, 332, 333, 598, 662, 361, 355, 722, 565,
- 355, 355, 355, 361, 355, 787, 361, 361, 361, 355,
- 361, 355, 364, 355, 355, 361, 576, 361, 578, 361,
- 361, 355, 361, 355, 355, 364, 355, 361, 574, 361,
- 361, 933, 361, 355, 355, 355, 355, 355, 355, 361,
- 361, 361, 361, 361, 361, 355, 355, 355, 338, 339,
- 357, 361, 361, 361, 361, 355, 386, 387, 388, 389,
- 390, 372, 387, 667, 641, 390, 855, 359, 792, 361,
- 386, 387, 388, 389, 733, 734, 735, 736, 641, 354,
- 361, 641, 361, 364, 387, 867, 756, 390, 387, 649,
- 760, 390, 387, 387, 387, 390, 390, 390, 387, 361,
- 362, 390, 818, 819, 354, 387, 811, 812, 390, 364,
- 387, 778, 779, 390, 717, 387, 824, 366, 390, 368,
- 787, 354, 726, 727, 728, 729, 730, 731, 732, 733,
- 734, 735, 736, 737, 738, 739, 740, 741, 742, 743,
- 744, 923, 387, 361, 361, 390, 364, 364, 361, 390,
- 939, 364, 379, 380, 381, 361, 362, 811, 812, 369,
- 370, 371, 722, 358, 729, 730, 390, 731, 732, 390,
- 824, 390, 826, 358, 356, 737, 738, 356, 390, 390,
- 355, 390, 363, 853, 364, 361, 856, 364, 361, 363,
- 361, 363, 361, 390, 361, 342, 361, 361, 355, 361,
- 867, 361, 361, 361, 354, 356, 355, 811, 812, 354,
- 354, 353, 390, 356, 340, 354, 357, 357, 354, 357,
- 824, 391, 826, 376, 359, 354, 896, 375, 374, 399,
- 391, 364, 792, 364, 390, 390, 364, 407, 399, 407,
- 410, 407, 909, 913, 407, 415, 407, 415, 354, 410,
- 362, 364, 415, 364, 415, 425, 923, 364, 928, 364,
- 354, 354, 363, 390, 355, 435, 434, 390, 355, 439,
- 355, 361, 361, 361, 435, 357, 353, 361, 439, 856,
- 398, 353, 390, 387, 359, 455, 355, 354, 358, 363,
- 355, 364, 402, 364, 455, 358, 856, 358, 739, 359,
- 740, 743, 439, 741, 336, 435, 742, 439, 581, 716,
- 744, 831, 482, 858, 929, 858, 918, 930, 433, 896,
- 896, 482, 809, 493, 407, 572, 641, 641, 641, 807,
- 812, 816, 493, 824, -1, 819, 896, 814, -1, -1,
- -1, -1, 818, -1, -1, -1, -1, 822, -1, -1,
- -1, -1, 826, -1, -1, -1, -1, -1, -1, -1,
+ 0, 0, 0, 392, 503, 411, 0, 633, 411, 491,
+ 416, 444, 0, 449, 552, 568, 753, 450, 562, 579,
+ 512, 577, 411, 557, 354, 400, 342, 416, 423, 354,
+ 568, 645, 357, 647, 337, 338, 650, 571, 365, 538,
+ 359, 362, 354, 354, 915, 391, 580, 436, 357, 362,
+ 355, 922, 365, 374, 355, 491, 365, 387, 388, 389,
+ 390, 932, 378, 388, 391, 440, 355, 500, 501, 415,
+ 373, 374, 391, 509, 510, 557, 388, 388, 356, 355,
+ 357, 456, 335, 336, 362, 357, 568, 364, 355, 571,
+ 357, 651, 357, 365, 483, 373, 357, 364, 580, 364,
+ 356, 356, 355, 364, 357, 541, 362, 362, 361, 355,
+ 418, 419, 420, 421, 422, 423, 424, 355, 600, 356,
+ 612, 557, 614, 359, 356, 362, 362, 356, 355, 365,
+ 362, 757, 568, 362, 550, 571, 388, 356, 388, 391,
+ 556, 391, 558, 362, 580, 561, 645, 563, 647, 565,
+ 566, 650, 356, 356, 570, 550, 356, 356, 362, 362,
+ 356, 356, 362, 362, 600, 664, 362, 362, 660, 725,
+ 358, 566, 388, 355, 362, 391, 790, 344, 345, 346,
+ 347, 348, 349, 350, 351, 352, 353, 356, 577, 357,
+ 579, 388, 356, 362, 391, 356, 356, 364, 362, 936,
+ 575, 362, 362, 356, 356, 356, 356, 356, 356, 362,
+ 362, 362, 362, 362, 362, 356, 356, 356, 356, 356,
+ 355, 362, 362, 362, 362, 362, 358, 358, 333, 334,
+ 362, 362, 858, 669, 367, 355, 369, 643, 362, 795,
+ 643, 387, 388, 389, 390, 391, 736, 737, 738, 739,
+ 362, 365, 388, 365, 643, 391, 870, 387, 388, 389,
+ 390, 388, 651, 388, 391, 388, 391, 759, 391, 388,
+ 388, 763, 391, 391, 827, 356, 829, 821, 822, 373,
+ 814, 815, 781, 782, 360, 388, 362, 720, 391, 827,
+ 391, 790, 365, 729, 730, 731, 732, 733, 734, 735,
+ 736, 737, 738, 739, 740, 741, 742, 743, 744, 745,
+ 746, 747, 926, 391, 388, 362, 942, 391, 365, 362,
+ 362, 362, 365, 365, 365, 380, 381, 382, 339, 340,
+ 362, 363, 814, 815, 362, 363, 725, 370, 371, 372,
+ 732, 733, 391, 734, 735, 827, 359, 829, 357, 359,
+ 740, 741, 391, 391, 391, 357, 391, 365, 364, 356,
+ 364, 362, 365, 377, 856, 356, 362, 859, 391, 362,
+ 362, 870, 362, 362, 357, 362, 362, 362, 814, 815,
+ 362, 362, 355, 355, 364, 356, 355, 355, 354, 341,
+ 357, 827, 392, 829, 358, 343, 391, 376, 375, 358,
+ 400, 355, 360, 365, 392, 365, 795, 899, 408, 408,
+ 408, 411, 400, 912, 408, 391, 416, 416, 416, 355,
+ 408, 391, 355, 411, 916, 365, 426, 926, 416, 355,
+ 365, 363, 355, 362, 365, 365, 436, 435, 365, 931,
+ 440, 391, 391, 356, 364, 362, 362, 356, 436, 449,
+ 356, 358, 440, 859, 358, 354, 456, 362, 399, 354,
+ 388, 355, 360, 356, 364, 356, 391, 359, 456, 365,
+ 859, 359, 359, 742, 360, 365, 744, 743, 582, 403,
+ 436, 745, 337, 483, 746, 440, 719, 747, 861, 440,
+ 834, 921, 932, 899, 494, 483, 933, 434, 861, 643,
+ 899, 643, 573, 810, 819, 408, 494, 817, 812, 643,
+ 899, 825, 829, 815, -1, -1, 822, -1, -1, -1,
+ -1, 821, -1, -1, -1, -1, -1, -1, 827, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 545, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 546, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 574, -1, 576, -1, 578, -1,
- -1, -1, -1, 574, -1, 576, -1, 578, -1, -1,
+ -1, -1, -1, -1, -1, 575, -1, 577, -1, 579,
+ -1, -1, -1, -1, -1, -1, -1, 575, -1, 577,
+ -1, 579, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 633, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 643, -1, 633, -1, -1, -1, -1,
+ -1, 651, -1, -1, -1, 643, -1, -1, -1, -1,
+ -1, -1, -1, 651, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 631, -1, -1, -1, -1, -1, -1, -1, -1,
- 631, 641, -1, -1, -1, -1, -1, -1, -1, 649,
- 641, -1, -1, -1, -1, -1, -1, -1, 649, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 725, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 725, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 753, -1, -1, -1, 757, -1, -1,
+ -1, -1, -1, -1, -1, 753, -1, -1, -1, 757,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 722, -1, -1, -1, -1, -1, -1, -1,
- -1, 722, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 750, -1, -1, -1, 754, -1, -1, -1, -1, 750,
- -1, -1, -1, 754, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 795, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 795, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 792, -1, -1, -1, -1, -1, -1, -1,
- -1, 792, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 858, 859,
+ -1, 861, -1, 861, -1, -1, -1, -1, -1, -1,
+ 858, 859, -1, 861, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 899,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 855, 856, -1, 858, -1,
- 858, -1, -1, -1, 855, 856, -1, 858, -1, -1,
+ -1, 899, -1, -1, -1, 915, -1, -1, -1, -1,
+ -1, -1, 922, -1, -1, -1, -1, 915, -1, -1,
+ -1, -1, 932, -1, 922, -1, 936, -1, -1, -1,
+ -1, -1, 942, -1, 932, -1, -1, -1, 936, -1,
+ -1, -1, 0, -1, 942, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 357,
+ -1, -1, -1, -1, -1, -1, -1, 365, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 896, -1, -1, -1,
- -1, -1, -1, -1, -1, 896, -1, -1, -1, -1,
- -1, -1, 912, -1, -1, -1, -1, -1, -1, 919,
- -1, 912, -1, -1, -1, -1, -1, -1, 919, 929,
- -1, -1, -1, 933, -1, -1, -1, -1, 929, 939,
- -1, -1, 933, -1, -1, -1, 0, -1, 939, 3,
+ -1, 379, 380, 381, 382, 383, -1, -1, -1, -1,
+ -1, -1, -1, -1, 392, 393, 394, 395, 396, 397,
+ 398, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 414, 415, 416, 417,
+ 418, 419, 420, -1, -1, -1, -1, -1, -1, -1,
+ -1, 429, -1, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, -1, -1, 335,
+ 336, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ -1, 357, -1, 359, 360, -1, -1, -1, -1, 365,
+ 366, 367, 368, 369, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 379, 380, 381, 382, 383, -1, -1,
+ -1, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, 399, 400, 401, 402, -1, 404, 405,
+ 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, 430, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
@@ -3065,67 +3165,21 @@ static const yytype_int16 yycheck[] =
294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
314, 315, 316, 317, 318, 319, 320, 321, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, -1,
+ -1, 335, 336, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 356, -1, -1, -1, -1, -1, -1, -1,
- 364, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 378, 379, 380, 381, 382, -1,
- -1, -1, -1, -1, -1, -1, -1, 391, 392, 393,
- 394, 395, 396, 397, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 413,
- 414, 415, 416, 417, 418, 419, -1, -1, -1, -1,
- -1, -1, -1, -1, 428, -1, 430, 431, 432, 433,
+ 354, 355, -1, 357, -1, 359, 360, -1, -1, -1,
+ -1, 365, 366, 367, 368, 369, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 379, 380, 381, 382, 383,
+ -1, -1, -1, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, 399, 400, 401, 402, -1,
+ 404, 405, 406, 407, 408, 409, 410, 411, 412, 413,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, 430, 431, 432, 433,
434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, -1,
- -1, 334, 335, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 353, 354, -1, 356, -1, 358, 359, -1, -1, -1,
- -1, 364, 365, 366, 367, 368, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 378, 379, 380, 381, 382,
- -1, -1, -1, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 401, -1,
- 403, 404, 405, 406, 407, 408, 409, 410, 411, 412,
- 413, 414, 415, 416, 417, 418, 419, 420, 421, 422,
- 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 464, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
@@ -3158,66 +3212,20 @@ static const yytype_int16 yycheck[] =
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- -1, -1, 334, 335, -1, -1, -1, -1, -1, -1,
+ 332, -1, -1, 335, 336, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 353, 354, -1, 356, -1, 358, 359, -1, -1,
- -1, -1, 364, 365, 366, 367, 368, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 378, 379, 380, 381,
- 382, -1, -1, -1, 386, 387, 388, 389, 390, 391,
+ -1, -1, 354, 355, -1, 357, -1, 359, -1, -1,
+ -1, -1, -1, 365, 366, 367, 368, 369, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 379, 380, 381,
+ 382, 383, -1, -1, -1, 387, 388, 389, 390, 391,
392, 393, 394, 395, 396, 397, 398, 399, 400, 401,
- -1, 403, 404, 405, 406, 407, 408, 409, 410, 411,
+ 402, -1, 404, 405, 406, 407, 408, 409, 410, 411,
412, 413, 414, 415, 416, 417, 418, 419, 420, 421,
422, 423, 424, 425, 426, 427, 428, 429, 430, 431,
432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
- 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, -1, -1, 334, 335, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 353, 354, -1, 356, -1, 358, -1, -1,
- -1, -1, -1, 364, 365, 366, 367, 368, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 378, 379, 380,
- 381, 382, -1, -1, -1, 386, 387, 388, 389, 390,
- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
- 401, -1, 403, 404, 405, 406, 407, 408, 409, 410,
- 411, 412, 413, 414, 415, 416, 417, 418, 419, 420,
- 421, 422, 423, 424, 425, 426, 427, 428, 429, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 3, 4, 5, 6, 7, 8, 9,
+ 462, 463, 464, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -3250,66 +3258,20 @@ static const yytype_int16 yycheck[] =
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, -1, -1, 334, 335, -1, -1, -1, -1,
+ 330, 331, 332, -1, -1, 335, 336, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 353, 354, -1, 356, -1, 358, -1,
- -1, -1, -1, -1, 364, 365, 366, 367, 368, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 378, 379,
- 380, 381, 382, -1, -1, -1, 386, 387, 388, 389,
+ -1, -1, -1, -1, 354, 355, -1, 357, -1, 359,
+ -1, -1, -1, -1, -1, 365, 366, 367, 368, 369,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 379,
+ 380, 381, 382, 383, -1, -1, -1, 387, 388, 389,
390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
- 400, 401, -1, 403, 404, 405, 406, 407, 408, 409,
+ 400, 401, 402, -1, 404, 405, 406, 407, 408, 409,
410, 411, 412, 413, 414, 415, 416, 417, 418, 419,
420, 421, 422, 423, 424, 425, 426, 427, 428, 429,
430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 462, 463, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- 319, 320, 321, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, -1, -1, 334, 335, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 353, 354, -1, 356, -1, -1,
- -1, -1, -1, -1, -1, 364, 365, 366, 367, 368,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 378,
- 379, 380, 381, 382, -1, -1, -1, 386, 387, 388,
- 389, 390, 391, 392, 393, 394, 395, 396, 397, 398,
- 399, 400, 401, -1, 403, 404, 405, 406, 407, 408,
- 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
- 419, 420, 421, 422, 423, 424, 425, 426, 427, 428,
- 429, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 3, 4, 5, 6, 7,
+ 460, 461, 462, 463, 464, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
@@ -3342,66 +3304,20 @@ static const yytype_int16 yycheck[] =
298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
318, 319, 320, 321, 322, 323, 324, 325, 326, 327,
- 328, 329, 330, 331, -1, -1, 334, 335, -1, -1,
+ 328, 329, 330, 331, 332, -1, -1, 335, 336, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 353, 354, -1, 356, -1,
- -1, -1, -1, -1, -1, -1, 364, 365, 366, 367,
- 368, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 378, 379, 380, 381, 382, -1, -1, -1, 386, 387,
+ -1, -1, -1, -1, -1, -1, 354, 355, -1, 357,
+ -1, -1, -1, -1, -1, -1, -1, 365, 366, 367,
+ 368, 369, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 379, 380, 381, 382, 383, -1, -1, -1, 387,
388, 389, 390, 391, 392, 393, 394, 395, 396, 397,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 413, 414, 415, 416, 417,
+ 398, 399, 400, 401, 402, -1, 404, 405, 406, 407,
+ 408, 409, 410, 411, 412, 413, 414, 415, 416, 417,
418, 419, 420, 421, 422, 423, 424, 425, 426, 427,
- 428, -1, 430, 431, 432, 433, 434, 435, 436, 437,
+ 428, 429, 430, 431, 432, 433, 434, 435, 436, 437,
438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 462, 463, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
- 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
- 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
- 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
- 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
- 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
- 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
- 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
- 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
- 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
- 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
- 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
- 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
- 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
- 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
- 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
- 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
- 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
- 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
- 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, -1, -1, -1, 322, 323, 324, 325, 326,
- 327, 328, 329, 330, 331, -1, -1, 334, 335, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 353, 354, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 365, 366,
- 367, 368, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 378, 379, 380, 381, -1, -1, -1, -1, 386,
- 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
- 397, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 413, 414, 415, 416,
- 417, 418, 419, 420, 421, 422, 423, 424, 425, 426,
- 427, 428, -1, 430, 431, 432, 433, 434, 435, 436,
- 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
- 447, 448, 449, 450, 451, 452, 453, 454, 455, 456,
- 457, 458, 459, 460, 461, 462, 463, 3, 4, 5,
+ 458, 459, 460, 461, 462, 463, 464, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
@@ -3434,66 +3350,20 @@ static const yytype_int16 yycheck[] =
296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
316, 317, 318, 319, 320, 321, 322, 323, 324, 325,
- 326, 327, 328, 329, 330, 331, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 356, -1, -1, -1, -1, -1, -1, -1, 364, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 378, 379, 380, 381, 382, -1, -1, -1,
- -1, -1, -1, -1, -1, 391, 392, 393, 394, 395,
- 396, 397, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 413, 414, 415,
- 416, 417, 418, 419, -1, -1, -1, -1, -1, -1,
- -1, -1, 428, -1, 430, 431, 432, 433, 434, 435,
+ 326, 327, 328, 329, 330, 331, 332, -1, -1, 335,
+ 336, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 354, 355,
+ -1, 357, -1, -1, -1, -1, -1, -1, -1, 365,
+ 366, 367, 368, 369, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 379, 380, 381, 382, 383, -1, -1,
+ -1, 387, 388, 389, 390, 391, 392, 393, 394, 395,
+ 396, 397, 398, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 414, 415,
+ 416, 417, 418, 419, 420, 421, 422, 423, 424, 425,
+ 426, 427, 428, 429, -1, 431, 432, 433, 434, 435,
436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
- 456, 457, 458, 459, 460, 461, 462, 463, 3, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, -1, -1, -1, 322, 323, 324,
- 325, 326, 327, 328, 329, 330, 331, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 378, 379, 380, 381, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 391, 392, 393, 394,
- 395, 396, 397, 398, -1, -1, 401, -1, 403, 404,
- -1, -1, 407, -1, -1, -1, -1, -1, 413, 414,
- 415, 416, 417, 418, 419, -1, -1, -1, -1, -1,
- -1, -1, -1, 428, -1, 430, 431, 432, 433, 434,
- 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
- 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
- 455, 456, 457, 458, 459, 460, 461, 462, 463, 3,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
@@ -3525,68 +3395,22 @@ static const yytype_int16 yycheck[] =
284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, -1, -1, 322, 323,
- 324, 325, 326, 327, 328, 329, 330, 331, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 314, 315, 316, 317, 318, 319, -1, -1, -1, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, -1,
+ -1, 335, 336, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 354, 355, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 366, 367, 368, 369, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 379, 380, 381, 382, -1,
+ -1, -1, -1, 387, 388, 389, 390, 391, 392, 393,
+ 394, 395, 396, 397, 398, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 364, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 378, 379, 380, 381, -1, -1,
- -1, -1, -1, -1, -1, -1, 390, 391, 392, 393,
- 394, 395, 396, 397, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 413,
- 414, 415, 416, 417, 418, 419, -1, -1, -1, -1,
- -1, -1, -1, -1, 428, -1, 430, 431, 432, 433,
+ 414, 415, 416, 417, 418, 419, 420, 421, 422, 423,
+ 424, 425, 426, 427, 428, 429, -1, 431, 432, 433,
434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
- 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, -1, -1, -1, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 356, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 378, 379, 380, 381, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 391, 392,
- 393, 394, 395, 396, 397, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 413, 414, 415, 416, 417, 418, 419, -1, -1, -1,
- -1, -1, -1, -1, -1, 428, -1, 430, 431, 432,
- 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
- 443, 444, 445, 446, 447, 448, 449, 450, 451, 452,
- 453, 454, 455, 456, 457, 458, 459, 460, 461, 462,
- 463, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 464, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
@@ -3617,68 +3441,22 @@ static const yytype_int16 yycheck[] =
282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, -1, -1, -1,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 357, -1, -1, -1, -1,
+ -1, -1, -1, 365, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 379, 380, 381,
+ 382, 383, -1, -1, -1, -1, -1, -1, -1, -1,
+ 392, 393, 394, 395, 396, 397, 398, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 359, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 378, 379, 380, 381,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 391,
- 392, 393, 394, 395, 396, 397, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 413, 414, 415, 416, 417, 418, 419, -1, -1,
- -1, -1, -1, -1, -1, -1, 428, -1, 430, 431,
+ -1, -1, 414, 415, 416, 417, 418, 419, 420, -1,
+ -1, -1, -1, -1, -1, -1, -1, 429, -1, 431,
432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
- 462, 463, 3, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, 322, 323, 324, 325, 326, 327, 328, 329, 330,
- 331, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 359, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 378, 379, 380,
- 381, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 391, 392, 393, 394, 395, 396, 397, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 413, 414, 415, 416, 417, 418, 419, -1,
- -1, -1, -1, -1, -1, -1, -1, 428, -1, 430,
- 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
- 441, 442, 443, 444, 445, 446, 447, 448, 449, 450,
- 451, 452, 453, 454, 455, 456, 457, 458, 459, 460,
- 461, 462, 463, 3, 4, 5, 6, 7, 8, 9,
+ 462, 463, 464, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
@@ -3709,118 +3487,213 @@ static const yytype_int16 yycheck[] =
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, -1,
- -1, -1, 322, 323, 324, 325, 326, 327, 328, 329,
- 330, 331, -1, -1, -1, -1, -1, -1, -1, -1,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 359,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 378, 379,
- 380, 381, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 391, 392, 393, 394, 395, 396, 397, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 413, 414, 415, 416, 417, 418, 419,
- -1, -1, -1, -1, -1, -1, -1, -1, 428, -1,
- 430, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 379,
+ 380, 381, 382, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 392, 393, 394, 395, 396, 397, 398, 399,
+ -1, -1, 402, -1, 404, 405, -1, -1, 408, -1,
+ -1, -1, -1, -1, 414, 415, 416, 417, 418, 419,
+ 420, -1, -1, -1, -1, -1, -1, -1, -1, 429,
+ -1, 431, 432, 433, 434, 435, 436, 437, 438, 439,
440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
- 460, 461, 462, 463, 3, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- -1, -1, -1, 322, 323, 324, 325, 326, 327, 328,
- 329, 330, 331, -1, -1, -1, -1, -1, -1, -1,
+ 460, 461, 462, 463, 464, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, -1, -1, -1, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 365, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 379, 380, 381, 382, -1, -1, -1, -1, -1,
+ -1, -1, -1, 391, 392, 393, 394, 395, 396, 397,
+ 398, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 414, 415, 416, 417,
+ 418, 419, 420, -1, -1, -1, -1, -1, -1, -1,
+ -1, 429, -1, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+ 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
+ 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
+ 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
+ 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
+ 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
+ 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
+ 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
+ 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
+ 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
+ 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
+ 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
+ 316, 317, 318, 319, -1, -1, -1, 323, 324, 325,
+ 326, 327, 328, 329, 330, 331, 332, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 357, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 378,
- 379, 380, 381, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 391, 392, 393, 394, 395, 396, 397, -1,
+ -1, -1, -1, 379, 380, 381, 382, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 392, 393, 394, 395,
+ 396, 397, 398, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 414, 415,
+ 416, 417, 418, 419, 420, -1, -1, -1, -1, -1,
+ -1, -1, -1, 429, -1, 431, 432, 433, 434, 435,
+ 436, 437, 438, 439, 440, 441, 442, 443, 444, 445,
+ 446, 447, 448, 449, 450, 451, 452, 453, 454, 455,
+ 456, 457, 458, 459, 460, 461, 462, 463, 464, 3,
+ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
+ 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
+ 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
+ 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 169, 170, 171, 172, 173,
+ 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
+ 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
+ 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
+ 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
+ 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
+ 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
+ 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
+ 314, 315, 316, 317, 318, 319, -1, -1, -1, 323,
+ 324, 325, 326, 327, 328, 329, 330, 331, 332, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 413, 414, 415, 416, 417, 418,
- 419, -1, -1, -1, -1, -1, -1, -1, -1, 428,
- -1, 430, 431, 432, 433, 434, 435, 436, 437, 438,
- 439, 440, 441, 442, 443, 444, 445, 446, 447, 448,
- 449, 450, 451, 452, 453, 454, 455, 456, 457, 458,
- 459, 460, 461, 462, 463, 4, 5, 6, 7, 8,
- 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
- 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
- 59, 60, -1, -1, 63, 64, 65, 66, 67, 68,
- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
- 89, 90, 91, 92, 93, 94, 95, 96, 97, 98,
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
- 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
- 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
- 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
- 159, 160, 161, 162, 163, 164, 165, 166, -1, 168,
- 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
- 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
- 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
- 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
- 239, 240, 241, 242, 243, 244, 245, 246, 247, 248,
- 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,
- 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
- 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
- 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
- 289, 290, 291, 292, 293, 294, 295, 296, 297, 298,
- 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
- 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
- -1, -1, -1, -1, -1, -1, 325, -1, -1, -1,
- 329, 330, 331, -1, -1, 334, 335, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 353, 354, -1, -1, -1, 358,
- 359, -1, -1, -1, -1, -1, 365, 366, 367, 368,
+ -1, -1, -1, -1, -1, -1, 360, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 386, 387, 388,
- 389, 390, 391, -1, -1, -1, -1, 396, 397, -1,
+ -1, -1, -1, -1, -1, 379, 380, 381, 382, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 392, 393,
+ 394, 395, 396, 397, 398, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 414, 415, 416, 417, 418, 419, 420, -1, -1, -1,
+ -1, -1, -1, -1, -1, 429, -1, 431, 432, 433,
+ 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
+ 444, 445, 446, 447, 448, 449, 450, 451, 452, 453,
+ 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
+ 464, 3, 4, 5, 6, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
+ 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
+ 62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
+ 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
+ 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
+ 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
+ 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
+ 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
+ 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
+ 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
+ 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
+ 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
+ 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
+ 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
+ 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
+ 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 318, 319, -1, -1,
+ -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
+ 332, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 360, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 420, 421, 422, 423, 424, 425, 426, 427, -1,
+ -1, -1, -1, -1, -1, -1, -1, 379, 380, 381,
+ 382, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 392, 393, 394, 395, 396, 397, 398, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 442, 4, 5, 6, 7, 8, 9,
+ -1, -1, 414, 415, 416, 417, 418, 419, 420, -1,
+ -1, -1, -1, -1, -1, -1, -1, 429, -1, 431,
+ 432, 433, 434, 435, 436, 437, 438, 439, 440, 441,
+ 442, 443, 444, 445, 446, 447, 448, 449, 450, 451,
+ 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
+ 462, 463, 464, 3, 4, 5, 6, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, -1, -1, 63, 64, 65, 66, 67, 68, 69,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
90, 91, 92, 93, 94, 95, 96, 97, 98, 99,
@@ -3830,7 +3703,7 @@ static const yytype_int16 yycheck[] =
130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, -1, 168, 169,
+ 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
@@ -3845,283 +3718,332 @@ static const yytype_int16 yycheck[] =
280, 281, 282, 283, 284, 285, 286, 287, 288, 289,
290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
- 310, 311, 312, 313, 314, 315, 316, 317, 318, -1,
- -1, -1, -1, -1, -1, 325, -1, -1, -1, 329,
- 330, 331, -1, -1, 334, 335, -1, -1, -1, -1,
+ 310, 311, 312, 313, 314, 315, 316, 317, 318, 319,
+ -1, -1, -1, 323, 324, 325, 326, 327, 328, 329,
+ 330, 331, 332, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 353, 354, -1, -1, -1, 358, 359,
- -1, -1, -1, -1, -1, 365, 366, 367, 368, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 386, 387, 388, 389,
- 390, 391, -1, -1, -1, -1, 396, 397, -1, -1,
+ 360, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 379,
+ 380, 381, 382, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 392, 393, 394, 395, 396, 397, 398, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 414, 415, 416, 417, 418, 419,
+ 420, -1, -1, -1, -1, -1, -1, -1, -1, 429,
+ -1, 431, 432, 433, 434, 435, 436, 437, 438, 439,
+ 440, 441, 442, 443, 444, 445, 446, 447, 448, 449,
+ 450, 451, 452, 453, 454, 455, 456, 457, 458, 459,
+ 460, 461, 462, 463, 464, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
+ 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
+ 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
+ 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
+ 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
+ 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
+ 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
+ 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
+ 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
+ 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
+ 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, -1, -1, -1, 323, 324, 325, 326, 327,
+ 328, 329, 330, 331, 332, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 420, 421, 422, 423, 424, 425, 426, 427, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 442, 4, 5, 6, 7, 8, 9, 10,
- 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
- -1, -1, 63, 64, 65, 66, 67, 68, 69, 70,
- 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
- 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
- 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
- 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,
- 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
- 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
- 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
- 161, 162, 163, 164, 165, 166, -1, 168, 169, 170,
- 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
- 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
- 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
- 201, 202, 203, 204, 205, 206, 207, 208, 209, 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
- 221, 222, 223, 224, 225, 226, 227, 228, 229, 230,
- 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
- 251, 252, 253, 254, 255, 256, 257, 258, 259, 260,
- 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
- 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
- 281, 282, 283, 284, 285, 286, 287, 288, 289, 290,
- 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
- 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
- 311, 312, 313, 314, 315, 316, 317, 318, -1, -1,
- -1, -1, -1, -1, 325, -1, -1, -1, 329, 330,
- 331, -1, -1, 334, 335, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 353, 354, -1, -1, 357, -1, -1, -1,
- -1, -1, -1, -1, 365, 366, 367, 368, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 386, 387, 388, 389, 390,
- 391, -1, -1, -1, -1, 396, 397, -1, -1, -1,
+ -1, 379, 380, 381, 382, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 392, 393, 394, 395, 396, 397,
+ 398, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 414, 415, 416, 417,
+ 418, 419, 420, -1, -1, -1, -1, -1, -1, -1,
+ -1, 429, -1, 431, 432, 433, 434, 435, 436, 437,
+ 438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
+ 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
+ 458, 459, 460, 461, 462, 463, 464, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 420,
- 421, 422, 423, 424, 425, 426, 427, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, -1, 359, 360, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 442, 4, 5, 6, 7, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
- 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
- 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
- -1, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
- 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
- 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
- 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
- 162, 163, 164, 165, 166, -1, 168, 169, 170, 171,
- 172, 173, 174, 175, 176, 177, 178, 179, 180, 181,
- 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
- 202, 203, 204, 205, 206, 207, 208, 209, 210, 211,
- 212, 213, 214, 215, 216, 217, 218, 219, 220, 221,
- 222, 223, 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251,
- 252, 253, 254, 255, 256, 257, 258, 259, 260, 261,
- 262, 263, 264, 265, 266, 267, 268, 269, 270, 271,
- 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
- 282, 283, 284, 285, 286, 287, 288, 289, 290, 291,
- 292, 293, 294, 295, 296, 297, 298, 299, 300, 301,
- 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
- 312, 313, 314, 315, 316, 317, 318, -1, -1, -1,
- -1, -1, -1, 325, -1, -1, -1, 329, 330, 331,
- -1, -1, 334, 335, -1, -1, -1, -1, -1, -1,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 353, 354, -1, -1, -1, 358, -1, -1, -1,
- -1, -1, -1, 365, 366, 367, 368, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 386, 387, 388, 389, 390, 391,
- -1, -1, -1, -1, 396, 397, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, -1, 359, 360, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 420, 421,
- 422, 423, 424, 425, 426, 427, -1, -1, -1, -1,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 442, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
- 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
- 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
- 53, 54, 55, 56, 57, 58, 59, 60, -1, -1,
- 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
- 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 89, 90, 91, 92,
- 93, 94, 95, 96, 97, 98, 99, 100, 101, 102,
- 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
- 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
- 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
- 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
- 163, 164, 165, 166, -1, 168, 169, 170, 171, 172,
- 173, 174, 175, 176, 177, 178, 179, 180, 181, 182,
- 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
- 203, 204, 205, 206, 207, 208, 209, 210, 211, 212,
- 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
- 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,
- 233, 234, 235, 236, 237, 238, 239, 240, 241, 242,
- 243, 244, 245, 246, 247, 248, 249, 250, 251, 252,
- 253, 254, 255, 256, 257, 258, 259, 260, 261, 262,
- 263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
- 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
- 283, 284, 285, 286, 287, 288, 289, 290, 291, 292,
- 293, 294, 295, 296, 297, 298, 299, 300, 301, 302,
- 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
- 313, 314, 315, 316, 317, 318, -1, -1, -1, -1,
- -1, -1, 325, -1, -1, -1, 329, 330, 331, -1,
- -1, 334, 335, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 353, 354, -1, -1, 357, -1, -1, -1, -1, -1,
- -1, -1, 365, 366, 367, 368, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, 358, -1, -1, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 386, 387, 388, 389, 390, 391, -1,
- -1, -1, -1, 396, 397, -1, -1, -1, -1, -1,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 420, 421, 422,
- 423, 424, 425, 426, 427, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 442,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
- 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
- 54, 55, 56, 57, 58, 59, 60, -1, -1, 63,
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
- 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,
- 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
- 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
- 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
- 164, 165, 166, -1, 168, 169, 170, 171, 172, 173,
- 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
- 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,
- 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253,
- 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
- 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
- 284, 285, 286, 287, 288, 289, 290, 291, 292, 293,
- 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,
- 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 315, 316, 317, 318, -1, -1, -1, -1, -1,
- -1, 325, -1, -1, -1, 329, 330, 331, -1, -1,
- 334, 335, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 353,
- 354, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 364, 365, 366, 367, 368, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 386, 387, 388, 389, 390, 391, -1, -1,
- -1, -1, 396, 397, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, -1, 359, -1, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 420, 421, 422, 423,
- 424, 425, 426, 427, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 442, 4,
- 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
- 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
- 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
- 55, 56, 57, 58, 59, 60, -1, -1, 63, 64,
- 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
- 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
- 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
- 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
- 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
- 165, 166, -1, 168, 169, 170, 171, 172, 173, 174,
- 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
- 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
- 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
- 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
- 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
- 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
- 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
- 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
- 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
- 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
- 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
- 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
- 315, 316, 317, 318, -1, -1, -1, -1, -1, -1,
- 325, -1, -1, -1, 329, 330, 331, -1, -1, 334,
- 335, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 353, 354,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 365, 366, 367, 368, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 386, 387, 388, 389, 390, 391, -1, -1, -1,
- -1, 396, 397, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, 358, -1, -1, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 420, 421, 422, 423, 424,
- 425, 426, 427, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 442, 4, 5,
- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
- 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, -1, -1, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
- 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
- 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
- 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
- 166, -1, 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183, 184, 185,
- 186, 187, 188, 189, 190, 191, 192, 193, 194, 195,
- 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
- 206, 207, 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235,
- 236, 237, 238, 239, 240, 241, 242, 243, 244, 245,
- 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
- 256, 257, 258, 259, 260, 261, 262, 263, 264, 265,
- 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
- 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
- 296, 297, 298, 299, 300, 301, 302, 303, 304, 305,
- 306, 307, 308, 309, 310, 311, 312, 313, 314, 315,
- 316, 317, 318, -1, -1, -1, -1, -1, -1, 325,
- -1, -1, -1, 329, 330, 331, -1, -1, 334, 335,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 353, 354, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 365,
- 366, 367, 368, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 365, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 386, 387, 388, 389, 390, 391, -1, -1, -1, -1,
- 396, 397, -1, -1, -1, -1, -1, -1, -1, -1,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 420, 421, 422, 423, 424, 425,
- 426, 427, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 442, 4, 5, 6,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
@@ -4138,7 +4060,7 @@ static const yytype_int16 yycheck[] =
137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
- -1, 168, 169, 170, 171, 172, 173, 174, 175, 176,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
@@ -4153,58 +4075,147 @@ static const yytype_int16 yycheck[] =
287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
- 317, 318, -1, -1, -1, -1, -1, -1, 325, -1,
- -1, -1, 329, 330, 331, -1, -1, 334, 335, -1,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 353, 354, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, 365, 366,
- 367, 368, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 386,
- 387, 388, 389, 390, 391, -1, -1, -1, -1, 396,
- 397, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 420, 421, 422, 423, 424, 425, 426,
- 427, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 442, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
- 58, 59, 60, -1, -1, 63, 64, 65, 66, 67,
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
- 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
- 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
- 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
- 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
- 158, 159, 160, 161, 162, 163, 164, 165, 166, -1,
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187,
- 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215, 216, 217,
- 218, 219, 220, 221, 222, 223, 224, 225, 226, 227,
- 228, 229, 230, 231, 232, 233, 234, 235, 236, 237,
- 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
- 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
- 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
- 278, 279, 280, 281, 282, 283, 284, 285, 286, 287,
- 288, 289, 290, 291, 292, 293, 294, 295, 296, 297,
- 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
- 318, -1, -1, -1, -1, -1, -1, 325, -1, -1,
- -1, 329, 330, 331, -1, -1, -1, -1, -1, -1,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, 335, 336,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 354, 355, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 366,
+ 367, 368, 369, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 387, 388, 389, 390, 391, 392, -1, -1, -1, -1,
+ 397, 398, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 421, 422, 423, 424, 425, 426,
+ 427, 428, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 443, 4, 5, 6,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, -1, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
+ 87, 88, 89, 90, 91, 92, 93, 94, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,
+ 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
+ 167, -1, 169, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186,
+ 187, 188, 189, 190, 191, 192, 193, 194, 195, 196,
+ 197, 198, 199, 200, 201, 202, 203, 204, 205, 206,
+ 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
+ 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
+ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
+ 317, 318, 319, -1, -1, -1, -1, -1, -1, 326,
+ -1, -1, -1, 330, 331, 332, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 391, -1, -1, -1, -1, 396, 397
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 392, -1, -1, -1, -1,
+ 397, 398
};
/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
@@ -4244,143 +4255,144 @@ static const yytype_int16 yystos[] =
302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
322, 323, 324, 325, 326, 327, 328, 329, 330, 331,
- 356, 364, 378, 379, 380, 381, 382, 391, 392, 393,
- 394, 395, 396, 397, 413, 414, 415, 416, 417, 418,
- 419, 428, 430, 431, 432, 433, 434, 435, 436, 437,
+ 332, 357, 365, 379, 380, 381, 382, 383, 392, 393,
+ 394, 395, 396, 397, 398, 414, 415, 416, 417, 418,
+ 419, 420, 429, 431, 432, 433, 434, 435, 436, 437,
438, 439, 440, 441, 442, 443, 444, 445, 446, 447,
448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
- 458, 459, 460, 461, 462, 463, 495, 496, 499, 500,
- 501, 502, 506, 507, 508, 509, 510, 511, 514, 515,
- 516, 517, 518, 520, 525, 526, 527, 568, 569, 570,
- 572, 579, 583, 584, 590, 593, 354, 354, 354, 354,
- 354, 354, 354, 354, 356, 526, 358, 390, 354, 354,
- 364, 390, 364, 571, 355, 361, 503, 504, 505, 515,
- 520, 361, 364, 390, 364, 390, 516, 520, 372, 522,
- 523, 0, 569, 500, 508, 515, 364, 499, 390, 575,
- 576, 594, 595, 387, 390, 575, 387, 575, 387, 575,
- 387, 575, 387, 575, 575, 594, 387, 575, 390, 573,
- 574, 520, 529, 358, 390, 414, 512, 513, 390, 519,
- 356, 364, 521, 358, 547, 572, 504, 503, 505, 390,
- 390, 354, 363, 521, 358, 361, 364, 498, 334, 335,
- 353, 354, 365, 366, 367, 368, 386, 387, 388, 389,
- 390, 420, 421, 422, 423, 424, 425, 426, 427, 465,
- 466, 467, 469, 470, 471, 472, 473, 474, 475, 476,
- 477, 518, 520, 524, 521, 355, 390, 364, 363, 361,
- 355, 361, 355, 361, 363, 361, 361, 361, 355, 361,
- 361, 361, 361, 361, 361, 361, 355, 361, 355, 361,
- 354, 357, 361, 364, 515, 520, 530, 531, 528, 363,
- 355, 361, 355, 361, 357, 476, 478, 479, 480, 481,
- 482, 483, 484, 485, 486, 487, 488, 489, 356, 364,
- 358, 359, 364, 398, 399, 400, 401, 403, 404, 405,
- 406, 407, 408, 409, 410, 411, 412, 429, 476, 489,
- 491, 493, 495, 499, 518, 520, 536, 537, 538, 539,
- 540, 548, 549, 550, 551, 554, 555, 558, 559, 560,
- 567, 572, 521, 363, 521, 358, 491, 534, 363, 497,
- 390, 361, 364, 476, 476, 493, 334, 335, 356, 360,
- 355, 355, 361, 397, 491, 354, 476, 361, 373, 572,
- 353, 356, 387, 576, 594, 390, 595, 353, 386, 387,
- 388, 389, 580, 581, 387, 489, 494, 582, 387, 386,
- 387, 388, 389, 585, 586, 387, 386, 387, 388, 389,
- 465, 587, 588, 387, 353, 589, 387, 594, 390, 494,
- 591, 592, 387, 494, 357, 574, 520, 390, 532, 533,
- 359, 531, 530, 494, 513, 390, 369, 370, 371, 366,
- 368, 332, 333, 336, 337, 372, 373, 338, 339, 376,
- 375, 374, 340, 342, 341, 377, 357, 357, 489, 359,
- 541, 354, 364, 364, 562, 354, 354, 364, 364, 493,
- 354, 493, 362, 364, 364, 364, 364, 343, 344, 345,
- 346, 347, 348, 349, 350, 351, 352, 363, 492, 361,
- 364, 359, 537, 551, 555, 560, 534, 363, 359, 534,
- 535, 534, 530, 390, 355, 468, 493, 390, 491, 476,
- 353, 387, 577, 578, 355, 363, 355, 361, 355, 361,
- 355, 361, 361, 355, 361, 355, 361, 355, 361, 361,
- 355, 361, 361, 355, 361, 355, 361, 355, 355, 532,
- 521, 361, 364, 359, 476, 476, 476, 478, 478, 479,
- 479, 480, 480, 480, 480, 481, 481, 482, 483, 484,
- 485, 486, 487, 490, 357, 548, 561, 537, 563, 493,
- 364, 493, 362, 491, 491, 534, 359, 361, 359, 357,
- 357, 361, 357, 361, 581, 580, 494, 582, 586, 585,
- 588, 587, 353, 589, 591, 592, 364, 533, 493, 542,
- 493, 508, 553, 398, 536, 549, 564, 355, 355, 359,
- 534, 353, 387, 355, 355, 355, 355, 355, 355, 362,
- 359, 390, 355, 354, 553, 565, 566, 544, 545, 546,
- 552, 556, 491, 363, 538, 543, 547, 493, 364, 355,
- 402, 540, 538, 358, 534, 355, 493, 543, 544, 548,
- 557, 364, 359
+ 458, 459, 460, 461, 462, 463, 464, 496, 497, 500,
+ 501, 502, 503, 507, 508, 509, 510, 511, 512, 515,
+ 516, 517, 518, 519, 521, 526, 527, 528, 569, 570,
+ 571, 573, 580, 584, 585, 591, 594, 355, 355, 355,
+ 355, 355, 355, 355, 355, 357, 527, 359, 391, 355,
+ 355, 365, 391, 365, 572, 356, 362, 504, 505, 506,
+ 516, 521, 362, 365, 391, 365, 391, 517, 521, 373,
+ 523, 524, 0, 570, 501, 509, 516, 365, 500, 391,
+ 576, 577, 595, 596, 388, 391, 576, 388, 576, 388,
+ 576, 388, 576, 388, 576, 576, 595, 388, 576, 391,
+ 574, 575, 521, 530, 359, 391, 415, 513, 514, 391,
+ 520, 357, 365, 522, 359, 548, 573, 505, 504, 506,
+ 391, 391, 355, 364, 522, 359, 362, 365, 499, 335,
+ 336, 354, 355, 366, 367, 368, 369, 387, 388, 389,
+ 390, 391, 421, 422, 423, 424, 425, 426, 427, 428,
+ 466, 467, 468, 470, 471, 472, 473, 474, 475, 476,
+ 477, 478, 519, 521, 525, 522, 356, 391, 365, 364,
+ 362, 356, 362, 356, 362, 364, 362, 362, 362, 356,
+ 362, 362, 362, 362, 362, 362, 362, 356, 362, 356,
+ 362, 355, 358, 362, 365, 516, 521, 531, 532, 529,
+ 364, 356, 362, 356, 362, 358, 477, 479, 480, 481,
+ 482, 483, 484, 485, 486, 487, 488, 489, 490, 521,
+ 357, 365, 359, 360, 365, 399, 400, 401, 402, 404,
+ 405, 406, 407, 408, 409, 410, 411, 412, 413, 430,
+ 477, 490, 492, 494, 496, 500, 519, 521, 537, 538,
+ 539, 540, 541, 549, 550, 551, 552, 555, 556, 559,
+ 560, 561, 568, 573, 522, 364, 522, 359, 492, 535,
+ 364, 498, 391, 362, 365, 477, 477, 494, 335, 336,
+ 357, 361, 356, 356, 362, 398, 492, 355, 477, 362,
+ 374, 573, 354, 357, 388, 577, 595, 391, 596, 354,
+ 387, 388, 389, 390, 581, 582, 388, 490, 495, 583,
+ 388, 387, 388, 389, 390, 586, 587, 388, 387, 388,
+ 389, 390, 466, 588, 589, 388, 354, 590, 388, 595,
+ 391, 495, 526, 592, 593, 388, 495, 358, 575, 521,
+ 391, 533, 534, 360, 532, 531, 495, 514, 391, 370,
+ 371, 372, 367, 369, 333, 334, 337, 338, 373, 374,
+ 339, 340, 377, 376, 375, 341, 343, 342, 378, 358,
+ 358, 490, 360, 542, 355, 365, 365, 563, 355, 355,
+ 365, 365, 494, 355, 494, 363, 365, 365, 365, 365,
+ 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+ 364, 493, 362, 365, 360, 538, 552, 556, 561, 535,
+ 364, 360, 535, 536, 535, 531, 391, 356, 469, 494,
+ 391, 492, 477, 354, 388, 578, 579, 356, 364, 356,
+ 362, 356, 362, 356, 362, 362, 356, 362, 356, 362,
+ 356, 362, 362, 356, 362, 362, 356, 362, 356, 362,
+ 356, 356, 533, 522, 362, 365, 360, 477, 477, 477,
+ 479, 479, 480, 480, 481, 481, 481, 481, 482, 482,
+ 483, 484, 485, 486, 487, 488, 491, 358, 549, 562,
+ 538, 564, 494, 365, 494, 363, 492, 492, 535, 360,
+ 362, 360, 358, 358, 362, 358, 362, 582, 581, 495,
+ 583, 587, 586, 589, 588, 354, 590, 592, 593, 365,
+ 534, 494, 543, 494, 509, 554, 399, 537, 550, 565,
+ 356, 356, 360, 535, 354, 388, 356, 356, 356, 356,
+ 356, 356, 363, 360, 391, 356, 355, 554, 566, 567,
+ 545, 546, 547, 553, 557, 492, 364, 539, 544, 548,
+ 494, 365, 356, 403, 541, 539, 359, 535, 356, 494,
+ 544, 545, 549, 558, 365, 360
};
/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
static const yytype_int16 yyr1[] =
{
- 0, 464, 465, 466, 466, 466, 466, 466, 466, 466,
- 466, 466, 466, 466, 466, 466, 466, 466, 467, 467,
- 467, 467, 467, 467, 468, 469, 470, 471, 471, 472,
- 472, 473, 473, 474, 475, 475, 475, 476, 476, 476,
- 476, 477, 477, 477, 477, 478, 478, 478, 478, 479,
- 479, 479, 480, 480, 480, 481, 481, 481, 481, 481,
- 482, 482, 482, 483, 483, 484, 484, 485, 485, 486,
- 486, 487, 487, 488, 488, 489, 490, 489, 491, 491,
- 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
- 492, 493, 493, 494, 495, 495, 495, 495, 495, 495,
- 495, 495, 495, 495, 495, 497, 496, 498, 498, 499,
- 499, 499, 499, 500, 500, 501, 501, 502, 503, 503,
- 504, 504, 504, 504, 505, 506, 506, 506, 506, 506,
- 507, 507, 507, 507, 507, 508, 508, 509, 510, 510,
- 510, 510, 510, 510, 510, 510, 510, 510, 511, 512,
- 512, 513, 513, 513, 514, 515, 515, 516, 516, 516,
- 516, 516, 516, 516, 516, 516, 516, 516, 517, 517,
- 517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
- 517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
- 517, 517, 517, 517, 517, 517, 517, 517, 517, 517,
- 517, 517, 517, 517, 517, 517, 518, 519, 519, 520,
- 520, 521, 521, 521, 521, 522, 522, 523, 524, 524,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 525,
- 525, 525, 525, 525, 525, 525, 525, 525, 525, 526,
- 526, 526, 528, 527, 529, 527, 530, 530, 531, 531,
- 532, 532, 533, 533, 534, 534, 534, 534, 535, 535,
- 536, 537, 537, 538, 538, 538, 538, 538, 538, 538,
- 538, 539, 540, 541, 542, 540, 543, 543, 545, 544,
- 546, 544, 547, 547, 548, 548, 549, 549, 550, 550,
- 551, 552, 552, 553, 553, 554, 554, 556, 555, 557,
- 557, 558, 558, 559, 559, 561, 560, 562, 560, 563,
- 560, 564, 564, 565, 565, 566, 566, 567, 567, 567,
- 567, 567, 567, 567, 567, 568, 568, 569, 569, 569,
- 571, 570, 572, 573, 573, 574, 574, 575, 575, 576,
- 576, 577, 577, 578, 578, 579, 579, 579, 579, 579,
- 579, 580, 580, 581, 581, 581, 581, 581, 582, 582,
- 583, 583, 584, 584, 584, 584, 584, 584, 584, 584,
- 585, 585, 586, 586, 586, 586, 587, 587, 588, 588,
- 588, 588, 588, 589, 589, 590, 590, 590, 590, 591,
- 591, 592, 593, 593, 594, 594, 595, 595
+ 0, 465, 466, 467, 467, 467, 467, 467, 467, 467,
+ 467, 467, 467, 467, 467, 467, 467, 467, 468, 468,
+ 468, 468, 468, 468, 469, 470, 471, 472, 472, 473,
+ 473, 474, 474, 475, 476, 476, 476, 477, 477, 477,
+ 477, 478, 478, 478, 478, 479, 479, 479, 479, 480,
+ 480, 480, 481, 481, 481, 482, 482, 482, 482, 482,
+ 483, 483, 483, 484, 484, 485, 485, 486, 486, 487,
+ 487, 488, 488, 489, 489, 490, 491, 490, 492, 492,
+ 493, 493, 493, 493, 493, 493, 493, 493, 493, 493,
+ 493, 494, 494, 495, 496, 496, 496, 496, 496, 496,
+ 496, 496, 496, 496, 496, 498, 497, 499, 499, 500,
+ 500, 500, 500, 501, 501, 502, 502, 503, 504, 504,
+ 505, 505, 505, 505, 506, 507, 507, 507, 507, 507,
+ 508, 508, 508, 508, 508, 509, 509, 510, 511, 511,
+ 511, 511, 511, 511, 511, 511, 511, 511, 512, 513,
+ 513, 514, 514, 514, 515, 516, 516, 517, 517, 517,
+ 517, 517, 517, 517, 517, 517, 517, 517, 518, 518,
+ 518, 518, 518, 518, 518, 518, 518, 518, 518, 518,
+ 518, 518, 518, 518, 518, 518, 518, 518, 518, 518,
+ 518, 518, 518, 518, 518, 518, 518, 518, 518, 518,
+ 518, 518, 518, 518, 518, 518, 519, 520, 520, 521,
+ 521, 522, 522, 522, 522, 523, 523, 524, 525, 525,
+ 525, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 526, 526, 526, 526, 526, 526, 526, 526, 526,
+ 526, 527, 527, 527, 529, 528, 530, 528, 531, 531,
+ 532, 532, 533, 533, 534, 534, 535, 535, 535, 535,
+ 536, 536, 537, 538, 538, 539, 539, 539, 539, 539,
+ 539, 539, 539, 540, 541, 542, 543, 541, 544, 544,
+ 546, 545, 547, 545, 548, 548, 549, 549, 550, 550,
+ 551, 551, 552, 553, 553, 554, 554, 555, 555, 557,
+ 556, 558, 558, 559, 559, 560, 560, 562, 561, 563,
+ 561, 564, 561, 565, 565, 566, 566, 567, 567, 568,
+ 568, 568, 568, 568, 568, 568, 568, 569, 569, 570,
+ 570, 570, 572, 571, 573, 574, 574, 575, 575, 576,
+ 576, 577, 577, 578, 578, 579, 579, 580, 580, 580,
+ 580, 580, 580, 581, 581, 582, 582, 582, 582, 582,
+ 583, 583, 584, 584, 585, 585, 585, 585, 585, 585,
+ 585, 585, 586, 586, 587, 587, 587, 587, 588, 588,
+ 589, 589, 589, 589, 589, 590, 590, 591, 591, 591,
+ 591, 592, 592, 593, 593, 594, 594, 595, 595, 596,
+ 596
};
/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
@@ -4407,8 +4419,8 @@ static const yytype_int8 yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 4, 1, 1, 1, 3, 2,
- 3, 2, 3, 3, 4, 1, 0, 3, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 3, 2, 3, 3, 4, 1, 0, 3, 1, 1,
+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -4440,22 +4452,23 @@ static const yytype_int8 yyr2[] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 6, 0, 5, 1, 2, 3, 4,
- 1, 3, 1, 2, 1, 3, 4, 2, 1, 3,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 0, 0, 5, 1, 1, 0, 2,
- 0, 2, 2, 3, 1, 2, 1, 2, 1, 2,
- 5, 3, 1, 1, 4, 1, 2, 0, 8, 0,
- 1, 3, 2, 1, 2, 0, 6, 0, 8, 0,
- 7, 1, 1, 1, 0, 2, 3, 2, 2, 2,
- 3, 2, 2, 2, 2, 1, 2, 1, 1, 1,
- 0, 3, 5, 1, 3, 1, 4, 1, 3, 5,
- 5, 1, 3, 1, 3, 4, 6, 6, 8, 6,
- 8, 1, 3, 1, 1, 1, 1, 1, 1, 3,
- 4, 6, 4, 6, 6, 8, 6, 8, 6, 8,
- 1, 3, 1, 1, 1, 1, 1, 3, 1, 1,
- 1, 1, 1, 1, 3, 6, 8, 4, 6, 1,
- 3, 1, 4, 6, 1, 3, 3, 3
+ 1, 1, 1, 1, 0, 6, 0, 5, 1, 2,
+ 3, 4, 1, 3, 1, 2, 1, 3, 4, 2,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 2, 0, 0, 5, 1, 1,
+ 0, 2, 0, 2, 2, 3, 1, 2, 1, 2,
+ 1, 2, 5, 3, 1, 1, 4, 1, 2, 0,
+ 8, 0, 1, 3, 2, 1, 2, 0, 6, 0,
+ 8, 0, 7, 1, 1, 1, 0, 2, 3, 2,
+ 2, 2, 3, 2, 2, 2, 2, 1, 2, 1,
+ 1, 1, 0, 3, 5, 1, 3, 1, 4, 1,
+ 3, 5, 5, 1, 3, 1, 3, 4, 6, 6,
+ 8, 6, 8, 1, 3, 1, 1, 1, 1, 1,
+ 1, 3, 4, 6, 4, 6, 6, 8, 6, 8,
+ 6, 8, 1, 3, 1, 1, 1, 1, 1, 3,
+ 1, 1, 1, 1, 1, 1, 3, 6, 8, 4,
+ 6, 1, 3, 1, 1, 4, 6, 1, 3, 3,
+ 3
};
@@ -5197,260 +5210,260 @@ yyreduce:
switch (yyn)
{
case 2: /* variable_identifier: IDENTIFIER */
-#line 394 "MachineIndependent/glslang.y"
+#line 395 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
}
-#line 5205 "MachineIndependent/glslang_tab.cpp"
+#line 5218 "MachineIndependent/glslang_tab.cpp"
break;
case 3: /* primary_expression: variable_identifier */
-#line 400 "MachineIndependent/glslang.y"
+#line 401 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5213 "MachineIndependent/glslang_tab.cpp"
+#line 5226 "MachineIndependent/glslang_tab.cpp"
break;
case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */
-#line 403 "MachineIndependent/glslang.y"
+#line 404 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
-#line 5223 "MachineIndependent/glslang_tab.cpp"
+#line 5236 "MachineIndependent/glslang_tab.cpp"
break;
case 5: /* primary_expression: FLOATCONSTANT */
-#line 408 "MachineIndependent/glslang.y"
+#line 409 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 5231 "MachineIndependent/glslang_tab.cpp"
+#line 5244 "MachineIndependent/glslang_tab.cpp"
break;
case 6: /* primary_expression: INTCONSTANT */
-#line 411 "MachineIndependent/glslang.y"
+#line 412 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 5239 "MachineIndependent/glslang_tab.cpp"
+#line 5252 "MachineIndependent/glslang_tab.cpp"
break;
case 7: /* primary_expression: UINTCONSTANT */
-#line 414 "MachineIndependent/glslang.y"
+#line 415 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 5248 "MachineIndependent/glslang_tab.cpp"
+#line 5261 "MachineIndependent/glslang_tab.cpp"
break;
case 8: /* primary_expression: BOOLCONSTANT */
-#line 418 "MachineIndependent/glslang.y"
+#line 419 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 5256 "MachineIndependent/glslang_tab.cpp"
+#line 5269 "MachineIndependent/glslang_tab.cpp"
break;
case 9: /* primary_expression: STRING_LITERAL */
-#line 422 "MachineIndependent/glslang.y"
+#line 423 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
}
-#line 5264 "MachineIndependent/glslang_tab.cpp"
+#line 5277 "MachineIndependent/glslang_tab.cpp"
break;
case 10: /* primary_expression: INT32CONSTANT */
-#line 425 "MachineIndependent/glslang.y"
+#line 426 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 5273 "MachineIndependent/glslang_tab.cpp"
+#line 5286 "MachineIndependent/glslang_tab.cpp"
break;
case 11: /* primary_expression: UINT32CONSTANT */
-#line 429 "MachineIndependent/glslang.y"
+#line 430 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 5282 "MachineIndependent/glslang_tab.cpp"
+#line 5295 "MachineIndependent/glslang_tab.cpp"
break;
case 12: /* primary_expression: INT64CONSTANT */
-#line 433 "MachineIndependent/glslang.y"
+#line 434 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true);
}
-#line 5291 "MachineIndependent/glslang_tab.cpp"
+#line 5304 "MachineIndependent/glslang_tab.cpp"
break;
case 13: /* primary_expression: UINT64CONSTANT */
-#line 437 "MachineIndependent/glslang.y"
+#line 438 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true);
}
-#line 5300 "MachineIndependent/glslang_tab.cpp"
+#line 5313 "MachineIndependent/glslang_tab.cpp"
break;
case 14: /* primary_expression: INT16CONSTANT */
-#line 441 "MachineIndependent/glslang.y"
+#line 442 "MachineIndependent/glslang.y"
{
parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 5309 "MachineIndependent/glslang_tab.cpp"
+#line 5322 "MachineIndependent/glslang_tab.cpp"
break;
case 15: /* primary_expression: UINT16CONSTANT */
-#line 445 "MachineIndependent/glslang.y"
+#line 446 "MachineIndependent/glslang.y"
{
parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 5318 "MachineIndependent/glslang_tab.cpp"
+#line 5331 "MachineIndependent/glslang_tab.cpp"
break;
case 16: /* primary_expression: DOUBLECONSTANT */
-#line 449 "MachineIndependent/glslang.y"
+#line 450 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal");
if (! parseContext.symbolTable.atBuiltInLevel())
parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true);
}
-#line 5329 "MachineIndependent/glslang_tab.cpp"
+#line 5342 "MachineIndependent/glslang_tab.cpp"
break;
case 17: /* primary_expression: FLOAT16CONSTANT */
-#line 455 "MachineIndependent/glslang.y"
+#line 456 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true);
}
-#line 5338 "MachineIndependent/glslang_tab.cpp"
+#line 5351 "MachineIndependent/glslang_tab.cpp"
break;
case 18: /* postfix_expression: primary_expression */
-#line 463 "MachineIndependent/glslang.y"
+#line 464 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5346 "MachineIndependent/glslang_tab.cpp"
+#line 5359 "MachineIndependent/glslang_tab.cpp"
break;
case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */
-#line 466 "MachineIndependent/glslang.y"
+#line 467 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
}
-#line 5354 "MachineIndependent/glslang_tab.cpp"
+#line 5367 "MachineIndependent/glslang_tab.cpp"
break;
case 20: /* postfix_expression: function_call */
-#line 469 "MachineIndependent/glslang.y"
+#line 470 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5362 "MachineIndependent/glslang_tab.cpp"
+#line 5375 "MachineIndependent/glslang_tab.cpp"
break;
case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */
-#line 472 "MachineIndependent/glslang.y"
+#line 473 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
}
-#line 5370 "MachineIndependent/glslang_tab.cpp"
+#line 5383 "MachineIndependent/glslang_tab.cpp"
break;
case 22: /* postfix_expression: postfix_expression INC_OP */
-#line 475 "MachineIndependent/glslang.y"
+#line 476 "MachineIndependent/glslang.y"
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 5380 "MachineIndependent/glslang_tab.cpp"
+#line 5393 "MachineIndependent/glslang_tab.cpp"
break;
case 23: /* postfix_expression: postfix_expression DEC_OP */
-#line 480 "MachineIndependent/glslang.y"
+#line 481 "MachineIndependent/glslang.y"
{
parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode));
parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode));
}
-#line 5390 "MachineIndependent/glslang_tab.cpp"
+#line 5403 "MachineIndependent/glslang_tab.cpp"
break;
case 24: /* integer_expression: expression */
-#line 488 "MachineIndependent/glslang.y"
+#line 489 "MachineIndependent/glslang.y"
{
parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5399 "MachineIndependent/glslang_tab.cpp"
+#line 5412 "MachineIndependent/glslang_tab.cpp"
break;
case 25: /* function_call: function_call_or_method */
-#line 495 "MachineIndependent/glslang.y"
+#line 496 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
delete (yyvsp[0].interm).function;
}
-#line 5408 "MachineIndependent/glslang_tab.cpp"
+#line 5421 "MachineIndependent/glslang_tab.cpp"
break;
case 26: /* function_call_or_method: function_call_generic */
-#line 502 "MachineIndependent/glslang.y"
+#line 503 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 5416 "MachineIndependent/glslang_tab.cpp"
+#line 5429 "MachineIndependent/glslang_tab.cpp"
break;
case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */
-#line 508 "MachineIndependent/glslang.y"
+#line 509 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5425 "MachineIndependent/glslang_tab.cpp"
+#line 5438 "MachineIndependent/glslang_tab.cpp"
break;
case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */
-#line 512 "MachineIndependent/glslang.y"
+#line 513 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5434 "MachineIndependent/glslang_tab.cpp"
+#line 5447 "MachineIndependent/glslang_tab.cpp"
break;
case 29: /* function_call_header_no_parameters: function_call_header VOID */
-#line 519 "MachineIndependent/glslang.y"
+#line 520 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 5442 "MachineIndependent/glslang_tab.cpp"
+#line 5455 "MachineIndependent/glslang_tab.cpp"
break;
case 30: /* function_call_header_no_parameters: function_call_header */
-#line 522 "MachineIndependent/glslang.y"
+#line 523 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 5450 "MachineIndependent/glslang_tab.cpp"
+#line 5463 "MachineIndependent/glslang_tab.cpp"
break;
case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */
-#line 528 "MachineIndependent/glslang.y"
+#line 529 "MachineIndependent/glslang.y"
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -5458,11 +5471,11 @@ yyreduce:
(yyval.interm).function = (yyvsp[-1].interm).function;
(yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
}
-#line 5462 "MachineIndependent/glslang_tab.cpp"
+#line 5475 "MachineIndependent/glslang_tab.cpp"
break;
case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */
-#line 535 "MachineIndependent/glslang.y"
+#line 536 "MachineIndependent/glslang.y"
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -5470,29 +5483,29 @@ yyreduce:
(yyval.interm).function = (yyvsp[-2].interm).function;
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
}
-#line 5474 "MachineIndependent/glslang_tab.cpp"
+#line 5487 "MachineIndependent/glslang_tab.cpp"
break;
case 33: /* function_call_header: function_identifier LEFT_PAREN */
-#line 545 "MachineIndependent/glslang.y"
+#line 546 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 5482 "MachineIndependent/glslang_tab.cpp"
+#line 5495 "MachineIndependent/glslang_tab.cpp"
break;
case 34: /* function_identifier: type_specifier */
-#line 553 "MachineIndependent/glslang.y"
+#line 554 "MachineIndependent/glslang.y"
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 5492 "MachineIndependent/glslang_tab.cpp"
+#line 5505 "MachineIndependent/glslang_tab.cpp"
break;
case 35: /* function_identifier: postfix_expression */
-#line 558 "MachineIndependent/glslang.y"
+#line 559 "MachineIndependent/glslang.y"
{
//
// Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -5520,50 +5533,50 @@ yyreduce:
(yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
-#line 5524 "MachineIndependent/glslang_tab.cpp"
+#line 5537 "MachineIndependent/glslang_tab.cpp"
break;
case 36: /* function_identifier: non_uniform_qualifier */
-#line 586 "MachineIndependent/glslang.y"
+#line 587 "MachineIndependent/glslang.y"
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 5534 "MachineIndependent/glslang_tab.cpp"
+#line 5547 "MachineIndependent/glslang_tab.cpp"
break;
case 37: /* unary_expression: postfix_expression */
-#line 595 "MachineIndependent/glslang.y"
+#line 596 "MachineIndependent/glslang.y"
{
parseContext.variableCheck((yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode())
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), "");
}
-#line 5545 "MachineIndependent/glslang_tab.cpp"
+#line 5558 "MachineIndependent/glslang_tab.cpp"
break;
case 38: /* unary_expression: INC_OP unary_expression */
-#line 601 "MachineIndependent/glslang.y"
+#line 602 "MachineIndependent/glslang.y"
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 5554 "MachineIndependent/glslang_tab.cpp"
+#line 5567 "MachineIndependent/glslang_tab.cpp"
break;
case 39: /* unary_expression: DEC_OP unary_expression */
-#line 605 "MachineIndependent/glslang.y"
+#line 606 "MachineIndependent/glslang.y"
{
parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode));
}
-#line 5563 "MachineIndependent/glslang_tab.cpp"
+#line 5576 "MachineIndependent/glslang_tab.cpp"
break;
case 40: /* unary_expression: unary_operator unary_expression */
-#line 609 "MachineIndependent/glslang.y"
+#line 610 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm).op != EOpNull) {
char errorOp[2] = {0, 0};
@@ -5580,179 +5593,179 @@ yyreduce:
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
}
-#line 5584 "MachineIndependent/glslang_tab.cpp"
+#line 5597 "MachineIndependent/glslang_tab.cpp"
break;
case 41: /* unary_operator: PLUS */
-#line 629 "MachineIndependent/glslang.y"
+#line 630 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 5590 "MachineIndependent/glslang_tab.cpp"
+#line 5603 "MachineIndependent/glslang_tab.cpp"
break;
case 42: /* unary_operator: DASH */
-#line 630 "MachineIndependent/glslang.y"
+#line 631 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 5596 "MachineIndependent/glslang_tab.cpp"
+#line 5609 "MachineIndependent/glslang_tab.cpp"
break;
case 43: /* unary_operator: BANG */
-#line 631 "MachineIndependent/glslang.y"
+#line 632 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 5602 "MachineIndependent/glslang_tab.cpp"
+#line 5615 "MachineIndependent/glslang_tab.cpp"
break;
case 44: /* unary_operator: TILDE */
-#line 632 "MachineIndependent/glslang.y"
+#line 633 "MachineIndependent/glslang.y"
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 5609 "MachineIndependent/glslang_tab.cpp"
+#line 5622 "MachineIndependent/glslang_tab.cpp"
break;
case 45: /* multiplicative_expression: unary_expression */
-#line 638 "MachineIndependent/glslang.y"
+#line 639 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5615 "MachineIndependent/glslang_tab.cpp"
+#line 5628 "MachineIndependent/glslang_tab.cpp"
break;
case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */
-#line 639 "MachineIndependent/glslang.y"
+#line 640 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5625 "MachineIndependent/glslang_tab.cpp"
+#line 5638 "MachineIndependent/glslang_tab.cpp"
break;
case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */
-#line 644 "MachineIndependent/glslang.y"
+#line 645 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5635 "MachineIndependent/glslang_tab.cpp"
+#line 5648 "MachineIndependent/glslang_tab.cpp"
break;
case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */
-#line 649 "MachineIndependent/glslang.y"
+#line 650 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5646 "MachineIndependent/glslang_tab.cpp"
+#line 5659 "MachineIndependent/glslang_tab.cpp"
break;
case 49: /* additive_expression: multiplicative_expression */
-#line 658 "MachineIndependent/glslang.y"
+#line 659 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5652 "MachineIndependent/glslang_tab.cpp"
+#line 5665 "MachineIndependent/glslang_tab.cpp"
break;
case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */
-#line 659 "MachineIndependent/glslang.y"
+#line 660 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5662 "MachineIndependent/glslang_tab.cpp"
+#line 5675 "MachineIndependent/glslang_tab.cpp"
break;
case 51: /* additive_expression: additive_expression DASH multiplicative_expression */
-#line 664 "MachineIndependent/glslang.y"
+#line 665 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5672 "MachineIndependent/glslang_tab.cpp"
+#line 5685 "MachineIndependent/glslang_tab.cpp"
break;
case 52: /* shift_expression: additive_expression */
-#line 672 "MachineIndependent/glslang.y"
+#line 673 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5678 "MachineIndependent/glslang_tab.cpp"
+#line 5691 "MachineIndependent/glslang_tab.cpp"
break;
case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */
-#line 673 "MachineIndependent/glslang.y"
+#line 674 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5689 "MachineIndependent/glslang_tab.cpp"
+#line 5702 "MachineIndependent/glslang_tab.cpp"
break;
case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */
-#line 679 "MachineIndependent/glslang.y"
+#line 680 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5700 "MachineIndependent/glslang_tab.cpp"
+#line 5713 "MachineIndependent/glslang_tab.cpp"
break;
case 55: /* relational_expression: shift_expression */
-#line 688 "MachineIndependent/glslang.y"
+#line 689 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5706 "MachineIndependent/glslang_tab.cpp"
+#line 5719 "MachineIndependent/glslang_tab.cpp"
break;
case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */
-#line 689 "MachineIndependent/glslang.y"
+#line 690 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5716 "MachineIndependent/glslang_tab.cpp"
+#line 5729 "MachineIndependent/glslang_tab.cpp"
break;
case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */
-#line 694 "MachineIndependent/glslang.y"
+#line 695 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5726 "MachineIndependent/glslang_tab.cpp"
+#line 5739 "MachineIndependent/glslang_tab.cpp"
break;
case 58: /* relational_expression: relational_expression LE_OP shift_expression */
-#line 699 "MachineIndependent/glslang.y"
+#line 700 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5736 "MachineIndependent/glslang_tab.cpp"
+#line 5749 "MachineIndependent/glslang_tab.cpp"
break;
case 59: /* relational_expression: relational_expression GE_OP shift_expression */
-#line 704 "MachineIndependent/glslang.y"
+#line 705 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5746 "MachineIndependent/glslang_tab.cpp"
+#line 5759 "MachineIndependent/glslang_tab.cpp"
break;
case 60: /* equality_expression: relational_expression */
-#line 712 "MachineIndependent/glslang.y"
+#line 713 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5752 "MachineIndependent/glslang_tab.cpp"
+#line 5765 "MachineIndependent/glslang_tab.cpp"
break;
case 61: /* equality_expression: equality_expression EQ_OP relational_expression */
-#line 713 "MachineIndependent/glslang.y"
+#line 714 "MachineIndependent/glslang.y"
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
@@ -5762,11 +5775,11 @@ yyreduce:
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5766 "MachineIndependent/glslang_tab.cpp"
+#line 5779 "MachineIndependent/glslang_tab.cpp"
break;
case 62: /* equality_expression: equality_expression NE_OP relational_expression */
-#line 722 "MachineIndependent/glslang.y"
+#line 723 "MachineIndependent/glslang.y"
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
@@ -5776,124 +5789,124 @@ yyreduce:
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5780 "MachineIndependent/glslang_tab.cpp"
+#line 5793 "MachineIndependent/glslang_tab.cpp"
break;
case 63: /* and_expression: equality_expression */
-#line 734 "MachineIndependent/glslang.y"
+#line 735 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5786 "MachineIndependent/glslang_tab.cpp"
+#line 5799 "MachineIndependent/glslang_tab.cpp"
break;
case 64: /* and_expression: and_expression AMPERSAND equality_expression */
-#line 735 "MachineIndependent/glslang.y"
+#line 736 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5797 "MachineIndependent/glslang_tab.cpp"
+#line 5810 "MachineIndependent/glslang_tab.cpp"
break;
case 65: /* exclusive_or_expression: and_expression */
-#line 744 "MachineIndependent/glslang.y"
+#line 745 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5803 "MachineIndependent/glslang_tab.cpp"
+#line 5816 "MachineIndependent/glslang_tab.cpp"
break;
case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */
-#line 745 "MachineIndependent/glslang.y"
+#line 746 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5814 "MachineIndependent/glslang_tab.cpp"
+#line 5827 "MachineIndependent/glslang_tab.cpp"
break;
case 67: /* inclusive_or_expression: exclusive_or_expression */
-#line 754 "MachineIndependent/glslang.y"
+#line 755 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5820 "MachineIndependent/glslang_tab.cpp"
+#line 5833 "MachineIndependent/glslang_tab.cpp"
break;
case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */
-#line 755 "MachineIndependent/glslang.y"
+#line 756 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or");
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 5831 "MachineIndependent/glslang_tab.cpp"
+#line 5844 "MachineIndependent/glslang_tab.cpp"
break;
case 69: /* logical_and_expression: inclusive_or_expression */
-#line 764 "MachineIndependent/glslang.y"
+#line 765 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5837 "MachineIndependent/glslang_tab.cpp"
+#line 5850 "MachineIndependent/glslang_tab.cpp"
break;
case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */
-#line 765 "MachineIndependent/glslang.y"
+#line 766 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5847 "MachineIndependent/glslang_tab.cpp"
+#line 5860 "MachineIndependent/glslang_tab.cpp"
break;
case 71: /* logical_xor_expression: logical_and_expression */
-#line 773 "MachineIndependent/glslang.y"
+#line 774 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5853 "MachineIndependent/glslang_tab.cpp"
+#line 5866 "MachineIndependent/glslang_tab.cpp"
break;
case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */
-#line 774 "MachineIndependent/glslang.y"
+#line 775 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5863 "MachineIndependent/glslang_tab.cpp"
+#line 5876 "MachineIndependent/glslang_tab.cpp"
break;
case 73: /* logical_or_expression: logical_xor_expression */
-#line 782 "MachineIndependent/glslang.y"
+#line 783 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5869 "MachineIndependent/glslang_tab.cpp"
+#line 5882 "MachineIndependent/glslang_tab.cpp"
break;
case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */
-#line 783 "MachineIndependent/glslang.y"
+#line 784 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 5879 "MachineIndependent/glslang_tab.cpp"
+#line 5892 "MachineIndependent/glslang_tab.cpp"
break;
case 75: /* conditional_expression: logical_or_expression */
-#line 791 "MachineIndependent/glslang.y"
+#line 792 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5885 "MachineIndependent/glslang_tab.cpp"
+#line 5898 "MachineIndependent/glslang_tab.cpp"
break;
case 76: /* $@1: %empty */
-#line 792 "MachineIndependent/glslang.y"
+#line 793 "MachineIndependent/glslang.y"
{
++parseContext.controlFlowNestingLevel;
}
-#line 5893 "MachineIndependent/glslang_tab.cpp"
+#line 5906 "MachineIndependent/glslang_tab.cpp"
break;
case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */
-#line 795 "MachineIndependent/glslang.y"
+#line 796 "MachineIndependent/glslang.y"
{
--parseContext.controlFlowNestingLevel;
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
@@ -5906,17 +5919,17 @@ yyreduce:
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 5910 "MachineIndependent/glslang_tab.cpp"
+#line 5923 "MachineIndependent/glslang_tab.cpp"
break;
case 78: /* assignment_expression: conditional_expression */
-#line 810 "MachineIndependent/glslang.y"
+#line 811 "MachineIndependent/glslang.y"
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5916 "MachineIndependent/glslang_tab.cpp"
+#line 5929 "MachineIndependent/glslang_tab.cpp"
break;
case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */
-#line 811 "MachineIndependent/glslang.y"
+#line 812 "MachineIndependent/glslang.y"
{
parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
@@ -5930,119 +5943,119 @@ yyreduce:
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
}
-#line 5934 "MachineIndependent/glslang_tab.cpp"
+#line 5947 "MachineIndependent/glslang_tab.cpp"
break;
case 80: /* assignment_operator: EQUAL */
-#line 827 "MachineIndependent/glslang.y"
+#line 828 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAssign;
}
-#line 5943 "MachineIndependent/glslang_tab.cpp"
+#line 5956 "MachineIndependent/glslang_tab.cpp"
break;
case 81: /* assignment_operator: MUL_ASSIGN */
-#line 831 "MachineIndependent/glslang.y"
+#line 832 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpMulAssign;
}
-#line 5952 "MachineIndependent/glslang_tab.cpp"
+#line 5965 "MachineIndependent/glslang_tab.cpp"
break;
case 82: /* assignment_operator: DIV_ASSIGN */
-#line 835 "MachineIndependent/glslang.y"
+#line 836 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpDivAssign;
}
-#line 5961 "MachineIndependent/glslang_tab.cpp"
+#line 5974 "MachineIndependent/glslang_tab.cpp"
break;
case 83: /* assignment_operator: MOD_ASSIGN */
-#line 839 "MachineIndependent/glslang.y"
+#line 840 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpModAssign;
}
-#line 5971 "MachineIndependent/glslang_tab.cpp"
+#line 5984 "MachineIndependent/glslang_tab.cpp"
break;
case 84: /* assignment_operator: ADD_ASSIGN */
-#line 844 "MachineIndependent/glslang.y"
+#line 845 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAddAssign;
}
-#line 5980 "MachineIndependent/glslang_tab.cpp"
+#line 5993 "MachineIndependent/glslang_tab.cpp"
break;
case 85: /* assignment_operator: SUB_ASSIGN */
-#line 848 "MachineIndependent/glslang.y"
+#line 849 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpSubAssign;
}
-#line 5989 "MachineIndependent/glslang_tab.cpp"
+#line 6002 "MachineIndependent/glslang_tab.cpp"
break;
case 86: /* assignment_operator: LEFT_ASSIGN */
-#line 852 "MachineIndependent/glslang.y"
+#line 853 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
}
-#line 5998 "MachineIndependent/glslang_tab.cpp"
+#line 6011 "MachineIndependent/glslang_tab.cpp"
break;
case 87: /* assignment_operator: RIGHT_ASSIGN */
-#line 856 "MachineIndependent/glslang.y"
+#line 857 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
}
-#line 6007 "MachineIndependent/glslang_tab.cpp"
+#line 6020 "MachineIndependent/glslang_tab.cpp"
break;
case 88: /* assignment_operator: AND_ASSIGN */
-#line 860 "MachineIndependent/glslang.y"
+#line 861 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
}
-#line 6016 "MachineIndependent/glslang_tab.cpp"
+#line 6029 "MachineIndependent/glslang_tab.cpp"
break;
case 89: /* assignment_operator: XOR_ASSIGN */
-#line 864 "MachineIndependent/glslang.y"
+#line 865 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
}
-#line 6025 "MachineIndependent/glslang_tab.cpp"
+#line 6038 "MachineIndependent/glslang_tab.cpp"
break;
case 90: /* assignment_operator: OR_ASSIGN */
-#line 868 "MachineIndependent/glslang.y"
+#line 869 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
}
-#line 6034 "MachineIndependent/glslang_tab.cpp"
+#line 6047 "MachineIndependent/glslang_tab.cpp"
break;
case 91: /* expression: assignment_expression */
-#line 875 "MachineIndependent/glslang.y"
+#line 876 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 6042 "MachineIndependent/glslang_tab.cpp"
+#line 6055 "MachineIndependent/glslang_tab.cpp"
break;
case 92: /* expression: expression COMMA assignment_expression */
-#line 878 "MachineIndependent/glslang.y"
+#line 879 "MachineIndependent/glslang.y"
{
parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode));
(yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc);
@@ -6051,30 +6064,30 @@ yyreduce:
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 6055 "MachineIndependent/glslang_tab.cpp"
+#line 6068 "MachineIndependent/glslang_tab.cpp"
break;
case 93: /* constant_expression: conditional_expression */
-#line 889 "MachineIndependent/glslang.y"
+#line 890 "MachineIndependent/glslang.y"
{
parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 6064 "MachineIndependent/glslang_tab.cpp"
+#line 6077 "MachineIndependent/glslang_tab.cpp"
break;
case 94: /* declaration: function_prototype SEMICOLON */
-#line 896 "MachineIndependent/glslang.y"
+#line 897 "MachineIndependent/glslang.y"
{
parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */);
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 6074 "MachineIndependent/glslang_tab.cpp"
+#line 6087 "MachineIndependent/glslang_tab.cpp"
break;
case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */
-#line 902 "MachineIndependent/glslang.y"
+#line 903 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier");
(yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier
@@ -6082,31 +6095,31 @@ yyreduce:
(yyval.interm.intermNode) = 0;
// TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
}
-#line 6086 "MachineIndependent/glslang_tab.cpp"
+#line 6099 "MachineIndependent/glslang_tab.cpp"
break;
case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */
-#line 909 "MachineIndependent/glslang.y"
+#line 910 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier");
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier");
(yyval.interm.intermNode) = 0;
}
-#line 6096 "MachineIndependent/glslang_tab.cpp"
+#line 6109 "MachineIndependent/glslang_tab.cpp"
break;
case 97: /* declaration: init_declarator_list SEMICOLON */
-#line 915 "MachineIndependent/glslang.y"
+#line 916 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate())
(yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode;
}
-#line 6106 "MachineIndependent/glslang_tab.cpp"
+#line 6119 "MachineIndependent/glslang_tab.cpp"
break;
case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */
-#line 920 "MachineIndependent/glslang.y"
+#line 921 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
// lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope
@@ -6114,75 +6127,75 @@ yyreduce:
parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
(yyval.interm.intermNode) = 0;
}
-#line 6118 "MachineIndependent/glslang_tab.cpp"
+#line 6131 "MachineIndependent/glslang_tab.cpp"
break;
case 99: /* declaration: block_structure SEMICOLON */
-#line 927 "MachineIndependent/glslang.y"
+#line 928 "MachineIndependent/glslang.y"
{
parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
(yyval.interm.intermNode) = 0;
}
-#line 6127 "MachineIndependent/glslang_tab.cpp"
+#line 6140 "MachineIndependent/glslang_tab.cpp"
break;
case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */
-#line 931 "MachineIndependent/glslang.y"
+#line 932 "MachineIndependent/glslang.y"
{
parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 6136 "MachineIndependent/glslang_tab.cpp"
+#line 6149 "MachineIndependent/glslang_tab.cpp"
break;
case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */
-#line 935 "MachineIndependent/glslang.y"
+#line 936 "MachineIndependent/glslang.y"
{
parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
(yyval.interm.intermNode) = 0;
}
-#line 6145 "MachineIndependent/glslang_tab.cpp"
+#line 6158 "MachineIndependent/glslang_tab.cpp"
break;
case 102: /* declaration: type_qualifier SEMICOLON */
-#line 939 "MachineIndependent/glslang.y"
+#line 940 "MachineIndependent/glslang.y"
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type));
(yyval.interm.intermNode) = 0;
}
-#line 6155 "MachineIndependent/glslang_tab.cpp"
+#line 6168 "MachineIndependent/glslang_tab.cpp"
break;
case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */
-#line 944 "MachineIndependent/glslang.y"
+#line 945 "MachineIndependent/glslang.y"
{
parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers);
parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 6165 "MachineIndependent/glslang_tab.cpp"
+#line 6178 "MachineIndependent/glslang_tab.cpp"
break;
case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */
-#line 949 "MachineIndependent/glslang.y"
+#line 950 "MachineIndependent/glslang.y"
{
parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers);
(yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string);
parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList));
(yyval.interm.intermNode) = 0;
}
-#line 6176 "MachineIndependent/glslang_tab.cpp"
+#line 6189 "MachineIndependent/glslang_tab.cpp"
break;
case 105: /* $@2: %empty */
-#line 958 "MachineIndependent/glslang.y"
+#line 959 "MachineIndependent/glslang.y"
{ parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 6182 "MachineIndependent/glslang_tab.cpp"
+#line 6195 "MachineIndependent/glslang_tab.cpp"
break;
case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */
-#line 958 "MachineIndependent/glslang.y"
+#line 959 "MachineIndependent/glslang.y"
{
--parseContext.blockNestingLevel;
parseContext.blockName = (yyvsp[-4].lex).string;
@@ -6192,60 +6205,60 @@ yyreduce:
(yyval.interm).loc = (yyvsp[-5].interm.type).loc;
(yyval.interm).typeList = (yyvsp[-1].interm.typeList);
}
-#line 6196 "MachineIndependent/glslang_tab.cpp"
+#line 6209 "MachineIndependent/glslang_tab.cpp"
break;
case 107: /* identifier_list: COMMA IDENTIFIER */
-#line 969 "MachineIndependent/glslang.y"
+#line 970 "MachineIndependent/glslang.y"
{
(yyval.interm.identifierList) = new TIdentifierList;
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 6205 "MachineIndependent/glslang_tab.cpp"
+#line 6218 "MachineIndependent/glslang_tab.cpp"
break;
case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */
-#line 973 "MachineIndependent/glslang.y"
+#line 974 "MachineIndependent/glslang.y"
{
(yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 6214 "MachineIndependent/glslang_tab.cpp"
+#line 6227 "MachineIndependent/glslang_tab.cpp"
break;
case 109: /* function_prototype: function_declarator RIGHT_PAREN */
-#line 980 "MachineIndependent/glslang.y"
+#line 981 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-1].interm.function);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 6223 "MachineIndependent/glslang_tab.cpp"
+#line 6236 "MachineIndependent/glslang_tab.cpp"
break;
case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */
-#line 984 "MachineIndependent/glslang.y"
+#line 985 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-2].interm.function);
(yyval.interm).loc = (yyvsp[-1].lex).loc;
parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
}
-#line 6234 "MachineIndependent/glslang_tab.cpp"
+#line 6247 "MachineIndependent/glslang_tab.cpp"
break;
case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */
-#line 990 "MachineIndependent/glslang.y"
+#line 991 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-1].interm.function);
(yyval.interm).loc = (yyvsp[0].lex).loc;
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes));
}
-#line 6245 "MachineIndependent/glslang_tab.cpp"
+#line 6258 "MachineIndependent/glslang_tab.cpp"
break;
case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */
-#line 996 "MachineIndependent/glslang.y"
+#line 997 "MachineIndependent/glslang.y"
{
(yyval.interm).function = (yyvsp[-2].interm.function);
(yyval.interm).loc = (yyvsp[-1].lex).loc;
@@ -6253,27 +6266,27 @@ yyreduce:
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes));
parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
}
-#line 6257 "MachineIndependent/glslang_tab.cpp"
+#line 6270 "MachineIndependent/glslang_tab.cpp"
break;
case 113: /* function_declarator: function_header */
-#line 1006 "MachineIndependent/glslang.y"
+#line 1007 "MachineIndependent/glslang.y"
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 6265 "MachineIndependent/glslang_tab.cpp"
+#line 6278 "MachineIndependent/glslang_tab.cpp"
break;
case 114: /* function_declarator: function_header_with_parameters */
-#line 1009 "MachineIndependent/glslang.y"
+#line 1010 "MachineIndependent/glslang.y"
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 6273 "MachineIndependent/glslang_tab.cpp"
+#line 6286 "MachineIndependent/glslang_tab.cpp"
break;
case 115: /* function_header_with_parameters: function_header parameter_declaration */
-#line 1016 "MachineIndependent/glslang.y"
+#line 1017 "MachineIndependent/glslang.y"
{
// Add the parameter
(yyval.interm.function) = (yyvsp[-1].interm.function);
@@ -6282,11 +6295,11 @@ yyreduce:
else
delete (yyvsp[0].interm).param.type;
}
-#line 6286 "MachineIndependent/glslang_tab.cpp"
+#line 6299 "MachineIndependent/glslang_tab.cpp"
break;
case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */
-#line 1024 "MachineIndependent/glslang.y"
+#line 1025 "MachineIndependent/glslang.y"
{
//
// Only first parameter of one-parameter functions can be void
@@ -6304,11 +6317,11 @@ yyreduce:
(yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
}
}
-#line 6308 "MachineIndependent/glslang_tab.cpp"
+#line 6321 "MachineIndependent/glslang_tab.cpp"
break;
case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */
-#line 1044 "MachineIndependent/glslang.y"
+#line 1045 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) {
parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return",
@@ -6328,11 +6341,11 @@ yyreduce:
function = new TFunction((yyvsp[-1].lex).string, type);
(yyval.interm.function) = function;
}
-#line 6332 "MachineIndependent/glslang_tab.cpp"
+#line 6345 "MachineIndependent/glslang_tab.cpp"
break;
case 118: /* parameter_declarator: type_specifier IDENTIFIER */
-#line 1067 "MachineIndependent/glslang.y"
+#line 1068 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -6348,11 +6361,11 @@ yyreduce:
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param;
}
-#line 6352 "MachineIndependent/glslang_tab.cpp"
+#line 6365 "MachineIndependent/glslang_tab.cpp"
break;
case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */
-#line 1082 "MachineIndependent/glslang.y"
+#line 1083 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -6372,123 +6385,123 @@ yyreduce:
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param;
}
-#line 6376 "MachineIndependent/glslang_tab.cpp"
+#line 6389 "MachineIndependent/glslang_tab.cpp"
break;
case 120: /* parameter_declaration: type_qualifier parameter_declarator */
-#line 1107 "MachineIndependent/glslang.y"
+#line 1108 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
(yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
- parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
+ parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat());
parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 6392 "MachineIndependent/glslang_tab.cpp"
+#line 6405 "MachineIndependent/glslang_tab.cpp"
break;
case 121: /* parameter_declaration: parameter_declarator */
-#line 1118 "MachineIndependent/glslang.y"
+#line 1119 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
- parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
+ parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat());
}
-#line 6404 "MachineIndependent/glslang_tab.cpp"
+#line 6417 "MachineIndependent/glslang_tab.cpp"
break;
case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */
-#line 1128 "MachineIndependent/glslang.y"
+#line 1129 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
(yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision;
- parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
+ parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat());
parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type);
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 6419 "MachineIndependent/glslang_tab.cpp"
+#line 6432 "MachineIndependent/glslang_tab.cpp"
break;
case 123: /* parameter_declaration: parameter_type_specifier */
-#line 1138 "MachineIndependent/glslang.y"
+#line 1139 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type);
parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type);
- parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier());
+ parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat());
}
-#line 6431 "MachineIndependent/glslang_tab.cpp"
+#line 6444 "MachineIndependent/glslang_tab.cpp"
break;
case 124: /* parameter_type_specifier: type_specifier */
-#line 1148 "MachineIndependent/glslang.y"
+#line 1149 "MachineIndependent/glslang.y"
{
TParameter param = { 0, new TType((yyvsp[0].interm.type)) };
(yyval.interm).param = param;
if ((yyvsp[0].interm.type).arraySizes)
parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes);
}
-#line 6442 "MachineIndependent/glslang_tab.cpp"
+#line 6455 "MachineIndependent/glslang_tab.cpp"
break;
case 125: /* init_declarator_list: single_declaration */
-#line 1157 "MachineIndependent/glslang.y"
+#line 1158 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 6450 "MachineIndependent/glslang_tab.cpp"
+#line 6463 "MachineIndependent/glslang_tab.cpp"
break;
case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */
-#line 1160 "MachineIndependent/glslang.y"
+#line 1161 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-2].interm);
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
}
-#line 6459 "MachineIndependent/glslang_tab.cpp"
+#line 6472 "MachineIndependent/glslang_tab.cpp"
break;
case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */
-#line 1164 "MachineIndependent/glslang.y"
+#line 1165 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-3].interm);
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
}
-#line 6468 "MachineIndependent/glslang_tab.cpp"
+#line 6481 "MachineIndependent/glslang_tab.cpp"
break;
case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */
-#line 1168 "MachineIndependent/glslang.y"
+#line 1169 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-5].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 6478 "MachineIndependent/glslang_tab.cpp"
+#line 6491 "MachineIndependent/glslang_tab.cpp"
break;
case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */
-#line 1173 "MachineIndependent/glslang.y"
+#line 1174 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-4].interm).type;
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc);
}
-#line 6488 "MachineIndependent/glslang_tab.cpp"
+#line 6501 "MachineIndependent/glslang_tab.cpp"
break;
case 130: /* single_declaration: fully_specified_type */
-#line 1181 "MachineIndependent/glslang.y"
+#line 1182 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[0].interm.type);
(yyval.interm).intermNode = 0;
@@ -6496,51 +6509,51 @@ yyreduce:
parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
}
-#line 6500 "MachineIndependent/glslang_tab.cpp"
+#line 6513 "MachineIndependent/glslang_tab.cpp"
break;
case 131: /* single_declaration: fully_specified_type IDENTIFIER */
-#line 1188 "MachineIndependent/glslang.y"
+#line 1189 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-1].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type));
}
-#line 6510 "MachineIndependent/glslang_tab.cpp"
+#line 6523 "MachineIndependent/glslang_tab.cpp"
break;
case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */
-#line 1193 "MachineIndependent/glslang.y"
+#line 1194 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-2].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes);
}
-#line 6520 "MachineIndependent/glslang_tab.cpp"
+#line 6533 "MachineIndependent/glslang_tab.cpp"
break;
case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */
-#line 1198 "MachineIndependent/glslang.y"
+#line 1199 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-4].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 6530 "MachineIndependent/glslang_tab.cpp"
+#line 6543 "MachineIndependent/glslang_tab.cpp"
break;
case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */
-#line 1203 "MachineIndependent/glslang.y"
+#line 1204 "MachineIndependent/glslang.y"
{
(yyval.interm).type = (yyvsp[-3].interm.type);
TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode));
(yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc);
}
-#line 6540 "MachineIndependent/glslang_tab.cpp"
+#line 6553 "MachineIndependent/glslang_tab.cpp"
break;
case 135: /* fully_specified_type: type_specifier */
-#line 1212 "MachineIndependent/glslang.y"
+#line 1213 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
@@ -6549,13 +6562,13 @@ yyreduce:
parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type");
}
- parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
+ parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat());
}
-#line 6555 "MachineIndependent/glslang_tab.cpp"
+#line 6568 "MachineIndependent/glslang_tab.cpp"
break;
case 136: /* fully_specified_type: type_qualifier type_specifier */
-#line 1222 "MachineIndependent/glslang.y"
+#line 1223 "MachineIndependent/glslang.y"
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type));
parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
@@ -6571,7 +6584,7 @@ yyreduce:
parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers);
(yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers);
parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true);
- parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier);
+ parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier, (yyvsp[0].interm.type).isCoopmat());
(yyval.interm.type) = (yyvsp[0].interm.type);
@@ -6580,22 +6593,22 @@ yyreduce:
(parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
(yyval.interm.type).qualifier.smooth = true;
}
-#line 6584 "MachineIndependent/glslang_tab.cpp"
+#line 6597 "MachineIndependent/glslang_tab.cpp"
break;
case 137: /* invariant_qualifier: INVARIANT */
-#line 1249 "MachineIndependent/glslang.y"
+#line 1250 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "invariant");
parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.invariant = true;
}
-#line 6595 "MachineIndependent/glslang_tab.cpp"
+#line 6608 "MachineIndependent/glslang_tab.cpp"
break;
case 138: /* interpolation_qualifier: SMOOTH */
-#line 1258 "MachineIndependent/glslang.y"
+#line 1259 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
@@ -6603,11 +6616,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.smooth = true;
}
-#line 6607 "MachineIndependent/glslang_tab.cpp"
+#line 6620 "MachineIndependent/glslang_tab.cpp"
break;
case 139: /* interpolation_qualifier: FLAT */
-#line 1265 "MachineIndependent/glslang.y"
+#line 1266 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
@@ -6615,11 +6628,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.flat = true;
}
-#line 6619 "MachineIndependent/glslang_tab.cpp"
+#line 6632 "MachineIndependent/glslang_tab.cpp"
break;
case 140: /* interpolation_qualifier: NOPERSPECTIVE */
-#line 1273 "MachineIndependent/glslang.y"
+#line 1274 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective");
@@ -6627,11 +6640,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nopersp = true;
}
-#line 6631 "MachineIndependent/glslang_tab.cpp"
+#line 6644 "MachineIndependent/glslang_tab.cpp"
break;
case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */
-#line 1280 "MachineIndependent/glslang.y"
+#line 1281 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation");
@@ -6639,11 +6652,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.explicitInterp = true;
}
-#line 6643 "MachineIndependent/glslang_tab.cpp"
+#line 6656 "MachineIndependent/glslang_tab.cpp"
break;
case 142: /* interpolation_qualifier: PERVERTEXNV */
-#line 1287 "MachineIndependent/glslang.y"
+#line 1288 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric");
@@ -6652,11 +6665,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.pervertexNV = true;
}
-#line 6656 "MachineIndependent/glslang_tab.cpp"
+#line 6669 "MachineIndependent/glslang_tab.cpp"
break;
case 143: /* interpolation_qualifier: PERVERTEXEXT */
-#line 1295 "MachineIndependent/glslang.y"
+#line 1296 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric");
@@ -6665,11 +6678,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.pervertexEXT = true;
}
-#line 6669 "MachineIndependent/glslang_tab.cpp"
+#line 6682 "MachineIndependent/glslang_tab.cpp"
break;
case 144: /* interpolation_qualifier: PERPRIMITIVENV */
-#line 1303 "MachineIndependent/glslang.y"
+#line 1304 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV");
@@ -6680,11 +6693,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perPrimitiveNV = true;
}
-#line 6684 "MachineIndependent/glslang_tab.cpp"
+#line 6697 "MachineIndependent/glslang_tab.cpp"
break;
case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */
-#line 1313 "MachineIndependent/glslang.y"
+#line 1314 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT");
@@ -6695,11 +6708,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perPrimitiveNV = true;
}
-#line 6699 "MachineIndependent/glslang_tab.cpp"
+#line 6712 "MachineIndependent/glslang_tab.cpp"
break;
case 146: /* interpolation_qualifier: PERVIEWNV */
-#line 1323 "MachineIndependent/glslang.y"
+#line 1324 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV");
@@ -6707,11 +6720,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perViewNV = true;
}
-#line 6711 "MachineIndependent/glslang_tab.cpp"
+#line 6724 "MachineIndependent/glslang_tab.cpp"
break;
case 147: /* interpolation_qualifier: PERTASKNV */
-#line 1330 "MachineIndependent/glslang.y"
+#line 1331 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV");
@@ -6719,84 +6732,84 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.perTaskNV = true;
}
-#line 6723 "MachineIndependent/glslang_tab.cpp"
+#line 6736 "MachineIndependent/glslang_tab.cpp"
break;
case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */
-#line 1341 "MachineIndependent/glslang.y"
+#line 1342 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
}
-#line 6731 "MachineIndependent/glslang_tab.cpp"
+#line 6744 "MachineIndependent/glslang_tab.cpp"
break;
case 149: /* layout_qualifier_id_list: layout_qualifier_id */
-#line 1347 "MachineIndependent/glslang.y"
+#line 1348 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6739 "MachineIndependent/glslang_tab.cpp"
+#line 6752 "MachineIndependent/glslang_tab.cpp"
break;
case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */
-#line 1350 "MachineIndependent/glslang.y"
+#line 1351 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-2].interm.type);
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 6749 "MachineIndependent/glslang_tab.cpp"
+#line 6762 "MachineIndependent/glslang_tab.cpp"
break;
case 151: /* layout_qualifier_id: IDENTIFIER */
-#line 1357 "MachineIndependent/glslang.y"
+#line 1358 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
}
-#line 6758 "MachineIndependent/glslang_tab.cpp"
+#line 6771 "MachineIndependent/glslang_tab.cpp"
break;
case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */
-#line 1361 "MachineIndependent/glslang.y"
+#line 1362 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-2].lex).loc);
parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode));
}
-#line 6767 "MachineIndependent/glslang_tab.cpp"
+#line 6780 "MachineIndependent/glslang_tab.cpp"
break;
case 153: /* layout_qualifier_id: SHARED */
-#line 1365 "MachineIndependent/glslang.y"
+#line 1366 "MachineIndependent/glslang.y"
{ // because "shared" is both an identifier and a keyword
(yyval.interm.type).init((yyvsp[0].lex).loc);
TString strShared("shared");
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared);
}
-#line 6777 "MachineIndependent/glslang_tab.cpp"
+#line 6790 "MachineIndependent/glslang_tab.cpp"
break;
case 154: /* precise_qualifier: PRECISE */
-#line 1374 "MachineIndependent/glslang.y"
+#line 1375 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.noContraction = true;
}
-#line 6788 "MachineIndependent/glslang_tab.cpp"
+#line 6801 "MachineIndependent/glslang_tab.cpp"
break;
case 155: /* type_qualifier: single_type_qualifier */
-#line 1384 "MachineIndependent/glslang.y"
+#line 1385 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6796 "MachineIndependent/glslang_tab.cpp"
+#line 6809 "MachineIndependent/glslang_tab.cpp"
break;
case 156: /* type_qualifier: type_qualifier single_type_qualifier */
-#line 1387 "MachineIndependent/glslang.y"
+#line 1388 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
if ((yyval.interm.type).basicType == EbtVoid)
@@ -6805,151 +6818,151 @@ yyreduce:
(yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers);
parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false);
}
-#line 6809 "MachineIndependent/glslang_tab.cpp"
+#line 6822 "MachineIndependent/glslang_tab.cpp"
break;
case 157: /* single_type_qualifier: storage_qualifier */
-#line 1398 "MachineIndependent/glslang.y"
+#line 1399 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6817 "MachineIndependent/glslang_tab.cpp"
+#line 6830 "MachineIndependent/glslang_tab.cpp"
break;
case 158: /* single_type_qualifier: layout_qualifier */
-#line 1401 "MachineIndependent/glslang.y"
+#line 1402 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6825 "MachineIndependent/glslang_tab.cpp"
+#line 6838 "MachineIndependent/glslang_tab.cpp"
break;
case 159: /* single_type_qualifier: precision_qualifier */
-#line 1404 "MachineIndependent/glslang.y"
+#line 1405 "MachineIndependent/glslang.y"
{
parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6834 "MachineIndependent/glslang_tab.cpp"
+#line 6847 "MachineIndependent/glslang_tab.cpp"
break;
case 160: /* single_type_qualifier: interpolation_qualifier */
-#line 1408 "MachineIndependent/glslang.y"
+#line 1409 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6843 "MachineIndependent/glslang_tab.cpp"
+#line 6856 "MachineIndependent/glslang_tab.cpp"
break;
case 161: /* single_type_qualifier: invariant_qualifier */
-#line 1412 "MachineIndependent/glslang.y"
+#line 1413 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6852 "MachineIndependent/glslang_tab.cpp"
+#line 6865 "MachineIndependent/glslang_tab.cpp"
break;
case 162: /* single_type_qualifier: precise_qualifier */
-#line 1417 "MachineIndependent/glslang.y"
+#line 1418 "MachineIndependent/glslang.y"
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6861 "MachineIndependent/glslang_tab.cpp"
+#line 6874 "MachineIndependent/glslang_tab.cpp"
break;
case 163: /* single_type_qualifier: non_uniform_qualifier */
-#line 1421 "MachineIndependent/glslang.y"
+#line 1422 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6869 "MachineIndependent/glslang_tab.cpp"
+#line 6882 "MachineIndependent/glslang_tab.cpp"
break;
case 164: /* single_type_qualifier: spirv_storage_class_qualifier */
-#line 1424 "MachineIndependent/glslang.y"
+#line 1425 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class");
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6879 "MachineIndependent/glslang_tab.cpp"
+#line 6892 "MachineIndependent/glslang_tab.cpp"
break;
case 165: /* single_type_qualifier: spirv_decorate_qualifier */
-#line 1429 "MachineIndependent/glslang.y"
+#line 1430 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 6888 "MachineIndependent/glslang_tab.cpp"
+#line 6901 "MachineIndependent/glslang_tab.cpp"
break;
case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */
-#line 1433 "MachineIndependent/glslang.y"
+#line 1434 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.setSpirvByReference();
}
-#line 6898 "MachineIndependent/glslang_tab.cpp"
+#line 6911 "MachineIndependent/glslang_tab.cpp"
break;
case 167: /* single_type_qualifier: SPIRV_LITERAL */
-#line 1438 "MachineIndependent/glslang.y"
+#line 1439 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.setSpirvLiteral();
}
-#line 6908 "MachineIndependent/glslang_tab.cpp"
+#line 6921 "MachineIndependent/glslang_tab.cpp"
break;
case 168: /* storage_qualifier: CONST */
-#line 1447 "MachineIndependent/glslang.y"
+#line 1448 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant
}
-#line 6917 "MachineIndependent/glslang_tab.cpp"
+#line 6930 "MachineIndependent/glslang_tab.cpp"
break;
case 169: /* storage_qualifier: INOUT */
-#line 1451 "MachineIndependent/glslang.y"
+#line 1452 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
-#line 6927 "MachineIndependent/glslang_tab.cpp"
+#line 6940 "MachineIndependent/glslang_tab.cpp"
break;
case 170: /* storage_qualifier: IN */
-#line 1456 "MachineIndependent/glslang.y"
+#line 1457 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "in");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqIn;
}
-#line 6938 "MachineIndependent/glslang_tab.cpp"
+#line 6951 "MachineIndependent/glslang_tab.cpp"
break;
case 171: /* storage_qualifier: OUT */
-#line 1462 "MachineIndependent/glslang.y"
+#line 1463 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "out");
(yyval.interm.type).init((yyvsp[0].lex).loc);
// whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later
(yyval.interm.type).qualifier.storage = EvqOut;
}
-#line 6949 "MachineIndependent/glslang_tab.cpp"
+#line 6962 "MachineIndependent/glslang_tab.cpp"
break;
case 172: /* storage_qualifier: CENTROID */
-#line 1468 "MachineIndependent/glslang.y"
+#line 1469 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -6957,31 +6970,31 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
-#line 6961 "MachineIndependent/glslang_tab.cpp"
+#line 6974 "MachineIndependent/glslang_tab.cpp"
break;
case 173: /* storage_qualifier: UNIFORM */
-#line 1475 "MachineIndependent/glslang.y"
+#line 1476 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 6971 "MachineIndependent/glslang_tab.cpp"
+#line 6984 "MachineIndependent/glslang_tab.cpp"
break;
case 174: /* storage_qualifier: TILEIMAGEEXT */
-#line 1480 "MachineIndependent/glslang.y"
+#line 1481 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqTileImageEXT;
}
-#line 6981 "MachineIndependent/glslang_tab.cpp"
+#line 6994 "MachineIndependent/glslang_tab.cpp"
break;
case 175: /* storage_qualifier: SHARED */
-#line 1485 "MachineIndependent/glslang.y"
+#line 1486 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
@@ -6990,21 +7003,21 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
-#line 6994 "MachineIndependent/glslang_tab.cpp"
+#line 7007 "MachineIndependent/glslang_tab.cpp"
break;
case 176: /* storage_qualifier: BUFFER */
-#line 1493 "MachineIndependent/glslang.y"
+#line 1494 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
-#line 7004 "MachineIndependent/glslang_tab.cpp"
+#line 7017 "MachineIndependent/glslang_tab.cpp"
break;
case 177: /* storage_qualifier: ATTRIBUTE */
-#line 1499 "MachineIndependent/glslang.y"
+#line 1500 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -7017,11 +7030,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 7021 "MachineIndependent/glslang_tab.cpp"
+#line 7034 "MachineIndependent/glslang_tab.cpp"
break;
case 178: /* storage_qualifier: VARYING */
-#line 1511 "MachineIndependent/glslang.y"
+#line 1512 "MachineIndependent/glslang.y"
{
parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -7036,32 +7049,32 @@ yyreduce:
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 7040 "MachineIndependent/glslang_tab.cpp"
+#line 7053 "MachineIndependent/glslang_tab.cpp"
break;
case 179: /* storage_qualifier: PATCH */
-#line 1525 "MachineIndependent/glslang.y"
+#line 1526 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "patch");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.patch = true;
}
-#line 7051 "MachineIndependent/glslang_tab.cpp"
+#line 7064 "MachineIndependent/glslang_tab.cpp"
break;
case 180: /* storage_qualifier: SAMPLE */
-#line 1531 "MachineIndependent/glslang.y"
+#line 1532 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
-#line 7061 "MachineIndependent/glslang_tab.cpp"
+#line 7074 "MachineIndependent/glslang_tab.cpp"
break;
case 181: /* storage_qualifier: HITATTRNV */
-#line 1536 "MachineIndependent/glslang.y"
+#line 1537 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -7070,11 +7083,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 7074 "MachineIndependent/glslang_tab.cpp"
+#line 7087 "MachineIndependent/glslang_tab.cpp"
break;
case 182: /* storage_qualifier: HITOBJECTATTRNV */
-#line 1544 "MachineIndependent/glslang.y"
+#line 1545 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask
@@ -7083,11 +7096,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV;
}
-#line 7087 "MachineIndependent/glslang_tab.cpp"
+#line 7100 "MachineIndependent/glslang_tab.cpp"
break;
case 183: /* storage_qualifier: HITATTREXT */
-#line 1552 "MachineIndependent/glslang.y"
+#line 1553 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -7096,11 +7109,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqHitAttr;
}
-#line 7100 "MachineIndependent/glslang_tab.cpp"
+#line 7113 "MachineIndependent/glslang_tab.cpp"
break;
case 184: /* storage_qualifier: PAYLOADNV */
-#line 1560 "MachineIndependent/glslang.y"
+#line 1561 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -7109,11 +7122,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 7113 "MachineIndependent/glslang_tab.cpp"
+#line 7126 "MachineIndependent/glslang_tab.cpp"
break;
case 185: /* storage_qualifier: PAYLOADEXT */
-#line 1568 "MachineIndependent/glslang.y"
+#line 1569 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -7122,11 +7135,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayload;
}
-#line 7126 "MachineIndependent/glslang_tab.cpp"
+#line 7139 "MachineIndependent/glslang_tab.cpp"
break;
case 186: /* storage_qualifier: PAYLOADINNV */
-#line 1576 "MachineIndependent/glslang.y"
+#line 1577 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -7135,11 +7148,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayloadIn;
}
-#line 7139 "MachineIndependent/glslang_tab.cpp"
+#line 7152 "MachineIndependent/glslang_tab.cpp"
break;
case 187: /* storage_qualifier: PAYLOADINEXT */
-#line 1584 "MachineIndependent/glslang.y"
+#line 1585 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -7148,11 +7161,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqPayloadIn;
}
-#line 7152 "MachineIndependent/glslang_tab.cpp"
+#line 7165 "MachineIndependent/glslang_tab.cpp"
break;
case 188: /* storage_qualifier: CALLDATANV */
-#line 1592 "MachineIndependent/glslang.y"
+#line 1593 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -7161,11 +7174,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableData;
}
-#line 7165 "MachineIndependent/glslang_tab.cpp"
+#line 7178 "MachineIndependent/glslang_tab.cpp"
break;
case 189: /* storage_qualifier: CALLDATAEXT */
-#line 1600 "MachineIndependent/glslang.y"
+#line 1601 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -7174,11 +7187,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableData;
}
-#line 7178 "MachineIndependent/glslang_tab.cpp"
+#line 7191 "MachineIndependent/glslang_tab.cpp"
break;
case 190: /* storage_qualifier: CALLDATAINNV */
-#line 1608 "MachineIndependent/glslang.y"
+#line 1609 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
@@ -7186,11 +7199,11 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableDataIn;
}
-#line 7190 "MachineIndependent/glslang_tab.cpp"
+#line 7203 "MachineIndependent/glslang_tab.cpp"
break;
case 191: /* storage_qualifier: CALLDATAINEXT */
-#line 1615 "MachineIndependent/glslang.y"
+#line 1616 "MachineIndependent/glslang.y"
{
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT");
parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
@@ -7198,138 +7211,138 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqCallableDataIn;
}
-#line 7202 "MachineIndependent/glslang_tab.cpp"
+#line 7215 "MachineIndependent/glslang_tab.cpp"
break;
case 192: /* storage_qualifier: COHERENT */
-#line 1622 "MachineIndependent/glslang.y"
+#line 1623 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
-#line 7211 "MachineIndependent/glslang_tab.cpp"
+#line 7224 "MachineIndependent/glslang_tab.cpp"
break;
case 193: /* storage_qualifier: DEVICECOHERENT */
-#line 1626 "MachineIndependent/glslang.y"
+#line 1627 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent");
(yyval.interm.type).qualifier.devicecoherent = true;
}
-#line 7221 "MachineIndependent/glslang_tab.cpp"
+#line 7234 "MachineIndependent/glslang_tab.cpp"
break;
case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */
-#line 1631 "MachineIndependent/glslang.y"
+#line 1632 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent");
(yyval.interm.type).qualifier.queuefamilycoherent = true;
}
-#line 7231 "MachineIndependent/glslang_tab.cpp"
+#line 7244 "MachineIndependent/glslang_tab.cpp"
break;
case 195: /* storage_qualifier: WORKGROUPCOHERENT */
-#line 1636 "MachineIndependent/glslang.y"
+#line 1637 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent");
(yyval.interm.type).qualifier.workgroupcoherent = true;
}
-#line 7241 "MachineIndependent/glslang_tab.cpp"
+#line 7254 "MachineIndependent/glslang_tab.cpp"
break;
case 196: /* storage_qualifier: SUBGROUPCOHERENT */
-#line 1641 "MachineIndependent/glslang.y"
+#line 1642 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent");
(yyval.interm.type).qualifier.subgroupcoherent = true;
}
-#line 7251 "MachineIndependent/glslang_tab.cpp"
+#line 7264 "MachineIndependent/glslang_tab.cpp"
break;
case 197: /* storage_qualifier: NONPRIVATE */
-#line 1646 "MachineIndependent/glslang.y"
+#line 1647 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate");
(yyval.interm.type).qualifier.nonprivate = true;
}
-#line 7261 "MachineIndependent/glslang_tab.cpp"
+#line 7274 "MachineIndependent/glslang_tab.cpp"
break;
case 198: /* storage_qualifier: SHADERCALLCOHERENT */
-#line 1651 "MachineIndependent/glslang.y"
+#line 1652 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent");
(yyval.interm.type).qualifier.shadercallcoherent = true;
}
-#line 7271 "MachineIndependent/glslang_tab.cpp"
+#line 7284 "MachineIndependent/glslang_tab.cpp"
break;
case 199: /* storage_qualifier: VOLATILE */
-#line 1656 "MachineIndependent/glslang.y"
+#line 1657 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
-#line 7280 "MachineIndependent/glslang_tab.cpp"
+#line 7293 "MachineIndependent/glslang_tab.cpp"
break;
case 200: /* storage_qualifier: RESTRICT */
-#line 1660 "MachineIndependent/glslang.y"
+#line 1661 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
-#line 7289 "MachineIndependent/glslang_tab.cpp"
+#line 7302 "MachineIndependent/glslang_tab.cpp"
break;
case 201: /* storage_qualifier: READONLY */
-#line 1664 "MachineIndependent/glslang.y"
+#line 1665 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
-#line 7298 "MachineIndependent/glslang_tab.cpp"
+#line 7311 "MachineIndependent/glslang_tab.cpp"
break;
case 202: /* storage_qualifier: WRITEONLY */
-#line 1668 "MachineIndependent/glslang.y"
+#line 1669 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
-#line 7307 "MachineIndependent/glslang_tab.cpp"
+#line 7320 "MachineIndependent/glslang_tab.cpp"
break;
case 203: /* storage_qualifier: SUBROUTINE */
-#line 1672 "MachineIndependent/glslang.y"
+#line 1673 "MachineIndependent/glslang.y"
{
parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[0].lex).loc);
}
-#line 7318 "MachineIndependent/glslang_tab.cpp"
+#line 7331 "MachineIndependent/glslang_tab.cpp"
break;
case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */
-#line 1678 "MachineIndependent/glslang.y"
+#line 1679 "MachineIndependent/glslang.y"
{
parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine");
parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine");
parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine");
(yyval.interm.type).init((yyvsp[-3].lex).loc);
}
-#line 7329 "MachineIndependent/glslang_tab.cpp"
+#line 7342 "MachineIndependent/glslang_tab.cpp"
break;
case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */
-#line 1684 "MachineIndependent/glslang.y"
+#line 1685 "MachineIndependent/glslang.y"
{
// No need for profile version or extension check. Shader stage already checks both.
parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT");
@@ -7337,70 +7350,73 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT;
}
-#line 7341 "MachineIndependent/glslang_tab.cpp"
+#line 7354 "MachineIndependent/glslang_tab.cpp"
break;
case 206: /* non_uniform_qualifier: NONUNIFORM */
-#line 1696 "MachineIndependent/glslang.y"
+#line 1697 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nonUniform = true;
}
-#line 7350 "MachineIndependent/glslang_tab.cpp"
+#line 7363 "MachineIndependent/glslang_tab.cpp"
break;
case 207: /* type_name_list: IDENTIFIER */
-#line 1703 "MachineIndependent/glslang.y"
+#line 1704 "MachineIndependent/glslang.y"
{
// TODO
}
-#line 7358 "MachineIndependent/glslang_tab.cpp"
+#line 7371 "MachineIndependent/glslang_tab.cpp"
break;
case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */
-#line 1706 "MachineIndependent/glslang.y"
+#line 1707 "MachineIndependent/glslang.y"
{
// TODO: 4.0 semantics: subroutines
// 1) make sure each identifier is a type declared earlier with SUBROUTINE
// 2) save all of the identifiers for future comparison with the declared function
}
-#line 7368 "MachineIndependent/glslang_tab.cpp"
+#line 7381 "MachineIndependent/glslang_tab.cpp"
break;
case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */
-#line 1715 "MachineIndependent/glslang.y"
+#line 1716 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
(yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters);
+ parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type));
+
}
-#line 7378 "MachineIndependent/glslang_tab.cpp"
+#line 7393 "MachineIndependent/glslang_tab.cpp"
break;
case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */
-#line 1720 "MachineIndependent/glslang.y"
+#line 1723 "MachineIndependent/glslang.y"
{
parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
(yyval.interm.type) = (yyvsp[-2].interm.type);
(yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type));
(yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
(yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
+ parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type));
}
-#line 7390 "MachineIndependent/glslang_tab.cpp"
+#line 7406 "MachineIndependent/glslang_tab.cpp"
break;
case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */
-#line 1730 "MachineIndependent/glslang.y"
+#line 1734 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
-#line 7400 "MachineIndependent/glslang_tab.cpp"
+#line 7416 "MachineIndependent/glslang_tab.cpp"
break;
case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */
-#line 1735 "MachineIndependent/glslang.y"
+#line 1739 "MachineIndependent/glslang.y"
{
(yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
@@ -7409,20 +7425,20 @@ yyreduce:
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 7413 "MachineIndependent/glslang_tab.cpp"
+#line 7429 "MachineIndependent/glslang_tab.cpp"
break;
case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */
-#line 1743 "MachineIndependent/glslang.y"
+#line 1747 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
-#line 7422 "MachineIndependent/glslang_tab.cpp"
+#line 7438 "MachineIndependent/glslang_tab.cpp"
break;
case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */
-#line 1747 "MachineIndependent/glslang.y"
+#line 1751 "MachineIndependent/glslang.y"
{
(yyval.interm) = (yyvsp[-3].interm);
@@ -7430,348 +7446,359 @@ yyreduce:
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 7434 "MachineIndependent/glslang_tab.cpp"
+#line 7450 "MachineIndependent/glslang_tab.cpp"
break;
case 215: /* type_parameter_specifier_opt: type_parameter_specifier */
-#line 1757 "MachineIndependent/glslang.y"
+#line 1761 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
}
-#line 7442 "MachineIndependent/glslang_tab.cpp"
+#line 7458 "MachineIndependent/glslang_tab.cpp"
break;
case 216: /* type_parameter_specifier_opt: %empty */
-#line 1760 "MachineIndependent/glslang.y"
+#line 1764 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = 0;
}
-#line 7450 "MachineIndependent/glslang_tab.cpp"
+#line 7466 "MachineIndependent/glslang_tab.cpp"
break;
case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */
-#line 1766 "MachineIndependent/glslang.y"
+#line 1770 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
}
-#line 7458 "MachineIndependent/glslang_tab.cpp"
+#line 7474 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 218: /* type_parameter_specifier_list: type_specifier */
+#line 1776 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.typeParameters) = new TTypeParameters;
+ (yyval.interm.typeParameters)->arraySizes = new TArraySizes;
+ (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType;
+ }
+#line 7484 "MachineIndependent/glslang_tab.cpp"
break;
- case 218: /* type_parameter_specifier_list: unary_expression */
-#line 1772 "MachineIndependent/glslang.y"
+ case 219: /* type_parameter_specifier_list: unary_expression */
+#line 1781 "MachineIndependent/glslang.y"
{
- (yyval.interm.typeParameters) = new TArraySizes;
+ (yyval.interm.typeParameters) = new TTypeParameters;
+ (yyval.interm.typeParameters)->arraySizes = new TArraySizes;
TArraySize size;
- parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
- (yyval.interm.typeParameters)->addInnerSize(size);
+ parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true);
+ (yyval.interm.typeParameters)->arraySizes->addInnerSize(size);
}
-#line 7470 "MachineIndependent/glslang_tab.cpp"
+#line 7497 "MachineIndependent/glslang_tab.cpp"
break;
- case 219: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */
-#line 1779 "MachineIndependent/glslang.y"
+ case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */
+#line 1789 "MachineIndependent/glslang.y"
{
(yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
TArraySize size;
- parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
- (yyval.interm.typeParameters)->addInnerSize(size);
+ parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true);
+ (yyval.interm.typeParameters)->arraySizes->addInnerSize(size);
}
-#line 7482 "MachineIndependent/glslang_tab.cpp"
+#line 7509 "MachineIndependent/glslang_tab.cpp"
break;
- case 220: /* type_specifier_nonarray: VOID */
-#line 1789 "MachineIndependent/glslang.y"
+ case 221: /* type_specifier_nonarray: VOID */
+#line 1799 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
-#line 7491 "MachineIndependent/glslang_tab.cpp"
+#line 7518 "MachineIndependent/glslang_tab.cpp"
break;
- case 221: /* type_specifier_nonarray: FLOAT */
-#line 1793 "MachineIndependent/glslang.y"
+ case 222: /* type_specifier_nonarray: FLOAT */
+#line 1803 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 7500 "MachineIndependent/glslang_tab.cpp"
+#line 7527 "MachineIndependent/glslang_tab.cpp"
break;
- case 222: /* type_specifier_nonarray: INT */
-#line 1797 "MachineIndependent/glslang.y"
+ case 223: /* type_specifier_nonarray: INT */
+#line 1807 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 7509 "MachineIndependent/glslang_tab.cpp"
+#line 7536 "MachineIndependent/glslang_tab.cpp"
break;
- case 223: /* type_specifier_nonarray: UINT */
-#line 1801 "MachineIndependent/glslang.y"
+ case 224: /* type_specifier_nonarray: UINT */
+#line 1811 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 7519 "MachineIndependent/glslang_tab.cpp"
+#line 7546 "MachineIndependent/glslang_tab.cpp"
break;
- case 224: /* type_specifier_nonarray: BOOL */
-#line 1806 "MachineIndependent/glslang.y"
+ case 225: /* type_specifier_nonarray: BOOL */
+#line 1816 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
}
-#line 7528 "MachineIndependent/glslang_tab.cpp"
+#line 7555 "MachineIndependent/glslang_tab.cpp"
break;
- case 225: /* type_specifier_nonarray: VEC2 */
-#line 1810 "MachineIndependent/glslang.y"
+ case 226: /* type_specifier_nonarray: VEC2 */
+#line 1820 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(2);
}
-#line 7538 "MachineIndependent/glslang_tab.cpp"
+#line 7565 "MachineIndependent/glslang_tab.cpp"
break;
- case 226: /* type_specifier_nonarray: VEC3 */
-#line 1815 "MachineIndependent/glslang.y"
+ case 227: /* type_specifier_nonarray: VEC3 */
+#line 1825 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(3);
}
-#line 7548 "MachineIndependent/glslang_tab.cpp"
+#line 7575 "MachineIndependent/glslang_tab.cpp"
break;
- case 227: /* type_specifier_nonarray: VEC4 */
-#line 1820 "MachineIndependent/glslang.y"
+ case 228: /* type_specifier_nonarray: VEC4 */
+#line 1830 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(4);
}
-#line 7558 "MachineIndependent/glslang_tab.cpp"
+#line 7585 "MachineIndependent/glslang_tab.cpp"
break;
- case 228: /* type_specifier_nonarray: BVEC2 */
-#line 1825 "MachineIndependent/glslang.y"
+ case 229: /* type_specifier_nonarray: BVEC2 */
+#line 1835 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(2);
}
-#line 7568 "MachineIndependent/glslang_tab.cpp"
+#line 7595 "MachineIndependent/glslang_tab.cpp"
break;
- case 229: /* type_specifier_nonarray: BVEC3 */
-#line 1830 "MachineIndependent/glslang.y"
+ case 230: /* type_specifier_nonarray: BVEC3 */
+#line 1840 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(3);
}
-#line 7578 "MachineIndependent/glslang_tab.cpp"
+#line 7605 "MachineIndependent/glslang_tab.cpp"
break;
- case 230: /* type_specifier_nonarray: BVEC4 */
-#line 1835 "MachineIndependent/glslang.y"
+ case 231: /* type_specifier_nonarray: BVEC4 */
+#line 1845 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(4);
}
-#line 7588 "MachineIndependent/glslang_tab.cpp"
+#line 7615 "MachineIndependent/glslang_tab.cpp"
break;
- case 231: /* type_specifier_nonarray: IVEC2 */
-#line 1840 "MachineIndependent/glslang.y"
+ case 232: /* type_specifier_nonarray: IVEC2 */
+#line 1850 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(2);
}
-#line 7598 "MachineIndependent/glslang_tab.cpp"
+#line 7625 "MachineIndependent/glslang_tab.cpp"
break;
- case 232: /* type_specifier_nonarray: IVEC3 */
-#line 1845 "MachineIndependent/glslang.y"
+ case 233: /* type_specifier_nonarray: IVEC3 */
+#line 1855 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(3);
}
-#line 7608 "MachineIndependent/glslang_tab.cpp"
+#line 7635 "MachineIndependent/glslang_tab.cpp"
break;
- case 233: /* type_specifier_nonarray: IVEC4 */
-#line 1850 "MachineIndependent/glslang.y"
+ case 234: /* type_specifier_nonarray: IVEC4 */
+#line 1860 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
-#line 7618 "MachineIndependent/glslang_tab.cpp"
+#line 7645 "MachineIndependent/glslang_tab.cpp"
break;
- case 234: /* type_specifier_nonarray: UVEC2 */
-#line 1855 "MachineIndependent/glslang.y"
+ case 235: /* type_specifier_nonarray: UVEC2 */
+#line 1865 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(2);
}
-#line 7629 "MachineIndependent/glslang_tab.cpp"
+#line 7656 "MachineIndependent/glslang_tab.cpp"
break;
- case 235: /* type_specifier_nonarray: UVEC3 */
-#line 1861 "MachineIndependent/glslang.y"
+ case 236: /* type_specifier_nonarray: UVEC3 */
+#line 1871 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(3);
}
-#line 7640 "MachineIndependent/glslang_tab.cpp"
+#line 7667 "MachineIndependent/glslang_tab.cpp"
break;
- case 236: /* type_specifier_nonarray: UVEC4 */
-#line 1867 "MachineIndependent/glslang.y"
+ case 237: /* type_specifier_nonarray: UVEC4 */
+#line 1877 "MachineIndependent/glslang.y"
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(4);
}
-#line 7651 "MachineIndependent/glslang_tab.cpp"
+#line 7678 "MachineIndependent/glslang_tab.cpp"
break;
- case 237: /* type_specifier_nonarray: MAT2 */
-#line 1873 "MachineIndependent/glslang.y"
+ case 238: /* type_specifier_nonarray: MAT2 */
+#line 1883 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7661 "MachineIndependent/glslang_tab.cpp"
+#line 7688 "MachineIndependent/glslang_tab.cpp"
break;
- case 238: /* type_specifier_nonarray: MAT3 */
-#line 1878 "MachineIndependent/glslang.y"
+ case 239: /* type_specifier_nonarray: MAT3 */
+#line 1888 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7671 "MachineIndependent/glslang_tab.cpp"
+#line 7698 "MachineIndependent/glslang_tab.cpp"
break;
- case 239: /* type_specifier_nonarray: MAT4 */
-#line 1883 "MachineIndependent/glslang.y"
+ case 240: /* type_specifier_nonarray: MAT4 */
+#line 1893 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7681 "MachineIndependent/glslang_tab.cpp"
+#line 7708 "MachineIndependent/glslang_tab.cpp"
break;
- case 240: /* type_specifier_nonarray: MAT2X2 */
-#line 1888 "MachineIndependent/glslang.y"
+ case 241: /* type_specifier_nonarray: MAT2X2 */
+#line 1898 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7691 "MachineIndependent/glslang_tab.cpp"
+#line 7718 "MachineIndependent/glslang_tab.cpp"
break;
- case 241: /* type_specifier_nonarray: MAT2X3 */
-#line 1893 "MachineIndependent/glslang.y"
+ case 242: /* type_specifier_nonarray: MAT2X3 */
+#line 1903 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 7701 "MachineIndependent/glslang_tab.cpp"
+#line 7728 "MachineIndependent/glslang_tab.cpp"
break;
- case 242: /* type_specifier_nonarray: MAT2X4 */
-#line 1898 "MachineIndependent/glslang.y"
+ case 243: /* type_specifier_nonarray: MAT2X4 */
+#line 1908 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 7711 "MachineIndependent/glslang_tab.cpp"
+#line 7738 "MachineIndependent/glslang_tab.cpp"
break;
- case 243: /* type_specifier_nonarray: MAT3X2 */
-#line 1903 "MachineIndependent/glslang.y"
+ case 244: /* type_specifier_nonarray: MAT3X2 */
+#line 1913 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 7721 "MachineIndependent/glslang_tab.cpp"
+#line 7748 "MachineIndependent/glslang_tab.cpp"
break;
- case 244: /* type_specifier_nonarray: MAT3X3 */
-#line 1908 "MachineIndependent/glslang.y"
+ case 245: /* type_specifier_nonarray: MAT3X3 */
+#line 1918 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7731 "MachineIndependent/glslang_tab.cpp"
+#line 7758 "MachineIndependent/glslang_tab.cpp"
break;
- case 245: /* type_specifier_nonarray: MAT3X4 */
-#line 1913 "MachineIndependent/glslang.y"
+ case 246: /* type_specifier_nonarray: MAT3X4 */
+#line 1923 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 7741 "MachineIndependent/glslang_tab.cpp"
+#line 7768 "MachineIndependent/glslang_tab.cpp"
break;
- case 246: /* type_specifier_nonarray: MAT4X2 */
-#line 1918 "MachineIndependent/glslang.y"
+ case 247: /* type_specifier_nonarray: MAT4X2 */
+#line 1928 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 7751 "MachineIndependent/glslang_tab.cpp"
+#line 7778 "MachineIndependent/glslang_tab.cpp"
break;
- case 247: /* type_specifier_nonarray: MAT4X3 */
-#line 1923 "MachineIndependent/glslang.y"
+ case 248: /* type_specifier_nonarray: MAT4X3 */
+#line 1933 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 7761 "MachineIndependent/glslang_tab.cpp"
+#line 7788 "MachineIndependent/glslang_tab.cpp"
break;
- case 248: /* type_specifier_nonarray: MAT4X4 */
-#line 1928 "MachineIndependent/glslang.y"
+ case 249: /* type_specifier_nonarray: MAT4X4 */
+#line 1938 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7771 "MachineIndependent/glslang_tab.cpp"
+#line 7798 "MachineIndependent/glslang_tab.cpp"
break;
- case 249: /* type_specifier_nonarray: DOUBLE */
-#line 1934 "MachineIndependent/glslang.y"
+ case 250: /* type_specifier_nonarray: DOUBLE */
+#line 1944 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7779,121 +7806,121 @@ yyreduce:
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 7783 "MachineIndependent/glslang_tab.cpp"
+#line 7810 "MachineIndependent/glslang_tab.cpp"
break;
- case 250: /* type_specifier_nonarray: FLOAT16_T */
-#line 1941 "MachineIndependent/glslang.y"
+ case 251: /* type_specifier_nonarray: FLOAT16_T */
+#line 1951 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
}
-#line 7793 "MachineIndependent/glslang_tab.cpp"
+#line 7820 "MachineIndependent/glslang_tab.cpp"
break;
- case 251: /* type_specifier_nonarray: FLOAT32_T */
-#line 1946 "MachineIndependent/glslang.y"
+ case 252: /* type_specifier_nonarray: FLOAT32_T */
+#line 1956 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 7803 "MachineIndependent/glslang_tab.cpp"
+#line 7830 "MachineIndependent/glslang_tab.cpp"
break;
- case 252: /* type_specifier_nonarray: FLOAT64_T */
-#line 1951 "MachineIndependent/glslang.y"
+ case 253: /* type_specifier_nonarray: FLOAT64_T */
+#line 1961 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 7813 "MachineIndependent/glslang_tab.cpp"
+#line 7840 "MachineIndependent/glslang_tab.cpp"
break;
- case 253: /* type_specifier_nonarray: INT8_T */
-#line 1956 "MachineIndependent/glslang.y"
+ case 254: /* type_specifier_nonarray: INT8_T */
+#line 1966 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
}
-#line 7823 "MachineIndependent/glslang_tab.cpp"
+#line 7850 "MachineIndependent/glslang_tab.cpp"
break;
- case 254: /* type_specifier_nonarray: UINT8_T */
-#line 1961 "MachineIndependent/glslang.y"
+ case 255: /* type_specifier_nonarray: UINT8_T */
+#line 1971 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
}
-#line 7833 "MachineIndependent/glslang_tab.cpp"
+#line 7860 "MachineIndependent/glslang_tab.cpp"
break;
- case 255: /* type_specifier_nonarray: INT16_T */
-#line 1966 "MachineIndependent/glslang.y"
+ case 256: /* type_specifier_nonarray: INT16_T */
+#line 1976 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
}
-#line 7843 "MachineIndependent/glslang_tab.cpp"
+#line 7870 "MachineIndependent/glslang_tab.cpp"
break;
- case 256: /* type_specifier_nonarray: UINT16_T */
-#line 1971 "MachineIndependent/glslang.y"
+ case 257: /* type_specifier_nonarray: UINT16_T */
+#line 1981 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
}
-#line 7853 "MachineIndependent/glslang_tab.cpp"
+#line 7880 "MachineIndependent/glslang_tab.cpp"
break;
- case 257: /* type_specifier_nonarray: INT32_T */
-#line 1976 "MachineIndependent/glslang.y"
+ case 258: /* type_specifier_nonarray: INT32_T */
+#line 1986 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 7863 "MachineIndependent/glslang_tab.cpp"
+#line 7890 "MachineIndependent/glslang_tab.cpp"
break;
- case 258: /* type_specifier_nonarray: UINT32_T */
-#line 1981 "MachineIndependent/glslang.y"
+ case 259: /* type_specifier_nonarray: UINT32_T */
+#line 1991 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
}
-#line 7873 "MachineIndependent/glslang_tab.cpp"
+#line 7900 "MachineIndependent/glslang_tab.cpp"
break;
- case 259: /* type_specifier_nonarray: INT64_T */
-#line 1986 "MachineIndependent/glslang.y"
+ case 260: /* type_specifier_nonarray: INT64_T */
+#line 1996 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
}
-#line 7883 "MachineIndependent/glslang_tab.cpp"
+#line 7910 "MachineIndependent/glslang_tab.cpp"
break;
- case 260: /* type_specifier_nonarray: UINT64_T */
-#line 1991 "MachineIndependent/glslang.y"
+ case 261: /* type_specifier_nonarray: UINT64_T */
+#line 2001 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
}
-#line 7893 "MachineIndependent/glslang_tab.cpp"
+#line 7920 "MachineIndependent/glslang_tab.cpp"
break;
- case 261: /* type_specifier_nonarray: DVEC2 */
-#line 1996 "MachineIndependent/glslang.y"
+ case 262: /* type_specifier_nonarray: DVEC2 */
+#line 2006 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7902,11 +7929,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
-#line 7906 "MachineIndependent/glslang_tab.cpp"
+#line 7933 "MachineIndependent/glslang_tab.cpp"
break;
- case 262: /* type_specifier_nonarray: DVEC3 */
-#line 2004 "MachineIndependent/glslang.y"
+ case 263: /* type_specifier_nonarray: DVEC3 */
+#line 2014 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7915,11 +7942,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
-#line 7919 "MachineIndependent/glslang_tab.cpp"
+#line 7946 "MachineIndependent/glslang_tab.cpp"
break;
- case 263: /* type_specifier_nonarray: DVEC4 */
-#line 2012 "MachineIndependent/glslang.y"
+ case 264: /* type_specifier_nonarray: DVEC4 */
+#line 2022 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7928,374 +7955,374 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
-#line 7932 "MachineIndependent/glslang_tab.cpp"
+#line 7959 "MachineIndependent/glslang_tab.cpp"
break;
- case 264: /* type_specifier_nonarray: F16VEC2 */
-#line 2020 "MachineIndependent/glslang.y"
+ case 265: /* type_specifier_nonarray: F16VEC2 */
+#line 2030 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(2);
}
-#line 7943 "MachineIndependent/glslang_tab.cpp"
+#line 7970 "MachineIndependent/glslang_tab.cpp"
break;
- case 265: /* type_specifier_nonarray: F16VEC3 */
-#line 2026 "MachineIndependent/glslang.y"
+ case 266: /* type_specifier_nonarray: F16VEC3 */
+#line 2036 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(3);
}
-#line 7954 "MachineIndependent/glslang_tab.cpp"
+#line 7981 "MachineIndependent/glslang_tab.cpp"
break;
- case 266: /* type_specifier_nonarray: F16VEC4 */
-#line 2032 "MachineIndependent/glslang.y"
+ case 267: /* type_specifier_nonarray: F16VEC4 */
+#line 2042 "MachineIndependent/glslang.y"
{
parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setVector(4);
}
-#line 7965 "MachineIndependent/glslang_tab.cpp"
+#line 7992 "MachineIndependent/glslang_tab.cpp"
break;
- case 267: /* type_specifier_nonarray: F32VEC2 */
-#line 2038 "MachineIndependent/glslang.y"
+ case 268: /* type_specifier_nonarray: F32VEC2 */
+#line 2048 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(2);
}
-#line 7976 "MachineIndependent/glslang_tab.cpp"
+#line 8003 "MachineIndependent/glslang_tab.cpp"
break;
- case 268: /* type_specifier_nonarray: F32VEC3 */
-#line 2044 "MachineIndependent/glslang.y"
+ case 269: /* type_specifier_nonarray: F32VEC3 */
+#line 2054 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(3);
}
-#line 7987 "MachineIndependent/glslang_tab.cpp"
+#line 8014 "MachineIndependent/glslang_tab.cpp"
break;
- case 269: /* type_specifier_nonarray: F32VEC4 */
-#line 2050 "MachineIndependent/glslang.y"
+ case 270: /* type_specifier_nonarray: F32VEC4 */
+#line 2060 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setVector(4);
}
-#line 7998 "MachineIndependent/glslang_tab.cpp"
+#line 8025 "MachineIndependent/glslang_tab.cpp"
break;
- case 270: /* type_specifier_nonarray: F64VEC2 */
-#line 2056 "MachineIndependent/glslang.y"
+ case 271: /* type_specifier_nonarray: F64VEC2 */
+#line 2066 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
-#line 8009 "MachineIndependent/glslang_tab.cpp"
+#line 8036 "MachineIndependent/glslang_tab.cpp"
break;
- case 271: /* type_specifier_nonarray: F64VEC3 */
-#line 2062 "MachineIndependent/glslang.y"
+ case 272: /* type_specifier_nonarray: F64VEC3 */
+#line 2072 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
-#line 8020 "MachineIndependent/glslang_tab.cpp"
+#line 8047 "MachineIndependent/glslang_tab.cpp"
break;
- case 272: /* type_specifier_nonarray: F64VEC4 */
-#line 2068 "MachineIndependent/glslang.y"
+ case 273: /* type_specifier_nonarray: F64VEC4 */
+#line 2078 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
-#line 8031 "MachineIndependent/glslang_tab.cpp"
+#line 8058 "MachineIndependent/glslang_tab.cpp"
break;
- case 273: /* type_specifier_nonarray: I8VEC2 */
-#line 2074 "MachineIndependent/glslang.y"
+ case 274: /* type_specifier_nonarray: I8VEC2 */
+#line 2084 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
(yyval.interm.type).setVector(2);
}
-#line 8042 "MachineIndependent/glslang_tab.cpp"
+#line 8069 "MachineIndependent/glslang_tab.cpp"
break;
- case 274: /* type_specifier_nonarray: I8VEC3 */
-#line 2080 "MachineIndependent/glslang.y"
+ case 275: /* type_specifier_nonarray: I8VEC3 */
+#line 2090 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
(yyval.interm.type).setVector(3);
}
-#line 8053 "MachineIndependent/glslang_tab.cpp"
+#line 8080 "MachineIndependent/glslang_tab.cpp"
break;
- case 275: /* type_specifier_nonarray: I8VEC4 */
-#line 2086 "MachineIndependent/glslang.y"
+ case 276: /* type_specifier_nonarray: I8VEC4 */
+#line 2096 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt8;
(yyval.interm.type).setVector(4);
}
-#line 8064 "MachineIndependent/glslang_tab.cpp"
+#line 8091 "MachineIndependent/glslang_tab.cpp"
break;
- case 276: /* type_specifier_nonarray: I16VEC2 */
-#line 2092 "MachineIndependent/glslang.y"
+ case 277: /* type_specifier_nonarray: I16VEC2 */
+#line 2102 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
(yyval.interm.type).setVector(2);
}
-#line 8075 "MachineIndependent/glslang_tab.cpp"
+#line 8102 "MachineIndependent/glslang_tab.cpp"
break;
- case 277: /* type_specifier_nonarray: I16VEC3 */
-#line 2098 "MachineIndependent/glslang.y"
+ case 278: /* type_specifier_nonarray: I16VEC3 */
+#line 2108 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
(yyval.interm.type).setVector(3);
}
-#line 8086 "MachineIndependent/glslang_tab.cpp"
+#line 8113 "MachineIndependent/glslang_tab.cpp"
break;
- case 278: /* type_specifier_nonarray: I16VEC4 */
-#line 2104 "MachineIndependent/glslang.y"
+ case 279: /* type_specifier_nonarray: I16VEC4 */
+#line 2114 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt16;
(yyval.interm.type).setVector(4);
}
-#line 8097 "MachineIndependent/glslang_tab.cpp"
+#line 8124 "MachineIndependent/glslang_tab.cpp"
break;
- case 279: /* type_specifier_nonarray: I32VEC2 */
-#line 2110 "MachineIndependent/glslang.y"
+ case 280: /* type_specifier_nonarray: I32VEC2 */
+#line 2120 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(2);
}
-#line 8108 "MachineIndependent/glslang_tab.cpp"
+#line 8135 "MachineIndependent/glslang_tab.cpp"
break;
- case 280: /* type_specifier_nonarray: I32VEC3 */
-#line 2116 "MachineIndependent/glslang.y"
+ case 281: /* type_specifier_nonarray: I32VEC3 */
+#line 2126 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(3);
}
-#line 8119 "MachineIndependent/glslang_tab.cpp"
+#line 8146 "MachineIndependent/glslang_tab.cpp"
break;
- case 281: /* type_specifier_nonarray: I32VEC4 */
-#line 2122 "MachineIndependent/glslang.y"
+ case 282: /* type_specifier_nonarray: I32VEC4 */
+#line 2132 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(4);
}
-#line 8130 "MachineIndependent/glslang_tab.cpp"
+#line 8157 "MachineIndependent/glslang_tab.cpp"
break;
- case 282: /* type_specifier_nonarray: I64VEC2 */
-#line 2128 "MachineIndependent/glslang.y"
+ case 283: /* type_specifier_nonarray: I64VEC2 */
+#line 2138 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(2);
}
-#line 8141 "MachineIndependent/glslang_tab.cpp"
+#line 8168 "MachineIndependent/glslang_tab.cpp"
break;
- case 283: /* type_specifier_nonarray: I64VEC3 */
-#line 2134 "MachineIndependent/glslang.y"
+ case 284: /* type_specifier_nonarray: I64VEC3 */
+#line 2144 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(3);
}
-#line 8152 "MachineIndependent/glslang_tab.cpp"
+#line 8179 "MachineIndependent/glslang_tab.cpp"
break;
- case 284: /* type_specifier_nonarray: I64VEC4 */
-#line 2140 "MachineIndependent/glslang.y"
+ case 285: /* type_specifier_nonarray: I64VEC4 */
+#line 2150 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt64;
(yyval.interm.type).setVector(4);
}
-#line 8163 "MachineIndependent/glslang_tab.cpp"
+#line 8190 "MachineIndependent/glslang_tab.cpp"
break;
- case 285: /* type_specifier_nonarray: U8VEC2 */
-#line 2146 "MachineIndependent/glslang.y"
+ case 286: /* type_specifier_nonarray: U8VEC2 */
+#line 2156 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
(yyval.interm.type).setVector(2);
}
-#line 8174 "MachineIndependent/glslang_tab.cpp"
+#line 8201 "MachineIndependent/glslang_tab.cpp"
break;
- case 286: /* type_specifier_nonarray: U8VEC3 */
-#line 2152 "MachineIndependent/glslang.y"
+ case 287: /* type_specifier_nonarray: U8VEC3 */
+#line 2162 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
(yyval.interm.type).setVector(3);
}
-#line 8185 "MachineIndependent/glslang_tab.cpp"
+#line 8212 "MachineIndependent/glslang_tab.cpp"
break;
- case 287: /* type_specifier_nonarray: U8VEC4 */
-#line 2158 "MachineIndependent/glslang.y"
+ case 288: /* type_specifier_nonarray: U8VEC4 */
+#line 2168 "MachineIndependent/glslang.y"
{
parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint8;
(yyval.interm.type).setVector(4);
}
-#line 8196 "MachineIndependent/glslang_tab.cpp"
+#line 8223 "MachineIndependent/glslang_tab.cpp"
break;
- case 288: /* type_specifier_nonarray: U16VEC2 */
-#line 2164 "MachineIndependent/glslang.y"
+ case 289: /* type_specifier_nonarray: U16VEC2 */
+#line 2174 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
(yyval.interm.type).setVector(2);
}
-#line 8207 "MachineIndependent/glslang_tab.cpp"
+#line 8234 "MachineIndependent/glslang_tab.cpp"
break;
- case 289: /* type_specifier_nonarray: U16VEC3 */
-#line 2170 "MachineIndependent/glslang.y"
+ case 290: /* type_specifier_nonarray: U16VEC3 */
+#line 2180 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
(yyval.interm.type).setVector(3);
}
-#line 8218 "MachineIndependent/glslang_tab.cpp"
+#line 8245 "MachineIndependent/glslang_tab.cpp"
break;
- case 290: /* type_specifier_nonarray: U16VEC4 */
-#line 2176 "MachineIndependent/glslang.y"
+ case 291: /* type_specifier_nonarray: U16VEC4 */
+#line 2186 "MachineIndependent/glslang.y"
{
parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint16;
(yyval.interm.type).setVector(4);
}
-#line 8229 "MachineIndependent/glslang_tab.cpp"
+#line 8256 "MachineIndependent/glslang_tab.cpp"
break;
- case 291: /* type_specifier_nonarray: U32VEC2 */
-#line 2182 "MachineIndependent/glslang.y"
+ case 292: /* type_specifier_nonarray: U32VEC2 */
+#line 2192 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(2);
}
-#line 8240 "MachineIndependent/glslang_tab.cpp"
+#line 8267 "MachineIndependent/glslang_tab.cpp"
break;
- case 292: /* type_specifier_nonarray: U32VEC3 */
-#line 2188 "MachineIndependent/glslang.y"
+ case 293: /* type_specifier_nonarray: U32VEC3 */
+#line 2198 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(3);
}
-#line 8251 "MachineIndependent/glslang_tab.cpp"
+#line 8278 "MachineIndependent/glslang_tab.cpp"
break;
- case 293: /* type_specifier_nonarray: U32VEC4 */
-#line 2194 "MachineIndependent/glslang.y"
+ case 294: /* type_specifier_nonarray: U32VEC4 */
+#line 2204 "MachineIndependent/glslang.y"
{
parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
(yyval.interm.type).setVector(4);
}
-#line 8262 "MachineIndependent/glslang_tab.cpp"
+#line 8289 "MachineIndependent/glslang_tab.cpp"
break;
- case 294: /* type_specifier_nonarray: U64VEC2 */
-#line 2200 "MachineIndependent/glslang.y"
+ case 295: /* type_specifier_nonarray: U64VEC2 */
+#line 2210 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(2);
}
-#line 8273 "MachineIndependent/glslang_tab.cpp"
+#line 8300 "MachineIndependent/glslang_tab.cpp"
break;
- case 295: /* type_specifier_nonarray: U64VEC3 */
-#line 2206 "MachineIndependent/glslang.y"
+ case 296: /* type_specifier_nonarray: U64VEC3 */
+#line 2216 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(3);
}
-#line 8284 "MachineIndependent/glslang_tab.cpp"
+#line 8311 "MachineIndependent/glslang_tab.cpp"
break;
- case 296: /* type_specifier_nonarray: U64VEC4 */
-#line 2212 "MachineIndependent/glslang.y"
+ case 297: /* type_specifier_nonarray: U64VEC4 */
+#line 2222 "MachineIndependent/glslang.y"
{
parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint64;
(yyval.interm.type).setVector(4);
}
-#line 8295 "MachineIndependent/glslang_tab.cpp"
+#line 8322 "MachineIndependent/glslang_tab.cpp"
break;
- case 297: /* type_specifier_nonarray: DMAT2 */
-#line 2218 "MachineIndependent/glslang.y"
+ case 298: /* type_specifier_nonarray: DMAT2 */
+#line 2228 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8304,11 +8331,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8308 "MachineIndependent/glslang_tab.cpp"
+#line 8335 "MachineIndependent/glslang_tab.cpp"
break;
- case 298: /* type_specifier_nonarray: DMAT3 */
-#line 2226 "MachineIndependent/glslang.y"
+ case 299: /* type_specifier_nonarray: DMAT3 */
+#line 2236 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8317,11 +8344,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8321 "MachineIndependent/glslang_tab.cpp"
+#line 8348 "MachineIndependent/glslang_tab.cpp"
break;
- case 299: /* type_specifier_nonarray: DMAT4 */
-#line 2234 "MachineIndependent/glslang.y"
+ case 300: /* type_specifier_nonarray: DMAT4 */
+#line 2244 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8330,11 +8357,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8334 "MachineIndependent/glslang_tab.cpp"
+#line 8361 "MachineIndependent/glslang_tab.cpp"
break;
- case 300: /* type_specifier_nonarray: DMAT2X2 */
-#line 2242 "MachineIndependent/glslang.y"
+ case 301: /* type_specifier_nonarray: DMAT2X2 */
+#line 2252 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8343,11 +8370,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8347 "MachineIndependent/glslang_tab.cpp"
+#line 8374 "MachineIndependent/glslang_tab.cpp"
break;
- case 301: /* type_specifier_nonarray: DMAT2X3 */
-#line 2250 "MachineIndependent/glslang.y"
+ case 302: /* type_specifier_nonarray: DMAT2X3 */
+#line 2260 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8356,11 +8383,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8360 "MachineIndependent/glslang_tab.cpp"
+#line 8387 "MachineIndependent/glslang_tab.cpp"
break;
- case 302: /* type_specifier_nonarray: DMAT2X4 */
-#line 2258 "MachineIndependent/glslang.y"
+ case 303: /* type_specifier_nonarray: DMAT2X4 */
+#line 2268 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8369,11 +8396,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8373 "MachineIndependent/glslang_tab.cpp"
+#line 8400 "MachineIndependent/glslang_tab.cpp"
break;
- case 303: /* type_specifier_nonarray: DMAT3X2 */
-#line 2266 "MachineIndependent/glslang.y"
+ case 304: /* type_specifier_nonarray: DMAT3X2 */
+#line 2276 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8382,11 +8409,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8386 "MachineIndependent/glslang_tab.cpp"
+#line 8413 "MachineIndependent/glslang_tab.cpp"
break;
- case 304: /* type_specifier_nonarray: DMAT3X3 */
-#line 2274 "MachineIndependent/glslang.y"
+ case 305: /* type_specifier_nonarray: DMAT3X3 */
+#line 2284 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8395,11 +8422,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8399 "MachineIndependent/glslang_tab.cpp"
+#line 8426 "MachineIndependent/glslang_tab.cpp"
break;
- case 305: /* type_specifier_nonarray: DMAT3X4 */
-#line 2282 "MachineIndependent/glslang.y"
+ case 306: /* type_specifier_nonarray: DMAT3X4 */
+#line 2292 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8408,11 +8435,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8412 "MachineIndependent/glslang_tab.cpp"
+#line 8439 "MachineIndependent/glslang_tab.cpp"
break;
- case 306: /* type_specifier_nonarray: DMAT4X2 */
-#line 2290 "MachineIndependent/glslang.y"
+ case 307: /* type_specifier_nonarray: DMAT4X2 */
+#line 2300 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8421,11 +8448,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8425 "MachineIndependent/glslang_tab.cpp"
+#line 8452 "MachineIndependent/glslang_tab.cpp"
break;
- case 307: /* type_specifier_nonarray: DMAT4X3 */
-#line 2298 "MachineIndependent/glslang.y"
+ case 308: /* type_specifier_nonarray: DMAT4X3 */
+#line 2308 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8434,11 +8461,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8438 "MachineIndependent/glslang_tab.cpp"
+#line 8465 "MachineIndependent/glslang_tab.cpp"
break;
- case 308: /* type_specifier_nonarray: DMAT4X4 */
-#line 2306 "MachineIndependent/glslang.y"
+ case 309: /* type_specifier_nonarray: DMAT4X4 */
+#line 2316 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix");
if (! parseContext.symbolTable.atBuiltInLevel())
@@ -8447,2261 +8474,2261 @@ yyreduce:
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8451 "MachineIndependent/glslang_tab.cpp"
+#line 8478 "MachineIndependent/glslang_tab.cpp"
break;
- case 309: /* type_specifier_nonarray: F16MAT2 */
-#line 2314 "MachineIndependent/glslang.y"
+ case 310: /* type_specifier_nonarray: F16MAT2 */
+#line 2324 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8462 "MachineIndependent/glslang_tab.cpp"
+#line 8489 "MachineIndependent/glslang_tab.cpp"
break;
- case 310: /* type_specifier_nonarray: F16MAT3 */
-#line 2320 "MachineIndependent/glslang.y"
+ case 311: /* type_specifier_nonarray: F16MAT3 */
+#line 2330 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8473 "MachineIndependent/glslang_tab.cpp"
+#line 8500 "MachineIndependent/glslang_tab.cpp"
break;
- case 311: /* type_specifier_nonarray: F16MAT4 */
-#line 2326 "MachineIndependent/glslang.y"
+ case 312: /* type_specifier_nonarray: F16MAT4 */
+#line 2336 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8484 "MachineIndependent/glslang_tab.cpp"
+#line 8511 "MachineIndependent/glslang_tab.cpp"
break;
- case 312: /* type_specifier_nonarray: F16MAT2X2 */
-#line 2332 "MachineIndependent/glslang.y"
+ case 313: /* type_specifier_nonarray: F16MAT2X2 */
+#line 2342 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8495 "MachineIndependent/glslang_tab.cpp"
+#line 8522 "MachineIndependent/glslang_tab.cpp"
break;
- case 313: /* type_specifier_nonarray: F16MAT2X3 */
-#line 2338 "MachineIndependent/glslang.y"
+ case 314: /* type_specifier_nonarray: F16MAT2X3 */
+#line 2348 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8506 "MachineIndependent/glslang_tab.cpp"
+#line 8533 "MachineIndependent/glslang_tab.cpp"
break;
- case 314: /* type_specifier_nonarray: F16MAT2X4 */
-#line 2344 "MachineIndependent/glslang.y"
+ case 315: /* type_specifier_nonarray: F16MAT2X4 */
+#line 2354 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8517 "MachineIndependent/glslang_tab.cpp"
+#line 8544 "MachineIndependent/glslang_tab.cpp"
break;
- case 315: /* type_specifier_nonarray: F16MAT3X2 */
-#line 2350 "MachineIndependent/glslang.y"
+ case 316: /* type_specifier_nonarray: F16MAT3X2 */
+#line 2360 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8528 "MachineIndependent/glslang_tab.cpp"
+#line 8555 "MachineIndependent/glslang_tab.cpp"
break;
- case 316: /* type_specifier_nonarray: F16MAT3X3 */
-#line 2356 "MachineIndependent/glslang.y"
+ case 317: /* type_specifier_nonarray: F16MAT3X3 */
+#line 2366 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8539 "MachineIndependent/glslang_tab.cpp"
+#line 8566 "MachineIndependent/glslang_tab.cpp"
break;
- case 317: /* type_specifier_nonarray: F16MAT3X4 */
-#line 2362 "MachineIndependent/glslang.y"
+ case 318: /* type_specifier_nonarray: F16MAT3X4 */
+#line 2372 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8550 "MachineIndependent/glslang_tab.cpp"
+#line 8577 "MachineIndependent/glslang_tab.cpp"
break;
- case 318: /* type_specifier_nonarray: F16MAT4X2 */
-#line 2368 "MachineIndependent/glslang.y"
+ case 319: /* type_specifier_nonarray: F16MAT4X2 */
+#line 2378 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8561 "MachineIndependent/glslang_tab.cpp"
+#line 8588 "MachineIndependent/glslang_tab.cpp"
break;
- case 319: /* type_specifier_nonarray: F16MAT4X3 */
-#line 2374 "MachineIndependent/glslang.y"
+ case 320: /* type_specifier_nonarray: F16MAT4X3 */
+#line 2384 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8572 "MachineIndependent/glslang_tab.cpp"
+#line 8599 "MachineIndependent/glslang_tab.cpp"
break;
- case 320: /* type_specifier_nonarray: F16MAT4X4 */
-#line 2380 "MachineIndependent/glslang.y"
+ case 321: /* type_specifier_nonarray: F16MAT4X4 */
+#line 2390 "MachineIndependent/glslang.y"
{
parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat16;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8583 "MachineIndependent/glslang_tab.cpp"
+#line 8610 "MachineIndependent/glslang_tab.cpp"
break;
- case 321: /* type_specifier_nonarray: F32MAT2 */
-#line 2386 "MachineIndependent/glslang.y"
+ case 322: /* type_specifier_nonarray: F32MAT2 */
+#line 2396 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8594 "MachineIndependent/glslang_tab.cpp"
+#line 8621 "MachineIndependent/glslang_tab.cpp"
break;
- case 322: /* type_specifier_nonarray: F32MAT3 */
-#line 2392 "MachineIndependent/glslang.y"
+ case 323: /* type_specifier_nonarray: F32MAT3 */
+#line 2402 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8605 "MachineIndependent/glslang_tab.cpp"
+#line 8632 "MachineIndependent/glslang_tab.cpp"
break;
- case 323: /* type_specifier_nonarray: F32MAT4 */
-#line 2398 "MachineIndependent/glslang.y"
+ case 324: /* type_specifier_nonarray: F32MAT4 */
+#line 2408 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8616 "MachineIndependent/glslang_tab.cpp"
+#line 8643 "MachineIndependent/glslang_tab.cpp"
break;
- case 324: /* type_specifier_nonarray: F32MAT2X2 */
-#line 2404 "MachineIndependent/glslang.y"
+ case 325: /* type_specifier_nonarray: F32MAT2X2 */
+#line 2414 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8627 "MachineIndependent/glslang_tab.cpp"
+#line 8654 "MachineIndependent/glslang_tab.cpp"
break;
- case 325: /* type_specifier_nonarray: F32MAT2X3 */
-#line 2410 "MachineIndependent/glslang.y"
+ case 326: /* type_specifier_nonarray: F32MAT2X3 */
+#line 2420 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8638 "MachineIndependent/glslang_tab.cpp"
+#line 8665 "MachineIndependent/glslang_tab.cpp"
break;
- case 326: /* type_specifier_nonarray: F32MAT2X4 */
-#line 2416 "MachineIndependent/glslang.y"
+ case 327: /* type_specifier_nonarray: F32MAT2X4 */
+#line 2426 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8649 "MachineIndependent/glslang_tab.cpp"
+#line 8676 "MachineIndependent/glslang_tab.cpp"
break;
- case 327: /* type_specifier_nonarray: F32MAT3X2 */
-#line 2422 "MachineIndependent/glslang.y"
+ case 328: /* type_specifier_nonarray: F32MAT3X2 */
+#line 2432 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8660 "MachineIndependent/glslang_tab.cpp"
+#line 8687 "MachineIndependent/glslang_tab.cpp"
break;
- case 328: /* type_specifier_nonarray: F32MAT3X3 */
-#line 2428 "MachineIndependent/glslang.y"
+ case 329: /* type_specifier_nonarray: F32MAT3X3 */
+#line 2438 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8671 "MachineIndependent/glslang_tab.cpp"
+#line 8698 "MachineIndependent/glslang_tab.cpp"
break;
- case 329: /* type_specifier_nonarray: F32MAT3X4 */
-#line 2434 "MachineIndependent/glslang.y"
+ case 330: /* type_specifier_nonarray: F32MAT3X4 */
+#line 2444 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8682 "MachineIndependent/glslang_tab.cpp"
+#line 8709 "MachineIndependent/glslang_tab.cpp"
break;
- case 330: /* type_specifier_nonarray: F32MAT4X2 */
-#line 2440 "MachineIndependent/glslang.y"
+ case 331: /* type_specifier_nonarray: F32MAT4X2 */
+#line 2450 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8693 "MachineIndependent/glslang_tab.cpp"
+#line 8720 "MachineIndependent/glslang_tab.cpp"
break;
- case 331: /* type_specifier_nonarray: F32MAT4X3 */
-#line 2446 "MachineIndependent/glslang.y"
+ case 332: /* type_specifier_nonarray: F32MAT4X3 */
+#line 2456 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8704 "MachineIndependent/glslang_tab.cpp"
+#line 8731 "MachineIndependent/glslang_tab.cpp"
break;
- case 332: /* type_specifier_nonarray: F32MAT4X4 */
-#line 2452 "MachineIndependent/glslang.y"
+ case 333: /* type_specifier_nonarray: F32MAT4X4 */
+#line 2462 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8715 "MachineIndependent/glslang_tab.cpp"
+#line 8742 "MachineIndependent/glslang_tab.cpp"
break;
- case 333: /* type_specifier_nonarray: F64MAT2 */
-#line 2458 "MachineIndependent/glslang.y"
+ case 334: /* type_specifier_nonarray: F64MAT2 */
+#line 2468 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8726 "MachineIndependent/glslang_tab.cpp"
+#line 8753 "MachineIndependent/glslang_tab.cpp"
break;
- case 334: /* type_specifier_nonarray: F64MAT3 */
-#line 2464 "MachineIndependent/glslang.y"
+ case 335: /* type_specifier_nonarray: F64MAT3 */
+#line 2474 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8737 "MachineIndependent/glslang_tab.cpp"
+#line 8764 "MachineIndependent/glslang_tab.cpp"
break;
- case 335: /* type_specifier_nonarray: F64MAT4 */
-#line 2470 "MachineIndependent/glslang.y"
+ case 336: /* type_specifier_nonarray: F64MAT4 */
+#line 2480 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8748 "MachineIndependent/glslang_tab.cpp"
+#line 8775 "MachineIndependent/glslang_tab.cpp"
break;
- case 336: /* type_specifier_nonarray: F64MAT2X2 */
-#line 2476 "MachineIndependent/glslang.y"
+ case 337: /* type_specifier_nonarray: F64MAT2X2 */
+#line 2486 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 8759 "MachineIndependent/glslang_tab.cpp"
+#line 8786 "MachineIndependent/glslang_tab.cpp"
break;
- case 337: /* type_specifier_nonarray: F64MAT2X3 */
-#line 2482 "MachineIndependent/glslang.y"
+ case 338: /* type_specifier_nonarray: F64MAT2X3 */
+#line 2492 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 8770 "MachineIndependent/glslang_tab.cpp"
+#line 8797 "MachineIndependent/glslang_tab.cpp"
break;
- case 338: /* type_specifier_nonarray: F64MAT2X4 */
-#line 2488 "MachineIndependent/glslang.y"
+ case 339: /* type_specifier_nonarray: F64MAT2X4 */
+#line 2498 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 8781 "MachineIndependent/glslang_tab.cpp"
+#line 8808 "MachineIndependent/glslang_tab.cpp"
break;
- case 339: /* type_specifier_nonarray: F64MAT3X2 */
-#line 2494 "MachineIndependent/glslang.y"
+ case 340: /* type_specifier_nonarray: F64MAT3X2 */
+#line 2504 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 8792 "MachineIndependent/glslang_tab.cpp"
+#line 8819 "MachineIndependent/glslang_tab.cpp"
break;
- case 340: /* type_specifier_nonarray: F64MAT3X3 */
-#line 2500 "MachineIndependent/glslang.y"
+ case 341: /* type_specifier_nonarray: F64MAT3X3 */
+#line 2510 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 8803 "MachineIndependent/glslang_tab.cpp"
+#line 8830 "MachineIndependent/glslang_tab.cpp"
break;
- case 341: /* type_specifier_nonarray: F64MAT3X4 */
-#line 2506 "MachineIndependent/glslang.y"
+ case 342: /* type_specifier_nonarray: F64MAT3X4 */
+#line 2516 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 8814 "MachineIndependent/glslang_tab.cpp"
+#line 8841 "MachineIndependent/glslang_tab.cpp"
break;
- case 342: /* type_specifier_nonarray: F64MAT4X2 */
-#line 2512 "MachineIndependent/glslang.y"
+ case 343: /* type_specifier_nonarray: F64MAT4X2 */
+#line 2522 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 8825 "MachineIndependent/glslang_tab.cpp"
+#line 8852 "MachineIndependent/glslang_tab.cpp"
break;
- case 343: /* type_specifier_nonarray: F64MAT4X3 */
-#line 2518 "MachineIndependent/glslang.y"
+ case 344: /* type_specifier_nonarray: F64MAT4X3 */
+#line 2528 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 8836 "MachineIndependent/glslang_tab.cpp"
+#line 8863 "MachineIndependent/glslang_tab.cpp"
break;
- case 344: /* type_specifier_nonarray: F64MAT4X4 */
-#line 2524 "MachineIndependent/glslang.y"
+ case 345: /* type_specifier_nonarray: F64MAT4X4 */
+#line 2534 "MachineIndependent/glslang.y"
{
parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 8847 "MachineIndependent/glslang_tab.cpp"
+#line 8874 "MachineIndependent/glslang_tab.cpp"
break;
- case 345: /* type_specifier_nonarray: ACCSTRUCTNV */
-#line 2530 "MachineIndependent/glslang.y"
+ case 346: /* type_specifier_nonarray: ACCSTRUCTNV */
+#line 2540 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAccStruct;
}
-#line 8856 "MachineIndependent/glslang_tab.cpp"
+#line 8883 "MachineIndependent/glslang_tab.cpp"
break;
- case 346: /* type_specifier_nonarray: ACCSTRUCTEXT */
-#line 2534 "MachineIndependent/glslang.y"
+ case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */
+#line 2544 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAccStruct;
}
-#line 8865 "MachineIndependent/glslang_tab.cpp"
+#line 8892 "MachineIndependent/glslang_tab.cpp"
break;
- case 347: /* type_specifier_nonarray: RAYQUERYEXT */
-#line 2538 "MachineIndependent/glslang.y"
+ case 348: /* type_specifier_nonarray: RAYQUERYEXT */
+#line 2548 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtRayQuery;
}
-#line 8874 "MachineIndependent/glslang_tab.cpp"
+#line 8901 "MachineIndependent/glslang_tab.cpp"
break;
- case 348: /* type_specifier_nonarray: ATOMIC_UINT */
-#line 2542 "MachineIndependent/glslang.y"
+ case 349: /* type_specifier_nonarray: ATOMIC_UINT */
+#line 2552 "MachineIndependent/glslang.y"
{
parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAtomicUint;
}
-#line 8884 "MachineIndependent/glslang_tab.cpp"
+#line 8911 "MachineIndependent/glslang_tab.cpp"
break;
- case 349: /* type_specifier_nonarray: SAMPLER1D */
-#line 2547 "MachineIndependent/glslang.y"
+ case 350: /* type_specifier_nonarray: SAMPLER1D */
+#line 2557 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
-#line 8894 "MachineIndependent/glslang_tab.cpp"
+#line 8921 "MachineIndependent/glslang_tab.cpp"
break;
- case 350: /* type_specifier_nonarray: SAMPLER2D */
-#line 2553 "MachineIndependent/glslang.y"
+ case 351: /* type_specifier_nonarray: SAMPLER2D */
+#line 2563 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
-#line 8904 "MachineIndependent/glslang_tab.cpp"
+#line 8931 "MachineIndependent/glslang_tab.cpp"
break;
- case 351: /* type_specifier_nonarray: SAMPLER3D */
-#line 2558 "MachineIndependent/glslang.y"
+ case 352: /* type_specifier_nonarray: SAMPLER3D */
+#line 2568 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
-#line 8914 "MachineIndependent/glslang_tab.cpp"
+#line 8941 "MachineIndependent/glslang_tab.cpp"
break;
- case 352: /* type_specifier_nonarray: SAMPLERCUBE */
-#line 2563 "MachineIndependent/glslang.y"
+ case 353: /* type_specifier_nonarray: SAMPLERCUBE */
+#line 2573 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
-#line 8924 "MachineIndependent/glslang_tab.cpp"
+#line 8951 "MachineIndependent/glslang_tab.cpp"
break;
- case 353: /* type_specifier_nonarray: SAMPLER2DSHADOW */
-#line 2568 "MachineIndependent/glslang.y"
+ case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */
+#line 2578 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true);
}
-#line 8934 "MachineIndependent/glslang_tab.cpp"
+#line 8961 "MachineIndependent/glslang_tab.cpp"
break;
- case 354: /* type_specifier_nonarray: SAMPLERCUBESHADOW */
-#line 2573 "MachineIndependent/glslang.y"
+ case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */
+#line 2583 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true);
}
-#line 8944 "MachineIndependent/glslang_tab.cpp"
+#line 8971 "MachineIndependent/glslang_tab.cpp"
break;
- case 355: /* type_specifier_nonarray: SAMPLER2DARRAY */
-#line 2578 "MachineIndependent/glslang.y"
+ case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */
+#line 2588 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true);
}
-#line 8954 "MachineIndependent/glslang_tab.cpp"
+#line 8981 "MachineIndependent/glslang_tab.cpp"
break;
- case 356: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */
-#line 2583 "MachineIndependent/glslang.y"
+ case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */
+#line 2593 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true);
}
-#line 8964 "MachineIndependent/glslang_tab.cpp"
+#line 8991 "MachineIndependent/glslang_tab.cpp"
break;
- case 357: /* type_specifier_nonarray: SAMPLER1DSHADOW */
-#line 2589 "MachineIndependent/glslang.y"
+ case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */
+#line 2599 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true);
}
-#line 8974 "MachineIndependent/glslang_tab.cpp"
+#line 9001 "MachineIndependent/glslang_tab.cpp"
break;
- case 358: /* type_specifier_nonarray: SAMPLER1DARRAY */
-#line 2594 "MachineIndependent/glslang.y"
+ case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */
+#line 2604 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true);
}
-#line 8984 "MachineIndependent/glslang_tab.cpp"
+#line 9011 "MachineIndependent/glslang_tab.cpp"
break;
- case 359: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */
-#line 2599 "MachineIndependent/glslang.y"
+ case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */
+#line 2609 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true);
}
-#line 8994 "MachineIndependent/glslang_tab.cpp"
+#line 9021 "MachineIndependent/glslang_tab.cpp"
break;
- case 360: /* type_specifier_nonarray: SAMPLERCUBEARRAY */
-#line 2604 "MachineIndependent/glslang.y"
+ case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */
+#line 2614 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true);
}
-#line 9004 "MachineIndependent/glslang_tab.cpp"
+#line 9031 "MachineIndependent/glslang_tab.cpp"
break;
- case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */
-#line 2609 "MachineIndependent/glslang.y"
+ case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */
+#line 2619 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true);
}
-#line 9014 "MachineIndependent/glslang_tab.cpp"
+#line 9041 "MachineIndependent/glslang_tab.cpp"
break;
- case 362: /* type_specifier_nonarray: F16SAMPLER1D */
-#line 2614 "MachineIndependent/glslang.y"
+ case 363: /* type_specifier_nonarray: F16SAMPLER1D */
+#line 2624 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
}
-#line 9025 "MachineIndependent/glslang_tab.cpp"
+#line 9052 "MachineIndependent/glslang_tab.cpp"
break;
- case 363: /* type_specifier_nonarray: F16SAMPLER2D */
-#line 2620 "MachineIndependent/glslang.y"
+ case 364: /* type_specifier_nonarray: F16SAMPLER2D */
+#line 2630 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
}
-#line 9036 "MachineIndependent/glslang_tab.cpp"
+#line 9063 "MachineIndependent/glslang_tab.cpp"
break;
- case 364: /* type_specifier_nonarray: F16SAMPLER3D */
-#line 2626 "MachineIndependent/glslang.y"
+ case 365: /* type_specifier_nonarray: F16SAMPLER3D */
+#line 2636 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
}
-#line 9047 "MachineIndependent/glslang_tab.cpp"
+#line 9074 "MachineIndependent/glslang_tab.cpp"
break;
- case 365: /* type_specifier_nonarray: F16SAMPLERCUBE */
-#line 2632 "MachineIndependent/glslang.y"
+ case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */
+#line 2642 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
}
-#line 9058 "MachineIndependent/glslang_tab.cpp"
+#line 9085 "MachineIndependent/glslang_tab.cpp"
break;
- case 366: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */
-#line 2638 "MachineIndependent/glslang.y"
+ case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */
+#line 2648 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
}
-#line 9069 "MachineIndependent/glslang_tab.cpp"
+#line 9096 "MachineIndependent/glslang_tab.cpp"
break;
- case 367: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */
-#line 2644 "MachineIndependent/glslang.y"
+ case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */
+#line 2654 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
}
-#line 9080 "MachineIndependent/glslang_tab.cpp"
+#line 9107 "MachineIndependent/glslang_tab.cpp"
break;
- case 368: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */
-#line 2650 "MachineIndependent/glslang.y"
+ case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */
+#line 2660 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
}
-#line 9091 "MachineIndependent/glslang_tab.cpp"
+#line 9118 "MachineIndependent/glslang_tab.cpp"
break;
- case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAY */
-#line 2656 "MachineIndependent/glslang.y"
+ case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */
+#line 2666 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
}
-#line 9102 "MachineIndependent/glslang_tab.cpp"
+#line 9129 "MachineIndependent/glslang_tab.cpp"
break;
- case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAY */
-#line 2662 "MachineIndependent/glslang.y"
+ case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */
+#line 2672 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
}
-#line 9113 "MachineIndependent/glslang_tab.cpp"
+#line 9140 "MachineIndependent/glslang_tab.cpp"
break;
- case 371: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */
-#line 2668 "MachineIndependent/glslang.y"
+ case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */
+#line 2678 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
}
-#line 9124 "MachineIndependent/glslang_tab.cpp"
+#line 9151 "MachineIndependent/glslang_tab.cpp"
break;
- case 372: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */
-#line 2674 "MachineIndependent/glslang.y"
+ case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */
+#line 2684 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
}
-#line 9135 "MachineIndependent/glslang_tab.cpp"
+#line 9162 "MachineIndependent/glslang_tab.cpp"
break;
- case 373: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */
-#line 2680 "MachineIndependent/glslang.y"
+ case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */
+#line 2690 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
}
-#line 9146 "MachineIndependent/glslang_tab.cpp"
+#line 9173 "MachineIndependent/glslang_tab.cpp"
break;
- case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */
-#line 2686 "MachineIndependent/glslang.y"
+ case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */
+#line 2696 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
}
-#line 9157 "MachineIndependent/glslang_tab.cpp"
+#line 9184 "MachineIndependent/glslang_tab.cpp"
break;
- case 375: /* type_specifier_nonarray: ISAMPLER1D */
-#line 2692 "MachineIndependent/glslang.y"
+ case 376: /* type_specifier_nonarray: ISAMPLER1D */
+#line 2702 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
-#line 9167 "MachineIndependent/glslang_tab.cpp"
+#line 9194 "MachineIndependent/glslang_tab.cpp"
break;
- case 376: /* type_specifier_nonarray: ISAMPLER2D */
-#line 2698 "MachineIndependent/glslang.y"
+ case 377: /* type_specifier_nonarray: ISAMPLER2D */
+#line 2708 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
-#line 9177 "MachineIndependent/glslang_tab.cpp"
+#line 9204 "MachineIndependent/glslang_tab.cpp"
break;
- case 377: /* type_specifier_nonarray: ISAMPLER3D */
-#line 2703 "MachineIndependent/glslang.y"
+ case 378: /* type_specifier_nonarray: ISAMPLER3D */
+#line 2713 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
-#line 9187 "MachineIndependent/glslang_tab.cpp"
+#line 9214 "MachineIndependent/glslang_tab.cpp"
break;
- case 378: /* type_specifier_nonarray: ISAMPLERCUBE */
-#line 2708 "MachineIndependent/glslang.y"
+ case 379: /* type_specifier_nonarray: ISAMPLERCUBE */
+#line 2718 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
-#line 9197 "MachineIndependent/glslang_tab.cpp"
+#line 9224 "MachineIndependent/glslang_tab.cpp"
break;
- case 379: /* type_specifier_nonarray: ISAMPLER2DARRAY */
-#line 2713 "MachineIndependent/glslang.y"
+ case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */
+#line 2723 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true);
}
-#line 9207 "MachineIndependent/glslang_tab.cpp"
+#line 9234 "MachineIndependent/glslang_tab.cpp"
break;
- case 380: /* type_specifier_nonarray: USAMPLER2D */
-#line 2718 "MachineIndependent/glslang.y"
+ case 381: /* type_specifier_nonarray: USAMPLER2D */
+#line 2728 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
-#line 9217 "MachineIndependent/glslang_tab.cpp"
+#line 9244 "MachineIndependent/glslang_tab.cpp"
break;
- case 381: /* type_specifier_nonarray: USAMPLER3D */
-#line 2723 "MachineIndependent/glslang.y"
+ case 382: /* type_specifier_nonarray: USAMPLER3D */
+#line 2733 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
-#line 9227 "MachineIndependent/glslang_tab.cpp"
+#line 9254 "MachineIndependent/glslang_tab.cpp"
break;
- case 382: /* type_specifier_nonarray: USAMPLERCUBE */
-#line 2728 "MachineIndependent/glslang.y"
+ case 383: /* type_specifier_nonarray: USAMPLERCUBE */
+#line 2738 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
-#line 9237 "MachineIndependent/glslang_tab.cpp"
+#line 9264 "MachineIndependent/glslang_tab.cpp"
break;
- case 383: /* type_specifier_nonarray: ISAMPLER1DARRAY */
-#line 2734 "MachineIndependent/glslang.y"
+ case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */
+#line 2744 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D, true);
}
-#line 9247 "MachineIndependent/glslang_tab.cpp"
+#line 9274 "MachineIndependent/glslang_tab.cpp"
break;
- case 384: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */
-#line 2739 "MachineIndependent/glslang.y"
+ case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */
+#line 2749 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube, true);
}
-#line 9257 "MachineIndependent/glslang_tab.cpp"
+#line 9284 "MachineIndependent/glslang_tab.cpp"
break;
- case 385: /* type_specifier_nonarray: USAMPLER1D */
-#line 2744 "MachineIndependent/glslang.y"
+ case 386: /* type_specifier_nonarray: USAMPLER1D */
+#line 2754 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D);
}
-#line 9267 "MachineIndependent/glslang_tab.cpp"
+#line 9294 "MachineIndependent/glslang_tab.cpp"
break;
- case 386: /* type_specifier_nonarray: USAMPLER1DARRAY */
-#line 2749 "MachineIndependent/glslang.y"
+ case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */
+#line 2759 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D, true);
}
-#line 9277 "MachineIndependent/glslang_tab.cpp"
+#line 9304 "MachineIndependent/glslang_tab.cpp"
break;
- case 387: /* type_specifier_nonarray: USAMPLERCUBEARRAY */
-#line 2754 "MachineIndependent/glslang.y"
+ case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */
+#line 2764 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube, true);
}
-#line 9287 "MachineIndependent/glslang_tab.cpp"
+#line 9314 "MachineIndependent/glslang_tab.cpp"
break;
- case 388: /* type_specifier_nonarray: TEXTURECUBEARRAY */
-#line 2759 "MachineIndependent/glslang.y"
+ case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */
+#line 2769 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true);
}
-#line 9297 "MachineIndependent/glslang_tab.cpp"
+#line 9324 "MachineIndependent/glslang_tab.cpp"
break;
- case 389: /* type_specifier_nonarray: ITEXTURECUBEARRAY */
-#line 2764 "MachineIndependent/glslang.y"
+ case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */
+#line 2774 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true);
}
-#line 9307 "MachineIndependent/glslang_tab.cpp"
+#line 9334 "MachineIndependent/glslang_tab.cpp"
break;
- case 390: /* type_specifier_nonarray: UTEXTURECUBEARRAY */
-#line 2769 "MachineIndependent/glslang.y"
+ case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */
+#line 2779 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true);
}
-#line 9317 "MachineIndependent/glslang_tab.cpp"
+#line 9344 "MachineIndependent/glslang_tab.cpp"
break;
- case 391: /* type_specifier_nonarray: USAMPLER2DARRAY */
-#line 2775 "MachineIndependent/glslang.y"
+ case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */
+#line 2785 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true);
}
-#line 9327 "MachineIndependent/glslang_tab.cpp"
+#line 9354 "MachineIndependent/glslang_tab.cpp"
break;
- case 392: /* type_specifier_nonarray: TEXTURE2D */
-#line 2780 "MachineIndependent/glslang.y"
+ case 393: /* type_specifier_nonarray: TEXTURE2D */
+#line 2790 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
}
-#line 9337 "MachineIndependent/glslang_tab.cpp"
+#line 9364 "MachineIndependent/glslang_tab.cpp"
break;
- case 393: /* type_specifier_nonarray: TEXTURE3D */
-#line 2785 "MachineIndependent/glslang.y"
+ case 394: /* type_specifier_nonarray: TEXTURE3D */
+#line 2795 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
}
-#line 9347 "MachineIndependent/glslang_tab.cpp"
+#line 9374 "MachineIndependent/glslang_tab.cpp"
break;
- case 394: /* type_specifier_nonarray: TEXTURE2DARRAY */
-#line 2790 "MachineIndependent/glslang.y"
+ case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */
+#line 2800 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true);
}
-#line 9357 "MachineIndependent/glslang_tab.cpp"
+#line 9384 "MachineIndependent/glslang_tab.cpp"
break;
- case 395: /* type_specifier_nonarray: TEXTURECUBE */
-#line 2795 "MachineIndependent/glslang.y"
+ case 396: /* type_specifier_nonarray: TEXTURECUBE */
+#line 2805 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
}
-#line 9367 "MachineIndependent/glslang_tab.cpp"
+#line 9394 "MachineIndependent/glslang_tab.cpp"
break;
- case 396: /* type_specifier_nonarray: ITEXTURE2D */
-#line 2800 "MachineIndependent/glslang.y"
+ case 397: /* type_specifier_nonarray: ITEXTURE2D */
+#line 2810 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
}
-#line 9377 "MachineIndependent/glslang_tab.cpp"
+#line 9404 "MachineIndependent/glslang_tab.cpp"
break;
- case 397: /* type_specifier_nonarray: ITEXTURE3D */
-#line 2805 "MachineIndependent/glslang.y"
+ case 398: /* type_specifier_nonarray: ITEXTURE3D */
+#line 2815 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
}
-#line 9387 "MachineIndependent/glslang_tab.cpp"
+#line 9414 "MachineIndependent/glslang_tab.cpp"
break;
- case 398: /* type_specifier_nonarray: ITEXTURECUBE */
-#line 2810 "MachineIndependent/glslang.y"
+ case 399: /* type_specifier_nonarray: ITEXTURECUBE */
+#line 2820 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
}
-#line 9397 "MachineIndependent/glslang_tab.cpp"
+#line 9424 "MachineIndependent/glslang_tab.cpp"
break;
- case 399: /* type_specifier_nonarray: ITEXTURE2DARRAY */
-#line 2815 "MachineIndependent/glslang.y"
+ case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */
+#line 2825 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true);
}
-#line 9407 "MachineIndependent/glslang_tab.cpp"
+#line 9434 "MachineIndependent/glslang_tab.cpp"
break;
- case 400: /* type_specifier_nonarray: UTEXTURE2D */
-#line 2820 "MachineIndependent/glslang.y"
+ case 401: /* type_specifier_nonarray: UTEXTURE2D */
+#line 2830 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
}
-#line 9417 "MachineIndependent/glslang_tab.cpp"
+#line 9444 "MachineIndependent/glslang_tab.cpp"
break;
- case 401: /* type_specifier_nonarray: UTEXTURE3D */
-#line 2825 "MachineIndependent/glslang.y"
+ case 402: /* type_specifier_nonarray: UTEXTURE3D */
+#line 2835 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
}
-#line 9427 "MachineIndependent/glslang_tab.cpp"
+#line 9454 "MachineIndependent/glslang_tab.cpp"
break;
- case 402: /* type_specifier_nonarray: UTEXTURECUBE */
-#line 2830 "MachineIndependent/glslang.y"
+ case 403: /* type_specifier_nonarray: UTEXTURECUBE */
+#line 2840 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
}
-#line 9437 "MachineIndependent/glslang_tab.cpp"
+#line 9464 "MachineIndependent/glslang_tab.cpp"
break;
- case 403: /* type_specifier_nonarray: UTEXTURE2DARRAY */
-#line 2835 "MachineIndependent/glslang.y"
+ case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */
+#line 2845 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true);
}
-#line 9447 "MachineIndependent/glslang_tab.cpp"
+#line 9474 "MachineIndependent/glslang_tab.cpp"
break;
- case 404: /* type_specifier_nonarray: SAMPLER */
-#line 2840 "MachineIndependent/glslang.y"
+ case 405: /* type_specifier_nonarray: SAMPLER */
+#line 2850 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(false);
}
-#line 9457 "MachineIndependent/glslang_tab.cpp"
+#line 9484 "MachineIndependent/glslang_tab.cpp"
break;
- case 405: /* type_specifier_nonarray: SAMPLERSHADOW */
-#line 2845 "MachineIndependent/glslang.y"
+ case 406: /* type_specifier_nonarray: SAMPLERSHADOW */
+#line 2855 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(true);
}
-#line 9467 "MachineIndependent/glslang_tab.cpp"
+#line 9494 "MachineIndependent/glslang_tab.cpp"
break;
- case 406: /* type_specifier_nonarray: SAMPLER2DRECT */
-#line 2851 "MachineIndependent/glslang.y"
+ case 407: /* type_specifier_nonarray: SAMPLER2DRECT */
+#line 2861 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
-#line 9477 "MachineIndependent/glslang_tab.cpp"
+#line 9504 "MachineIndependent/glslang_tab.cpp"
break;
- case 407: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */
-#line 2856 "MachineIndependent/glslang.y"
+ case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */
+#line 2866 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true);
}
-#line 9487 "MachineIndependent/glslang_tab.cpp"
+#line 9514 "MachineIndependent/glslang_tab.cpp"
break;
- case 408: /* type_specifier_nonarray: F16SAMPLER2DRECT */
-#line 2861 "MachineIndependent/glslang.y"
+ case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */
+#line 2871 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
}
-#line 9498 "MachineIndependent/glslang_tab.cpp"
+#line 9525 "MachineIndependent/glslang_tab.cpp"
break;
- case 409: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */
-#line 2867 "MachineIndependent/glslang.y"
+ case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */
+#line 2877 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
}
-#line 9509 "MachineIndependent/glslang_tab.cpp"
+#line 9536 "MachineIndependent/glslang_tab.cpp"
break;
- case 410: /* type_specifier_nonarray: ISAMPLER2DRECT */
-#line 2873 "MachineIndependent/glslang.y"
+ case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */
+#line 2883 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
-#line 9519 "MachineIndependent/glslang_tab.cpp"
+#line 9546 "MachineIndependent/glslang_tab.cpp"
break;
- case 411: /* type_specifier_nonarray: USAMPLER2DRECT */
-#line 2878 "MachineIndependent/glslang.y"
+ case 412: /* type_specifier_nonarray: USAMPLER2DRECT */
+#line 2888 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
-#line 9529 "MachineIndependent/glslang_tab.cpp"
+#line 9556 "MachineIndependent/glslang_tab.cpp"
break;
- case 412: /* type_specifier_nonarray: SAMPLERBUFFER */
-#line 2883 "MachineIndependent/glslang.y"
+ case 413: /* type_specifier_nonarray: SAMPLERBUFFER */
+#line 2893 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
-#line 9539 "MachineIndependent/glslang_tab.cpp"
+#line 9566 "MachineIndependent/glslang_tab.cpp"
break;
- case 413: /* type_specifier_nonarray: F16SAMPLERBUFFER */
-#line 2888 "MachineIndependent/glslang.y"
+ case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */
+#line 2898 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
}
-#line 9550 "MachineIndependent/glslang_tab.cpp"
+#line 9577 "MachineIndependent/glslang_tab.cpp"
break;
- case 414: /* type_specifier_nonarray: ISAMPLERBUFFER */
-#line 2894 "MachineIndependent/glslang.y"
+ case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */
+#line 2904 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
-#line 9560 "MachineIndependent/glslang_tab.cpp"
+#line 9587 "MachineIndependent/glslang_tab.cpp"
break;
- case 415: /* type_specifier_nonarray: USAMPLERBUFFER */
-#line 2899 "MachineIndependent/glslang.y"
+ case 416: /* type_specifier_nonarray: USAMPLERBUFFER */
+#line 2909 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
-#line 9570 "MachineIndependent/glslang_tab.cpp"
+#line 9597 "MachineIndependent/glslang_tab.cpp"
break;
- case 416: /* type_specifier_nonarray: SAMPLER2DMS */
-#line 2904 "MachineIndependent/glslang.y"
+ case 417: /* type_specifier_nonarray: SAMPLER2DMS */
+#line 2914 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true);
}
-#line 9580 "MachineIndependent/glslang_tab.cpp"
+#line 9607 "MachineIndependent/glslang_tab.cpp"
break;
- case 417: /* type_specifier_nonarray: F16SAMPLER2DMS */
-#line 2909 "MachineIndependent/glslang.y"
+ case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */
+#line 2919 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
}
-#line 9591 "MachineIndependent/glslang_tab.cpp"
+#line 9618 "MachineIndependent/glslang_tab.cpp"
break;
- case 418: /* type_specifier_nonarray: ISAMPLER2DMS */
-#line 2915 "MachineIndependent/glslang.y"
+ case 419: /* type_specifier_nonarray: ISAMPLER2DMS */
+#line 2925 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true);
}
-#line 9601 "MachineIndependent/glslang_tab.cpp"
+#line 9628 "MachineIndependent/glslang_tab.cpp"
break;
- case 419: /* type_specifier_nonarray: USAMPLER2DMS */
-#line 2920 "MachineIndependent/glslang.y"
+ case 420: /* type_specifier_nonarray: USAMPLER2DMS */
+#line 2930 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true);
}
-#line 9611 "MachineIndependent/glslang_tab.cpp"
+#line 9638 "MachineIndependent/glslang_tab.cpp"
break;
- case 420: /* type_specifier_nonarray: SAMPLER2DMSARRAY */
-#line 2925 "MachineIndependent/glslang.y"
+ case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */
+#line 2935 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true);
}
-#line 9621 "MachineIndependent/glslang_tab.cpp"
+#line 9648 "MachineIndependent/glslang_tab.cpp"
break;
- case 421: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */
-#line 2930 "MachineIndependent/glslang.y"
+ case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */
+#line 2940 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
}
-#line 9632 "MachineIndependent/glslang_tab.cpp"
+#line 9659 "MachineIndependent/glslang_tab.cpp"
break;
- case 422: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */
-#line 2936 "MachineIndependent/glslang.y"
+ case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */
+#line 2946 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true);
}
-#line 9642 "MachineIndependent/glslang_tab.cpp"
+#line 9669 "MachineIndependent/glslang_tab.cpp"
break;
- case 423: /* type_specifier_nonarray: USAMPLER2DMSARRAY */
-#line 2941 "MachineIndependent/glslang.y"
+ case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */
+#line 2951 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true);
}
-#line 9652 "MachineIndependent/glslang_tab.cpp"
+#line 9679 "MachineIndependent/glslang_tab.cpp"
break;
- case 424: /* type_specifier_nonarray: TEXTURE1D */
-#line 2946 "MachineIndependent/glslang.y"
+ case 425: /* type_specifier_nonarray: TEXTURE1D */
+#line 2956 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
-#line 9662 "MachineIndependent/glslang_tab.cpp"
+#line 9689 "MachineIndependent/glslang_tab.cpp"
break;
- case 425: /* type_specifier_nonarray: F16TEXTURE1D */
-#line 2951 "MachineIndependent/glslang.y"
+ case 426: /* type_specifier_nonarray: F16TEXTURE1D */
+#line 2961 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
}
-#line 9673 "MachineIndependent/glslang_tab.cpp"
+#line 9700 "MachineIndependent/glslang_tab.cpp"
break;
- case 426: /* type_specifier_nonarray: F16TEXTURE2D */
-#line 2957 "MachineIndependent/glslang.y"
+ case 427: /* type_specifier_nonarray: F16TEXTURE2D */
+#line 2967 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
}
-#line 9684 "MachineIndependent/glslang_tab.cpp"
+#line 9711 "MachineIndependent/glslang_tab.cpp"
break;
- case 427: /* type_specifier_nonarray: F16TEXTURE3D */
-#line 2963 "MachineIndependent/glslang.y"
+ case 428: /* type_specifier_nonarray: F16TEXTURE3D */
+#line 2973 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
}
-#line 9695 "MachineIndependent/glslang_tab.cpp"
+#line 9722 "MachineIndependent/glslang_tab.cpp"
break;
- case 428: /* type_specifier_nonarray: F16TEXTURECUBE */
-#line 2969 "MachineIndependent/glslang.y"
+ case 429: /* type_specifier_nonarray: F16TEXTURECUBE */
+#line 2979 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
}
-#line 9706 "MachineIndependent/glslang_tab.cpp"
+#line 9733 "MachineIndependent/glslang_tab.cpp"
break;
- case 429: /* type_specifier_nonarray: TEXTURE1DARRAY */
-#line 2975 "MachineIndependent/glslang.y"
+ case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */
+#line 2985 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true);
}
-#line 9716 "MachineIndependent/glslang_tab.cpp"
+#line 9743 "MachineIndependent/glslang_tab.cpp"
break;
- case 430: /* type_specifier_nonarray: F16TEXTURE1DARRAY */
-#line 2980 "MachineIndependent/glslang.y"
+ case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */
+#line 2990 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
}
-#line 9727 "MachineIndependent/glslang_tab.cpp"
+#line 9754 "MachineIndependent/glslang_tab.cpp"
break;
- case 431: /* type_specifier_nonarray: F16TEXTURE2DARRAY */
-#line 2986 "MachineIndependent/glslang.y"
+ case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */
+#line 2996 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
}
-#line 9738 "MachineIndependent/glslang_tab.cpp"
+#line 9765 "MachineIndependent/glslang_tab.cpp"
break;
- case 432: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */
-#line 2992 "MachineIndependent/glslang.y"
+ case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */
+#line 3002 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
}
-#line 9749 "MachineIndependent/glslang_tab.cpp"
+#line 9776 "MachineIndependent/glslang_tab.cpp"
break;
- case 433: /* type_specifier_nonarray: ITEXTURE1D */
-#line 2998 "MachineIndependent/glslang.y"
+ case 434: /* type_specifier_nonarray: ITEXTURE1D */
+#line 3008 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
-#line 9759 "MachineIndependent/glslang_tab.cpp"
+#line 9786 "MachineIndependent/glslang_tab.cpp"
break;
- case 434: /* type_specifier_nonarray: ITEXTURE1DARRAY */
-#line 3003 "MachineIndependent/glslang.y"
+ case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */
+#line 3013 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true);
}
-#line 9769 "MachineIndependent/glslang_tab.cpp"
+#line 9796 "MachineIndependent/glslang_tab.cpp"
break;
- case 435: /* type_specifier_nonarray: UTEXTURE1D */
-#line 3008 "MachineIndependent/glslang.y"
+ case 436: /* type_specifier_nonarray: UTEXTURE1D */
+#line 3018 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
-#line 9779 "MachineIndependent/glslang_tab.cpp"
+#line 9806 "MachineIndependent/glslang_tab.cpp"
break;
- case 436: /* type_specifier_nonarray: UTEXTURE1DARRAY */
-#line 3013 "MachineIndependent/glslang.y"
+ case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */
+#line 3023 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true);
}
-#line 9789 "MachineIndependent/glslang_tab.cpp"
+#line 9816 "MachineIndependent/glslang_tab.cpp"
break;
- case 437: /* type_specifier_nonarray: TEXTURE2DRECT */
-#line 3018 "MachineIndependent/glslang.y"
+ case 438: /* type_specifier_nonarray: TEXTURE2DRECT */
+#line 3028 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
-#line 9799 "MachineIndependent/glslang_tab.cpp"
+#line 9826 "MachineIndependent/glslang_tab.cpp"
break;
- case 438: /* type_specifier_nonarray: F16TEXTURE2DRECT */
-#line 3023 "MachineIndependent/glslang.y"
+ case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */
+#line 3033 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
}
-#line 9810 "MachineIndependent/glslang_tab.cpp"
+#line 9837 "MachineIndependent/glslang_tab.cpp"
break;
- case 439: /* type_specifier_nonarray: ITEXTURE2DRECT */
-#line 3029 "MachineIndependent/glslang.y"
+ case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */
+#line 3039 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
-#line 9820 "MachineIndependent/glslang_tab.cpp"
+#line 9847 "MachineIndependent/glslang_tab.cpp"
break;
- case 440: /* type_specifier_nonarray: UTEXTURE2DRECT */
-#line 3034 "MachineIndependent/glslang.y"
+ case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */
+#line 3044 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
-#line 9830 "MachineIndependent/glslang_tab.cpp"
+#line 9857 "MachineIndependent/glslang_tab.cpp"
break;
- case 441: /* type_specifier_nonarray: TEXTUREBUFFER */
-#line 3039 "MachineIndependent/glslang.y"
+ case 442: /* type_specifier_nonarray: TEXTUREBUFFER */
+#line 3049 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
-#line 9840 "MachineIndependent/glslang_tab.cpp"
+#line 9867 "MachineIndependent/glslang_tab.cpp"
break;
- case 442: /* type_specifier_nonarray: F16TEXTUREBUFFER */
-#line 3044 "MachineIndependent/glslang.y"
+ case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */
+#line 3054 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
}
-#line 9851 "MachineIndependent/glslang_tab.cpp"
+#line 9878 "MachineIndependent/glslang_tab.cpp"
break;
- case 443: /* type_specifier_nonarray: ITEXTUREBUFFER */
-#line 3050 "MachineIndependent/glslang.y"
+ case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */
+#line 3060 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
-#line 9861 "MachineIndependent/glslang_tab.cpp"
+#line 9888 "MachineIndependent/glslang_tab.cpp"
break;
- case 444: /* type_specifier_nonarray: UTEXTUREBUFFER */
-#line 3055 "MachineIndependent/glslang.y"
+ case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */
+#line 3065 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
-#line 9871 "MachineIndependent/glslang_tab.cpp"
+#line 9898 "MachineIndependent/glslang_tab.cpp"
break;
- case 445: /* type_specifier_nonarray: TEXTURE2DMS */
-#line 3060 "MachineIndependent/glslang.y"
+ case 446: /* type_specifier_nonarray: TEXTURE2DMS */
+#line 3070 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true);
}
-#line 9881 "MachineIndependent/glslang_tab.cpp"
+#line 9908 "MachineIndependent/glslang_tab.cpp"
break;
- case 446: /* type_specifier_nonarray: F16TEXTURE2DMS */
-#line 3065 "MachineIndependent/glslang.y"
+ case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */
+#line 3075 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
}
-#line 9892 "MachineIndependent/glslang_tab.cpp"
+#line 9919 "MachineIndependent/glslang_tab.cpp"
break;
- case 447: /* type_specifier_nonarray: ITEXTURE2DMS */
-#line 3071 "MachineIndependent/glslang.y"
+ case 448: /* type_specifier_nonarray: ITEXTURE2DMS */
+#line 3081 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true);
}
-#line 9902 "MachineIndependent/glslang_tab.cpp"
+#line 9929 "MachineIndependent/glslang_tab.cpp"
break;
- case 448: /* type_specifier_nonarray: UTEXTURE2DMS */
-#line 3076 "MachineIndependent/glslang.y"
+ case 449: /* type_specifier_nonarray: UTEXTURE2DMS */
+#line 3086 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true);
}
-#line 9912 "MachineIndependent/glslang_tab.cpp"
+#line 9939 "MachineIndependent/glslang_tab.cpp"
break;
- case 449: /* type_specifier_nonarray: TEXTURE2DMSARRAY */
-#line 3081 "MachineIndependent/glslang.y"
+ case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */
+#line 3091 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true);
}
-#line 9922 "MachineIndependent/glslang_tab.cpp"
+#line 9949 "MachineIndependent/glslang_tab.cpp"
break;
- case 450: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */
-#line 3086 "MachineIndependent/glslang.y"
+ case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */
+#line 3096 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
}
-#line 9933 "MachineIndependent/glslang_tab.cpp"
+#line 9960 "MachineIndependent/glslang_tab.cpp"
break;
- case 451: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */
-#line 3092 "MachineIndependent/glslang.y"
+ case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */
+#line 3102 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true);
}
-#line 9943 "MachineIndependent/glslang_tab.cpp"
+#line 9970 "MachineIndependent/glslang_tab.cpp"
break;
- case 452: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */
-#line 3097 "MachineIndependent/glslang.y"
+ case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */
+#line 3107 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true);
}
-#line 9953 "MachineIndependent/glslang_tab.cpp"
+#line 9980 "MachineIndependent/glslang_tab.cpp"
break;
- case 453: /* type_specifier_nonarray: IMAGE1D */
-#line 3102 "MachineIndependent/glslang.y"
+ case 454: /* type_specifier_nonarray: IMAGE1D */
+#line 3112 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
-#line 9963 "MachineIndependent/glslang_tab.cpp"
+#line 9990 "MachineIndependent/glslang_tab.cpp"
break;
- case 454: /* type_specifier_nonarray: F16IMAGE1D */
-#line 3107 "MachineIndependent/glslang.y"
+ case 455: /* type_specifier_nonarray: F16IMAGE1D */
+#line 3117 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
}
-#line 9974 "MachineIndependent/glslang_tab.cpp"
+#line 10001 "MachineIndependent/glslang_tab.cpp"
break;
- case 455: /* type_specifier_nonarray: IIMAGE1D */
-#line 3113 "MachineIndependent/glslang.y"
+ case 456: /* type_specifier_nonarray: IIMAGE1D */
+#line 3123 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
-#line 9984 "MachineIndependent/glslang_tab.cpp"
+#line 10011 "MachineIndependent/glslang_tab.cpp"
break;
- case 456: /* type_specifier_nonarray: UIMAGE1D */
-#line 3118 "MachineIndependent/glslang.y"
+ case 457: /* type_specifier_nonarray: UIMAGE1D */
+#line 3128 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
-#line 9994 "MachineIndependent/glslang_tab.cpp"
+#line 10021 "MachineIndependent/glslang_tab.cpp"
break;
- case 457: /* type_specifier_nonarray: IMAGE2D */
-#line 3123 "MachineIndependent/glslang.y"
+ case 458: /* type_specifier_nonarray: IMAGE2D */
+#line 3133 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
-#line 10004 "MachineIndependent/glslang_tab.cpp"
+#line 10031 "MachineIndependent/glslang_tab.cpp"
break;
- case 458: /* type_specifier_nonarray: F16IMAGE2D */
-#line 3128 "MachineIndependent/glslang.y"
+ case 459: /* type_specifier_nonarray: F16IMAGE2D */
+#line 3138 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
}
-#line 10015 "MachineIndependent/glslang_tab.cpp"
+#line 10042 "MachineIndependent/glslang_tab.cpp"
break;
- case 459: /* type_specifier_nonarray: IIMAGE2D */
-#line 3134 "MachineIndependent/glslang.y"
+ case 460: /* type_specifier_nonarray: IIMAGE2D */
+#line 3144 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
-#line 10025 "MachineIndependent/glslang_tab.cpp"
+#line 10052 "MachineIndependent/glslang_tab.cpp"
break;
- case 460: /* type_specifier_nonarray: UIMAGE2D */
-#line 3139 "MachineIndependent/glslang.y"
+ case 461: /* type_specifier_nonarray: UIMAGE2D */
+#line 3149 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
-#line 10035 "MachineIndependent/glslang_tab.cpp"
+#line 10062 "MachineIndependent/glslang_tab.cpp"
break;
- case 461: /* type_specifier_nonarray: IMAGE3D */
-#line 3144 "MachineIndependent/glslang.y"
+ case 462: /* type_specifier_nonarray: IMAGE3D */
+#line 3154 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
-#line 10045 "MachineIndependent/glslang_tab.cpp"
+#line 10072 "MachineIndependent/glslang_tab.cpp"
break;
- case 462: /* type_specifier_nonarray: F16IMAGE3D */
-#line 3149 "MachineIndependent/glslang.y"
+ case 463: /* type_specifier_nonarray: F16IMAGE3D */
+#line 3159 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
}
-#line 10056 "MachineIndependent/glslang_tab.cpp"
+#line 10083 "MachineIndependent/glslang_tab.cpp"
break;
- case 463: /* type_specifier_nonarray: IIMAGE3D */
-#line 3155 "MachineIndependent/glslang.y"
+ case 464: /* type_specifier_nonarray: IIMAGE3D */
+#line 3165 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
-#line 10066 "MachineIndependent/glslang_tab.cpp"
+#line 10093 "MachineIndependent/glslang_tab.cpp"
break;
- case 464: /* type_specifier_nonarray: UIMAGE3D */
-#line 3160 "MachineIndependent/glslang.y"
+ case 465: /* type_specifier_nonarray: UIMAGE3D */
+#line 3170 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
-#line 10076 "MachineIndependent/glslang_tab.cpp"
+#line 10103 "MachineIndependent/glslang_tab.cpp"
break;
- case 465: /* type_specifier_nonarray: IMAGE2DRECT */
-#line 3165 "MachineIndependent/glslang.y"
+ case 466: /* type_specifier_nonarray: IMAGE2DRECT */
+#line 3175 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
-#line 10086 "MachineIndependent/glslang_tab.cpp"
+#line 10113 "MachineIndependent/glslang_tab.cpp"
break;
- case 466: /* type_specifier_nonarray: F16IMAGE2DRECT */
-#line 3170 "MachineIndependent/glslang.y"
+ case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */
+#line 3180 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
}
-#line 10097 "MachineIndependent/glslang_tab.cpp"
+#line 10124 "MachineIndependent/glslang_tab.cpp"
break;
- case 467: /* type_specifier_nonarray: IIMAGE2DRECT */
-#line 3176 "MachineIndependent/glslang.y"
+ case 468: /* type_specifier_nonarray: IIMAGE2DRECT */
+#line 3186 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
-#line 10107 "MachineIndependent/glslang_tab.cpp"
+#line 10134 "MachineIndependent/glslang_tab.cpp"
break;
- case 468: /* type_specifier_nonarray: UIMAGE2DRECT */
-#line 3181 "MachineIndependent/glslang.y"
+ case 469: /* type_specifier_nonarray: UIMAGE2DRECT */
+#line 3191 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
-#line 10117 "MachineIndependent/glslang_tab.cpp"
+#line 10144 "MachineIndependent/glslang_tab.cpp"
break;
- case 469: /* type_specifier_nonarray: IMAGECUBE */
-#line 3186 "MachineIndependent/glslang.y"
+ case 470: /* type_specifier_nonarray: IMAGECUBE */
+#line 3196 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
-#line 10127 "MachineIndependent/glslang_tab.cpp"
+#line 10154 "MachineIndependent/glslang_tab.cpp"
break;
- case 470: /* type_specifier_nonarray: F16IMAGECUBE */
-#line 3191 "MachineIndependent/glslang.y"
+ case 471: /* type_specifier_nonarray: F16IMAGECUBE */
+#line 3201 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
}
-#line 10138 "MachineIndependent/glslang_tab.cpp"
+#line 10165 "MachineIndependent/glslang_tab.cpp"
break;
- case 471: /* type_specifier_nonarray: IIMAGECUBE */
-#line 3197 "MachineIndependent/glslang.y"
+ case 472: /* type_specifier_nonarray: IIMAGECUBE */
+#line 3207 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
-#line 10148 "MachineIndependent/glslang_tab.cpp"
+#line 10175 "MachineIndependent/glslang_tab.cpp"
break;
- case 472: /* type_specifier_nonarray: UIMAGECUBE */
-#line 3202 "MachineIndependent/glslang.y"
+ case 473: /* type_specifier_nonarray: UIMAGECUBE */
+#line 3212 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
-#line 10158 "MachineIndependent/glslang_tab.cpp"
+#line 10185 "MachineIndependent/glslang_tab.cpp"
break;
- case 473: /* type_specifier_nonarray: IMAGEBUFFER */
-#line 3207 "MachineIndependent/glslang.y"
+ case 474: /* type_specifier_nonarray: IMAGEBUFFER */
+#line 3217 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
-#line 10168 "MachineIndependent/glslang_tab.cpp"
+#line 10195 "MachineIndependent/glslang_tab.cpp"
break;
- case 474: /* type_specifier_nonarray: F16IMAGEBUFFER */
-#line 3212 "MachineIndependent/glslang.y"
+ case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */
+#line 3222 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
}
-#line 10179 "MachineIndependent/glslang_tab.cpp"
+#line 10206 "MachineIndependent/glslang_tab.cpp"
break;
- case 475: /* type_specifier_nonarray: IIMAGEBUFFER */
-#line 3218 "MachineIndependent/glslang.y"
+ case 476: /* type_specifier_nonarray: IIMAGEBUFFER */
+#line 3228 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
-#line 10189 "MachineIndependent/glslang_tab.cpp"
+#line 10216 "MachineIndependent/glslang_tab.cpp"
break;
- case 476: /* type_specifier_nonarray: UIMAGEBUFFER */
-#line 3223 "MachineIndependent/glslang.y"
+ case 477: /* type_specifier_nonarray: UIMAGEBUFFER */
+#line 3233 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
-#line 10199 "MachineIndependent/glslang_tab.cpp"
+#line 10226 "MachineIndependent/glslang_tab.cpp"
break;
- case 477: /* type_specifier_nonarray: IMAGE1DARRAY */
-#line 3228 "MachineIndependent/glslang.y"
+ case 478: /* type_specifier_nonarray: IMAGE1DARRAY */
+#line 3238 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true);
}
-#line 10209 "MachineIndependent/glslang_tab.cpp"
+#line 10236 "MachineIndependent/glslang_tab.cpp"
break;
- case 478: /* type_specifier_nonarray: F16IMAGE1DARRAY */
-#line 3233 "MachineIndependent/glslang.y"
+ case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */
+#line 3243 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
}
-#line 10220 "MachineIndependent/glslang_tab.cpp"
+#line 10247 "MachineIndependent/glslang_tab.cpp"
break;
- case 479: /* type_specifier_nonarray: IIMAGE1DARRAY */
-#line 3239 "MachineIndependent/glslang.y"
+ case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */
+#line 3249 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true);
}
-#line 10230 "MachineIndependent/glslang_tab.cpp"
+#line 10257 "MachineIndependent/glslang_tab.cpp"
break;
- case 480: /* type_specifier_nonarray: UIMAGE1DARRAY */
-#line 3244 "MachineIndependent/glslang.y"
+ case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */
+#line 3254 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true);
}
-#line 10240 "MachineIndependent/glslang_tab.cpp"
+#line 10267 "MachineIndependent/glslang_tab.cpp"
break;
- case 481: /* type_specifier_nonarray: IMAGE2DARRAY */
-#line 3249 "MachineIndependent/glslang.y"
+ case 482: /* type_specifier_nonarray: IMAGE2DARRAY */
+#line 3259 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true);
}
-#line 10250 "MachineIndependent/glslang_tab.cpp"
+#line 10277 "MachineIndependent/glslang_tab.cpp"
break;
- case 482: /* type_specifier_nonarray: F16IMAGE2DARRAY */
-#line 3254 "MachineIndependent/glslang.y"
+ case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */
+#line 3264 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
}
-#line 10261 "MachineIndependent/glslang_tab.cpp"
+#line 10288 "MachineIndependent/glslang_tab.cpp"
break;
- case 483: /* type_specifier_nonarray: IIMAGE2DARRAY */
-#line 3260 "MachineIndependent/glslang.y"
+ case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */
+#line 3270 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true);
}
-#line 10271 "MachineIndependent/glslang_tab.cpp"
+#line 10298 "MachineIndependent/glslang_tab.cpp"
break;
- case 484: /* type_specifier_nonarray: UIMAGE2DARRAY */
-#line 3265 "MachineIndependent/glslang.y"
+ case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */
+#line 3275 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true);
}
-#line 10281 "MachineIndependent/glslang_tab.cpp"
+#line 10308 "MachineIndependent/glslang_tab.cpp"
break;
- case 485: /* type_specifier_nonarray: IMAGECUBEARRAY */
-#line 3270 "MachineIndependent/glslang.y"
+ case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */
+#line 3280 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true);
}
-#line 10291 "MachineIndependent/glslang_tab.cpp"
+#line 10318 "MachineIndependent/glslang_tab.cpp"
break;
- case 486: /* type_specifier_nonarray: F16IMAGECUBEARRAY */
-#line 3275 "MachineIndependent/glslang.y"
+ case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */
+#line 3285 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
}
-#line 10302 "MachineIndependent/glslang_tab.cpp"
+#line 10329 "MachineIndependent/glslang_tab.cpp"
break;
- case 487: /* type_specifier_nonarray: IIMAGECUBEARRAY */
-#line 3281 "MachineIndependent/glslang.y"
+ case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */
+#line 3291 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true);
}
-#line 10312 "MachineIndependent/glslang_tab.cpp"
+#line 10339 "MachineIndependent/glslang_tab.cpp"
break;
- case 488: /* type_specifier_nonarray: UIMAGECUBEARRAY */
-#line 3286 "MachineIndependent/glslang.y"
+ case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */
+#line 3296 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true);
}
-#line 10322 "MachineIndependent/glslang_tab.cpp"
+#line 10349 "MachineIndependent/glslang_tab.cpp"
break;
- case 489: /* type_specifier_nonarray: IMAGE2DMS */
-#line 3291 "MachineIndependent/glslang.y"
+ case 490: /* type_specifier_nonarray: IMAGE2DMS */
+#line 3301 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true);
}
-#line 10332 "MachineIndependent/glslang_tab.cpp"
+#line 10359 "MachineIndependent/glslang_tab.cpp"
break;
- case 490: /* type_specifier_nonarray: F16IMAGE2DMS */
-#line 3296 "MachineIndependent/glslang.y"
+ case 491: /* type_specifier_nonarray: F16IMAGE2DMS */
+#line 3306 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
}
-#line 10343 "MachineIndependent/glslang_tab.cpp"
+#line 10370 "MachineIndependent/glslang_tab.cpp"
break;
- case 491: /* type_specifier_nonarray: IIMAGE2DMS */
-#line 3302 "MachineIndependent/glslang.y"
+ case 492: /* type_specifier_nonarray: IIMAGE2DMS */
+#line 3312 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true);
}
-#line 10353 "MachineIndependent/glslang_tab.cpp"
+#line 10380 "MachineIndependent/glslang_tab.cpp"
break;
- case 492: /* type_specifier_nonarray: UIMAGE2DMS */
-#line 3307 "MachineIndependent/glslang.y"
+ case 493: /* type_specifier_nonarray: UIMAGE2DMS */
+#line 3317 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true);
}
-#line 10363 "MachineIndependent/glslang_tab.cpp"
+#line 10390 "MachineIndependent/glslang_tab.cpp"
break;
- case 493: /* type_specifier_nonarray: IMAGE2DMSARRAY */
-#line 3312 "MachineIndependent/glslang.y"
+ case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */
+#line 3322 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true);
}
-#line 10373 "MachineIndependent/glslang_tab.cpp"
+#line 10400 "MachineIndependent/glslang_tab.cpp"
break;
- case 494: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */
-#line 3317 "MachineIndependent/glslang.y"
+ case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */
+#line 3327 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
}
-#line 10384 "MachineIndependent/glslang_tab.cpp"
+#line 10411 "MachineIndependent/glslang_tab.cpp"
break;
- case 495: /* type_specifier_nonarray: IIMAGE2DMSARRAY */
-#line 3323 "MachineIndependent/glslang.y"
+ case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */
+#line 3333 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true);
}
-#line 10394 "MachineIndependent/glslang_tab.cpp"
+#line 10421 "MachineIndependent/glslang_tab.cpp"
break;
- case 496: /* type_specifier_nonarray: UIMAGE2DMSARRAY */
-#line 3328 "MachineIndependent/glslang.y"
+ case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */
+#line 3338 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true);
}
-#line 10404 "MachineIndependent/glslang_tab.cpp"
+#line 10431 "MachineIndependent/glslang_tab.cpp"
break;
- case 497: /* type_specifier_nonarray: I64IMAGE1D */
-#line 3333 "MachineIndependent/glslang.y"
+ case 498: /* type_specifier_nonarray: I64IMAGE1D */
+#line 3343 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd1D);
}
-#line 10414 "MachineIndependent/glslang_tab.cpp"
+#line 10441 "MachineIndependent/glslang_tab.cpp"
break;
- case 498: /* type_specifier_nonarray: U64IMAGE1D */
-#line 3338 "MachineIndependent/glslang.y"
+ case 499: /* type_specifier_nonarray: U64IMAGE1D */
+#line 3348 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd1D);
}
-#line 10424 "MachineIndependent/glslang_tab.cpp"
+#line 10451 "MachineIndependent/glslang_tab.cpp"
break;
- case 499: /* type_specifier_nonarray: I64IMAGE2D */
-#line 3343 "MachineIndependent/glslang.y"
+ case 500: /* type_specifier_nonarray: I64IMAGE2D */
+#line 3353 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D);
}
-#line 10434 "MachineIndependent/glslang_tab.cpp"
+#line 10461 "MachineIndependent/glslang_tab.cpp"
break;
- case 500: /* type_specifier_nonarray: U64IMAGE2D */
-#line 3348 "MachineIndependent/glslang.y"
+ case 501: /* type_specifier_nonarray: U64IMAGE2D */
+#line 3358 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D);
}
-#line 10444 "MachineIndependent/glslang_tab.cpp"
+#line 10471 "MachineIndependent/glslang_tab.cpp"
break;
- case 501: /* type_specifier_nonarray: I64IMAGE3D */
-#line 3353 "MachineIndependent/glslang.y"
+ case 502: /* type_specifier_nonarray: I64IMAGE3D */
+#line 3363 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd3D);
}
-#line 10454 "MachineIndependent/glslang_tab.cpp"
+#line 10481 "MachineIndependent/glslang_tab.cpp"
break;
- case 502: /* type_specifier_nonarray: U64IMAGE3D */
-#line 3358 "MachineIndependent/glslang.y"
+ case 503: /* type_specifier_nonarray: U64IMAGE3D */
+#line 3368 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd3D);
}
-#line 10464 "MachineIndependent/glslang_tab.cpp"
+#line 10491 "MachineIndependent/glslang_tab.cpp"
break;
- case 503: /* type_specifier_nonarray: I64IMAGE2DRECT */
-#line 3363 "MachineIndependent/glslang.y"
+ case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */
+#line 3373 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdRect);
}
-#line 10474 "MachineIndependent/glslang_tab.cpp"
+#line 10501 "MachineIndependent/glslang_tab.cpp"
break;
- case 504: /* type_specifier_nonarray: U64IMAGE2DRECT */
-#line 3368 "MachineIndependent/glslang.y"
+ case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */
+#line 3378 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdRect);
}
-#line 10484 "MachineIndependent/glslang_tab.cpp"
+#line 10511 "MachineIndependent/glslang_tab.cpp"
break;
- case 505: /* type_specifier_nonarray: I64IMAGECUBE */
-#line 3373 "MachineIndependent/glslang.y"
+ case 506: /* type_specifier_nonarray: I64IMAGECUBE */
+#line 3383 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdCube);
}
-#line 10494 "MachineIndependent/glslang_tab.cpp"
+#line 10521 "MachineIndependent/glslang_tab.cpp"
break;
- case 506: /* type_specifier_nonarray: U64IMAGECUBE */
-#line 3378 "MachineIndependent/glslang.y"
+ case 507: /* type_specifier_nonarray: U64IMAGECUBE */
+#line 3388 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdCube);
}
-#line 10504 "MachineIndependent/glslang_tab.cpp"
+#line 10531 "MachineIndependent/glslang_tab.cpp"
break;
- case 507: /* type_specifier_nonarray: I64IMAGEBUFFER */
-#line 3383 "MachineIndependent/glslang.y"
+ case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */
+#line 3393 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer);
}
-#line 10514 "MachineIndependent/glslang_tab.cpp"
+#line 10541 "MachineIndependent/glslang_tab.cpp"
break;
- case 508: /* type_specifier_nonarray: U64IMAGEBUFFER */
-#line 3388 "MachineIndependent/glslang.y"
+ case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */
+#line 3398 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer);
}
-#line 10524 "MachineIndependent/glslang_tab.cpp"
+#line 10551 "MachineIndependent/glslang_tab.cpp"
break;
- case 509: /* type_specifier_nonarray: I64IMAGE1DARRAY */
-#line 3393 "MachineIndependent/glslang.y"
+ case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */
+#line 3403 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true);
}
-#line 10534 "MachineIndependent/glslang_tab.cpp"
+#line 10561 "MachineIndependent/glslang_tab.cpp"
break;
- case 510: /* type_specifier_nonarray: U64IMAGE1DARRAY */
-#line 3398 "MachineIndependent/glslang.y"
+ case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */
+#line 3408 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true);
}
-#line 10544 "MachineIndependent/glslang_tab.cpp"
+#line 10571 "MachineIndependent/glslang_tab.cpp"
break;
- case 511: /* type_specifier_nonarray: I64IMAGE2DARRAY */
-#line 3403 "MachineIndependent/glslang.y"
+ case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */
+#line 3413 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true);
}
-#line 10554 "MachineIndependent/glslang_tab.cpp"
+#line 10581 "MachineIndependent/glslang_tab.cpp"
break;
- case 512: /* type_specifier_nonarray: U64IMAGE2DARRAY */
-#line 3408 "MachineIndependent/glslang.y"
+ case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */
+#line 3418 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true);
}
-#line 10564 "MachineIndependent/glslang_tab.cpp"
+#line 10591 "MachineIndependent/glslang_tab.cpp"
break;
- case 513: /* type_specifier_nonarray: I64IMAGECUBEARRAY */
-#line 3413 "MachineIndependent/glslang.y"
+ case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */
+#line 3423 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true);
}
-#line 10574 "MachineIndependent/glslang_tab.cpp"
+#line 10601 "MachineIndependent/glslang_tab.cpp"
break;
- case 514: /* type_specifier_nonarray: U64IMAGECUBEARRAY */
-#line 3418 "MachineIndependent/glslang.y"
+ case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */
+#line 3428 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true);
}
-#line 10584 "MachineIndependent/glslang_tab.cpp"
+#line 10611 "MachineIndependent/glslang_tab.cpp"
break;
- case 515: /* type_specifier_nonarray: I64IMAGE2DMS */
-#line 3423 "MachineIndependent/glslang.y"
+ case 516: /* type_specifier_nonarray: I64IMAGE2DMS */
+#line 3433 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true);
}
-#line 10594 "MachineIndependent/glslang_tab.cpp"
+#line 10621 "MachineIndependent/glslang_tab.cpp"
break;
- case 516: /* type_specifier_nonarray: U64IMAGE2DMS */
-#line 3428 "MachineIndependent/glslang.y"
+ case 517: /* type_specifier_nonarray: U64IMAGE2DMS */
+#line 3438 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true);
}
-#line 10604 "MachineIndependent/glslang_tab.cpp"
+#line 10631 "MachineIndependent/glslang_tab.cpp"
break;
- case 517: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */
-#line 3433 "MachineIndependent/glslang.y"
+ case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */
+#line 3443 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true);
}
-#line 10614 "MachineIndependent/glslang_tab.cpp"
+#line 10641 "MachineIndependent/glslang_tab.cpp"
break;
- case 518: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */
-#line 3438 "MachineIndependent/glslang.y"
+ case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */
+#line 3448 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true);
}
-#line 10624 "MachineIndependent/glslang_tab.cpp"
+#line 10651 "MachineIndependent/glslang_tab.cpp"
break;
- case 519: /* type_specifier_nonarray: SAMPLEREXTERNALOES */
-#line 3443 "MachineIndependent/glslang.y"
+ case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */
+#line 3453 "MachineIndependent/glslang.y"
{ // GL_OES_EGL_image_external
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.external = true;
}
-#line 10635 "MachineIndependent/glslang_tab.cpp"
+#line 10662 "MachineIndependent/glslang_tab.cpp"
break;
- case 520: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */
-#line 3449 "MachineIndependent/glslang.y"
+ case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */
+#line 3459 "MachineIndependent/glslang.y"
{ // GL_EXT_YUV_target
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
(yyval.interm.type).sampler.yuv = true;
}
-#line 10646 "MachineIndependent/glslang_tab.cpp"
+#line 10673 "MachineIndependent/glslang_tab.cpp"
break;
- case 521: /* type_specifier_nonarray: ATTACHMENTEXT */
-#line 3455 "MachineIndependent/glslang.y"
+ case 522: /* type_specifier_nonarray: ATTACHMENTEXT */
+#line 3465 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setAttachmentEXT(EbtFloat);
}
-#line 10657 "MachineIndependent/glslang_tab.cpp"
+#line 10684 "MachineIndependent/glslang_tab.cpp"
break;
- case 522: /* type_specifier_nonarray: IATTACHMENTEXT */
-#line 3461 "MachineIndependent/glslang.y"
+ case 523: /* type_specifier_nonarray: IATTACHMENTEXT */
+#line 3471 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setAttachmentEXT(EbtInt);
}
-#line 10668 "MachineIndependent/glslang_tab.cpp"
+#line 10695 "MachineIndependent/glslang_tab.cpp"
break;
- case 523: /* type_specifier_nonarray: UATTACHMENTEXT */
-#line 3467 "MachineIndependent/glslang.y"
+ case 524: /* type_specifier_nonarray: UATTACHMENTEXT */
+#line 3477 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setAttachmentEXT(EbtUint);
}
-#line 10679 "MachineIndependent/glslang_tab.cpp"
+#line 10706 "MachineIndependent/glslang_tab.cpp"
break;
- case 524: /* type_specifier_nonarray: SUBPASSINPUT */
-#line 3473 "MachineIndependent/glslang.y"
+ case 525: /* type_specifier_nonarray: SUBPASSINPUT */
+#line 3483 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat);
}
-#line 10690 "MachineIndependent/glslang_tab.cpp"
+#line 10717 "MachineIndependent/glslang_tab.cpp"
break;
- case 525: /* type_specifier_nonarray: SUBPASSINPUTMS */
-#line 3479 "MachineIndependent/glslang.y"
+ case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */
+#line 3489 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat, true);
}
-#line 10701 "MachineIndependent/glslang_tab.cpp"
+#line 10728 "MachineIndependent/glslang_tab.cpp"
break;
- case 526: /* type_specifier_nonarray: F16SUBPASSINPUT */
-#line 3485 "MachineIndependent/glslang.y"
+ case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */
+#line 3495 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -10709,11 +10736,11 @@ yyreduce:
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16);
}
-#line 10713 "MachineIndependent/glslang_tab.cpp"
+#line 10740 "MachineIndependent/glslang_tab.cpp"
break;
- case 527: /* type_specifier_nonarray: F16SUBPASSINPUTMS */
-#line 3492 "MachineIndependent/glslang.y"
+ case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */
+#line 3502 "MachineIndependent/glslang.y"
{
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
@@ -10721,116 +10748,131 @@ yyreduce:
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
}
-#line 10725 "MachineIndependent/glslang_tab.cpp"
+#line 10752 "MachineIndependent/glslang_tab.cpp"
break;
- case 528: /* type_specifier_nonarray: ISUBPASSINPUT */
-#line 3499 "MachineIndependent/glslang.y"
+ case 529: /* type_specifier_nonarray: ISUBPASSINPUT */
+#line 3509 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt);
}
-#line 10736 "MachineIndependent/glslang_tab.cpp"
+#line 10763 "MachineIndependent/glslang_tab.cpp"
break;
- case 529: /* type_specifier_nonarray: ISUBPASSINPUTMS */
-#line 3505 "MachineIndependent/glslang.y"
+ case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */
+#line 3515 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtInt, true);
}
-#line 10747 "MachineIndependent/glslang_tab.cpp"
+#line 10774 "MachineIndependent/glslang_tab.cpp"
break;
- case 530: /* type_specifier_nonarray: USUBPASSINPUT */
-#line 3511 "MachineIndependent/glslang.y"
+ case 531: /* type_specifier_nonarray: USUBPASSINPUT */
+#line 3521 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint);
}
-#line 10758 "MachineIndependent/glslang_tab.cpp"
+#line 10785 "MachineIndependent/glslang_tab.cpp"
break;
- case 531: /* type_specifier_nonarray: USUBPASSINPUTMS */
-#line 3517 "MachineIndependent/glslang.y"
+ case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */
+#line 3527 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setSubpass(EbtUint, true);
}
-#line 10769 "MachineIndependent/glslang_tab.cpp"
+#line 10796 "MachineIndependent/glslang_tab.cpp"
break;
- case 532: /* type_specifier_nonarray: FCOOPMATNV */
-#line 3523 "MachineIndependent/glslang.y"
+ case 533: /* type_specifier_nonarray: FCOOPMATNV */
+#line 3533 "MachineIndependent/glslang.y"
{
- parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).coopmat = true;
+ (yyval.interm.type).coopmatNV = true;
+ (yyval.interm.type).coopmatKHR = false;
}
-#line 10780 "MachineIndependent/glslang_tab.cpp"
+#line 10808 "MachineIndependent/glslang_tab.cpp"
break;
- case 533: /* type_specifier_nonarray: ICOOPMATNV */
-#line 3529 "MachineIndependent/glslang.y"
+ case 534: /* type_specifier_nonarray: ICOOPMATNV */
+#line 3540 "MachineIndependent/glslang.y"
{
- parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).coopmat = true;
+ (yyval.interm.type).coopmatNV = true;
+ (yyval.interm.type).coopmatKHR = false;
}
-#line 10791 "MachineIndependent/glslang_tab.cpp"
+#line 10820 "MachineIndependent/glslang_tab.cpp"
break;
- case 534: /* type_specifier_nonarray: UCOOPMATNV */
-#line 3535 "MachineIndependent/glslang.y"
+ case 535: /* type_specifier_nonarray: UCOOPMATNV */
+#line 3547 "MachineIndependent/glslang.y"
{
- parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
+ parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel());
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtUint;
- (yyval.interm.type).coopmat = true;
+ (yyval.interm.type).coopmatNV = true;
+ (yyval.interm.type).coopmatKHR = false;
}
-#line 10802 "MachineIndependent/glslang_tab.cpp"
+#line 10832 "MachineIndependent/glslang_tab.cpp"
break;
- case 535: /* type_specifier_nonarray: spirv_type_specifier */
-#line 3541 "MachineIndependent/glslang.y"
+ case 536: /* type_specifier_nonarray: COOPMAT */
+#line 3554 "MachineIndependent/glslang.y"
+ {
+ parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel());
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtCoopmat;
+ (yyval.interm.type).coopmatNV = false;
+ (yyval.interm.type).coopmatKHR = true;
+ }
+#line 10844 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 537: /* type_specifier_nonarray: spirv_type_specifier */
+#line 3561 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier");
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 10811 "MachineIndependent/glslang_tab.cpp"
+#line 10853 "MachineIndependent/glslang_tab.cpp"
break;
- case 536: /* type_specifier_nonarray: HITOBJECTNV */
-#line 3545 "MachineIndependent/glslang.y"
+ case 538: /* type_specifier_nonarray: HITOBJECTNV */
+#line 3565 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtHitObjectNV;
}
-#line 10820 "MachineIndependent/glslang_tab.cpp"
+#line 10862 "MachineIndependent/glslang_tab.cpp"
break;
- case 537: /* type_specifier_nonarray: struct_specifier */
-#line 3550 "MachineIndependent/glslang.y"
+ case 539: /* type_specifier_nonarray: struct_specifier */
+#line 3570 "MachineIndependent/glslang.y"
{
(yyval.interm.type) = (yyvsp[0].interm.type);
(yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary;
parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type));
}
-#line 10830 "MachineIndependent/glslang_tab.cpp"
+#line 10872 "MachineIndependent/glslang_tab.cpp"
break;
- case 538: /* type_specifier_nonarray: TYPE_NAME */
-#line 3555 "MachineIndependent/glslang.y"
+ case 540: /* type_specifier_nonarray: TYPE_NAME */
+#line 3575 "MachineIndependent/glslang.y"
{
//
// This is for user defined type names. The lexical phase looked up the
@@ -10844,47 +10886,47 @@ yyreduce:
} else
parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
-#line 10848 "MachineIndependent/glslang_tab.cpp"
+#line 10890 "MachineIndependent/glslang_tab.cpp"
break;
- case 539: /* precision_qualifier: HIGH_PRECISION */
-#line 3571 "MachineIndependent/glslang.y"
+ case 541: /* precision_qualifier: HIGH_PRECISION */
+#line 3591 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh);
}
-#line 10858 "MachineIndependent/glslang_tab.cpp"
+#line 10900 "MachineIndependent/glslang_tab.cpp"
break;
- case 540: /* precision_qualifier: MEDIUM_PRECISION */
-#line 3576 "MachineIndependent/glslang.y"
+ case 542: /* precision_qualifier: MEDIUM_PRECISION */
+#line 3596 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium);
}
-#line 10868 "MachineIndependent/glslang_tab.cpp"
+#line 10910 "MachineIndependent/glslang_tab.cpp"
break;
- case 541: /* precision_qualifier: LOW_PRECISION */
-#line 3581 "MachineIndependent/glslang.y"
+ case 543: /* precision_qualifier: LOW_PRECISION */
+#line 3601 "MachineIndependent/glslang.y"
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow);
}
-#line 10878 "MachineIndependent/glslang_tab.cpp"
+#line 10920 "MachineIndependent/glslang_tab.cpp"
break;
- case 542: /* $@3: %empty */
-#line 3589 "MachineIndependent/glslang.y"
+ case 544: /* $@3: %empty */
+#line 3609 "MachineIndependent/glslang.y"
{ parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 10884 "MachineIndependent/glslang_tab.cpp"
+#line 10926 "MachineIndependent/glslang_tab.cpp"
break;
- case 543: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */
-#line 3589 "MachineIndependent/glslang.y"
+ case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */
+#line 3609 "MachineIndependent/glslang.y"
{
TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -10896,17 +10938,17 @@ yyreduce:
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 10900 "MachineIndependent/glslang_tab.cpp"
+#line 10942 "MachineIndependent/glslang_tab.cpp"
break;
- case 544: /* $@4: %empty */
-#line 3600 "MachineIndependent/glslang.y"
+ case 546: /* $@4: %empty */
+#line 3620 "MachineIndependent/glslang.y"
{ parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 10906 "MachineIndependent/glslang_tab.cpp"
+#line 10948 "MachineIndependent/glslang_tab.cpp"
break;
- case 545: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */
-#line 3600 "MachineIndependent/glslang.y"
+ case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */
+#line 3620 "MachineIndependent/glslang.y"
{
TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
(yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -10914,19 +10956,19 @@ yyreduce:
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 10918 "MachineIndependent/glslang_tab.cpp"
+#line 10960 "MachineIndependent/glslang_tab.cpp"
break;
- case 546: /* struct_declaration_list: struct_declaration */
-#line 3610 "MachineIndependent/glslang.y"
+ case 548: /* struct_declaration_list: struct_declaration */
+#line 3630 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
-#line 10926 "MachineIndependent/glslang_tab.cpp"
+#line 10968 "MachineIndependent/glslang_tab.cpp"
break;
- case 547: /* struct_declaration_list: struct_declaration_list struct_declaration */
-#line 3613 "MachineIndependent/glslang.y"
+ case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */
+#line 3633 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -10937,11 +10979,11 @@ yyreduce:
(yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
-#line 10941 "MachineIndependent/glslang_tab.cpp"
+#line 10983 "MachineIndependent/glslang_tab.cpp"
break;
- case 548: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */
-#line 3626 "MachineIndependent/glslang.y"
+ case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */
+#line 3646 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -10953,7 +10995,7 @@ yyreduce:
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
- parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
+ parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).isCoopmat());
for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
TType type((yyvsp[-2].interm.type));
@@ -10964,11 +11006,11 @@ yyreduce:
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 10968 "MachineIndependent/glslang_tab.cpp"
+#line 11010 "MachineIndependent/glslang_tab.cpp"
break;
- case 549: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */
-#line 3648 "MachineIndependent/glslang.y"
+ case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */
+#line 3668 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -10982,7 +11024,7 @@ yyreduce:
parseContext.memberQualifierCheck((yyvsp[-3].interm.type));
parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType);
parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true);
- parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier);
+ parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).isCoopmat());
for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) {
TType type((yyvsp[-2].interm.type));
@@ -10993,38 +11035,38 @@ yyreduce:
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 10997 "MachineIndependent/glslang_tab.cpp"
+#line 11039 "MachineIndependent/glslang_tab.cpp"
break;
- case 550: /* struct_declarator_list: struct_declarator */
-#line 3675 "MachineIndependent/glslang.y"
+ case 552: /* struct_declarator_list: struct_declarator */
+#line 3695 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 11006 "MachineIndependent/glslang_tab.cpp"
+#line 11048 "MachineIndependent/glslang_tab.cpp"
break;
- case 551: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */
-#line 3679 "MachineIndependent/glslang.y"
+ case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */
+#line 3699 "MachineIndependent/glslang.y"
{
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 11014 "MachineIndependent/glslang_tab.cpp"
+#line 11056 "MachineIndependent/glslang_tab.cpp"
break;
- case 552: /* struct_declarator: IDENTIFIER */
-#line 3685 "MachineIndependent/glslang.y"
+ case 554: /* struct_declarator: IDENTIFIER */
+#line 3705 "MachineIndependent/glslang.y"
{
(yyval.interm.typeLine).type = new TType(EbtVoid);
(yyval.interm.typeLine).loc = (yyvsp[0].lex).loc;
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string);
}
-#line 11024 "MachineIndependent/glslang_tab.cpp"
+#line 11066 "MachineIndependent/glslang_tab.cpp"
break;
- case 553: /* struct_declarator: IDENTIFIER array_specifier */
-#line 3690 "MachineIndependent/glslang.y"
+ case 555: /* struct_declarator: IDENTIFIER array_specifier */
+#line 3710 "MachineIndependent/glslang.y"
{
parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
@@ -11033,246 +11075,246 @@ yyreduce:
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
}
-#line 11037 "MachineIndependent/glslang_tab.cpp"
+#line 11079 "MachineIndependent/glslang_tab.cpp"
break;
- case 554: /* initializer: assignment_expression */
-#line 3701 "MachineIndependent/glslang.y"
+ case 556: /* initializer: assignment_expression */
+#line 3721 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 11045 "MachineIndependent/glslang_tab.cpp"
+#line 11087 "MachineIndependent/glslang_tab.cpp"
break;
- case 555: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */
-#line 3705 "MachineIndependent/glslang.y"
+ case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */
+#line 3725 "MachineIndependent/glslang.y"
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
}
-#line 11056 "MachineIndependent/glslang_tab.cpp"
+#line 11098 "MachineIndependent/glslang_tab.cpp"
break;
- case 556: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */
-#line 3711 "MachineIndependent/glslang.y"
+ case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */
+#line 3731 "MachineIndependent/glslang.y"
{
const char* initFeature = "{ } style initializers";
parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature);
parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature);
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
-#line 11067 "MachineIndependent/glslang_tab.cpp"
+#line 11109 "MachineIndependent/glslang_tab.cpp"
break;
- case 557: /* initializer: LEFT_BRACE RIGHT_BRACE */
-#line 3717 "MachineIndependent/glslang.y"
+ case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */
+#line 3737 "MachineIndependent/glslang.y"
{
const char* initFeature = "empty { } initializer";
parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature);
(yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc);
}
-#line 11078 "MachineIndependent/glslang_tab.cpp"
+#line 11120 "MachineIndependent/glslang_tab.cpp"
break;
- case 558: /* initializer_list: initializer */
-#line 3728 "MachineIndependent/glslang.y"
+ case 560: /* initializer_list: initializer */
+#line 3748 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
}
-#line 11086 "MachineIndependent/glslang_tab.cpp"
+#line 11128 "MachineIndependent/glslang_tab.cpp"
break;
- case 559: /* initializer_list: initializer_list COMMA initializer */
-#line 3731 "MachineIndependent/glslang.y"
+ case 561: /* initializer_list: initializer_list COMMA initializer */
+#line 3751 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 11094 "MachineIndependent/glslang_tab.cpp"
+#line 11136 "MachineIndependent/glslang_tab.cpp"
break;
- case 560: /* declaration_statement: declaration */
-#line 3738 "MachineIndependent/glslang.y"
+ case 562: /* declaration_statement: declaration */
+#line 3758 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11100 "MachineIndependent/glslang_tab.cpp"
+#line 11142 "MachineIndependent/glslang_tab.cpp"
break;
- case 561: /* statement: compound_statement */
-#line 3742 "MachineIndependent/glslang.y"
+ case 563: /* statement: compound_statement */
+#line 3762 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11106 "MachineIndependent/glslang_tab.cpp"
+#line 11148 "MachineIndependent/glslang_tab.cpp"
break;
- case 562: /* statement: simple_statement */
-#line 3743 "MachineIndependent/glslang.y"
+ case 564: /* statement: simple_statement */
+#line 3763 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11112 "MachineIndependent/glslang_tab.cpp"
+#line 11154 "MachineIndependent/glslang_tab.cpp"
break;
- case 563: /* simple_statement: declaration_statement */
-#line 3749 "MachineIndependent/glslang.y"
+ case 565: /* simple_statement: declaration_statement */
+#line 3769 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11118 "MachineIndependent/glslang_tab.cpp"
+#line 11160 "MachineIndependent/glslang_tab.cpp"
break;
- case 564: /* simple_statement: expression_statement */
-#line 3750 "MachineIndependent/glslang.y"
+ case 566: /* simple_statement: expression_statement */
+#line 3770 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11124 "MachineIndependent/glslang_tab.cpp"
+#line 11166 "MachineIndependent/glslang_tab.cpp"
break;
- case 565: /* simple_statement: selection_statement */
-#line 3751 "MachineIndependent/glslang.y"
+ case 567: /* simple_statement: selection_statement */
+#line 3771 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11130 "MachineIndependent/glslang_tab.cpp"
+#line 11172 "MachineIndependent/glslang_tab.cpp"
break;
- case 566: /* simple_statement: switch_statement */
-#line 3752 "MachineIndependent/glslang.y"
+ case 568: /* simple_statement: switch_statement */
+#line 3772 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11136 "MachineIndependent/glslang_tab.cpp"
+#line 11178 "MachineIndependent/glslang_tab.cpp"
break;
- case 567: /* simple_statement: case_label */
-#line 3753 "MachineIndependent/glslang.y"
+ case 569: /* simple_statement: case_label */
+#line 3773 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11142 "MachineIndependent/glslang_tab.cpp"
+#line 11184 "MachineIndependent/glslang_tab.cpp"
break;
- case 568: /* simple_statement: iteration_statement */
-#line 3754 "MachineIndependent/glslang.y"
+ case 570: /* simple_statement: iteration_statement */
+#line 3774 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11148 "MachineIndependent/glslang_tab.cpp"
+#line 11190 "MachineIndependent/glslang_tab.cpp"
break;
- case 569: /* simple_statement: jump_statement */
-#line 3755 "MachineIndependent/glslang.y"
+ case 571: /* simple_statement: jump_statement */
+#line 3775 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11154 "MachineIndependent/glslang_tab.cpp"
+#line 11196 "MachineIndependent/glslang_tab.cpp"
break;
- case 570: /* simple_statement: demote_statement */
-#line 3757 "MachineIndependent/glslang.y"
+ case 572: /* simple_statement: demote_statement */
+#line 3777 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11160 "MachineIndependent/glslang_tab.cpp"
+#line 11202 "MachineIndependent/glslang_tab.cpp"
break;
- case 571: /* demote_statement: DEMOTE SEMICOLON */
-#line 3763 "MachineIndependent/glslang.y"
+ case 573: /* demote_statement: DEMOTE SEMICOLON */
+#line 3783 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote");
parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc);
}
-#line 11170 "MachineIndependent/glslang_tab.cpp"
+#line 11212 "MachineIndependent/glslang_tab.cpp"
break;
- case 572: /* compound_statement: LEFT_BRACE RIGHT_BRACE */
-#line 3772 "MachineIndependent/glslang.y"
+ case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */
+#line 3792 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = 0; }
-#line 11176 "MachineIndependent/glslang_tab.cpp"
+#line 11218 "MachineIndependent/glslang_tab.cpp"
break;
- case 573: /* $@5: %empty */
-#line 3773 "MachineIndependent/glslang.y"
+ case 575: /* $@5: %empty */
+#line 3793 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
-#line 11185 "MachineIndependent/glslang_tab.cpp"
+#line 11227 "MachineIndependent/glslang_tab.cpp"
break;
- case 574: /* $@6: %empty */
-#line 3777 "MachineIndependent/glslang.y"
+ case 576: /* $@6: %empty */
+#line 3797 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
-#line 11194 "MachineIndependent/glslang_tab.cpp"
+#line 11236 "MachineIndependent/glslang_tab.cpp"
break;
- case 575: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */
-#line 3781 "MachineIndependent/glslang.y"
+ case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */
+#line 3801 "MachineIndependent/glslang.y"
{
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
-#line 11204 "MachineIndependent/glslang_tab.cpp"
+#line 11246 "MachineIndependent/glslang_tab.cpp"
break;
- case 576: /* statement_no_new_scope: compound_statement_no_new_scope */
-#line 3789 "MachineIndependent/glslang.y"
+ case 578: /* statement_no_new_scope: compound_statement_no_new_scope */
+#line 3809 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11210 "MachineIndependent/glslang_tab.cpp"
+#line 11252 "MachineIndependent/glslang_tab.cpp"
break;
- case 577: /* statement_no_new_scope: simple_statement */
-#line 3790 "MachineIndependent/glslang.y"
+ case 579: /* statement_no_new_scope: simple_statement */
+#line 3810 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 11216 "MachineIndependent/glslang_tab.cpp"
+#line 11258 "MachineIndependent/glslang_tab.cpp"
break;
- case 578: /* $@7: %empty */
-#line 3794 "MachineIndependent/glslang.y"
+ case 580: /* $@7: %empty */
+#line 3814 "MachineIndependent/glslang.y"
{
++parseContext.controlFlowNestingLevel;
}
-#line 11224 "MachineIndependent/glslang_tab.cpp"
+#line 11266 "MachineIndependent/glslang_tab.cpp"
break;
- case 579: /* statement_scoped: $@7 compound_statement */
-#line 3797 "MachineIndependent/glslang.y"
+ case 581: /* statement_scoped: $@7 compound_statement */
+#line 3817 "MachineIndependent/glslang.y"
{
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11233 "MachineIndependent/glslang_tab.cpp"
+#line 11275 "MachineIndependent/glslang_tab.cpp"
break;
- case 580: /* $@8: %empty */
-#line 3801 "MachineIndependent/glslang.y"
+ case 582: /* $@8: %empty */
+#line 3821 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11243 "MachineIndependent/glslang_tab.cpp"
+#line 11285 "MachineIndependent/glslang_tab.cpp"
break;
- case 581: /* statement_scoped: $@8 simple_statement */
-#line 3806 "MachineIndependent/glslang.y"
+ case 583: /* statement_scoped: $@8 simple_statement */
+#line 3826 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11254 "MachineIndependent/glslang_tab.cpp"
+#line 11296 "MachineIndependent/glslang_tab.cpp"
break;
- case 582: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */
-#line 3815 "MachineIndependent/glslang.y"
+ case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */
+#line 3835 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
}
-#line 11262 "MachineIndependent/glslang_tab.cpp"
+#line 11304 "MachineIndependent/glslang_tab.cpp"
break;
- case 583: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */
-#line 3818 "MachineIndependent/glslang.y"
+ case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */
+#line 3838 "MachineIndependent/glslang.y"
{
if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate())
(yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode);
}
-#line 11272 "MachineIndependent/glslang_tab.cpp"
+#line 11314 "MachineIndependent/glslang_tab.cpp"
break;
- case 584: /* statement_list: statement */
-#line 3826 "MachineIndependent/glslang.y"
+ case 586: /* statement_list: statement */
+#line 3846 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
@@ -11281,11 +11323,11 @@ yyreduce:
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
-#line 11285 "MachineIndependent/glslang_tab.cpp"
+#line 11327 "MachineIndependent/glslang_tab.cpp"
break;
- case 585: /* statement_list: statement_list statement */
-#line 3834 "MachineIndependent/glslang.y"
+ case 587: /* statement_list: statement_list statement */
+#line 3854 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -11294,77 +11336,77 @@ yyreduce:
} else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 11298 "MachineIndependent/glslang_tab.cpp"
+#line 11340 "MachineIndependent/glslang_tab.cpp"
break;
- case 586: /* expression_statement: SEMICOLON */
-#line 3845 "MachineIndependent/glslang.y"
+ case 588: /* expression_statement: SEMICOLON */
+#line 3865 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = 0; }
-#line 11304 "MachineIndependent/glslang_tab.cpp"
+#line 11346 "MachineIndependent/glslang_tab.cpp"
break;
- case 587: /* expression_statement: expression SEMICOLON */
-#line 3846 "MachineIndependent/glslang.y"
+ case 589: /* expression_statement: expression SEMICOLON */
+#line 3866 "MachineIndependent/glslang.y"
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 11310 "MachineIndependent/glslang_tab.cpp"
+#line 11352 "MachineIndependent/glslang_tab.cpp"
break;
- case 588: /* selection_statement: selection_statement_nonattributed */
-#line 3850 "MachineIndependent/glslang.y"
+ case 590: /* selection_statement: selection_statement_nonattributed */
+#line 3870 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11318 "MachineIndependent/glslang_tab.cpp"
+#line 11360 "MachineIndependent/glslang_tab.cpp"
break;
- case 589: /* selection_statement: attribute selection_statement_nonattributed */
-#line 3854 "MachineIndependent/glslang.y"
+ case 591: /* selection_statement: attribute selection_statement_nonattributed */
+#line 3874 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11328 "MachineIndependent/glslang_tab.cpp"
+#line 11370 "MachineIndependent/glslang_tab.cpp"
break;
- case 590: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */
-#line 3862 "MachineIndependent/glslang.y"
+ case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */
+#line 3882 "MachineIndependent/glslang.y"
{
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode));
(yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc);
}
-#line 11337 "MachineIndependent/glslang_tab.cpp"
+#line 11379 "MachineIndependent/glslang_tab.cpp"
break;
- case 591: /* selection_rest_statement: statement_scoped ELSE statement_scoped */
-#line 3869 "MachineIndependent/glslang.y"
+ case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */
+#line 3889 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
-#line 11346 "MachineIndependent/glslang_tab.cpp"
+#line 11388 "MachineIndependent/glslang_tab.cpp"
break;
- case 592: /* selection_rest_statement: statement_scoped */
-#line 3873 "MachineIndependent/glslang.y"
+ case 594: /* selection_rest_statement: statement_scoped */
+#line 3893 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 11355 "MachineIndependent/glslang_tab.cpp"
+#line 11397 "MachineIndependent/glslang_tab.cpp"
break;
- case 593: /* condition: expression */
-#line 3881 "MachineIndependent/glslang.y"
+ case 595: /* condition: expression */
+#line 3901 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
-#line 11364 "MachineIndependent/glslang_tab.cpp"
+#line 11406 "MachineIndependent/glslang_tab.cpp"
break;
- case 594: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */
-#line 3885 "MachineIndependent/glslang.y"
+ case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */
+#line 3905 "MachineIndependent/glslang.y"
{
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
@@ -11375,29 +11417,29 @@ yyreduce:
else
(yyval.interm.intermTypedNode) = 0;
}
-#line 11379 "MachineIndependent/glslang_tab.cpp"
+#line 11421 "MachineIndependent/glslang_tab.cpp"
break;
- case 595: /* switch_statement: switch_statement_nonattributed */
-#line 3898 "MachineIndependent/glslang.y"
+ case 597: /* switch_statement: switch_statement_nonattributed */
+#line 3918 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11387 "MachineIndependent/glslang_tab.cpp"
+#line 11429 "MachineIndependent/glslang_tab.cpp"
break;
- case 596: /* switch_statement: attribute switch_statement_nonattributed */
-#line 3902 "MachineIndependent/glslang.y"
+ case 598: /* switch_statement: attribute switch_statement_nonattributed */
+#line 3922 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11397 "MachineIndependent/glslang_tab.cpp"
+#line 11439 "MachineIndependent/glslang_tab.cpp"
break;
- case 597: /* $@9: %empty */
-#line 3910 "MachineIndependent/glslang.y"
+ case 599: /* $@9: %empty */
+#line 3930 "MachineIndependent/glslang.y"
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -11406,11 +11448,11 @@ yyreduce:
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
-#line 11410 "MachineIndependent/glslang_tab.cpp"
+#line 11452 "MachineIndependent/glslang_tab.cpp"
break;
- case 598: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */
-#line 3918 "MachineIndependent/glslang.y"
+ case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */
+#line 3938 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0);
delete parseContext.switchSequenceStack.back();
@@ -11420,27 +11462,27 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11424 "MachineIndependent/glslang_tab.cpp"
+#line 11466 "MachineIndependent/glslang_tab.cpp"
break;
- case 599: /* switch_statement_list: %empty */
-#line 3930 "MachineIndependent/glslang.y"
+ case 601: /* switch_statement_list: %empty */
+#line 3950 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
}
-#line 11432 "MachineIndependent/glslang_tab.cpp"
+#line 11474 "MachineIndependent/glslang_tab.cpp"
break;
- case 600: /* switch_statement_list: statement_list */
-#line 3933 "MachineIndependent/glslang.y"
+ case 602: /* switch_statement_list: statement_list */
+#line 3953 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11440 "MachineIndependent/glslang_tab.cpp"
+#line 11482 "MachineIndependent/glslang_tab.cpp"
break;
- case 601: /* case_label: CASE expression COLON */
-#line 3939 "MachineIndependent/glslang.y"
+ case 603: /* case_label: CASE expression COLON */
+#line 3959 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -11453,11 +11495,11 @@ yyreduce:
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
-#line 11457 "MachineIndependent/glslang_tab.cpp"
+#line 11499 "MachineIndependent/glslang_tab.cpp"
break;
- case 602: /* case_label: DEFAULT COLON */
-#line 3951 "MachineIndependent/glslang.y"
+ case 604: /* case_label: DEFAULT COLON */
+#line 3971 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -11467,29 +11509,29 @@ yyreduce:
else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
-#line 11471 "MachineIndependent/glslang_tab.cpp"
+#line 11513 "MachineIndependent/glslang_tab.cpp"
break;
- case 603: /* iteration_statement: iteration_statement_nonattributed */
-#line 3963 "MachineIndependent/glslang.y"
+ case 605: /* iteration_statement: iteration_statement_nonattributed */
+#line 3983 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11479 "MachineIndependent/glslang_tab.cpp"
+#line 11521 "MachineIndependent/glslang_tab.cpp"
break;
- case 604: /* iteration_statement: attribute iteration_statement_nonattributed */
-#line 3967 "MachineIndependent/glslang.y"
+ case 606: /* iteration_statement: attribute iteration_statement_nonattributed */
+#line 3987 "MachineIndependent/glslang.y"
{
parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11489 "MachineIndependent/glslang_tab.cpp"
+#line 11531 "MachineIndependent/glslang_tab.cpp"
break;
- case 605: /* $@10: %empty */
-#line 3975 "MachineIndependent/glslang.y"
+ case 607: /* $@10: %empty */
+#line 3995 "MachineIndependent/glslang.y"
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -11498,11 +11540,11 @@ yyreduce:
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11502 "MachineIndependent/glslang_tab.cpp"
+#line 11544 "MachineIndependent/glslang_tab.cpp"
break;
- case 606: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */
-#line 3983 "MachineIndependent/glslang.y"
+ case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */
+#line 4003 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc);
@@ -11510,22 +11552,22 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11514 "MachineIndependent/glslang_tab.cpp"
+#line 11556 "MachineIndependent/glslang_tab.cpp"
break;
- case 607: /* $@11: %empty */
-#line 3990 "MachineIndependent/glslang.y"
+ case 609: /* $@11: %empty */
+#line 4010 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11525 "MachineIndependent/glslang_tab.cpp"
+#line 11567 "MachineIndependent/glslang_tab.cpp"
break;
- case 608: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */
-#line 3996 "MachineIndependent/glslang.y"
+ case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */
+#line 4016 "MachineIndependent/glslang.y"
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -11538,22 +11580,22 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11542 "MachineIndependent/glslang_tab.cpp"
+#line 11584 "MachineIndependent/glslang_tab.cpp"
break;
- case 609: /* $@12: %empty */
-#line 4008 "MachineIndependent/glslang.y"
+ case 611: /* $@12: %empty */
+#line 4028 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 11553 "MachineIndependent/glslang_tab.cpp"
+#line 11595 "MachineIndependent/glslang_tab.cpp"
break;
- case 610: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */
-#line 4014 "MachineIndependent/glslang.y"
+ case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */
+#line 4034 "MachineIndependent/glslang.y"
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -11566,81 +11608,81 @@ yyreduce:
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 11570 "MachineIndependent/glslang_tab.cpp"
+#line 11612 "MachineIndependent/glslang_tab.cpp"
break;
- case 611: /* for_init_statement: expression_statement */
-#line 4029 "MachineIndependent/glslang.y"
+ case 613: /* for_init_statement: expression_statement */
+#line 4049 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11578 "MachineIndependent/glslang_tab.cpp"
+#line 11620 "MachineIndependent/glslang_tab.cpp"
break;
- case 612: /* for_init_statement: declaration_statement */
-#line 4032 "MachineIndependent/glslang.y"
+ case 614: /* for_init_statement: declaration_statement */
+#line 4052 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11586 "MachineIndependent/glslang_tab.cpp"
+#line 11628 "MachineIndependent/glslang_tab.cpp"
break;
- case 613: /* conditionopt: condition */
-#line 4038 "MachineIndependent/glslang.y"
+ case 615: /* conditionopt: condition */
+#line 4058 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 11594 "MachineIndependent/glslang_tab.cpp"
+#line 11636 "MachineIndependent/glslang_tab.cpp"
break;
- case 614: /* conditionopt: %empty */
-#line 4041 "MachineIndependent/glslang.y"
+ case 616: /* conditionopt: %empty */
+#line 4061 "MachineIndependent/glslang.y"
{
(yyval.interm.intermTypedNode) = 0;
}
-#line 11602 "MachineIndependent/glslang_tab.cpp"
+#line 11644 "MachineIndependent/glslang_tab.cpp"
break;
- case 615: /* for_rest_statement: conditionopt SEMICOLON */
-#line 4047 "MachineIndependent/glslang.y"
+ case 617: /* for_rest_statement: conditionopt SEMICOLON */
+#line 4067 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 11611 "MachineIndependent/glslang_tab.cpp"
+#line 11653 "MachineIndependent/glslang_tab.cpp"
break;
- case 616: /* for_rest_statement: conditionopt SEMICOLON expression */
-#line 4051 "MachineIndependent/glslang.y"
+ case 618: /* for_rest_statement: conditionopt SEMICOLON expression */
+#line 4071 "MachineIndependent/glslang.y"
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
-#line 11620 "MachineIndependent/glslang_tab.cpp"
+#line 11662 "MachineIndependent/glslang_tab.cpp"
break;
- case 617: /* jump_statement: CONTINUE SEMICOLON */
-#line 4058 "MachineIndependent/glslang.y"
+ case 619: /* jump_statement: CONTINUE SEMICOLON */
+#line 4078 "MachineIndependent/glslang.y"
{
if (parseContext.loopNestingLevel <= 0)
parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc);
}
-#line 11630 "MachineIndependent/glslang_tab.cpp"
+#line 11672 "MachineIndependent/glslang_tab.cpp"
break;
- case 618: /* jump_statement: BREAK SEMICOLON */
-#line 4063 "MachineIndependent/glslang.y"
+ case 620: /* jump_statement: BREAK SEMICOLON */
+#line 4083 "MachineIndependent/glslang.y"
{
if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0)
parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", "");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc);
}
-#line 11640 "MachineIndependent/glslang_tab.cpp"
+#line 11682 "MachineIndependent/glslang_tab.cpp"
break;
- case 619: /* jump_statement: RETURN SEMICOLON */
-#line 4068 "MachineIndependent/glslang.y"
+ case 621: /* jump_statement: RETURN SEMICOLON */
+#line 4088 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -11648,101 +11690,101 @@ yyreduce:
if (parseContext.inMain)
parseContext.postEntryPointReturn = true;
}
-#line 11652 "MachineIndependent/glslang_tab.cpp"
+#line 11694 "MachineIndependent/glslang_tab.cpp"
break;
- case 620: /* jump_statement: RETURN expression SEMICOLON */
-#line 4075 "MachineIndependent/glslang.y"
+ case 622: /* jump_statement: RETURN expression SEMICOLON */
+#line 4095 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
-#line 11660 "MachineIndependent/glslang_tab.cpp"
+#line 11702 "MachineIndependent/glslang_tab.cpp"
break;
- case 621: /* jump_statement: DISCARD SEMICOLON */
-#line 4078 "MachineIndependent/glslang.y"
+ case 623: /* jump_statement: DISCARD SEMICOLON */
+#line 4098 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
-#line 11669 "MachineIndependent/glslang_tab.cpp"
+#line 11711 "MachineIndependent/glslang_tab.cpp"
break;
- case 622: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */
-#line 4082 "MachineIndependent/glslang.y"
+ case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */
+#line 4102 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc);
}
-#line 11678 "MachineIndependent/glslang_tab.cpp"
+#line 11720 "MachineIndependent/glslang_tab.cpp"
break;
- case 623: /* jump_statement: TERMINATE_RAY SEMICOLON */
-#line 4087 "MachineIndependent/glslang.y"
+ case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */
+#line 4107 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc);
}
-#line 11687 "MachineIndependent/glslang_tab.cpp"
+#line 11729 "MachineIndependent/glslang_tab.cpp"
break;
- case 624: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */
-#line 4091 "MachineIndependent/glslang.y"
+ case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */
+#line 4111 "MachineIndependent/glslang.y"
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc);
}
-#line 11696 "MachineIndependent/glslang_tab.cpp"
+#line 11738 "MachineIndependent/glslang_tab.cpp"
break;
- case 625: /* translation_unit: external_declaration */
-#line 4101 "MachineIndependent/glslang.y"
+ case 627: /* translation_unit: external_declaration */
+#line 4121 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 11705 "MachineIndependent/glslang_tab.cpp"
+#line 11747 "MachineIndependent/glslang_tab.cpp"
break;
- case 626: /* translation_unit: translation_unit external_declaration */
-#line 4105 "MachineIndependent/glslang.y"
+ case 628: /* translation_unit: translation_unit external_declaration */
+#line 4125 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermNode) != nullptr) {
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
}
-#line 11716 "MachineIndependent/glslang_tab.cpp"
+#line 11758 "MachineIndependent/glslang_tab.cpp"
break;
- case 627: /* external_declaration: function_definition */
-#line 4114 "MachineIndependent/glslang.y"
+ case 629: /* external_declaration: function_definition */
+#line 4134 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11724 "MachineIndependent/glslang_tab.cpp"
+#line 11766 "MachineIndependent/glslang_tab.cpp"
break;
- case 628: /* external_declaration: declaration */
-#line 4117 "MachineIndependent/glslang.y"
+ case 630: /* external_declaration: declaration */
+#line 4137 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 11732 "MachineIndependent/glslang_tab.cpp"
+#line 11774 "MachineIndependent/glslang_tab.cpp"
break;
- case 629: /* external_declaration: SEMICOLON */
-#line 4121 "MachineIndependent/glslang.y"
+ case 631: /* external_declaration: SEMICOLON */
+#line 4141 "MachineIndependent/glslang.y"
{
parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon");
parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon");
(yyval.interm.intermNode) = nullptr;
}
-#line 11742 "MachineIndependent/glslang_tab.cpp"
+#line 11784 "MachineIndependent/glslang_tab.cpp"
break;
- case 630: /* $@13: %empty */
-#line 4130 "MachineIndependent/glslang.y"
+ case 632: /* $@13: %empty */
+#line 4150 "MachineIndependent/glslang.y"
{
(yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */);
(yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function);
@@ -11755,11 +11797,11 @@ yyreduce:
++parseContext.statementNestingLevel;
}
}
-#line 11759 "MachineIndependent/glslang_tab.cpp"
+#line 11801 "MachineIndependent/glslang_tab.cpp"
break;
- case 631: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */
-#line 4142 "MachineIndependent/glslang.y"
+ case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */
+#line 4162 "MachineIndependent/glslang.y"
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -11786,228 +11828,228 @@ yyreduce:
--parseContext.statementNestingLevel;
}
}
-#line 11790 "MachineIndependent/glslang_tab.cpp"
+#line 11832 "MachineIndependent/glslang_tab.cpp"
break;
- case 632: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */
-#line 4172 "MachineIndependent/glslang.y"
+ case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */
+#line 4192 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
}
-#line 11798 "MachineIndependent/glslang_tab.cpp"
+#line 11840 "MachineIndependent/glslang_tab.cpp"
break;
- case 633: /* attribute_list: single_attribute */
-#line 4177 "MachineIndependent/glslang.y"
+ case 635: /* attribute_list: single_attribute */
+#line 4197 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = (yyvsp[0].interm.attributes);
}
-#line 11806 "MachineIndependent/glslang_tab.cpp"
+#line 11848 "MachineIndependent/glslang_tab.cpp"
break;
- case 634: /* attribute_list: attribute_list COMMA single_attribute */
-#line 4180 "MachineIndependent/glslang.y"
+ case 636: /* attribute_list: attribute_list COMMA single_attribute */
+#line 4200 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
}
-#line 11814 "MachineIndependent/glslang_tab.cpp"
+#line 11856 "MachineIndependent/glslang_tab.cpp"
break;
- case 635: /* single_attribute: IDENTIFIER */
-#line 4185 "MachineIndependent/glslang.y"
+ case 637: /* single_attribute: IDENTIFIER */
+#line 4205 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
}
-#line 11822 "MachineIndependent/glslang_tab.cpp"
+#line 11864 "MachineIndependent/glslang_tab.cpp"
break;
- case 636: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */
-#line 4188 "MachineIndependent/glslang.y"
+ case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */
+#line 4208 "MachineIndependent/glslang.y"
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
}
-#line 11830 "MachineIndependent/glslang_tab.cpp"
+#line 11872 "MachineIndependent/glslang_tab.cpp"
break;
- case 637: /* spirv_requirements_list: spirv_requirements_parameter */
-#line 4195 "MachineIndependent/glslang.y"
+ case 639: /* spirv_requirements_list: spirv_requirements_parameter */
+#line 4215 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq);
}
-#line 11838 "MachineIndependent/glslang_tab.cpp"
+#line 11880 "MachineIndependent/glslang_tab.cpp"
break;
- case 638: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */
-#line 4198 "MachineIndependent/glslang.y"
+ case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */
+#line 4218 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq));
}
-#line 11846 "MachineIndependent/glslang_tab.cpp"
+#line 11888 "MachineIndependent/glslang_tab.cpp"
break;
- case 639: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */
-#line 4203 "MachineIndependent/glslang.y"
+ case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */
+#line 4223 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr);
}
-#line 11854 "MachineIndependent/glslang_tab.cpp"
+#line 11896 "MachineIndependent/glslang_tab.cpp"
break;
- case 640: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */
-#line 4206 "MachineIndependent/glslang.y"
+ case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */
+#line 4226 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 11862 "MachineIndependent/glslang_tab.cpp"
+#line 11904 "MachineIndependent/glslang_tab.cpp"
break;
- case 641: /* spirv_extension_list: STRING_LITERAL */
-#line 4211 "MachineIndependent/glslang.y"
+ case 643: /* spirv_extension_list: STRING_LITERAL */
+#line 4231 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 11870 "MachineIndependent/glslang_tab.cpp"
+#line 11912 "MachineIndependent/glslang_tab.cpp"
break;
- case 642: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */
-#line 4214 "MachineIndependent/glslang.y"
+ case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */
+#line 4234 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 11878 "MachineIndependent/glslang_tab.cpp"
+#line 11920 "MachineIndependent/glslang_tab.cpp"
break;
- case 643: /* spirv_capability_list: INTCONSTANT */
-#line 4219 "MachineIndependent/glslang.y"
+ case 645: /* spirv_capability_list: INTCONSTANT */
+#line 4239 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
}
-#line 11886 "MachineIndependent/glslang_tab.cpp"
+#line 11928 "MachineIndependent/glslang_tab.cpp"
break;
- case 644: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */
-#line 4222 "MachineIndependent/glslang.y"
+ case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */
+#line 4242 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
}
-#line 11894 "MachineIndependent/glslang_tab.cpp"
+#line 11936 "MachineIndependent/glslang_tab.cpp"
break;
- case 645: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4227 "MachineIndependent/glslang.y"
+ case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
+#line 4247 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
(yyval.interm.intermNode) = 0;
}
-#line 11903 "MachineIndependent/glslang_tab.cpp"
+#line 11945 "MachineIndependent/glslang_tab.cpp"
break;
- case 646: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4231 "MachineIndependent/glslang.y"
+ case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
+#line 4251 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
(yyval.interm.intermNode) = 0;
}
-#line 11913 "MachineIndependent/glslang_tab.cpp"
+#line 11955 "MachineIndependent/glslang_tab.cpp"
break;
- case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
-#line 4236 "MachineIndependent/glslang.y"
+ case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
+#line 4256 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11922 "MachineIndependent/glslang_tab.cpp"
+#line 11964 "MachineIndependent/glslang_tab.cpp"
break;
- case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
-#line 4240 "MachineIndependent/glslang.y"
+ case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */
+#line 4260 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11932 "MachineIndependent/glslang_tab.cpp"
+#line 11974 "MachineIndependent/glslang_tab.cpp"
break;
- case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
-#line 4245 "MachineIndependent/glslang.y"
+ case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
+#line 4265 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11941 "MachineIndependent/glslang_tab.cpp"
+#line 11983 "MachineIndependent/glslang_tab.cpp"
break;
- case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
-#line 4249 "MachineIndependent/glslang.y"
+ case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */
+#line 4269 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
(yyval.interm.intermNode) = 0;
}
-#line 11951 "MachineIndependent/glslang_tab.cpp"
+#line 11993 "MachineIndependent/glslang_tab.cpp"
break;
- case 651: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */
-#line 4256 "MachineIndependent/glslang.y"
+ case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */
+#line 4276 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 11959 "MachineIndependent/glslang_tab.cpp"
+#line 12001 "MachineIndependent/glslang_tab.cpp"
break;
- case 652: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */
-#line 4259 "MachineIndependent/glslang.y"
+ case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */
+#line 4279 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 11967 "MachineIndependent/glslang_tab.cpp"
+#line 12009 "MachineIndependent/glslang_tab.cpp"
break;
- case 653: /* spirv_execution_mode_parameter: FLOATCONSTANT */
-#line 4264 "MachineIndependent/glslang.y"
+ case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */
+#line 4284 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 11975 "MachineIndependent/glslang_tab.cpp"
+#line 12017 "MachineIndependent/glslang_tab.cpp"
break;
- case 654: /* spirv_execution_mode_parameter: INTCONSTANT */
-#line 4267 "MachineIndependent/glslang.y"
+ case 656: /* spirv_execution_mode_parameter: INTCONSTANT */
+#line 4287 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 11983 "MachineIndependent/glslang_tab.cpp"
+#line 12025 "MachineIndependent/glslang_tab.cpp"
break;
- case 655: /* spirv_execution_mode_parameter: UINTCONSTANT */
-#line 4270 "MachineIndependent/glslang.y"
+ case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */
+#line 4290 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 11991 "MachineIndependent/glslang_tab.cpp"
+#line 12033 "MachineIndependent/glslang_tab.cpp"
break;
- case 656: /* spirv_execution_mode_parameter: BOOLCONSTANT */
-#line 4273 "MachineIndependent/glslang.y"
+ case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */
+#line 4293 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 11999 "MachineIndependent/glslang_tab.cpp"
+#line 12041 "MachineIndependent/glslang_tab.cpp"
break;
- case 657: /* spirv_execution_mode_parameter: STRING_LITERAL */
-#line 4276 "MachineIndependent/glslang.y"
+ case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */
+#line 4296 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
}
-#line 12007 "MachineIndependent/glslang_tab.cpp"
+#line 12049 "MachineIndependent/glslang_tab.cpp"
break;
- case 658: /* spirv_execution_mode_id_parameter_list: constant_expression */
-#line 4281 "MachineIndependent/glslang.y"
+ case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */
+#line 4301 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -12017,11 +12059,11 @@ yyreduce:
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode));
}
-#line 12021 "MachineIndependent/glslang_tab.cpp"
+#line 12063 "MachineIndependent/glslang_tab.cpp"
break;
- case 659: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */
-#line 4290 "MachineIndependent/glslang.y"
+ case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */
+#line 4310 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
(yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
@@ -12031,343 +12073,351 @@ yyreduce:
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 12035 "MachineIndependent/glslang_tab.cpp"
+#line 12077 "MachineIndependent/glslang_tab.cpp"
break;
- case 660: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4301 "MachineIndependent/glslang.y"
+ case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */
+#line 4321 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc);
(yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
(yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
}
-#line 12045 "MachineIndependent/glslang_tab.cpp"
+#line 12087 "MachineIndependent/glslang_tab.cpp"
break;
- case 661: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4306 "MachineIndependent/glslang.y"
+ case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
+#line 4326 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
(yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
}
-#line 12056 "MachineIndependent/glslang_tab.cpp"
+#line 12098 "MachineIndependent/glslang_tab.cpp"
break;
- case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
-#line 4314 "MachineIndependent/glslang.y"
+ case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */
+#line 4334 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
}
-#line 12065 "MachineIndependent/glslang_tab.cpp"
+#line 12107 "MachineIndependent/glslang_tab.cpp"
break;
- case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
-#line 4318 "MachineIndependent/glslang.y"
+ case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */
+#line 4338 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
}
-#line 12075 "MachineIndependent/glslang_tab.cpp"
+#line 12117 "MachineIndependent/glslang_tab.cpp"
break;
- case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
-#line 4323 "MachineIndependent/glslang.y"
+ case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
+#line 4343 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12084 "MachineIndependent/glslang_tab.cpp"
+#line 12126 "MachineIndependent/glslang_tab.cpp"
break;
- case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
-#line 4327 "MachineIndependent/glslang.y"
+ case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */
+#line 4347 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12094 "MachineIndependent/glslang_tab.cpp"
+#line 12136 "MachineIndependent/glslang_tab.cpp"
break;
- case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
-#line 4332 "MachineIndependent/glslang.y"
+ case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
+#line 4352 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12103 "MachineIndependent/glslang_tab.cpp"
+#line 12145 "MachineIndependent/glslang_tab.cpp"
break;
- case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
-#line 4336 "MachineIndependent/glslang.y"
+ case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */
+#line 4356 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12113 "MachineIndependent/glslang_tab.cpp"
+#line 12155 "MachineIndependent/glslang_tab.cpp"
break;
- case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
-#line 4341 "MachineIndependent/glslang.y"
+ case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
+#line 4361 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc);
(yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12122 "MachineIndependent/glslang_tab.cpp"
+#line 12164 "MachineIndependent/glslang_tab.cpp"
break;
- case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
-#line 4345 "MachineIndependent/glslang.y"
+ case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */
+#line 4365 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc);
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
}
-#line 12132 "MachineIndependent/glslang_tab.cpp"
+#line 12174 "MachineIndependent/glslang_tab.cpp"
break;
- case 670: /* spirv_decorate_parameter_list: spirv_decorate_parameter */
-#line 4352 "MachineIndependent/glslang.y"
+ case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */
+#line 4372 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 12140 "MachineIndependent/glslang_tab.cpp"
+#line 12182 "MachineIndependent/glslang_tab.cpp"
break;
- case 671: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */
-#line 4355 "MachineIndependent/glslang.y"
+ case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */
+#line 4375 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 12148 "MachineIndependent/glslang_tab.cpp"
+#line 12190 "MachineIndependent/glslang_tab.cpp"
break;
- case 672: /* spirv_decorate_parameter: FLOATCONSTANT */
-#line 4360 "MachineIndependent/glslang.y"
+ case 674: /* spirv_decorate_parameter: FLOATCONSTANT */
+#line 4380 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 12156 "MachineIndependent/glslang_tab.cpp"
+#line 12198 "MachineIndependent/glslang_tab.cpp"
break;
- case 673: /* spirv_decorate_parameter: INTCONSTANT */
-#line 4363 "MachineIndependent/glslang.y"
+ case 675: /* spirv_decorate_parameter: INTCONSTANT */
+#line 4383 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 12164 "MachineIndependent/glslang_tab.cpp"
+#line 12206 "MachineIndependent/glslang_tab.cpp"
break;
- case 674: /* spirv_decorate_parameter: UINTCONSTANT */
-#line 4366 "MachineIndependent/glslang.y"
+ case 676: /* spirv_decorate_parameter: UINTCONSTANT */
+#line 4386 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 12172 "MachineIndependent/glslang_tab.cpp"
+#line 12214 "MachineIndependent/glslang_tab.cpp"
break;
- case 675: /* spirv_decorate_parameter: BOOLCONSTANT */
-#line 4369 "MachineIndependent/glslang.y"
+ case 677: /* spirv_decorate_parameter: BOOLCONSTANT */
+#line 4389 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 12180 "MachineIndependent/glslang_tab.cpp"
+#line 12222 "MachineIndependent/glslang_tab.cpp"
break;
- case 676: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */
-#line 4374 "MachineIndependent/glslang.y"
+ case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */
+#line 4394 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
}
-#line 12188 "MachineIndependent/glslang_tab.cpp"
+#line 12230 "MachineIndependent/glslang_tab.cpp"
break;
- case 677: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */
-#line 4377 "MachineIndependent/glslang.y"
+ case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */
+#line 4397 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 12196 "MachineIndependent/glslang_tab.cpp"
+#line 12238 "MachineIndependent/glslang_tab.cpp"
break;
- case 678: /* spirv_decorate_id_parameter: variable_identifier */
-#line 4382 "MachineIndependent/glslang.y"
+ case 680: /* spirv_decorate_id_parameter: variable_identifier */
+#line 4402 "MachineIndependent/glslang.y"
{
if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode())
(yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode);
else
parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", "");
}
-#line 12207 "MachineIndependent/glslang_tab.cpp"
+#line 12249 "MachineIndependent/glslang_tab.cpp"
break;
- case 679: /* spirv_decorate_id_parameter: FLOATCONSTANT */
-#line 4388 "MachineIndependent/glslang.y"
+ case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */
+#line 4408 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
}
-#line 12215 "MachineIndependent/glslang_tab.cpp"
+#line 12257 "MachineIndependent/glslang_tab.cpp"
break;
- case 680: /* spirv_decorate_id_parameter: INTCONSTANT */
-#line 4391 "MachineIndependent/glslang.y"
+ case 682: /* spirv_decorate_id_parameter: INTCONSTANT */
+#line 4411 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 12223 "MachineIndependent/glslang_tab.cpp"
+#line 12265 "MachineIndependent/glslang_tab.cpp"
break;
- case 681: /* spirv_decorate_id_parameter: UINTCONSTANT */
-#line 4394 "MachineIndependent/glslang.y"
+ case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */
+#line 4414 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 12231 "MachineIndependent/glslang_tab.cpp"
+#line 12273 "MachineIndependent/glslang_tab.cpp"
break;
- case 682: /* spirv_decorate_id_parameter: BOOLCONSTANT */
-#line 4397 "MachineIndependent/glslang.y"
+ case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */
+#line 4417 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 12239 "MachineIndependent/glslang_tab.cpp"
+#line 12281 "MachineIndependent/glslang_tab.cpp"
break;
- case 683: /* spirv_decorate_string_parameter_list: STRING_LITERAL */
-#line 4402 "MachineIndependent/glslang.y"
+ case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */
+#line 4422 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(
parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 12248 "MachineIndependent/glslang_tab.cpp"
+#line 12290 "MachineIndependent/glslang_tab.cpp"
break;
- case 684: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */
-#line 4406 "MachineIndependent/glslang.y"
+ case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */
+#line 4426 "MachineIndependent/glslang.y"
{
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
}
-#line 12256 "MachineIndependent/glslang_tab.cpp"
+#line 12298 "MachineIndependent/glslang_tab.cpp"
break;
- case 685: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
-#line 4411 "MachineIndependent/glslang.y"
+ case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
+#line 4431 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
}
-#line 12265 "MachineIndependent/glslang_tab.cpp"
+#line 12307 "MachineIndependent/glslang_tab.cpp"
break;
- case 686: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
-#line 4415 "MachineIndependent/glslang.y"
+ case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */
+#line 4435 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
(yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
}
-#line 12275 "MachineIndependent/glslang_tab.cpp"
+#line 12317 "MachineIndependent/glslang_tab.cpp"
break;
- case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4420 "MachineIndependent/glslang.y"
+ case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4440 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
}
-#line 12284 "MachineIndependent/glslang_tab.cpp"
+#line 12326 "MachineIndependent/glslang_tab.cpp"
break;
- case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4424 "MachineIndependent/glslang.y"
+ case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4444 "MachineIndependent/glslang.y"
{
(yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
}
-#line 12294 "MachineIndependent/glslang_tab.cpp"
+#line 12336 "MachineIndependent/glslang_tab.cpp"
break;
- case 689: /* spirv_type_parameter_list: spirv_type_parameter */
-#line 4431 "MachineIndependent/glslang.y"
+ case 691: /* spirv_type_parameter_list: spirv_type_parameter */
+#line 4451 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams);
}
-#line 12302 "MachineIndependent/glslang_tab.cpp"
+#line 12344 "MachineIndependent/glslang_tab.cpp"
break;
- case 690: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */
-#line 4434 "MachineIndependent/glslang.y"
+ case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */
+#line 4454 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams));
}
-#line 12310 "MachineIndependent/glslang_tab.cpp"
+#line 12352 "MachineIndependent/glslang_tab.cpp"
break;
- case 691: /* spirv_type_parameter: constant_expression */
-#line 4439 "MachineIndependent/glslang.y"
+ case 693: /* spirv_type_parameter: constant_expression */
+#line 4459 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion());
}
-#line 12318 "MachineIndependent/glslang_tab.cpp"
+#line 12360 "MachineIndependent/glslang_tab.cpp"
break;
- case 692: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4444 "MachineIndependent/glslang.y"
+ case 694: /* spirv_type_parameter: type_specifier_nonarray */
+#line 4462 "MachineIndependent/glslang.y"
+ {
+ (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
+ }
+#line 12368 "MachineIndependent/glslang_tab.cpp"
+ break;
+
+ case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4467 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
}
-#line 12326 "MachineIndependent/glslang_tab.cpp"
+#line 12376 "MachineIndependent/glslang_tab.cpp"
break;
- case 693: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
-#line 4447 "MachineIndependent/glslang.y"
+ case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */
+#line 4470 "MachineIndependent/glslang.y"
{
parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
(yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
}
-#line 12335 "MachineIndependent/glslang_tab.cpp"
+#line 12385 "MachineIndependent/glslang_tab.cpp"
break;
- case 694: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */
-#line 4453 "MachineIndependent/glslang.y"
+ case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */
+#line 4476 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst);
}
-#line 12343 "MachineIndependent/glslang_tab.cpp"
+#line 12393 "MachineIndependent/glslang_tab.cpp"
break;
- case 695: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */
-#line 4456 "MachineIndependent/glslang.y"
+ case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */
+#line 4479 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst));
}
-#line 12351 "MachineIndependent/glslang_tab.cpp"
+#line 12401 "MachineIndependent/glslang_tab.cpp"
break;
- case 696: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */
-#line 4461 "MachineIndependent/glslang.y"
+ case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */
+#line 4484 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string);
}
-#line 12359 "MachineIndependent/glslang_tab.cpp"
+#line 12409 "MachineIndependent/glslang_tab.cpp"
break;
- case 697: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */
-#line 4464 "MachineIndependent/glslang.y"
+ case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */
+#line 4487 "MachineIndependent/glslang.y"
{
(yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i);
}
-#line 12367 "MachineIndependent/glslang_tab.cpp"
+#line 12417 "MachineIndependent/glslang_tab.cpp"
break;
-#line 12371 "MachineIndependent/glslang_tab.cpp"
+#line 12421 "MachineIndependent/glslang_tab.cpp"
default: break;
}
@@ -12591,5 +12641,5 @@ yyreturnlab:
return yyresult;
}
-#line 4469 "MachineIndependent/glslang.y"
+#line 4492 "MachineIndependent/glslang.y"
diff --git a/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h b/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
index b1c721df4b..39455f276d 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -217,304 +217,305 @@ extern int yydebug;
FCOOPMATNV = 418, /* FCOOPMATNV */
ICOOPMATNV = 419, /* ICOOPMATNV */
UCOOPMATNV = 420, /* UCOOPMATNV */
- HITOBJECTNV = 421, /* HITOBJECTNV */
- HITOBJECTATTRNV = 422, /* HITOBJECTATTRNV */
- SAMPLERCUBEARRAY = 423, /* SAMPLERCUBEARRAY */
- SAMPLERCUBEARRAYSHADOW = 424, /* SAMPLERCUBEARRAYSHADOW */
- ISAMPLERCUBEARRAY = 425, /* ISAMPLERCUBEARRAY */
- USAMPLERCUBEARRAY = 426, /* USAMPLERCUBEARRAY */
- SAMPLER1D = 427, /* SAMPLER1D */
- SAMPLER1DARRAY = 428, /* SAMPLER1DARRAY */
- SAMPLER1DARRAYSHADOW = 429, /* SAMPLER1DARRAYSHADOW */
- ISAMPLER1D = 430, /* ISAMPLER1D */
- SAMPLER1DSHADOW = 431, /* SAMPLER1DSHADOW */
- SAMPLER2DRECT = 432, /* SAMPLER2DRECT */
- SAMPLER2DRECTSHADOW = 433, /* SAMPLER2DRECTSHADOW */
- ISAMPLER2DRECT = 434, /* ISAMPLER2DRECT */
- USAMPLER2DRECT = 435, /* USAMPLER2DRECT */
- SAMPLERBUFFER = 436, /* SAMPLERBUFFER */
- ISAMPLERBUFFER = 437, /* ISAMPLERBUFFER */
- USAMPLERBUFFER = 438, /* USAMPLERBUFFER */
- SAMPLER2DMS = 439, /* SAMPLER2DMS */
- ISAMPLER2DMS = 440, /* ISAMPLER2DMS */
- USAMPLER2DMS = 441, /* USAMPLER2DMS */
- SAMPLER2DMSARRAY = 442, /* SAMPLER2DMSARRAY */
- ISAMPLER2DMSARRAY = 443, /* ISAMPLER2DMSARRAY */
- USAMPLER2DMSARRAY = 444, /* USAMPLER2DMSARRAY */
- SAMPLEREXTERNALOES = 445, /* SAMPLEREXTERNALOES */
- SAMPLEREXTERNAL2DY2YEXT = 446, /* SAMPLEREXTERNAL2DY2YEXT */
- ISAMPLER1DARRAY = 447, /* ISAMPLER1DARRAY */
- USAMPLER1D = 448, /* USAMPLER1D */
- USAMPLER1DARRAY = 449, /* USAMPLER1DARRAY */
- F16SAMPLER1D = 450, /* F16SAMPLER1D */
- F16SAMPLER2D = 451, /* F16SAMPLER2D */
- F16SAMPLER3D = 452, /* F16SAMPLER3D */
- F16SAMPLER2DRECT = 453, /* F16SAMPLER2DRECT */
- F16SAMPLERCUBE = 454, /* F16SAMPLERCUBE */
- F16SAMPLER1DARRAY = 455, /* F16SAMPLER1DARRAY */
- F16SAMPLER2DARRAY = 456, /* F16SAMPLER2DARRAY */
- F16SAMPLERCUBEARRAY = 457, /* F16SAMPLERCUBEARRAY */
- F16SAMPLERBUFFER = 458, /* F16SAMPLERBUFFER */
- F16SAMPLER2DMS = 459, /* F16SAMPLER2DMS */
- F16SAMPLER2DMSARRAY = 460, /* F16SAMPLER2DMSARRAY */
- F16SAMPLER1DSHADOW = 461, /* F16SAMPLER1DSHADOW */
- F16SAMPLER2DSHADOW = 462, /* F16SAMPLER2DSHADOW */
- F16SAMPLER1DARRAYSHADOW = 463, /* F16SAMPLER1DARRAYSHADOW */
- F16SAMPLER2DARRAYSHADOW = 464, /* F16SAMPLER2DARRAYSHADOW */
- F16SAMPLER2DRECTSHADOW = 465, /* F16SAMPLER2DRECTSHADOW */
- F16SAMPLERCUBESHADOW = 466, /* F16SAMPLERCUBESHADOW */
- F16SAMPLERCUBEARRAYSHADOW = 467, /* F16SAMPLERCUBEARRAYSHADOW */
- IMAGE1D = 468, /* IMAGE1D */
- IIMAGE1D = 469, /* IIMAGE1D */
- UIMAGE1D = 470, /* UIMAGE1D */
- IMAGE2D = 471, /* IMAGE2D */
- IIMAGE2D = 472, /* IIMAGE2D */
- UIMAGE2D = 473, /* UIMAGE2D */
- IMAGE3D = 474, /* IMAGE3D */
- IIMAGE3D = 475, /* IIMAGE3D */
- UIMAGE3D = 476, /* UIMAGE3D */
- IMAGE2DRECT = 477, /* IMAGE2DRECT */
- IIMAGE2DRECT = 478, /* IIMAGE2DRECT */
- UIMAGE2DRECT = 479, /* UIMAGE2DRECT */
- IMAGECUBE = 480, /* IMAGECUBE */
- IIMAGECUBE = 481, /* IIMAGECUBE */
- UIMAGECUBE = 482, /* UIMAGECUBE */
- IMAGEBUFFER = 483, /* IMAGEBUFFER */
- IIMAGEBUFFER = 484, /* IIMAGEBUFFER */
- UIMAGEBUFFER = 485, /* UIMAGEBUFFER */
- IMAGE1DARRAY = 486, /* IMAGE1DARRAY */
- IIMAGE1DARRAY = 487, /* IIMAGE1DARRAY */
- UIMAGE1DARRAY = 488, /* UIMAGE1DARRAY */
- IMAGE2DARRAY = 489, /* IMAGE2DARRAY */
- IIMAGE2DARRAY = 490, /* IIMAGE2DARRAY */
- UIMAGE2DARRAY = 491, /* UIMAGE2DARRAY */
- IMAGECUBEARRAY = 492, /* IMAGECUBEARRAY */
- IIMAGECUBEARRAY = 493, /* IIMAGECUBEARRAY */
- UIMAGECUBEARRAY = 494, /* UIMAGECUBEARRAY */
- IMAGE2DMS = 495, /* IMAGE2DMS */
- IIMAGE2DMS = 496, /* IIMAGE2DMS */
- UIMAGE2DMS = 497, /* UIMAGE2DMS */
- IMAGE2DMSARRAY = 498, /* IMAGE2DMSARRAY */
- IIMAGE2DMSARRAY = 499, /* IIMAGE2DMSARRAY */
- UIMAGE2DMSARRAY = 500, /* UIMAGE2DMSARRAY */
- F16IMAGE1D = 501, /* F16IMAGE1D */
- F16IMAGE2D = 502, /* F16IMAGE2D */
- F16IMAGE3D = 503, /* F16IMAGE3D */
- F16IMAGE2DRECT = 504, /* F16IMAGE2DRECT */
- F16IMAGECUBE = 505, /* F16IMAGECUBE */
- F16IMAGE1DARRAY = 506, /* F16IMAGE1DARRAY */
- F16IMAGE2DARRAY = 507, /* F16IMAGE2DARRAY */
- F16IMAGECUBEARRAY = 508, /* F16IMAGECUBEARRAY */
- F16IMAGEBUFFER = 509, /* F16IMAGEBUFFER */
- F16IMAGE2DMS = 510, /* F16IMAGE2DMS */
- F16IMAGE2DMSARRAY = 511, /* F16IMAGE2DMSARRAY */
- I64IMAGE1D = 512, /* I64IMAGE1D */
- U64IMAGE1D = 513, /* U64IMAGE1D */
- I64IMAGE2D = 514, /* I64IMAGE2D */
- U64IMAGE2D = 515, /* U64IMAGE2D */
- I64IMAGE3D = 516, /* I64IMAGE3D */
- U64IMAGE3D = 517, /* U64IMAGE3D */
- I64IMAGE2DRECT = 518, /* I64IMAGE2DRECT */
- U64IMAGE2DRECT = 519, /* U64IMAGE2DRECT */
- I64IMAGECUBE = 520, /* I64IMAGECUBE */
- U64IMAGECUBE = 521, /* U64IMAGECUBE */
- I64IMAGEBUFFER = 522, /* I64IMAGEBUFFER */
- U64IMAGEBUFFER = 523, /* U64IMAGEBUFFER */
- I64IMAGE1DARRAY = 524, /* I64IMAGE1DARRAY */
- U64IMAGE1DARRAY = 525, /* U64IMAGE1DARRAY */
- I64IMAGE2DARRAY = 526, /* I64IMAGE2DARRAY */
- U64IMAGE2DARRAY = 527, /* U64IMAGE2DARRAY */
- I64IMAGECUBEARRAY = 528, /* I64IMAGECUBEARRAY */
- U64IMAGECUBEARRAY = 529, /* U64IMAGECUBEARRAY */
- I64IMAGE2DMS = 530, /* I64IMAGE2DMS */
- U64IMAGE2DMS = 531, /* U64IMAGE2DMS */
- I64IMAGE2DMSARRAY = 532, /* I64IMAGE2DMSARRAY */
- U64IMAGE2DMSARRAY = 533, /* U64IMAGE2DMSARRAY */
- TEXTURECUBEARRAY = 534, /* TEXTURECUBEARRAY */
- ITEXTURECUBEARRAY = 535, /* ITEXTURECUBEARRAY */
- UTEXTURECUBEARRAY = 536, /* UTEXTURECUBEARRAY */
- TEXTURE1D = 537, /* TEXTURE1D */
- ITEXTURE1D = 538, /* ITEXTURE1D */
- UTEXTURE1D = 539, /* UTEXTURE1D */
- TEXTURE1DARRAY = 540, /* TEXTURE1DARRAY */
- ITEXTURE1DARRAY = 541, /* ITEXTURE1DARRAY */
- UTEXTURE1DARRAY = 542, /* UTEXTURE1DARRAY */
- TEXTURE2DRECT = 543, /* TEXTURE2DRECT */
- ITEXTURE2DRECT = 544, /* ITEXTURE2DRECT */
- UTEXTURE2DRECT = 545, /* UTEXTURE2DRECT */
- TEXTUREBUFFER = 546, /* TEXTUREBUFFER */
- ITEXTUREBUFFER = 547, /* ITEXTUREBUFFER */
- UTEXTUREBUFFER = 548, /* UTEXTUREBUFFER */
- TEXTURE2DMS = 549, /* TEXTURE2DMS */
- ITEXTURE2DMS = 550, /* ITEXTURE2DMS */
- UTEXTURE2DMS = 551, /* UTEXTURE2DMS */
- TEXTURE2DMSARRAY = 552, /* TEXTURE2DMSARRAY */
- ITEXTURE2DMSARRAY = 553, /* ITEXTURE2DMSARRAY */
- UTEXTURE2DMSARRAY = 554, /* UTEXTURE2DMSARRAY */
- F16TEXTURE1D = 555, /* F16TEXTURE1D */
- F16TEXTURE2D = 556, /* F16TEXTURE2D */
- F16TEXTURE3D = 557, /* F16TEXTURE3D */
- F16TEXTURE2DRECT = 558, /* F16TEXTURE2DRECT */
- F16TEXTURECUBE = 559, /* F16TEXTURECUBE */
- F16TEXTURE1DARRAY = 560, /* F16TEXTURE1DARRAY */
- F16TEXTURE2DARRAY = 561, /* F16TEXTURE2DARRAY */
- F16TEXTURECUBEARRAY = 562, /* F16TEXTURECUBEARRAY */
- F16TEXTUREBUFFER = 563, /* F16TEXTUREBUFFER */
- F16TEXTURE2DMS = 564, /* F16TEXTURE2DMS */
- F16TEXTURE2DMSARRAY = 565, /* F16TEXTURE2DMSARRAY */
- SUBPASSINPUT = 566, /* SUBPASSINPUT */
- SUBPASSINPUTMS = 567, /* SUBPASSINPUTMS */
- ISUBPASSINPUT = 568, /* ISUBPASSINPUT */
- ISUBPASSINPUTMS = 569, /* ISUBPASSINPUTMS */
- USUBPASSINPUT = 570, /* USUBPASSINPUT */
- USUBPASSINPUTMS = 571, /* USUBPASSINPUTMS */
- F16SUBPASSINPUT = 572, /* F16SUBPASSINPUT */
- F16SUBPASSINPUTMS = 573, /* F16SUBPASSINPUTMS */
- SPIRV_INSTRUCTION = 574, /* SPIRV_INSTRUCTION */
- SPIRV_EXECUTION_MODE = 575, /* SPIRV_EXECUTION_MODE */
- SPIRV_EXECUTION_MODE_ID = 576, /* SPIRV_EXECUTION_MODE_ID */
- SPIRV_DECORATE = 577, /* SPIRV_DECORATE */
- SPIRV_DECORATE_ID = 578, /* SPIRV_DECORATE_ID */
- SPIRV_DECORATE_STRING = 579, /* SPIRV_DECORATE_STRING */
- SPIRV_TYPE = 580, /* SPIRV_TYPE */
- SPIRV_STORAGE_CLASS = 581, /* SPIRV_STORAGE_CLASS */
- SPIRV_BY_REFERENCE = 582, /* SPIRV_BY_REFERENCE */
- SPIRV_LITERAL = 583, /* SPIRV_LITERAL */
- ATTACHMENTEXT = 584, /* ATTACHMENTEXT */
- IATTACHMENTEXT = 585, /* IATTACHMENTEXT */
- UATTACHMENTEXT = 586, /* UATTACHMENTEXT */
- LEFT_OP = 587, /* LEFT_OP */
- RIGHT_OP = 588, /* RIGHT_OP */
- INC_OP = 589, /* INC_OP */
- DEC_OP = 590, /* DEC_OP */
- LE_OP = 591, /* LE_OP */
- GE_OP = 592, /* GE_OP */
- EQ_OP = 593, /* EQ_OP */
- NE_OP = 594, /* NE_OP */
- AND_OP = 595, /* AND_OP */
- OR_OP = 596, /* OR_OP */
- XOR_OP = 597, /* XOR_OP */
- MUL_ASSIGN = 598, /* MUL_ASSIGN */
- DIV_ASSIGN = 599, /* DIV_ASSIGN */
- ADD_ASSIGN = 600, /* ADD_ASSIGN */
- MOD_ASSIGN = 601, /* MOD_ASSIGN */
- LEFT_ASSIGN = 602, /* LEFT_ASSIGN */
- RIGHT_ASSIGN = 603, /* RIGHT_ASSIGN */
- AND_ASSIGN = 604, /* AND_ASSIGN */
- XOR_ASSIGN = 605, /* XOR_ASSIGN */
- OR_ASSIGN = 606, /* OR_ASSIGN */
- SUB_ASSIGN = 607, /* SUB_ASSIGN */
- STRING_LITERAL = 608, /* STRING_LITERAL */
- LEFT_PAREN = 609, /* LEFT_PAREN */
- RIGHT_PAREN = 610, /* RIGHT_PAREN */
- LEFT_BRACKET = 611, /* LEFT_BRACKET */
- RIGHT_BRACKET = 612, /* RIGHT_BRACKET */
- LEFT_BRACE = 613, /* LEFT_BRACE */
- RIGHT_BRACE = 614, /* RIGHT_BRACE */
- DOT = 615, /* DOT */
- COMMA = 616, /* COMMA */
- COLON = 617, /* COLON */
- EQUAL = 618, /* EQUAL */
- SEMICOLON = 619, /* SEMICOLON */
- BANG = 620, /* BANG */
- DASH = 621, /* DASH */
- TILDE = 622, /* TILDE */
- PLUS = 623, /* PLUS */
- STAR = 624, /* STAR */
- SLASH = 625, /* SLASH */
- PERCENT = 626, /* PERCENT */
- LEFT_ANGLE = 627, /* LEFT_ANGLE */
- RIGHT_ANGLE = 628, /* RIGHT_ANGLE */
- VERTICAL_BAR = 629, /* VERTICAL_BAR */
- CARET = 630, /* CARET */
- AMPERSAND = 631, /* AMPERSAND */
- QUESTION = 632, /* QUESTION */
- INVARIANT = 633, /* INVARIANT */
- HIGH_PRECISION = 634, /* HIGH_PRECISION */
- MEDIUM_PRECISION = 635, /* MEDIUM_PRECISION */
- LOW_PRECISION = 636, /* LOW_PRECISION */
- PRECISION = 637, /* PRECISION */
- PACKED = 638, /* PACKED */
- RESOURCE = 639, /* RESOURCE */
- SUPERP = 640, /* SUPERP */
- FLOATCONSTANT = 641, /* FLOATCONSTANT */
- INTCONSTANT = 642, /* INTCONSTANT */
- UINTCONSTANT = 643, /* UINTCONSTANT */
- BOOLCONSTANT = 644, /* BOOLCONSTANT */
- IDENTIFIER = 645, /* IDENTIFIER */
- TYPE_NAME = 646, /* TYPE_NAME */
- CENTROID = 647, /* CENTROID */
- IN = 648, /* IN */
- OUT = 649, /* OUT */
- INOUT = 650, /* INOUT */
- STRUCT = 651, /* STRUCT */
- VOID = 652, /* VOID */
- WHILE = 653, /* WHILE */
- BREAK = 654, /* BREAK */
- CONTINUE = 655, /* CONTINUE */
- DO = 656, /* DO */
- ELSE = 657, /* ELSE */
- FOR = 658, /* FOR */
- IF = 659, /* IF */
- DISCARD = 660, /* DISCARD */
- RETURN = 661, /* RETURN */
- SWITCH = 662, /* SWITCH */
- CASE = 663, /* CASE */
- DEFAULT = 664, /* DEFAULT */
- TERMINATE_INVOCATION = 665, /* TERMINATE_INVOCATION */
- TERMINATE_RAY = 666, /* TERMINATE_RAY */
- IGNORE_INTERSECTION = 667, /* IGNORE_INTERSECTION */
- UNIFORM = 668, /* UNIFORM */
- SHARED = 669, /* SHARED */
- BUFFER = 670, /* BUFFER */
- TILEIMAGEEXT = 671, /* TILEIMAGEEXT */
- FLAT = 672, /* FLAT */
- SMOOTH = 673, /* SMOOTH */
- LAYOUT = 674, /* LAYOUT */
- DOUBLECONSTANT = 675, /* DOUBLECONSTANT */
- INT16CONSTANT = 676, /* INT16CONSTANT */
- UINT16CONSTANT = 677, /* UINT16CONSTANT */
- FLOAT16CONSTANT = 678, /* FLOAT16CONSTANT */
- INT32CONSTANT = 679, /* INT32CONSTANT */
- UINT32CONSTANT = 680, /* UINT32CONSTANT */
- INT64CONSTANT = 681, /* INT64CONSTANT */
- UINT64CONSTANT = 682, /* UINT64CONSTANT */
- SUBROUTINE = 683, /* SUBROUTINE */
- DEMOTE = 684, /* DEMOTE */
- PAYLOADNV = 685, /* PAYLOADNV */
- PAYLOADINNV = 686, /* PAYLOADINNV */
- HITATTRNV = 687, /* HITATTRNV */
- CALLDATANV = 688, /* CALLDATANV */
- CALLDATAINNV = 689, /* CALLDATAINNV */
- PAYLOADEXT = 690, /* PAYLOADEXT */
- PAYLOADINEXT = 691, /* PAYLOADINEXT */
- HITATTREXT = 692, /* HITATTREXT */
- CALLDATAEXT = 693, /* CALLDATAEXT */
- CALLDATAINEXT = 694, /* CALLDATAINEXT */
- PATCH = 695, /* PATCH */
- SAMPLE = 696, /* SAMPLE */
- NONUNIFORM = 697, /* NONUNIFORM */
- COHERENT = 698, /* COHERENT */
- VOLATILE = 699, /* VOLATILE */
- RESTRICT = 700, /* RESTRICT */
- READONLY = 701, /* READONLY */
- WRITEONLY = 702, /* WRITEONLY */
- DEVICECOHERENT = 703, /* DEVICECOHERENT */
- QUEUEFAMILYCOHERENT = 704, /* QUEUEFAMILYCOHERENT */
- WORKGROUPCOHERENT = 705, /* WORKGROUPCOHERENT */
- SUBGROUPCOHERENT = 706, /* SUBGROUPCOHERENT */
- NONPRIVATE = 707, /* NONPRIVATE */
- SHADERCALLCOHERENT = 708, /* SHADERCALLCOHERENT */
- NOPERSPECTIVE = 709, /* NOPERSPECTIVE */
- EXPLICITINTERPAMD = 710, /* EXPLICITINTERPAMD */
- PERVERTEXEXT = 711, /* PERVERTEXEXT */
- PERVERTEXNV = 712, /* PERVERTEXNV */
- PERPRIMITIVENV = 713, /* PERPRIMITIVENV */
- PERVIEWNV = 714, /* PERVIEWNV */
- PERTASKNV = 715, /* PERTASKNV */
- PERPRIMITIVEEXT = 716, /* PERPRIMITIVEEXT */
- TASKPAYLOADWORKGROUPEXT = 717, /* TASKPAYLOADWORKGROUPEXT */
- PRECISE = 718 /* PRECISE */
+ COOPMAT = 421, /* COOPMAT */
+ HITOBJECTNV = 422, /* HITOBJECTNV */
+ HITOBJECTATTRNV = 423, /* HITOBJECTATTRNV */
+ SAMPLERCUBEARRAY = 424, /* SAMPLERCUBEARRAY */
+ SAMPLERCUBEARRAYSHADOW = 425, /* SAMPLERCUBEARRAYSHADOW */
+ ISAMPLERCUBEARRAY = 426, /* ISAMPLERCUBEARRAY */
+ USAMPLERCUBEARRAY = 427, /* USAMPLERCUBEARRAY */
+ SAMPLER1D = 428, /* SAMPLER1D */
+ SAMPLER1DARRAY = 429, /* SAMPLER1DARRAY */
+ SAMPLER1DARRAYSHADOW = 430, /* SAMPLER1DARRAYSHADOW */
+ ISAMPLER1D = 431, /* ISAMPLER1D */
+ SAMPLER1DSHADOW = 432, /* SAMPLER1DSHADOW */
+ SAMPLER2DRECT = 433, /* SAMPLER2DRECT */
+ SAMPLER2DRECTSHADOW = 434, /* SAMPLER2DRECTSHADOW */
+ ISAMPLER2DRECT = 435, /* ISAMPLER2DRECT */
+ USAMPLER2DRECT = 436, /* USAMPLER2DRECT */
+ SAMPLERBUFFER = 437, /* SAMPLERBUFFER */
+ ISAMPLERBUFFER = 438, /* ISAMPLERBUFFER */
+ USAMPLERBUFFER = 439, /* USAMPLERBUFFER */
+ SAMPLER2DMS = 440, /* SAMPLER2DMS */
+ ISAMPLER2DMS = 441, /* ISAMPLER2DMS */
+ USAMPLER2DMS = 442, /* USAMPLER2DMS */
+ SAMPLER2DMSARRAY = 443, /* SAMPLER2DMSARRAY */
+ ISAMPLER2DMSARRAY = 444, /* ISAMPLER2DMSARRAY */
+ USAMPLER2DMSARRAY = 445, /* USAMPLER2DMSARRAY */
+ SAMPLEREXTERNALOES = 446, /* SAMPLEREXTERNALOES */
+ SAMPLEREXTERNAL2DY2YEXT = 447, /* SAMPLEREXTERNAL2DY2YEXT */
+ ISAMPLER1DARRAY = 448, /* ISAMPLER1DARRAY */
+ USAMPLER1D = 449, /* USAMPLER1D */
+ USAMPLER1DARRAY = 450, /* USAMPLER1DARRAY */
+ F16SAMPLER1D = 451, /* F16SAMPLER1D */
+ F16SAMPLER2D = 452, /* F16SAMPLER2D */
+ F16SAMPLER3D = 453, /* F16SAMPLER3D */
+ F16SAMPLER2DRECT = 454, /* F16SAMPLER2DRECT */
+ F16SAMPLERCUBE = 455, /* F16SAMPLERCUBE */
+ F16SAMPLER1DARRAY = 456, /* F16SAMPLER1DARRAY */
+ F16SAMPLER2DARRAY = 457, /* F16SAMPLER2DARRAY */
+ F16SAMPLERCUBEARRAY = 458, /* F16SAMPLERCUBEARRAY */
+ F16SAMPLERBUFFER = 459, /* F16SAMPLERBUFFER */
+ F16SAMPLER2DMS = 460, /* F16SAMPLER2DMS */
+ F16SAMPLER2DMSARRAY = 461, /* F16SAMPLER2DMSARRAY */
+ F16SAMPLER1DSHADOW = 462, /* F16SAMPLER1DSHADOW */
+ F16SAMPLER2DSHADOW = 463, /* F16SAMPLER2DSHADOW */
+ F16SAMPLER1DARRAYSHADOW = 464, /* F16SAMPLER1DARRAYSHADOW */
+ F16SAMPLER2DARRAYSHADOW = 465, /* F16SAMPLER2DARRAYSHADOW */
+ F16SAMPLER2DRECTSHADOW = 466, /* F16SAMPLER2DRECTSHADOW */
+ F16SAMPLERCUBESHADOW = 467, /* F16SAMPLERCUBESHADOW */
+ F16SAMPLERCUBEARRAYSHADOW = 468, /* F16SAMPLERCUBEARRAYSHADOW */
+ IMAGE1D = 469, /* IMAGE1D */
+ IIMAGE1D = 470, /* IIMAGE1D */
+ UIMAGE1D = 471, /* UIMAGE1D */
+ IMAGE2D = 472, /* IMAGE2D */
+ IIMAGE2D = 473, /* IIMAGE2D */
+ UIMAGE2D = 474, /* UIMAGE2D */
+ IMAGE3D = 475, /* IMAGE3D */
+ IIMAGE3D = 476, /* IIMAGE3D */
+ UIMAGE3D = 477, /* UIMAGE3D */
+ IMAGE2DRECT = 478, /* IMAGE2DRECT */
+ IIMAGE2DRECT = 479, /* IIMAGE2DRECT */
+ UIMAGE2DRECT = 480, /* UIMAGE2DRECT */
+ IMAGECUBE = 481, /* IMAGECUBE */
+ IIMAGECUBE = 482, /* IIMAGECUBE */
+ UIMAGECUBE = 483, /* UIMAGECUBE */
+ IMAGEBUFFER = 484, /* IMAGEBUFFER */
+ IIMAGEBUFFER = 485, /* IIMAGEBUFFER */
+ UIMAGEBUFFER = 486, /* UIMAGEBUFFER */
+ IMAGE1DARRAY = 487, /* IMAGE1DARRAY */
+ IIMAGE1DARRAY = 488, /* IIMAGE1DARRAY */
+ UIMAGE1DARRAY = 489, /* UIMAGE1DARRAY */
+ IMAGE2DARRAY = 490, /* IMAGE2DARRAY */
+ IIMAGE2DARRAY = 491, /* IIMAGE2DARRAY */
+ UIMAGE2DARRAY = 492, /* UIMAGE2DARRAY */
+ IMAGECUBEARRAY = 493, /* IMAGECUBEARRAY */
+ IIMAGECUBEARRAY = 494, /* IIMAGECUBEARRAY */
+ UIMAGECUBEARRAY = 495, /* UIMAGECUBEARRAY */
+ IMAGE2DMS = 496, /* IMAGE2DMS */
+ IIMAGE2DMS = 497, /* IIMAGE2DMS */
+ UIMAGE2DMS = 498, /* UIMAGE2DMS */
+ IMAGE2DMSARRAY = 499, /* IMAGE2DMSARRAY */
+ IIMAGE2DMSARRAY = 500, /* IIMAGE2DMSARRAY */
+ UIMAGE2DMSARRAY = 501, /* UIMAGE2DMSARRAY */
+ F16IMAGE1D = 502, /* F16IMAGE1D */
+ F16IMAGE2D = 503, /* F16IMAGE2D */
+ F16IMAGE3D = 504, /* F16IMAGE3D */
+ F16IMAGE2DRECT = 505, /* F16IMAGE2DRECT */
+ F16IMAGECUBE = 506, /* F16IMAGECUBE */
+ F16IMAGE1DARRAY = 507, /* F16IMAGE1DARRAY */
+ F16IMAGE2DARRAY = 508, /* F16IMAGE2DARRAY */
+ F16IMAGECUBEARRAY = 509, /* F16IMAGECUBEARRAY */
+ F16IMAGEBUFFER = 510, /* F16IMAGEBUFFER */
+ F16IMAGE2DMS = 511, /* F16IMAGE2DMS */
+ F16IMAGE2DMSARRAY = 512, /* F16IMAGE2DMSARRAY */
+ I64IMAGE1D = 513, /* I64IMAGE1D */
+ U64IMAGE1D = 514, /* U64IMAGE1D */
+ I64IMAGE2D = 515, /* I64IMAGE2D */
+ U64IMAGE2D = 516, /* U64IMAGE2D */
+ I64IMAGE3D = 517, /* I64IMAGE3D */
+ U64IMAGE3D = 518, /* U64IMAGE3D */
+ I64IMAGE2DRECT = 519, /* I64IMAGE2DRECT */
+ U64IMAGE2DRECT = 520, /* U64IMAGE2DRECT */
+ I64IMAGECUBE = 521, /* I64IMAGECUBE */
+ U64IMAGECUBE = 522, /* U64IMAGECUBE */
+ I64IMAGEBUFFER = 523, /* I64IMAGEBUFFER */
+ U64IMAGEBUFFER = 524, /* U64IMAGEBUFFER */
+ I64IMAGE1DARRAY = 525, /* I64IMAGE1DARRAY */
+ U64IMAGE1DARRAY = 526, /* U64IMAGE1DARRAY */
+ I64IMAGE2DARRAY = 527, /* I64IMAGE2DARRAY */
+ U64IMAGE2DARRAY = 528, /* U64IMAGE2DARRAY */
+ I64IMAGECUBEARRAY = 529, /* I64IMAGECUBEARRAY */
+ U64IMAGECUBEARRAY = 530, /* U64IMAGECUBEARRAY */
+ I64IMAGE2DMS = 531, /* I64IMAGE2DMS */
+ U64IMAGE2DMS = 532, /* U64IMAGE2DMS */
+ I64IMAGE2DMSARRAY = 533, /* I64IMAGE2DMSARRAY */
+ U64IMAGE2DMSARRAY = 534, /* U64IMAGE2DMSARRAY */
+ TEXTURECUBEARRAY = 535, /* TEXTURECUBEARRAY */
+ ITEXTURECUBEARRAY = 536, /* ITEXTURECUBEARRAY */
+ UTEXTURECUBEARRAY = 537, /* UTEXTURECUBEARRAY */
+ TEXTURE1D = 538, /* TEXTURE1D */
+ ITEXTURE1D = 539, /* ITEXTURE1D */
+ UTEXTURE1D = 540, /* UTEXTURE1D */
+ TEXTURE1DARRAY = 541, /* TEXTURE1DARRAY */
+ ITEXTURE1DARRAY = 542, /* ITEXTURE1DARRAY */
+ UTEXTURE1DARRAY = 543, /* UTEXTURE1DARRAY */
+ TEXTURE2DRECT = 544, /* TEXTURE2DRECT */
+ ITEXTURE2DRECT = 545, /* ITEXTURE2DRECT */
+ UTEXTURE2DRECT = 546, /* UTEXTURE2DRECT */
+ TEXTUREBUFFER = 547, /* TEXTUREBUFFER */
+ ITEXTUREBUFFER = 548, /* ITEXTUREBUFFER */
+ UTEXTUREBUFFER = 549, /* UTEXTUREBUFFER */
+ TEXTURE2DMS = 550, /* TEXTURE2DMS */
+ ITEXTURE2DMS = 551, /* ITEXTURE2DMS */
+ UTEXTURE2DMS = 552, /* UTEXTURE2DMS */
+ TEXTURE2DMSARRAY = 553, /* TEXTURE2DMSARRAY */
+ ITEXTURE2DMSARRAY = 554, /* ITEXTURE2DMSARRAY */
+ UTEXTURE2DMSARRAY = 555, /* UTEXTURE2DMSARRAY */
+ F16TEXTURE1D = 556, /* F16TEXTURE1D */
+ F16TEXTURE2D = 557, /* F16TEXTURE2D */
+ F16TEXTURE3D = 558, /* F16TEXTURE3D */
+ F16TEXTURE2DRECT = 559, /* F16TEXTURE2DRECT */
+ F16TEXTURECUBE = 560, /* F16TEXTURECUBE */
+ F16TEXTURE1DARRAY = 561, /* F16TEXTURE1DARRAY */
+ F16TEXTURE2DARRAY = 562, /* F16TEXTURE2DARRAY */
+ F16TEXTURECUBEARRAY = 563, /* F16TEXTURECUBEARRAY */
+ F16TEXTUREBUFFER = 564, /* F16TEXTUREBUFFER */
+ F16TEXTURE2DMS = 565, /* F16TEXTURE2DMS */
+ F16TEXTURE2DMSARRAY = 566, /* F16TEXTURE2DMSARRAY */
+ SUBPASSINPUT = 567, /* SUBPASSINPUT */
+ SUBPASSINPUTMS = 568, /* SUBPASSINPUTMS */
+ ISUBPASSINPUT = 569, /* ISUBPASSINPUT */
+ ISUBPASSINPUTMS = 570, /* ISUBPASSINPUTMS */
+ USUBPASSINPUT = 571, /* USUBPASSINPUT */
+ USUBPASSINPUTMS = 572, /* USUBPASSINPUTMS */
+ F16SUBPASSINPUT = 573, /* F16SUBPASSINPUT */
+ F16SUBPASSINPUTMS = 574, /* F16SUBPASSINPUTMS */
+ SPIRV_INSTRUCTION = 575, /* SPIRV_INSTRUCTION */
+ SPIRV_EXECUTION_MODE = 576, /* SPIRV_EXECUTION_MODE */
+ SPIRV_EXECUTION_MODE_ID = 577, /* SPIRV_EXECUTION_MODE_ID */
+ SPIRV_DECORATE = 578, /* SPIRV_DECORATE */
+ SPIRV_DECORATE_ID = 579, /* SPIRV_DECORATE_ID */
+ SPIRV_DECORATE_STRING = 580, /* SPIRV_DECORATE_STRING */
+ SPIRV_TYPE = 581, /* SPIRV_TYPE */
+ SPIRV_STORAGE_CLASS = 582, /* SPIRV_STORAGE_CLASS */
+ SPIRV_BY_REFERENCE = 583, /* SPIRV_BY_REFERENCE */
+ SPIRV_LITERAL = 584, /* SPIRV_LITERAL */
+ ATTACHMENTEXT = 585, /* ATTACHMENTEXT */
+ IATTACHMENTEXT = 586, /* IATTACHMENTEXT */
+ UATTACHMENTEXT = 587, /* UATTACHMENTEXT */
+ LEFT_OP = 588, /* LEFT_OP */
+ RIGHT_OP = 589, /* RIGHT_OP */
+ INC_OP = 590, /* INC_OP */
+ DEC_OP = 591, /* DEC_OP */
+ LE_OP = 592, /* LE_OP */
+ GE_OP = 593, /* GE_OP */
+ EQ_OP = 594, /* EQ_OP */
+ NE_OP = 595, /* NE_OP */
+ AND_OP = 596, /* AND_OP */
+ OR_OP = 597, /* OR_OP */
+ XOR_OP = 598, /* XOR_OP */
+ MUL_ASSIGN = 599, /* MUL_ASSIGN */
+ DIV_ASSIGN = 600, /* DIV_ASSIGN */
+ ADD_ASSIGN = 601, /* ADD_ASSIGN */
+ MOD_ASSIGN = 602, /* MOD_ASSIGN */
+ LEFT_ASSIGN = 603, /* LEFT_ASSIGN */
+ RIGHT_ASSIGN = 604, /* RIGHT_ASSIGN */
+ AND_ASSIGN = 605, /* AND_ASSIGN */
+ XOR_ASSIGN = 606, /* XOR_ASSIGN */
+ OR_ASSIGN = 607, /* OR_ASSIGN */
+ SUB_ASSIGN = 608, /* SUB_ASSIGN */
+ STRING_LITERAL = 609, /* STRING_LITERAL */
+ LEFT_PAREN = 610, /* LEFT_PAREN */
+ RIGHT_PAREN = 611, /* RIGHT_PAREN */
+ LEFT_BRACKET = 612, /* LEFT_BRACKET */
+ RIGHT_BRACKET = 613, /* RIGHT_BRACKET */
+ LEFT_BRACE = 614, /* LEFT_BRACE */
+ RIGHT_BRACE = 615, /* RIGHT_BRACE */
+ DOT = 616, /* DOT */
+ COMMA = 617, /* COMMA */
+ COLON = 618, /* COLON */
+ EQUAL = 619, /* EQUAL */
+ SEMICOLON = 620, /* SEMICOLON */
+ BANG = 621, /* BANG */
+ DASH = 622, /* DASH */
+ TILDE = 623, /* TILDE */
+ PLUS = 624, /* PLUS */
+ STAR = 625, /* STAR */
+ SLASH = 626, /* SLASH */
+ PERCENT = 627, /* PERCENT */
+ LEFT_ANGLE = 628, /* LEFT_ANGLE */
+ RIGHT_ANGLE = 629, /* RIGHT_ANGLE */
+ VERTICAL_BAR = 630, /* VERTICAL_BAR */
+ CARET = 631, /* CARET */
+ AMPERSAND = 632, /* AMPERSAND */
+ QUESTION = 633, /* QUESTION */
+ INVARIANT = 634, /* INVARIANT */
+ HIGH_PRECISION = 635, /* HIGH_PRECISION */
+ MEDIUM_PRECISION = 636, /* MEDIUM_PRECISION */
+ LOW_PRECISION = 637, /* LOW_PRECISION */
+ PRECISION = 638, /* PRECISION */
+ PACKED = 639, /* PACKED */
+ RESOURCE = 640, /* RESOURCE */
+ SUPERP = 641, /* SUPERP */
+ FLOATCONSTANT = 642, /* FLOATCONSTANT */
+ INTCONSTANT = 643, /* INTCONSTANT */
+ UINTCONSTANT = 644, /* UINTCONSTANT */
+ BOOLCONSTANT = 645, /* BOOLCONSTANT */
+ IDENTIFIER = 646, /* IDENTIFIER */
+ TYPE_NAME = 647, /* TYPE_NAME */
+ CENTROID = 648, /* CENTROID */
+ IN = 649, /* IN */
+ OUT = 650, /* OUT */
+ INOUT = 651, /* INOUT */
+ STRUCT = 652, /* STRUCT */
+ VOID = 653, /* VOID */
+ WHILE = 654, /* WHILE */
+ BREAK = 655, /* BREAK */
+ CONTINUE = 656, /* CONTINUE */
+ DO = 657, /* DO */
+ ELSE = 658, /* ELSE */
+ FOR = 659, /* FOR */
+ IF = 660, /* IF */
+ DISCARD = 661, /* DISCARD */
+ RETURN = 662, /* RETURN */
+ SWITCH = 663, /* SWITCH */
+ CASE = 664, /* CASE */
+ DEFAULT = 665, /* DEFAULT */
+ TERMINATE_INVOCATION = 666, /* TERMINATE_INVOCATION */
+ TERMINATE_RAY = 667, /* TERMINATE_RAY */
+ IGNORE_INTERSECTION = 668, /* IGNORE_INTERSECTION */
+ UNIFORM = 669, /* UNIFORM */
+ SHARED = 670, /* SHARED */
+ BUFFER = 671, /* BUFFER */
+ TILEIMAGEEXT = 672, /* TILEIMAGEEXT */
+ FLAT = 673, /* FLAT */
+ SMOOTH = 674, /* SMOOTH */
+ LAYOUT = 675, /* LAYOUT */
+ DOUBLECONSTANT = 676, /* DOUBLECONSTANT */
+ INT16CONSTANT = 677, /* INT16CONSTANT */
+ UINT16CONSTANT = 678, /* UINT16CONSTANT */
+ FLOAT16CONSTANT = 679, /* FLOAT16CONSTANT */
+ INT32CONSTANT = 680, /* INT32CONSTANT */
+ UINT32CONSTANT = 681, /* UINT32CONSTANT */
+ INT64CONSTANT = 682, /* INT64CONSTANT */
+ UINT64CONSTANT = 683, /* UINT64CONSTANT */
+ SUBROUTINE = 684, /* SUBROUTINE */
+ DEMOTE = 685, /* DEMOTE */
+ PAYLOADNV = 686, /* PAYLOADNV */
+ PAYLOADINNV = 687, /* PAYLOADINNV */
+ HITATTRNV = 688, /* HITATTRNV */
+ CALLDATANV = 689, /* CALLDATANV */
+ CALLDATAINNV = 690, /* CALLDATAINNV */
+ PAYLOADEXT = 691, /* PAYLOADEXT */
+ PAYLOADINEXT = 692, /* PAYLOADINEXT */
+ HITATTREXT = 693, /* HITATTREXT */
+ CALLDATAEXT = 694, /* CALLDATAEXT */
+ CALLDATAINEXT = 695, /* CALLDATAINEXT */
+ PATCH = 696, /* PATCH */
+ SAMPLE = 697, /* SAMPLE */
+ NONUNIFORM = 698, /* NONUNIFORM */
+ COHERENT = 699, /* COHERENT */
+ VOLATILE = 700, /* VOLATILE */
+ RESTRICT = 701, /* RESTRICT */
+ READONLY = 702, /* READONLY */
+ WRITEONLY = 703, /* WRITEONLY */
+ DEVICECOHERENT = 704, /* DEVICECOHERENT */
+ QUEUEFAMILYCOHERENT = 705, /* QUEUEFAMILYCOHERENT */
+ WORKGROUPCOHERENT = 706, /* WORKGROUPCOHERENT */
+ SUBGROUPCOHERENT = 707, /* SUBGROUPCOHERENT */
+ NONPRIVATE = 708, /* NONPRIVATE */
+ SHADERCALLCOHERENT = 709, /* SHADERCALLCOHERENT */
+ NOPERSPECTIVE = 710, /* NOPERSPECTIVE */
+ EXPLICITINTERPAMD = 711, /* EXPLICITINTERPAMD */
+ PERVERTEXEXT = 712, /* PERVERTEXEXT */
+ PERVERTEXNV = 713, /* PERVERTEXNV */
+ PERPRIMITIVENV = 714, /* PERPRIMITIVENV */
+ PERVIEWNV = 715, /* PERVIEWNV */
+ PERTASKNV = 716, /* PERTASKNV */
+ PERPRIMITIVEEXT = 717, /* PERPRIMITIVEEXT */
+ TASKPAYLOADWORKGROUPEXT = 718, /* TASKPAYLOADWORKGROUPEXT */
+ PRECISE = 719 /* PRECISE */
};
typedef enum yytokentype yytoken_kind_t;
#endif
@@ -559,10 +560,10 @@ union YYSTYPE
glslang::TArraySizes* arraySizes;
glslang::TIdentifierList* identifierList;
};
- glslang::TArraySizes* typeParameters;
+ glslang::TTypeParameters* typeParameters;
} interm;
-#line 566 "MachineIndependent/glslang_tab.cpp.h"
+#line 567 "MachineIndependent/glslang_tab.cpp.h"
};
typedef union YYSTYPE YYSTYPE;
diff --git a/thirdparty/glslang/glslang/MachineIndependent/intermOut.cpp b/thirdparty/glslang/glslang/MachineIndependent/intermOut.cpp
index b79bd464d3..d5fc26bbf2 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/intermOut.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/intermOut.cpp
@@ -36,8 +36,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(GLSLANG_WEB)
-
#include "localintermediate.h"
#include "../Include/InfoSink.h"
@@ -669,9 +667,7 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
case EOpDeclare: out.debug << "Declare"; break;
-#ifndef GLSLANG_WEB
case EOpSpirvInst: out.debug << "spirv_instruction"; break;
-#endif
default: out.debug.message(EPrefixError, "Bad unary op");
}
@@ -809,7 +805,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpConstructStruct: out.debug << "Construct structure"; break;
case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break;
case EOpConstructReference: out.debug << "Construct reference"; break;
- case EOpConstructCooperativeMatrix: out.debug << "Construct cooperative matrix"; break;
+ case EOpConstructCooperativeMatrixNV: out.debug << "Construct cooperative matrix NV"; break;
+ case EOpConstructCooperativeMatrixKHR: out.debug << "Construct cooperative matrix KHR"; break;
case EOpConstructAccStruct: out.debug << "Construct acceleration structure"; break;
case EOpLessThan: out.debug << "Compare Less Than"; break;
@@ -1103,9 +1100,12 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpRayQueryGetIntersectionWorldToObject: out.debug << "rayQueryGetIntersectionWorldToObjectEXT"; break;
case EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: out.debug << "rayQueryGetIntersectionTriangleVertexPositionsEXT"; break;
- case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix"; break;
- case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break;
- case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices"; break;
+ case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix KHR"; break;
+ case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix KHR"; break;
+ case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices KHR"; break;
+ case EOpCooperativeMatrixLoadNV: out.debug << "Load cooperative matrix NV"; break;
+ case EOpCooperativeMatrixStoreNV: out.debug << "Store cooperative matrix NV"; break;
+ case EOpCooperativeMatrixMulAddNV: out.debug << "MulAdd cooperative matrices NV"; break;
case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break;
case EOpDebugPrintf: out.debug << "Debug printf"; break;
@@ -1142,9 +1142,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
case EOpHitObjectGetShaderRecordBufferHandleNV: out.debug << "HitObjectReadShaderRecordBufferHandleNV"; break;
case EOpReorderThreadNV: out.debug << "ReorderThreadNV"; break;
-#ifndef GLSLANG_WEB
case EOpSpirvInst: out.debug << "spirv_instruction"; break;
-#endif
case EOpStencilAttachmentReadEXT: out.debug << "stencilAttachmentReadEXT"; break;
case EOpDepthAttachmentReadEXT: out.debug << "depthAttachmentReadEXT"; break;
@@ -1607,5 +1605,3 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree)
}
} // end namespace glslang
-
-#endif // !GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/MachineIndependent/iomapper.cpp b/thirdparty/glslang/glslang/MachineIndependent/iomapper.cpp
index 0ae281d965..63dedf76c6 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/iomapper.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/iomapper.cpp
@@ -33,8 +33,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(GLSLANG_WEB)
-
#include "../Include/Common.h"
#include "../Include/InfoSink.h"
#include "../Include/Types.h"
@@ -145,6 +143,8 @@ public:
base->getWritableType().getQualifier().layoutComponent = at->second.newComponent;
if (at->second.newIndex != -1)
base->getWritableType().getQualifier().layoutIndex = at->second.newIndex;
+ if (at->second.upgradedToPushConstant)
+ base->getWritableType().getQualifier().layoutPushConstant = true;
}
private:
@@ -1670,31 +1670,34 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) {
}
}
}
- // If it's been upgraded to push_constant, then remove it from the uniformVector
+ // If it's been upgraded to push_constant, then set the flag so when its traversed
+ // in the next for loop, all references to this symbol will get their flag changed.
// so it doesn't get a set/binding assigned to it.
if (upgraded) {
- while (1) {
- auto at = std::find_if(uniformVector.begin(), uniformVector.end(),
- [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; });
- if (at != uniformVector.end())
- uniformVector.erase(at);
- else
- break;
- }
+ std::for_each(uniformVector.begin(), uniformVector.end(),
+ [this](TVarLivePair& p) {
+ if (p.first == autoPushConstantBlockName) {
+ p.second.upgradedToPushConstant = true;
+ }
+ });
}
}
for (size_t stage = 0; stage < EShLangCount; stage++) {
if (intermediates[stage] != nullptr) {
// traverse each stage, set new location to each input/output and unifom symbol, set new binding to
- // ubo, ssbo and opaque symbols
+ // ubo, ssbo and opaque symbols. Assign push_constant upgrades as well.
TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap;
std::for_each(uniformVector.begin(), uniformVector.end(), [pUniformVarMap, stage](TVarLivePair p) {
auto at = pUniformVarMap[stage]->find(p.second.symbol->getAccessName());
if (at != pUniformVarMap[stage]->end() && at->second.id == p.second.id){
- int resolvedBinding = at->second.newBinding;
- at->second = p.second;
- if (resolvedBinding > 0)
- at->second.newBinding = resolvedBinding;
+ if (p.second.upgradedToPushConstant) {
+ at->second.upgradedToPushConstant = true;
+ } else {
+ int resolvedBinding = at->second.newBinding;
+ at->second = p.second;
+ if (resolvedBinding > 0)
+ at->second.newBinding = resolvedBinding;
+ }
}
});
TVarSetTraverser iter_iomap(*intermediates[stage], *inVarMaps[stage], *outVarMaps[stage],
@@ -1709,5 +1712,3 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) {
}
} // end namespace glslang
-
-#endif // !GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/MachineIndependent/iomapper.h b/thirdparty/glslang/glslang/MachineIndependent/iomapper.h
index 0003a74e09..35babbce1b 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/iomapper.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/iomapper.h
@@ -33,8 +33,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(GLSLANG_WEB)
-
#ifndef _IOMAPPER_INCLUDED
#define _IOMAPPER_INCLUDED
@@ -55,6 +53,7 @@ struct TVarEntryInfo {
long long id;
TIntermSymbol* symbol;
bool live;
+ bool upgradedToPushConstant;
int newBinding;
int newSet;
int newLocation;
@@ -63,6 +62,7 @@ struct TVarEntryInfo {
EShLanguage stage;
void clearNewAssignments() {
+ upgradedToPushConstant = false;
newBinding = -1;
newSet = -1;
newLocation = -1;
@@ -357,5 +357,3 @@ private:
} // end namespace glslang
#endif // _IOMAPPER_INCLUDED
-
-#endif // !GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/MachineIndependent/limits.cpp b/thirdparty/glslang/glslang/MachineIndependent/limits.cpp
index 391570579d..4404beca4f 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/limits.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/limits.cpp
@@ -187,14 +187,12 @@ bool TIndexTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node)
//
void TParseContext::constantIndexExpressionCheck(TIntermNode* index)
{
-#ifndef GLSLANG_WEB
TIndexTraverser it(inductiveLoopIds);
index->traverse(&it);
if (it.bad)
error(it.badLoc, "Non-constant-index-expression", "limitations", "");
-#endif
}
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/MachineIndependent/linkValidate.cpp b/thirdparty/glslang/glslang/MachineIndependent/linkValidate.cpp
index 3230d8f4b8..d69300b84d 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/linkValidate.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/linkValidate.cpp
@@ -57,13 +57,11 @@ namespace glslang {
//
void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage unitStage)
{
-#ifndef GLSLANG_WEB
infoSink.info.prefix(EPrefixError);
if (unitStage < EShLangCount)
infoSink.info << "Linking " << StageName(getStage()) << " and " << StageName(unitStage) << " stages: " << message << "\n";
else
infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n";
-#endif
++numErrors;
}
@@ -71,13 +69,11 @@ void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage
// Link-time warning.
void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage unitStage)
{
-#ifndef GLSLANG_WEB
infoSink.info.prefix(EPrefixWarning);
if (unitStage < EShLangCount)
infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n";
else
infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n";
-#endif
}
// TODO: 4.4 offset/align: "Two blocks linked together in the same program with the same block
@@ -89,11 +85,9 @@ void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage u
//
void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
{
-#if !defined(GLSLANG_WEB)
mergeCallGraphs(infoSink, unit);
mergeModes(infoSink, unit);
mergeTrees(infoSink, unit);
-#endif
}
//
@@ -161,8 +155,6 @@ void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit)
callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end());
}
-#if !defined(GLSLANG_WEB)
-
#define MERGE_MAX(member) member = std::max(member, unit.member)
#define MERGE_TRUE(member) if (unit.member) member = unit.member;
@@ -381,8 +373,6 @@ void TIntermediate::mergeTrees(TInfoSink& infoSink, TIntermediate& unit)
ioAccessed.insert(unit.ioAccessed.begin(), unit.ioAccessed.end());
}
-#endif
-
static const TString& getNameForIdMap(TIntermSymbol* symbol)
{
TShaderInterface si = symbol->getType().getShaderInterface();
@@ -859,7 +849,6 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType)
//
void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, EShLanguage unitStage)
{
-#if !defined(GLSLANG_WEB)
bool crossStage = getStage() != unitStage;
bool writeTypeComparison = false;
bool errorReported = false;
@@ -1187,7 +1176,6 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy
}
}
}
-#endif
}
void TIntermediate::sharedBlockCheck(TInfoSink& infoSink)
@@ -1234,7 +1222,6 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
// overlap/alias/missing I/O, etc.
inOutLocationCheck(infoSink);
-#ifndef GLSLANG_WEB
if (getNumPushConstants() > 1)
error(infoSink, "Only one push_constant block is allowed per stage");
@@ -1392,7 +1379,6 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled)
} finalLinkTraverser;
treeRoot->traverse(&finalLinkTraverser);
-#endif
}
//
@@ -1633,7 +1619,6 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ
typeCollision = false;
int set;
- int setRT;
if (qualifier.isPipeInput())
set = 0;
else if (qualifier.isPipeOutput())
@@ -1645,11 +1630,11 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ
else if (qualifier.storage == EvqTileImageEXT)
set = 4;
else if (qualifier.isAnyPayload())
- setRT = 0;
+ set = 0;
else if (qualifier.isAnyCallable())
- setRT = 1;
+ set = 1;
else if (qualifier.isHitObjectAttrNV())
- setRT = 2;
+ set = 2;
else
return -1;
@@ -1688,13 +1673,14 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ
// For raytracing IO (payloads and callabledata) each declaration occupies a single
// slot irrespective of type.
int collision = -1; // no collision
-#ifndef GLSLANG_WEB
if (qualifier.isAnyPayload() || qualifier.isAnyCallable() || qualifier.isHitObjectAttrNV()) {
TRange range(qualifier.layoutLocation, qualifier.layoutLocation);
- collision = checkLocationRT(setRT, qualifier.layoutLocation);
+ collision = checkLocationRT(set, qualifier.layoutLocation);
if (collision < 0)
- usedIoRT[setRT].push_back(range);
- } else if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 &&
+ usedIoRT[set].push_back(range);
+ return collision;
+ }
+ if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 &&
(qualifier.isPipeInput() || qualifier.isPipeOutput())) {
// Dealing with dvec3 in/out split across two locations.
// Need two io-ranges.
@@ -1720,34 +1706,33 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ
if (collision < 0)
usedIo[set].push_back(range2);
}
- } else
-#endif
- {
- // Not a dvec3 in/out split across two locations, generic path.
- // Need a single IO-range block.
+ return collision;
+ }
- TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1);
- TRange componentRange(0, 3);
- if (qualifier.hasComponent() || type.getVectorSize() > 0) {
- int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1);
- if (qualifier.hasComponent())
- componentRange.start = qualifier.layoutComponent;
- componentRange.last = componentRange.start + consumedComponents - 1;
- }
+ // Not a dvec3 in/out split across two locations, generic path.
+ // Need a single IO-range block.
- // combine location and component ranges
- TBasicType basicTy = type.getBasicType();
- if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT())
- basicTy = type.getSampler().type;
- TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0);
+ TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1);
+ TRange componentRange(0, 3);
+ if (qualifier.hasComponent() || type.getVectorSize() > 0) {
+ int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1);
+ if (qualifier.hasComponent())
+ componentRange.start = qualifier.layoutComponent;
+ componentRange.last = componentRange.start + consumedComponents - 1;
+ }
- // check for collisions, except for vertex inputs on desktop targeting OpenGL
- if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0)
- collision = checkLocationRange(set, range, type, typeCollision);
+ // combine location and component ranges
+ TBasicType basicTy = type.getBasicType();
+ if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT())
+ basicTy = type.getSampler().type;
+ TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0);
- if (collision < 0)
- usedIo[set].push_back(range);
- }
+ // check for collisions, except for vertex inputs on desktop targeting OpenGL
+ if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0)
+ collision = checkLocationRange(set, range, type, typeCollision);
+
+ if (collision < 0)
+ usedIo[set].push_back(range);
return collision;
}
@@ -1846,10 +1831,8 @@ int TIntermediate::computeTypeLocationSize(const TType& type, EShLanguage stage)
if (type.isSizedArray() && !type.getQualifier().isPerView())
return type.getOuterArraySize() * computeTypeLocationSize(elementType, stage);
else {
-#ifndef GLSLANG_WEB
// unset perViewNV attributes for arrayed per-view outputs: "perviewNV vec4 v[MAX_VIEWS][3];"
elementType.getQualifier().perViewNV = false;
-#endif
return computeTypeLocationSize(elementType, stage);
}
}
@@ -1925,8 +1908,6 @@ int TIntermediate::computeTypeUniformLocationSize(const TType& type)
return 1;
}
-#ifndef GLSLANG_WEB
-
// Accumulate xfb buffer ranges and check for collisions as the accumulation is done.
//
// Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value.
@@ -2044,8 +2025,6 @@ unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains
}
}
-#endif
-
const int baseAlignmentVec4Std140 = 16;
// Return the size and alignment of a component of the given type.
@@ -2053,10 +2032,6 @@ const int baseAlignmentVec4Std140 = 16;
// Return value is the alignment..
int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size)
{
-#ifdef GLSLANG_WEB
- size = 4; return 4;
-#endif
-
switch (type.getBasicType()) {
case EbtInt64:
case EbtUint64:
@@ -2396,7 +2371,6 @@ int TIntermediate::computeBufferReferenceTypeSize(const TType& type)
return size;
}
-#ifndef GLSLANG_WEB
bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) {
return type.isArray() &&
((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) ||
@@ -2408,6 +2382,5 @@ bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) {
(language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut &&
!type.getQualifier().perTaskNV));
}
-#endif // not GLSLANG_WEB
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/MachineIndependent/localintermediate.h b/thirdparty/glslang/glslang/MachineIndependent/localintermediate.h
index 2aa766a5e0..2f0e65ce39 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/localintermediate.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/localintermediate.h
@@ -147,7 +147,6 @@ struct TOffsetRange {
TRange offset;
};
-#ifndef GLSLANG_WEB
// Things that need to be tracked per xfb buffer.
struct TXfbBuffer {
TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false),
@@ -159,7 +158,6 @@ struct TXfbBuffer {
bool contains32BitType;
bool contains16BitType;
};
-#endif
// Track a set of strings describing how the module was processed.
// This includes command line options, transforms, etc., ideally inclusive enough
@@ -311,9 +309,7 @@ public:
atomicCounterBlockName(""),
globalUniformBlockSet(TQualifier::layoutSetEnd),
globalUniformBlockBinding(TQualifier::layoutBindingEnd),
- atomicCounterBlockSet(TQualifier::layoutSetEnd)
-#ifndef GLSLANG_WEB
- ,
+ atomicCounterBlockSet(TQualifier::layoutSetEnd),
implicitThisName("@this"), implicitCounterName("@count"),
source(EShSourceNone),
useVulkanMemoryModel(false),
@@ -352,7 +348,6 @@ public:
spirvRequirement(nullptr),
spirvExecutionMode(nullptr),
uniformLocationBase(0)
-#endif
{
localSize[0] = 1;
localSize[1] = 1;
@@ -363,10 +358,8 @@ public:
localSizeSpecId[0] = TQualifier::layoutNotSet;
localSizeSpecId[1] = TQualifier::layoutNotSet;
localSizeSpecId[2] = TQualifier::layoutNotSet;
-#ifndef GLSLANG_WEB
xfbBuffers.resize(TQualifier::layoutXfbBufferEnd);
shiftBinding.fill(0);
-#endif
}
void setVersion(int v)
@@ -636,38 +629,6 @@ public:
localSizeSpecId[1] != TQualifier::layoutNotSet ||
localSizeSpecId[2] != TQualifier::layoutNotSet;
}
-#ifdef GLSLANG_WEB
- void output(TInfoSink&, bool tree) { }
-
- bool isEsProfile() const { return false; }
- bool getXfbMode() const { return false; }
- bool isMultiStream() const { return false; }
- TLayoutGeometry getOutputPrimitive() const { return ElgNone; }
- bool getNonCoherentColorAttachmentReadEXT() const { return false; }
- bool getNonCoherentDepthAttachmentReadEXT() const { return false; }
- bool getNonCoherentStencilAttachmentReadEXT() const { return false; }
- bool getPostDepthCoverage() const { return false; }
- bool getEarlyFragmentTests() const { return false; }
- TLayoutDepth getDepth() const { return EldNone; }
- bool getPixelCenterInteger() const { return false; }
- void setOriginUpperLeft() { }
- bool getOriginUpperLeft() const { return true; }
- TInterlockOrdering getInterlockOrdering() const { return EioNone; }
-
- bool getAutoMapBindings() const { return false; }
- bool getAutoMapLocations() const { return false; }
- int getNumPushConstants() const { return 0; }
- void addShaderRecordCount() { }
- void addTaskNVCount() { }
- void addTaskPayloadEXTCount() { }
- void setUseVulkanMemoryModel() { }
- bool usingVulkanMemoryModel() const { return false; }
- bool usingPhysicalStorageBuffer() const { return false; }
- bool usingVariablePointers() const { return false; }
- unsigned getXfbStride(int buffer) const { return 0; }
- bool hasLayoutDerivativeModeNone() const { return false; }
- ComputeDerivativeMode getLayoutDerivativeModeNone() const { return LayoutDerivativeNone; }
-#else
void output(TInfoSink&, bool tree);
bool isEsProfile() const { return profile == EEsProfile; }
@@ -1006,7 +967,6 @@ public:
void insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args);
bool hasSpirvExecutionMode() const { return spirvExecutionMode != nullptr; }
const TSpirvExecutionMode& getSpirvExecutionMode() const { return *spirvExecutionMode; }
-#endif // GLSLANG_WEB
void addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing)
{
@@ -1113,12 +1073,6 @@ public:
void setUniqueId(unsigned long long id) { uniqueId = id; }
// Certain explicit conversions are allowed conditionally
-#ifdef GLSLANG_WEB
- bool getArithemeticInt8Enabled() const { return false; }
- bool getArithemeticInt16Enabled() const { return false; }
- bool getArithemeticFloat16Enabled() const { return false; }
- void updateNumericFeature(TNumericFeatures::feature f, bool on) { }
-#else
bool getArithemeticInt8Enabled() const {
return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) ||
numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8);
@@ -1136,7 +1090,6 @@ public:
}
void updateNumericFeature(TNumericFeatures::feature f, bool on)
{ on ? numericFeatures.insert(f) : numericFeatures.erase(f); }
-#endif
protected:
TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&);
@@ -1208,7 +1161,6 @@ protected:
unsigned int globalUniformBlockBinding;
unsigned int atomicCounterBlockSet;
-#ifndef GLSLANG_WEB
public:
const char* const implicitThisName;
const char* const implicitCounterName;
@@ -1279,7 +1231,6 @@ protected:
std::unordered_map<std::string, int> uniformLocationOverrides;
int uniformLocationBase;
TNumericFeatures numericFeatures;
-#endif
std::unordered_map<std::string, TBlockStorageClass> blockBackingOverrides;
std::unordered_set<int> usedConstantId; // specialization constant ids used
diff --git a/thirdparty/glslang/glslang/MachineIndependent/parseVersions.h b/thirdparty/glslang/glslang/MachineIndependent/parseVersions.h
index c9f82d05d8..63841c408a 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/parseVersions.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/parseVersions.h
@@ -58,10 +58,8 @@ public:
const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink,
bool forwardCompatible, EShMessages messages)
:
-#if !defined(GLSLANG_WEB)
forwardCompatible(forwardCompatible),
profile(profile),
-#endif
infoSink(infoSink), version(version),
language(language),
spvVersion(spvVersion),
@@ -69,54 +67,7 @@ public:
virtual ~TParseVersions() { }
void requireStage(const TSourceLoc&, EShLanguageMask, const char* featureDesc);
void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc);
-#ifdef GLSLANG_WEB
- const EProfile profile = EEsProfile;
- bool isEsProfile() const { return true; }
- void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc)
- {
- if (! (EEsProfile & profileMask))
- error(loc, "not supported with this profile:", featureDesc, ProfileName(profile));
- }
- void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions,
- const char* const extensions[], const char* featureDesc)
- {
- if ((EEsProfile & profileMask) && (minVersion == 0 || version < minVersion))
- error(loc, "not supported for this version or the enabled extensions", featureDesc, "");
- }
- void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension,
- const char* featureDesc)
- {
- profileRequires(loc, profileMask, minVersion, extension ? 1 : 0, &extension, featureDesc);
- }
- void initializeExtensionBehavior() { }
- void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc) { }
- void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc) { }
- void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[],
- const char* featureDesc) { }
- void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[],
- const char* featureDesc) { }
- TExtensionBehavior getExtensionBehavior(const char*) { return EBhMissing; }
- bool extensionTurnedOn(const char* const extension) { return false; }
- bool extensionsTurnedOn(int numExtensions, const char* const extensions[]) { return false; }
- void updateExtensionBehavior(int line, const char* const extension, const char* behavior) { }
- void updateExtensionBehavior(const char* const extension, TExtensionBehavior) { }
- void checkExtensionStage(const TSourceLoc&, const char* const extension) { }
- void extensionRequires(const TSourceLoc&, const char* const extension, const char* behavior) { }
- void fullIntegerCheck(const TSourceLoc&, const char* op) { }
- void doubleCheck(const TSourceLoc&, const char* op) { }
- bool float16Arithmetic() { return false; }
- void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { }
- bool int16Arithmetic() { return false; }
- void requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { }
- bool int8Arithmetic() { return false; }
- void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { }
- void int64Check(const TSourceLoc&, const char* op, bool builtIn = false) { }
- void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false) { }
- void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false) { }
- bool relaxedErrors() const { return false; }
- bool suppressWarnings() const { return true; }
- bool isForwardCompatible() const { return false; }
-#else
+
bool forwardCompatible; // true if errors are to be given for use of deprecated features
EProfile profile; // the declared profile in the shader (core by default)
bool isEsProfile() const { return profile == EEsProfile; }
@@ -162,29 +113,19 @@ public:
virtual void explicitInt32Check(const TSourceLoc&, const char* op, bool builtIn = false);
virtual void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false);
virtual void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false);
- virtual void fcoopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false);
- virtual void intcoopmatCheck(const TSourceLoc&, const char *op, bool builtIn = false);
+ virtual void fcoopmatCheckNV(const TSourceLoc&, const char* op, bool builtIn = false);
+ virtual void intcoopmatCheckNV(const TSourceLoc&, const char *op, bool builtIn = false);
+ virtual void coopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false);
bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; }
bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; }
bool isForwardCompatible() const { return forwardCompatible; }
-#endif // GLSLANG_WEB
+
virtual void spvRemoved(const TSourceLoc&, const char* op);
virtual void vulkanRemoved(const TSourceLoc&, const char* op);
virtual void requireVulkan(const TSourceLoc&, const char* op);
virtual void requireSpv(const TSourceLoc&, const char* op);
virtual void requireSpv(const TSourceLoc&, const char *op, unsigned int version);
-
-#if defined(GLSLANG_WEB) && !defined(GLSLANG_WEB_DEVEL)
- void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken,
- const char* szExtraInfoFormat, ...) { addError(); }
- void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken,
- const char* szExtraInfoFormat, ...) { }
- void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken,
- const char* szExtraInfoFormat, ...) { addError(); }
- void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken,
- const char* szExtraInfoFormat, ...) { }
-#else
virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, ...) = 0;
virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken,
@@ -193,7 +134,6 @@ public:
const char* szExtraInfoFormat, ...) = 0;
virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, ...) = 0;
-#endif
void addError() { ++numErrors; }
int getNumErrors() const { return numErrors; }
diff --git a/thirdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/thirdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
index d5a710918f..8d2e85f0be 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -736,7 +736,6 @@ int TPpContext::CPPline(TPpToken* ppToken)
parseContext.setCurrentLine(lineRes);
if (token != '\n') {
-#ifndef GLSLANG_WEB
if (token == PpAtomConstString) {
parseContext.ppRequireExtensions(directiveLoc, 1, &E_GL_GOOGLE_cpp_style_line_directive, "filename-based #line");
// We need to save a copy of the string instead of pointing
@@ -746,9 +745,7 @@ int TPpContext::CPPline(TPpToken* ppToken)
parseContext.setCurrentSourceName(sourceName);
hasFile = true;
token = scanToken(ppToken);
- } else
-#endif
- {
+ } else {
token = eval(token, MIN_PRECEDENCE, false, fileRes, fileErr, ppToken);
if (! fileErr) {
parseContext.setCurrentString(fileRes);
@@ -974,7 +971,6 @@ int TPpContext::readCPPline(TPpToken* ppToken)
case PpAtomLine:
token = CPPline(ppToken);
break;
-#ifndef GLSLANG_WEB
case PpAtomInclude:
if(!parseContext.isReadingHLSL()) {
parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_include_directive, "#include");
@@ -984,7 +980,6 @@ int TPpContext::readCPPline(TPpToken* ppToken)
case PpAtomPragma:
token = CPPpragma(ppToken);
break;
-#endif
case PpAtomUndef:
token = CPPundef(ppToken);
break;
diff --git a/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index d4d4de9f61..34dec20769 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -3,6 +3,7 @@
// Copyright (C) 2013 LunarG, Inc.
// Copyright (C) 2017 ARM Limited.
// Copyright (C) 2015-2018 Google, Inc.
+// Copyright (c) 2023, Mobica Limited
//
// All rights reserved.
//
@@ -259,7 +260,6 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken)
// Suffix:
bool isDouble = false;
bool isFloat16 = false;
-#ifndef GLSLANG_WEB
if (ch == 'l' || ch == 'L') {
if (ifdepth == 0 && parseContext.intermediate.getSource() == EShSourceGlsl)
parseContext.doubleCheck(ppToken->loc, "double floating-point suffix");
@@ -299,14 +299,11 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken)
isFloat16 = true;
}
} else
-#endif
if (ch == 'f' || ch == 'F') {
-#ifndef GLSLANG_WEB
if (ifdepth == 0)
parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix");
if (ifdepth == 0 && !parseContext.relaxedErrors())
parseContext.profileRequires(ppToken->loc, ~EEsProfile, 120, nullptr, "floating-point suffix");
-#endif
if (ifdepth == 0 && !hasDecimalOrExponent)
parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", "");
saveName(ch);
@@ -549,7 +546,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
ival = 0;
do {
- if (len < MaxTokenLength && ival <= 0x0fffffffffffffffull) {
+ if (len < MaxTokenLength && ival <= 0x7fffffffffffffffull) {
ppToken->name[len++] = (char)ch;
if (ch >= '0' && ch <= '9') {
ii = ch - '0';
@@ -582,7 +579,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
ppToken->name[len++] = (char)ch;
isUnsigned = true;
-#ifndef GLSLANG_WEB
int nextCh = getch();
if (nextCh == 'l' || nextCh == 'L') {
if (len < MaxTokenLength)
@@ -608,7 +604,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt16 = true;
-#endif
} else
ungetch();
ppToken->name[len] = '\0';
@@ -639,6 +634,108 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
}
+ } else if ((ch == 'b' || ch == 'B') && pp->parseContext.intermediate.getSource() == EShSourceHlsl) {
+ // must be binary
+ bool isUnsigned = false;
+ bool isInt64 = false;
+ bool isInt16 = false;
+ ppToken->name[len++] = (char)ch;
+ ch = getch();
+
+ // Check value
+ if ((ch == '0' || ch == '1'))
+ {
+ ival = 0;
+ do {
+ if (len < MaxTokenLength && ival <= 0x7fffffffffffffffull) {
+ ppToken->name[len++] = (char)ch;
+ if (ch == '0' || ch == '1') {
+ ii = ch - '0';
+ } else {
+ pp->parseContext.ppError(ppToken->loc, "bad digit in binary literal", "", "");
+ }
+ ival = (ival << 1) | ii;
+ }
+ else
+ {
+ if (! AlreadyComplained) {
+ if(len < MaxTokenLength)
+ pp->parseContext.ppError(ppToken->loc, "binary literal too big", "", "");
+ else
+ pp->parseContext.ppError(ppToken->loc, "binary literal too long", "", "");
+ AlreadyComplained = 1;
+ }
+ ival = 0xffffffffffffffffull;
+ }
+ ch = getch();
+ } while (ch == '0' || ch == '1');
+ }
+ else
+ {
+ pp->parseContext.ppError(ppToken->loc, "bad digit in binary literal", "", "");
+ }
+
+ // check type
+ if (ch == 'u' || ch == 'U') {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)ch;
+ isUnsigned = true;
+
+ int nextCh = getch();
+ if (nextCh == 'l' || nextCh == 'L') {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)nextCh;
+ isInt64 = true;
+ } else
+ ungetch();
+
+ nextCh = getch();
+ if ((nextCh == 's' || nextCh == 'S') &&
+ pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)nextCh;
+ isInt16 = true;
+ } else
+ ungetch();
+ } else if (ch == 'l' || ch == 'L') {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)ch;
+ isInt64 = true;
+ } else if ((ch == 's' || ch == 'S') &&
+ pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
+ if (len < MaxTokenLength)
+ ppToken->name[len++] = (char)ch;
+ isInt16 = true;
+ } else {
+ ungetch();
+ }
+ ppToken->name[len] = '\0';
+
+ // Assign value
+ if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
+ if (pp->ifdepth == 0) {
+ pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
+ "64-bit binary literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int64_Extensions, Int64_Extensions, "64-bit binary literal");
+ }
+ ppToken->i64val = ival;
+ return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64;
+ } else if (isInt16) {
+ if (pp->ifdepth == 0) {
+ if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
+ pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
+ "16-bit binary literal");
+ pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0,
+ Num_Int16_Extensions, Int16_Extensions, "16-bit binary literal");
+ }
+ }
+ ppToken->ival = (int)ival;
+ return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
+ } else {
+ ppToken->ival = (int)ival;
+ return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
+ }
} else {
// could be octal integer or floating point, speculative pursue octal until it must be floating point
@@ -690,7 +787,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
ppToken->name[len++] = (char)ch;
isUnsigned = true;
-#ifndef GLSLANG_WEB
int nextCh = getch();
if (nextCh == 'l' || nextCh == 'L') {
if (len < MaxTokenLength)
@@ -716,7 +812,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt16 = true;
-#endif
} else
ungetch();
ppToken->name[len] = '\0';
@@ -779,7 +874,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
ppToken->name[len++] = (char)ch;
isUnsigned = true;
-#ifndef GLSLANG_WEB
int nextCh = getch();
if (nextCh == 'l' || nextCh == 'L') {
if (len < MaxTokenLength)
@@ -805,7 +899,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt16 = true;
-#endif
} else
ungetch();
diff --git a/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
index 121bfca312..e6ee64cf9e 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp
@@ -113,7 +113,6 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken
int atom = stream[currentPos++].get(*ppToken);
ppToken->loc = parseContext.getCurrentLoc();
-#ifndef GLSLANG_WEB
// Check for ##, unless the current # is the last character
if (atom == '#') {
if (peekToken('#')) {
@@ -123,7 +122,6 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken
atom = PpAtomPaste;
}
}
-#endif
return atom;
}
diff --git a/thirdparty/glslang/glslang/MachineIndependent/propagateNoContraction.cpp b/thirdparty/glslang/glslang/MachineIndependent/propagateNoContraction.cpp
index a1aa5ea6b4..7b5cd03fa6 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/propagateNoContraction.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/propagateNoContraction.cpp
@@ -37,8 +37,6 @@
// propagate the 'noContraction' qualifier.
//
-#ifndef GLSLANG_WEB
-
#include "propagateNoContraction.h"
#include <cstdlib>
@@ -865,6 +863,4 @@ void PropagateNoContraction(const glslang::TIntermediate& intermediate)
precise_object_accesschains.erase(precise_object_accesschain);
}
}
-};
-
-#endif // GLSLANG_WEB
+}
diff --git a/thirdparty/glslang/glslang/MachineIndependent/reflection.cpp b/thirdparty/glslang/glslang/MachineIndependent/reflection.cpp
index 144f85bdb7..6c7d3a2c99 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/reflection.cpp
+++ b/thirdparty/glslang/glslang/MachineIndependent/reflection.cpp
@@ -33,8 +33,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(GLSLANG_WEB)
-
#include "../Include/Common.h"
#include "reflection.h"
#include "LiveTraverser.h"
@@ -1270,5 +1268,3 @@ void TReflection::dump()
}
} // end namespace glslang
-
-#endif // !GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/MachineIndependent/reflection.h b/thirdparty/glslang/glslang/MachineIndependent/reflection.h
index bfd5452666..221d93f8b5 100644
--- a/thirdparty/glslang/glslang/MachineIndependent/reflection.h
+++ b/thirdparty/glslang/glslang/MachineIndependent/reflection.h
@@ -33,8 +33,6 @@
// POSSIBILITY OF SUCH DAMAGE.
//
-#if !defined(GLSLANG_WEB)
-
#ifndef _REFLECTION_INCLUDED
#define _REFLECTION_INCLUDED
@@ -219,5 +217,3 @@ protected:
} // end namespace glslang
#endif // _REFLECTION_INCLUDED
-
-#endif // !GLSLANG_WEB
diff --git a/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp b/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
index 9a31a9aadb..fbb51f7bd1 100644
--- a/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
+++ b/thirdparty/glslang/glslang/OSDependent/Unix/ossource.cpp
@@ -36,15 +36,8 @@
// This file contains the Linux-specific functions
//
#include "../osinclude.h"
-#include "../../../OGLCompilersDLL/InitializeDll.h"
-#include <pthread.h>
-#include <semaphore.h>
-#include <assert.h>
-#include <errno.h>
-#include <stdint.h>
#include <cstdio>
-#include <sys/time.h>
#if !defined(__Fuchsia__)
#include <sys/resource.h>
@@ -52,104 +45,6 @@
namespace glslang {
-//
-// Thread cleanup
-//
-
-//
-// Thread Local Storage Operations
-//
-inline OS_TLSIndex PthreadKeyToTLSIndex(pthread_key_t key)
-{
- return (OS_TLSIndex)((uintptr_t)key + 1);
-}
-
-inline pthread_key_t TLSIndexToPthreadKey(OS_TLSIndex nIndex)
-{
- return (pthread_key_t)((uintptr_t)nIndex - 1);
-}
-
-OS_TLSIndex OS_AllocTLSIndex()
-{
- pthread_key_t pPoolIndex;
-
- //
- // Create global pool key.
- //
- if ((pthread_key_create(&pPoolIndex, nullptr)) != 0) {
- assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
- return OS_INVALID_TLS_INDEX;
- }
- else
- return PthreadKeyToTLSIndex(pPoolIndex);
-}
-
-bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
-{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
-
- if (pthread_setspecific(TLSIndexToPthreadKey(nIndex), lpvValue) == 0)
- return true;
- else
- return false;
-}
-
-void* OS_GetTLSValue(OS_TLSIndex nIndex)
-{
- //
- // This function should return 0 if nIndex is invalid.
- //
- assert(nIndex != OS_INVALID_TLS_INDEX);
- return pthread_getspecific(TLSIndexToPthreadKey(nIndex));
-}
-
-bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
-{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
-
- //
- // Delete the global pool key.
- //
- if (pthread_key_delete(TLSIndexToPthreadKey(nIndex)) == 0)
- return true;
- else
- return false;
-}
-
-namespace {
- pthread_mutex_t gMutex;
-}
-
-static void InitMutex(void)
-{
- pthread_mutexattr_t mutexattr;
- pthread_mutexattr_init(&mutexattr);
- pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE);
- pthread_mutex_init(&gMutex, &mutexattr);
-}
-
-void InitGlobalLock()
-{
- static pthread_once_t once = PTHREAD_ONCE_INIT;
- pthread_once(&once, InitMutex);
-}
-
-void GetGlobalLock()
-{
- pthread_mutex_lock(&gMutex);
-}
-
-void ReleaseGlobalLock()
-{
- pthread_mutex_unlock(&gMutex);
-}
-
// #define DUMP_COUNTERS
void OS_DumpMemoryCounters()
diff --git a/thirdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp b/thirdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp
index f2306a6092..c820da6aa4 100644
--- a/thirdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp
+++ b/thirdparty/glslang/glslang/OSDependent/Web/glslang.js.cpp
@@ -141,6 +141,15 @@ const TBuiltInResource DefaultTBuiltInResource = {
/* .maxTaskWorkGroupSizeY_NV = */ 1,
/* .maxTaskWorkGroupSizeZ_NV = */ 1,
/* .maxMeshViewCountNV = */ 4,
+ /* .maxMeshOutputVerticesEXT = */ 256,
+ /* .maxMeshOutputPrimitivesEXT = */ 512,
+ /* .maxMeshWorkGroupSizeX_EXT = */ 32,
+ /* .maxMeshWorkGroupSizeY_EXT = */ 1,
+ /* .maxMeshWorkGroupSizeZ_EXT = */ 1,
+ /* .maxTaskWorkGroupSizeX_EXT = */ 32,
+ /* .maxTaskWorkGroupSizeY_EXT = */ 1,
+ /* .maxTaskWorkGroupSizeZ_EXT = */ 1,
+ /* .maxMeshViewCountEXT = */ 4,
/* .maxDualSourceDrawBuffersEXT = */ 1,
/* .limits = */ {
diff --git a/thirdparty/glslang/glslang/OSDependent/Web/glslang.pre.js b/thirdparty/glslang/glslang/OSDependent/Web/glslang.pre.js
index 46a569506d..390390e99f 100644
--- a/thirdparty/glslang/glslang/OSDependent/Web/glslang.pre.js
+++ b/thirdparty/glslang/glslang/OSDependent/Web/glslang.pre.js
@@ -25,7 +25,7 @@ Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug, spirv_ve
var p_output = Module['_malloc'](4);
var p_output_len = Module['_malloc'](4);
- var id = ccall('convert_glsl_to_spirv',
+ var id = Module['ccall']('convert_glsl_to_spirv',
'number',
['string', 'number', 'boolean', 'number', 'number', 'number'],
[glsl, shader_stage_int, gen_debug, spirv_version_int, p_output, p_output_len]);
diff --git a/thirdparty/glslang/glslang/OSDependent/Windows/ossource.cpp b/thirdparty/glslang/glslang/OSDependent/Windows/ossource.cpp
index fa372a2ccd..d7f89f71b6 100644
--- a/thirdparty/glslang/glslang/OSDependent/Windows/ossource.cpp
+++ b/thirdparty/glslang/glslang/OSDependent/Windows/ossource.cpp
@@ -37,11 +37,9 @@
#define STRICT
#define VC_EXTRALEAN 1
#include <windows.h>
-#include <cassert>
#include <process.h>
#include <psapi.h>
#include <cstdio>
-#include <cstdint>
//
// This file contains the Window-OS-specific functions
@@ -53,84 +51,6 @@
namespace glslang {
-inline OS_TLSIndex ToGenericTLSIndex (DWORD handle)
-{
- return (OS_TLSIndex)((uintptr_t)handle + 1);
-}
-
-inline DWORD ToNativeTLSIndex (OS_TLSIndex nIndex)
-{
- return (DWORD)((uintptr_t)nIndex - 1);
-}
-
-//
-// Thread Local Storage Operations
-//
-OS_TLSIndex OS_AllocTLSIndex()
-{
- DWORD dwIndex = TlsAlloc();
- if (dwIndex == TLS_OUT_OF_INDEXES) {
- assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage");
- return OS_INVALID_TLS_INDEX;
- }
-
- return ToGenericTLSIndex(dwIndex);
-}
-
-bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue)
-{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
-
- if (TlsSetValue(ToNativeTLSIndex(nIndex), lpvValue))
- return true;
- else
- return false;
-}
-
-void* OS_GetTLSValue(OS_TLSIndex nIndex)
-{
- assert(nIndex != OS_INVALID_TLS_INDEX);
- return TlsGetValue(ToNativeTLSIndex(nIndex));
-}
-
-bool OS_FreeTLSIndex(OS_TLSIndex nIndex)
-{
- if (nIndex == OS_INVALID_TLS_INDEX) {
- assert(0 && "OS_SetTLSValue(): Invalid TLS Index");
- return false;
- }
-
- if (TlsFree(ToNativeTLSIndex(nIndex)))
- return true;
- else
- return false;
-}
-
-HANDLE GlobalLock;
-
-void InitGlobalLock()
-{
- GlobalLock = CreateMutex(nullptr, false, nullptr);
-}
-
-void GetGlobalLock()
-{
- WaitForSingleObject(GlobalLock, INFINITE);
-}
-
-void ReleaseGlobalLock()
-{
- ReleaseMutex(GlobalLock);
-}
-
-unsigned int __stdcall EnterGenericThread (void* entry)
-{
- return ((TThreadEntrypoint)entry)(nullptr);
-}
-
//#define DUMP_COUNTERS
void OS_DumpMemoryCounters()
diff --git a/thirdparty/glslang/glslang/OSDependent/osinclude.h b/thirdparty/glslang/glslang/OSDependent/osinclude.h
index 7eaa113402..0d677e4afd 100644
--- a/thirdparty/glslang/glslang/OSDependent/osinclude.h
+++ b/thirdparty/glslang/glslang/OSDependent/osinclude.h
@@ -37,23 +37,6 @@
namespace glslang {
-//
-// Thread Local Storage Operations
-//
-typedef void* OS_TLSIndex;
-#define OS_INVALID_TLS_INDEX nullptr
-
-OS_TLSIndex OS_AllocTLSIndex();
-bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue);
-bool OS_FreeTLSIndex(OS_TLSIndex nIndex);
-void* OS_GetTLSValue(OS_TLSIndex nIndex);
-
-void InitGlobalLock();
-void GetGlobalLock();
-void ReleaseGlobalLock();
-
-typedef unsigned int (*TThreadEntrypoint)(void*);
-
void OS_DumpMemoryCounters();
} // end namespace glslang
diff --git a/thirdparty/glslang/glslang/Public/ResourceLimits.h b/thirdparty/glslang/glslang/Public/ResourceLimits.h
new file mode 100644
index 0000000000..f70be8172a
--- /dev/null
+++ b/thirdparty/glslang/glslang/Public/ResourceLimits.h
@@ -0,0 +1,57 @@
+//
+// Copyright (C) 2016 Google, Inc.
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+//
+// Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#ifndef _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_
+#define _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_
+
+#include <string>
+
+#include "../Include/ResourceLimits.h"
+
+// Return pointer to user-writable Resource to pass through API in
+// future-proof way.
+extern TBuiltInResource* GetResources();
+
+// These are the default resources for TBuiltInResources, used for both
+// - parsing this string for the case where the user didn't supply one,
+// - dumping out a template for user construction of a config file.
+extern const TBuiltInResource* GetDefaultResources();
+
+// Returns the DefaultTBuiltInResource as a human-readable string.
+std::string GetDefaultTBuiltInResourceString();
+
+// Decodes the resource limits from |config| to |resources|.
+void DecodeResourceLimits(TBuiltInResource* resources, char* config);
+
+#endif // _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_
diff --git a/thirdparty/glslang/glslang/Public/ShaderLang.h b/thirdparty/glslang/glslang/Public/ShaderLang.h
index 90a5302a82..e037e63f0b 100644
--- a/thirdparty/glslang/glslang/Public/ShaderLang.h
+++ b/thirdparty/glslang/glslang/Public/ShaderLang.h
@@ -728,8 +728,6 @@ private:
TShader& operator=(TShader&);
};
-#if !defined(GLSLANG_WEB)
-
//
// A reflection database and its interface, consistent with the OpenGL API reflection queries.
//
@@ -846,8 +844,6 @@ public:
virtual void addStage(EShLanguage stage, TIntermediate& stageIntermediate) = 0;
};
-#endif // !GLSLANG_WEB
-
// Make one TProgram per set of shaders that will get linked together. Add all
// the shaders that are to be linked together. After calling shader.parse()
// for all shaders, call link().
@@ -867,8 +863,6 @@ public:
TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; }
-#if !defined(GLSLANG_WEB)
-
// Reflection Interface
// call first, to do liveness analysis, index mapping, etc.; returns false on failure
@@ -961,7 +955,6 @@ public:
// If resolver is not provided it uses the previous approach
// and respects auto assignment and offsets.
GLSLANG_EXPORT bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr);
-#endif // !GLSLANG_WEB
protected:
GLSLANG_EXPORT bool linkStage(EShLanguage, EShMessages);
@@ -972,9 +965,7 @@ protected:
TIntermediate* intermediate[EShLangCount];
bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage
TInfoSink* infoSink;
-#if !defined(GLSLANG_WEB)
TReflection* reflection;
-#endif
bool linked;
private:
diff --git a/thirdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp b/thirdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp
new file mode 100644
index 0000000000..0e9d1b5480
--- /dev/null
+++ b/thirdparty/glslang/glslang/ResourceLimits/ResourceLimits.cpp
@@ -0,0 +1,542 @@
+//
+// Copyright (C) 2016 Google, Inc.
+//
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+// Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//
+// Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+//
+// Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+#include <cstdlib>
+#include <cstring>
+#include <sstream>
+#include <cctype>
+
+#include "glslang/Public/ResourceLimits.h"
+
+TBuiltInResource Resources;
+
+const TBuiltInResource DefaultTBuiltInResource = {
+ /* .MaxLights = */ 32,
+ /* .MaxClipPlanes = */ 6,
+ /* .MaxTextureUnits = */ 32,
+ /* .MaxTextureCoords = */ 32,
+ /* .MaxVertexAttribs = */ 64,
+ /* .MaxVertexUniformComponents = */ 4096,
+ /* .MaxVaryingFloats = */ 64,
+ /* .MaxVertexTextureImageUnits = */ 32,
+ /* .MaxCombinedTextureImageUnits = */ 80,
+ /* .MaxTextureImageUnits = */ 32,
+ /* .MaxFragmentUniformComponents = */ 4096,
+ /* .MaxDrawBuffers = */ 32,
+ /* .MaxVertexUniformVectors = */ 128,
+ /* .MaxVaryingVectors = */ 8,
+ /* .MaxFragmentUniformVectors = */ 16,
+ /* .MaxVertexOutputVectors = */ 16,
+ /* .MaxFragmentInputVectors = */ 15,
+ /* .MinProgramTexelOffset = */ -8,
+ /* .MaxProgramTexelOffset = */ 7,
+ /* .MaxClipDistances = */ 8,
+ /* .MaxComputeWorkGroupCountX = */ 65535,
+ /* .MaxComputeWorkGroupCountY = */ 65535,
+ /* .MaxComputeWorkGroupCountZ = */ 65535,
+ /* .MaxComputeWorkGroupSizeX = */ 1024,
+ /* .MaxComputeWorkGroupSizeY = */ 1024,
+ /* .MaxComputeWorkGroupSizeZ = */ 64,
+ /* .MaxComputeUniformComponents = */ 1024,
+ /* .MaxComputeTextureImageUnits = */ 16,
+ /* .MaxComputeImageUniforms = */ 8,
+ /* .MaxComputeAtomicCounters = */ 8,
+ /* .MaxComputeAtomicCounterBuffers = */ 1,
+ /* .MaxVaryingComponents = */ 60,
+ /* .MaxVertexOutputComponents = */ 64,
+ /* .MaxGeometryInputComponents = */ 64,
+ /* .MaxGeometryOutputComponents = */ 128,
+ /* .MaxFragmentInputComponents = */ 128,
+ /* .MaxImageUnits = */ 8,
+ /* .MaxCombinedImageUnitsAndFragmentOutputs = */ 8,
+ /* .MaxCombinedShaderOutputResources = */ 8,
+ /* .MaxImageSamples = */ 0,
+ /* .MaxVertexImageUniforms = */ 0,
+ /* .MaxTessControlImageUniforms = */ 0,
+ /* .MaxTessEvaluationImageUniforms = */ 0,
+ /* .MaxGeometryImageUniforms = */ 0,
+ /* .MaxFragmentImageUniforms = */ 8,
+ /* .MaxCombinedImageUniforms = */ 8,
+ /* .MaxGeometryTextureImageUnits = */ 16,
+ /* .MaxGeometryOutputVertices = */ 256,
+ /* .MaxGeometryTotalOutputComponents = */ 1024,
+ /* .MaxGeometryUniformComponents = */ 1024,
+ /* .MaxGeometryVaryingComponents = */ 64,
+ /* .MaxTessControlInputComponents = */ 128,
+ /* .MaxTessControlOutputComponents = */ 128,
+ /* .MaxTessControlTextureImageUnits = */ 16,
+ /* .MaxTessControlUniformComponents = */ 1024,
+ /* .MaxTessControlTotalOutputComponents = */ 4096,
+ /* .MaxTessEvaluationInputComponents = */ 128,
+ /* .MaxTessEvaluationOutputComponents = */ 128,
+ /* .MaxTessEvaluationTextureImageUnits = */ 16,
+ /* .MaxTessEvaluationUniformComponents = */ 1024,
+ /* .MaxTessPatchComponents = */ 120,
+ /* .MaxPatchVertices = */ 32,
+ /* .MaxTessGenLevel = */ 64,
+ /* .MaxViewports = */ 16,
+ /* .MaxVertexAtomicCounters = */ 0,
+ /* .MaxTessControlAtomicCounters = */ 0,
+ /* .MaxTessEvaluationAtomicCounters = */ 0,
+ /* .MaxGeometryAtomicCounters = */ 0,
+ /* .MaxFragmentAtomicCounters = */ 8,
+ /* .MaxCombinedAtomicCounters = */ 8,
+ /* .MaxAtomicCounterBindings = */ 1,
+ /* .MaxVertexAtomicCounterBuffers = */ 0,
+ /* .MaxTessControlAtomicCounterBuffers = */ 0,
+ /* .MaxTessEvaluationAtomicCounterBuffers = */ 0,
+ /* .MaxGeometryAtomicCounterBuffers = */ 0,
+ /* .MaxFragmentAtomicCounterBuffers = */ 1,
+ /* .MaxCombinedAtomicCounterBuffers = */ 1,
+ /* .MaxAtomicCounterBufferSize = */ 16384,
+ /* .MaxTransformFeedbackBuffers = */ 4,
+ /* .MaxTransformFeedbackInterleavedComponents = */ 64,
+ /* .MaxCullDistances = */ 8,
+ /* .MaxCombinedClipAndCullDistances = */ 8,
+ /* .MaxSamples = */ 4,
+ /* .maxMeshOutputVerticesNV = */ 256,
+ /* .maxMeshOutputPrimitivesNV = */ 512,
+ /* .maxMeshWorkGroupSizeX_NV = */ 32,
+ /* .maxMeshWorkGroupSizeY_NV = */ 1,
+ /* .maxMeshWorkGroupSizeZ_NV = */ 1,
+ /* .maxTaskWorkGroupSizeX_NV = */ 32,
+ /* .maxTaskWorkGroupSizeY_NV = */ 1,
+ /* .maxTaskWorkGroupSizeZ_NV = */ 1,
+ /* .maxMeshViewCountNV = */ 4,
+ /* .maxMeshOutputVerticesEXT = */ 256,
+ /* .maxMeshOutputPrimitivesEXT = */ 256,
+ /* .maxMeshWorkGroupSizeX_EXT = */ 128,
+ /* .maxMeshWorkGroupSizeY_EXT = */ 128,
+ /* .maxMeshWorkGroupSizeZ_EXT = */ 128,
+ /* .maxTaskWorkGroupSizeX_EXT = */ 128,
+ /* .maxTaskWorkGroupSizeY_EXT = */ 128,
+ /* .maxTaskWorkGroupSizeZ_EXT = */ 128,
+ /* .maxMeshViewCountEXT = */ 4,
+ /* .maxDualSourceDrawBuffersEXT = */ 1,
+
+ /* .limits = */ {
+ /* .nonInductiveForLoops = */ 1,
+ /* .whileLoops = */ 1,
+ /* .doWhileLoops = */ 1,
+ /* .generalUniformIndexing = */ 1,
+ /* .generalAttributeMatrixVectorIndexing = */ 1,
+ /* .generalVaryingIndexing = */ 1,
+ /* .generalSamplerIndexing = */ 1,
+ /* .generalVariableIndexing = */ 1,
+ /* .generalConstantMatrixVectorIndexing = */ 1,
+ }};
+
+std::string GetDefaultTBuiltInResourceString()
+{
+ std::ostringstream ostream;
+
+ ostream << "MaxLights " << DefaultTBuiltInResource.maxLights << "\n"
+ << "MaxClipPlanes " << DefaultTBuiltInResource.maxClipPlanes << "\n"
+ << "MaxTextureUnits " << DefaultTBuiltInResource.maxTextureUnits << "\n"
+ << "MaxTextureCoords " << DefaultTBuiltInResource.maxTextureCoords << "\n"
+ << "MaxVertexAttribs " << DefaultTBuiltInResource.maxVertexAttribs << "\n"
+ << "MaxVertexUniformComponents " << DefaultTBuiltInResource.maxVertexUniformComponents << "\n"
+ << "MaxVaryingFloats " << DefaultTBuiltInResource.maxVaryingFloats << "\n"
+ << "MaxVertexTextureImageUnits " << DefaultTBuiltInResource.maxVertexTextureImageUnits << "\n"
+ << "MaxCombinedTextureImageUnits " << DefaultTBuiltInResource.maxCombinedTextureImageUnits << "\n"
+ << "MaxTextureImageUnits " << DefaultTBuiltInResource.maxTextureImageUnits << "\n"
+ << "MaxFragmentUniformComponents " << DefaultTBuiltInResource.maxFragmentUniformComponents << "\n"
+ << "MaxDrawBuffers " << DefaultTBuiltInResource.maxDrawBuffers << "\n"
+ << "MaxVertexUniformVectors " << DefaultTBuiltInResource.maxVertexUniformVectors << "\n"
+ << "MaxVaryingVectors " << DefaultTBuiltInResource.maxVaryingVectors << "\n"
+ << "MaxFragmentUniformVectors " << DefaultTBuiltInResource.maxFragmentUniformVectors << "\n"
+ << "MaxVertexOutputVectors " << DefaultTBuiltInResource.maxVertexOutputVectors << "\n"
+ << "MaxFragmentInputVectors " << DefaultTBuiltInResource.maxFragmentInputVectors << "\n"
+ << "MinProgramTexelOffset " << DefaultTBuiltInResource.minProgramTexelOffset << "\n"
+ << "MaxProgramTexelOffset " << DefaultTBuiltInResource.maxProgramTexelOffset << "\n"
+ << "MaxClipDistances " << DefaultTBuiltInResource.maxClipDistances << "\n"
+ << "MaxComputeWorkGroupCountX " << DefaultTBuiltInResource.maxComputeWorkGroupCountX << "\n"
+ << "MaxComputeWorkGroupCountY " << DefaultTBuiltInResource.maxComputeWorkGroupCountY << "\n"
+ << "MaxComputeWorkGroupCountZ " << DefaultTBuiltInResource.maxComputeWorkGroupCountZ << "\n"
+ << "MaxComputeWorkGroupSizeX " << DefaultTBuiltInResource.maxComputeWorkGroupSizeX << "\n"
+ << "MaxComputeWorkGroupSizeY " << DefaultTBuiltInResource.maxComputeWorkGroupSizeY << "\n"
+ << "MaxComputeWorkGroupSizeZ " << DefaultTBuiltInResource.maxComputeWorkGroupSizeZ << "\n"
+ << "MaxComputeUniformComponents " << DefaultTBuiltInResource.maxComputeUniformComponents << "\n"
+ << "MaxComputeTextureImageUnits " << DefaultTBuiltInResource.maxComputeTextureImageUnits << "\n"
+ << "MaxComputeImageUniforms " << DefaultTBuiltInResource.maxComputeImageUniforms << "\n"
+ << "MaxComputeAtomicCounters " << DefaultTBuiltInResource.maxComputeAtomicCounters << "\n"
+ << "MaxComputeAtomicCounterBuffers " << DefaultTBuiltInResource.maxComputeAtomicCounterBuffers << "\n"
+ << "MaxVaryingComponents " << DefaultTBuiltInResource.maxVaryingComponents << "\n"
+ << "MaxVertexOutputComponents " << DefaultTBuiltInResource.maxVertexOutputComponents << "\n"
+ << "MaxGeometryInputComponents " << DefaultTBuiltInResource.maxGeometryInputComponents << "\n"
+ << "MaxGeometryOutputComponents " << DefaultTBuiltInResource.maxGeometryOutputComponents << "\n"
+ << "MaxFragmentInputComponents " << DefaultTBuiltInResource.maxFragmentInputComponents << "\n"
+ << "MaxImageUnits " << DefaultTBuiltInResource.maxImageUnits << "\n"
+ << "MaxCombinedImageUnitsAndFragmentOutputs " << DefaultTBuiltInResource.maxCombinedImageUnitsAndFragmentOutputs << "\n"
+ << "MaxCombinedShaderOutputResources " << DefaultTBuiltInResource.maxCombinedShaderOutputResources << "\n"
+ << "MaxImageSamples " << DefaultTBuiltInResource.maxImageSamples << "\n"
+ << "MaxVertexImageUniforms " << DefaultTBuiltInResource.maxVertexImageUniforms << "\n"
+ << "MaxTessControlImageUniforms " << DefaultTBuiltInResource.maxTessControlImageUniforms << "\n"
+ << "MaxTessEvaluationImageUniforms " << DefaultTBuiltInResource.maxTessEvaluationImageUniforms << "\n"
+ << "MaxGeometryImageUniforms " << DefaultTBuiltInResource.maxGeometryImageUniforms << "\n"
+ << "MaxFragmentImageUniforms " << DefaultTBuiltInResource.maxFragmentImageUniforms << "\n"
+ << "MaxCombinedImageUniforms " << DefaultTBuiltInResource.maxCombinedImageUniforms << "\n"
+ << "MaxGeometryTextureImageUnits " << DefaultTBuiltInResource.maxGeometryTextureImageUnits << "\n"
+ << "MaxGeometryOutputVertices " << DefaultTBuiltInResource.maxGeometryOutputVertices << "\n"
+ << "MaxGeometryTotalOutputComponents " << DefaultTBuiltInResource.maxGeometryTotalOutputComponents << "\n"
+ << "MaxGeometryUniformComponents " << DefaultTBuiltInResource.maxGeometryUniformComponents << "\n"
+ << "MaxGeometryVaryingComponents " << DefaultTBuiltInResource.maxGeometryVaryingComponents << "\n"
+ << "MaxTessControlInputComponents " << DefaultTBuiltInResource.maxTessControlInputComponents << "\n"
+ << "MaxTessControlOutputComponents " << DefaultTBuiltInResource.maxTessControlOutputComponents << "\n"
+ << "MaxTessControlTextureImageUnits " << DefaultTBuiltInResource.maxTessControlTextureImageUnits << "\n"
+ << "MaxTessControlUniformComponents " << DefaultTBuiltInResource.maxTessControlUniformComponents << "\n"
+ << "MaxTessControlTotalOutputComponents " << DefaultTBuiltInResource.maxTessControlTotalOutputComponents << "\n"
+ << "MaxTessEvaluationInputComponents " << DefaultTBuiltInResource.maxTessEvaluationInputComponents << "\n"
+ << "MaxTessEvaluationOutputComponents " << DefaultTBuiltInResource.maxTessEvaluationOutputComponents << "\n"
+ << "MaxTessEvaluationTextureImageUnits " << DefaultTBuiltInResource.maxTessEvaluationTextureImageUnits << "\n"
+ << "MaxTessEvaluationUniformComponents " << DefaultTBuiltInResource.maxTessEvaluationUniformComponents << "\n"
+ << "MaxTessPatchComponents " << DefaultTBuiltInResource.maxTessPatchComponents << "\n"
+ << "MaxPatchVertices " << DefaultTBuiltInResource.maxPatchVertices << "\n"
+ << "MaxTessGenLevel " << DefaultTBuiltInResource.maxTessGenLevel << "\n"
+ << "MaxViewports " << DefaultTBuiltInResource.maxViewports << "\n"
+ << "MaxVertexAtomicCounters " << DefaultTBuiltInResource.maxVertexAtomicCounters << "\n"
+ << "MaxTessControlAtomicCounters " << DefaultTBuiltInResource.maxTessControlAtomicCounters << "\n"
+ << "MaxTessEvaluationAtomicCounters " << DefaultTBuiltInResource.maxTessEvaluationAtomicCounters << "\n"
+ << "MaxGeometryAtomicCounters " << DefaultTBuiltInResource.maxGeometryAtomicCounters << "\n"
+ << "MaxFragmentAtomicCounters " << DefaultTBuiltInResource.maxFragmentAtomicCounters << "\n"
+ << "MaxCombinedAtomicCounters " << DefaultTBuiltInResource.maxCombinedAtomicCounters << "\n"
+ << "MaxAtomicCounterBindings " << DefaultTBuiltInResource.maxAtomicCounterBindings << "\n"
+ << "MaxVertexAtomicCounterBuffers " << DefaultTBuiltInResource.maxVertexAtomicCounterBuffers << "\n"
+ << "MaxTessControlAtomicCounterBuffers " << DefaultTBuiltInResource.maxTessControlAtomicCounterBuffers << "\n"
+ << "MaxTessEvaluationAtomicCounterBuffers " << DefaultTBuiltInResource.maxTessEvaluationAtomicCounterBuffers << "\n"
+ << "MaxGeometryAtomicCounterBuffers " << DefaultTBuiltInResource.maxGeometryAtomicCounterBuffers << "\n"
+ << "MaxFragmentAtomicCounterBuffers " << DefaultTBuiltInResource.maxFragmentAtomicCounterBuffers << "\n"
+ << "MaxCombinedAtomicCounterBuffers " << DefaultTBuiltInResource.maxCombinedAtomicCounterBuffers << "\n"
+ << "MaxAtomicCounterBufferSize " << DefaultTBuiltInResource.maxAtomicCounterBufferSize << "\n"
+ << "MaxTransformFeedbackBuffers " << DefaultTBuiltInResource.maxTransformFeedbackBuffers << "\n"
+ << "MaxTransformFeedbackInterleavedComponents " << DefaultTBuiltInResource.maxTransformFeedbackInterleavedComponents << "\n"
+ << "MaxCullDistances " << DefaultTBuiltInResource.maxCullDistances << "\n"
+ << "MaxCombinedClipAndCullDistances " << DefaultTBuiltInResource.maxCombinedClipAndCullDistances << "\n"
+ << "MaxSamples " << DefaultTBuiltInResource.maxSamples << "\n"
+ << "MaxMeshOutputVerticesNV " << DefaultTBuiltInResource.maxMeshOutputVerticesNV << "\n"
+ << "MaxMeshOutputPrimitivesNV " << DefaultTBuiltInResource.maxMeshOutputPrimitivesNV << "\n"
+ << "MaxMeshWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_NV << "\n"
+ << "MaxMeshWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_NV << "\n"
+ << "MaxMeshWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_NV << "\n"
+ << "MaxTaskWorkGroupSizeX_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_NV << "\n"
+ << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n"
+ << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n"
+ << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n"
+ << "MaxMeshOutputVerticesEXT " << DefaultTBuiltInResource.maxMeshOutputVerticesEXT << "\n"
+ << "MaxMeshOutputPrimitivesEXT " << DefaultTBuiltInResource.maxMeshOutputPrimitivesEXT << "\n"
+ << "MaxMeshWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_EXT << "\n"
+ << "MaxMeshWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_EXT << "\n"
+ << "MaxMeshWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_EXT << "\n"
+ << "MaxTaskWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_EXT << "\n"
+ << "MaxTaskWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_EXT << "\n"
+ << "MaxTaskWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_EXT << "\n"
+ << "MaxMeshViewCountEXT " << DefaultTBuiltInResource.maxMeshViewCountEXT << "\n"
+ << "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n"
+ << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n"
+ << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n"
+ << "doWhileLoops " << DefaultTBuiltInResource.limits.doWhileLoops << "\n"
+ << "generalUniformIndexing " << DefaultTBuiltInResource.limits.generalUniformIndexing << "\n"
+ << "generalAttributeMatrixVectorIndexing " << DefaultTBuiltInResource.limits.generalAttributeMatrixVectorIndexing << "\n"
+ << "generalVaryingIndexing " << DefaultTBuiltInResource.limits.generalVaryingIndexing << "\n"
+ << "generalSamplerIndexing " << DefaultTBuiltInResource.limits.generalSamplerIndexing << "\n"
+ << "generalVariableIndexing " << DefaultTBuiltInResource.limits.generalVariableIndexing << "\n"
+ << "generalConstantMatrixVectorIndexing " << DefaultTBuiltInResource.limits.generalConstantMatrixVectorIndexing << "\n"
+ ;
+
+ return ostream.str();
+}
+
+void DecodeResourceLimits(TBuiltInResource* resources, char* config)
+{
+ static const char* delims = " \t\n\r";
+
+ size_t pos = 0;
+ std::string configStr(config);
+
+ while ((pos = configStr.find_first_not_of(delims, pos)) != std::string::npos) {
+ const size_t token_s = pos;
+ const size_t token_e = configStr.find_first_of(delims, token_s);
+ const size_t value_s = configStr.find_first_not_of(delims, token_e);
+ const size_t value_e = configStr.find_first_of(delims, value_s);
+ pos = value_e;
+
+ // Faster to use compare(), but prefering readability.
+ const std::string tokenStr = configStr.substr(token_s, token_e-token_s);
+ const std::string valueStr = configStr.substr(value_s, value_e-value_s);
+
+ if (value_s == std::string::npos || ! (valueStr[0] == '-' || isdigit(valueStr[0]))) {
+ printf("Error: '%s' bad .conf file. Each name must be followed by one number.\n",
+ valueStr.c_str());
+ return;
+ }
+
+ const int value = std::atoi(valueStr.c_str());
+
+ if (tokenStr == "MaxLights")
+ resources->maxLights = value;
+ else if (tokenStr == "MaxClipPlanes")
+ resources->maxClipPlanes = value;
+ else if (tokenStr == "MaxTextureUnits")
+ resources->maxTextureUnits = value;
+ else if (tokenStr == "MaxTextureCoords")
+ resources->maxTextureCoords = value;
+ else if (tokenStr == "MaxVertexAttribs")
+ resources->maxVertexAttribs = value;
+ else if (tokenStr == "MaxVertexUniformComponents")
+ resources->maxVertexUniformComponents = value;
+ else if (tokenStr == "MaxVaryingFloats")
+ resources->maxVaryingFloats = value;
+ else if (tokenStr == "MaxVertexTextureImageUnits")
+ resources->maxVertexTextureImageUnits = value;
+ else if (tokenStr == "MaxCombinedTextureImageUnits")
+ resources->maxCombinedTextureImageUnits = value;
+ else if (tokenStr == "MaxTextureImageUnits")
+ resources->maxTextureImageUnits = value;
+ else if (tokenStr == "MaxFragmentUniformComponents")
+ resources->maxFragmentUniformComponents = value;
+ else if (tokenStr == "MaxDrawBuffers")
+ resources->maxDrawBuffers = value;
+ else if (tokenStr == "MaxVertexUniformVectors")
+ resources->maxVertexUniformVectors = value;
+ else if (tokenStr == "MaxVaryingVectors")
+ resources->maxVaryingVectors = value;
+ else if (tokenStr == "MaxFragmentUniformVectors")
+ resources->maxFragmentUniformVectors = value;
+ else if (tokenStr == "MaxVertexOutputVectors")
+ resources->maxVertexOutputVectors = value;
+ else if (tokenStr == "MaxFragmentInputVectors")
+ resources->maxFragmentInputVectors = value;
+ else if (tokenStr == "MinProgramTexelOffset")
+ resources->minProgramTexelOffset = value;
+ else if (tokenStr == "MaxProgramTexelOffset")
+ resources->maxProgramTexelOffset = value;
+ else if (tokenStr == "MaxClipDistances")
+ resources->maxClipDistances = value;
+ else if (tokenStr == "MaxComputeWorkGroupCountX")
+ resources->maxComputeWorkGroupCountX = value;
+ else if (tokenStr == "MaxComputeWorkGroupCountY")
+ resources->maxComputeWorkGroupCountY = value;
+ else if (tokenStr == "MaxComputeWorkGroupCountZ")
+ resources->maxComputeWorkGroupCountZ = value;
+ else if (tokenStr == "MaxComputeWorkGroupSizeX")
+ resources->maxComputeWorkGroupSizeX = value;
+ else if (tokenStr == "MaxComputeWorkGroupSizeY")
+ resources->maxComputeWorkGroupSizeY = value;
+ else if (tokenStr == "MaxComputeWorkGroupSizeZ")
+ resources->maxComputeWorkGroupSizeZ = value;
+ else if (tokenStr == "MaxComputeUniformComponents")
+ resources->maxComputeUniformComponents = value;
+ else if (tokenStr == "MaxComputeTextureImageUnits")
+ resources->maxComputeTextureImageUnits = value;
+ else if (tokenStr == "MaxComputeImageUniforms")
+ resources->maxComputeImageUniforms = value;
+ else if (tokenStr == "MaxComputeAtomicCounters")
+ resources->maxComputeAtomicCounters = value;
+ else if (tokenStr == "MaxComputeAtomicCounterBuffers")
+ resources->maxComputeAtomicCounterBuffers = value;
+ else if (tokenStr == "MaxVaryingComponents")
+ resources->maxVaryingComponents = value;
+ else if (tokenStr == "MaxVertexOutputComponents")
+ resources->maxVertexOutputComponents = value;
+ else if (tokenStr == "MaxGeometryInputComponents")
+ resources->maxGeometryInputComponents = value;
+ else if (tokenStr == "MaxGeometryOutputComponents")
+ resources->maxGeometryOutputComponents = value;
+ else if (tokenStr == "MaxFragmentInputComponents")
+ resources->maxFragmentInputComponents = value;
+ else if (tokenStr == "MaxImageUnits")
+ resources->maxImageUnits = value;
+ else if (tokenStr == "MaxCombinedImageUnitsAndFragmentOutputs")
+ resources->maxCombinedImageUnitsAndFragmentOutputs = value;
+ else if (tokenStr == "MaxCombinedShaderOutputResources")
+ resources->maxCombinedShaderOutputResources = value;
+ else if (tokenStr == "MaxImageSamples")
+ resources->maxImageSamples = value;
+ else if (tokenStr == "MaxVertexImageUniforms")
+ resources->maxVertexImageUniforms = value;
+ else if (tokenStr == "MaxTessControlImageUniforms")
+ resources->maxTessControlImageUniforms = value;
+ else if (tokenStr == "MaxTessEvaluationImageUniforms")
+ resources->maxTessEvaluationImageUniforms = value;
+ else if (tokenStr == "MaxGeometryImageUniforms")
+ resources->maxGeometryImageUniforms = value;
+ else if (tokenStr == "MaxFragmentImageUniforms")
+ resources->maxFragmentImageUniforms = value;
+ else if (tokenStr == "MaxCombinedImageUniforms")
+ resources->maxCombinedImageUniforms = value;
+ else if (tokenStr == "MaxGeometryTextureImageUnits")
+ resources->maxGeometryTextureImageUnits = value;
+ else if (tokenStr == "MaxGeometryOutputVertices")
+ resources->maxGeometryOutputVertices = value;
+ else if (tokenStr == "MaxGeometryTotalOutputComponents")
+ resources->maxGeometryTotalOutputComponents = value;
+ else if (tokenStr == "MaxGeometryUniformComponents")
+ resources->maxGeometryUniformComponents = value;
+ else if (tokenStr == "MaxGeometryVaryingComponents")
+ resources->maxGeometryVaryingComponents = value;
+ else if (tokenStr == "MaxTessControlInputComponents")
+ resources->maxTessControlInputComponents = value;
+ else if (tokenStr == "MaxTessControlOutputComponents")
+ resources->maxTessControlOutputComponents = value;
+ else if (tokenStr == "MaxTessControlTextureImageUnits")
+ resources->maxTessControlTextureImageUnits = value;
+ else if (tokenStr == "MaxTessControlUniformComponents")
+ resources->maxTessControlUniformComponents = value;
+ else if (tokenStr == "MaxTessControlTotalOutputComponents")
+ resources->maxTessControlTotalOutputComponents = value;
+ else if (tokenStr == "MaxTessEvaluationInputComponents")
+ resources->maxTessEvaluationInputComponents = value;
+ else if (tokenStr == "MaxTessEvaluationOutputComponents")
+ resources->maxTessEvaluationOutputComponents = value;
+ else if (tokenStr == "MaxTessEvaluationTextureImageUnits")
+ resources->maxTessEvaluationTextureImageUnits = value;
+ else if (tokenStr == "MaxTessEvaluationUniformComponents")
+ resources->maxTessEvaluationUniformComponents = value;
+ else if (tokenStr == "MaxTessPatchComponents")
+ resources->maxTessPatchComponents = value;
+ else if (tokenStr == "MaxPatchVertices")
+ resources->maxPatchVertices = value;
+ else if (tokenStr == "MaxTessGenLevel")
+ resources->maxTessGenLevel = value;
+ else if (tokenStr == "MaxViewports")
+ resources->maxViewports = value;
+ else if (tokenStr == "MaxVertexAtomicCounters")
+ resources->maxVertexAtomicCounters = value;
+ else if (tokenStr == "MaxTessControlAtomicCounters")
+ resources->maxTessControlAtomicCounters = value;
+ else if (tokenStr == "MaxTessEvaluationAtomicCounters")
+ resources->maxTessEvaluationAtomicCounters = value;
+ else if (tokenStr == "MaxGeometryAtomicCounters")
+ resources->maxGeometryAtomicCounters = value;
+ else if (tokenStr == "MaxFragmentAtomicCounters")
+ resources->maxFragmentAtomicCounters = value;
+ else if (tokenStr == "MaxCombinedAtomicCounters")
+ resources->maxCombinedAtomicCounters = value;
+ else if (tokenStr == "MaxAtomicCounterBindings")
+ resources->maxAtomicCounterBindings = value;
+ else if (tokenStr == "MaxVertexAtomicCounterBuffers")
+ resources->maxVertexAtomicCounterBuffers = value;
+ else if (tokenStr == "MaxTessControlAtomicCounterBuffers")
+ resources->maxTessControlAtomicCounterBuffers = value;
+ else if (tokenStr == "MaxTessEvaluationAtomicCounterBuffers")
+ resources->maxTessEvaluationAtomicCounterBuffers = value;
+ else if (tokenStr == "MaxGeometryAtomicCounterBuffers")
+ resources->maxGeometryAtomicCounterBuffers = value;
+ else if (tokenStr == "MaxFragmentAtomicCounterBuffers")
+ resources->maxFragmentAtomicCounterBuffers = value;
+ else if (tokenStr == "MaxCombinedAtomicCounterBuffers")
+ resources->maxCombinedAtomicCounterBuffers = value;
+ else if (tokenStr == "MaxAtomicCounterBufferSize")
+ resources->maxAtomicCounterBufferSize = value;
+ else if (tokenStr == "MaxTransformFeedbackBuffers")
+ resources->maxTransformFeedbackBuffers = value;
+ else if (tokenStr == "MaxTransformFeedbackInterleavedComponents")
+ resources->maxTransformFeedbackInterleavedComponents = value;
+ else if (tokenStr == "MaxCullDistances")
+ resources->maxCullDistances = value;
+ else if (tokenStr == "MaxCombinedClipAndCullDistances")
+ resources->maxCombinedClipAndCullDistances = value;
+ else if (tokenStr == "MaxSamples")
+ resources->maxSamples = value;
+ else if (tokenStr == "MaxMeshOutputVerticesNV")
+ resources->maxMeshOutputVerticesNV = value;
+ else if (tokenStr == "MaxMeshOutputPrimitivesNV")
+ resources->maxMeshOutputPrimitivesNV = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeX_NV")
+ resources->maxMeshWorkGroupSizeX_NV = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeY_NV")
+ resources->maxMeshWorkGroupSizeY_NV = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeZ_NV")
+ resources->maxMeshWorkGroupSizeZ_NV = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeX_NV")
+ resources->maxTaskWorkGroupSizeX_NV = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeY_NV")
+ resources->maxTaskWorkGroupSizeY_NV = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeZ_NV")
+ resources->maxTaskWorkGroupSizeZ_NV = value;
+ else if (tokenStr == "MaxMeshViewCountNV")
+ resources->maxMeshViewCountNV = value;
+ else if (tokenStr == "MaxMeshOutputVerticesEXT")
+ resources->maxMeshOutputVerticesEXT = value;
+ else if (tokenStr == "MaxMeshOutputPrimitivesEXT")
+ resources->maxMeshOutputPrimitivesEXT = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeX_EXT")
+ resources->maxMeshWorkGroupSizeX_EXT = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeY_EXT")
+ resources->maxMeshWorkGroupSizeY_EXT = value;
+ else if (tokenStr == "MaxMeshWorkGroupSizeZ_EXT")
+ resources->maxMeshWorkGroupSizeZ_EXT = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeX_EXT")
+ resources->maxTaskWorkGroupSizeX_EXT = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeY_EXT")
+ resources->maxTaskWorkGroupSizeY_EXT = value;
+ else if (tokenStr == "MaxTaskWorkGroupSizeZ_EXT")
+ resources->maxTaskWorkGroupSizeZ_EXT = value;
+ else if (tokenStr == "MaxMeshViewCountEXT")
+ resources->maxMeshViewCountEXT = value;
+ else if (tokenStr == "MaxDualSourceDrawBuffersEXT")
+ resources->maxDualSourceDrawBuffersEXT = value;
+ else if (tokenStr == "nonInductiveForLoops")
+ resources->limits.nonInductiveForLoops = (value != 0);
+ else if (tokenStr == "whileLoops")
+ resources->limits.whileLoops = (value != 0);
+ else if (tokenStr == "doWhileLoops")
+ resources->limits.doWhileLoops = (value != 0);
+ else if (tokenStr == "generalUniformIndexing")
+ resources->limits.generalUniformIndexing = (value != 0);
+ else if (tokenStr == "generalAttributeMatrixVectorIndexing")
+ resources->limits.generalAttributeMatrixVectorIndexing = (value != 0);
+ else if (tokenStr == "generalVaryingIndexing")
+ resources->limits.generalVaryingIndexing = (value != 0);
+ else if (tokenStr == "generalSamplerIndexing")
+ resources->limits.generalSamplerIndexing = (value != 0);
+ else if (tokenStr == "generalVariableIndexing")
+ resources->limits.generalVariableIndexing = (value != 0);
+ else if (tokenStr == "generalConstantMatrixVectorIndexing")
+ resources->limits.generalConstantMatrixVectorIndexing = (value != 0);
+ else
+ printf("Warning: unrecognized limit (%s) in configuration file.\n", tokenStr.c_str());
+
+ }
+}
+
+TBuiltInResource* GetResources()
+{
+ return &Resources;
+}
+
+const TBuiltInResource* GetDefaultResources()
+{
+ return &DefaultTBuiltInResource;
+}
diff --git a/thirdparty/glslang/glslang/build_info.h b/thirdparty/glslang/glslang/build_info.h
index a5bb56244a..8bffae570a 100644
--- a/thirdparty/glslang/glslang/build_info.h
+++ b/thirdparty/glslang/glslang/build_info.h
@@ -35,8 +35,8 @@
#define GLSLANG_BUILD_INFO
#define GLSLANG_VERSION_MAJOR 12
-#define GLSLANG_VERSION_MINOR 2
-#define GLSLANG_VERSION_PATCH 0
+#define GLSLANG_VERSION_MINOR 3
+#define GLSLANG_VERSION_PATCH 1
#define GLSLANG_VERSION_FLAVOR ""
#define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \