Web: Remove/rationalize a set of *_EXTENSIONS, using GLSLANG_WEB.
Focus was on the front end (not SPIR-V), minus the grammar.
Reduces #ifdef count by around 320 and makes the web build 270K smaller,
which is about 90% the target size.
The grammar and scanner will be another step, as will the SPIR-V backend.
This makes heavy use of methods #ifdef'd to return false as a global way
of turning off code, relying on C++ DCE to do the rest.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index dea911b..75357ae 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -441,7 +441,7 @@
if (qualifier.smooth)
// Smooth decoration doesn't exist in SPIR-V 1.0
return spv::DecorationMax;
- else if (qualifier.nopersp)
+ else if (qualifier.isNonPerspective())
return spv::DecorationNoPerspective;
else if (qualifier.flat)
return spv::DecorationFlat;
@@ -984,7 +984,7 @@
assert(type.getBasicType() == glslang::EbtSampler);
// Check for capabilities
- switch (type.getQualifier().layoutFormat) {
+ switch (type.getQualifier().getFormat()) {
case glslang::ElfRg32f:
case glslang::ElfRg16f:
case glslang::ElfR11fG11fB10f:
@@ -1021,7 +1021,7 @@
}
// do the translation
- switch (type.getQualifier().layoutFormat) {
+ switch (type.getQualifier().getFormat()) {
case glslang::ElfNone: return spv::ImageFormatUnknown;
case glslang::ElfRgba32f: return spv::ImageFormatRgba32f;
case glslang::ElfRgba16f: return spv::ImageFormatRgba16f;
@@ -1155,7 +1155,7 @@
}
if (type.getQualifier().isUniformOrBuffer()) {
- if (type.getQualifier().layoutPushConstant)
+ if (type.getQualifier().isPushConstant())
return spv::StorageClassPushConstant;
if (type.getBasicType() == glslang::EbtBlock)
return spv::StorageClassUniform;
@@ -1230,10 +1230,8 @@
// uniform and buffer blocks are included, unless it is a push_constant
if (type.getBasicType() == glslang::EbtBlock)
return type.getQualifier().isUniformOrBuffer() &&
-#ifdef NV_EXTENSIONS
- ! type.getQualifier().layoutShaderRecordNV &&
-#endif
- ! type.getQualifier().layoutPushConstant;
+ ! type.getQualifier().isShaderRecordNV() &&
+ ! type.getQualifier().isPushConstant();
// non block...
// basically samplerXXX/subpass/sampler/texture are all included
@@ -1253,9 +1251,9 @@
if (parent.invariant)
child.invariant = true;
+#ifndef GLSLANG_WEB
if (parent.nopersp)
child.nopersp = true;
-#ifdef AMD_EXTENSIONS
if (parent.explicitInterp)
child.explicitInterp = true;
#endif
@@ -1802,7 +1800,7 @@
// Load through a block reference is performed with a dot operator that
// is mapped to EOpIndexDirectStruct. When we get to the actual reference,
// do a load and reset the access chain.
- if (node->getLeft()->getBasicType() == glslang::EbtReference &&
+ if (node->getLeft()->isReference() &&
!node->getLeft()->getType().isArray() &&
node->getOp() == glslang::EOpIndexDirectStruct)
{
@@ -3560,7 +3558,7 @@
// Make forward pointers for any pointer members, and create a list of members to
// convert to spirv types after creating the struct.
- if (glslangMember.getBasicType() == glslang::EbtReference) {
+ if (glslangMember.isReference()) {
if (forwardPointers.find(glslangMember.getReferentType()) == forwardPointers.end()) {
deferredForwardPointers.push_back(std::make_pair(&glslangMember, memberQualifier));
}
@@ -4093,7 +4091,7 @@
if (paramPrecision != spv::NoPrecision)
decorations.push_back(paramPrecision);
TranslateMemoryDecoration(type.getQualifier(), decorations, useVulkanMemoryModel);
- if (type.getBasicType() == glslang::EbtReference) {
+ if (type.isReference()) {
// Original and non-writable params pass the pointer directly and
// use restrict/aliased, others are stored to a pointer in Function
// memory and use RestrictPointer/AliasedPointer.
@@ -7741,6 +7739,7 @@
}
if (symbol->getQualifier().hasAttachment())
builder.addDecoration(id, spv::DecorationInputAttachmentIndex, symbol->getQualifier().layoutAttachment);
+#ifndef GLSLANG_WEB
if (glslangIntermediate->getXfbMode()) {
builder.addCapability(spv::CapabilityTransformFeedback);
if (symbol->getQualifier().hasXfbBuffer()) {
@@ -7752,6 +7751,7 @@
if (symbol->getQualifier().hasXfbOffset())
builder.addDecoration(id, spv::DecorationOffset, symbol->getQualifier().layoutXfbOffset);
}
+#endif
if (symbol->getType().isImage()) {
std::vector<spv::Decoration> memory;
@@ -7815,7 +7815,7 @@
symbol->getType().getQualifier().semanticName);
}
- if (symbol->getBasicType() == glslang::EbtReference) {
+ if (symbol->isReference()) {
builder.addDecoration(id, symbol->getType().getQualifier().restrict ? spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT);
}
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index 388b29f..b0bcdfb 100644
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -50,12 +50,8 @@
// Include C-based headers that don't have a namespace
#include "GLSL.ext.KHR.h"
#include "GLSL.ext.EXT.h"
-#ifdef AMD_EXTENSIONS
#include "GLSL.ext.AMD.h"
-#endif
-#ifdef NV_EXTENSIONS
#include "GLSL.ext.NV.h"
-#endif
}
}
@@ -98,22 +94,17 @@
case 4: return "Fragment";
case 5: return "GLCompute";
case 6: return "Kernel";
-#ifdef NV_EXTENSIONS
case ExecutionModelTaskNV: return "TaskNV";
case ExecutionModelMeshNV: return "MeshNV";
-#endif
default: return "Bad";
-#ifdef NV_EXTENSIONS
case ExecutionModelRayGenerationNV: return "RayGenerationNV";
case ExecutionModelIntersectionNV: return "IntersectionNV";
case ExecutionModelAnyHitNV: return "AnyHitNV";
case ExecutionModelClosestHitNV: return "ClosestHitNV";
case ExecutionModelMissNV: return "MissNV";
case ExecutionModelCallableNV: return "CallableNV";
-#endif
-
}
}
@@ -183,13 +174,11 @@
case 4446: return "PostDepthCoverage";
-#ifdef NV_EXTENSIONS
case ExecutionModeOutputLinesNV: return "OutputLinesNV";
case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV";
case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV";
case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV";
case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV";
-#endif
case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT";
case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT";
@@ -220,14 +209,12 @@
case 11: return "Image";
case 12: return "StorageBuffer";
-#ifdef NV_EXTENSIONS
case StorageClassRayPayloadNV: return "RayPayloadNV";
case StorageClassHitAttributeNV: return "HitAttributeNV";
case StorageClassIncomingRayPayloadNV: return "IncomingRayPayloadNV";
case StorageClassShaderRecordBufferNV: return "ShaderRecordBufferNV";
case StorageClassCallableDataNV: return "CallableDataNV";
case StorageClassIncomingCallableDataNV: return "IncomingCallableDataNV";
-#endif
case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT";
@@ -289,10 +276,7 @@
case DecorationCeiling:
default: return "Bad";
-#ifdef AMD_EXTENSIONS
case DecorationExplicitInterpAMD: return "ExplicitInterpAMD";
-#endif
-#ifdef NV_EXTENSIONS
case DecorationOverrideCoverageNV: return "OverrideCoverageNV";
case DecorationPassthroughNV: return "PassthroughNV";
case DecorationViewportRelativeNV: return "ViewportRelativeNV";
@@ -301,7 +285,6 @@
case DecorationPerViewNV: return "PerViewNV";
case DecorationPerTaskNV: return "PerTaskNV";
case DecorationPerVertexNV: return "PerVertexNV";
-#endif
case DecorationNonUniformEXT: return "DecorationNonUniformEXT";
case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE";
@@ -371,7 +354,6 @@
case 4426: return "DrawIndex";
case 5014: return "FragStencilRefEXT";
-#ifdef AMD_EXTENSIONS
case 4992: return "BaryCoordNoPerspAMD";
case 4993: return "BaryCoordNoPerspCentroidAMD";
case 4994: return "BaryCoordNoPerspSampleAMD";
@@ -379,9 +361,6 @@
case 4996: return "BaryCoordSmoothCentroidAMD";
case 4997: return "BaryCoordSmoothSampleAMD";
case 4998: return "BaryCoordPullModelAMD";
-#endif
-
-#ifdef NV_EXTENSIONS
case BuiltInLaunchIdNV: return "LaunchIdNV";
case BuiltInLaunchSizeNV: return "LaunchSizeNV";
case BuiltInWorldRayOriginNV: return "WorldRayOriginNV";
@@ -405,14 +384,12 @@
// case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT
case BuiltInBaryCoordNV: return "BaryCoordNV";
case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV";
-#endif
case BuiltInFragSizeEXT: return "FragSizeEXT";
case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT";
case 5264: return "FullyCoveredEXT";
-#ifdef NV_EXTENSIONS
case BuiltInTaskCountNV: return "TaskCountNV";
case BuiltInPrimitiveCountNV: return "PrimitiveCountNV";
case BuiltInPrimitiveIndicesNV: return "PrimitiveIndicesNV";
@@ -421,7 +398,6 @@
case BuiltInLayerPerViewNV: return "LayerPerViewNV";
case BuiltInMeshViewCountNV: return "MeshViewCountNV";
case BuiltInMeshViewIndicesNV: return "MeshViewIndicesNV";
-#endif
case BuiltInWarpsPerSMNV: return "WarpsPerSMNV";
case BuiltInSMCountNV: return "SMCountNV";
case BuiltInWarpIDNV: return "WarpIDNV";
@@ -780,11 +756,9 @@
case GroupOperationInclusiveScan: return "InclusiveScan";
case GroupOperationExclusiveScan: return "ExclusiveScan";
case GroupOperationClusteredReduce: return "ClusteredReduce";
-#ifdef NV_EXTENSIONS
case GroupOperationPartitionedReduceNV: return "PartitionedReduceNV";
case GroupOperationPartitionedInclusiveScanNV: return "PartitionedInclusiveScanNV";
case GroupOperationPartitionedExclusiveScanNV: return "PartitionedExclusiveScanNV";
-#endif
default: return "Bad";
}
@@ -901,17 +875,14 @@
case CapabilityStencilExportEXT: return "StencilExportEXT";
-#ifdef AMD_EXTENSIONS
case CapabilityFloat16ImageAMD: return "Float16ImageAMD";
case CapabilityImageGatherBiasLodAMD: return "ImageGatherBiasLodAMD";
case CapabilityFragmentMaskAMD: return "FragmentMaskAMD";
case CapabilityImageReadWriteLodAMD: return "ImageReadWriteLodAMD";
-#endif
case CapabilityAtomicStorageOps: return "AtomicStorageOps";
case CapabilitySampleMaskPostDepthCoverage: return "SampleMaskPostDepthCoverage";
-#ifdef NV_EXTENSIONS
case CapabilityGeometryShaderPassthroughNV: return "GeometryShaderPassthroughNV";
case CapabilityShaderViewportIndexLayerNV: return "ShaderViewportIndexLayerNV";
case CapabilityShaderViewportMaskNV: return "ShaderViewportMaskNV";
@@ -926,7 +897,6 @@
case CapabilityImageFootprintNV: return "ImageFootprintNV";
// case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT
case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV";
-#endif
case CapabilityFragmentDensityEXT: return "FragmentDensityEXT";
case CapabilityFragmentFullyCoveredEXT: return "FragmentFullyCoveredEXT";
@@ -1336,7 +1306,6 @@
case 4430: return "OpSubgroupAllEqualKHR";
case 4432: return "OpSubgroupReadInvocationKHR";
-#ifdef AMD_EXTENSIONS
case 5000: return "OpGroupIAddNonUniformAMD";
case 5001: return "OpGroupFAddNonUniformAMD";
case 5002: return "OpGroupFMinNonUniformAMD";
@@ -1348,14 +1317,12 @@
case 5011: return "OpFragmentMaskFetchAMD";
case 5012: return "OpFragmentFetchAMD";
-#endif
case OpReadClockKHR: return "OpReadClockKHR";
case OpDecorateStringGOOGLE: return "OpDecorateStringGOOGLE";
case OpMemberDecorateStringGOOGLE: return "OpMemberDecorateStringGOOGLE";
-#ifdef NV_EXTENSIONS
case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV";
case OpReportIntersectionNV: return "OpReportIntersectionNV";
case OpIgnoreIntersectionNV: return "OpIgnoreIntersectionNV";
@@ -1365,7 +1332,6 @@
case OpExecuteCallableNV: return "OpExecuteCallableNV";
case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV";
case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV";
-#endif
case OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV";
case OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV";
@@ -2685,7 +2651,6 @@
InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'");
-#ifdef AMD_EXTENSIONS
InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'");
InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'");
InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'");
@@ -2724,9 +2689,7 @@
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'");
InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'");
-#endif
-#ifdef NV_EXTENSIONS
InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X");
InstructionDesc[OpTypeAccelerationStructureNV].setResultAndType(true, false);
@@ -2764,7 +2727,6 @@
InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'");
InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'");
-#endif
InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'");
InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'");
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 68cb8e9..d1f80b5 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -257,7 +257,6 @@
case EShLangGeometry: name = "geom.spv"; break;
case EShLangFragment: name = "frag.spv"; break;
case EShLangCompute: name = "comp.spv"; break;
-#ifdef NV_EXTENSIONS
case EShLangRayGenNV: name = "rgen.spv"; break;
case EShLangIntersectNV: name = "rint.spv"; break;
case EShLangAnyHitNV: name = "rahit.spv"; break;
@@ -266,7 +265,6 @@
case EShLangCallableNV: name = "rcall.spv"; break;
case EShLangMeshNV: name = "mesh.spv"; break;
case EShLangTaskNV: name = "task.spv"; break;
-#endif
default: name = "unknown"; break;
}
} else
@@ -1389,7 +1387,6 @@
return EShLangFragment;
else if (stageName == "comp")
return EShLangCompute;
-#ifdef NV_EXTENSIONS
else if (stageName == "rgen")
return EShLangRayGenNV;
else if (stageName == "rint")
@@ -1406,7 +1403,6 @@
return EShLangMeshNV;
else if (stageName == "task")
return EShLangTaskNV;
-#endif
usage();
return EShLangVertex;
@@ -1476,7 +1472,6 @@
" .geom for a geometry shader\n"
" .frag for a fragment shader\n"
" .comp for a compute shader\n"
-#ifdef NV_EXTENSIONS
" .mesh for a mesh shader\n"
" .task for a task shader\n"
" .rgen for a ray generation shader\n"
@@ -1485,7 +1480,6 @@
" .rchit for a ray closest hit shader\n"
" .rmiss for a ray miss shader\n"
" .rcall for a ray callable shader\n"
-#endif
" .glsl for .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes\n"
" .hlsl for .vert.hlsl, .tesc.hlsl, ..., .comp.hlsl compound suffixes\n"
"\n"
diff --git a/Test/baseResults/size b/Test/baseResults/size
index b3c31b0..4115f7f 100644
--- a/Test/baseResults/size
+++ b/Test/baseResults/size
@@ -1 +1 @@
-1085952 ../build/install/bin/glslangValidator.exe
+812032 ../build/install/bin/glslangValidator.exe
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index 1a99e1b..7ee58f2 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -61,11 +61,7 @@
EbtSampler,
EbtStruct,
EbtBlock,
-
-#ifdef NV_EXTENSIONS
EbtAccStructNV,
-#endif
-
EbtReference,
// HLSL types that live only temporarily.
@@ -94,13 +90,11 @@
EvqBuffer, // read/write, shared with app
EvqShared, // compute shader's read/write 'shared' qualifier
-#ifdef NV_EXTENSIONS
EvqPayloadNV,
EvqPayloadInNV,
EvqHitAttrNV,
EvqCallableDataNV,
EvqCallableDataInNV,
-#endif
// parameters
EvqIn, // also, for 'in' in the grammar before we know if it's a pipeline input or an 'in' parameter
@@ -221,7 +215,6 @@
EbvSampleMask,
EbvHelperInvocation,
-#ifdef AMD_EXTENSIONS
EbvBaryCoordNoPersp,
EbvBaryCoordNoPerspCentroid,
EbvBaryCoordNoPerspSample,
@@ -229,7 +222,6 @@
EbvBaryCoordSmoothCentroid,
EbvBaryCoordSmoothSample,
EbvBaryCoordPullModel,
-#endif
EbvViewIndex,
EbvDeviceIndex,
@@ -237,7 +229,6 @@
EbvFragSizeEXT,
EbvFragInvocationCountEXT,
-#ifdef NV_EXTENSIONS
EbvViewportMaskNV,
EbvSecondaryPositionNV,
EbvSecondaryViewportMaskNV,
@@ -273,7 +264,6 @@
EbvLayerPerViewNV,
EbvMeshViewCountNV,
EbvMeshViewIndicesNV,
-#endif
// sm builtins
EbvWarpsPerSM,
@@ -299,6 +289,19 @@
EbvLast
};
+// In this enum, order matters; users can assume higher precision is a bigger value
+// and EpqNone is 0.
+enum TPrecisionQualifier {
+ EpqNone = 0,
+ EpqLow,
+ EpqMedium,
+ 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)
{
@@ -325,13 +328,11 @@
case EvqPointCoord: return "gl_PointCoord"; break;
case EvqFragColor: return "fragColor"; break;
case EvqFragDepth: return "gl_FragDepth"; break;
-#ifdef NV_EXTENSIONS
case EvqPayloadNV: return "rayPayloadNV"; break;
case EvqPayloadInNV: return "rayPayloadInNV"; break;
case EvqHitAttrNV: return "hitAttributeNV"; break;
case EvqCallableDataNV: return "callableDataNV"; break;
case EvqCallableDataInNV: return "callableDataInNV"; break;
-#endif
default: return "unknown qualifier";
}
}
@@ -413,7 +414,6 @@
case EbvSampleMask: return "SampleMaskIn";
case EbvHelperInvocation: return "HelperInvocation";
-#ifdef AMD_EXTENSIONS
case EbvBaryCoordNoPersp: return "BaryCoordNoPersp";
case EbvBaryCoordNoPerspCentroid: return "BaryCoordNoPerspCentroid";
case EbvBaryCoordNoPerspSample: return "BaryCoordNoPerspSample";
@@ -421,7 +421,6 @@
case EbvBaryCoordSmoothCentroid: return "BaryCoordSmoothCentroid";
case EbvBaryCoordSmoothSample: return "BaryCoordSmoothSample";
case EbvBaryCoordPullModel: return "BaryCoordPullModel";
-#endif
case EbvViewIndex: return "ViewIndex";
case EbvDeviceIndex: return "DeviceIndex";
@@ -429,7 +428,6 @@
case EbvFragSizeEXT: return "FragSizeEXT";
case EbvFragInvocationCountEXT: return "FragInvocationCountEXT";
-#ifdef NV_EXTENSIONS
case EbvViewportMaskNV: return "ViewportMaskNV";
case EbvSecondaryPositionNV: return "SecondaryPositionNV";
case EbvSecondaryViewportMaskNV: return "SecondaryViewportMaskNV";
@@ -464,7 +462,6 @@
case EbvLayerPerViewNV: return "LayerPerViewNV";
case EbvMeshViewCountNV: return "MeshViewCountNV";
case EbvMeshViewIndicesNV: return "MeshViewIndicesNV";
-#endif
case EbvWarpsPerSM: return "WarpsPerSMNV";
case EbvSMCount: return "SMCountNV";
@@ -475,15 +472,6 @@
}
}
-// In this enum, order matters; users can assume higher precision is a bigger value
-// and EpqNone is 0.
-enum TPrecisionQualifier {
- EpqNone = 0,
- EpqLow,
- EpqMedium,
- EpqHigh
-};
-
__inline const char* GetPrecisionQualifierString(TPrecisionQualifier p)
{
switch (p) {
@@ -494,6 +482,7 @@
default: return "unknown precision qualifier";
}
}
+#endif
__inline bool isTypeSignedInt(TBasicType type)
{
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index dbc2877..f104f49 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -209,18 +209,18 @@
switch (type) {
case EbtFloat: break;
-#ifdef AMD_EXTENSIONS
+ case EbtInt: s.append("i"); break;
+ case EbtUint: s.append("u"); break;
+#ifndef GLSLANG_WEB
case EbtFloat16: s.append("f16"); break;
-#endif
case EbtInt8: s.append("i8"); break;
case EbtUint16: s.append("u8"); break;
case EbtInt16: s.append("i16"); break;
case EbtUint8: s.append("u16"); break;
- case EbtInt: s.append("i"); break;
- case EbtUint: s.append("u"); break;
case EbtInt64: s.append("i64"); break;
case EbtUint64: s.append("u64"); break;
- default: break; // some compilers want this
+#endif
+ default: break;
}
if (image) {
if (dim == EsdSubpass)
@@ -472,11 +472,9 @@
centroid = false;
smooth = false;
flat = false;
+#ifndef GLSLANG_WEB
nopersp = false;
-#ifdef AMD_EXTENSIONS
explicitInterp = false;
-#endif
-#ifdef NV_EXTENSIONS
pervertexNV = false;
perPrimitiveNV = false;
perViewNV = false;
@@ -523,11 +521,9 @@
bool centroid : 1;
bool smooth : 1;
bool flat : 1;
+#ifndef GLSLANG_WEB
bool nopersp : 1;
-#ifdef AMD_EXTENSIONS
bool explicitInterp : 1;
-#endif
-#ifdef NV_EXTENSIONS
bool pervertexNV : 1;
bool perPrimitiveNV : 1;
bool perViewNV : 1;
@@ -558,20 +554,24 @@
}
bool bufferReferenceNeedsVulkanMemoryModel() const
{
+#ifdef GLSLANG_WEB
+ return false;
+#else
// include qualifiers that map to load/store availability/visibility/nonprivate memory access operands
return subgroupcoherent || workgroupcoherent || queuefamilycoherent || devicecoherent || coherent || nonprivate;
+#endif
}
bool isInterpolation() const
{
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
return flat || smooth || nopersp || explicitInterp;
#else
- return flat || smooth || nopersp;
+ return flat || smooth;
#endif
}
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
bool isExplicitInterpolation() const
{
return explicitInterp;
@@ -580,10 +580,10 @@
bool isAuxiliary() const
{
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
return centroid || patch || sample || pervertexNV;
#else
- return centroid || patch || sample;
+ return centroid;
#endif
}
@@ -651,33 +651,6 @@
}
}
- bool isPerPrimitive() const
- {
-#ifdef NV_EXTENSIONS
- return perPrimitiveNV;
-#else
- return false;
-#endif
- }
-
- bool isPerView() const
- {
-#ifdef NV_EXTENSIONS
- return perViewNV;
-#else
- return false;
-#endif
- }
-
- bool isTaskMemory() const
- {
-#ifdef NV_EXTENSIONS
- return perTaskNV;
-#else
- return false;
-#endif
- }
-
bool isIo() const
{
switch (storage) {
@@ -717,6 +690,15 @@
}
}
+#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; }
+
// True if this type of IO is supposed to be arrayed with extra level for per-vertex data
bool isArrayedIo(EShLanguage language) const
{
@@ -727,40 +709,37 @@
return ! patch && (isPipeInput() || isPipeOutput());
case EShLangTessEvaluation:
return ! patch && isPipeInput();
-#ifdef NV_EXTENSIONS
case EShLangFragment:
return pervertexNV && isPipeInput();
case EShLangMeshNV:
return ! perTaskNV && isPipeOutput();
-#endif
default:
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;
-#ifdef NV_EXTENSIONS
layoutPassthrough = false;
layoutViewportRelative = false;
// -2048 as the default value indicating layoutSecondaryViewportRelative is not set
layoutSecondaryViewportRelativeOffset = -2048;
layoutShaderRecordNV = false;
-#endif
-
layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd;
+ layoutFormat = ElfNone;
+#endif
clearInterstageLayout();
layoutSpecConstantId = layoutSpecConstantIdEnd;
-
- layoutFormat = ElfNone;
}
void clearInterstageLayout()
{
@@ -787,11 +766,9 @@
hasAnyLocation() ||
hasStream() ||
hasFormat() ||
-#ifdef NV_EXTENSIONS
- layoutShaderRecordNV ||
-#endif
- layoutPushConstant ||
- layoutBufferReference;
+ isShaderRecordNV() ||
+ isPushConstant() ||
+ hasBufferReference();
}
bool hasLayout() const
{
@@ -836,6 +813,7 @@
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;
@@ -844,8 +822,6 @@
bool layoutPushConstant;
bool layoutBufferReference;
-
-#ifdef NV_EXTENSIONS
bool layoutPassthrough;
bool layoutViewportRelative;
int layoutSecondaryViewportRelativeOffset;
@@ -899,14 +875,6 @@
{
return layoutLocation != layoutLocationEnd;
}
- bool hasComponent() const
- {
- return layoutComponent != layoutComponentEnd;
- }
- bool hasIndex() const
- {
- return layoutIndex != layoutIndexEnd;
- }
bool hasSet() const
{
return layoutSet != layoutSetEnd;
@@ -915,6 +883,32 @@
{
return layoutBinding != layoutBindingEnd;
}
+#ifdef GLSLANG_WEB
+ bool isNonPerspective() const { return false; }
+ bool hasIndex() const { return false; }
+ 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 isShaderRecordNV() const { return false; }
+ bool hasBufferReference() const { return false; }
+ bool hasBufferReferenceAlign() const { return false; }
+#else
+ bool isNonPerspective() const { return nopersp; }
+ bool hasIndex() const
+ {
+ return layoutIndex != layoutIndexEnd;
+ }
+ bool hasComponent() const
+ {
+ return layoutComponent != layoutComponentEnd;
+ }
bool hasStream() const
{
return layoutStream != layoutStreamEnd;
@@ -945,16 +939,21 @@
{
return layoutAttachment != layoutAttachmentEnd;
}
+ TLayoutFormat getFormat() const { return layoutFormat; }
+ bool isPushConstant() const { return layoutPushConstant; }
+ bool isShaderRecordNV() const { return layoutShaderRecordNV; }
+ bool hasBufferReference() const { return layoutBufferReference; }
+ bool hasBufferReferenceAlign() const
+ {
+ return layoutBufferReferenceAlign != layoutBufferReferenceAlignEnd;
+ }
+#endif
bool hasSpecConstantId() const
{
// Not the same thing as being a specialization constant, this
// is just whether or not it was declared with an ID.
return layoutSpecConstantId != layoutSpecConstantIdEnd;
}
- bool hasBufferReferenceAlign() const
- {
- return layoutBufferReferenceAlign != layoutBufferReferenceAlignEnd;
- }
bool isSpecConstant() const
{
// True if type is a specialization constant, whether or not it
@@ -1150,18 +1149,20 @@
bool pointMode;
int localSize[3]; // compute shader
int localSizeSpecId[3]; // compute shader specialization id for gl_WorkGroupSize
+#ifndef GLSLANG_WEB
bool earlyFragmentTests; // fragment input
bool postDepthCoverage; // fragment input
TLayoutDepth layoutDepth;
bool blendEquation; // true if any blend equation was specified
int numViews; // multiview extenstions
TInterlockOrdering interlockOrdering;
-
-#ifdef NV_EXTENSIONS
bool layoutOverrideCoverage; // true if layout override_coverage set
bool layoutDerivativeGroupQuads; // true if layout derivative_group_quadsNV set
bool layoutDerivativeGroupLinear; // true if layout derivative_group_linearNV set
int primitives; // mesh shader "max_primitives"DerivativeGroupLinear; // true if layout derivative_group_linearNV set
+ TLayoutDepth getDepth() const { return layoutDepth; }
+#else
+ TLayoutDepth getDepth() const { return EldNone; }
#endif
void init()
@@ -1180,20 +1181,26 @@
localSizeSpecId[0] = TQualifier::layoutNotSet;
localSizeSpecId[1] = TQualifier::layoutNotSet;
localSizeSpecId[2] = TQualifier::layoutNotSet;
+#ifndef GLSLANG_WEB
earlyFragmentTests = false;
postDepthCoverage = false;
layoutDepth = EldNone;
blendEquation = false;
numViews = TQualifier::layoutNotSet;
-#ifdef NV_EXTENSIONS
layoutOverrideCoverage = false;
layoutDerivativeGroupQuads = false;
layoutDerivativeGroupLinear = false;
primitives = TQualifier::layoutNotSet;
-#endif
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.
void merge(const TShaderQualifiers& src)
@@ -1222,6 +1229,7 @@
if (src.localSizeSpecId[i] != TQualifier::layoutNotSet)
localSizeSpecId[i] = src.localSizeSpecId[i];
}
+#ifndef GLSLANG_WEB
if (src.earlyFragmentTests)
earlyFragmentTests = true;
if (src.postDepthCoverage)
@@ -1232,7 +1240,6 @@
blendEquation = src.blendEquation;
if (src.numViews != TQualifier::layoutNotSet)
numViews = src.numViews;
-#ifdef NV_EXTENSIONS
if (src.layoutOverrideCoverage)
layoutOverrideCoverage = src.layoutOverrideCoverage;
if (src.layoutDerivativeGroupQuads)
@@ -1241,10 +1248,9 @@
layoutDerivativeGroupLinear = src.layoutDerivativeGroupLinear;
if (src.primitives != TQualifier::layoutNotSet)
primitives = src.primitives;
-#endif
-
if (src.interlockOrdering != EioNone)
interlockOrdering = src.interlockOrdering;
+#endif
}
};
@@ -1580,9 +1586,9 @@
}
return false;
}
- virtual bool isOpaque() const { return basicType == EbtSampler || basicType == EbtAtomicUint
-#ifdef NV_EXTENSIONS
- || basicType == EbtAccStructNV
+ virtual bool isOpaque() const { return basicType == EbtSampler
+#ifndef GLSLANG_WEB
+ || basicType == EbtAtomicUint || basicType == EbtAccStructNV
#endif
; }
virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; }
@@ -1592,7 +1598,13 @@
virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); }
virtual bool isTexture() const { return basicType == EbtSampler && getSampler().isTexture(); }
virtual bool isParameterized() const { return typeParameters != nullptr; }
+#ifdef GLSLANG_WEB
+ virtual bool isCoopMat() const { return false; }
+ virtual bool isReference() const { return false; }
+#else
virtual bool isCoopMat() const { return coopmat; }
+ virtual bool isReference() const { return getBasicType() == EbtReference; }
+#endif
// return true if this type contains any subtype which satisfies the given predicate.
template <typename P>
@@ -1673,20 +1685,29 @@
return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } );
}
+#ifdef GLSLANG_WEB
+ virtual bool contains16BitFloat() const { return false; }
+ virtual bool contains16BitInt() const { return false; }
+ virtual bool contains8BitInt() const { return false; }
+ virtual bool containsCoopMat() const { return false; }
+#else
+ virtual bool contains16BitFloat() const
+ {
+ return containsBasicType(EbtFloat16);
+ }
virtual bool contains16BitInt() const
{
return containsBasicType(EbtInt16) || containsBasicType(EbtUint16);
}
-
virtual bool contains8BitInt() const
{
return containsBasicType(EbtInt8) || containsBasicType(EbtUint8);
}
-
virtual bool containsCoopMat() const
{
return contains([](const TType* t) { return t->coopmat; } );
}
+#endif
// Array editing methods. Array descriptors can be shared across
// type instances. This allows all uses of the same array
@@ -1746,11 +1767,9 @@
{
if (isUnsizedArray() && !(skipNonvariablyIndexed || isArrayVariablyIndexed()))
changeOuterArraySize(getImplicitArraySize());
-#ifdef NV_EXTENSIONS
// For multi-dim per-view arrays, set unsized inner dimension size to 1
if (qualifier.isPerView() && arraySizes && arraySizes->isInnerUnsized())
arraySizes->clearInnerUnsized();
-#endif
if (isStruct() && structure->size() > 0) {
int lastMember = (int)structure->size() - 1;
for (int i = 0; i < lastMember; ++i)
@@ -1808,16 +1827,17 @@
static const char* getBasicString(TBasicType t)
{
switch (t) {
- case EbtVoid: return "void";
case EbtFloat: return "float";
+ case EbtInt: return "int";
+ case EbtUint: return "uint";
+#ifndef GLSLANG_WEB
+ case EbtVoid: return "void";
case EbtDouble: return "double";
case EbtFloat16: return "float16_t";
case EbtInt8: return "int8_t";
case EbtUint8: return "uint8_t";
case EbtInt16: return "int16_t";
case EbtUint16: return "uint16_t";
- case EbtInt: return "int";
- case EbtUint: return "uint";
case EbtInt64: return "int64_t";
case EbtUint64: return "uint64_t";
case EbtBool: return "bool";
@@ -1825,14 +1845,20 @@
case EbtSampler: return "sampler/image";
case EbtStruct: return "structure";
case EbtBlock: return "block";
-#ifdef NV_EXTENSIONS
case EbtAccStructNV: return "accelerationStructureNV";
-#endif
case EbtReference: return "reference";
+#endif
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() const
{
TString typeString;
@@ -1921,7 +1947,6 @@
appendUint(1u << qualifier.layoutBufferReferenceAlign);
}
-#ifdef NV_EXTENSIONS
if (qualifier.layoutPassthrough)
appendStr(" passthrough");
if (qualifier.layoutViewportRelative)
@@ -1932,7 +1957,6 @@
}
if (qualifier.layoutShaderRecordNV)
appendStr(" shaderRecordNV");
-#endif
appendStr(")");
}
@@ -1950,11 +1974,8 @@
appendStr(" flat");
if (qualifier.nopersp)
appendStr(" noperspective");
-#ifdef AMD_EXTENSIONS
if (qualifier.explicitInterp)
appendStr(" __explicitInterpAMD");
-#endif
-#ifdef NV_EXTENSIONS
if (qualifier.pervertexNV)
appendStr(" pervertexNV");
if (qualifier.perPrimitiveNV)
@@ -1963,7 +1984,6 @@
appendStr(" perviewNV");
if (qualifier.perTaskNV)
appendStr(" taskNV");
-#endif
if (qualifier.patch)
appendStr(" patch");
if (qualifier.sample)
@@ -2078,6 +2098,8 @@
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; }
TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads
@@ -2146,10 +2168,10 @@
bool sameReferenceType(const TType& right) const
{
- if ((basicType == EbtReference) != (right.basicType == EbtReference))
+ if (isReference() != right.isReference())
return false;
- if ((basicType != EbtReference) && (right.basicType != EbtReference))
+ if (!isReference() && !right.isReference())
return true;
assert(referentType != nullptr);
@@ -2220,6 +2242,9 @@
return ! operator==(right);
}
+#ifdef GLSLANG_WEB
+ unsigned int getBufferReferenceAlignment() const { return 0; }
+#else
unsigned int getBufferReferenceAlignment() const
{
if (getBasicType() == glslang::EbtReference) {
@@ -2229,6 +2254,7 @@
return 0;
}
}
+#endif
protected:
// Require consumer to pick between deep copy and shallow copy.
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index 212a09f..5f44916 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -422,11 +422,9 @@
EOpReflect,
EOpRefract,
-#ifdef AMD_EXTENSIONS
EOpMin3,
EOpMax3,
EOpMid3,
-#endif
EOpDPdx, // Fragment only
EOpDPdy, // Fragment only
@@ -441,10 +439,7 @@
EOpInterpolateAtCentroid, // Fragment only
EOpInterpolateAtSample, // Fragment only
EOpInterpolateAtOffset, // Fragment only
-
-#ifdef AMD_EXTENSIONS
EOpInterpolateAtVertex,
-#endif
EOpMatrixTimesMatrix,
EOpOuterProduct,
@@ -534,7 +529,6 @@
EOpSubgroupQuadSwapVertical,
EOpSubgroupQuadSwapDiagonal,
-#ifdef NV_EXTENSIONS
EOpSubgroupPartition,
EOpSubgroupPartitionedAdd,
EOpSubgroupPartitionedMul,
@@ -557,11 +551,9 @@
EOpSubgroupPartitionedExclusiveAnd,
EOpSubgroupPartitionedExclusiveOr,
EOpSubgroupPartitionedExclusiveXor,
-#endif
EOpSubgroupGuardStop,
-#ifdef AMD_EXTENSIONS
EOpMinInvocations,
EOpMaxInvocations,
EOpAddInvocations,
@@ -588,7 +580,6 @@
EOpCubeFaceIndex,
EOpCubeFaceCoord,
EOpTime,
-#endif
EOpAtomicAdd,
EOpAtomicMin,
@@ -795,10 +786,8 @@
EOpImageQuerySamples,
EOpImageLoad,
EOpImageStore,
-#ifdef AMD_EXTENSIONS
EOpImageLoadLod,
EOpImageStoreLod,
-#endif
EOpImageAtomicAdd,
EOpImageAtomicMin,
EOpImageAtomicMax,
@@ -813,9 +802,7 @@
EOpSubpassLoad,
EOpSubpassLoadMS,
EOpSparseImageLoad,
-#ifdef AMD_EXTENSIONS
EOpSparseImageLoadLod,
-#endif
EOpImageGuardEnd,
@@ -853,13 +840,11 @@
EOpTextureOffsetClamp,
EOpTextureGradClamp,
EOpTextureGradOffsetClamp,
-#ifdef AMD_EXTENSIONS
EOpTextureGatherLod,
EOpTextureGatherLodOffset,
EOpTextureGatherLodOffsets,
EOpFragmentMaskFetch,
EOpFragmentFetch,
-#endif
EOpSparseTextureGuardBegin,
@@ -879,15 +864,12 @@
EOpSparseTextureOffsetClamp,
EOpSparseTextureGradClamp,
EOpSparseTextureGradOffsetClamp,
-#ifdef AMD_EXTENSIONS
EOpSparseTextureGatherLod,
EOpSparseTextureGatherLodOffset,
EOpSparseTextureGatherLodOffsets,
-#endif
EOpSparseTextureGuardEnd,
-#ifdef NV_EXTENSIONS
EOpImageFootprintGuardBegin,
EOpImageSampleFootprintNV,
EOpImageSampleFootprintClampNV,
@@ -895,7 +877,6 @@
EOpImageSampleFootprintGradNV,
EOpImageSampleFootprintGradClampNV,
EOpImageFootprintGuardEnd,
-#endif
EOpSamplingGuardEnd,
EOpTextureGuardEnd,
@@ -914,14 +895,12 @@
EOpFindLSB,
EOpFindMSB,
-#ifdef NV_EXTENSIONS
EOpTraceNV,
EOpReportIntersectionNV,
EOpIgnoreIntersectionNV,
EOpTerminateRayNV,
EOpExecuteCallableNV,
EOpWritePackedPrimitiveIndices4x8NV,
-#endif
//
// HLSL operations
//
@@ -1110,6 +1089,7 @@
virtual bool isStruct() const { return type.isStruct(); }
virtual bool isFloatingDomain() const { return type.isFloatingDomain(); }
virtual bool isIntegerDomain() const { return type.isIntegerDomain(); }
+ virtual bool isReference() const { return type.isReference(); }
TString getCompleteString() const { return type.getCompleteString(); }
protected:
@@ -1303,9 +1283,7 @@
bool grad;
bool subpass;
bool lodClamp;
-#ifdef AMD_EXTENSIONS
bool fragMask;
-#endif
};
//
@@ -1323,9 +1301,7 @@
bool isSampling() const { return op > EOpSamplingGuardBegin && op < EOpSamplingGuardEnd; }
bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; }
bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; }
-#ifdef NV_EXTENSIONS
bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; }
-#endif
bool isSparseImage() const { return op == EOpSparseImageLoad; }
void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; }
@@ -1356,9 +1332,7 @@
cracked.grad = false;
cracked.subpass = false;
cracked.lodClamp = false;
-#ifdef AMD_EXTENSIONS
cracked.fragMask = false;
-#endif
switch (op) {
case EOpImageQuerySize:
@@ -1467,7 +1441,6 @@
cracked.gather = true;
cracked.offsets = true;
break;
-#ifdef AMD_EXTENSIONS
case EOpTextureGatherLod:
case EOpSparseTextureGatherLod:
cracked.gather = true;
@@ -1498,8 +1471,6 @@
cracked.subpass = sampler.dim == EsdSubpass;
cracked.fragMask = true;
break;
-#endif
-#ifdef NV_EXTENSIONS
case EOpImageSampleFootprintNV:
break;
case EOpImageSampleFootprintClampNV:
@@ -1515,7 +1486,6 @@
cracked.lodClamp = true;
cracked.grad = true;
break;
-#endif
case EOpSubpassLoad:
case EOpSubpassLoadMS:
cracked.subpass = true;
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
index e0f3d55..ffc9747 100755
--- a/glslang/MachineIndependent/Constant.cpp
+++ b/glslang/MachineIndependent/Constant.cpp
@@ -292,13 +292,12 @@
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);
break;
} else goto modulo_default;
-#ifdef AMD_EXTENSIONS
case EbtInt16:
if (rightUnionArray[i].getIConst() == -1 && leftUnionArray[i].getIConst() == SHRT_MIN) {
newConstArray[i].setIConst(0);
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index f7c15cc..1f012d1 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -435,9 +435,7 @@
// Set up textual representations for making all the permutations
// of texturing/imaging functions.
prefixes[EbtFloat] = "";
-#ifdef AMD_EXTENSIONS
prefixes[EbtFloat16] = "f16";
-#endif
prefixes[EbtInt8] = "i8";
prefixes[EbtUint8] = "u8";
prefixes[EbtInt16] = "i16";
@@ -481,6 +479,7 @@
//
//============================================================================
+#ifndef GLSLANG_WEB
//
// Derivatives Functions.
//
@@ -1007,7 +1006,6 @@
);
}
-#ifdef AMD_EXTENSIONS
// GL_AMD_shader_trinary_minmax
if (profile != EEsProfile && version >= 430) {
commonBuiltins.append(
@@ -1104,7 +1102,6 @@
"\n"
);
}
-#endif
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 430)) {
@@ -1191,6 +1188,7 @@
"void atomicStore(coherent volatile out int64_t, int64_t, int, int, int);"
"\n");
}
+#endif
if ((profile == EEsProfile && version >= 300) ||
(profile != EEsProfile && version >= 330)) {
@@ -1218,6 +1216,7 @@
"\n");
}
+#ifndef GLSLANG_WEB
if ((profile != EEsProfile && version >= 400) ||
(profile == EEsProfile && version >= 310)) { // GL_OES_gpu_shader5
@@ -1271,6 +1270,7 @@
"\n");
}
+#endif
if ((profile == EEsProfile && version >= 300) ||
(profile != EEsProfile && version >= 400)) {
@@ -1299,6 +1299,7 @@
"\n");
}
+#ifndef GLSLANG_WEB
if ((profile == EEsProfile && version >= 310) ||
(profile != EEsProfile && version >= 400)) {
commonBuiltins.append(
@@ -1318,6 +1319,7 @@
"vec4 unpackUnorm4x8(highp uint);"
"\n");
}
+#endif
//
// Matrix Functions.
@@ -1376,6 +1378,7 @@
}
}
+#ifndef GLSLANG_WEB
//
// Original-style texture functions existing in all stages.
// (Per-stage functions below.)
@@ -2287,7 +2290,6 @@
"bvec3 subgroupQuadSwapDiagonal(bvec3);\n"
"bvec4 subgroupQuadSwapDiagonal(bvec4);\n"
-#ifdef NV_EXTENSIONS
"uvec4 subgroupPartitionNV(float);\n"
"uvec4 subgroupPartitionNV(vec2);\n"
"uvec4 subgroupPartitionNV(vec3);\n"
@@ -2577,8 +2579,6 @@
"bvec2 subgroupPartitionedExclusiveXorNV(bvec2, uvec4 ballot);\n"
"bvec3 subgroupPartitionedExclusiveXorNV(bvec3, uvec4 ballot);\n"
"bvec4 subgroupPartitionedExclusiveXorNV(bvec4, uvec4 ballot);\n"
-#endif
-
"\n");
if (profile != EEsProfile && version >= 400) {
@@ -2718,8 +2718,6 @@
"dvec3 subgroupQuadSwapDiagonal(dvec3);\n"
"dvec4 subgroupQuadSwapDiagonal(dvec4);\n"
-
-#ifdef NV_EXTENSIONS
"uvec4 subgroupPartitionNV(double);\n"
"uvec4 subgroupPartitionNV(dvec2);\n"
"uvec4 subgroupPartitionNV(dvec3);\n"
@@ -2784,7 +2782,6 @@
"dvec2 subgroupPartitionedExclusiveMaxNV(dvec2, uvec4 ballot);\n"
"dvec3 subgroupPartitionedExclusiveMaxNV(dvec3, uvec4 ballot);\n"
"dvec4 subgroupPartitionedExclusiveMaxNV(dvec4, uvec4 ballot);\n"
-#endif
"\n");
}
@@ -2794,7 +2791,6 @@
"\n"
);
-#ifdef NV_EXTENSIONS
stageBuiltins[EShLangMeshNV].append(
"void subgroupMemoryBarrierShared();"
"\n"
@@ -2803,7 +2799,6 @@
"void subgroupMemoryBarrierShared();"
"\n"
);
-#endif
}
if (profile != EEsProfile && version >= 460) {
@@ -2815,7 +2810,6 @@
"\n");
}
-#ifdef AMD_EXTENSIONS
// GL_AMD_shader_ballot
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append(
@@ -3712,10 +3706,6 @@
"\n");
}
-#endif // AMD_EXTENSIONS
-
-
-#ifdef NV_EXTENSIONS
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 320)) {
commonBuiltins.append(
@@ -3749,7 +3739,6 @@
"\n");
}
-#endif // NV_EXTENSIONS
// GL_AMD_gpu_shader_half_float/Explicit types
if (profile != EEsProfile && version >= 450) {
commonBuiltins.append(
@@ -4731,7 +4720,6 @@
stageBuiltins[EShLangCompute].append(
"void barrier();"
);
-#ifdef NV_EXTENSIONS
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
stageBuiltins[EShLangMeshNV].append(
"void barrier();"
@@ -4740,7 +4728,6 @@
"void barrier();"
);
}
-#endif
if ((profile != EEsProfile && version >= 130) || esBarrier)
commonBuiltins.append(
"void memoryBarrier();"
@@ -4756,7 +4743,6 @@
"void groupMemoryBarrier();"
);
}
-#ifdef NV_EXTENSIONS
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
stageBuiltins[EShLangMeshNV].append(
"void memoryBarrierShared();"
@@ -4767,7 +4753,6 @@
"void groupMemoryBarrier();"
);
}
-#endif
commonBuiltins.append("void controlBarrier(int, int, int, int);\n"
"void memoryBarrier(int, int, int);\n");
@@ -4878,7 +4863,6 @@
"bool helperInvocationEXT();"
"\n");
-#ifdef AMD_EXTENSIONS
// GL_AMD_shader_explicit_vertex_parameter
if (profile != EEsProfile && version >= 450) {
stageBuiltins[EShLangFragment].append(
@@ -4952,9 +4936,6 @@
"\n");
}
-#endif
-
-#ifdef NV_EXTENSIONS
// Builtins for GL_NV_ray_tracing
if (profile != EEsProfile && version >= 460) {
@@ -5021,11 +5002,13 @@
"highp float diff;" // f - n
);
} else {
+#ifndef GLSLANG_WEB
commonBuiltins.append(
"float near;" // n
"float far;" // f
"float diff;" // f - n
);
+#endif
}
commonBuiltins.append(
@@ -5034,6 +5017,7 @@
"\n");
}
+#ifndef GLSLANG_WEB
if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) {
//
// Matrix state. p. 31, 32, 37, 39, 40.
@@ -5180,7 +5164,6 @@
"\n");
}
-#ifdef NV_EXTENSIONS
//============================================================================
//
// Define the interface to the mesh/task shader.
@@ -5268,7 +5251,6 @@
"\n");
}
}
-#endif
//============================================================================
//
@@ -5402,7 +5384,6 @@
);
}
-#ifdef NV_EXTENSIONS
if (version >= 450)
stageBuiltins[EShLangVertex].append(
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
@@ -5411,8 +5392,6 @@
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
"out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
);
-#endif
-
} else {
// ES profile
if (version == 100) {
@@ -5421,6 +5400,7 @@
"mediump float gl_PointSize;" // needs qualifier fixed later
);
} else {
+#endif
if (spvVersion.vulkan == 0)
stageBuiltins[EShLangVertex].append(
"in highp int gl_VertexID;" // needs qualifier fixed later
@@ -5443,6 +5423,7 @@
"highp float gl_PointSize;" // needs qualifier fixed later
"};"
);
+#ifndef GLSLANG_WEB
}
}
@@ -5487,10 +5468,8 @@
if (version >= 450)
stageBuiltins[EShLangGeometry].append(
"float gl_CullDistance[];"
-#ifdef NV_EXTENSIONS
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
-#endif
);
stageBuiltins[EShLangGeometry].append(
"} gl_in[];"
@@ -5536,7 +5515,6 @@
"in int gl_InvocationID;"
);
-#ifdef NV_EXTENSIONS
if (version >= 450)
stageBuiltins[EShLangGeometry].append(
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
@@ -5545,7 +5523,6 @@
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
"out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
);
-#endif
stageBuiltins[EShLangGeometry].append("\n");
} else if (profile == EEsProfile && version >= 310) {
@@ -5610,13 +5587,11 @@
if (version >= 450)
stageBuiltins[EShLangTessControl].append(
"float gl_CullDistance[];"
-#ifdef NV_EXTENSIONS
"int gl_ViewportMask[];" // GL_NV_viewport_array2
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"int gl_SecondaryViewportMaskNV[];" // GL_NV_stereo_view_rendering
"vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
"int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
-#endif
);
stageBuiltins[EShLangTessControl].append(
"} gl_out[];"
@@ -5715,7 +5690,6 @@
"out int gl_Layer;"
"\n");
-#ifdef NV_EXTENSIONS
if (version >= 450)
stageBuiltins[EShLangTessEvaluation].append(
"out int gl_ViewportMask[];" // GL_NV_viewport_array2
@@ -5724,7 +5698,6 @@
"out vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
"out int gl_ViewportMaskPerViewNV[];" // GL_NVX_multiview_per_view_attributes
);
-#endif
} else if (profile == EEsProfile && version >= 310) {
// Note: "in gl_PerVertex {...} gl_in[gl_MaxPatchVertices];" is declared in initialize() below,
@@ -5849,7 +5822,6 @@
"flat in int gl_FragInvocationCountEXT;"
);
-#ifdef AMD_EXTENSIONS
if (version >= 450)
stageBuiltins[EShLangFragment].append(
"in vec2 gl_BaryCoordNoPerspAMD;"
@@ -5860,9 +5832,7 @@
"in vec2 gl_BaryCoordSmoothSampleAMD;"
"in vec3 gl_BaryCoordPullModelAMD;"
);
-#endif
-#ifdef NV_EXTENSIONS
if (version >= 430)
stageBuiltins[EShLangFragment].append(
"in bool gl_FragFullyCoveredNV;"
@@ -5875,7 +5845,6 @@
"in vec3 gl_BaryCoordNoPerspNV;"
);
-#endif
} else {
// ES profile
@@ -5887,6 +5856,7 @@
"mediump vec2 gl_PointCoord;" // needs qualifier fixed later
);
}
+#endif
if (version >= 300) {
stageBuiltins[EShLangFragment].append(
"highp vec4 gl_FragCoord;" // needs qualifier fixed later
@@ -5895,6 +5865,7 @@
"highp float gl_FragDepth;" // needs qualifier fixed later
);
}
+#ifndef GLSLANG_WEB
if (version >= 310) {
stageBuiltins[EShLangFragment].append(
"bool gl_HelperInvocation;" // needs qualifier fixed later
@@ -5922,7 +5893,6 @@
"flat in ivec2 gl_FragSizeEXT;"
"flat in int gl_FragInvocationCountEXT;"
);
-#ifdef NV_EXTENSIONS
if (version >= 320)
stageBuiltins[EShLangFragment].append( // GL_NV_shading_rate_image
"flat in ivec2 gl_FragmentSizeNV;"
@@ -5933,14 +5903,16 @@
"in vec3 gl_BaryCoordNV;"
"in vec3 gl_BaryCoordNoPerspNV;"
);
+ }
#endif
- }
stageBuiltins[EShLangFragment].append("\n");
if (version >= 130)
add2ndGenerationSamplingImaging(version, profile, spvVersion);
+#ifndef GLSLANG_WEB
+
// GL_ARB_shader_ballot
if (profile != EEsProfile && version >= 450) {
const char* ballotDecls =
@@ -5967,10 +5939,8 @@
stageBuiltins[EShLangGeometry] .append(ballotDecls);
stageBuiltins[EShLangCompute] .append(ballotDecls);
stageBuiltins[EShLangFragment] .append(fragmentBallotDecls);
-#ifdef NV_EXTENSIONS
stageBuiltins[EShLangMeshNV] .append(ballotDecls);
stageBuiltins[EShLangTaskNV] .append(ballotDecls);
-#endif
}
if ((profile != EEsProfile && version >= 140) ||
@@ -6024,7 +5994,6 @@
stageBuiltins[EShLangCompute] .append(subgroupDecls);
stageBuiltins[EShLangCompute] .append(computeSubgroupDecls);
stageBuiltins[EShLangFragment] .append(fragmentSubgroupDecls);
-#ifdef NV_EXTENSIONS
stageBuiltins[EShLangMeshNV] .append(subgroupDecls);
stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls);
stageBuiltins[EShLangTaskNV] .append(subgroupDecls);
@@ -6035,10 +6004,8 @@
stageBuiltins[EShLangClosestHitNV] .append(subgroupDecls);
stageBuiltins[EShLangMissNV] .append(subgroupDecls);
stageBuiltins[EShLangCallableNV] .append(subgroupDecls);
-#endif
}
-#ifdef NV_EXTENSIONS
// GL_NV_ray_tracing
if (profile != EEsProfile && version >= 460) {
@@ -6138,7 +6105,6 @@
stageBuiltins[EShLangClosestHitNV].append(deviceIndex);
stageBuiltins[EShLangMissNV].append(deviceIndex);
}
-#endif
if (version >= 300 /* both ES and non-ES */) {
stageBuiltins[EShLangFragment].append(
@@ -6168,6 +6134,7 @@
commonBuiltins.append("const int gl_StorageSemanticsImage = 0x800;\n");
commonBuiltins.append("const int gl_StorageSemanticsOutput = 0x1000;\n");
}
+#endif
// printf("%s\n", commonBuiltins.c_str());
// printf("%s\n", stageBuiltins[EShLangFragment].c_str());
@@ -6183,19 +6150,25 @@
// In this function proper, enumerate the types, then calls the next set of functions
// to enumerate all the uses for that type.
//
-#ifdef AMD_EXTENSIONS
TBasicType bTypes[4] = { EbtFloat, EbtFloat16, EbtInt, EbtUint };
-#else
- TBasicType bTypes[3] = { EbtFloat, EbtInt, EbtUint };
-#endif
bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140);
bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130);
// enumerate all the types
- for (int image = 0; image <= 1; ++image) { // loop over "bool" image vs sampler
+#ifdef GLSLANG_WEB
+ const int image = 0;
+#else
+ 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
- for (int ms = 0; ms <=1; ++ms) {
+#ifdef GLSLANG_WEB
+ const int ms = 0;
+#else
+ for (int ms = 0; ms <= 1; ++ms)
+#endif
+ {
if ((ms || image) && shadow)
continue;
if (ms && profile != EEsProfile && version < 150)
@@ -6206,7 +6179,17 @@
continue;
for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not
- for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, 2D, ..., buffer
+#ifdef GLSLANG_WEB
+ for (int dim = Esd2D; dim < EsdCube + 1; ++dim) { // 2D, 3D, and Cube
+#else
+ for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, 2D, ..., buffer, subpass
+ if (dim == EsdSubpass && spvVersion.vulkan == 0)
+ continue;
+ if (dim == EsdSubpass && (image || shadow || arrayed))
+ continue;
+ if ((dim == Esd1D || dim == EsdRect) && profile == EEsProfile)
+ continue;
+#endif
if (dim == EsdSubpass && spvVersion.vulkan == 0)
continue;
if (dim == EsdSubpass && (image || shadow || arrayed))
@@ -6227,7 +6210,6 @@
continue;
if (ms && arrayed && profile == EEsProfile && version < 310)
continue;
-#ifdef AMD_EXTENSIONS
for (int bType = 0; bType < 4; ++bType) { // float, float16, int, uint results
if (shadow && bType > 1)
@@ -6235,12 +6217,6 @@
if (bTypes[bType] == EbtFloat16 && (profile == EEsProfile ||version < 450))
continue;
-#else
- for (int bType = 0; bType < 3; ++bType) { // float, int, uint results
-
- if (shadow && bType > 0)
- continue;
-#endif
if (dim == EsdRect && version < 140 && bType > 0)
continue;
@@ -6249,9 +6225,12 @@
//
TSampler sampler;
+#ifndef GLSLANG_WEB
if (dim == EsdSubpass) {
sampler.setSubpass(bTypes[bType], ms ? true : false);
- } else if (image) {
+ } else
+#endif
+ if (image) {
sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false,
shadow ? true : false,
ms ? true : false);
@@ -6263,10 +6242,12 @@
TString typeName = sampler.getString();
+#ifndef GLSLANG_WEB
if (dim == EsdSubpass) {
addSubpassSampling(sampler, typeName, version, profile);
continue;
}
+#endif
addQueryFunctions(sampler, typeName, version, profile);
@@ -6274,8 +6255,8 @@
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
// textureBuffer (i.e. without sampler).
@@ -6290,6 +6271,7 @@
addSamplingFunctions(sampler, textureTypeName, version, profile);
addQueryFunctions(sampler, textureTypeName, version, profile);
}
+#endif
}
}
}
@@ -6331,9 +6313,11 @@
commonBuiltins.append("ivec");
commonBuiltins.append(postfixes[sizeDims]);
}
+#ifndef GLSLANG_WEB
if (sampler.image)
commonBuiltins.append(" imageSize(readonly writeonly volatile coherent ");
else
+#endif
commonBuiltins.append(" textureSize(");
commonBuiltins.append(typeName);
if (! sampler.image && sampler.dim != EsdRect && sampler.dim != EsdBuffer && ! sampler.ms)
@@ -6341,6 +6325,7 @@
else
commonBuiltins.append(");\n");
+#ifndef GLSLANG_WEB
//
// textureSamples() and imageSamples()
//
@@ -6362,39 +6347,26 @@
//
if (profile != EEsProfile && version >= 400 && sampler.combined && sampler.dim != EsdRect && ! sampler.ms && sampler.dim != EsdBuffer) {
-#ifdef AMD_EXTENSIONS
for (int f16TexAddr = 0; f16TexAddr < 2; ++f16TexAddr) {
if (f16TexAddr && sampler.type != EbtFloat16)
continue;
-#endif
stageBuiltins[EShLangFragment].append("vec2 textureQueryLod(");
stageBuiltins[EShLangFragment].append(typeName);
if (dimMap[sampler.dim] == 1)
-#ifdef AMD_EXTENSIONS
if (f16TexAddr)
stageBuiltins[EShLangFragment].append(", float16_t");
else
stageBuiltins[EShLangFragment].append(", float");
-#else
- stageBuiltins[EShLangFragment].append(", float");
-#endif
else {
-#ifdef AMD_EXTENSIONS
if (f16TexAddr)
stageBuiltins[EShLangFragment].append(", f16vec");
else
stageBuiltins[EShLangFragment].append(", vec");
-#else
- stageBuiltins[EShLangFragment].append(", vec");
-#endif
stageBuiltins[EShLangFragment].append(postfixes[dimMap[sampler.dim]]);
}
stageBuiltins[EShLangFragment].append(");\n");
-#ifdef AMD_EXTENSIONS
}
-#endif
-#ifdef NV_EXTENSIONS
stageBuiltins[EShLangCompute].append("vec2 textureQueryLod(");
stageBuiltins[EShLangCompute].append(typeName);
if (dimMap[sampler.dim] == 1)
@@ -6404,7 +6376,6 @@
stageBuiltins[EShLangCompute].append(postfixes[dimMap[sampler.dim]]);
}
stageBuiltins[EShLangCompute].append(");\n");
-#endif
}
//
@@ -6416,6 +6387,7 @@
commonBuiltins.append(typeName);
commonBuiltins.append(");\n");
}
+#endif
}
//
@@ -6531,7 +6503,6 @@
}
}
-#ifdef AMD_EXTENSIONS
if (sampler.dim == EsdRect || sampler.dim == EsdBuffer || sampler.shadow || sampler.ms)
return;
@@ -6566,7 +6537,6 @@
commonBuiltins.append("vec4");
commonBuiltins.append(");\n");
}
-#endif
}
//
@@ -6664,7 +6634,6 @@
continue;
if (extraProj && (sampler.dim == Esd3D || sampler.shadow || !sampler.combined))
continue;
-#ifdef AMD_EXTENSIONS
for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { // loop over 16-bit floating-point texel addressing
if (f16TexAddr && sampler.type != EbtFloat16)
@@ -6673,7 +6642,6 @@
compare = true; // compare argument is always present
totalDims--;
}
-#endif
for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) { // loop over "bool" lod clamp
if (lodClamp && (profile == EEsProfile || version < 450))
@@ -6696,14 +6664,10 @@
s.append("int ");
else {
if (sampler.shadow)
-#ifdef AMD_EXTENSIONS
if (sampler.type == EbtFloat16)
s.append("float16_t ");
else
s.append("float ");
-#else
- s.append("float ");
-#endif
else {
s.append(prefixes[sampler.type]);
s.append("vec4 ");
@@ -6741,7 +6705,6 @@
// sampler type
s.append(typeName);
-#ifdef AMD_EXTENSIONS
// P coordinate
if (extraProj) {
if (f16TexAddr)
@@ -6759,22 +6722,6 @@
s.append(postfixes[totalDims]);
}
}
-#else
- // P coordinate
- if (extraProj)
- s.append(",vec4");
- else {
- s.append(",");
- TBasicType t = fetch ? EbtInt : EbtFloat;
- if (totalDims == 1)
- s.append(TType::getBasicString(t));
- else {
- s.append(prefixes[t]);
- s.append("vec");
- s.append(postfixes[totalDims]);
- }
- }
-#endif
// non-optional compare
if (compare)
s.append(",float");
@@ -6783,7 +6730,6 @@
if ((fetch && sampler.dim != EsdBuffer && sampler.dim != EsdRect && !sampler.ms) ||
(sampler.ms && fetch))
s.append(",int");
-#ifdef AMD_EXTENSIONS
// non-optional lod
if (lod) {
if (f16TexAddr)
@@ -6812,23 +6758,6 @@
s.append(postfixes[dimMap[sampler.dim]]);
}
}
-#else
- // non-optional lod
- if (lod)
- s.append(",float");
-
- // gradient arguments
- if (grad) {
- if (dimMap[sampler.dim] == 1)
- s.append(",float,float");
- else {
- s.append(",vec");
- s.append(postfixes[dimMap[sampler.dim]]);
- s.append(",vec");
- s.append(postfixes[dimMap[sampler.dim]]);
- }
- }
-#endif
// offset
if (offset) {
if (dimMap[sampler.dim] == 1)
@@ -6839,7 +6768,6 @@
}
}
-#ifdef AMD_EXTENSIONS
// lod clamp
if (lodClamp) {
if (f16TexAddr)
@@ -6847,29 +6775,19 @@
else
s.append(",float");
}
-#else
- // lod clamp
- if (lodClamp)
- s.append(",float");
-#endif
// texel out (for sparse texture)
if (sparse) {
s.append(",out ");
if (sampler.shadow)
-#ifdef AMD_EXTENSIONS
if (sampler.type == EbtFloat16)
s.append("float16_t");
else
s.append("float");
-#else
- s.append("float");
-#endif
else {
s.append(prefixes[sampler.type]);
s.append("vec4");
}
}
-#ifdef AMD_EXTENSIONS
// optional bias
if (bias) {
if (f16TexAddr)
@@ -6877,27 +6795,18 @@
else
s.append(",float");
}
-#else
- // optional bias
- if (bias)
- s.append(",float");
-#endif
s.append(");\n");
// Add to the per-language set of built-ins
if (bias || lodClamp) {
stageBuiltins[EShLangFragment].append(s);
-#ifdef NV_EXTENSIONS
stageBuiltins[EShLangCompute].append(s);
-#endif
} else
commonBuiltins.append(s);
}
}
-#ifdef AMD_EXTENSIONS
}
-#endif
}
}
}
@@ -6930,12 +6839,10 @@
if (version < 140 && sampler.dim == EsdRect && sampler.type != EbtFloat)
return;
-#ifdef AMD_EXTENSIONS
for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) { // loop over 16-bit floating-point texel addressing
if (f16TexAddr && sampler.type != EbtFloat16)
continue;
-#endif
for (int offset = 0; offset < 3; ++offset) { // loop over three forms of offset in the call name: none, Offset, and Offsets
for (int comp = 0; comp < 2; ++comp) { // loop over presence of comp argument
@@ -6983,14 +6890,10 @@
s.append(typeName);
// P coordinate argument
-#ifdef AMD_EXTENSIONS
if (f16TexAddr)
s.append(",f16vec");
else
s.append(",vec");
-#else
- s.append(",vec");
-#endif
int totalDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0);
s.append(postfixes[totalDims]);
@@ -7018,14 +6921,11 @@
s.append(");\n");
commonBuiltins.append(s);
-#ifdef AMD_EXTENSIONS
}
-#endif
}
}
}
-#ifdef AMD_EXTENSIONS
if (sampler.dim == EsdRect || sampler.shadow)
return;
@@ -7151,7 +7051,6 @@
}
}
}
-#endif
}
//
@@ -7220,6 +7119,9 @@
s.append(builtInConstant);
}
+#ifdef GLSLANG_WEB
+ }
+#else
if (version >= 310) {
// geometry
@@ -7278,10 +7180,8 @@
"in gl_PerVertex {"
"highp vec4 gl_Position;"
"highp float gl_PointSize;"
-#ifdef NV_EXTENSIONS
"highp vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"highp vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
-#endif
"} gl_in[gl_MaxPatchVertices];"
"\n");
}
@@ -7468,10 +7368,8 @@
if (profile != EEsProfile && version >= 450)
s.append(
"float gl_CullDistance[];"
-#ifdef NV_EXTENSIONS
"vec4 gl_SecondaryPositionNV;" // GL_NV_stereo_view_rendering
"vec4 gl_PositionPerViewNV[];" // GL_NVX_multiview_per_view_attributes
-#endif
);
s.append(
"} gl_in[gl_MaxPatchVertices];"
@@ -7599,7 +7497,6 @@
s.append(builtInConstant);
}
-#ifdef NV_EXTENSIONS
// SPV_NV_mesh_shader
if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) {
snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputVerticesNV = %d;", resources.maxMeshOutputVerticesNV);
@@ -7717,6 +7614,7 @@
switch(language) {
case EShLangVertex:
+#ifndef GLSLANG_WEB
if (profile != EEsProfile) {
if (version >= 440) {
symbolTable.setVariableExtensions("gl_BaseVertexARB", 1, &E_GL_ARB_shader_draw_parameters);
@@ -7751,7 +7649,6 @@
}
-#ifdef AMD_EXTENSIONS
if (profile != EEsProfile) {
symbolTable.setFunctionExtensions("minInvocationsAMD", 1, &E_GL_AMD_shader_ballot);
symbolTable.setFunctionExtensions("maxInvocationsAMD", 1, &E_GL_AMD_shader_ballot);
@@ -7797,15 +7694,12 @@
symbolTable.setFunctionExtensions("fragmentMaskFetchAMD", 1, &E_GL_AMD_shader_fragment_mask);
symbolTable.setFunctionExtensions("fragmentFetchAMD", 1, &E_GL_AMD_shader_fragment_mask);
}
-#endif
-#ifdef NV_EXTENSIONS
symbolTable.setFunctionExtensions("textureFootprintNV", 1, &E_GL_NV_shader_texture_footprint);
symbolTable.setFunctionExtensions("textureFootprintClampNV", 1, &E_GL_NV_shader_texture_footprint);
symbolTable.setFunctionExtensions("textureFootprintLodNV", 1, &E_GL_NV_shader_texture_footprint);
symbolTable.setFunctionExtensions("textureFootprintGradNV", 1, &E_GL_NV_shader_texture_footprint);
symbolTable.setFunctionExtensions("textureFootprintGradClampNV", 1, &E_GL_NV_shader_texture_footprint);
-#endif
// Compatibility variables, vertex only
if (spvVersion.spv == 0) {
BuiltInVariable("gl_Color", EbvColor, symbolTable);
@@ -7845,6 +7739,7 @@
symbolTable.setFunctionExtensions("imageAtomicExchange", 1, &E_GL_OES_shader_image_atomic);
symbolTable.setFunctionExtensions("imageAtomicCompSwap", 1, &E_GL_OES_shader_image_atomic);
}
+#endif
if (spvVersion.vulkan == 0) {
SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable);
@@ -7856,6 +7751,8 @@
BuiltInVariable("gl_InstanceIndex", EbvInstanceIndex, symbolTable);
}
+
+#ifndef GLSLANG_WEB
if (version >= 300 /* both ES and non-ES */) {
symbolTable.setVariableExtensions("gl_ViewID_OVR", Num_OVR_multiview_EXTs, OVR_multiview_EXTs);
BuiltInVariable("gl_ViewID_OVR", EbvViewIndex, symbolTable);
@@ -7865,10 +7762,12 @@
symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers);
symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers);
}
-
+#endif
// Fall through
case EShLangTessControl:
+
+#ifndef GLSLANG_WEB
if (profile == EEsProfile && version >= 310) {
BuiltInVariable("gl_BoundingBoxEXT", EbvBoundingBox, symbolTable);
symbolTable.setVariableExtensions("gl_BoundingBoxEXT", 1,
@@ -7881,22 +7780,26 @@
BuiltInVariable("gl_BoundingBox", EbvBoundingBox, symbolTable);
}
}
-
+#endif
// Fall through
case EShLangTessEvaluation:
case EShLangGeometry:
SpecialQualifier("gl_Position", EvqPosition, EbvPosition, symbolTable);
SpecialQualifier("gl_PointSize", EvqPointSize, EbvPointSize, symbolTable);
- SpecialQualifier("gl_ClipVertex", EvqClipVertex, EbvClipVertex, symbolTable);
BuiltInVariable("gl_in", "gl_Position", EbvPosition, symbolTable);
BuiltInVariable("gl_in", "gl_PointSize", EbvPointSize, symbolTable);
- BuiltInVariable("gl_in", "gl_ClipDistance", EbvClipDistance, symbolTable);
- BuiltInVariable("gl_in", "gl_CullDistance", EbvCullDistance, symbolTable);
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);
+ BuiltInVariable("gl_in", "gl_CullDistance", EbvCullDistance, symbolTable);
+
BuiltInVariable("gl_out", "gl_ClipDistance", EbvClipDistance, symbolTable);
BuiltInVariable("gl_out", "gl_CullDistance", EbvCullDistance, symbolTable);
@@ -7908,19 +7811,10 @@
BuiltInVariable("gl_Layer", EbvLayer, symbolTable);
BuiltInVariable("gl_ViewportIndex", EbvViewportIndex, symbolTable);
-#ifdef NV_EXTENSIONS
if (language != EShLangGeometry) {
symbolTable.setVariableExtensions("gl_Layer", Num_viewportEXTs, viewportEXTs);
symbolTable.setVariableExtensions("gl_ViewportIndex", Num_viewportEXTs, viewportEXTs);
}
-#else
- if (language != EShLangGeometry && version >= 410) {
- symbolTable.setVariableExtensions("gl_Layer", 1, &E_GL_ARB_shader_viewport_layer_array);
- symbolTable.setVariableExtensions("gl_ViewportIndex", 1, &E_GL_ARB_shader_viewport_layer_array);
- }
-#endif
-
-#ifdef NV_EXTENSIONS
symbolTable.setVariableExtensions("gl_ViewportMask", 1, &E_GL_NV_viewport_array2);
symbolTable.setVariableExtensions("gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering);
symbolTable.setVariableExtensions("gl_SecondaryViewportMaskNV", 1, &E_GL_NV_stereo_view_rendering);
@@ -7951,7 +7845,6 @@
BuiltInVariable("gl_out", "gl_SecondaryViewportMaskNV", EbvSecondaryViewportMaskNV, symbolTable);
BuiltInVariable("gl_out", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable);
BuiltInVariable("gl_out", "gl_ViewportMaskPerViewNV", EbvViewportMaskPerViewNV, symbolTable);
-#endif
BuiltInVariable("gl_PatchVerticesIn", EbvPatchVertices, symbolTable);
BuiltInVariable("gl_TessLevelOuter", EbvTessLevelOuter, symbolTable);
@@ -8052,7 +7945,7 @@
BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable);
BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable);
}
-
+#endif
break;
case EShLangFragment:
@@ -8069,6 +7962,7 @@
}
}
SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable);
+#ifndef GLSLANG_WEB
SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable);
SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable);
@@ -8223,7 +8117,6 @@
symbolTable.setFunctionExtensions("textureGradOffsetClampARB", 1, &E_GL_ARB_sparse_texture_clamp);
}
-#ifdef AMD_EXTENSIONS
// E_GL_AMD_shader_explicit_vertex_parameter
if (profile != EEsProfile) {
symbolTable.setVariableExtensions("gl_BaryCoordNoPerspAMD", 1, &E_GL_AMD_shader_explicit_vertex_parameter);
@@ -8261,9 +8154,6 @@
symbolTable.setFunctionExtensions("imageStoreLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod);
symbolTable.setFunctionExtensions("sparseImageLoadLodAMD", 1, &E_GL_AMD_shader_image_load_store_lod);
}
-#endif
-
-#ifdef NV_EXTENSIONS
if (profile != EEsProfile && version >= 430) {
symbolTable.setVariableExtensions("gl_FragFullyCoveredNV", 1, &E_GL_NV_conservative_raster_underestimation);
BuiltInVariable("gl_FragFullyCoveredNV", EbvFragFullyCoveredNV, symbolTable);
@@ -8279,7 +8169,6 @@
BuiltInVariable("gl_BaryCoordNV", EbvBaryCoordNV, symbolTable);
BuiltInVariable("gl_BaryCoordNoPerspNV", EbvBaryCoordNoPerspNV, symbolTable);
}
-#endif
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 310)) {
@@ -8419,8 +8308,6 @@
symbolTable.setFunctionExtensions("subgroupQuadSwapHorizontal", 1, &E_GL_KHR_shader_subgroup_quad);
symbolTable.setFunctionExtensions("subgroupQuadSwapVertical", 1, &E_GL_KHR_shader_subgroup_quad);
symbolTable.setFunctionExtensions("subgroupQuadSwapDiagonal", 1, &E_GL_KHR_shader_subgroup_quad);
-
-#ifdef NV_EXTENSIONS
symbolTable.setFunctionExtensions("subgroupPartitionNV", 1, &E_GL_NV_shader_subgroup_partitioned);
symbolTable.setFunctionExtensions("subgroupPartitionedAddNV", 1, &E_GL_NV_shader_subgroup_partitioned);
symbolTable.setFunctionExtensions("subgroupPartitionedMulNV", 1, &E_GL_NV_shader_subgroup_partitioned);
@@ -8443,7 +8330,6 @@
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned);
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned);
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned);
-#endif
// GL_NV_shader_sm_builtins
symbolTable.setVariableExtensions("gl_WarpsPerSMNV", 1, &E_GL_NV_shader_sm_builtins);
@@ -8483,8 +8369,10 @@
}
symbolTable.setFunctionExtensions("helperInvocationEXT", 1, &E_GL_EXT_demote_to_helper_invocation);
+#endif
break;
+#ifndef GLSLANG_WEB
case EShLangCompute:
BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable);
BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable);
@@ -8597,7 +8485,6 @@
symbolTable.setFunctionExtensions("coopMatStoreNV", 1, &E_GL_NV_cooperative_matrix);
symbolTable.setFunctionExtensions("coopMatMulAddNV", 1, &E_GL_NV_cooperative_matrix);
-#ifdef NV_EXTENSIONS
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);
@@ -8609,10 +8496,8 @@
symbolTable.setFunctionExtensions("dFdyCoarse", 1, &E_GL_NV_compute_shader_derivatives);
symbolTable.setFunctionExtensions("fwidthCoarse", 1, &E_GL_NV_compute_shader_derivatives);
}
-#endif
break;
-#ifdef NV_EXTENSIONS
case EShLangRayGenNV:
case EShLangIntersectNV:
case EShLangAnyHitNV:
@@ -8986,6 +8871,7 @@
symbolTable.relateToOperator("floatBitsToUint", EOpFloatBitsToUint);
symbolTable.relateToOperator("intBitsToFloat", EOpIntBitsToFloat);
symbolTable.relateToOperator("uintBitsToFloat", EOpUintBitsToFloat);
+#ifndef GLSLANG_WEB
symbolTable.relateToOperator("doubleBitsToInt64", EOpDoubleBitsToInt64);
symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64);
symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble);
@@ -8999,12 +8885,14 @@
symbolTable.relateToOperator("int16BitsToHalf", EOpInt16BitsToFloat16);
symbolTable.relateToOperator("uint16BitsToHalf", EOpUint16BitsToFloat16);
+#endif
symbolTable.relateToOperator("packSnorm2x16", EOpPackSnorm2x16);
symbolTable.relateToOperator("unpackSnorm2x16", EOpUnpackSnorm2x16);
symbolTable.relateToOperator("packUnorm2x16", EOpPackUnorm2x16);
symbolTable.relateToOperator("unpackUnorm2x16", EOpUnpackUnorm2x16);
+#ifndef GLSLANG_WEB
symbolTable.relateToOperator("packSnorm4x8", EOpPackSnorm4x8);
symbolTable.relateToOperator("unpackSnorm4x8", EOpUnpackSnorm4x8);
symbolTable.relateToOperator("packUnorm4x8", EOpPackUnorm4x8);
@@ -9012,6 +8900,7 @@
symbolTable.relateToOperator("packDouble2x32", EOpPackDouble2x32);
symbolTable.relateToOperator("unpackDouble2x32", EOpUnpackDouble2x32);
+#endif
symbolTable.relateToOperator("packHalf2x16", EOpPackHalf2x16);
symbolTable.relateToOperator("unpackHalf2x16", EOpUnpackHalf2x16);
@@ -9021,6 +8910,7 @@
symbolTable.relateToOperator("packUint2x32", EOpPackUint2x32);
symbolTable.relateToOperator("unpackUint2x32", EOpUnpackUint2x32);
+#ifndef GLSLANG_WEB
symbolTable.relateToOperator("packInt2x16", EOpPackInt2x16);
symbolTable.relateToOperator("unpackInt2x16", EOpUnpackInt2x16);
symbolTable.relateToOperator("packUint2x16", EOpPackUint2x16);
@@ -9088,8 +8978,10 @@
symbolTable.relateToOperator("findMSB", EOpFindMSB);
symbolTable.relateToOperator("helperInvocationEXT", EOpIsHelperInvocation);
+#endif
if (PureOperatorBuiltins) {
+#ifndef GLSLANG_WEB
symbolTable.relateToOperator("imageSize", EOpImageQuerySize);
symbolTable.relateToOperator("imageSamples", EOpImageQuerySamples);
symbolTable.relateToOperator("imageLoad", EOpImageLoad);
@@ -9107,6 +8999,7 @@
symbolTable.relateToOperator("subpassLoad", EOpSubpassLoad);
symbolTable.relateToOperator("subpassLoadMS", EOpSubpassLoadMS);
+#endif
symbolTable.relateToOperator("textureSize", EOpTextureQuerySize);
symbolTable.relateToOperator("textureQueryLod", EOpTextureQueryLod);
@@ -9127,6 +9020,8 @@
symbolTable.relateToOperator("textureProjGrad", EOpTextureProjGrad);
symbolTable.relateToOperator("textureProjGradOffset", EOpTextureProjGradOffset);
symbolTable.relateToOperator("textureGather", EOpTextureGather);
+
+#ifndef GLSLANG_WEB
symbolTable.relateToOperator("textureGatherOffset", EOpTextureGatherOffset);
symbolTable.relateToOperator("textureGatherOffsets", EOpTextureGatherOffsets);
@@ -9135,13 +9030,11 @@
symbolTable.relateToOperator("noise3", EOpNoise);
symbolTable.relateToOperator("noise4", EOpNoise);
-#ifdef NV_EXTENSIONS
symbolTable.relateToOperator("textureFootprintNV", EOpImageSampleFootprintNV);
symbolTable.relateToOperator("textureFootprintClampNV", EOpImageSampleFootprintClampNV);
symbolTable.relateToOperator("textureFootprintLodNV", EOpImageSampleFootprintLodNV);
symbolTable.relateToOperator("textureFootprintGradNV", EOpImageSampleFootprintGradNV);
symbolTable.relateToOperator("textureFootprintGradClampNV", EOpImageSampleFootprintGradClampNV);
-#endif
if (spvVersion.spv == 0 && (IncludeLegacy(version, profile, spvVersion) ||
(profile == EEsProfile && version == 100))) {
@@ -9237,7 +9130,6 @@
symbolTable.relateToOperator("allInvocations", EOpAllInvocations);
symbolTable.relateToOperator("allInvocationsEqual", EOpAllInvocationsEqual);
}
-#ifdef AMD_EXTENSIONS
symbolTable.relateToOperator("minInvocationsAMD", EOpMinInvocations);
symbolTable.relateToOperator("maxInvocationsAMD", EOpMaxInvocations);
symbolTable.relateToOperator("addInvocationsAMD", EOpAddInvocations);
@@ -9282,7 +9174,6 @@
symbolTable.relateToOperator("fragmentMaskFetchAMD", EOpFragmentMaskFetch);
symbolTable.relateToOperator("fragmentFetchAMD", EOpFragmentFetch);
-#endif
}
// GL_KHR_shader_subgroup
@@ -9343,7 +9234,6 @@
symbolTable.relateToOperator("subgroupQuadSwapVertical", EOpSubgroupQuadSwapVertical);
symbolTable.relateToOperator("subgroupQuadSwapDiagonal", EOpSubgroupQuadSwapDiagonal);
-#ifdef NV_EXTENSIONS
symbolTable.relateToOperator("subgroupPartitionNV", EOpSubgroupPartition);
symbolTable.relateToOperator("subgroupPartitionedAddNV", EOpSubgroupPartitionedAdd);
symbolTable.relateToOperator("subgroupPartitionedMulNV", EOpSubgroupPartitionedMul);
@@ -9366,15 +9256,16 @@
symbolTable.relateToOperator("subgroupPartitionedExclusiveAndNV", EOpSubgroupPartitionedExclusiveAnd);
symbolTable.relateToOperator("subgroupPartitionedExclusiveOrNV", EOpSubgroupPartitionedExclusiveOr);
symbolTable.relateToOperator("subgroupPartitionedExclusiveXorNV", EOpSubgroupPartitionedExclusiveXor);
-#endif
}
if (profile == EEsProfile) {
symbolTable.relateToOperator("shadow2DEXT", EOpTexture);
symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj);
}
+#endif
}
+#ifndef GLSLANG_WEB
switch(language) {
case EShLangVertex:
break;
@@ -9391,9 +9282,6 @@
break;
case EShLangFragment:
- symbolTable.relateToOperator("dFdx", EOpDPdx);
- symbolTable.relateToOperator("dFdy", EOpDPdy);
- symbolTable.relateToOperator("fwidth", EOpFwidth);
if (profile != EEsProfile && version >= 400) {
symbolTable.relateToOperator("dFdxFine", EOpDPdxFine);
symbolTable.relateToOperator("dFdyFine", EOpDPdyFine);
@@ -9406,10 +9294,8 @@
symbolTable.relateToOperator("interpolateAtSample", EOpInterpolateAtSample);
symbolTable.relateToOperator("interpolateAtOffset", EOpInterpolateAtOffset);
-#ifdef AMD_EXTENSIONS
if (profile != EEsProfile)
symbolTable.relateToOperator("interpolateAtVertexAMD", EOpInterpolateAtVertex);
-#endif
symbolTable.relateToOperator("beginInvocationInterlockARB", EOpBeginInvocationInterlock);
symbolTable.relateToOperator("endInvocationInterlockARB", EOpEndInvocationInterlock);
@@ -9420,7 +9306,6 @@
symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared);
symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier);
symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared);
-#ifdef NV_EXTENSIONS
if ((profile != EEsProfile && version >= 450) ||
(profile == EEsProfile && version >= 320)) {
symbolTable.relateToOperator("dFdx", EOpDPdx);
@@ -9433,13 +9318,11 @@
symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse);
symbolTable.relateToOperator("fwidthCoarse",EOpFwidthCoarse);
}
-#endif
symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoad);
symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStore);
symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd);
break;
-#ifdef NV_EXTENSIONS
case EShLangRayGenNV:
case EShLangClosestHitNV:
case EShLangMissNV:
@@ -9475,11 +9358,11 @@
symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared);
}
break;
-#endif
default:
assert(false && "Language not supported");
}
+#endif
}
//
@@ -9493,6 +9376,7 @@
//
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);
@@ -9538,13 +9422,11 @@
BuiltInVariable("gl_in", "gl_TexCoord", EbvTexCoord, symbolTable);
BuiltInVariable("gl_in", "gl_FogFragCoord", EbvFogFragCoord, symbolTable);
-#ifdef NV_EXTENSIONS
symbolTable.setVariableExtensions("gl_in", "gl_SecondaryPositionNV", 1, &E_GL_NV_stereo_view_rendering);
symbolTable.setVariableExtensions("gl_in", "gl_PositionPerViewNV", 1, &E_GL_NVX_multiview_per_view_attributes);
BuiltInVariable("gl_in", "gl_SecondaryPositionNV", EbvSecondaryPositionNV, symbolTable);
BuiltInVariable("gl_in", "gl_PositionPerViewNV", EbvPositionPerViewNV, symbolTable);
-#endif
// extension requirements
if (profile == EEsProfile) {
@@ -9556,6 +9438,7 @@
default:
break;
}
+#endif
}
} // end namespace glslang
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index 8cb4f85..da7b189 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -123,12 +123,12 @@
if ((op == EOpAdd || op == EOpSub) && extensionRequested(E_GL_EXT_buffer_reference2)) {
// No addressing math on struct with unsized array.
- if ((left->getBasicType() == EbtReference && left->getType().getReferentType()->containsUnsizedArray()) ||
- (right->getBasicType() == EbtReference && right->getType().getReferentType()->containsUnsizedArray())) {
+ if ((left->isReference() && left->getType().getReferentType()->containsUnsizedArray()) ||
+ (right->isReference() && right->getType().getReferentType()->containsUnsizedArray())) {
return nullptr;
}
- if (left->getBasicType() == EbtReference && isTypeInt(right->getBasicType())) {
+ if (left->isReference() && isTypeInt(right->getBasicType())) {
const TType& referenceType = left->getType();
TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(left->getType()), loc, true);
left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64));
@@ -141,7 +141,7 @@
return node;
}
- if (op == EOpAdd && right->getBasicType() == EbtReference && isTypeInt(left->getBasicType())) {
+ if (op == EOpAdd && right->isReference() && isTypeInt(left->getBasicType())) {
const TType& referenceType = right->getType();
TIntermConstantUnion* size = addConstantUnion((unsigned long long)computeBufferReferenceTypeSize(right->getType()), loc, true);
right = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, right, TType(EbtUint64));
@@ -154,7 +154,7 @@
return node;
}
- if (op == EOpSub && left->getBasicType() == EbtReference && right->getBasicType() == EbtReference) {
+ if (op == EOpSub && left->isReference() && right->isReference()) {
TIntermConstantUnion* size = addConstantUnion((long long)computeBufferReferenceTypeSize(left->getType()), loc, true);
left = addBuiltInFunctionCall(loc, EOpConvPtrToUint64, true, left, TType(EbtUint64));
@@ -170,7 +170,7 @@
}
// No other math operators supported on references
- if (left->getBasicType() == EbtReference || right->getBasicType() == EbtReference) {
+ if (left->isReference() || right->isReference()) {
return nullptr;
}
}
@@ -290,7 +290,7 @@
// Convert "reference += int" to "reference = reference + int". We need this because the
// "reference + int" calculation involves a cast back to the original type, which makes it
// not an lvalue.
- if ((op == EOpAddAssign || op == EOpSubAssign) && left->getBasicType() == EbtReference &&
+ if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference() &&
extensionRequested(E_GL_EXT_buffer_reference2)) {
if (!(right->getType().isScalar() && right->getType().isIntegerDomain()))
@@ -536,9 +536,7 @@
return false;
case EbtAtomicUint:
case EbtSampler:
-#ifdef NV_EXTENSIONS
case EbtAccStructNV:
-#endif
// opaque types can be passed to functions
if (op == EOpFunction)
break;
@@ -1110,7 +1108,7 @@
case EOpConstructStruct:
case EOpConstructCooperativeMatrix:
- if (type.getBasicType() == EbtReference || node->getType().getBasicType() == EbtReference) {
+ if (type.isReference() || node->getType().isReference()) {
// types must match to assign a reference
if (type == node->getType())
return node;
@@ -1670,7 +1668,7 @@
case EbtFloat:
case EbtDouble:
return true;
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtInt16:
case EbtUint16:
return extensionRequested(E_GL_AMD_gpu_shader_int16);
@@ -1688,17 +1686,15 @@
return true;
case EbtBool:
return (getSource() == EShSourceHlsl);
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtInt16:
case EbtUint16:
return extensionRequested(E_GL_AMD_gpu_shader_int16);
-#endif
case EbtFloat16:
return
-#ifdef AMD_EXTENSIONS
extensionRequested(E_GL_AMD_gpu_shader_half_float) ||
-#endif
getSource() == EShSourceHlsl;
+#endif
default:
return false;
}
@@ -1710,7 +1706,7 @@
return true;
case EbtBool:
return getSource() == EShSourceHlsl;
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtInt16:
case EbtUint16:
return extensionRequested(E_GL_AMD_gpu_shader_int16);
@@ -1724,7 +1720,7 @@
return true;
case EbtBool:
return getSource() == EShSourceHlsl;
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtInt16:
return extensionRequested(E_GL_AMD_gpu_shader_int16);
#endif
@@ -1738,7 +1734,7 @@
case EbtInt64:
case EbtUint64:
return true;
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtInt16:
case EbtUint16:
return extensionRequested(E_GL_AMD_gpu_shader_int16);
@@ -1751,15 +1747,15 @@
case EbtInt:
case EbtInt64:
return true;
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtInt16:
return extensionRequested(E_GL_AMD_gpu_shader_int16);
#endif
default:
return false;
}
+#ifndef GLSLANG_WEB
case EbtFloat16:
-#ifdef AMD_EXTENSIONS
switch (from) {
case EbtInt16:
case EbtUint16:
@@ -1769,10 +1765,8 @@
default:
break;
}
-#endif
return false;
case EbtUint16:
-#ifdef AMD_EXTENSIONS
switch (from) {
case EbtInt16:
case EbtUint16:
@@ -1780,8 +1774,8 @@
default:
break;
}
-#endif
return false;
+#endif
default:
return false;
}
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index ff48f7b..9fbbe59 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -152,12 +152,10 @@
case EvqBuffer:
if (node->getQualifier().readonly)
message = "can't modify a readonly buffer";
-#ifdef NV_EXTENSIONS
- if (node->getQualifier().layoutShaderRecordNV)
+ if (node->getQualifier().isShaderRecordNV())
message = "can't modify a shaderrecordnv qualified buffer";
-#endif
break;
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
case EvqHitAttrNV:
if (language != EShLangIntersectNV)
message = "cannot modify hitAttributeNV in this stage";
@@ -178,7 +176,7 @@
case EbtVoid:
message = "can't modify void";
break;
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtAccStructNV:
message = "can't modify accelerationStructureNV";
break;
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 9c99367..2aa5073 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -163,7 +163,9 @@
void TParseContext::setLimits(const TBuiltInResource& r)
{
resources = r;
+ intermediate.setLimits(r);
+#ifndef GLSLANG_WEB
anyIndexLimits = ! limits.generalAttributeMatrixVectorIndexing ||
! limits.generalConstantMatrixVectorIndexing ||
! limits.generalSamplerIndexing ||
@@ -171,7 +173,6 @@
! limits.generalVariableIndexing ||
! limits.generalVaryingIndexing;
- intermediate.setLimits(resources);
// "Each binding point tracks its own current default offset for
// inheritance of subsequent variables using the same binding. The initial state of compilation is that all
@@ -179,6 +180,7 @@
atomicUintOffsets = new int[resources.maxAtomicCounterBindings];
for (int b = 0; b < resources.maxAtomicCounterBindings; ++b)
atomicUintOffsets[b] = 0;
+#endif
}
//
@@ -298,6 +300,7 @@
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,
@@ -312,6 +315,7 @@
symbol->getAsAnonMember()->getAnonContainer().getType().containsUnsizedArray()))
makeEditable(symbol);
}
+#endif
const TVariable* variable;
const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr;
@@ -357,7 +361,7 @@
if (variable->getType().getQualifier().isIo())
intermediate.addIoAccessed(*string);
- if (variable->getType().getBasicType() == EbtReference &&
+ if (variable->getType().isReference() &&
variable->getType().getQualifier().bufferReferenceNeedsVulkanMemoryModel()) {
intermediate.setUseVulkanMemoryModel();
}
@@ -378,7 +382,7 @@
variableCheck(base);
if (! base->isArray() && ! base->isMatrix() && ! base->isVector() && ! base->getType().isCoopMat() &&
- base->getBasicType() != EbtReference) {
+ ! base->isReference()) {
if (base->getAsSymbolNode())
error(loc, " left of '[' is not of type array, matrix, or vector ", base->getAsSymbolNode()->getName().c_str(), "");
else
@@ -389,7 +393,7 @@
}
if (!base->isArray() && base->isVector()) {
- if (base->getType().containsBasicType(EbtFloat16))
+ if (base->getType().contains16BitFloat())
requireFloat16Arithmetic(loc, "[", "does not operate on types containing float16");
if (base->getType().contains16BitInt())
requireInt16Arithmetic(loc, "[", "does not operate on types containing (u)int16");
@@ -407,23 +411,24 @@
// at least one of base and index is not a front-end constant variable...
TIntermTyped* result = nullptr;
- if (base->getBasicType() == EbtReference && ! base->isArray()) {
+#ifndef GLSLANG_WEB
+ if (base->isReference() && ! base->isArray()) {
requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference indexing");
result = intermediate.addBinaryMath(EOpAdd, base, index, loc);
result->setType(base->getType());
return result;
}
+ if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
+ handleIoResizeArrayAccess(loc, base);
+#endif
if (index->getQualifier().isFrontEndConstant())
checkIndex(loc, base->getType(), indexValue);
- if (base->getAsSymbolNode() && isIoResizeArray(base->getType()))
- handleIoResizeArrayAccess(loc, base);
-
if (index->getQualifier().isFrontEndConstant()) {
+#ifndef GLSLANG_WEB
if (base->getType().isUnsizedArray()) {
base->getWritableType().updateImplicitArraySize(indexValue + 1);
-#ifdef NV_EXTENSIONS
// For 2D per-view builtin arrays, update the inner dimension size in parent type
if (base->getQualifier().isPerView() && base->getQualifier().builtIn != EbvNone) {
TIntermBinary* binaryNode = base->getAsBinaryNode();
@@ -434,11 +439,12 @@
arraySizes.setDimSize(1, std::max(arraySizes.getDimSize(1), indexValue + 1));
}
}
-#endif
} 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
@@ -450,6 +456,7 @@
}
base->getWritableType().setArrayVariablyIndexed();
}
+#endif
if (base->getBasicType() == EbtBlock) {
if (base->getQualifier().storage == EvqBuffer)
requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array");
@@ -484,16 +491,20 @@
}
result->setType(newType);
+#ifndef GLSLANG_WEB
// Propagate nonuniform
if (base->getQualifier().isNonUniform() || index->getQualifier().isNonUniform())
result->getWritableType().getQualifier().nonUniform = true;
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)
{
@@ -530,14 +541,12 @@
{
return type.isArray() &&
((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) ||
- (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch)
-#ifdef NV_EXTENSIONS
- ||
- (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && type.getQualifier().pervertexNV) ||
- (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)
-
-#endif
- );
+ (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut &&
+ ! type.getQualifier().patch) ||
+ (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn &&
+ type.getQualifier().pervertexNV) ||
+ (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut &&
+ !type.getQualifier().perTaskNV));
}
// If an array is not isIoResizeArray() but is an io array, make sure it has the right size
@@ -566,11 +575,7 @@
void TParseContext::ioArrayCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
if (! type.isArray() && ! symbolTable.atBuiltInLevel()) {
- if (type.getQualifier().isArrayedIo(language)
-#ifdef NV_EXTENSIONS
- && !type.getQualifier().layoutPassthrough
-#endif
- )
+ if (type.getQualifier().isArrayedIo(language) && !type.getQualifier().layoutPassthrough)
error(loc, "type must be an array:", type.getStorageQualifierString(), identifier.c_str());
}
}
@@ -617,12 +622,7 @@
// As I/O array sizes don't change, fetch requiredSize only once,
// except for mesh shaders which could have different I/O array sizes based on type qualifiers.
- if (firstIteration
-#ifdef NV_EXTENSIONS
- || (language == EShLangMeshNV)
-#endif
- )
- {
+ if (firstIteration || (language == EShLangMeshNV)) {
requiredSize = getIoArrayImplicitSize(type.getQualifier(), &featureString);
if (requiredSize == 0)
break;
@@ -647,14 +647,11 @@
else if (language == EShLangTessControl) {
expectedSize = maxVertices;
str = "vertices";
- }
-#ifdef NV_EXTENSIONS
- else if (language == EShLangFragment) {
+ } else if (language == EShLangFragment) {
// Number of vertices for Fragment shader is always three.
expectedSize = 3;
str = "vertices";
- }
- else if (language == EShLangMeshNV) {
+ } else if (language == EShLangMeshNV) {
unsigned int maxPrimitives =
intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0;
if (qualifier.builtIn == EbvPrimitiveIndicesNV) {
@@ -671,7 +668,6 @@
str = "max_vertices";
}
}
-#endif
if (featureString)
*featureString = str;
return expectedSize;
@@ -686,19 +682,19 @@
error(loc, "inconsistent input primitive for array size of", feature, name.c_str());
else if (language == EShLangTessControl)
error(loc, "inconsistent output number of vertices for array size of", feature, name.c_str());
-#ifdef NV_EXTENSIONS
else if (language == EShLangFragment) {
if (type.getOuterArraySize() > requiredSize)
error(loc, " cannot be greater than 3 for pervertexNV", feature, name.c_str());
}
else if (language == EShLangMeshNV)
error(loc, "inconsistent output array size of", feature, name.c_str());
-#endif
else
assert(0);
}
}
+#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)
@@ -721,7 +717,7 @@
break;
}
- if (((left->getType().containsBasicType(EbtFloat16) || right->getType().containsBasicType(EbtFloat16)) && !float16Arithmetic()) ||
+ if (((left->getType().contains16BitFloat() || right->getType().contains16BitFloat()) && !float16Arithmetic()) ||
((left->getType().contains16BitInt() || right->getType().contains16BitInt()) && !int16Arithmetic()) ||
((left->getType().contains8BitInt() || right->getType().contains8BitInt()) && !int8Arithmetic())) {
allowed = false;
@@ -743,14 +739,13 @@
rValueErrorCheck(loc, str, childNode);
bool allowed = true;
- if ((childNode->getType().containsBasicType(EbtFloat16) && !float16Arithmetic()) ||
+ if ((childNode->getType().contains16BitFloat() && !float16Arithmetic()) ||
(childNode->getType().contains16BitInt() && !int16Arithmetic()) ||
(childNode->getType().contains8BitInt() && !int8Arithmetic())) {
allowed = false;
}
TIntermTyped* result = nullptr;
-
if (allowed)
result = intermediate.addUnaryMath(op, childNode, loc);
@@ -819,7 +814,7 @@
TSwizzleSelectors<TVectorSelector> selectors;
parseSwizzleSelector(loc, field, base->getVectorSize(), selectors);
- if (base->isVector() && selectors.size() != 1 && base->getType().containsBasicType(EbtFloat16))
+ if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitFloat())
requireFloat16Arithmetic(loc, ".", "can't swizzle types containing float16");
if (base->isVector() && selectors.size() != 1 && base->getType().contains16BitInt())
requireInt16Arithmetic(loc, ".", "can't swizzle types containing (u)int16");
@@ -854,12 +849,10 @@
if (base->getType().getQualifier().isSpecConstant())
result->getWritableType().getQualifier().makeSpecConstant();
}
- } else if (base->getBasicType() == EbtStruct ||
- base->getBasicType() == EbtBlock ||
- base->getBasicType() == EbtReference) {
- const TTypeList* fields = base->getBasicType() == EbtReference ?
- base->getType().getReferentType()->getStruct() :
- base->getType().getStruct();
+ } else if (base->isStruct() || base->isReference()) {
+ const TTypeList* fields = base->isReference() ?
+ base->getType().getReferentType()->getStruct() :
+ base->getType().getStruct();
bool fieldFound = false;
int member;
for (member = 0; member < (int)fields->size(); ++member) {
@@ -1092,9 +1085,12 @@
{
TIntermTyped* result = nullptr;
+#ifndef GLSLANG_WEB
if (function->getBuiltInOp() == EOpArrayLength)
result = handleLengthMethod(loc, function, arguments);
- else if (function->getBuiltInOp() != EOpNull) {
+ else
+#endif
+ if (function->getBuiltInOp() != EOpNull) {
//
// Then this should be a constructor.
// Don't go through the symbol table for constructors.
@@ -1126,7 +1122,7 @@
if (builtIn && fnCandidate->getNumExtensions())
requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str());
- if (builtIn && fnCandidate->getType().containsBasicType(EbtFloat16))
+ if (builtIn && fnCandidate->getType().contains16BitFloat())
requireFloat16Arithmetic(loc, "built-in function", "float16 types can only be in uniform block or buffer storage");
if (builtIn && fnCandidate->getType().contains16BitInt())
requireInt16Arithmetic(loc, "built-in function", "(u)int16 types can only be in uniform block or buffer storage");
@@ -1169,15 +1165,15 @@
// "...but only restrict can be taken away from a calling argument, by a formal parameter that
// lacks the restrict qualifier..."
}
- if (!builtIn && argQualifier.layoutFormat != formalQualifier.layoutFormat) {
+ if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) {
// we have mismatched formats, which should only be allowed if writeonly
// and at least one format is unknown
- if (!formalQualifier.writeonly || (formalQualifier.layoutFormat != ElfNone &&
- argQualifier.layoutFormat != ElfNone))
+ if (!formalQualifier.writeonly || (formalQualifier.getFormat() != ElfNone &&
+ argQualifier.getFormat() != ElfNone))
error(arguments->getLoc(), "image formats must match", "format", "");
}
- if (builtIn && arg->getAsTyped()->getType().containsBasicType(EbtFloat16))
+ if (builtIn && arg->getAsTyped()->getType().contains16BitFloat())
requireFloat16Arithmetic(arguments->getLoc(), "built-in function", "float16 types can only be in uniform block or buffer storage");
if (builtIn && arg->getAsTyped()->getType().contains16BitInt())
requireInt16Arithmetic(arguments->getLoc(), "built-in function", "(u)int16 types can only be in uniform block or buffer storage");
@@ -1348,13 +1344,9 @@
operationPrecision = std::max(operationPrecision, function[arg].type->getQualifier().precision);
}
// compute the result precision
-#ifdef AMD_EXTENSIONS
if (agg->isSampling() ||
agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore ||
agg->getOp() == EOpImageLoadLod || agg->getOp() == EOpImageStoreLod)
-#else
- if (agg->isSampling() || agg->getOp() == EOpImageLoad || agg->getOp() == EOpImageStore)
-#endif
resultPrecision = sequence[0]->getAsTyped()->getQualifier().precision;
else if (function.getType().getBasicType() != EbtBool)
resultPrecision = function.getType().getQualifier().precision == EpqNone ?
@@ -1454,6 +1446,8 @@
}
}
+#ifndef GLSLANG_WEB
+
// Finish processing object.length(). This started earlier in handleDotDereference(), where
// the ".length" part was recognized and semantically checked, and finished here where the
// function syntax "()" is recognized.
@@ -1475,13 +1469,8 @@
// without actually redeclaring the array. (It is an error to use a member before the
// redeclaration, but not an error to use the array name itself.)
const TString& name = intermNode->getAsSymbolNode()->getName();
- if (name == "gl_in" || name == "gl_out"
-#ifdef NV_EXTENSIONS
- || name == "gl_MeshVerticesNV"
- || name == "gl_MeshPrimitivesNV"
-#endif
- )
- {
+ if (name == "gl_in" || name == "gl_out" || name == "gl_MeshVerticesNV" ||
+ name == "gl_MeshPrimitivesNV") {
length = getIoArrayImplicitSize(type.getQualifier());
}
}
@@ -1519,11 +1508,14 @@
return intermediate.addConstantUnion(length, loc);
}
+#endif
+
//
// Add any needed implicit conversions for function-call arguments to input parameters.
//
void TParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) const
{
+#ifndef GLSLANG_WEB
TIntermAggregate* aggregate = arguments->getAsAggregate();
// Process each argument's conversion
@@ -1551,6 +1543,7 @@
}
}
}
+#endif
}
//
@@ -1562,6 +1555,9 @@
//
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?
@@ -1629,6 +1625,7 @@
conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), intermNode.getLoc());
return conversionTree;
+#endif
}
void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& fnCandidate, const TIntermOperator& callNode)
@@ -1880,7 +1877,7 @@
error(loc, "must be a compile-time constant:", feature, "component argument");
}
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
bool bias = false;
if (callNode.getOp() == EOpTextureGather)
bias = fnCandidate.getParamCount() > 3;
@@ -1900,7 +1897,7 @@
break;
}
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EOpSparseTextureGather:
case EOpSparseTextureGatherOffset:
case EOpSparseTextureGatherOffsets:
@@ -1991,7 +1988,7 @@
if (arg > 0) {
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 && arg0->getType().getSampler().shadow;
if (f16ShadowCompare)
++arg;
@@ -2011,7 +2008,7 @@
break;
}
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
case EOpTraceNV:
if (!(*argp)[10]->getAsConstantUnion())
error(loc, "argument must be compile-time constant", "payload number", "");
@@ -2042,12 +2039,12 @@
// Make sure the image types have the correct layout() format and correct argument types
const TType& imageType = arg0->getType();
if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) {
- if (imageType.getQualifier().layoutFormat != ElfR32i && imageType.getQualifier().layoutFormat != ElfR32ui)
+ if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui)
error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), "");
} else {
if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") != 0)
error(loc, "only supported on integer images", fnCandidate.getName().c_str(), "");
- else if (imageType.getQualifier().layoutFormat != ElfR32f && profile == EEsProfile)
+ else if (imageType.getQualifier().getFormat() != ElfR32f && profile == EEsProfile)
error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), "");
}
@@ -2075,13 +2072,9 @@
requireExtensions(loc, 1, &E_GL_KHR_memory_scope_semantics, fnCandidate.getName().c_str());
memorySemanticsCheck(loc, fnCandidate, callNode);
} else if (arg0->getType().getBasicType() == EbtInt64 || arg0->getType().getBasicType() == EbtUint64) {
-#ifdef NV_EXTENSIONS
const char* const extensions[2] = { E_GL_NV_shader_atomic_int64,
E_GL_EXT_shader_atomic_int64 };
requireExtensions(loc, 2, extensions, fnCandidate.getName().c_str());
-#else
- requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_int64, fnCandidate.getName().c_str());
-#endif
}
break;
}
@@ -2089,9 +2082,7 @@
case EOpInterpolateAtCentroid:
case EOpInterpolateAtSample:
case EOpInterpolateAtOffset:
-#ifdef AMD_EXTENSIONS
case EOpInterpolateAtVertex:
-#endif
// Make sure the first argument is an interpolant, or an array element of an interpolant
if (arg0->getType().getQualifier().storage != EvqVaryingIn) {
// It might still be an array element.
@@ -2107,7 +2098,7 @@
error(loc, "first argument must be an interpolant, or interpolant-array element", fnCandidate.getName().c_str(), "");
}
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
if (callNode.getOp() == EOpInterpolateAtVertex) {
if (!arg0->getType().getQualifier().isExplicitInterpolation())
error(loc, "argument must be qualified as __explicitInterpAMD in", "interpolant", "");
@@ -2317,12 +2308,12 @@
if (fnCandidate.getName().compare(0, 11, "imageAtomic") == 0) {
const TType& imageType = callNode.getSequence()[0]->getAsTyped()->getType();
if (imageType.getSampler().type == EbtInt || imageType.getSampler().type == EbtUint) {
- if (imageType.getQualifier().layoutFormat != ElfR32i && imageType.getQualifier().layoutFormat != ElfR32ui)
+ if (imageType.getQualifier().getFormat() != ElfR32i && imageType.getQualifier().getFormat() != ElfR32ui)
error(loc, "only supported on image with format r32i or r32ui", fnCandidate.getName().c_str(), "");
} else {
if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") != 0)
error(loc, "only supported on integer images", fnCandidate.getName().c_str(), "");
- else if (imageType.getQualifier().layoutFormat != ElfR32f && profile == EEsProfile)
+ else if (imageType.getQualifier().getFormat() != ElfR32f && profile == EEsProfile)
error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), "");
}
}
@@ -2525,8 +2516,7 @@
}
}
- if (binaryNode && binaryNode->getOp() == EOpIndexDirectStruct &&
- binaryNode->getLeft()->getBasicType() == EbtReference)
+ if (binaryNode && binaryNode->getOp() == EOpIndexDirectStruct && binaryNode->getLeft()->isReference())
return false;
// Let the base class check errors
@@ -2586,7 +2576,7 @@
// Let the base class check errors
TParseContextBase::rValueErrorCheck(loc, op, node);
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
TIntermSymbol* symNode = node->getAsSymbolNode();
if (!(symNode && symNode->getQualifier().writeonly)) // base class checks
if (symNode && symNode->getQualifier().explicitInterp)
@@ -2823,7 +2813,7 @@
if (function[arg].type->isFloatingDomain())
floatArgument = true;
if (type.isStruct()) {
- if (function[arg].type->containsBasicType(EbtFloat16)) {
+ if (function[arg].type->contains16BitFloat()) {
requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type");
}
if (function[arg].type->containsBasicType(EbtUint16) ||
@@ -3150,6 +3140,8 @@
}
}
+#ifndef GLSLANG_WEB
+
void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
if (type.getQualifier().storage == EvqUniform)
@@ -3160,7 +3152,7 @@
else if (type.getBasicType() == EbtAtomicUint && type.getQualifier().storage != EvqUniform)
error(loc, "atomic_uints can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str());
}
-#ifdef NV_EXTENSIONS
+
void TParseContext::accStructNVCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
if (type.getQualifier().storage == EvqUniform)
@@ -3173,7 +3165,8 @@
type.getBasicTypeString().c_str(), identifier.c_str());
}
-#endif
+
+#endif GLSLANG_WEB
void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier)
{
@@ -3252,7 +3245,7 @@
if (! symbolTable.atGlobalLevel())
return;
- if (!(publicType.userDef && publicType.userDef->getBasicType() == EbtReference)) {
+ if (!(publicType.userDef && publicType.userDef->isReference())) {
if (qualifier.isMemoryQualifierImageAndSSBOOnly() && ! publicType.isImage() && publicType.qualifier.storage != EvqBuffer) {
error(loc, "memory qualifiers cannot be used on this type", "", "");
} else if (qualifier.isMemory() && (publicType.basicType != EbtSampler) && !publicType.qualifier.isUniformOrBuffer()) {
@@ -3262,13 +3255,13 @@
if (qualifier.storage == EvqBuffer &&
publicType.basicType != EbtBlock &&
- !qualifier.layoutBufferReference)
+ !qualifier.hasBufferReference())
error(loc, "buffers can be declared only as blocks", "buffer", "");
if (qualifier.storage != EvqVaryingIn && qualifier.storage != EvqVaryingOut)
return;
- if (publicType.shaderQualifiers.blendEquation)
+ if (publicType.shaderQualifiers.hasBlendEquation())
error(loc, "can only be applied to a standalone 'out'", "blend equation", "");
// now, knowing it is a shader in/out, do all the in/out semantic checks
@@ -3282,10 +3275,8 @@
profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output");
if (!qualifier.flat
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
&& !qualifier.explicitInterp
-#endif
-#ifdef NV_EXTENSIONS
&& !qualifier.pervertexNV
#endif
) {
@@ -3310,7 +3301,7 @@
if (qualifier.patch && qualifier.isInterpolation())
error(loc, "cannot use interpolation qualifiers with patch", "patch", "");
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
if (qualifier.perTaskNV && publicType.basicType != EbtBlock)
error(loc, "taskNV variables can be declared only as blocks", "taskNV", "");
#endif
@@ -3433,11 +3424,7 @@
// Multiple interpolation qualifiers (mostly done later by 'individual qualifiers')
if (src.isInterpolation() && dst.isInterpolation())
-#ifdef AMD_EXTENSIONS
error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective, __explicitInterpAMD)", "", "");
-#else
- error(loc, "can only have one interpolation qualifier (flat, smooth, noperspective)", "", "");
-#endif
// Ordering
if (! force && ((profile != EEsProfile && version < 420) ||
@@ -3499,11 +3486,9 @@
MERGE_SINGLETON(centroid);
MERGE_SINGLETON(smooth);
MERGE_SINGLETON(flat);
+#ifndef GLSLANG_WEB
MERGE_SINGLETON(nopersp);
-#ifdef AMD_EXTENSIONS
MERGE_SINGLETON(explicitInterp);
-#endif
-#ifdef NV_EXTENSIONS
MERGE_SINGLETON(perPrimitiveNV);
MERGE_SINGLETON(perViewNV);
MERGE_SINGLETON(perTaskNV);
@@ -3612,8 +3597,7 @@
{
if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque())
error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), "");
-
- if (!parsingBuiltins && type.containsBasicType(EbtFloat16))
+ if (!parsingBuiltins && type.contains16BitFloat())
requireFloat16Arithmetic(loc, type.getBasicTypeString().c_str(), "float16 types can only be in uniform block or buffer storage");
if (!parsingBuiltins && type.contains16BitInt())
requireInt16Arithmetic(loc, type.getBasicTypeString().c_str(), "(u)int16 types can only be in uniform block or buffer storage");
@@ -3787,6 +3771,7 @@
if (qualifier.storage == EvqBuffer && lastMember)
return;
+#ifndef GLSLANG_WEB
// implicitly-sized io exceptions:
switch (language) {
case EShLangGeometry:
@@ -3809,17 +3794,16 @@
extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader))
return;
break;
-#ifdef NV_EXTENSIONS
case EShLangMeshNV:
if (qualifier.storage == EvqVaryingOut)
if ((profile == EEsProfile && version >= 320) ||
extensionTurnedOn(E_GL_NV_mesh_shader))
return;
break;
-#endif
default:
break;
}
+#endif
arraySizeRequiredCheck(loc, *arraySizes);
}
@@ -3861,6 +3845,7 @@
if (symbolTable.atGlobalLevel())
trackLinkage(*symbol);
+#ifndef GLSLANG_WEB
if (! symbolTable.atBuiltInLevel()) {
if (isIoResizeArray(type)) {
ioArraySymbolResizeList.push_back(symbol);
@@ -3868,6 +3853,7 @@
} else
fixIoArraySize(loc, symbol->getWritableType());
}
+#endif
return;
}
@@ -3905,6 +3891,7 @@
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()))
@@ -3918,8 +3905,11 @@
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)
{
@@ -3933,7 +3923,7 @@
const TIntermBinary* binary = base.getAsBinaryNode();
if (binary != nullptr &&
binary->getOp() == EOpIndexDirectStruct &&
- binary->getLeft()->getBasicType() == EbtReference) {
+ binary->getLeft()->isReference()) {
const int index = binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst();
const int memberCount = (int)binary->getLeft()->getType().getReferentType()->getStruct()->size();
@@ -3943,10 +3933,7 @@
}
// check for additional things allowed by GL_EXT_nonuniform_qualifier
- if (base.getBasicType() == EbtSampler ||
-#ifdef NV_EXTENSIONS
- base.getBasicType() == EbtAccStructNV ||
-#endif
+ if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStructNV ||
(base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer()))
requireExtensions(loc, 1, &E_GL_EXT_nonuniform_qualifier, "variable index");
else
@@ -3963,7 +3950,7 @@
// is it the last member?
const int index = binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst();
- if (binary->getLeft()->getBasicType() == EbtReference)
+ if (binary->getLeft()->isReference())
return false;
const int memberCount = (int)binary->getLeft()->getType().getStruct()->size();
@@ -3975,7 +3962,6 @@
return false;
}
-#ifdef NV_EXTENSIONS
// Check if mesh perviewNV attributes have a view dimension
// and resize it to gl_MaxMeshViewCountNV when implicitly sized.
void TParseContext::checkAndResizeMeshViewDim(const TSourceLoc& loc, TType& type, bool isBlockMember)
@@ -4002,7 +3988,8 @@
error(loc, "requires a view array dimension", "perviewNV", "");
}
}
-#endif
+
+#endif // GLSLANG_WEB
// Returns true if the first argument to the #line directive is the line number for the next line.
//
@@ -4046,6 +4033,7 @@
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;
@@ -4080,11 +4068,9 @@
(identifier == "gl_Color" && language == EShLangFragment) ||
(identifier == "gl_FragStencilRefARB" && (nonEsRedecls && version >= 140)
&& language == EShLangFragment) ||
-#ifdef NV_EXTENSIONS
identifier == "gl_SampleMask" ||
identifier == "gl_Layer" ||
identifier == "gl_PrimitiveIndicesNV" ||
-#endif
identifier == "gl_TexCoord") {
// Find the existing symbol, if any.
@@ -4164,16 +4150,13 @@
}
}
else if (
-#ifdef NV_EXTENSIONS
identifier == "gl_PrimitiveIndicesNV" ||
-#endif
identifier == "gl_FragStencilRefARB") {
if (qualifier.hasLayout())
error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str());
if (qualifier.storage != EvqVaryingOut)
error(loc, "cannot change output storage qualification of", "redeclaration", symbol->getName().c_str());
}
-#ifdef NV_EXTENSIONS
else if (identifier == "gl_SampleMask") {
if (!publicType.layoutOverrideCoverage) {
error(loc, "redeclaration only allowed for override_coverage layout", "redeclaration", symbol->getName().c_str());
@@ -4186,12 +4169,12 @@
symbolQualifier.layoutViewportRelative = qualifier.layoutViewportRelative;
symbolQualifier.layoutSecondaryViewportRelativeOffset = qualifier.layoutSecondaryViewportRelativeOffset;
}
-#endif
// TODO: semantics quality: separate smooth from nothing declared, then use IsInterpolation for several tests above
return symbol;
}
+#endif
return nullptr;
}
@@ -4203,16 +4186,13 @@
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);
- if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment"
-#ifdef NV_EXTENSIONS
- && blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV"
-#endif
- )
- {
+ if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" &&
+ blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV") {
error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str());
return;
}
@@ -4271,7 +4251,6 @@
TType& type = block->getWritableType();
-#ifdef NV_EXTENSIONS
// if gl_PerVertex is redeclared for the purpose of passing through "gl_Position"
// for passthrough purpose, the redeclared block should have the same qualifers as
// the current one
@@ -4281,7 +4260,6 @@
type.getQualifier().layoutStream = currentBlockQualifier.layoutStream;
type.getQualifier().layoutXfbBuffer = currentBlockQualifier.layoutXfbBuffer;
}
-#endif
TTypeList::iterator member = type.getWritableStruct()->begin();
size_t numOriginalMembersFound = 0;
@@ -4314,7 +4292,6 @@
error(memberLoc, "cannot change array size of redeclared block member", member->type->getFieldName().c_str(), "");
else if (! oldType.getQualifier().isPerView() && newType.isArray())
arrayLimitCheck(loc, member->type->getFieldName(), newType.getOuterArraySize());
-#ifdef NV_EXTENSIONS
if (oldType.getQualifier().isPerView() && ! newType.getQualifier().isPerView())
error(memberLoc, "missing perviewNV qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
else if (! oldType.getQualifier().isPerView() && newType.getQualifier().isPerView())
@@ -4334,7 +4311,6 @@
error(memberLoc, "missing perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
else if (! oldType.getQualifier().isPerPrimitive() && newType.getQualifier().isPerPrimitive())
error(memberLoc, "cannot add perprimitiveNV qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
-#endif
if (newType.getQualifier().isMemory())
error(memberLoc, "cannot add memory qualifier to redeclared block member", member->type->getFieldName().c_str(), "");
if (newType.getQualifier().hasNonXfbLayout())
@@ -4425,6 +4401,7 @@
// Save it in the AST for linker use.
trackLinkage(*block);
+#endif // GLSLANG_WEB
}
void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQualifier& qualifier, TType& type)
@@ -4601,6 +4578,7 @@
//
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)
@@ -4696,8 +4674,10 @@
// 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)
{
@@ -4707,13 +4687,12 @@
limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistance array size");
else if (identifier.compare("gl_CullDistance") == 0)
limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistance array size");
-#ifdef NV_EXTENSIONS
else if (identifier.compare("gl_ClipDistancePerViewNV") == 0)
limitCheck(loc, size, "gl_MaxClipDistances", "gl_ClipDistancePerViewNV array size");
else if (identifier.compare("gl_CullDistancePerViewNV") == 0)
limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistancePerViewNV array size");
-#endif
}
+#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.
@@ -4727,6 +4706,8 @@
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.
//
@@ -4737,11 +4718,9 @@
if (parsingBuiltins)
return;
-#ifndef GLSLANG_WEB
// Check on array indexes for ES 2.0 (version 100) limitations.
for (size_t i = 0; i < needsIndexLimitationChecking.size(); ++i)
constantIndexExpressionCheck(needsIndexLimitationChecking[i]);
-#endif
// Check for stages that are enabled by extension.
// Can't do this at the beginning, it is chicken and egg to add a stage by
@@ -4764,19 +4743,16 @@
if (profile != EEsProfile && version < 430)
requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_compute_shader, "compute shaders");
break;
-#ifdef NV_EXTENSIONS
case EShLangTaskNV:
requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "task shaders");
break;
case EShLangMeshNV:
requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "mesh shaders");
break;
-#endif
default:
break;
}
-#ifdef NV_EXTENSIONS
// Set default outputs for GL_NV_geometry_shader_passthrough
if (language == EShLangGeometry && extensionTurnedOn(E_SPV_NV_geometry_shader_passthrough)) {
if (intermediate.getOutputPrimitive() == ElgNone) {
@@ -4796,8 +4772,8 @@
}
}
}
-#endif
}
+#endif // GLSLANG_WEB
//
// Layout qualifier stuff.
@@ -4833,6 +4809,7 @@
publicType.qualifier.layoutPacking = ElpStd140;
return;
}
+#ifndef GLSLANG_WEB
if (id == TQualifier::getLayoutPackingString(ElpStd430)) {
requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "std430");
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, nullptr, "std430");
@@ -4872,20 +4849,12 @@
intermediate.setUsePhysicalStorageBuffer();
return;
}
- if (language == EShLangGeometry || language == EShLangTessEvaluation
-#ifdef NV_EXTENSIONS
- || language == EShLangMeshNV
-#endif
- ) {
+ if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMeshNV) {
if (id == TQualifier::getGeometryString(ElgTriangles)) {
publicType.shaderQualifiers.geometry = ElgTriangles;
return;
}
- if (language == EShLangGeometry
-#ifdef NV_EXTENSIONS
- || language == EShLangMeshNV
-#endif
- ) {
+ if (language == EShLangGeometry || language == EShLangMeshNV) {
if (id == TQualifier::getGeometryString(ElgPoints)) {
publicType.shaderQualifiers.geometry = ElgPoints;
return;
@@ -4894,10 +4863,7 @@
publicType.shaderQualifiers.geometry = ElgLines;
return;
}
-#ifdef NV_EXTENSIONS
- if (language == EShLangGeometry)
-#endif
- {
+ if (language == EShLangGeometry) {
if (id == TQualifier::getGeometryString(ElgLineStrip)) {
publicType.shaderQualifiers.geometry = ElgLineStrip;
return;
@@ -4914,14 +4880,12 @@
publicType.shaderQualifiers.geometry = ElgTriangleStrip;
return;
}
-#ifdef NV_EXTENSIONS
if (id == "passthrough") {
requireExtensions(loc, 1, &E_SPV_NV_geometry_shader_passthrough, "geometry shader passthrough");
publicType.qualifier.layoutPassthrough = true;
intermediate.setGeoPassthroughEXT();
return;
}
-#endif
}
} else {
assert(language == EShLangTessEvaluation);
@@ -5009,10 +4973,8 @@
requireProfile(loc, ECoreProfile | ECompatibilityProfile, "fragment shader interlock layout qualifier");
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 450, nullptr, "fragment shader interlock layout qualifier");
requireExtensions(loc, 1, &E_GL_ARB_fragment_shader_interlock, TQualifier::getInterlockOrderingString(order));
-#ifdef NV_EXTENSIONS
if (order == EioShadingRateInterlockOrdered || order == EioShadingRateInterlockUnordered)
requireExtensions(loc, 1, &E_GL_NV_shading_rate_image, TQualifier::getInterlockOrderingString(order));
-#endif
publicType.shaderQualifiers.interlockOrdering = order;
return;
}
@@ -5033,7 +4995,6 @@
error(loc, "unknown blend equation", "blend_support", "");
return;
}
-#ifdef NV_EXTENSIONS
if (id == "override_coverage") {
requireExtensions(loc, 1, &E_GL_NV_sample_mask_override_coverage, "sample mask override coverage");
publicType.shaderQualifiers.layoutOverrideCoverage = true;
@@ -5071,9 +5032,8 @@
}
}
}
-#else
- }
#endif
+
error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), "");
}
@@ -5167,7 +5127,23 @@
if (nonLiteral)
error(loc, "needs a literal integer", "binding", "");
return;
- } else if (id == "component") {
+ }
+ if (id == "constant_id") {
+ requireSpv(loc, "constant_id");
+ if (value >= (int)TQualifier::layoutSpecConstantIdEnd) {
+ error(loc, "specialization-constant id is too large", id.c_str(), "");
+ } else {
+ publicType.qualifier.layoutSpecConstantId = value;
+ publicType.qualifier.specConstant = true;
+ if (! intermediate.addUsedConstantId(value))
+ error(loc, "specialization-constant id already used", id.c_str(), "");
+ }
+ if (nonLiteral)
+ 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");
if ((unsigned)value >= TQualifier::layoutComponentEnd)
@@ -5177,7 +5153,8 @@
if (nonLiteral)
error(loc, "needs a literal integer", "component", "");
return;
- } else if (id.compare(0, 4, "xfb_") == 0) {
+ }
+ if (id.compare(0, 4, "xfb_") == 0) {
// "Any shader making any static use (after preprocessing) of any of these
// *xfb_* qualifiers will cause the shader to be in a transform feedback
// capturing mode and hence responsible for describing the transform feedback
@@ -5223,7 +5200,6 @@
return;
}
}
-
if (id == "input_attachment_index") {
requireVulkan(loc, "input_attachment_index");
if (value >= (int)TQualifier::layoutAttachmentEnd)
@@ -5234,20 +5210,6 @@
error(loc, "needs a literal integer", "input_attachment_index", "");
return;
}
- if (id == "constant_id") {
- requireSpv(loc, "constant_id");
- if (value >= (int)TQualifier::layoutSpecConstantIdEnd) {
- error(loc, "specialization-constant id is too large", id.c_str(), "");
- } else {
- publicType.qualifier.layoutSpecConstantId = value;
- publicType.qualifier.specConstant = true;
- if (! intermediate.addUsedConstantId(value))
- error(loc, "specialization-constant id already used", id.c_str(), "");
- }
- if (nonLiteral)
- error(loc, "needs a literal integer", "constant_id", "");
- return;
- }
if (id == "num_views") {
requireExtensions(loc, Num_OVR_multiview_EXTs, OVR_multiview_EXTs, "num_views");
publicType.shaderQualifiers.numViews = value;
@@ -5255,8 +5217,6 @@
error(loc, "needs a literal integer", "num_views", "");
return;
}
-
-#if NV_EXTENSIONS
if (language == EShLangVertex ||
language == EShLangTessControl ||
language == EShLangTessEvaluation ||
@@ -5269,7 +5229,6 @@
return;
}
}
-#endif
if (id == "buffer_reference_align") {
requireExtensions(loc, 1, &E_GL_EXT_buffer_reference, "buffer_reference_align");
@@ -5350,7 +5309,6 @@
}
break;
-#ifdef NV_EXTENSIONS
case EShLangMeshNV:
if (id == "max_vertices") {
requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_vertices");
@@ -5374,15 +5332,12 @@
case EShLangTaskNV:
// Fall through
-#endif
case EShLangCompute:
if (id.compare(0, 11, "local_size_") == 0) {
-#ifdef NV_EXTENSIONS
if (language == EShLangMeshNV || language == EShLangTaskNV) {
requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize");
}
else
-#endif
{
profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize");
profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize");
@@ -5421,11 +5376,12 @@
}
}
break;
-
default:
break;
}
+#endif // GLSLANG_WEB
+
error(loc, "there is no such layout identifier for this stage taking an assigned value", id.c_str(), "");
}
@@ -5450,53 +5406,50 @@
if (src.hasPacking())
dst.layoutPacking = src.layoutPacking;
+#ifndef GLSLANG_WEB
if (src.hasStream())
dst.layoutStream = src.layoutStream;
-
if (src.hasFormat())
dst.layoutFormat = src.layoutFormat;
-
if (src.hasXfbBuffer())
dst.layoutXfbBuffer = src.layoutXfbBuffer;
+ if (src.hasBufferReferenceAlign())
+ dst.layoutBufferReferenceAlign = src.layoutBufferReferenceAlign;
+#endif
if (src.hasAlign())
dst.layoutAlign = src.layoutAlign;
- if (src.hasBufferReferenceAlign())
- dst.layoutBufferReferenceAlign = src.layoutBufferReferenceAlign;
-
if (! inheritOnly) {
if (src.hasLocation())
dst.layoutLocation = src.layoutLocation;
- if (src.hasComponent())
- dst.layoutComponent = src.layoutComponent;
- if (src.hasIndex())
- dst.layoutIndex = src.layoutIndex;
-
if (src.hasOffset())
dst.layoutOffset = src.layoutOffset;
-
if (src.hasSet())
dst.layoutSet = src.layoutSet;
if (src.layoutBinding != TQualifier::layoutBindingEnd)
dst.layoutBinding = src.layoutBinding;
+ if (src.hasSpecConstantId())
+ dst.layoutSpecConstantId = src.layoutSpecConstantId;
+
+#ifndef GLSLANG_WEB
+ if (src.hasComponent())
+ dst.layoutComponent = src.layoutComponent;
+ if (src.hasIndex())
+ dst.layoutIndex = src.layoutIndex;
if (src.hasXfbStride())
dst.layoutXfbStride = src.layoutXfbStride;
if (src.hasXfbOffset())
dst.layoutXfbOffset = src.layoutXfbOffset;
if (src.hasAttachment())
dst.layoutAttachment = src.layoutAttachment;
- if (src.hasSpecConstantId())
- dst.layoutSpecConstantId = src.layoutSpecConstantId;
-
if (src.layoutPushConstant)
dst.layoutPushConstant = true;
if (src.layoutBufferReference)
dst.layoutBufferReference = true;
-#ifdef NV_EXTENSIONS
if (src.layoutPassthrough)
dst.layoutPassthrough = true;
if (src.layoutViewportRelative)
@@ -5570,12 +5523,10 @@
// "The align qualifier can only be used on blocks or block members..."
if (qualifier.hasAlign())
error(loc, "cannot specify on a variable declaration", "align", "");
- if (qualifier.layoutPushConstant)
+ if (qualifier.isPushConstant())
error(loc, "can only specify on a uniform block", "push_constant", "");
-#ifdef NV_EXTENSIONS
- if (qualifier.layoutShaderRecordNV)
+ if (qualifier.isShaderRecordNV())
error(loc, "can only specify on a buffer block", "shaderRecordNV", "");
-#endif
}
break;
default:
@@ -5639,17 +5590,15 @@
case EvqVaryingOut:
if (type.getBasicType() == EbtBlock)
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "location qualifier on in/out block");
-#ifdef NV_EXTENSIONS
if (type.getQualifier().isTaskMemory())
error(loc, "cannot apply to taskNV in/out blocks", "location", "");
-#endif
break;
case EvqUniform:
case EvqBuffer:
if (type.getBasicType() == EbtBlock)
error(loc, "cannot apply to uniform or buffer block", "location", "");
break;
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
case EvqPayloadNV:
case EvqPayloadInNV:
case EvqHitAttrNV:
@@ -5672,6 +5621,7 @@
error(loc, "fragment outputs sharing the same location must be the same basic type", "location", "%d", repeated);
}
+#ifndef GLSLANG_WEB
if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) {
int repeated = intermediate.addXfbBufferOffset(type);
if (repeated >= 0)
@@ -5683,25 +5633,20 @@
if ((type.containsBasicType(EbtDouble) || type.containsBasicType(EbtInt64) || type.containsBasicType(EbtUint64)) &&
! IsMultipleOfPow2(qualifier.layoutXfbOffset, 8))
error(loc, "type contains double or 64-bit integer; xfb_offset must be a multiple of 8", "xfb_offset", "");
-#ifdef AMD_EXTENSIONS
else if ((type.containsBasicType(EbtBool) || type.containsBasicType(EbtFloat) ||
type.containsBasicType(EbtInt) || type.containsBasicType(EbtUint)) &&
! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4))
error(loc, "must be a multiple of size of first component", "xfb_offset", "");
// ..., if applied to an aggregate containing a half float or 16-bit integer, the offset must also be a multiple of 2..."
- else if ((type.containsBasicType(EbtFloat16) || type.containsBasicType(EbtInt16) || type.containsBasicType(EbtUint16)) &&
+ else if ((type.contains16BitFloat() || type.containsBasicType(EbtInt16) || type.containsBasicType(EbtUint16)) &&
!IsMultipleOfPow2(qualifier.layoutXfbOffset, 2))
error(loc, "type contains half float or 16-bit integer; xfb_offset must be a multiple of 2", "xfb_offset", "");
-#else
- else if (! IsMultipleOfPow2(qualifier.layoutXfbOffset, 4))
- error(loc, "must be a multiple of size of first component", "xfb_offset", "");
-#endif
}
-
if (qualifier.hasXfbStride() && qualifier.hasXfbBuffer()) {
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:
@@ -5748,12 +5693,10 @@
// SPIR-V
if (spvVersion.spv > 0) {
if (qualifier.isUniformOrBuffer()) {
- if (type.getBasicType() == EbtBlock && !qualifier.layoutPushConstant &&
-#ifdef NV_EXTENSIONS
- !qualifier.layoutShaderRecordNV &&
-#endif
+ if (type.getBasicType() == EbtBlock && !qualifier.isPushConstant() &&
+ !qualifier.isShaderRecordNV() &&
!qualifier.layoutAttachment &&
- !qualifier.layoutBufferReference)
+ !qualifier.hasBufferReference())
error(loc, "uniform/buffer blocks require layout(binding=X)", "binding", "");
else if (spvVersion.vulkan > 0 && type.getBasicType() == EbtSampler)
error(loc, "sampler/texture/image requires layout(binding=X)", "binding", "");
@@ -5778,21 +5721,21 @@
// Image format
if (qualifier.hasFormat()) {
if (! type.isImage())
- error(loc, "only apply to images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), "");
+ error(loc, "only apply to images", TQualifier::getLayoutFormatString(qualifier.getFormat()), "");
else {
- if (type.getSampler().type == EbtFloat && qualifier.layoutFormat > ElfFloatGuard)
- error(loc, "does not apply to floating point images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), "");
- if (type.getSampler().type == EbtInt && (qualifier.layoutFormat < ElfFloatGuard || qualifier.layoutFormat > ElfIntGuard))
- error(loc, "does not apply to signed integer images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), "");
- if (type.getSampler().type == EbtUint && qualifier.layoutFormat < ElfIntGuard)
- error(loc, "does not apply to unsigned integer images", TQualifier::getLayoutFormatString(qualifier.layoutFormat), "");
+ if (type.getSampler().type == EbtFloat && qualifier.getFormat() > ElfFloatGuard)
+ error(loc, "does not apply to floating point images", TQualifier::getLayoutFormatString(qualifier.getFormat()), "");
+ if (type.getSampler().type == EbtInt && (qualifier.getFormat() < ElfFloatGuard || qualifier.getFormat() > ElfIntGuard))
+ error(loc, "does not apply to signed integer images", TQualifier::getLayoutFormatString(qualifier.getFormat()), "");
+ if (type.getSampler().type == EbtUint && qualifier.getFormat() < ElfIntGuard)
+ error(loc, "does not apply to unsigned integer images", TQualifier::getLayoutFormatString(qualifier.getFormat()), "");
if (profile == EEsProfile) {
// "Except for image variables qualified with the format qualifiers r32f, r32i, and r32ui, image variables must
// specify either memory qualifier readonly or the memory qualifier writeonly."
- if (! (qualifier.layoutFormat == ElfR32f || qualifier.layoutFormat == ElfR32i || qualifier.layoutFormat == ElfR32ui)) {
+ if (! (qualifier.getFormat() == ElfR32f || qualifier.getFormat() == ElfR32i || qualifier.getFormat() == ElfR32ui)) {
if (! qualifier.readonly && ! qualifier.writeonly)
- error(loc, "format requires readonly or writeonly memory qualifier", TQualifier::getLayoutFormatString(qualifier.layoutFormat), "");
+ error(loc, "format requires readonly or writeonly memory qualifier", TQualifier::getLayoutFormatString(qualifier.getFormat()), "");
}
}
}
@@ -5802,16 +5745,14 @@
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation);
}
- if (qualifier.layoutPushConstant && type.getBasicType() != EbtBlock)
+ if (qualifier.isPushConstant() && type.getBasicType() != EbtBlock)
error(loc, "can only be used with a block", "push_constant", "");
- if (qualifier.layoutBufferReference && type.getBasicType() != EbtBlock)
+ if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock)
error(loc, "can only be used with a block", "buffer_reference", "");
-#ifdef NV_EXTENSIONS
- if (qualifier.layoutShaderRecordNV && type.getBasicType() != EbtBlock)
+ if (qualifier.isShaderRecordNV() && type.getBasicType() != EbtBlock)
error(loc, "can only be used with a block", "shaderRecordNV", "");
-#endif
// input attachment
if (type.isSubpass()) {
@@ -5942,18 +5883,17 @@
error(loc, "offset/align can only be used on a uniform or buffer", "layout", "");
}
}
- if (qualifier.layoutPushConstant) {
+ if (qualifier.isPushConstant()) {
if (qualifier.storage != EvqUniform)
error(loc, "can only be used with a uniform", "push_constant", "");
if (qualifier.hasSet())
error(loc, "cannot be used with push_constant", "set", "");
}
- if (qualifier.layoutBufferReference) {
+ if (qualifier.hasBufferReference()) {
if (qualifier.storage != EvqBuffer)
error(loc, "can only be used with buffer", "buffer_reference", "");
}
-#ifdef NV_EXTENSIONS
- if (qualifier.layoutShaderRecordNV) {
+ if (qualifier.isShaderRecordNV()) {
if (qualifier.storage != EvqBuffer)
error(loc, "can only be used with a buffer", "shaderRecordNV", "");
if (qualifier.hasBinding())
@@ -5965,7 +5905,6 @@
if (qualifier.storage == EvqHitAttrNV && qualifier.hasLayout()) {
error(loc, "cannot apply layout qualifiers to hitAttributeNV variable", "hitAttributeNV", "");
}
-#endif
}
// For places that can't have shader-level layout qualifiers
@@ -5983,10 +5922,6 @@
error(loc, message, "point_mode", "");
if (shaderQualifiers.invocations != TQualifier::layoutNotSet)
error(loc, message, "invocations", "");
- if (shaderQualifiers.earlyFragmentTests)
- error(loc, message, "early_fragment_tests", "");
- if (shaderQualifiers.postDepthCoverage)
- error(loc, message, "post_depth_coverage", "");
for (int i = 0; i < 3; ++i) {
if (shaderQualifiers.localSize[i] > 1)
error(loc, message, "local_size", "");
@@ -5994,31 +5929,31 @@
error(loc, message, "local_size id", "");
}
if (shaderQualifiers.vertices != TQualifier::layoutNotSet) {
- if (language == EShLangGeometry
-#ifdef NV_EXTENSIONS
- || language == EShLangMeshNV
-#endif
- )
+ if (language == EShLangGeometry || language == EShLangMeshNV)
error(loc, message, "max_vertices", "");
else if (language == EShLangTessControl)
error(loc, message, "vertices", "");
else
assert(0);
}
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
+ if (shaderQualifiers.earlyFragmentTests)
+ error(loc, message, "early_fragment_tests", "");
+ if (shaderQualifiers.postDepthCoverage)
+ error(loc, message, "post_depth_coverage", "");
if (shaderQualifiers.primitives != TQualifier::layoutNotSet) {
if (language == EShLangMeshNV)
error(loc, message, "max_primitives", "");
else
assert(0);
}
-#endif
- if (shaderQualifiers.blendEquation)
+ if (shaderQualifiers.hasBlendEquation())
error(loc, message, "blend equation", "");
if (shaderQualifiers.numViews != TQualifier::layoutNotSet)
error(loc, message, "num_views", "");
if (shaderQualifiers.interlockOrdering != EioNone)
error(loc, message, TQualifier::getInterlockOrderingString(shaderQualifiers.interlockOrdering), "");
+#endif
}
// Correct and/or advance an object's offset layout qualifier.
@@ -6379,7 +6314,7 @@
return;
}
- if (publicType.qualifier.hasLayout() && !publicType.qualifier.layoutBufferReference)
+ if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference())
warn(loc, "useless application of layout qualifier", "layout", "");
}
@@ -6432,9 +6367,9 @@
nonInitConstCheck(loc, identifier, type);
samplerCheck(loc, type, identifier, initializer);
- atomicUintCheck(loc, type, identifier);
transparentOpaqueCheck(loc, type, identifier);
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
+ atomicUintCheck(loc, type, identifier);
accStructNVCheck(loc, type, identifier);
checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false);
#endif
@@ -6443,7 +6378,7 @@
}
if (type.getQualifier().storage != EvqUniform && type.getQualifier().storage != EvqBuffer) {
- if (type.containsBasicType(EbtFloat16))
+ if (type.contains16BitFloat())
requireFloat16Arithmetic(loc, "qualifier", "float16 types can only be in uniform block or buffer storage");
if (type.contains16BitInt())
requireInt16Arithmetic(loc, "qualifier", "(u)int16 types can only be in uniform block or buffer storage");
@@ -6457,7 +6392,7 @@
if (identifier != "gl_FragCoord" && (publicType.shaderQualifiers.originUpperLeft || publicType.shaderQualifiers.pixelCenterInteger))
error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", "");
- if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.layoutDepth != EldNone)
+ if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.getDepth() != EldNone)
error(loc, "can only apply depth layout to gl_FragDepth", "layout qualifier", "");
// Check for redeclaration of built-ins and/or attempting to declare a reserved name
@@ -6547,7 +6482,9 @@
// 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)) {
@@ -6928,6 +6865,29 @@
basicOp = EOpConstructFloat;
break;
+ case EOpConstructIVec2:
+ case EOpConstructIVec3:
+ case EOpConstructIVec4:
+ case EOpConstructInt:
+ basicOp = EOpConstructInt;
+ break;
+
+ case EOpConstructUVec2:
+ case EOpConstructUVec3:
+ case EOpConstructUVec4:
+ case EOpConstructUint:
+ basicOp = EOpConstructUint;
+ break;
+
+ case EOpConstructBVec2:
+ case EOpConstructBVec3:
+ case EOpConstructBVec4:
+ case EOpConstructBool:
+ basicOp = EOpConstructBool;
+ break;
+
+#ifndef GLSLANG_WEB
+
case EOpConstructDVec2:
case EOpConstructDVec3:
case EOpConstructDVec4:
@@ -7038,20 +6998,6 @@
}
break;
- case EOpConstructIVec2:
- case EOpConstructIVec3:
- case EOpConstructIVec4:
- case EOpConstructInt:
- basicOp = EOpConstructInt;
- break;
-
- case EOpConstructUVec2:
- case EOpConstructUVec3:
- case EOpConstructUVec4:
- case EOpConstructUint:
- basicOp = EOpConstructUint;
- break;
-
case EOpConstructI64Vec2:
case EOpConstructI64Vec3:
case EOpConstructI64Vec4:
@@ -7060,7 +7006,7 @@
break;
case EOpConstructUint64:
- if (type.isScalar() && node->getType().getBasicType() == EbtReference) {
+ if (type.isScalar() && node->getType().isReference()) {
TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUint64, true, node, type);
return newNode;
}
@@ -7071,13 +7017,6 @@
basicOp = EOpConstructUint64;
break;
- case EOpConstructBVec2:
- case EOpConstructBVec3:
- case EOpConstructBVec4:
- case EOpConstructBool:
- basicOp = EOpConstructBool;
- break;
-
case EOpConstructNonuniform:
// Make a nonuniform copy of node
newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpCopyObject, true, node, node->getType());
@@ -7086,7 +7025,7 @@
case EOpConstructReference:
// construct reference from reference
- if (node->getType().getBasicType() == EbtReference) {
+ if (node->getType().isReference()) {
newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConstructReference, true, node, type);
return newNode;
// construct reference from uint64
@@ -7124,6 +7063,8 @@
return node;
+#endif // GLSLANG_WEB
+
default:
error(loc, "unsupported construction", "", "");
@@ -7189,7 +7130,7 @@
if (memberQualifier.storage != EvqTemporary && memberQualifier.storage != EvqGlobal && memberQualifier.storage != currentBlockQualifier.storage)
error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), "");
memberQualifier.storage = currentBlockQualifier.storage;
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
if (currentBlockQualifier.perPrimitiveNV)
memberQualifier.perPrimitiveNV = currentBlockQualifier.perPrimitiveNV;
if (currentBlockQualifier.perViewNV)
@@ -7242,18 +7183,13 @@
// Special case for "push_constant uniform", which has a default of std430,
// contrary to normal uniform defaults, and can't have a default tracked for it.
- if ((currentBlockQualifier.layoutPushConstant && !currentBlockQualifier.hasPacking())
-#ifdef NV_EXTENSIONS
- || (currentBlockQualifier.layoutShaderRecordNV && !currentBlockQualifier.hasPacking())
-#endif
- )
+ if ((currentBlockQualifier.isPushConstant() && !currentBlockQualifier.hasPacking()) ||
+ (currentBlockQualifier.isShaderRecordNV() && !currentBlockQualifier.hasPacking()))
currentBlockQualifier.layoutPacking = ElpStd430;
-#ifdef NV_EXTENSIONS
// Special case for "taskNV in/out", which has a default of std430,
- if (currentBlockQualifier.perTaskNV && !currentBlockQualifier.hasPacking())
+ if (currentBlockQualifier.isTaskMemory() && !currentBlockQualifier.hasPacking())
currentBlockQualifier.layoutPacking = ElpStd430;
-#endif
// fix and check for member layout qualifiers
@@ -7271,9 +7207,7 @@
bool memberWithLocation = false;
bool memberWithoutLocation = false;
-#ifdef NV_EXTENSIONS
bool memberWithPerViewQualifier = false;
-#endif
for (unsigned int member = 0; member < typeList.size(); ++member) {
TQualifier& memberQualifier = typeList[member].type->getQualifier();
const TSourceLoc& memberLoc = typeList[member].loc;
@@ -7319,11 +7253,9 @@
error(memberLoc, "can only be used with std140, std430, or scalar layout packing", "offset/align", "");
}
-#ifdef NV_EXTENSIONS
if (memberQualifier.isPerView()) {
memberWithPerViewQualifier = true;
}
-#endif
TQualifier newMemberQualification = defaultQualification;
mergeQualifiers(memberLoc, newMemberQualification, memberQualifier, false);
@@ -7349,13 +7281,11 @@
for (unsigned int member = 0; member < typeList.size(); ++member)
layoutTypeCheck(typeList[member].loc, *typeList[member].type);
-#ifdef NV_EXTENSIONS
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)
@@ -7368,10 +7298,11 @@
TType blockType(&typeList, *blockName, currentBlockQualifier);
if (arraySizes != nullptr)
blockType.transferArraySizes(arraySizes);
- else
- ioArrayCheck(loc, blockType, instanceName ? *instanceName : *blockName);
- if (currentBlockQualifier.layoutBufferReference) {
+#ifndef GLSLANG_WEB
+ if (arraySizes == nullptr)
+ ioArrayCheck(loc, blockType, instanceName ? *instanceName : *blockName);
+ if (currentBlockQualifier.hasBufferReference()) {
if (currentBlockQualifier.storage != EvqBuffer)
error(loc, "can only be used with buffer", "buffer_reference", "");
@@ -7383,7 +7314,7 @@
TVariable* blockNameVar = new TVariable(blockName, blockNameType, true);
if (! symbolTable.insert(*blockNameVar)) {
TSymbol* existingName = symbolTable.find(*blockName);
- if (existingName->getType().getBasicType() == EbtReference &&
+ if (existingName->getType().isReference() &&
existingName->getType().getReferentType()->getStruct() &&
existingName->getType().getReferentType()->getStruct()->size() == 0 &&
existingName->getType().getQualifier().storage == blockType.getQualifier().storage) {
@@ -7395,7 +7326,9 @@
if (!instanceName) {
return;
}
- } else {
+ } else
+#endif
+ {
//
// 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.
@@ -7443,12 +7376,14 @@
// 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);
@@ -7462,7 +7397,7 @@
case EvqUniform:
profileRequires(loc, EEsProfile, 300, nullptr, "uniform block");
profileRequires(loc, ENoProfile, 140, nullptr, "uniform block");
- if (currentBlockQualifier.layoutPacking == ElpStd430 && ! currentBlockQualifier.layoutPushConstant)
+ if (currentBlockQualifier.layoutPacking == ElpStd430 && ! currentBlockQualifier.isPushConstant())
requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "std430 requires the buffer storage qualifier");
break;
case EvqBuffer:
@@ -7474,15 +7409,12 @@
profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "input block");
// It is a compile-time error to have an input block in a vertex shader or an output block in a fragment shader
// "Compute shaders do not permit user-defined input variables..."
- requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask|EShLangFragmentMask
-#ifdef NV_EXTENSIONS
- |EShLangMeshNVMask
-#endif
- ), "input block");
+ requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask|
+ EShLangFragmentMask|EShLangMeshNVMask), "input block");
if (language == EShLangFragment) {
profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block");
}
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
else if (language == EShLangMeshNV && ! qualifier.isTaskMemory()) {
error(loc, "input blocks cannot be used in a mesh shader", "out", "");
}
@@ -7490,25 +7422,20 @@
break;
case EvqVaryingOut:
profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block");
- requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask
-#ifdef NV_EXTENSIONS
- |EShLangMeshNVMask|EShLangTaskNVMask
-#endif
- ), "output block");
+ requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask|
+ EShLangGeometryMask|EShLangMeshNVMask|EShLangTaskNVMask), "output block");
// ES 310 can have a block before shader_io is turned on, so skip this test for built-ins
if (language == EShLangVertex && ! parsingBuiltins) {
profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block");
}
-#ifdef NV_EXTENSIONS
else if (language == EShLangMeshNV && qualifier.isTaskMemory()) {
error(loc, "can only use on input blocks in mesh shader", "taskNV", "");
}
else if (language == EShLangTaskNV && ! qualifier.isTaskMemory()) {
error(loc, "output blocks cannot be used in a task shader", "out", "");
}
-#endif
break;
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
case EvqPayloadNV:
profileRequires(loc, ~EEsProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV block");
requireStage(loc, (EShLanguageMask)(EShLangRayGenNVMask | EShLangAnyHitNVMask | EShLangClosestHitNVMask | EShLangMissNVMask),
@@ -7567,14 +7494,12 @@
error(loc, "cannot use sample qualifier on an interface block", "sample", "");
if (qualifier.invariant)
error(loc, "cannot use invariant qualifier on an interface block", "invariant", "");
- if (qualifier.layoutPushConstant)
+ if (qualifier.isPushConstant())
intermediate.addPushConstantCount();
-#ifdef NV_EXTENSIONS
- if (qualifier.layoutShaderRecordNV)
+ if (qualifier.isShaderRecordNV())
intermediate.addShaderRecordNVCount();
- if (qualifier.perTaskNV)
+ if (qualifier.isTaskMemory())
intermediate.addTaskNVCount();
-#endif
}
//
@@ -7623,6 +7548,7 @@
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
@@ -7635,24 +7561,18 @@
for (unsigned int member = 0; member < typeList.size(); ++member) {
TQualifier& memberQualifier = typeList[member].type->getQualifier();
bool contains64BitType = false;
-#ifdef AMD_EXTENSIONS
bool contains32BitType = false;
bool contains16BitType = false;
int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType, contains32BitType, contains16BitType);
-#else
- int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType);
-#endif
// see if we need to auto-assign an offset to this member
if (! memberQualifier.hasXfbOffset()) {
// "if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8"
if (contains64BitType)
RoundToPow2(nextOffset, 8);
-#ifdef AMD_EXTENSIONS
else if (contains32BitType)
RoundToPow2(nextOffset, 4);
else if (contains16BitType)
RoundToPow2(nextOffset, 2);
-#endif
memberQualifier.layoutXfbOffset = nextOffset;
} else
nextOffset = memberQualifier.layoutXfbOffset;
@@ -7662,6 +7582,7 @@
// 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
@@ -7738,7 +7659,7 @@
// a qualifier to an existing symbol. Detect this and create the block reference
// type with an empty type list, which will be filled in later in
// TParseContext::declareBlock.
- if (!symbol && qualifier.layoutBufferReference) {
+ if (!symbol && qualifier.hasBufferReference()) {
TTypeList typeList;
TType blockType(&typeList, identifier, qualifier);;
TType blockNameType(EbtReference, blockType, identifier);
@@ -7819,12 +7740,9 @@
//
void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, const TPublicType& publicType)
{
+#ifndef GLSLANG_WEB
if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) {
-#ifdef NV_EXTENSIONS
assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMeshNV);
-#else
- assert(language == EShLangTessControl || language == EShLangGeometry);
-#endif
const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices";
if (publicType.qualifier.storage != EvqVaryingOut)
@@ -7835,7 +7753,6 @@
if (language == EShLangTessControl)
checkIoArraysConsistency(loc);
}
-#ifdef NV_EXTENSIONS
if (publicType.shaderQualifiers.primitives != TQualifier::layoutNotSet) {
assert(language == EShLangMeshNV);
const char* id = "max_primitives";
@@ -7845,7 +7762,6 @@
if (! intermediate.setPrimitives(publicType.shaderQualifiers.primitives))
error(loc, "cannot change previously set layout value", id, "");
}
-#endif
if (publicType.shaderQualifiers.invocations != TQualifier::layoutNotSet) {
if (publicType.qualifier.storage != EvqVaryingIn)
error(loc, "can only apply to 'in'", "invocations", "");
@@ -7862,12 +7778,10 @@
case ElgTrianglesAdjacency:
case ElgQuads:
case ElgIsolines:
-#ifdef NV_EXTENSIONS
if (language == EShLangMeshNV) {
error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), "");
break;
}
-#endif
if (intermediate.setInputPrimitive(publicType.shaderQualifiers.geometry)) {
if (language == EShLangGeometry)
checkIoArraysConsistency(loc);
@@ -7879,14 +7793,12 @@
}
} else if (publicType.qualifier.storage == EvqVaryingOut) {
switch (publicType.shaderQualifiers.geometry) {
-#ifdef NV_EXTENSIONS
case ElgLines:
case ElgTriangles:
if (language != EShLangMeshNV) {
error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), "");
break;
}
-#endif
// Fall through
case ElgPoints:
case ElgLineStrip:
@@ -7936,9 +7848,7 @@
}
if (intermediate.getLocalSize(i) > (unsigned int)max)
error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", "");
- }
-#ifdef NV_EXTENSIONS
- else if (language == EShLangMeshNV) {
+ } else if (language == EShLangMeshNV) {
switch (i) {
case 0: max = resources.maxMeshWorkGroupSizeX_NV; break;
case 1: max = resources.maxMeshWorkGroupSizeY_NV; break;
@@ -7947,8 +7857,7 @@
}
if (intermediate.getLocalSize(i) > (unsigned int)max)
error(loc, "too large; see gl_MaxMeshWorkGroupSizeNV", "local_size", "");
- }
- else if (language == EShLangTaskNV) {
+ } else if (language == EShLangTaskNV) {
switch (i) {
case 0: max = resources.maxTaskWorkGroupSizeX_NV; break;
case 1: max = resources.maxTaskWorkGroupSizeY_NV; break;
@@ -7957,9 +7866,7 @@
}
if (intermediate.getLocalSize(i) > (unsigned int)max)
error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", "");
- }
-#endif
- else {
+ } else {
assert(0);
}
@@ -7983,6 +7890,7 @@
workGroupSize->getWritableType().getQualifier().specConstant = true;
}
}
+
if (publicType.shaderQualifiers.earlyFragmentTests) {
if (publicType.qualifier.storage == EvqVaryingIn)
intermediate.setEarlyFragmentTests();
@@ -7995,7 +7903,7 @@
else
error(loc, "can only apply to 'in'", "post_coverage_coverage", "");
}
- if (publicType.shaderQualifiers.blendEquation) {
+ if (publicType.shaderQualifiers.hasBlendEquation()) {
if (publicType.qualifier.storage != EvqVaryingOut)
error(loc, "can only apply to 'out'", "blend equation", "");
}
@@ -8008,7 +7916,6 @@
error(loc, "can only apply to 'in'", TQualifier::getInterlockOrderingString(publicType.shaderQualifiers.interlockOrdering), "");
}
-#ifdef NV_EXTENSIONS
if (publicType.shaderQualifiers.layoutDerivativeGroupQuads &&
publicType.shaderQualifiers.layoutDerivativeGroupLinear) {
error(loc, "cannot be both specified", "derivative_group_quadsNV and derivative_group_linearNV", "");
@@ -8053,6 +7960,7 @@
qualifier.isInterpolation() ||
qualifier.precision != EpqNone)
error(loc, "cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type)", "qualifier", "");
+
// "The offset qualifier can only be used on block members of blocks..."
// "The align qualifier can only be used on blocks or block members..."
if (qualifier.hasOffset() ||
@@ -8077,6 +7985,7 @@
case EvqVaryingIn:
break;
case EvqVaryingOut:
+#ifndef GLSLANG_WEB
if (qualifier.hasStream())
globalOutputDefaults.layoutStream = qualifier.layoutStream;
if (qualifier.hasXfbBuffer())
@@ -8085,6 +7994,7 @@
if (! intermediate.setXfbBufferStride(globalOutputDefaults.layoutXfbBuffer, qualifier.layoutXfbStride))
error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer);
}
+#endif
break;
default:
error(loc, "default qualifier requires 'uniform', 'buffer', 'in', or 'out' storage qualification", "", "");
@@ -8097,16 +8007,14 @@
error(loc, "cannot declare a default, use a full declaration", "location/component/index", "");
if (qualifier.hasXfbOffset())
error(loc, "cannot declare a default, use a full declaration", "xfb_offset", "");
- if (qualifier.layoutPushConstant)
+ if (qualifier.isPushConstant())
error(loc, "cannot declare a default, can only be used on a block", "push_constant", "");
- if (qualifier.layoutBufferReference)
+ if (qualifier.hasBufferReference())
error(loc, "cannot declare a default, can only be used on a block", "buffer_reference", "");
if (qualifier.hasSpecConstantId())
error(loc, "cannot declare a default, can only be used on a scalar", "constant_id", "");
-#ifdef NV_EXTENSIONS
- if (qualifier.layoutShaderRecordNV)
+ if (qualifier.isShaderRecordNV())
error(loc, "cannot declare a default, can only be used on a block", "shaderRecordNV", "");
-#endif
}
//
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index 62d49a9..35239d1 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -299,10 +299,12 @@
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 ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier);
void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base);
void checkIoArraysConsistency(const TSourceLoc&, bool tailOnly = false);
int getIoArrayImplicitSize(const TQualifier&, TString* featureString = nullptr) const;
@@ -443,7 +445,9 @@
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
public:
//
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index 119b0bc..4a8a4cb 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -1645,7 +1645,7 @@
if (const TVariable* variable = parserToken->sType.lex.symbol->getAsVariable()) {
if (variable->isUserType() &&
// treat redeclaration of forward-declared buffer/uniform reference as an identifier
- !(variable->getType().getBasicType() == EbtReference && afterBuffer)) {
+ !(variable->getType().isReference() && afterBuffer)) {
afterType = true;
return TYPE_NAME;
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 5f2c3bf..a36e74f 100755
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -326,6 +326,7 @@
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)) {
@@ -347,7 +348,6 @@
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source,
infoSink, commonTable, symbolTables);
-#ifdef NV_EXTENSIONS
// check for ray tracing stages
if (profile != EEsProfile && version >= 450) {
InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGenNV, source,
@@ -581,6 +581,7 @@
break;
}
+#ifndef GLSLANG_WEB
// Correct for stage type...
switch (stage) {
case EShLangGeometry:
@@ -612,7 +613,6 @@
version = profile == EEsProfile ? 310 : 420;
}
break;
-#ifdef NV_EXTENSIONS
case EShLangRayGenNV:
case EShLangIntersectNV:
case EShLangAnyHitNV:
@@ -633,10 +633,10 @@
infoSink.info.message(EPrefixError, "#version: mesh/task shaders require es profile with version 320 or above, or non-es profile with version 450 or above");
version = profile == EEsProfile ? 320 : 450;
}
-#endif
default:
break;
}
+#endif
if (profile == EEsProfile && version >= 300 && versionNotFirst) {
correct = false;
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index f4d97d2..923856a 100755
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -61,24 +61,24 @@
switch (basicType) {
case EbtFloat: mangledName += 'f'; break;
- case EbtDouble: mangledName += 'd'; break;
- case EbtFloat16: mangledName += "f16"; break;
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;
case EbtUint8: mangledName += "u8"; break;
case EbtInt16: mangledName += "i16"; break;
case EbtUint16: mangledName += "u16"; break;
case EbtInt64: mangledName += "i64"; break;
case EbtUint64: mangledName += "u64"; break;
- case EbtBool: mangledName += 'b'; break;
case EbtAtomicUint: mangledName += "au"; break;
-#ifdef NV_EXTENSIONS
case EbtAccStructNV: mangledName += "asnv"; break;
#endif
case EbtSampler:
switch (sampler.type) {
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
case EbtFloat16: mangledName += "f16"; break;
#endif
case EbtInt: mangledName += "i"; break;
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index e251918..17cc224 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -145,6 +145,8 @@
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
@@ -221,7 +223,6 @@
extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable;
extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable;
-#ifdef AMD_EXTENSIONS
extensionBehavior[E_GL_AMD_shader_ballot] = EBhDisable;
extensionBehavior[E_GL_AMD_shader_trinary_minmax] = EBhDisable;
extensionBehavior[E_GL_AMD_shader_explicit_vertex_parameter] = EBhDisable;
@@ -232,9 +233,7 @@
extensionBehavior[E_GL_AMD_shader_image_load_store_lod] = EBhDisable;
extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable;
extensionBehavior[E_GL_AMD_gpu_shader_half_float_fetch] = EBhDisable;
-#endif
-#ifdef NV_EXTENSIONS
extensionBehavior[E_GL_NV_sample_mask_override_coverage] = EBhDisable;
extensionBehavior[E_SPV_NV_geometry_shader_passthrough] = EBhDisable;
extensionBehavior[E_GL_NV_viewport_array2] = EBhDisable;
@@ -250,7 +249,6 @@
extensionBehavior[E_GL_NV_compute_shader_derivatives] = EBhDisable;
extensionBehavior[E_GL_NV_shader_texture_footprint] = EBhDisable;
extensionBehavior[E_GL_NV_mesh_shader] = EBhDisable;
-#endif
extensionBehavior[E_GL_NV_cooperative_matrix] = EBhDisable;
extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable;
@@ -302,6 +300,7 @@
extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float32] = EBhDisable;
extensionBehavior[E_GL_EXT_shader_explicit_arithmetic_types_float64] = EBhDisable;
}
+#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).
@@ -311,6 +310,9 @@
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"
@@ -350,11 +352,9 @@
"#define GL_EXT_shader_non_constant_global_initializers 1\n"
;
-#ifdef NV_EXTENSIONS
if (profile == EEsProfile && version >= 300) {
preamble += "#define GL_NV_shader_noperspective_interpolation 1\n";
}
-#endif
} else {
preamble =
@@ -412,7 +412,6 @@
"#define E_GL_EXT_shader_atomic_int64 1\n"
"#define E_GL_EXT_shader_realtime_clock 1\n"
-#ifdef AMD_EXTENSIONS
"#define GL_AMD_shader_ballot 1\n"
"#define GL_AMD_shader_trinary_minmax 1\n"
"#define GL_AMD_shader_explicit_vertex_parameter 1\n"
@@ -423,9 +422,7 @@
"#define GL_AMD_shader_image_load_store_lod 1\n"
"#define GL_AMD_shader_fragment_mask 1\n"
"#define GL_AMD_gpu_shader_half_float_fetch 1\n"
-#endif
-#ifdef NV_EXTENSIONS
"#define GL_NV_sample_mask_override_coverage 1\n"
"#define GL_NV_geometry_shader_passthrough 1\n"
"#define GL_NV_viewport_array2 1\n"
@@ -438,7 +435,6 @@
"#define GL_NV_compute_shader_derivatives 1\n"
"#define GL_NV_shader_texture_footprint 1\n"
"#define GL_NV_mesh_shader 1\n"
-#endif
"#define GL_NV_cooperative_matrix 1\n"
"#define GL_EXT_shader_explicit_arithmetic_types 1\n"
@@ -458,8 +454,10 @@
if (profile == ECompatibilityProfile)
preamble += "#define GL_compatibility_profile 1\n";
}
+#endif // GLSLANG_WEB
}
+#ifndef GLSLANG_WEB
if ((profile != EEsProfile && version >= 140) ||
(profile == EEsProfile && version >= 310)) {
preamble +=
@@ -481,6 +479,7 @@
"#define GL_GOOGLE_cpp_style_line_directive 1\n"
"#define GL_GOOGLE_include_directive 1\n"
;
+#endif
// #define VULKAN XXXX
const int numberBufSize = 12;
@@ -491,6 +490,8 @@
preamble += numberBuf;
preamble += "\n";
}
+
+#ifndef GLSLANG_WEB
// #define GL_SPIRV XXXX
if (spvVersion.openGl > 0) {
preamble += "#define GL_SPIRV ";
@@ -498,7 +499,7 @@
preamble += numberBuf;
preamble += "\n";
}
-
+#endif
}
//
@@ -528,7 +529,6 @@
case EShLangGeometry: return "geometry";
case EShLangFragment: return "fragment";
case EShLangCompute: return "compute";
-#ifdef NV_EXTENSIONS
case EShLangRayGenNV: return "ray-generation";
case EShLangIntersectNV: return "intersection";
case EShLangAnyHitNV: return "any-hit";
@@ -537,7 +537,6 @@
case EShLangCallableNV: return "callable";
case EShLangMeshNV: return "mesh";
case EShLangTaskNV: return "task";
-#endif
default: return "unknown stage";
}
}
@@ -609,6 +608,13 @@
requireStage(loc, static_cast<EShLanguageMask>(1 << stage), featureDesc);
}
+#ifndef GLSLANG_WEB
+
+void TParseVersions::unimplemented(const TSourceLoc& loc, const char* featureDesc)
+{
+ error(loc, "feature not yet implemented", featureDesc, "");
+}
+
//
// Within a set of profiles, see if a feature is deprecated and give an error or warning based on whether
// a future compatibility context is being use.
@@ -642,11 +648,6 @@
}
}
-void TParseVersions::unimplemented(const TSourceLoc& loc, const char* featureDesc)
-{
- error(loc, "feature not yet implemented", featureDesc, "");
-}
-
// Returns true if at least one of the extensions in the extensions parameter is requested. Otherwise, returns false.
// Warns appropriately if the requested behavior of an extension is "warn".
bool TParseVersions::checkExtensionsRequested(const TSourceLoc& loc, int numExtensions, const char* const extensions[], const char* featureDesc)
@@ -815,10 +816,8 @@
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
else if (strcmp(extension, "GL_KHR_shader_subgroup_quad") == 0)
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
-#ifdef NV_EXTENSIONS
else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0)
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
-#endif
else if (strcmp(extension, "GL_EXT_buffer_reference2") == 0)
updateExtensionBehavior(line, "GL_EXT_buffer_reference", behaviorString);
}
@@ -866,7 +865,6 @@
// Check if extension is used with correct shader stage.
void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * const extension)
{
-#ifdef NV_EXTENSIONS
// GL_NV_mesh_shader extension is only allowed in task/mesh shaders
if (strcmp(extension, "GL_NV_mesh_shader") == 0) {
requireStage(loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask | EShLangFragmentMask),
@@ -874,7 +872,6 @@
profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_NV_mesh_shader");
profileRequires(loc, EEsProfile, 320, 0, "#extension GL_NV_mesh_shader");
}
-#endif
}
// Call for any operation needing full GLSL integer data-type support.
@@ -896,9 +893,7 @@
{
if (!builtIn) {
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_half_float,
-#endif
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_float16};
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
@@ -908,9 +903,7 @@
bool TParseVersions::float16Arithmetic()
{
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_half_float,
-#endif
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_float16};
return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions);
@@ -919,9 +912,7 @@
bool TParseVersions::int16Arithmetic()
{
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_int16,
-#endif
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_int16};
return extensionsTurnedOn(sizeof(extensions)/sizeof(extensions[0]), extensions);
@@ -943,9 +934,7 @@
combined += featureDesc;
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_half_float,
-#endif
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_float16};
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str());
@@ -959,9 +948,7 @@
combined += featureDesc;
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_int16,
-#endif
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_int16};
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, combined.c_str());
@@ -984,9 +971,7 @@
{
if (!builtIn) {
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_half_float,
-#endif
E_GL_EXT_shader_16bit_storage,
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_float16};
@@ -1026,7 +1011,6 @@
}
}
-#ifdef AMD_EXTENSIONS
// Call for any operation needing GLSL float16 opaque-type support
void TParseVersions::float16OpaqueCheck(const TSourceLoc& loc, const char* op, bool builtIn)
{
@@ -1036,16 +1020,13 @@
profileRequires(loc, ECoreProfile | ECompatibilityProfile, 400, nullptr, op);
}
}
-#endif
// Call for any operation needing GLSL explicit int16 data-type support.
void TParseVersions::explicitInt16Check(const TSourceLoc& loc, const char* op, bool builtIn)
{
if (! builtIn) {
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_int16,
-#endif
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_int16};
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
@@ -1056,9 +1037,7 @@
{
if (! builtIn) {
const char* const extensions[] = {
-#if AMD_EXTENSIONS
E_GL_AMD_gpu_shader_int16,
-#endif
E_GL_EXT_shader_16bit_storage,
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_int16};
@@ -1107,6 +1086,7 @@
requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op);
}
}
+#endif // GLSLANG_WEB
// Call for any operation removed because SPIR-V is in use.
void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op)
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 809ba74..d07e991 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -193,7 +193,6 @@
const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive";
const char* const E_GL_GOOGLE_include_directive = "GL_GOOGLE_include_directive";
-#ifdef AMD_EXTENSIONS
const char* const E_GL_AMD_shader_ballot = "GL_AMD_shader_ballot";
const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader_trinary_minmax";
const char* const E_GL_AMD_shader_explicit_vertex_parameter = "GL_AMD_shader_explicit_vertex_parameter";
@@ -204,9 +203,6 @@
const char* const E_GL_AMD_shader_image_load_store_lod = "GL_AMD_shader_image_load_store_lod";
const char* const E_GL_AMD_shader_fragment_mask = "GL_AMD_shader_fragment_mask";
const char* const E_GL_AMD_gpu_shader_half_float_fetch = "GL_AMD_gpu_shader_half_float_fetch";
-#endif
-
-#ifdef NV_EXTENSIONS
const char* const E_GL_NV_sample_mask_override_coverage = "GL_NV_sample_mask_override_coverage";
const char* const E_SPV_NV_geometry_shader_passthrough = "GL_NV_geometry_shader_passthrough";
@@ -228,7 +224,6 @@
const char* const viewportEXTs[] = { E_GL_ARB_shader_viewport_layer_array, E_GL_NV_viewport_array2 };
const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]);
-#endif
const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix";
const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins";
diff --git a/glslang/MachineIndependent/gl_types.h b/glslang/MachineIndependent/gl_types.h
index c9fee9e..c9ff9e9 100644
--- a/glslang/MachineIndependent/gl_types.h
+++ b/glslang/MachineIndependent/gl_types.h
@@ -78,7 +78,6 @@
#define GL_DOUBLE_MAT4x2 0x8F4D
#define GL_DOUBLE_MAT4x3 0x8F4E
-#ifdef AMD_EXTENSIONS
// Those constants are borrowed from extension NV_gpu_shader5
#define GL_FLOAT16_NV 0x8FF8
#define GL_FLOAT16_VEC2_NV 0x8FF9
@@ -94,7 +93,6 @@
#define GL_FLOAT16_MAT3x4_AMD 0x91CB
#define GL_FLOAT16_MAT4x2_AMD 0x91CC
#define GL_FLOAT16_MAT4x3_AMD 0x91CD
-#endif
#define GL_SAMPLER_1D 0x8B5D
#define GL_SAMPLER_2D 0x8B5E
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index 9759572..f9d7b5f 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -309,12 +309,16 @@
$$ = $1;
}
| INT32CONSTANT {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit signed literal");
$$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
+#endif
}
| UINT32CONSTANT {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit signed literal");
$$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true);
+#endif
}
| INTCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
@@ -332,12 +336,16 @@
$$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true);
}
| INT16CONSTANT {
+#ifndef GLSLANG_WEB
parseContext.explicitInt16Check($1.loc, "16-bit integer literal");
$$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true);
+#endif
}
| UINT16CONSTANT {
+#ifndef GLSLANG_WEB
parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer literal");
$$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true);
+#endif
}
| FLOATCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true);
@@ -347,8 +355,10 @@
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true);
}
| FLOAT16CONSTANT {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float literal");
$$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true);
+#endif
}
| BOOLCONSTANT {
$$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
@@ -1136,15 +1146,13 @@
$$.qualifier.flat = true;
}
| NOPERSPECTIVE {
+#ifndef GLSLANG_WEB
parseContext.globalCheck($1.loc, "noperspective");
-#ifdef NV_EXTENSIONS
parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective");
-#else
- parseContext.requireProfile($1.loc, ~EEsProfile, "noperspective");
-#endif
parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "noperspective");
$$.init($1.loc);
$$.qualifier.nopersp = true;
+#endif
}
| EXPLICITINTERPAMD {
#ifdef AMD_EXTENSIONS
@@ -1463,16 +1471,20 @@
$$.qualifier.writeonly = true;
}
| SUBROUTINE {
+#ifndef GLSLANG_WEB
parseContext.spvRemoved($1.loc, "subroutine");
parseContext.globalCheck($1.loc, "subroutine");
parseContext.unimplemented($1.loc, "subroutine");
$$.init($1.loc);
+#endif
}
| SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN {
+#ifndef GLSLANG_WEB
parseContext.spvRemoved($1.loc, "subroutine");
parseContext.globalCheck($1.loc, "subroutine");
parseContext.unimplemented($1.loc, "subroutine");
$$.init($1.loc);
+#endif
}
;
@@ -1583,19 +1595,25 @@
$$.basicType = EbtDouble;
}
| FLOAT16_T {
+#ifndef GLSLANG_WEB
parseContext.float16ScalarVectorCheck($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
+#endif
}
| FLOAT32_T {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
+#endif
}
| FLOAT64_T {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
+#endif
}
| INT {
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
@@ -1607,34 +1625,46 @@
$$.basicType = EbtUint;
}
| INT8_T {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt8;
+#endif
}
| UINT8_T {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint8;
+#endif
}
| INT16_T {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt16;
+#endif
}
| UINT16_T {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint16;
+#endif
}
| INT32_T {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt;
+#endif
}
| UINT32_T {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint;
+#endif
}
| INT64_T {
parseContext.int64Check($1.loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel());
@@ -1684,40 +1714,52 @@
$$.setVector(4);
}
| F16VEC2 {
+#ifndef GLSLANG_WEB
parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setVector(2);
+#endif
}
| F16VEC3 {
+#ifndef GLSLANG_WEB
parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setVector(3);
+#endif
}
| F16VEC4 {
+#ifndef GLSLANG_WEB
parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setVector(4);
+#endif
}
| F32VEC2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setVector(2);
+#endif
}
| F32VEC3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setVector(3);
+#endif
}
| F32VEC4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setVector(4);
+#endif
}
| F64VEC2 {
parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel());
@@ -1768,58 +1810,76 @@
$$.setVector(4);
}
| I8VEC2 {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt8;
$$.setVector(2);
+#endif
}
| I8VEC3 {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt8;
$$.setVector(3);
+#endif
}
| I8VEC4 {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt8;
$$.setVector(4);
+#endif
}
| I16VEC2 {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt16;
$$.setVector(2);
+#endif
}
| I16VEC3 {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt16;
$$.setVector(3);
+#endif
}
| I16VEC4 {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt16;
$$.setVector(4);
+#endif
}
| I32VEC2 {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt;
$$.setVector(2);
+#endif
}
| I32VEC3 {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt;
$$.setVector(3);
+#endif
}
| I32VEC4 {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtInt;
$$.setVector(4);
+#endif
}
| I64VEC2 {
parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel());
@@ -1858,58 +1918,76 @@
$$.setVector(4);
}
| U8VEC2 {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint8;
$$.setVector(2);
+#endif
}
| U8VEC3 {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint8;
$$.setVector(3);
+#endif
}
| U8VEC4 {
+#ifndef GLSLANG_WEB
parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint8;
$$.setVector(4);
+#endif
}
| U16VEC2 {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint16;
$$.setVector(2);
+#endif
}
| U16VEC3 {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint16;
$$.setVector(3);
+#endif
}
| U16VEC4 {
+#ifndef GLSLANG_WEB
parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint16;
$$.setVector(4);
+#endif
}
| U32VEC2 {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint;
$$.setVector(2);
+#endif
}
| U32VEC3 {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint;
$$.setVector(3);
+#endif
}
| U32VEC4 {
+#ifndef GLSLANG_WEB
parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtUint;
$$.setVector(4);
+#endif
}
| U64VEC2 {
parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel());
@@ -2062,220 +2140,292 @@
$$.setMatrix(4, 4);
}
| F16MAT2 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 2);
+#endif
}
| F16MAT3 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 3);
+#endif
}
| F16MAT4 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 4);
+#endif
}
| F16MAT2X2 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 2);
+#endif
}
| F16MAT2X3 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 3);
+#endif
}
| F16MAT2X4 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(2, 4);
+#endif
}
| F16MAT3X2 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 2);
+#endif
}
| F16MAT3X3 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 3);
+#endif
}
| F16MAT3X4 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(3, 4);
+#endif
}
| F16MAT4X2 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 2);
+#endif
}
| F16MAT4X3 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 3);
+#endif
}
| F16MAT4X4 {
+#ifndef GLSLANG_WEB
parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat16;
$$.setMatrix(4, 4);
+#endif
}
| F32MAT2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(2, 2);
+#endif
}
| F32MAT3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(3, 3);
+#endif
}
| F32MAT4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(4, 4);
+#endif
}
| F32MAT2X2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(2, 2);
+#endif
}
| F32MAT2X3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(2, 3);
+#endif
}
| F32MAT2X4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(2, 4);
+#endif
}
| F32MAT3X2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(3, 2);
+#endif
}
| F32MAT3X3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(3, 3);
+#endif
}
| F32MAT3X4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(3, 4);
+#endif
}
| F32MAT4X2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(4, 2);
+#endif
}
| F32MAT4X3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(4, 3);
+#endif
}
| F32MAT4X4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.setMatrix(4, 4);
+#endif
}
| F64MAT2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 2);
+#endif
}
| F64MAT3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 3);
+#endif
}
| F64MAT4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 4);
+#endif
}
| F64MAT2X2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 2);
+#endif
}
| F64MAT2X3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 3);
+#endif
}
| F64MAT2X4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(2, 4);
+#endif
}
| F64MAT3X2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 2);
+#endif
}
| F64MAT3X3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 3);
+#endif
}
| F64MAT3X4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(3, 4);
+#endif
}
| F64MAT4X2 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 2);
+#endif
}
| F64MAT4X3 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 3);
+#endif
}
| F64MAT4X4 {
+#ifndef GLSLANG_WEB
parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtDouble;
$$.setMatrix(4, 4);
+#endif
}
| ACCSTRUCTNV {
#ifdef NV_EXTENSIONS
@@ -3215,10 +3365,12 @@
$$.sampler.setSubpass(EbtUint, true);
}
| FCOOPMATNV {
+#ifndef GLSLANG_WEB
parseContext.fcoopmatCheck($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel());
$$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
$$.basicType = EbtFloat;
$$.coopmat = true;
+#endif
}
| struct_specifier {
$$ = $1;
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index a52b486..3597730 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -942,65 +942,65 @@
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 302, 302, 308, 311, 315, 319, 322, 326, 330,
- 334, 338, 342, 345, 349, 353, 356, 364, 367, 370,
- 373, 376, 381, 389, 396, 403, 409, 413, 420, 423,
- 429, 436, 446, 454, 459, 486, 494, 500, 504, 508,
- 528, 529, 530, 531, 537, 538, 543, 548, 557, 558,
- 563, 571, 572, 578, 587, 588, 593, 598, 603, 611,
- 612, 621, 633, 634, 643, 644, 653, 654, 663, 664,
- 672, 673, 681, 682, 690, 691, 691, 709, 710, 726,
- 730, 734, 738, 743, 747, 751, 755, 759, 763, 767,
- 774, 777, 788, 795, 800, 805, 813, 817, 821, 825,
- 830, 835, 844, 844, 855, 859, 866, 873, 876, 883,
- 891, 911, 934, 949, 974, 985, 995, 1005, 1015, 1024,
- 1027, 1031, 1035, 1040, 1048, 1053, 1058, 1063, 1068, 1077,
- 1088, 1115, 1124, 1131, 1138, 1149, 1158, 1168, 1180, 1189,
- 1201, 1207, 1210, 1217, 1221, 1225, 1233, 1242, 1245, 1256,
- 1259, 1262, 1266, 1270, 1274, 1278, 1284, 1288, 1300, 1314,
- 1319, 1325, 1331, 1338, 1344, 1349, 1354, 1359, 1369, 1379,
- 1389, 1399, 1408, 1420, 1424, 1429, 1434, 1439, 1444, 1449,
- 1453, 1457, 1461, 1465, 1471, 1480, 1487, 1490, 1498, 1503,
- 1513, 1518, 1526, 1530, 1540, 1543, 1549, 1555, 1562, 1572,
- 1576, 1580, 1585, 1590, 1595, 1600, 1604, 1609, 1614, 1619,
- 1624, 1629, 1634, 1639, 1644, 1649, 1653, 1658, 1663, 1668,
- 1674, 1680, 1686, 1692, 1698, 1704, 1710, 1716, 1722, 1728,
- 1734, 1740, 1745, 1750, 1755, 1760, 1765, 1770, 1776, 1782,
- 1788, 1794, 1800, 1806, 1812, 1818, 1824, 1830, 1836, 1842,
- 1848, 1854, 1860, 1866, 1872, 1878, 1884, 1890, 1896, 1902,
- 1908, 1914, 1920, 1926, 1932, 1937, 1942, 1947, 1952, 1957,
- 1962, 1967, 1972, 1977, 1982, 1987, 1992, 1998, 2004, 2010,
- 2016, 2022, 2028, 2034, 2040, 2046, 2052, 2058, 2064, 2070,
- 2076, 2082, 2088, 2094, 2100, 2106, 2112, 2118, 2124, 2130,
- 2136, 2142, 2148, 2154, 2160, 2166, 2172, 2178, 2184, 2190,
- 2196, 2202, 2208, 2214, 2220, 2226, 2232, 2238, 2244, 2250,
- 2256, 2262, 2268, 2274, 2280, 2286, 2291, 2296, 2301, 2306,
- 2311, 2316, 2321, 2326, 2331, 2336, 2341, 2346, 2351, 2356,
- 2364, 2372, 2380, 2388, 2396, 2404, 2412, 2420, 2428, 2436,
- 2444, 2452, 2460, 2465, 2470, 2475, 2480, 2485, 2490, 2495,
- 2500, 2505, 2510, 2515, 2520, 2525, 2530, 2535, 2540, 2548,
- 2556, 2561, 2566, 2571, 2579, 2584, 2589, 2594, 2602, 2607,
- 2612, 2617, 2625, 2630, 2635, 2640, 2645, 2650, 2658, 2663,
- 2671, 2676, 2684, 2689, 2697, 2702, 2710, 2715, 2723, 2728,
- 2736, 2741, 2746, 2751, 2756, 2761, 2766, 2771, 2776, 2781,
- 2786, 2791, 2796, 2801, 2806, 2811, 2819, 2824, 2829, 2834,
- 2842, 2847, 2852, 2857, 2865, 2870, 2875, 2880, 2888, 2893,
- 2898, 2903, 2911, 2916, 2921, 2926, 2934, 2939, 2944, 2949,
- 2957, 2962, 2967, 2972, 2980, 2985, 2990, 2995, 3003, 3008,
- 3013, 3018, 3026, 3031, 3036, 3041, 3049, 3054, 3059, 3064,
- 3072, 3077, 3082, 3087, 3095, 3100, 3105, 3110, 3118, 3123,
- 3128, 3133, 3141, 3146, 3151, 3157, 3163, 3169, 3175, 3184,
- 3193, 3199, 3205, 3211, 3217, 3223, 3228, 3244, 3249, 3254,
- 3262, 3262, 3273, 3273, 3283, 3286, 3299, 3321, 3348, 3352,
- 3358, 3363, 3374, 3377, 3383, 3392, 3395, 3401, 3405, 3406,
- 3412, 3413, 3414, 3415, 3416, 3417, 3418, 3419, 3423, 3431,
- 3432, 3436, 3432, 3448, 3449, 3453, 3453, 3460, 3460, 3474,
- 3477, 3485, 3493, 3504, 3505, 3509, 3512, 3518, 3525, 3529,
- 3537, 3541, 3554, 3557, 3563, 3563, 3583, 3586, 3592, 3604,
- 3616, 3619, 3625, 3625, 3640, 3640, 3656, 3656, 3677, 3680,
- 3686, 3689, 3695, 3699, 3706, 3711, 3716, 3723, 3726, 3735,
- 3739, 3748, 3751, 3754, 3762, 3762, 3784, 3790, 3793, 3798,
- 3801
+ 0, 302, 302, 308, 311, 317, 323, 326, 330, 334,
+ 338, 344, 350, 353, 357, 363, 366, 374, 377, 380,
+ 383, 386, 391, 399, 406, 413, 419, 423, 430, 433,
+ 439, 446, 456, 464, 469, 496, 504, 510, 514, 518,
+ 538, 539, 540, 541, 547, 548, 553, 558, 567, 568,
+ 573, 581, 582, 588, 597, 598, 603, 608, 613, 621,
+ 622, 631, 643, 644, 653, 654, 663, 664, 673, 674,
+ 682, 683, 691, 692, 700, 701, 701, 719, 720, 736,
+ 740, 744, 748, 753, 757, 761, 765, 769, 773, 777,
+ 784, 787, 798, 805, 810, 815, 823, 827, 831, 835,
+ 840, 845, 854, 854, 865, 869, 876, 883, 886, 893,
+ 901, 921, 944, 959, 984, 995, 1005, 1015, 1025, 1034,
+ 1037, 1041, 1045, 1050, 1058, 1063, 1068, 1073, 1078, 1087,
+ 1098, 1125, 1134, 1141, 1148, 1157, 1166, 1176, 1188, 1197,
+ 1209, 1215, 1218, 1225, 1229, 1233, 1241, 1250, 1253, 1264,
+ 1267, 1270, 1274, 1278, 1282, 1286, 1292, 1296, 1308, 1322,
+ 1327, 1333, 1339, 1346, 1352, 1357, 1362, 1367, 1377, 1387,
+ 1397, 1407, 1416, 1428, 1432, 1437, 1442, 1447, 1452, 1457,
+ 1461, 1465, 1469, 1473, 1481, 1492, 1499, 1502, 1510, 1515,
+ 1525, 1530, 1538, 1542, 1552, 1555, 1561, 1567, 1574, 1584,
+ 1588, 1592, 1597, 1604, 1611, 1618, 1622, 1627, 1634, 1641,
+ 1648, 1655, 1662, 1669, 1674, 1679, 1683, 1688, 1693, 1698,
+ 1704, 1710, 1716, 1724, 1732, 1740, 1748, 1756, 1764, 1770,
+ 1776, 1782, 1787, 1792, 1797, 1802, 1807, 1812, 1820, 1828,
+ 1836, 1844, 1852, 1860, 1868, 1876, 1884, 1890, 1896, 1902,
+ 1908, 1914, 1920, 1928, 1936, 1944, 1952, 1960, 1968, 1976,
+ 1984, 1992, 1998, 2004, 2010, 2015, 2020, 2025, 2030, 2035,
+ 2040, 2045, 2050, 2055, 2060, 2065, 2070, 2076, 2082, 2088,
+ 2094, 2100, 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2150,
+ 2158, 2166, 2174, 2182, 2190, 2198, 2206, 2214, 2222, 2230,
+ 2238, 2246, 2254, 2262, 2270, 2278, 2286, 2294, 2302, 2310,
+ 2318, 2326, 2334, 2342, 2350, 2358, 2366, 2374, 2382, 2390,
+ 2398, 2406, 2414, 2422, 2430, 2436, 2441, 2446, 2451, 2456,
+ 2461, 2466, 2471, 2476, 2481, 2486, 2491, 2496, 2501, 2506,
+ 2514, 2522, 2530, 2538, 2546, 2554, 2562, 2570, 2578, 2586,
+ 2594, 2602, 2610, 2615, 2620, 2625, 2630, 2635, 2640, 2645,
+ 2650, 2655, 2660, 2665, 2670, 2675, 2680, 2685, 2690, 2698,
+ 2706, 2711, 2716, 2721, 2729, 2734, 2739, 2744, 2752, 2757,
+ 2762, 2767, 2775, 2780, 2785, 2790, 2795, 2800, 2808, 2813,
+ 2821, 2826, 2834, 2839, 2847, 2852, 2860, 2865, 2873, 2878,
+ 2886, 2891, 2896, 2901, 2906, 2911, 2916, 2921, 2926, 2931,
+ 2936, 2941, 2946, 2951, 2956, 2961, 2969, 2974, 2979, 2984,
+ 2992, 2997, 3002, 3007, 3015, 3020, 3025, 3030, 3038, 3043,
+ 3048, 3053, 3061, 3066, 3071, 3076, 3084, 3089, 3094, 3099,
+ 3107, 3112, 3117, 3122, 3130, 3135, 3140, 3145, 3153, 3158,
+ 3163, 3168, 3176, 3181, 3186, 3191, 3199, 3204, 3209, 3214,
+ 3222, 3227, 3232, 3237, 3245, 3250, 3255, 3260, 3268, 3273,
+ 3278, 3283, 3291, 3296, 3301, 3307, 3313, 3319, 3325, 3334,
+ 3343, 3349, 3355, 3361, 3367, 3375, 3380, 3396, 3401, 3406,
+ 3414, 3414, 3425, 3425, 3435, 3438, 3451, 3473, 3500, 3504,
+ 3510, 3515, 3526, 3529, 3535, 3544, 3547, 3553, 3557, 3558,
+ 3564, 3565, 3566, 3567, 3568, 3569, 3570, 3571, 3575, 3583,
+ 3584, 3588, 3584, 3600, 3601, 3605, 3605, 3612, 3612, 3626,
+ 3629, 3637, 3645, 3656, 3657, 3661, 3664, 3670, 3677, 3681,
+ 3689, 3693, 3706, 3709, 3715, 3715, 3735, 3738, 3744, 3756,
+ 3768, 3771, 3777, 3777, 3792, 3792, 3808, 3808, 3829, 3832,
+ 3838, 3841, 3847, 3851, 3858, 3863, 3868, 3875, 3878, 3887,
+ 3891, 3900, 3903, 3906, 3914, 3914, 3936, 3942, 3945, 3950,
+ 3953
};
#endif
@@ -4181,232 +4181,242 @@
case 4:
#line 311 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 4188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4190 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 5:
-#line 315 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 317 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 4197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 6:
-#line 319 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 323 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
}
-#line 4205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 7:
-#line 322 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 326 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal");
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
}
-#line 4214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4218 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 8:
-#line 326 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 330 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 9:
-#line 330 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4236 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 10:
-#line 334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 338 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 4241 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4247 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 11:
-#line 338 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 344 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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 4250 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 12:
-#line 342 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+#endif
}
#line 4258 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 12:
+#line 350 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+ }
+#line 4266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 13:
-#line 345 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 353 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4267 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 14:
-#line 349 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 357 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 4276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 15:
-#line 353 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 363 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
}
-#line 4284 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 16:
-#line 356 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 366 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
-#line 4294 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 17:
-#line 364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4302 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4312 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 18:
-#line 367 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 377 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
}
-#line 4310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 19:
-#line 370 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 380 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 20:
-#line 373 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 383 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
}
-#line 4326 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 21:
-#line 376 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 386 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 22:
-#line 381 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 391 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4356 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 23:
-#line 389 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 399 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 24:
-#line 396 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 406 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode);
delete (yyvsp[0].interm).function;
}
-#line 4364 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4374 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 25:
-#line 403 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 413 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 4372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 26:
-#line 409 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 419 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 4381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 27:
-#line 413 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 423 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-1].interm);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 4390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 28:
-#line 420 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 430 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 4398 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 29:
-#line 423 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 433 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 4406 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 30:
-#line 429 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 439 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -4414,11 +4424,11 @@
(yyval.interm).function = (yyvsp[-1].interm).function;
(yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
}
-#line 4418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4428 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 31:
-#line 436 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 446 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TParameter param = { 0, new TType };
param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -4426,29 +4436,29 @@
(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 4430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 32:
-#line 446 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 456 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-1].interm);
}
-#line 4438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 33:
-#line 454 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 464 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 4448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4458 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 34:
-#line 459 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 469 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -4476,50 +4486,50 @@
(yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
}
}
-#line 4480 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 35:
-#line 486 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 496 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// Constructor
(yyval.interm).intermNode = 0;
(yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
}
-#line 4490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4500 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 36:
-#line 494 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 504 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4511 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 37:
-#line 500 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 510 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4510 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4520 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 38:
-#line 504 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 514 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 39:
-#line 508 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 518 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm).op != EOpNull) {
char errorOp[2] = {0, 0};
@@ -4536,179 +4546,179 @@
(yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
}
}
-#line 4540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4550 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 40:
-#line 528 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 538 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 4546 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 41:
-#line 529 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 539 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 4552 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 42:
-#line 530 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 540 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 4558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4568 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 43:
-#line 531 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 541 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 4565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4575 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 44:
-#line 537 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 547 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 45:
-#line 538 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (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 4581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 46:
-#line 543 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 45:
+#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ (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 4591 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 46:
+#line 553 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (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 4601 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 47:
-#line 548 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 48:
-#line 557 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 567 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 49:
-#line 558 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (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 4618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 50:
-#line 563 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 49:
+#line 568 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ (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 4628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 50:
+#line 573 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (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 4638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 51:
-#line 571 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 581 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 52:
-#line 572 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 582 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4645 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 53:
-#line 578 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4656 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 54:
-#line 587 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 597 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 55:
-#line 588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (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 4672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 56:
-#line 593 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 55:
+#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ (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 4682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 57:
-#line 598 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 56:
+#line 603 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ (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 4692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 58:
-#line 603 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 57:
+#line 608 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
+ (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 4702 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 58:
+#line 613 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (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 4712 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 59:
-#line 611 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 621 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 60:
-#line 612 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 622 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "==");
@@ -4718,11 +4728,11 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 61:
-#line 621 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 631 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison");
parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!=");
@@ -4732,124 +4742,124 @@
if ((yyval.interm.intermTypedNode) == 0)
(yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
}
-#line 4736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 62:
-#line 633 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 643 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4752 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 63:
-#line 634 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 644 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4753 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 64:
-#line 643 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 653 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 65:
-#line 644 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4780 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 66:
-#line 653 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4786 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 67:
-#line 654 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 664 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 4787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4797 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 68:
-#line 663 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 673 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4793 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 69:
-#line 664 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 674 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 4803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4813 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 70:
-#line 672 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 682 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 71:
-#line 673 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 683 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 4819 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 72:
-#line 681 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 691 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 73:
-#line 682 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 692 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 4835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 74:
-#line 690 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 700 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4841 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4851 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 75:
-#line 691 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 701 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.controlFlowNestingLevel;
}
-#line 4849 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4859 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 76:
-#line 694 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 704 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
@@ -4862,17 +4872,17 @@
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 4866 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4876 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 77:
-#line 709 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 719 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 4872 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4882 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 78:
-#line 710 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 720 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment");
parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=");
@@ -4886,119 +4896,119 @@
(yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
}
}
-#line 4890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 79:
-#line 726 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 736 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAssign;
}
-#line 4899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4909 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 80:
-#line 730 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 740 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpMulAssign;
}
-#line 4908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 81:
-#line 734 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 744 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpDivAssign;
}
-#line 4917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 82:
-#line 738 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 748 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpModAssign;
}
-#line 4927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 83:
-#line 743 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 753 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpAddAssign;
}
-#line 4936 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 84:
-#line 747 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 757 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).op = EOpSubAssign;
}
-#line 4945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4955 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 85:
-#line 751 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 761 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign;
}
-#line 4954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 86:
-#line 755 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 765 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign;
}
-#line 4963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 87:
-#line 759 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 769 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
}
-#line 4972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4982 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 88:
-#line 763 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 773 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
}
-#line 4981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 4991 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 89:
-#line 767 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 777 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
(yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
}
-#line 4990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5000 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 90:
-#line 774 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 784 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 4998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5008 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 91:
-#line 777 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 787 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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);
@@ -5007,40 +5017,40 @@
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
}
-#line 5011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 92:
-#line 788 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 798 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 5020 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 93:
-#line 795 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 805 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5030 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 94:
-#line 800 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 810 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5040 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 95:
-#line 805 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 815 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement");
@@ -5049,75 +5059,75 @@
parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
(yyval.interm.intermNode) = 0;
}
-#line 5053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5063 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 96:
-#line 813 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 823 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
(yyval.interm.intermNode) = 0;
}
-#line 5062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 97:
-#line 817 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 827 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
(yyval.interm.intermNode) = 0;
}
-#line 5071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 98:
-#line 821 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 831 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes);
(yyval.interm.intermNode) = 0;
}
-#line 5080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 99:
-#line 825 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 5090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 100:
-#line 830 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 99:
+#line 835 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- 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);
+ 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 5100 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 100:
+#line 840 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ 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 5110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 101:
-#line 835 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 845 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5111 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5121 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 102:
-#line 844 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 854 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 5117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 103:
-#line 844 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 854 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.structNestingLevel;
parseContext.blockName = (yyvsp[-4].lex).string;
@@ -5127,54 +5137,54 @@
(yyval.interm).loc = (yyvsp[-5].interm.type).loc;
(yyval.interm).typeList = (yyvsp[-1].interm.typeList);
}
-#line 5131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5141 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 104:
-#line 855 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 865 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.identifierList) = new TIdentifierList;
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 5140 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 105:
-#line 859 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 869 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
(yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
}
-#line 5149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 106:
-#line 866 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 876 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).function = (yyvsp[-1].interm.function);
(yyval.interm).loc = (yyvsp[0].lex).loc;
}
-#line 5158 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 107:
-#line 873 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 5166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 108:
-#line 876 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 886 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.function) = (yyvsp[0].interm.function);
}
-#line 5174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 109:
-#line 883 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 893 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// Add the parameter
(yyval.interm.function) = (yyvsp[-1].interm.function);
@@ -5183,11 +5193,11 @@
else
delete (yyvsp[0].interm).param.type;
}
-#line 5187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 110:
-#line 891 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 901 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// Only first parameter of one-parameter functions can be void
@@ -5205,11 +5215,11 @@
(yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
}
}
-#line 5209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 111:
-#line 911 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 921 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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",
@@ -5229,11 +5239,11 @@
function = new TFunction((yyvsp[-1].lex).string, type);
(yyval.interm.function) = function;
}
-#line 5233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 112:
-#line 934 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-1].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -5249,11 +5259,11 @@
(yyval.interm).loc = (yyvsp[0].lex).loc;
(yyval.interm).param = param;
}
-#line 5253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5263 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 113:
-#line 949 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 959 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -5273,11 +5283,11 @@
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).param = param;
}
-#line 5277 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5287 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 114:
-#line 974 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 984 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -5289,11 +5299,11 @@
parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
}
-#line 5293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 115:
-#line 985 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 995 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
@@ -5301,11 +5311,11 @@
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());
}
-#line 5305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 116:
-#line 995 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1005 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -5316,11 +5326,11 @@
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 5320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5330 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 117:
-#line 1005 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1015 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
@@ -5328,118 +5338,118 @@
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());
}
-#line 5332 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5342 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 118:
-#line 1015 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1025 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 119:
-#line 1024 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1034 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[0].interm);
}
-#line 5351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 120:
-#line 1027 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1037 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-2].interm);
parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
}
-#line 5360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5370 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 121:
-#line 1031 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1041 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-3].interm);
parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes);
}
-#line 5369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 122:
-#line 1035 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1045 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 123:
-#line 1040 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1050 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 124:
-#line 1048 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).type = (yyvsp[0].interm.type);
(yyval.interm).intermNode = 0;
parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
}
-#line 5399 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 125:
-#line 1053 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1063 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5409 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 126:
-#line 1058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5419 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 127:
-#line 1063 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1073 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5429 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 128:
-#line 1068 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1078 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5439 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5449 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 129:
-#line 1077 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1087 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
@@ -5451,11 +5461,11 @@
parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
}
-#line 5455 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5465 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 130:
-#line 1088 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1098 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier);
parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type));
@@ -5480,22 +5490,22 @@
(parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
(yyval.interm.type).qualifier.smooth = true;
}
-#line 5484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 131:
-#line 1115 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1125 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 132:
-#line 1124 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1134 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
@@ -5503,11 +5513,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.smooth = true;
}
-#line 5507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 133:
-#line 1131 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1141 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
@@ -5515,27 +5525,25 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.flat = true;
}
-#line 5519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 134:
-#line 1138 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1148 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective");
-#ifdef NV_EXTENSIONS
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective");
-#else
- parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "noperspective");
-#endif
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nopersp = true;
+#endif
}
-#line 5535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 135:
-#line 1149 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1157 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD");
@@ -5545,11 +5553,11 @@
(yyval.interm.type).qualifier.explicitInterp = true;
#endif
}
-#line 5549 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5557 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 136:
-#line 1158 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1166 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV");
@@ -5560,11 +5568,11 @@
(yyval.interm.type).qualifier.pervertexNV = true;
#endif
}
-#line 5564 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 137:
-#line 1168 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1176 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
// No need for profile version or extension check. Shader stage already checks both.
@@ -5577,11 +5585,11 @@
(yyval.interm.type).qualifier.perPrimitiveNV = true;
#endif
}
-#line 5581 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5589 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 138:
-#line 1180 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1188 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
// No need for profile version or extension check. Shader stage already checks both.
@@ -5591,11 +5599,11 @@
(yyval.interm.type).qualifier.perViewNV = true;
#endif
}
-#line 5595 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 139:
-#line 1189 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1197 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
// No need for profile version or extension check. Shader stage already checks both.
@@ -5605,84 +5613,84 @@
(yyval.interm.type).qualifier.perTaskNV = true;
#endif
}
-#line 5609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 140:
-#line 1201 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[-1].interm.type);
- }
#line 5617 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 141:
-#line 1207 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 140:
+#line 1209 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.type) = (yyvsp[0].interm.type);
+ (yyval.interm.type) = (yyvsp[-1].interm.type);
}
#line 5625 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 141:
+#line 1215 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 142:
-#line 1210 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1218 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5635 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 143:
-#line 1217 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string);
}
-#line 5644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 144:
-#line 1221 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1229 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 145:
-#line 1225 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // 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 5663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 146:
-#line 1233 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1241 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5674 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 147:
-#line 1242 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
#line 5682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 147:
+#line 1250 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 148:
-#line 1245 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1253 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[-1].interm.type);
if ((yyval.interm.type).basicType == EbtVoid)
@@ -5691,80 +5699,80 @@
(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 5695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 149:
-#line 1256 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
#line 5703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 150:
-#line 1259 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 149:
+#line 1264 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type) = (yyvsp[0].interm.type);
}
#line 5711 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 150:
+#line 1267 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5719 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 151:
-#line 1262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5720 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 152:
-#line 1266 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- // allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 153:
-#line 1270 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- // allow inheritance of storage qualifier from block declaration
- (yyval.interm.type) = (yyvsp[0].interm.type);
- }
-#line 5738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 154:
#line 1274 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
-#line 5747 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5737 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 155:
+ case 153:
#line 1278 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+ // allow inheritance of storage qualifier from block declaration
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 154:
+#line 1282 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ // allow inheritance of storage qualifier from block declaration
(yyval.interm.type) = (yyvsp[0].interm.type);
}
#line 5755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 155:
+#line 1286 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type) = (yyvsp[0].interm.type);
+ }
+#line 5763 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 156:
-#line 1284 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1292 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5764 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 157:
-#line 1288 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1296 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -5777,11 +5785,11 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 5781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 158:
-#line 1300 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1308 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -5796,43 +5804,43 @@
else
(yyval.interm.type).qualifier.storage = EvqVaryingIn;
}
-#line 5800 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 159:
-#line 1314 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1322 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "inout");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqInOut;
}
-#line 5810 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 160:
-#line 1319 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1327 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 161:
-#line 1325 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1333 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 162:
-#line 1331 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1339 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -5840,52 +5848,52 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.centroid = true;
}
-#line 5844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 163:
-#line 1338 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1346 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 5855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5863 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 164:
-#line 1344 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1352 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "sample");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.sample = true;
}
-#line 5865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 165:
-#line 1349 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1357 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "uniform");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqUniform;
}
-#line 5875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5883 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 166:
-#line 1354 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1362 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "buffer");
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqBuffer;
}
-#line 5885 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5893 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 167:
-#line 1359 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1367 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
@@ -5896,11 +5904,11 @@
(yyval.interm.type).qualifier.storage = EvqHitAttrNV;
#endif
}
-#line 5900 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 168:
-#line 1369 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1377 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
@@ -5911,11 +5919,11 @@
(yyval.interm.type).qualifier.storage = EvqPayloadNV;
#endif
}
-#line 5915 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5923 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 169:
-#line 1379 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1387 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
@@ -5926,11 +5934,11 @@
(yyval.interm.type).qualifier.storage = EvqPayloadInNV;
#endif
}
-#line 5930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 170:
-#line 1389 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1397 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
@@ -5941,11 +5949,11 @@
(yyval.interm.type).qualifier.storage = EvqCallableDataNV;
#endif
}
-#line 5945 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 171:
-#line 1399 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1407 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
@@ -5955,11 +5963,11 @@
(yyval.interm.type).qualifier.storage = EvqCallableDataInNV;
#endif
}
-#line 5959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 172:
-#line 1408 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1416 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.globalCheck((yyvsp[0].lex).loc, "shared");
parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared");
@@ -5972,165 +5980,169 @@
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.storage = EvqShared;
}
-#line 5976 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 173:
-#line 1420 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1428 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.coherent = true;
}
-#line 5985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 5993 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 174:
-#line 1424 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1432 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 5995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6003 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 175:
-#line 1429 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1437 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 6005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6013 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 176:
-#line 1434 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1442 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 6015 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6023 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 177:
-#line 1439 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1447 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 6025 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6033 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 178:
-#line 1444 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1452 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 6035 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6043 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 179:
-#line 1449 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.volatil = true;
}
-#line 6044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6052 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 180:
-#line 1453 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.restrict = true;
}
-#line 6053 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 181:
-#line 1457 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1465 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.readonly = true;
}
-#line 6062 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 182:
-#line 1461 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1469 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.writeonly = true;
}
-#line 6071 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6079 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 183:
-#line 1465 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1473 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 184:
-#line 1471 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1481 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 185:
-#line 1480 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1492 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc);
(yyval.interm.type).qualifier.nonUniform = true;
}
-#line 6102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6114 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 186:
-#line 1487 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1499 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// TODO
}
-#line 6110 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 187:
-#line 1490 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1502 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// 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 6120 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6132 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 188:
-#line 1498 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1510 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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);
}
-#line 6130 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 189:
-#line 1503 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
(yyval.interm.type) = (yyvsp[-2].interm.type);
@@ -6138,21 +6150,21 @@
(yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
(yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
}
-#line 6142 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6154 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 190:
-#line 1513 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1525 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-1].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
(yyval.interm).arraySizes->addInnerSize();
}
-#line 6152 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6164 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 191:
-#line 1518 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm).loc = (yyvsp[-2].lex).loc;
(yyval.interm).arraySizes = new TArraySizes;
@@ -6161,20 +6173,20 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 6165 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 192:
-#line 1526 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1538 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-2].interm);
(yyval.interm).arraySizes->addInnerSize();
}
-#line 6174 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 193:
-#line 1530 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1542 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm) = (yyvsp[-3].interm);
@@ -6182,49 +6194,37 @@
parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
(yyval.interm).arraySizes->addInnerSize(size);
}
-#line 6186 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6198 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 194:
-#line 1540 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1552 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
}
-#line 6194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6206 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 195:
-#line 1543 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1555 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = 0;
}
-#line 6202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6214 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 196:
-#line 1549 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1561 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
}
-#line 6210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 197:
-#line 1555 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.typeParameters) = new TArraySizes;
-
- TArraySize size;
- parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
- (yyval.interm.typeParameters)->addInnerSize(size);
- }
#line 6222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 198:
-#line 1562 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 197:
+#line 1567 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
+ (yyval.interm.typeParameters) = new TArraySizes;
TArraySize size;
parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
@@ -6233,1492 +6233,1642 @@
#line 6234 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 198:
+#line 1574 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (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);
+ }
+#line 6246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 199:
-#line 1572 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1584 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtVoid;
}
-#line 6243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6255 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 200:
-#line 1576 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
}
-#line 6252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 201:
-#line 1580 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1592 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
}
-#line 6262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6274 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 202:
-#line 1585 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1597 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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;
+#endif
}
-#line 6272 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 203:
-#line 1590 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1604 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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;
+#endif
}
-#line 6282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 204:
-#line 1595 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1611 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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;
+#endif
}
-#line 6292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6310 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 205:
-#line 1600 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1618 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
}
-#line 6301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 206:
-#line 1604 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1622 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 207:
-#line 1609 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1627 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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 6321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 208:
-#line 1614 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6331 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 209:
-#line 1619 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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;
+#endif
}
#line 6341 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 210:
-#line 1624 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 208:
+#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
+ 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;
+#endif
+ }
+#line 6353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 209:
+#line 1641 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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;
+#endif
+ }
+#line 6365 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 210:
+#line 1648 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
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;
+#endif
}
-#line 6351 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6377 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 211:
-#line 1629 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1655 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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;
+#endif
}
-#line 6361 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6389 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 212:
-#line 1634 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1662 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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;
+#endif
}
-#line 6371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 213:
-#line 1639 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1669 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6381 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6411 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 214:
-#line 1644 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 215:
-#line 1649 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1679 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
}
-#line 6400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 216:
-#line 1653 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(2);
- }
-#line 6410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 217:
-#line 1658 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(3);
- }
-#line 6420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 218:
-#line 1663 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtFloat;
- (yyval.interm.type).setVector(4);
- }
#line 6430 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 216:
+#line 1683 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6440 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 217:
+#line 1688 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6450 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 218:
+#line 1693 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6460 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 219:
-#line 1668 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(2);
}
-#line 6441 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 220:
-#line 1674 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(3);
}
-#line 6452 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6482 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 221:
-#line 1680 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double vector");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setVector(4);
}
-#line 6463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 222:
-#line 1686 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6474 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6506 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 223:
-#line 1692 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1724 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6485 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 224:
-#line 1698 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1732 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 225:
-#line 1704 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1740 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 226:
-#line 1710 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1748 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6518 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6558 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 227:
-#line 1716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1756 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6529 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6571 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 228:
-#line 1722 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1764 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 229:
-#line 1728 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 230:
-#line 1734 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 231:
-#line 1740 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(2);
- }
-#line 6572 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 232:
-#line 1745 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtBool;
- (yyval.interm.type).setVector(3);
- }
#line 6582 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 229:
+#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ 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 6593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 230:
+#line 1776 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ 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 6604 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 231:
+#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(2);
+ }
+#line 6614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 232:
+#line 1787 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtBool;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6624 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 233:
-#line 1750 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1792 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtBool;
(yyval.interm.type).setVector(4);
}
-#line 6592 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6634 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 234:
-#line 1755 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1797 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtInt;
(yyval.interm.type).setVector(2);
}
-#line 6602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 235:
-#line 1760 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(3);
- }
-#line 6612 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 236:
-#line 1765 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
- (yyval.interm.type).basicType = EbtInt;
- (yyval.interm.type).setVector(4);
- }
-#line 6622 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 237:
-#line 1770 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 238:
-#line 1776 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 239:
-#line 1782 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 235:
+#line 1802 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(3);
+ }
+#line 6654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 236:
+#line 1807 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+ (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+ (yyval.interm.type).basicType = EbtInt;
+ (yyval.interm.type).setVector(4);
+ }
+#line 6664 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 237:
+#line 1812 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
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 6655 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 240:
-#line 1788 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6666 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 241:
-#line 1794 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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);
+#endif
}
#line 6677 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 242:
-#line 1800 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 238:
+#line 1820 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6690 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 239:
+#line 1828 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 240:
+#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 241:
+#line 1844 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6729 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 242:
+#line 1852 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 243:
-#line 1806 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1860 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6699 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6755 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 244:
-#line 1812 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1868 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6710 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 245:
-#line 1818 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1876 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6721 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 246:
-#line 1824 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6732 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6792 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 247:
-#line 1830 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1890 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6743 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6803 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 248:
-#line 1836 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6814 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 249:
-#line 1842 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1902 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6765 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6825 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 250:
-#line 1848 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6776 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6836 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 251:
-#line 1854 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6787 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 252:
-#line 1860 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1920 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 253:
-#line 1866 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1928 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 6809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6873 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 254:
-#line 1872 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1936 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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 6820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 255:
-#line 1878 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6831 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 256:
-#line 1884 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6842 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 257:
-#line 1890 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6853 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 258:
-#line 1896 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6864 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 259:
-#line 1902 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 6875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 260:
-#line 1908 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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);
+#endif
}
#line 6886 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
+ case 255:
+#line 1944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6899 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 256:
+#line 1952 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6912 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 257:
+#line 1960 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6925 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 258:
+#line 1968 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6938 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 259:
+#line 1976 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 260:
+#line 1984 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 6964 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
case 261:
-#line 1914 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6975 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 262:
-#line 1920 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6986 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 263:
-#line 1926 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 6919 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 6997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 264:
-#line 1932 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 6929 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 265:
-#line 1937 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2015 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 6939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 266:
-#line 1942 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2020 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 6949 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 267:
-#line 1947 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2025 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 6959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 268:
-#line 1952 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2030 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 6969 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 269:
-#line 1957 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2035 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 6979 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 270:
-#line 1962 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 6989 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 271:
-#line 1967 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2045 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 6999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 272:
-#line 1972 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2050 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 7009 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 273:
-#line 1977 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2055 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 7019 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 274:
-#line 1982 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2060 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 7029 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 275:
-#line 1987 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2065 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtFloat;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 276:
-#line 1992 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7050 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7128 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 277:
-#line 1998 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2076 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7061 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 278:
-#line 2004 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2082 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7072 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7150 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 279:
-#line 2010 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 2);
}
-#line 7083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7161 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 280:
-#line 2016 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 3);
}
-#line 7094 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7172 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 281:
-#line 2022 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2100 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(2, 4);
}
-#line 7105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7183 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 282:
-#line 2028 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2106 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 2);
}
-#line 7116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 283:
-#line 2034 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2112 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 3);
}
-#line 7127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7205 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 284:
-#line 2040 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(3, 4);
}
-#line 7138 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7216 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 285:
-#line 2046 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 2);
}
-#line 7149 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7227 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 286:
-#line 2052 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2130 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 3);
}
-#line 7160 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7238 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 287:
-#line 2058 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2136 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.doubleCheck((yyvsp[0].lex).loc, "double matrix");
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtDouble;
(yyval.interm.type).setMatrix(4, 4);
}
-#line 7171 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7249 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 288:
-#line 2064 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2142 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7182 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 289:
-#line 2070 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2150 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7193 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 290:
-#line 2076 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2158 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7204 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 291:
-#line 2082 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2166 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7215 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7301 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 292:
-#line 2088 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2174 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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 7226 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 293:
-#line 2094 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7237 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 294:
-#line 2100 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 295:
-#line 2106 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7259 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 296:
-#line 2112 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7270 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 297:
-#line 2118 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7281 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 298:
-#line 2124 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7292 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 299:
-#line 2130 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7303 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 300:
-#line 2136 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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);
+#endif
}
#line 7314 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 301:
-#line 2142 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 293:
+#line 2182 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7327 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 294:
+#line 2190 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7340 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 295:
+#line 2198 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 296:
+#line 2206 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7366 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 297:
+#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 298:
+#line 2222 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 299:
+#line 2230 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7405 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 300:
+#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7418 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 301:
+#line 2246 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7431 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 302:
-#line 2148 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2254 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7444 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 303:
-#line 2154 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
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 7347 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 304:
-#line 2160 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7358 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 305:
-#line 2166 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7369 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 306:
-#line 2172 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 307:
-#line 2178 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7391 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 308:
-#line 2184 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 309:
-#line 2190 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 310:
-#line 2196 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7424 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 311:
-#line 2202 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7435 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 312:
-#line 2208 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7446 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 313:
-#line 2214 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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);
+#endif
}
#line 7457 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 314:
-#line 2220 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 304:
+#line 2270 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel());
+#ifndef GLSLANG_WEB
+ 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 = EbtDouble;
- (yyval.interm.type).setMatrix(4, 4);
+ (yyval.interm.type).basicType = EbtFloat;
+ (yyval.interm.type).setMatrix(2, 3);
+#endif
}
-#line 7468 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7470 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 315:
-#line 2226 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 305:
+#line 2278 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 306:
+#line 2286 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7496 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 307:
+#line 2294 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 308:
+#line 2302 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7522 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 309:
+#line 2310 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7535 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 310:
+#line 2318 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7548 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 311:
+#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7561 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 312:
+#line 2334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7479 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7574 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 316:
-#line 2232 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 313:
+#line 2342 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- 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 7490 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 317:
-#line 2238 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 318:
-#line 2244 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7512 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 319:
-#line 2250 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7587 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
- case 320:
-#line 2256 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ case 314:
+#line 2350 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
- 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 7534 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 321:
-#line 2262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7545 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 322:
-#line 2268 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
- 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 7556 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
- break;
-
- case 323:
-#line 2274 "MachineIndependent/glslang.y" /* yacc.c:1646 */
- {
+#ifndef GLSLANG_WEB
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);
+#endif
}
-#line 7567 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7600 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 315:
+#line 2358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 316:
+#line 2366 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 317:
+#line 2374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 318:
+#line 2382 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 319:
+#line 2390 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7665 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 320:
+#line 2398 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 321:
+#line 2406 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7691 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 322:
+#line 2414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7704 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+ break;
+
+ case 323:
+#line 2422 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+ {
+#ifndef GLSLANG_WEB
+ 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);
+#endif
+ }
+#line 7717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 324:
-#line 2280 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2430 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef NV_EXTENSIONS
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtAccStructNV;
#endif
}
-#line 7578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7728 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 325:
-#line 2286 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2436 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 7588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 326:
-#line 2291 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2441 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd1D);
}
-#line 7598 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 327:
-#line 2296 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2446 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd2D);
}
-#line 7608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 328:
-#line 2301 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2451 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, Esd3D);
}
-#line 7618 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 329:
-#line 2306 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2456 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdCube);
}
-#line 7628 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 330:
-#line 2311 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2461 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 331:
-#line 2316 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2466 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7648 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7798 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 332:
-#line 2321 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2471 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7658 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7808 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 333:
-#line 2326 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2476 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7668 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7818 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 334:
-#line 2331 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2481 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7828 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 335:
-#line 2336 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2486 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 336:
-#line 2341 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2491 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7698 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 337:
-#line 2346 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2496 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7858 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 338:
-#line 2351 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2501 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7718 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7868 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 339:
-#line 2356 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2506 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7727,11 +7877,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D);
#endif
}
-#line 7731 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7881 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 340:
-#line 2364 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2514 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7740,11 +7890,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D);
#endif
}
-#line 7744 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7894 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 341:
-#line 2372 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2522 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7753,11 +7903,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd3D);
#endif
}
-#line 7757 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 342:
-#line 2380 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2530 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7766,11 +7916,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube);
#endif
}
-#line 7770 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 343:
-#line 2388 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2538 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7779,11 +7929,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true);
#endif
}
-#line 7783 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7933 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 344:
-#line 2396 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2546 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7792,11 +7942,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true);
#endif
}
-#line 7796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 345:
-#line 2404 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2554 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7805,11 +7955,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true);
#endif
}
-#line 7809 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7959 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 346:
-#line 2412 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2562 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7818,11 +7968,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true);
#endif
}
-#line 7822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 347:
-#line 2420 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2570 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7831,11 +7981,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true);
#endif
}
-#line 7835 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7985 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 348:
-#line 2428 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2578 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7844,11 +7994,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true);
#endif
}
-#line 7848 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 7998 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 349:
-#line 2436 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2586 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7857,11 +8007,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true);
#endif
}
-#line 7861 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8011 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 350:
-#line 2444 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7870,11 +8020,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true);
#endif
}
-#line 7874 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8024 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 351:
-#line 2452 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -7883,171 +8033,171 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true);
#endif
}
-#line 7887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 352:
-#line 2460 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2610 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd1D);
}
-#line 7897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 353:
-#line 2465 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2615 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd2D);
}
-#line 7907 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 354:
-#line 2470 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2620 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, Esd3D);
}
-#line 7917 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8067 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 355:
-#line 2475 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2625 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdCube);
}
-#line 7927 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8077 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 356:
-#line 2480 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2630 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7937 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8087 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 357:
-#line 2485 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2635 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7947 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8097 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 358:
-#line 2490 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2640 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 7957 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8107 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 359:
-#line 2495 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2645 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd1D);
}
-#line 7967 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8117 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 360:
-#line 2500 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2650 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd2D);
}
-#line 7977 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8127 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 361:
-#line 2505 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2655 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, Esd3D);
}
-#line 7987 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8137 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 362:
-#line 2510 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2660 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdCube);
}
-#line 7997 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 363:
-#line 2515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2665 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8007 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 364:
-#line 2520 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2670 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8167 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 365:
-#line 2525 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2675 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8177 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 366:
-#line 2530 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2680 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdRect);
}
-#line 8037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8187 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 367:
-#line 2535 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2685 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8197 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 368:
-#line 2540 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2690 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -8056,11 +8206,11 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect);
#endif
}
-#line 8060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 369:
-#line 2548 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2698 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -8069,41 +8219,41 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true);
#endif
}
-#line 8073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 370:
-#line 2556 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2706 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdRect);
}
-#line 8083 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 371:
-#line 2561 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2711 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdRect);
}
-#line 8093 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8243 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 372:
-#line 2566 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtFloat, EsdBuffer);
}
-#line 8103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8253 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 373:
-#line 2571 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2721 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -8112,41 +8262,41 @@
(yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer);
#endif
}
-#line 8116 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8266 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 374:
-#line 2579 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2729 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtInt, EsdBuffer);
}
-#line 8126 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8276 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 375:
-#line 2584 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2734 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.set(EbtUint, EsdBuffer);
}
-#line 8136 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8286 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 376:
-#line 2589 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2739 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8296 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 377:
-#line 2594 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2744 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -8155,41 +8305,41 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true);
#endif
}
-#line 8159 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 378:
-#line 2602 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2752 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8169 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8319 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 379:
-#line 2607 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2757 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8179 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8329 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 380:
-#line 2612 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2762 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8339 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 381:
-#line 2617 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2767 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel());
@@ -8198,61 +8348,61 @@
(yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true);
#endif
}
-#line 8202 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8352 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 382:
-#line 2625 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2775 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8212 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8362 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 383:
-#line 2630 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2780 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8222 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8372 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 384:
-#line 2635 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2785 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(false);
}
-#line 8232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 385:
-#line 2640 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2790 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setPureSampler(true);
}
-#line 8242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 386:
-#line 2645 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2795 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D);
}
-#line 8252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8402 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 387:
-#line 2650 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2800 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8261,21 +8411,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D);
#endif
}
-#line 8265 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8415 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 388:
-#line 2658 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2808 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D);
}
-#line 8275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8425 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 389:
-#line 2663 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2813 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8284,21 +8434,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D);
#endif
}
-#line 8288 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8438 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 390:
-#line 2671 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2821 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D);
}
-#line 8298 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8448 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 391:
-#line 2676 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2826 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8307,21 +8457,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D);
#endif
}
-#line 8311 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8461 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 392:
-#line 2684 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube);
}
-#line 8321 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8471 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 393:
-#line 2689 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2839 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8330,21 +8480,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube);
#endif
}
-#line 8334 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8484 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 394:
-#line 2697 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2847 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8344 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8494 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 395:
-#line 2702 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2852 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8353,21 +8503,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true);
#endif
}
-#line 8357 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8507 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 396:
-#line 2710 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2860 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8367 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8517 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 397:
-#line 2715 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8376,21 +8526,21 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true);
#endif
}
-#line 8380 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8530 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 398:
-#line 2723 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2873 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8390 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 399:
-#line 2728 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2878 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8399,161 +8549,161 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true);
#endif
}
-#line 8403 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 400:
-#line 2736 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2886 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd1D);
}
-#line 8413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8563 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 401:
-#line 2741 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2891 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd2D);
}
-#line 8423 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 402:
-#line 2746 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2896 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, Esd3D);
}
-#line 8433 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8583 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 403:
-#line 2751 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2901 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdCube);
}
-#line 8443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8593 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 404:
-#line 2756 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2906 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8453 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8603 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 405:
-#line 2761 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2911 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8613 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 406:
-#line 2766 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2916 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8473 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8623 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 407:
-#line 2771 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2921 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd1D);
}
-#line 8483 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8633 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 408:
-#line 2776 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2926 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd2D);
}
-#line 8493 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8643 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 409:
-#line 2781 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2931 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, Esd3D);
}
-#line 8503 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 410:
-#line 2786 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2936 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdCube);
}
-#line 8513 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8663 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 411:
-#line 2791 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2941 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8523 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8673 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 412:
-#line 2796 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2946 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8533 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8683 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 413:
-#line 2801 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2951 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8543 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8693 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 414:
-#line 2806 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2956 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect);
}
-#line 8553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 415:
-#line 2811 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2961 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8562,41 +8712,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect);
#endif
}
-#line 8566 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8716 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 416:
-#line 2819 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2969 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdRect);
}
-#line 8576 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8726 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 417:
-#line 2824 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2974 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdRect);
}
-#line 8586 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 418:
-#line 2829 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2979 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer);
}
-#line 8596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 419:
-#line 2834 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2984 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8605,41 +8755,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer);
#endif
}
-#line 8609 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8759 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 420:
-#line 2842 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2992 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer);
}
-#line 8619 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 421:
-#line 2847 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 2997 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer);
}
-#line 8629 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8779 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 422:
-#line 2852 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3002 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8639 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8789 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 423:
-#line 2857 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3007 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8648,41 +8798,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true);
#endif
}
-#line 8652 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 424:
-#line 2865 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3015 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8662 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 425:
-#line 2870 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3020 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8672 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8822 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 426:
-#line 2875 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3025 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8682 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8832 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 427:
-#line 2880 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3030 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel());
@@ -8691,41 +8841,41 @@
(yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true);
#endif
}
-#line 8695 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8845 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 428:
-#line 2888 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3038 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8705 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8855 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 429:
-#line 2893 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3043 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8715 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8865 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 430:
-#line 2898 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3048 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd1D);
}
-#line 8725 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8875 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 431:
-#line 2903 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3053 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8734,41 +8884,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D);
#endif
}
-#line 8738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8888 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 432:
-#line 2911 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3061 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd1D);
}
-#line 8748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 433:
-#line 2916 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3066 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd1D);
}
-#line 8758 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 434:
-#line 2921 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3071 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd2D);
}
-#line 8768 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8918 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 435:
-#line 2926 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3076 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8777,41 +8927,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D);
#endif
}
-#line 8781 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8931 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 436:
-#line 2934 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3084 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd2D);
}
-#line 8791 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8941 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 437:
-#line 2939 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3089 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd2D);
}
-#line 8801 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8951 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 438:
-#line 2944 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3094 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, Esd3D);
}
-#line 8811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 439:
-#line 2949 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3099 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8820,41 +8970,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D);
#endif
}
-#line 8824 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8974 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 440:
-#line 2957 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3107 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, Esd3D);
}
-#line 8834 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8984 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 441:
-#line 2962 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3112 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, Esd3D);
}
-#line 8844 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 8994 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 442:
-#line 2967 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3117 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdRect);
}
-#line 8854 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9004 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 443:
-#line 2972 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3122 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8863,41 +9013,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect);
#endif
}
-#line 8867 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9017 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 444:
-#line 2980 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3130 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdRect);
}
-#line 8877 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9027 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 445:
-#line 2985 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3135 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdRect);
}
-#line 8887 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9037 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 446:
-#line 2990 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3140 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdCube);
}
-#line 8897 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9047 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 447:
-#line 2995 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3145 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8906,41 +9056,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube);
#endif
}
-#line 8910 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9060 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 448:
-#line 3003 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3153 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdCube);
}
-#line 8920 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9070 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 449:
-#line 3008 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3158 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdCube);
}
-#line 8930 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9080 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 450:
-#line 3013 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3163 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer);
}
-#line 8940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 451:
-#line 3018 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3168 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8949,41 +9099,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer);
#endif
}
-#line 8953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9103 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 452:
-#line 3026 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3176 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer);
}
-#line 8963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9113 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 453:
-#line 3031 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3181 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
(yyval.interm.type).basicType = EbtSampler;
(yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer);
}
-#line 8973 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9123 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 454:
-#line 3036 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3186 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 8983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9133 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 455:
-#line 3041 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3191 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -8992,41 +9142,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true);
#endif
}
-#line 8996 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9146 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 456:
-#line 3049 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3199 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9006 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9156 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 457:
-#line 3054 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3204 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9016 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9166 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 458:
-#line 3059 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3209 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9026 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 459:
-#line 3064 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3214 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -9035,41 +9185,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true);
#endif
}
-#line 9039 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9189 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 460:
-#line 3072 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3222 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 461:
-#line 3077 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3227 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9059 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 462:
-#line 3082 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3232 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9069 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9219 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 463:
-#line 3087 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3237 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -9078,41 +9228,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true);
#endif
}
-#line 9082 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 464:
-#line 3095 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3245 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9092 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 465:
-#line 3100 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3250 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9102 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9252 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 466:
-#line 3105 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3255 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9112 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9262 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 467:
-#line 3110 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3260 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -9121,41 +9271,41 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true);
#endif
}
-#line 9125 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9275 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 468:
-#line 3118 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3268 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9285 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 469:
-#line 3123 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9145 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9295 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 470:
-#line 3128 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3278 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9155 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9305 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 471:
-#line 3133 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3283 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel());
@@ -9164,75 +9314,75 @@
(yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true);
#endif
}
-#line 9168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9318 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 472:
-#line 3141 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3291 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9178 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 473:
-#line 3146 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3296 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9188 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9338 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 474:
-#line 3151 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3301 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // 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 9199 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9349 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 475:
-#line 3157 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3307 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ // 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 9210 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9360 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 476:
-#line 3163 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3313 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9221 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9371 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 477:
-#line 3169 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3319 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9382 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 478:
-#line 3175 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3325 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -9242,11 +9392,11 @@
(yyval.interm.type).sampler.setSubpass(EbtFloat16);
#endif
}
-#line 9246 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9396 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 479:
-#line 3184 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3334 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
#ifdef AMD_EXTENSIONS
parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel());
@@ -9256,76 +9406,78 @@
(yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
#endif
}
-#line 9260 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9410 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 480:
-#line 3193 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3343 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 481:
-#line 3199 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3349 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9282 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9432 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 482:
-#line 3205 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3355 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9293 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9443 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 483:
-#line 3211 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3361 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9304 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9454 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 484:
-#line 3217 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3367 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
+#ifndef GLSLANG_WEB
parseContext.fcoopmatCheck((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;
+#endif
}
-#line 9315 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9467 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 485:
-#line 3223 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3375 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9325 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9477 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 486:
-#line 3228 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3380 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
//
// This is for user defined type names. The lexical phase looked up the
@@ -9339,47 +9491,47 @@
} else
parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
}
-#line 9343 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9495 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 487:
-#line 3244 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3396 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9353 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9505 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 488:
-#line 3249 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3401 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9363 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9515 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 489:
-#line 3254 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9373 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9525 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 490:
-#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 9379 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9531 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 491:
-#line 3262 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -9391,17 +9543,17 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 9395 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9547 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 492:
-#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3425 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 9401 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9553 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 493:
-#line 3273 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3425 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
(yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -9409,19 +9561,19 @@
(yyval.interm.type).userDef = structure;
--parseContext.structNestingLevel;
}
-#line 9413 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9565 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 494:
-#line 3283 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3435 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[0].interm.typeList);
}
-#line 9421 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9573 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 495:
-#line 3286 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3438 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -9432,11 +9584,11 @@
(yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
}
}
-#line 9436 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9588 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 496:
-#line 3299 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3451 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9459,11 +9611,11 @@
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 9463 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9615 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 497:
-#line 3321 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3473 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.type).arraySizes) {
parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type");
@@ -9488,38 +9640,38 @@
(*(yyval.interm.typeList))[i].type->shallowCopy(type);
}
}
-#line 9492 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 498:
-#line 3348 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3500 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList) = new TTypeList;
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 9501 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9653 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 499:
-#line 3352 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
}
-#line 9509 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9661 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 500:
-#line 3358 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3510 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 9519 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9671 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 501:
-#line 3363 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3515 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
@@ -9528,235 +9680,235 @@
(yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
(yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
}
-#line 9532 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9684 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 502:
-#line 3374 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3526 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 9540 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9692 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 503:
-#line 3377 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3529 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9551 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9703 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 504:
-#line 3383 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3535 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9562 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9714 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 505:
-#line 3392 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3544 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
}
-#line 9570 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9722 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 506:
-#line 3395 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3547 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
}
-#line 9578 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9730 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 507:
-#line 3401 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3553 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9584 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9736 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 508:
-#line 3405 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3557 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9590 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9742 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 509:
-#line 3406 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3558 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9596 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9748 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 510:
-#line 3412 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3564 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9602 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9754 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 511:
-#line 3413 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3565 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9608 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9760 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 512:
-#line 3414 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3566 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9614 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9766 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 513:
-#line 3415 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3567 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9620 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9772 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 514:
-#line 3416 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3568 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9626 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9778 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 515:
-#line 3417 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3569 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9632 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9784 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 516:
-#line 3418 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3570 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9638 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9790 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 517:
-#line 3419 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3571 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9644 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9796 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 518:
-#line 3423 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3575 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9654 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9806 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 519:
-#line 3431 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3583 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 9660 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9812 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 520:
-#line 3432 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3584 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
}
-#line 9669 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9821 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 521:
-#line 3436 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3588 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
}
-#line 9678 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9830 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 522:
-#line 3440 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3592 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate())
(yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence);
(yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode);
}
-#line 9688 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9840 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 523:
-#line 3448 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3600 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9694 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9846 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 524:
-#line 3449 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3601 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 9700 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9852 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 525:
-#line 3453 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3605 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.controlFlowNestingLevel;
}
-#line 9708 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9860 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 526:
-#line 3456 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3608 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9717 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9869 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 527:
-#line 3460 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3612 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 9727 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 528:
-#line 3465 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3617 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9738 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9890 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 529:
-#line 3474 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3626 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 9746 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9898 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 530:
-#line 3477 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3629 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9756 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9908 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 531:
-#line 3485 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3637 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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 ||
@@ -9765,11 +9917,11 @@
(yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case
}
}
-#line 9769 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9921 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 532:
-#line 3493 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3645 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase ||
(yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) {
@@ -9778,76 +9930,76 @@
} else
(yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
}
-#line 9782 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9934 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 533:
-#line 3504 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3656 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = 0; }
-#line 9788 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9940 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 534:
-#line 3505 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3657 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{ (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 9794 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9946 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 535:
-#line 3509 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3661 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9802 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9954 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 536:
-#line 3512 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3664 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9811 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9963 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 537:
-#line 3518 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3670 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 9820 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9972 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 538:
-#line 3525 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3677 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
}
-#line 9829 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9981 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 539:
-#line 3529 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3681 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 9838 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9990 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 540:
-#line 3537 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
}
-#line 9847 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 9999 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 541:
-#line 3541 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3693 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
@@ -9858,28 +10010,28 @@
else
(yyval.interm.intermTypedNode) = 0;
}
-#line 9862 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10014 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 542:
-#line 3554 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3706 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9870 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10022 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 543:
-#line 3557 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3709 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9879 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10031 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 544:
-#line 3563 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3715 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// start new switch sequence on the switch stack
++parseContext.controlFlowNestingLevel;
@@ -9888,11 +10040,11 @@
parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
parseContext.symbolTable.push();
}
-#line 9892 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10044 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 545:
-#line 3571 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3723 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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();
@@ -9902,27 +10054,27 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 9906 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10058 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 546:
-#line 3583 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3735 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
}
-#line 9914 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10066 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 547:
-#line 3586 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3738 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9922 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10074 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 548:
-#line 3592 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3744 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -9935,11 +10087,11 @@
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
}
}
-#line 9939 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10091 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 549:
-#line 3604 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3756 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = 0;
if (parseContext.switchLevel.size() == 0)
@@ -9949,28 +10101,28 @@
else
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
}
-#line 9953 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10105 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 550:
-#line 3616 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3768 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9961 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10113 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 551:
-#line 3619 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3771 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 9970 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10122 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 552:
-#line 3625 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3777 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -9979,11 +10131,11 @@
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 9983 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10135 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 553:
-#line 3633 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3785 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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);
@@ -9991,21 +10143,21 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 9995 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10147 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 554:
-#line 3640 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3792 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 10005 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 555:
-#line 3645 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3797 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
if (! parseContext.limits.whileLoops)
parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -10017,22 +10169,22 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 10021 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10173 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 556:
-#line 3656 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3808 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.push();
++parseContext.loopNestingLevel;
++parseContext.statementNestingLevel;
++parseContext.controlFlowNestingLevel;
}
-#line 10032 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 557:
-#line 3662 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3814 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
(yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -10045,81 +10197,81 @@
--parseContext.statementNestingLevel;
--parseContext.controlFlowNestingLevel;
}
-#line 10049 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10201 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 558:
-#line 3677 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3829 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 10057 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10209 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 559:
-#line 3680 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3832 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 10065 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10217 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 560:
-#line 3686 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3838 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
}
-#line 10073 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10225 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 561:
-#line 3689 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3841 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermTypedNode) = 0;
}
-#line 10081 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10233 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 562:
-#line 3695 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3847 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = 0;
}
-#line 10090 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10242 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 563:
-#line 3699 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3851 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
(yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
}
-#line 10099 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10251 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 564:
-#line 3706 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3858 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 10109 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10261 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 565:
-#line 3711 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3863 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 10119 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10271 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 566:
-#line 3716 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3868 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -10127,83 +10279,83 @@
if (parseContext.inMain)
parseContext.postEntryPointReturn = true;
}
-#line 10131 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10283 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 567:
-#line 3723 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3875 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
}
-#line 10139 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10291 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 568:
-#line 3726 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3878 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
(yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
}
-#line 10148 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10300 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 569:
-#line 3735 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3887 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
}
-#line 10157 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10309 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 570:
-#line 3739 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3891 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 10168 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10320 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 571:
-#line 3748 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3900 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 10176 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10328 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 572:
-#line 3751 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3903 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
}
-#line 10184 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10336 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 573:
-#line 3754 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3906 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
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 10194 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10346 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 574:
-#line 3762 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3914 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(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);
}
-#line 10203 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10355 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 575:
-#line 3766 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3918 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
// May be best done as post process phase on intermediate code
if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -10219,52 +10371,52 @@
(yyval.interm.intermNode)->getAsAggregate()->setDebug(parseContext.contextPragma.debug);
(yyval.interm.intermNode)->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable);
}
-#line 10223 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10375 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 576:
-#line 3784 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3936 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = (yyvsp[-2].interm.attributes);
parseContext.requireExtensions((yyvsp[-4].lex).loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
}
-#line 10232 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10384 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 577:
-#line 3790 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3942 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = (yyvsp[0].interm.attributes);
}
-#line 10240 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10392 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 578:
-#line 3793 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3945 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
}
-#line 10248 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10400 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 579:
-#line 3798 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3950 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
}
-#line 10256 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10408 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
case 580:
-#line 3801 "MachineIndependent/glslang.y" /* yacc.c:1646 */
+#line 3953 "MachineIndependent/glslang.y" /* yacc.c:1646 */
{
(yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
}
-#line 10264 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10416 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
break;
-#line 10268 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
+#line 10420 "MachineIndependent/glslang_tab.cpp" /* yacc.c:1646 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -10492,5 +10644,5 @@
#endif
return yyresult;
}
-#line 3805 "MachineIndependent/glslang.y" /* yacc.c:1906 */
+#line 3957 "MachineIndependent/glslang.y" /* yacc.c:1906 */
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 3ca3a80..fbfede0 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -35,6 +35,8 @@
// POSSIBILITY OF SUCH DAMAGE.
//
+#ifndef GLSLANG_WEB
+
#include "localintermediate.h"
#include "../Include/InfoSink.h"
@@ -174,7 +176,7 @@
case EOpIndexIndirect: out.debug << "indirect index"; break;
case EOpIndexDirectStruct:
{
- bool reference = node->getLeft()->getType().getBasicType() == EbtReference;
+ bool reference = node->getLeft()->getType().isReference();
const TTypeList *members = reference ? node->getLeft()->getType().getReferentType()->getStruct() : node->getLeft()->getType().getStruct();
out.debug << (*members)[node->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst()].type->getFieldName();
out.debug << ": direct index for structure"; break;
@@ -615,7 +617,6 @@
case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break;
case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break;
-#ifdef NV_EXTENSIONS
case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break;
case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break;
case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break;
@@ -638,7 +639,6 @@
case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break;
case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break;
case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break;
-#endif
case EOpClip: out.debug << "clip"; break;
case EOpIsFinite: out.debug << "isfinite"; break;
@@ -648,7 +648,6 @@
case EOpSparseTexelsResident: out.debug << "sparseTexelsResident"; break;
-#ifdef AMD_EXTENSIONS
case EOpMinInvocations: out.debug << "minInvocations"; break;
case EOpMaxInvocations: out.debug << "maxInvocations"; break;
case EOpAddInvocations: out.debug << "addInvocations"; break;
@@ -677,7 +676,6 @@
case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break;
case EOpCubeFaceCoord: out.debug << "cubeFaceCoord"; break;
-#endif
case EOpSubpassLoad: out.debug << "subpassLoad"; break;
case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
@@ -863,7 +861,6 @@
case EOpReadInvocation: out.debug << "readInvocation"; break;
-#ifdef AMD_EXTENSIONS
case EOpSwizzleInvocations: out.debug << "swizzleInvocations"; break;
case EOpSwizzleInvocationsMasked: out.debug << "swizzleInvocationsMasked"; break;
case EOpWriteInvocation: out.debug << "writeInvocation"; break;
@@ -871,9 +868,7 @@
case EOpMin3: out.debug << "min3"; break;
case EOpMax3: out.debug << "max3"; break;
case EOpMid3: out.debug << "mid3"; break;
-
case EOpTime: out.debug << "time"; break;
-#endif
case EOpAtomicAdd: out.debug << "AtomicAdd"; break;
case EOpAtomicMin: out.debug << "AtomicMin"; break;
@@ -910,10 +905,8 @@
case EOpImageAtomicCompSwap: out.debug << "imageAtomicCompSwap"; break;
case EOpImageAtomicLoad: out.debug << "imageAtomicLoad"; break;
case EOpImageAtomicStore: out.debug << "imageAtomicStore"; break;
-#ifdef AMD_EXTENSIONS
case EOpImageLoadLod: out.debug << "imageLoadLod"; break;
case EOpImageStoreLod: out.debug << "imageStoreLod"; break;
-#endif
case EOpTextureQuerySize: out.debug << "textureSize"; break;
case EOpTextureQueryLod: out.debug << "textureQueryLod"; break;
@@ -940,11 +933,9 @@
case EOpTextureOffsetClamp: out.debug << "textureOffsetClamp"; break;
case EOpTextureGradClamp: out.debug << "textureGradClamp"; break;
case EOpTextureGradOffsetClamp: out.debug << "textureGradOffsetClamp"; break;
-#ifdef AMD_EXTENSIONS
case EOpTextureGatherLod: out.debug << "textureGatherLod"; break;
case EOpTextureGatherLodOffset: out.debug << "textureGatherLodOffset"; break;
case EOpTextureGatherLodOffsets: out.debug << "textureGatherLodOffsets"; break;
-#endif
case EOpSparseTexture: out.debug << "sparseTexture"; break;
case EOpSparseTextureOffset: out.debug << "sparseTextureOffset"; break;
@@ -962,19 +953,15 @@
case EOpSparseTextureOffsetClamp: out.debug << "sparseTextureOffsetClamp"; break;
case EOpSparseTextureGradClamp: out.debug << "sparseTextureGradClamp"; break;
case EOpSparseTextureGradOffsetClamp: out.debug << "sparseTextureGradOffsetClam"; break;
-#ifdef AMD_EXTENSIONS
case EOpSparseTextureGatherLod: out.debug << "sparseTextureGatherLod"; break;
case EOpSparseTextureGatherLodOffset: out.debug << "sparseTextureGatherLodOffset"; break;
case EOpSparseTextureGatherLodOffsets: out.debug << "sparseTextureGatherLodOffsets"; break;
case EOpSparseImageLoadLod: out.debug << "sparseImageLoadLod"; break;
-#endif
-#ifdef NV_EXTENSIONS
case EOpImageSampleFootprintNV: out.debug << "imageSampleFootprintNV"; break;
case EOpImageSampleFootprintClampNV: out.debug << "imageSampleFootprintClampNV"; break;
case EOpImageSampleFootprintLodNV: out.debug << "imageSampleFootprintLodNV"; break;
case EOpImageSampleFootprintGradNV: out.debug << "imageSampleFootprintGradNV"; break;
case EOpImageSampleFootprintGradClampNV: out.debug << "mageSampleFootprintGradClampNV"; break;
-#endif
case EOpAddCarry: out.debug << "addCarry"; break;
case EOpSubBorrow: out.debug << "subBorrow"; break;
case EOpUMulExtended: out.debug << "uMulExtended"; break;
@@ -988,9 +975,7 @@
case EOpInterpolateAtSample: out.debug << "interpolateAtSample"; break;
case EOpInterpolateAtOffset: out.debug << "interpolateAtOffset"; break;
-#ifdef AMD_EXTENSIONS
case EOpInterpolateAtVertex: out.debug << "interpolateAtVertex"; break;
-#endif
case EOpSinCos: out.debug << "sincos"; break;
case EOpGenMul: out.debug << "mul"; break;
@@ -1057,7 +1042,6 @@
case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break;
case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break;
-#ifdef NV_EXTENSIONS
case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break;
case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break;
case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break;
@@ -1080,19 +1064,16 @@
case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break;
case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break;
case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break;
-#endif
case EOpSubpassLoad: out.debug << "subpassLoad"; break;
case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
-#ifdef NV_EXTENSIONS
case EOpTraceNV: out.debug << "traceNV"; break;
case EOpReportIntersectionNV: out.debug << "reportIntersectionNV"; break;
case EOpIgnoreIntersectionNV: out.debug << "ignoreIntersectionNV"; break;
case EOpTerminateRayNV: out.debug << "terminateRayNV"; break;
case EOpExecuteCallableNV: out.debug << "executeCallableNV"; break;
case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break;
-#endif
case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix"; break;
case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break;
@@ -1509,16 +1490,13 @@
infoSink.debug << "interlock ordering = " << TQualifier::getInterlockOrderingString(interlockOrdering) << "\n";
break;
-#ifdef NV_EXTENSIONS
case EShLangMeshNV:
infoSink.debug << "max_vertices = " << vertices << "\n";
infoSink.debug << "max_primitives = " << primitives << "\n";
infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n";
// Fall through
-
case EShLangTaskNV:
// Fall through
-#endif
case EShLangCompute:
infoSink.debug << "local_size = (" << localSize[0] << ", " << localSize[1] << ", " << localSize[2] << ")\n";
{
@@ -1547,3 +1525,5 @@
}
} // end namespace glslang
+
+#endif // not GLSLANG_WEB
\ No newline at end of file
diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp
index 38cb11b..6edc080 100644
--- a/glslang/MachineIndependent/iomapper.cpp
+++ b/glslang/MachineIndependent/iomapper.cpp
@@ -75,7 +75,7 @@
target = &inputList;
else if (base->getQualifier().storage == EvqVaryingOut)
target = &outputList;
- else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().layoutPushConstant)
+ else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant())
target = &uniformList;
if (target) {
TVarEntryInfo ent = {base->getId(), base, ! traverseAll};
@@ -355,7 +355,7 @@
}
return;
}
- } else if (base->getQualifier().isUniformOrBuffer() && ! base->getQualifier().layoutPushConstant) {
+ } else if (base->getQualifier().isUniformOrBuffer() && ! base->getQualifier().isPushConstant()) {
// validate uniform type;
for (int i = 0; i < EShLangCount; i++) {
if (i != currentStage && outVarMaps[i] != nullptr) {
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 9f6c370..7def148 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -78,11 +78,15 @@
//
void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit)
{
+#ifndef GLSLANG_WEB
mergeCallGraphs(infoSink, unit);
mergeModes(infoSink, unit);
mergeTrees(infoSink, unit);
+#endif
}
+#ifndef GLSLANG_WEB
+
void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit)
{
if (unit.getNumEntryPoints() > 0) {
@@ -142,18 +146,13 @@
if (vertices == TQualifier::layoutNotSet)
vertices = unit.vertices;
else if (vertices != unit.vertices) {
- if (language == EShLangGeometry
-#ifdef NV_EXTENSIONS
- || language == EShLangMeshNV
-#endif
- )
+ if (language == EShLangGeometry || language == EShLangMeshNV)
error(infoSink, "Contradictory layout max_vertices values");
else if (language == EShLangTessControl)
error(infoSink, "Contradictory layout vertices values");
else
assert(0);
}
-#ifdef NV_EXTENSIONS
if (primitives == TQualifier::layoutNotSet)
primitives = unit.primitives;
else if (primitives != unit.primitives) {
@@ -162,7 +161,6 @@
else
assert(0);
}
-#endif
if (inputPrimitive == ElgNone)
inputPrimitive = unit.inputPrimitive;
@@ -224,21 +222,16 @@
xfbBuffers[b].implicitStride = std::max(xfbBuffers[b].implicitStride, unit.xfbBuffers[b].implicitStride);
if (unit.xfbBuffers[b].contains64BitType)
xfbBuffers[b].contains64BitType = true;
-#ifdef AMD_EXTENSIONS
if (unit.xfbBuffers[b].contains32BitType)
xfbBuffers[b].contains32BitType = true;
if (unit.xfbBuffers[b].contains16BitType)
xfbBuffers[b].contains16BitType = true;
-#endif
// TODO: 4.4 link: enhanced layouts: compare ranges
}
MERGE_TRUE(multiStream);
-
-#ifdef NV_EXTENSIONS
MERGE_TRUE(layoutOverrideCoverage);
MERGE_TRUE(geoPassthroughEXT);
-#endif
for (unsigned int i = 0; i < unit.shiftBinding.size(); ++i) {
if (unit.shiftBinding[i] > 0)
@@ -287,13 +280,8 @@
}
// Getting this far means we have two existing trees to merge...
-#ifdef NV_EXTENSIONS
numShaderRecordNVBlocks += unit.numShaderRecordNVBlocks;
-#endif
-
-#ifdef NV_EXTENSIONS
numTaskNVBlocks += unit.numTaskNVBlocks;
-#endif
// Get the top-level globals of each unit
TIntermSequence& globals = treeRoot->getAsAggregate()->getSequence();
@@ -493,6 +481,7 @@
for (int i = 0; i < (int)type.getStruct()->size(); ++i)
mergeImplicitArraySizes(*(*type.getStruct())[i].type, *(*unitType.getStruct())[i].type);
}
+#endif // not GLSLANG_WEB
//
// Compare two global objects from two compilation units and see if they match
@@ -547,7 +536,7 @@
symbol.getQualifier().flat != unitSymbol.getQualifier().flat ||
symbol.getQualifier().sample != unitSymbol.getQualifier().sample ||
symbol.getQualifier().patch != unitSymbol.getQualifier().patch ||
- symbol.getQualifier().nopersp != unitSymbol.getQualifier().nopersp) {
+ symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective()) {
error(infoSink, "Interpolation and auxiliary storage qualifiers must match:");
writeTypeComparison = true;
}
@@ -615,7 +604,7 @@
warn(infoSink, "Entry point not found");
}
- if (numPushConstants > 1)
+ if (getNumPushConstants() > 1)
error(infoSink, "Only one push_constant block is allowed per stage");
// recursion and missing body checking
@@ -629,6 +618,7 @@
if (invocations == TQualifier::layoutNotSet)
invocations = 1;
+#ifndef GLSLANG_WEB
if (inIoAccessed("gl_ClipDistance") && inIoAccessed("gl_ClipVertex"))
error(infoSink, "Can only use one of gl_ClipDistance or gl_ClipVertex (gl_ClipDistance is preferred)");
if (inIoAccessed("gl_CullDistance") && inIoAccessed("gl_ClipVertex"))
@@ -642,12 +632,10 @@
for (size_t b = 0; b < xfbBuffers.size(); ++b) {
if (xfbBuffers[b].contains64BitType)
RoundToPow2(xfbBuffers[b].implicitStride, 8);
-#ifdef AMD_EXTENSIONS
else if (xfbBuffers[b].contains32BitType)
RoundToPow2(xfbBuffers[b].implicitStride, 4);
else if (xfbBuffers[b].contains16BitType)
RoundToPow2(xfbBuffers[b].implicitStride, 2);
-#endif
// "It is a compile-time or link-time error to have
// any xfb_offset that overflows xfb_stride, whether stated on declarations before or after the xfb_stride, or
@@ -668,16 +656,11 @@
error(infoSink, "xfb_stride must be multiple of 8 for buffer holding a double or 64-bit integer:");
infoSink.info.prefix(EPrefixError);
infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n";
-#ifdef AMD_EXTENSIONS
} else if (xfbBuffers[b].contains32BitType && ! IsMultipleOfPow2(xfbBuffers[b].stride, 4)) {
-#else
- } else if (! IsMultipleOfPow2(xfbBuffers[b].stride, 4)) {
-#endif
error(infoSink, "xfb_stride must be multiple of 4:");
infoSink.info.prefix(EPrefixError);
infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n";
}
-#ifdef AMD_EXTENSIONS
// "If the buffer is capturing any
// outputs with half-precision or 16-bit integer components, the stride must be a multiple of 2"
else if (xfbBuffers[b].contains16BitType && ! IsMultipleOfPow2(xfbBuffers[b].stride, 2)) {
@@ -686,7 +669,6 @@
infoSink.info << " xfb_buffer " << (unsigned int)b << ", xfb_stride " << xfbBuffers[b].stride << "\n";
}
-#endif
// "The resulting stride (implicit or explicit), when divided by 4, must be less than or equal to the
// implementation-dependent constant gl_MaxTransformFeedbackInterleavedComponents."
if (xfbBuffers[b].stride > (unsigned int)(4 * resources.maxTransformFeedbackInterleavedComponents)) {
@@ -730,8 +712,6 @@
break;
case EShLangCompute:
break;
-
-#ifdef NV_EXTENSIONS
case EShLangRayGenNV:
case EShLangIntersectNV:
case EShLangAnyHitNV:
@@ -764,8 +744,6 @@
if (numTaskNVBlocks > 1)
error(infoSink, "Only one taskNV interface block is allowed per shader");
break;
-#endif
-
default:
error(infoSink, "Unknown Stage.");
break;
@@ -787,6 +765,7 @@
} finalLinkTraverser;
treeRoot->traverse(&finalLinkTraverser);
+#endif
}
//
@@ -1187,14 +1166,10 @@
// TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness
// TODO: are there valid cases of having an unsized array with a location? If so, running this code too early.
TType elementType(type, 0);
- if (type.isSizedArray()
-#ifdef NV_EXTENSIONS
- && !type.getQualifier().isPerView()
-#endif
- )
+ if (type.isSizedArray() && !type.getQualifier().isPerView())
return type.getOuterArraySize() * computeTypeLocationSize(elementType, stage);
else {
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
// unset perViewNV attributes for arrayed per-view outputs: "perviewNV vec4 v[MAX_VIEWS][3];"
elementType.getQualifier().perViewNV = false;
#endif
@@ -1273,6 +1248,7 @@
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.
@@ -1285,11 +1261,7 @@
TXfbBuffer& buffer = xfbBuffers[qualifier.layoutXfbBuffer];
// compute the range
-#ifdef AMD_EXTENSIONS
unsigned int size = computeTypeXfbSize(type, buffer.contains64BitType, buffer.contains32BitType, buffer.contains16BitType);
-#else
- unsigned int size = computeTypeXfbSize(type, buffer.contains64BitType);
-#endif
buffer.implicitStride = std::max(buffer.implicitStride, qualifier.layoutXfbOffset + size);
TRange range(qualifier.layoutXfbOffset, qualifier.layoutXfbOffset + size - 1);
@@ -1309,15 +1281,10 @@
// Recursively figure out how many bytes of xfb buffer are used by the given type.
// Return the size of type, in bytes.
// Sets contains64BitType to true if the type contains a 64-bit data type.
-#ifdef AMD_EXTENSIONS
// Sets contains32BitType to true if the type contains a 32-bit data type.
// Sets contains16BitType to true if the type contains a 16-bit data type.
// N.B. Caller must set contains64BitType, contains32BitType, and contains16BitType to false before calling.
unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains64BitType, bool& contains32BitType, bool& contains16BitType) const
-#else
-// N.B. Caller must set contains64BitType to false before calling.
-unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains64BitType) const
-#endif
{
// "...if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8,
// and the space taken in the buffer will be a multiple of 8.
@@ -1330,44 +1297,32 @@
// TODO: perf: this can be flattened by using getCumulativeArraySize(), and a deref that discards all arrayness
assert(type.isSizedArray());
TType elementType(type, 0);
-#ifdef AMD_EXTENSIONS
return type.getOuterArraySize() * computeTypeXfbSize(elementType, contains64BitType, contains16BitType, contains16BitType);
-#else
- return type.getOuterArraySize() * computeTypeXfbSize(elementType, contains64BitType);
-#endif
}
if (type.isStruct()) {
unsigned int size = 0;
bool structContains64BitType = false;
-#ifdef AMD_EXTENSIONS
bool structContains32BitType = false;
bool structContains16BitType = false;
-#endif
for (int member = 0; member < (int)type.getStruct()->size(); ++member) {
TType memberType(type, member);
// "... if applied to
// an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8,
// and the space taken in the buffer will be a multiple of 8."
bool memberContains64BitType = false;
-#ifdef AMD_EXTENSIONS
bool memberContains32BitType = false;
bool memberContains16BitType = false;
int memberSize = computeTypeXfbSize(memberType, memberContains64BitType, memberContains32BitType, memberContains16BitType);
-#else
- int memberSize = computeTypeXfbSize(memberType, memberContains64BitType);
-#endif
if (memberContains64BitType) {
structContains64BitType = true;
RoundToPow2(size, 8);
-#ifdef AMD_EXTENSIONS
} else if (memberContains32BitType) {
structContains32BitType = true;
RoundToPow2(size, 4);
} else if (memberContains16BitType) {
structContains16BitType = true;
RoundToPow2(size, 2);
-#endif
}
size += memberSize;
}
@@ -1375,14 +1330,12 @@
if (structContains64BitType) {
contains64BitType = true;
RoundToPow2(size, 8);
-#ifdef AMD_EXTENSIONS
} else if (structContains32BitType) {
contains32BitType = true;
RoundToPow2(size, 4);
} else if (structContains16BitType) {
contains16BitType = true;
RoundToPow2(size, 2);
-#endif
}
return size;
}
@@ -1402,7 +1355,6 @@
if (type.getBasicType() == EbtDouble || type.getBasicType() == EbtInt64 || type.getBasicType() == EbtUint64) {
contains64BitType = true;
return 8 * numComponents;
-#ifdef AMD_EXTENSIONS
} else if (type.getBasicType() == EbtFloat16 || type.getBasicType() == EbtInt16 || type.getBasicType() == EbtUint16) {
contains16BitType = true;
return 2 * numComponents;
@@ -1412,11 +1364,8 @@
contains32BitType = true;
return 4 * numComponents;
}
-#else
- } else
- return 4 * numComponents;
-#endif
}
+#endif // not GLSLANG_WEB
const int baseAlignmentVec4Std140 = 16;
@@ -1741,7 +1690,7 @@
int TIntermediate::computeBufferReferenceTypeSize(const TType& type)
{
- assert(type.getBasicType() == EbtReference);
+ assert(type.isReference());
int size = getBlockSize(*type.getReferentType());
int align = type.getBufferReferenceAlignment();
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index eb3e6fb..b2ac737 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -149,20 +149,14 @@
// Things that need to be tracked per xfb buffer.
struct TXfbBuffer {
-#ifdef AMD_EXTENSIONS
TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false),
contains32BitType(false), contains16BitType(false) { }
-#else
- TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false) { }
-#endif
std::vector<TRange> ranges; // byte offsets that have already been assigned
unsigned int stride;
unsigned int implicitStride;
bool contains64BitType;
-#ifdef AMD_EXTENSIONS
bool contains32BitType;
bool contains16BitType;
-#endif
};
// Track a set of strings describing how the module was processed.
@@ -217,7 +211,6 @@
class TSymbol;
class TVariable;
-#ifdef NV_EXTENSIONS
//
// Texture and Sampler transformation mode.
//
@@ -226,7 +219,6 @@
LayoutDerivativeGroupQuads, // derivative_group_quadsNV
LayoutDerivativeGroupLinear, // derivative_group_linearNV
};
-#endif
//
// Set of helper functions to help parse and build the tree.
@@ -248,7 +240,7 @@
postDepthCoverage(false), depthLayout(EldNone), depthReplacing(false),
hlslFunctionality1(false),
blendEquations(0), xfbMode(false), multiStream(false),
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
layoutOverrideCoverage(false),
geoPassthroughEXT(false),
numShaderRecordNVBlocks(0),
@@ -286,7 +278,11 @@
void setLimits(const TBuiltInResource& r) { resources = r; }
bool postProcess(TIntermNode*, EShLanguage);
+#ifdef GLSLANG_WEB
+ void output(TInfoSink&, bool tree) { }
+#else
void output(TInfoSink&, bool tree);
+#endif
void removeTree();
#ifdef ENABLE_HLSL
@@ -480,7 +476,12 @@
int getNumEntryPoints() const { return numEntryPoints; }
int getNumErrors() const { return numErrors; }
void addPushConstantCount() { ++numPushConstants; }
-#ifdef NV_EXTENSIONS
+#ifdef GLSLANG_WEB
+ int getNumPushConstants() const { return 0; }
+ void addShaderRecordNVCount() { }
+ void addTaskNVCount() { }
+#else
+ int getNumPushConstants() const { return numPushConstants; }
void addShaderRecordNVCount() { ++numShaderRecordNVBlocks; }
void addTaskNVCount() { ++numTaskNVBlocks; }
#endif
@@ -702,6 +703,7 @@
static int computeTypeLocationSize(const TType&, EShLanguage);
static int computeTypeUniformLocationSize(const TType&);
+#ifndef GLSLANG_WEB
bool setXfbBufferStride(int buffer, unsigned stride)
{
if (xfbBuffers[buffer].stride != TQualifier::layoutXfbStrideEnd)
@@ -711,9 +713,7 @@
}
unsigned getXfbStride(int buffer) const { return xfbBuffers[buffer].stride; }
int addXfbBufferOffset(const TType&);
-#ifdef AMD_EXTENSIONS
unsigned int computeTypeXfbSize(const TType&, bool& contains64BitType, bool& contains32BitType, bool& contains16BitType) const;
-#else
unsigned int computeTypeXfbSize(const TType&, bool& contains64BitType) const;
#endif
static int getBaseAlignmentScalar(const TType&, int& size);
@@ -727,7 +727,7 @@
static int computeBufferReferenceTypeSize(const TType&);
bool promote(TIntermOperator*);
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
void setLayoutOverrideCoverage() { layoutOverrideCoverage = true; }
bool getLayoutOverrideCoverage() const { return layoutOverrideCoverage; }
void setGeoPassthroughEXT() { geoPassthroughEXT = true; }
@@ -796,25 +796,27 @@
const char* const implicitCounterName;
// Certain explicit conversions are allowed conditionally
+#ifdef GLSLANG_WEB
+ bool getArithemeticInt8Enabled() const { return false; }
+ bool getArithemeticInt16Enabled() const { return false; }
+ bool getArithemeticFloat16Enabled() const { return false; }
+#else
bool getArithemeticInt8Enabled() const {
return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int8);
}
bool getArithemeticInt16Enabled() const {
return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-#ifdef AMD_EXTENSIONS
extensionRequested(E_GL_AMD_gpu_shader_int16) ||
-#endif
extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_int16);
}
bool getArithemeticFloat16Enabled() const {
return extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types) ||
-#ifdef AMD_EXTENSIONS
extensionRequested(E_GL_AMD_gpu_shader_half_float) ||
-#endif
extensionRequested(E_GL_EXT_shader_explicit_arithmetic_types_float16);
}
+#endif
protected:
TIntermSymbol* addSymbol(int Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&);
@@ -847,7 +849,15 @@
bool isConversionAllowed(TOperator op, TIntermTyped* node) const;
TIntermTyped* createConversion(TBasicType convertTo, TIntermTyped* node) const;
std::tuple<TBasicType, TBasicType> getConversionDestinatonType(TBasicType type0, TBasicType type1, TOperator op) const;
+#ifdef GLSLANG_WEB
+ bool extensionRequested(const char *extension) const { return false; }
+#else
+ // I think this function should go away.
+ // This data structure is just a log to pass on to back ends.
+ // Versioning and extensions are handled in Version.cpp, with a rich
+ // set of functions for querying stages, versions, extension enable/disabled, etc.
bool extensionRequested(const char *extension) const {return requestedExtensions.find(extension) != requestedExtensions.end();}
+#endif
static const char* getResourceName(TResourceType);
const EShLanguage language; // stage, known at construction time
@@ -891,7 +901,7 @@
std::vector<TXfbBuffer> xfbBuffers; // all the data we need to track per xfb buffer
bool multiStream;
-#ifdef NV_EXTENSIONS
+#ifndef GLSLANG_WEB
bool layoutOverrideCoverage;
bool geoPassthroughEXT;
int numShaderRecordNVBlocks;
diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h
index c7ab66e..8c96434 100755
--- a/glslang/MachineIndependent/parseVersions.h
+++ b/glslang/MachineIndependent/parseVersions.h
@@ -61,22 +61,55 @@
spvVersion(spvVersion), forwardCompatible(forwardCompatible),
intermediate(interm), messages(messages), numErrors(0), currentScanner(0) { }
virtual ~TParseVersions() { }
- virtual void initializeExtensionBehavior();
virtual void requireProfile(const TSourceLoc&, int queryProfiles, const char* featureDesc);
virtual void profileRequires(const TSourceLoc&, int queryProfiles, int minVersion, int numExtensions, const char* const extensions[], const char* featureDesc);
virtual void profileRequires(const TSourceLoc&, int queryProfiles, int minVersion, const char* const extension, const char* featureDesc);
virtual void requireStage(const TSourceLoc&, EShLanguageMask, const char* featureDesc);
virtual void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc);
+#ifdef GLSLANG_WEB
+ virtual void initializeExtensionBehavior() { }
+ virtual void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc) { }
+ virtual void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc) { }
+ virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[],
+ const char* featureDesc) { }
+ virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[],
+ const char* featureDesc) { }
+ virtual TExtensionBehavior getExtensionBehavior(const char*) { return EBhMissing; }
+ virtual bool extensionTurnedOn(const char* const extension) { return false; }
+ virtual bool extensionsTurnedOn(int numExtensions, const char* const extensions[]) { return false; }
+ virtual void updateExtensionBehavior(int line, const char* const extension, const char* behavior) { }
+ virtual void updateExtensionBehavior(const char* const extension, TExtensionBehavior) { }
+ virtual void checkExtensionStage(const TSourceLoc&, const char* const extension) { }
+ virtual void fullIntegerCheck(const TSourceLoc&, const char* op) { }
+ virtual void doubleCheck(const TSourceLoc&, const char* op) { }
+ virtual bool float16Arithmetic() { return false; }
+ virtual void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { }
+ virtual bool int16Arithmetic() { return false; }
+ virtual void requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { }
+ virtual bool int8Arithmetic() { return false; }
+ virtual void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { }
+ virtual void int64Check(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) { }
+#else
+ virtual void initializeExtensionBehavior();
virtual void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc);
virtual void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc);
- virtual void unimplemented(const TSourceLoc&, const char* featureDesc);
- virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc);
- virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc);
+ virtual void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[],
+ const char* featureDesc);
+ virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[],
+ const char* featureDesc);
virtual TExtensionBehavior getExtensionBehavior(const char*);
virtual bool extensionTurnedOn(const char* const extension);
virtual bool extensionsTurnedOn(int numExtensions, const char* const extensions[]);
virtual void updateExtensionBehavior(int line, const char* const extension, const char* behavior);
+ virtual void updateExtensionBehavior(const char* const extension, TExtensionBehavior);
+ virtual bool checkExtensionsRequested(const TSourceLoc&, int numExtensions, const char* const extensions[],
+ const char* featureDesc);
+ virtual void checkExtensionStage(const TSourceLoc&, const char* const extension);
virtual void fullIntegerCheck(const TSourceLoc&, const char* op);
+
+ virtual void unimplemented(const TSourceLoc&, const char* featureDesc);
virtual void doubleCheck(const TSourceLoc&, const char* op);
virtual void float16Check(const TSourceLoc&, const char* op, bool builtIn = false);
virtual void float16ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
@@ -88,23 +121,19 @@
virtual void int8ScalarVectorCheck(const TSourceLoc&, const char* op, bool builtIn = false);
virtual bool int8Arithmetic();
virtual void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc);
-#ifdef AMD_EXTENSIONS
virtual void float16OpaqueCheck(const TSourceLoc&, const char* op, bool builtIn = false);
-#endif
virtual void int64Check(const TSourceLoc&, const char* op, bool builtIn = false);
virtual void explicitInt8Check(const TSourceLoc&, const char* op, bool builtIn = false);
virtual void explicitInt16Check(const TSourceLoc&, const char* op, bool builtIn = false);
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);
+#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 bool checkExtensionsRequested(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc);
- virtual void updateExtensionBehavior(const char* const extension, TExtensionBehavior);
- virtual void checkExtensionStage(const TSourceLoc&, const char* const extension);
- virtual void fcoopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false);
virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken,
const char* szExtraInfoFormat, ...) = 0;
diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp
index c74e44f..68ccfdf 100755
--- a/glslang/MachineIndependent/preprocessor/Pp.cpp
+++ b/glslang/MachineIndependent/preprocessor/Pp.cpp
@@ -792,10 +792,8 @@
case PpAtomConstUint:
case PpAtomConstInt64:
case PpAtomConstUint64:
-#ifdef AMD_EXTENSIONS
case PpAtomConstInt16:
case PpAtomConstUint16:
-#endif
case PpAtomConstFloat:
case PpAtomConstDouble:
case PpAtomConstFloat16:
@@ -963,9 +961,11 @@
case PpAtomLine:
token = CPPline(ppToken);
break;
+#ifndef GLSLANG_WEB
case PpAtomPragma:
token = CPPpragma(ppToken);
break;
+#endif
case PpAtomUndef:
token = CPPundef(ppToken);
break;
diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index 4c8ee3d..4112472 100755
--- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -259,6 +259,7 @@
// 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");
@@ -297,11 +298,15 @@
saveName(ch);
isFloat16 = true;
}
- } else if (ch == 'f' || ch == 'F') {
+ } 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);
@@ -470,9 +475,7 @@
static const int Num_Int64_Extensions = sizeof(Int64_Extensions) / sizeof(Int64_Extensions[0]);
static const char* const Int16_Extensions[] = {
-#ifdef AMD_EXTENSIONS
E_GL_AMD_gpu_shader_int16,
-#endif
E_GL_EXT_shader_explicit_arithmetic_types,
E_GL_EXT_shader_explicit_arithmetic_types_int16 };
static const int Num_Int16_Extensions = sizeof(Int16_Extensions) / sizeof(Int16_Extensions[0]);
@@ -581,6 +584,7 @@
ppToken->name[len++] = (char)ch;
isUnsigned = true;
+#ifndef GLSLANG_WEB
int nextCh = getch();
if (nextCh == 'l' || nextCh == 'L') {
if (len < MaxTokenLength)
@@ -589,7 +593,6 @@
} else
ungetch();
-#ifdef AMD_EXTENSIONS
nextCh = getch();
if ((nextCh == 's' || nextCh == 'S') &&
pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
@@ -598,12 +601,10 @@
isInt16 = true;
} else
ungetch();
-#endif
} else if (ch == 'l' || ch == 'L') {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt64 = true;
-#ifdef AMD_EXTENSIONS
} else if ((ch == 's' || ch == 'S') &&
pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
if (len < MaxTokenLength)
@@ -614,6 +615,7 @@
ungetch();
ppToken->name[len] = '\0';
+#ifndef GLSLANG_WEB
if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
if (pp->ifdepth == 0) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
@@ -634,7 +636,9 @@
}
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
- } else {
+ } else
+#endif
+ {
if (ival > 0xffffffffu && !AlreadyComplained)
pp->parseContext.ppError(ppToken->loc, "hexadecimal literal too big", "", "");
ppToken->ival = (int)ival;
@@ -699,7 +703,7 @@
} else
ungetch();
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
nextCh = getch();
if ((nextCh == 's' || nextCh == 'S') &&
pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
@@ -708,12 +712,10 @@
isInt16 = true;
} else
ungetch();
-#endif
} else if (ch == 'l' || ch == 'L') {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt64 = true;
-#ifdef AMD_EXTENSIONS
} else if ((ch == 's' || ch == 'S') &&
pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
if (len < MaxTokenLength)
@@ -730,6 +732,7 @@
if (octalOverflow)
pp->parseContext.ppError(ppToken->loc, "octal literal too big", "", "");
+#ifndef GLSLANG_WEB
if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
if (pp->ifdepth == 0) {
pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile,
@@ -750,7 +753,9 @@
}
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16;
- } else {
+ } else
+#endif
+ {
ppToken->ival = (int)ival;
return isUnsigned ? PpAtomConstUint : PpAtomConstInt;
}
@@ -790,7 +795,7 @@
} else
ungetch();
-#ifdef AMD_EXTENSIONS
+#ifndef GLSLANG_WEB
nextCh = getch();
if ((nextCh == 's' || nextCh == 'S') &&
pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
@@ -799,12 +804,10 @@
isInt16 = true;
} else
ungetch();
-#endif
} else if (ch == 'l' || ch == 'L') {
if (len < MaxTokenLength)
ppToken->name[len++] = (char)ch;
isInt64 = true;
-#ifdef AMD_EXTENSIONS
} else if ((ch == 's' || ch == 'S') &&
pp->parseContext.intermediate.getSource() == EShSourceGlsl) {
if (len < MaxTokenLength)
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index b24a4a1..35aa32e 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -41,9 +41,7 @@
using CompileToAstTest = GlslangTest<::testing::TestWithParam<std::string>>;
-#ifdef NV_EXTENSIONS
using CompileToAstTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
-#endif
TEST_P(CompileToAstTest, FromFile)
{
@@ -52,7 +50,6 @@
Target::AST);
}
-#ifdef NV_EXTENSIONS
// Compiling GLSL to SPIR-V under OpenGL semantics (NV extensions enabled).
TEST_P(CompileToAstTestNV, FromFile)
{
@@ -60,7 +57,6 @@
Source::GLSL, Semantics::OpenGL, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
Target::AST);
}
-#endif
// clang-format off
INSTANTIATE_TEST_CASE_P(
@@ -281,7 +277,6 @@
FileNameAsCustomTestSuffix
);
-#ifdef NV_EXTENSIONS
INSTANTIATE_TEST_CASE_P(
Glsl, CompileToAstTestNV,
::testing::ValuesIn(std::vector<std::string>({
@@ -289,7 +284,6 @@
})),
FileNameAsCustomTestSuffix
);
-#endif
// clang-format on
} // anonymous namespace
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 752befb..cc564b3 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -72,12 +72,8 @@
using VulkanAstSemantics = GlslangTest<::testing::TestWithParam<std::string>>;
using HlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
using GlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
-#ifdef AMD_EXTENSIONS
using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam<std::string>>;
-#endif
-#ifdef NV_EXTENSIONS
using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
-#endif
using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>;
// Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
@@ -179,7 +175,6 @@
GetParam().flattenUniforms);
}
-#ifdef AMD_EXTENSIONS
// Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled).
// Expected to successfully generate SPIR-V.
TEST_P(CompileVulkanToSpirvTestAMD, FromFile)
@@ -188,9 +183,7 @@
Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
Target::Spv);
}
-#endif
-#ifdef NV_EXTENSIONS
// Compiling GLSL to SPIR-V under Vulkan semantics (NV extensions enabled).
// Expected to successfully generate SPIR-V.
TEST_P(CompileVulkanToSpirvTestNV, FromFile)
@@ -199,7 +192,6 @@
Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
Target::Spv);
}
-#endif
TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile)
{
@@ -572,7 +564,6 @@
FileNameAsCustomTestSuffix
);
-#ifdef AMD_EXTENSIONS
INSTANTIATE_TEST_CASE_P(
Glsl, CompileVulkanToSpirvTestAMD,
::testing::ValuesIn(std::vector<std::string>({
@@ -588,9 +579,7 @@
})),
FileNameAsCustomTestSuffix
);
-#endif
-#ifdef NV_EXTENSIONS
INSTANTIATE_TEST_CASE_P(
Glsl, CompileVulkanToSpirvTestNV,
::testing::ValuesIn(std::vector<std::string>({
@@ -638,7 +627,6 @@
})),
FileNameAsCustomTestSuffix
);
-#endif
INSTANTIATE_TEST_CASE_P(
Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp
index d899c78..baf4d16 100644
--- a/gtests/TestFixture.cpp
+++ b/gtests/TestFixture.cpp
@@ -60,7 +60,6 @@
return EShLangFragment;
} else if (stage == "comp") {
return EShLangCompute;
-#ifdef NV_EXTENSIONS
} else if (stage == "rgen") {
return EShLangRayGenNV;
} else if (stage == "rint") {
@@ -77,7 +76,6 @@
return EShLangTaskNV;
} else if (stage == "mesh") {
return EShLangMeshNV;
-#endif
} else {
assert(0 && "Unknown shader stage");
return EShLangCount;
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index a972009..1549e3a 100644
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -8703,25 +8703,19 @@
for (unsigned int member = 0; member < typeList.size(); ++member) {
TQualifier& memberQualifier = typeList[member].type->getQualifier();
bool contains64BitType = false;
-#ifdef AMD_EXTENSIONS
bool contains32BitType = false;
bool contains16BitType = false;
int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType, contains32BitType, contains16BitType);
-#else
- int memberSize = intermediate.computeTypeXfbSize(*typeList[member].type, contains64BitType);
-#endif
// see if we need to auto-assign an offset to this member
if (! memberQualifier.hasXfbOffset()) {
// "if applied to an aggregate containing a double or 64-bit integer, the offset must also be a multiple of 8"
if (contains64BitType)
RoundToPow2(nextOffset, 8);
-#ifdef AMD_EXTENSIONS
else if (contains32BitType)
RoundToPow2(nextOffset, 4);
// "if applied to an aggregate containing a half float or 16-bit integer, the offset must also be a multiple of 2"
else if (contains16BitType)
RoundToPow2(nextOffset, 2);
-#endif
memberQualifier.layoutXfbOffset = nextOffset;
} else
nextOffset = memberQualifier.layoutXfbOffset;