Merge remote-tracking branch 'aosp/upstream-master' into update-shaderc

Includes:
32d3ec31 Merge pull request #1394 from greg-lunarg/kg20
b0c42b28 Update spirv-tools known-good.
4f888534 Fix #1391: Remove use of nonportable strnlen().
b91189db Merge pull request #876 from ligfx/cmaketargetincludedirectories
a895f378 CMake: use target_include_directories to expose includes
92d05c0c Merge pull request #1386 from zeux/master
369dc87a Merge pull request #1387 from jeffbolznv/disassembly_explicit_types
fa34a9ad Merge pull request #1385 from KhronosGroup/fix-strtod
3e8e9f7b PP: Implement locale-independent strtod, using istringstream and a fast path.
af7a9487 Add bit width of types to disassembleInstruction
6c52f896 PP: Remove second parsing of numbers recorded in macros; save/use original.
1ea1b13f Testing: Add new tests, and new ways of testing, for floating-point.
8e4b496d Merge pull request #1388 from greg-lunarg/kg19
d2b55801 Update spirv-tools known-good
b239d22f Fix TextureUpgradeAndSamplerRemovalTransform when used with qualifiers
c6d25539 Merge pull request #1384 from LoopDawg/self-cast
c5991671 HLSL: allow self-type cast (as no-op passthrough)
2aaef122 Bump revision.
ebec9094 GLSL: Fix #1279: refract does not have a double-type eta.
a0044f4f Merge pull request #1381 from LoopDawg/coverage_array
98e1d7f6 Merge pull request #1383 from amdrexu/bugfix
b4a2a6cf Fix issue #1376: SPV_AMD_gpu_shader_half_float is not emitted under vulkan1.1
4e6d3eaf HLSL: require coverage mask to be arrayed output.
cfb05ec7 Merge pull request #1379 from LoopDawg/groupid-fix
91a8178e HLSL: various SPIR-V compute shader IDs must be a 3-vector of integers.
90de7a74 Merge pull request #1378 from LoopDawg/append-decl-order
1326b8c7 HLSL: Allow stream output Append() method after entry point.
1831087e SPV: Fix #1374: For an SSBO 16-bit access, only emit StorageUniformBufferBlock16 capability.
2fb966aa Merge pull request #1375 from Igalia/nroberts/aml-arrayio
ecbd056b Tests: Fix #1372: Don't legalize runtests HLSL tests.
22b71f9a Skip outermost array when assigning locations to auto-array interfaces
fd9d9ef4 Bump version.
d2e9829a Merge pull request #1370 from KhronosGroup/fix-param-types
115c3b14 Merge pull request #1369 from greg-lunarg/kg18
d3ed90be Fix #944: Convert argument type to match formal parameter type.
517eabb4 Update spirv-opt known-good
25bef930 Merge pull request #1363 from mattparks/patch4
115cf8ea Merge pull request #1368 from danginsburg/issue_1367
fb6924d2 Fix issue #1367 - change the I/O remapper to ignore push constants so it does not apply a binding/descriptor set to them.
9cf275bb Build: Add missing break statements. Fixes #1052.
1199cf92 Fixed install for SPIRV, glslang, and hlsl when building shared libs
e375dad6 Merge pull request #1364 from greg-lunarg/kg17
6b5d52a6 Update known-good.
46e07313 GLSL/Vulkan: Warn about arrays of arrays of resources that need bindings.
b4cb70fc GLSL: Fix #1359: don't allow unsized arrays as initializers.
d8462c6f validate script: fix path
c325f436 GLSL: Fix #1300: Can redeclare without size a sized built-in block array.
3beac945 Infrastructure: If using .hlsl suffix, default is -D.
4c574708 Bump revision.
2ead40ff Tests: Add usage and tests for previous commit.
fccbb8b4 Merge branch 'nicebyte-glsl-ext'
62f84fd5 Merge branch 'glsl-ext' of https://github.com/nicebyte/glslang into nicebyte-glsl-ext
33ddaaaf Make FindLanguage use the entire name if parseStageName is false
ef203bfa Fix build error
3350741e Make glslang validator support files ending in .glsl

Change-Id: If6560ef79acf0ec03be97d26a5ababf31ad6d424
Testing: checkbuild.py on Linux; unit tests on Windows
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index 1e32e27..1e5513c 100755
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -43,6 +43,7 @@
 add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS})
 set_property(TARGET SPIRV PROPERTY FOLDER glslang)
 set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON)
+target_include_directories(SPIRV PUBLIC ..)
 
 add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
 set_property(TARGET SPVRemapper PROPERTY FOLDER glslang)
@@ -69,8 +70,14 @@
 endif(WIN32)
 
 if(ENABLE_GLSLANG_INSTALL)
-    install(TARGETS SPIRV SPVRemapper
-            ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    if(BUILD_SHARED_LIBS)
+        install(TARGETS SPIRV SPVRemapper
+                ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    else()
+        install(TARGETS SPIRV SPVRemapper
+                ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    endif()
 
     install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/SPIRV/)
 endif(ENABLE_GLSLANG_INSTALL)
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index d2b2dee..aa8ed0b 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -170,7 +170,7 @@
     void declareUseOfStructMember(const glslang::TTypeList& members, int glslangMember);
 
     bool isShaderEntryPoint(const glslang::TIntermAggregate* node);
-    bool writableParam(glslang::TStorageQualifier);
+    bool writableParam(glslang::TStorageQualifier) const;
     bool originalParam(glslang::TStorageQualifier, const glslang::TType&, bool implicitThisParam);
     void makeFunctions(const glslang::TIntermSequence&);
     void makeGlobalInitializers(const glslang::TIntermSequence&);
@@ -2479,17 +2479,29 @@
                                    node->getType().containsBasicType(glslang::EbtInt16)   ||
                                    node->getType().containsBasicType(glslang::EbtUint16);
     if (contains16BitType) {
-        if (storageClass == spv::StorageClassInput || storageClass == spv::StorageClassOutput) {
+        switch (storageClass) {
+        case spv::StorageClassInput:
+        case spv::StorageClassOutput:
             addPre13Extension(spv::E_SPV_KHR_16bit_storage);
             builder.addCapability(spv::CapabilityStorageInputOutput16);
-        } else if (storageClass == spv::StorageClassPushConstant) {
+            break;
+        case spv::StorageClassPushConstant:
             addPre13Extension(spv::E_SPV_KHR_16bit_storage);
             builder.addCapability(spv::CapabilityStoragePushConstant16);
-        } else if (storageClass == spv::StorageClassUniform) {
+            break;
+        case spv::StorageClassUniform:
             addPre13Extension(spv::E_SPV_KHR_16bit_storage);
-            builder.addCapability(spv::CapabilityStorageUniform16);
             if (node->getType().getQualifier().storage == glslang::EvqBuffer)
                 builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
+            else
+                builder.addCapability(spv::CapabilityStorageUniform16);
+            break;
+        case spv::StorageClassStorageBuffer:
+            addPre13Extension(spv::E_SPV_KHR_16bit_storage);
+            builder.addCapability(spv::CapabilityStorageUniformBufferBlock16);
+            break;
+        default:
+            break;
         }
     }
 
@@ -3241,7 +3253,7 @@
 // Does parameter need a place to keep writes, separate from the original?
 // Assumes called after originalParam(), which filters out block/buffer/opaque-based
 // qualifiers such that we should have only in/out/inout/constreadonly here.
-bool TGlslangToSpvTraverser::writableParam(glslang::TStorageQualifier qualifier)
+bool TGlslangToSpvTraverser::writableParam(glslang::TStorageQualifier qualifier) const
 {
     assert(qualifier == glslang::EvqIn ||
            qualifier == glslang::EvqOut ||
@@ -3954,18 +3966,17 @@
     // 3. Make the call
     // 4. Copy back the results
 
-    // 1. Evaluate the arguments
+    // 1. Evaluate the arguments and their types
     std::vector<spv::Builder::AccessChain> lValues;
     std::vector<spv::Id> rValues;
     std::vector<const glslang::TType*> argTypes;
     for (int a = 0; a < (int)glslangArgs.size(); ++a) {
-        const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
+        argTypes.push_back(&glslangArgs[a]->getAsTyped()->getType());
         // build l-value
         builder.clearAccessChain();
         glslangArgs[a]->traverse(this);
-        argTypes.push_back(&paramType);
         // keep outputs and pass-by-originals as l-values, evaluate others as r-values
-        if (originalParam(qualifiers[a], paramType, function->hasImplicitThis() && a == 0) ||
+        if (originalParam(qualifiers[a], *argTypes[a], function->hasImplicitThis() && a == 0) ||
             writableParam(qualifiers[a])) {
             // save l-value
             lValues.push_back(builder.getAccessChain());
@@ -3983,26 +3994,33 @@
     int rValueCount = 0;
     std::vector<spv::Id> spvArgs;
     for (int a = 0; a < (int)glslangArgs.size(); ++a) {
-        const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
         spv::Id arg;
-        if (originalParam(qualifiers[a], paramType, function->hasImplicitThis() && a == 0)) {
+        if (originalParam(qualifiers[a], *argTypes[a], function->hasImplicitThis() && a == 0)) {
             builder.setAccessChain(lValues[lValueCount]);
             arg = builder.accessChainGetLValue();
             ++lValueCount;
         } else if (writableParam(qualifiers[a])) {
             // need space to hold the copy
-            arg = builder.createVariable(spv::StorageClassFunction, convertGlslangToSpvType(paramType), "param");
+            arg = builder.createVariable(spv::StorageClassFunction, builder.getContainedTypeId(function->getParamType(a)), "param");
             if (qualifiers[a] == glslang::EvqIn || qualifiers[a] == glslang::EvqInOut) {
                 // need to copy the input into output space
                 builder.setAccessChain(lValues[lValueCount]);
                 spv::Id copy = accessChainLoad(*argTypes[a]);
                 builder.clearAccessChain();
                 builder.setAccessChainLValue(arg);
-                multiTypeStore(paramType, copy);
+                multiTypeStore(*argTypes[a], copy);
             }
             ++lValueCount;
         } else {
-            arg = rValues[rValueCount];
+            // process r-value, which involves a copy for a type mismatch
+            if (function->getParamType(a) != convertGlslangToSpvType(*argTypes[a])) {
+                spv::Id argCopy = builder.createVariable(spv::StorageClassFunction, function->getParamType(a), "arg");
+                builder.clearAccessChain();
+                builder.setAccessChainLValue(argCopy);
+                multiTypeStore(*argTypes[a], rValues[rValueCount]);
+                arg = builder.createLoad(argCopy);
+            } else
+                arg = rValues[rValueCount];
             ++rValueCount;
         }
         spvArgs.push_back(arg);
@@ -4015,14 +4033,13 @@
     // 4. Copy back out an "out" arguments.
     lValueCount = 0;
     for (int a = 0; a < (int)glslangArgs.size(); ++a) {
-        const glslang::TType& paramType = glslangArgs[a]->getAsTyped()->getType();
-        if (originalParam(qualifiers[a], paramType, function->hasImplicitThis() && a == 0))
+        if (originalParam(qualifiers[a], *argTypes[a], function->hasImplicitThis() && a == 0))
             ++lValueCount;
         else if (writableParam(qualifiers[a])) {
             if (qualifiers[a] == glslang::EvqOut || qualifiers[a] == glslang::EvqInOut) {
                 spv::Id copy = builder.createLoad(spvArgs[a]);
                 builder.setAccessChain(lValues[lValueCount]);
-                multiTypeStore(paramType, copy);
+                multiTypeStore(*argTypes[a], copy);
             }
             ++lValueCount;
         }
@@ -4613,6 +4630,10 @@
         unaryOp = spv::OpFwidthCoarse;
         break;
     case glslang::EOpInterpolateAtCentroid:
+#ifdef AMD_EXTENSIONS
+        if (typeProxy == glslang::EbtFloat16)
+            builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
+#endif
         builder.addCapability(spv::CapabilityInterpolationFunction);
         libCall = spv::GLSLstd450InterpolateAtCentroid;
         break;
@@ -6080,10 +6101,18 @@
         libCall = spv::GLSLstd450Refract;
         break;
     case glslang::EOpInterpolateAtSample:
+#ifdef AMD_EXTENSIONS
+        if (typeProxy == glslang::EbtFloat16)
+            builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
+#endif
         builder.addCapability(spv::CapabilityInterpolationFunction);
         libCall = spv::GLSLstd450InterpolateAtSample;
         break;
     case glslang::EOpInterpolateAtOffset:
+#ifdef AMD_EXTENSIONS
+        if (typeProxy == glslang::EbtFloat16)
+            builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
+#endif
         builder.addCapability(spv::CapabilityInterpolationFunction);
         libCall = spv::GLSLstd450InterpolateAtOffset;
         break;
@@ -6234,6 +6263,8 @@
         break;
 
     case glslang::EOpInterpolateAtVertex:
+        if (typeProxy == glslang::EbtFloat16)
+            builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
         extBuiltins = getExtBuiltins(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
         libCall = spv::InterpolateAtVertexAMD;
         break;
@@ -6993,18 +7024,18 @@
         optimizer.RegisterPass(CreateLocalAccessChainConvertPass());
         optimizer.RegisterPass(CreateLocalSingleBlockLoadStoreElimPass());
         optimizer.RegisterPass(CreateLocalSingleStoreElimPass());
+        optimizer.RegisterPass(CreateSimplificationPass());
         optimizer.RegisterPass(CreateAggressiveDCEPass());
-        optimizer.RegisterPass(CreateInsertExtractElimPass());
+        optimizer.RegisterPass(CreateVectorDCEPass());
         optimizer.RegisterPass(CreateDeadInsertElimPass());
         optimizer.RegisterPass(CreateAggressiveDCEPass());
-        optimizer.RegisterPass(CreateCCPPass());
-        optimizer.RegisterPass(CreateSimplificationPass());
         optimizer.RegisterPass(CreateDeadBranchElimPass());
-        optimizer.RegisterPass(CreateCFGCleanupPass());
         optimizer.RegisterPass(CreateBlockMergePass());
         optimizer.RegisterPass(CreateLocalMultiStoreElimPass());
+        optimizer.RegisterPass(CreateIfConversionPass());
+        optimizer.RegisterPass(CreateSimplificationPass());
         optimizer.RegisterPass(CreateAggressiveDCEPass());
-        optimizer.RegisterPass(CreateInsertExtractElimPass());
+        optimizer.RegisterPass(CreateVectorDCEPass());
         optimizer.RegisterPass(CreateDeadInsertElimPass());
         if (options->optimizeSize) {
             optimizer.RegisterPass(CreateRedundancyEliminationPass());
@@ -7012,6 +7043,7 @@
             // optimizer.RegisterPass(CreateCommonUniformElimPass());
         }
         optimizer.RegisterPass(CreateAggressiveDCEPass());
+        optimizer.RegisterPass(CreateCFGCleanupPass());
 
         if (!optimizer.Run(spirv.data(), spirv.size(), &spirv))
             return;
diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp
old mode 100644
new mode 100755
index c07dfc7..b432e65
--- a/SPIRV/disassemble.cpp
+++ b/SPIRV/disassemble.cpp
@@ -353,10 +353,21 @@
         if (resultId != 0 && idDescriptor[resultId].size() == 0) {
             switch (opCode) {
             case OpTypeInt:
-                idDescriptor[resultId] = "int";
+                switch (stream[word]) {
+                case 8:  idDescriptor[resultId] = "int8_t"; break;
+                case 16: idDescriptor[resultId] = "int16_t"; break;
+                default: assert(0); // fallthrough
+                case 32: idDescriptor[resultId] = "int"; break;
+                case 64: idDescriptor[resultId] = "int64_t"; break;
+                }
                 break;
             case OpTypeFloat:
-                idDescriptor[resultId] = "float";
+                switch (stream[word]) {
+                case 16: idDescriptor[resultId] = "float16_t"; break;
+                default: assert(0); // fallthrough
+                case 32: idDescriptor[resultId] = "float"; break;
+                case 64: idDescriptor[resultId] = "float64_t"; break;
+                }
                 break;
             case OpTypeBool:
                 idDescriptor[resultId] = "bool";
@@ -368,8 +379,18 @@
                 idDescriptor[resultId] = "ptr";
                 break;
             case OpTypeVector:
-                if (idDescriptor[stream[word]].size() > 0)
+                if (idDescriptor[stream[word]].size() > 0) {
                     idDescriptor[resultId].append(idDescriptor[stream[word]].begin(), idDescriptor[stream[word]].begin() + 1);
+                    if (strstr(idDescriptor[stream[word]].c_str(), "8")) {
+                        idDescriptor[resultId].append("8");
+                    }
+                    if (strstr(idDescriptor[stream[word]].c_str(), "16")) {
+                        idDescriptor[resultId].append("16");
+                    }
+                    if (strstr(idDescriptor[stream[word]].c_str(), "64")) {
+                        idDescriptor[resultId].append("64");
+                    }
+                }
                 idDescriptor[resultId].append("vec");
                 switch (stream[word + 1]) {
                 case 2:   idDescriptor[resultId].append("2");   break;
diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h
index faa2701..8b6c644 100755
--- a/SPIRV/spvIR.h
+++ b/SPIRV/spvIR.h
@@ -258,7 +258,8 @@
             delete blocks[i];
     }
     Id getId() const { return functionInstruction.getResultId(); }
-    Id getParamId(int p) { return parameterInstructions[p]->getResultId(); }
+    Id getParamId(int p) const { return parameterInstructions[p]->getResultId(); }
+    Id getParamType(int p) const { return parameterInstructions[p]->getTypeId(); }
 
     void addBlock(Block* block) { blocks.push_back(block); }
     void removeBlock(Block* block)
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
old mode 100644
new mode 100755
index b0d863d..d500121
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -44,4 +44,9 @@
 
     install(TARGETS spirv-remap
             RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+            
+    if(BUILD_SHARED_LIBS)
+        install(TARGETS glslang-default-resource-limits
+                LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
+    endif()
 endif(ENABLE_GLSLANG_INSTALL)
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 044662f..6736dbc 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -1196,38 +1196,48 @@
 //   .frag = fragment
 //   .comp = compute
 //
-EShLanguage FindLanguage(const std::string& name, bool parseSuffix)
+//   Additionally, the file names may end in .<stage>.glsl and .<stage>.hlsl
+//   where <stage> is one of the stages listed above.
+//
+EShLanguage FindLanguage(const std::string& name, bool parseStageName)
 {
-    size_t ext = 0;
-    std::string suffix;
-
+    std::string stageName;
     if (shaderStageName)
-        suffix = shaderStageName;
-    else {
-        // Search for a suffix on a filename: e.g, "myfile.frag".  If given
-        // the suffix directly, we skip looking for the '.'
-        if (parseSuffix) {
-            ext = name.rfind('.');
-            if (ext == std::string::npos) {
-                usage();
-                return EShLangVertex;
-            }
-            ++ext;
+        stageName = shaderStageName;
+    else if (parseStageName) {
+        // Note: "first" extension means "first from the end", i.e.
+        // if the file is named foo.vert.glsl, then "glsl" is first,
+        // "vert" is second.
+        size_t firstExtStart = name.find_last_of(".");
+        bool hasFirstExt = firstExtStart != std::string::npos;
+        size_t secondExtStart = hasFirstExt ? name.find_last_of(".", firstExtStart - 1) : std::string::npos;
+        bool hasSecondExt = secondExtStart != std::string::npos;
+        std::string firstExt = name.substr(firstExtStart + 1, std::string::npos);
+        bool usesUnifiedExt = hasFirstExt && (firstExt == "glsl" || firstExt == "hlsl");
+        if (usesUnifiedExt && firstExt == "hlsl")
+            Options |= EOptionReadHlsl;
+        if (hasFirstExt && !usesUnifiedExt)
+            stageName = firstExt;
+        else if (usesUnifiedExt && hasSecondExt)
+            stageName = name.substr(secondExtStart + 1, firstExtStart - secondExtStart - 1);
+        else {
+            usage();
+            return EShLangVertex;
         }
-        suffix = name.substr(ext, std::string::npos);
-    }
+    } else
+        stageName = name;
 
-    if (suffix == "vert")
+    if (stageName == "vert")
         return EShLangVertex;
-    else if (suffix == "tesc")
+    else if (stageName == "tesc")
         return EShLangTessControl;
-    else if (suffix == "tese")
+    else if (stageName == "tese")
         return EShLangTessEvaluation;
-    else if (suffix == "geom")
+    else if (stageName == "geom")
         return EShLangGeometry;
-    else if (suffix == "frag")
+    else if (stageName == "frag")
         return EShLangFragment;
-    else if (suffix == "comp")
+    else if (stageName == "comp")
         return EShLangCompute;
 
     usage();
@@ -1298,10 +1308,12 @@
            "    .geom   for a geometry shader\n"
            "    .frag   for a fragment shader\n"
            "    .comp   for a compute shader\n"
+           "    .glsl   for .vert.glsl, .tesc.glsl, ..., .comp.glsl compound suffixes\n"
+           "    .hlsl   for .vert.hlsl, .tesc.hlsl, ..., .comp.hlsl compound suffixes\n"
            "\n"
            "Options:\n"
            "  -C          cascading errors; risk crash from accumulation of error recoveries\n"
-           "  -D          input is HLSL\n"
+           "  -D          input is HLSL (default when any suffix is .hlsl)\n"
            "  -D<macro=def>\n"
            "  -D<macro>   define a pre-processor macro\n"
            "  -E          print pre-processed GLSL; cannot be used with -l;\n"
diff --git a/Test/310.tese b/Test/310.tese
index 63b1daa..bbeaa87 100644
--- a/Test/310.tese
+++ b/Test/310.tese
@@ -55,7 +55,7 @@
 

 #extension GL_ARB_separate_shader_objects : enable

 

-in gl_PerVertex           // ERROR, no size

+in gl_PerVertex

 {

     vec4 gl_Position;

 } gl_in[];

diff --git a/Test/320.tese b/Test/320.tese
index b1507d9..cce2637 100644
--- a/Test/320.tese
+++ b/Test/320.tese
@@ -51,7 +51,7 @@
 

 #extension GL_ARB_separate_shader_objects : enable

 

-in gl_PerVertex           // ERROR, no size

+in gl_PerVertex

 {

     vec4 gl_Position;

 } gl_in[];

diff --git a/Test/400.geom b/Test/400.geom
old mode 100644
new mode 100755
index 0b77e12..d0a43d7
--- a/Test/400.geom
+++ b/Test/400.geom
@@ -285,10 +285,10 @@
     dvec3v  += reflect(dvec3v, dvec3v);

     dvec4v  += reflect(dvec4v, dvec4v);

 

-    doublev += refract(doublev, doublev, doublev);

-    dvec2v  += refract(dvec2v, dvec2v, doublev);

-    dvec3v  += refract(dvec3v, dvec3v, doublev);

-    dvec4v  += refract(dvec4v, dvec4v, doublev);

+    doublev += refract(doublev, doublev, 1.3);

+    dvec2v  += refract(dvec2v, dvec2v,   1.3);

+    dvec3v  += refract(dvec3v, dvec3v,   1.3);

+    dvec4v  += refract(dvec4v, dvec4v,   1.3);

 

     dmat2   dmat2v   = outerProduct(dvec2v, dvec2v);

     dmat3   dmat3v   = outerProduct(dvec3v, dvec3v);

diff --git a/Test/400.tese b/Test/400.tese
index aea4546..c110a1c 100644
--- a/Test/400.tese
+++ b/Test/400.tese
@@ -51,7 +51,7 @@
 

 #extension GL_ARB_separate_shader_objects : enable

 

-in gl_PerVertex            // ERROR, no size

+in gl_PerVertex

 {

     float gl_ClipDistance[1];

 } gl_in[];

diff --git a/Test/array.frag b/Test/array.frag
index 63d5f4c..a7b96a4 100644
--- a/Test/array.frag
+++ b/Test/array.frag
@@ -102,11 +102,12 @@
 }
 
 int[] i = int[]();    // ERROR, need constructor arguments
-float emptyA[];

-float b = vec4(emptyA);    // ERROR, array can't be a constructor argument

-uniform sampler2D s2d[];

-

-void foo4()

-{

-    s2d[a];           // ERROR, can't variably index unsized array

-}

+float emptyA[];
+float b = vec4(emptyA);    // ERROR, array can't be a constructor argument
+uniform sampler2D s2d[];
+
+void foo4()
+{
+    s2d[a];                         // ERROR, can't variably index unsized array
+    float local[] = gUnusedUnsized; // ERROR, can initialize with runtime-sized array
+}
diff --git a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
index 8bf9614..c479436 100755
--- a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
@@ -1,7 +1,7 @@
 hlsl.partialFlattenLocal.vert
 // Module Version 10000
 // Generated by (magic number): 80006
-// Id's are bound by 169
+// Id's are bound by 158
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -51,29 +51,29 @@
                               Store 137 38
                               Branch 100
              100:             Label
-             168:     21(int) Phi 25 5 119 106
-             105:    54(bool) SLessThan 168 31
+             157:     21(int) Phi 25 5 119 106
+             105:    54(bool) SLessThan 157 31
                               LoopMerge 101 106 None
                               BranchConditional 105 106 101
              106:               Label
-             138:     39(ptr)   AccessChain 133 168
+             138:     39(ptr)   AccessChain 133 157
              110:   18(fvec2)   Load 138
-             139:     34(ptr)   AccessChain 131 168
+             139:     34(ptr)   AccessChain 131 157
              112:   14(fvec3)   Load 139
              113:   18(fvec2)   VectorShuffle 112 112 0 1
              114:   18(fvec2)   FAdd 113 110
-             140:     34(ptr)   AccessChain 131 168
+             140:     34(ptr)   AccessChain 131 157
              116:   14(fvec3)   Load 140
              117:   14(fvec3)   VectorShuffle 116 114 3 4 2
                                 Store 140 117
-             119:     21(int)   IAdd 168 31
+             119:     21(int)   IAdd 157 31
                                 Branch 100
              101:             Label
              142:          17 Load 131
-             161:   14(fvec3) CompositeExtract 142 0
-             124:    6(float) CompositeExtract 161 0
-             125:    6(float) CompositeExtract 161 1
-             126:    6(float) CompositeExtract 161 2
+             156:   14(fvec3) CompositeExtract 142 0
+             124:    6(float) CompositeExtract 156 0
+             125:    6(float) CompositeExtract 156 1
+             126:    6(float) CompositeExtract 156 2
              127:    7(fvec4) CompositeConstruct 124 125 126 32
              128:    7(fvec4) FAdd 84 127
                               Store 86(@entryPointOutput) 128
diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out
index d237ee4..8922026 100644
--- a/Test/baseResults/150.tesc.out
+++ b/Test/baseResults/150.tesc.out
@@ -453,7 +453,6 @@
 ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch 
 ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch 
 ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample) 
-ERROR: 0:54: 'gl_PerVertex' : block already declared with size, can't redeclare as unsized 
 ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use 
 ERROR: 0:64: 'quads' : cannot apply to 'out' 
 ERROR: 0:64: 'cw' : can only apply to 'in' 
@@ -473,7 +472,7 @@
 ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved 
 ERROR: 0:109: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group
 ERROR: 0:110: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview
-ERROR: 32 compilation errors.  No code generated.
+ERROR: 31 compilation errors.  No code generated.
 
 
 Shader version: 400
diff --git a/Test/baseResults/310.tese.out b/Test/baseResults/310.tese.out
index 7d91e93..9c7c679 100644
--- a/Test/baseResults/310.tese.out
+++ b/Test/baseResults/310.tese.out
@@ -25,7 +25,6 @@
 ERROR: 0:53: 'patch' : cannot use interpolation qualifiers with patch 
 ERROR: 0:54: 'sample' : Reserved word. 
 ERROR: 0:54: '' : can only have one auxiliary qualifier (centroid, patch, and sample) 
-ERROR: 0:58: 'gl_PerVertex' : block already declared with size, can't redeclare as unsized 
 ERROR: 0:63: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use 
 ERROR: 0:68: 'quads' : cannot apply to 'out' 
 ERROR: 0:68: 'cw' : can only apply to 'in' 
@@ -47,7 +46,7 @@
 ERROR: 0:119: 'gl_PointSize' : no such field in structure 
 ERROR: 0:119: '=' :  cannot convert from ' temp block{ in highp 4-component vector of float Position gl_Position}' to ' temp highp float'
 ERROR: 0:127: 'gl_BoundingBoxOES' : undeclared identifier 
-ERROR: 44 compilation errors.  No code generated.
+ERROR: 43 compilation errors.  No code generated.
 
 
 Shader version: 310
diff --git a/Test/baseResults/320.tese.out b/Test/baseResults/320.tese.out
index 456bd88..93165ae 100755
--- a/Test/baseResults/320.tese.out
+++ b/Test/baseResults/320.tese.out
@@ -24,7 +24,6 @@
 ERROR: 0:49: 'noperspective' : not supported for this version or the enabled extensions 
 ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch 
 ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample) 
-ERROR: 0:54: 'gl_PerVertex' : block already declared with size, can't redeclare as unsized 
 ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use 
 ERROR: 0:64: 'quads' : cannot apply to 'out' 
 ERROR: 0:64: 'cw' : can only apply to 'in' 
@@ -43,7 +42,7 @@
 ERROR: 0:99: 'location' : overlapping use of location 24
 ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved 
 ERROR: 0:113: 'gl_BoundingBoxOES' : undeclared identifier 
-ERROR: 40 compilation errors.  No code generated.
+ERROR: 39 compilation errors.  No code generated.
 
 
 Shader version: 320
diff --git a/Test/baseResults/400.geom.out b/Test/baseResults/400.geom.out
index 52ebebc..d8f95f9 100644
--- a/Test/baseResults/400.geom.out
+++ b/Test/baseResults/400.geom.out
@@ -844,25 +844,29 @@
 0:288        refract ( global double)
 0:288          'doublev' ( temp double)
 0:288          'doublev' ( temp double)
-0:288          'doublev' ( temp double)
+0:288          Constant:
+0:288            1.300000
 0:289      add second child into first child ( temp 2-component vector of double)
 0:289        'dvec2v' ( temp 2-component vector of double)
 0:289        refract ( global 2-component vector of double)
 0:289          'dvec2v' ( temp 2-component vector of double)
 0:289          'dvec2v' ( temp 2-component vector of double)
-0:289          'doublev' ( temp double)
+0:289          Constant:
+0:289            1.300000
 0:290      add second child into first child ( temp 3-component vector of double)
 0:290        'dvec3v' ( temp 3-component vector of double)
 0:290        refract ( global 3-component vector of double)
 0:290          'dvec3v' ( temp 3-component vector of double)
 0:290          'dvec3v' ( temp 3-component vector of double)
-0:290          'doublev' ( temp double)
+0:290          Constant:
+0:290            1.300000
 0:291      add second child into first child ( temp 4-component vector of double)
 0:291        'dvec4v' ( temp 4-component vector of double)
 0:291        refract ( global 4-component vector of double)
 0:291          'dvec4v' ( temp 4-component vector of double)
 0:291          'dvec4v' ( temp 4-component vector of double)
-0:291          'doublev' ( temp double)
+0:291          Constant:
+0:291            1.300000
 0:293      Sequence
 0:293        move second child to first child ( temp 2X2 matrix of double)
 0:293          'dmat2v' ( temp 2X2 matrix of double)
diff --git a/Test/baseResults/400.tese.out b/Test/baseResults/400.tese.out
index 28c4468..9580e85 100644
--- a/Test/baseResults/400.tese.out
+++ b/Test/baseResults/400.tese.out
@@ -11,7 +11,6 @@
 ERROR: 0:48: 'patch' : cannot use interpolation qualifiers with patch 
 ERROR: 0:49: 'patch' : cannot use interpolation qualifiers with patch 
 ERROR: 0:50: '' : can only have one auxiliary qualifier (centroid, patch, and sample) 
-ERROR: 0:54: 'gl_PerVertex' : block already declared with size, can't redeclare as unsized 
 ERROR: 0:59: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use 
 ERROR: 0:64: 'quads' : cannot apply to 'out' 
 ERROR: 0:64: 'cw' : can only apply to 'in' 
@@ -31,7 +30,7 @@
 ERROR: 0:101: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved 
 ERROR: 0:109: 'gl_DeviceIndex' : required extension not requested: GL_EXT_device_group
 ERROR: 0:110: 'gl_ViewIndex' : required extension not requested: GL_EXT_multiview
-ERROR: 32 compilation errors.  No code generated.
+ERROR: 31 compilation errors.  No code generated.
 
 
 Shader version: 400
diff --git a/Test/baseResults/array.frag.out b/Test/baseResults/array.frag.out
index fadccf5..2af9f27 100644
--- a/Test/baseResults/array.frag.out
+++ b/Test/baseResults/array.frag.out
@@ -27,7 +27,8 @@
 ERROR: 0:106: 'constructor' : array argument must be sized 
 ERROR: 0:111: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier
 ERROR: 0:111: 'variable indexing sampler array' : not supported with this profile: none
-ERROR: 28 compilation errors.  No code generated.
+ERROR: 0:112: '[]' : array initializer must be sized 
+ERROR: 29 compilation errors.  No code generated.
 
 
 Shader version: 130
@@ -272,6 +273,10 @@
 0:111      indirect index ( temp sampler2D)
 0:111        's2d' ( uniform runtime-sized array of sampler2D)
 0:111        'a' ( uniform int)
+0:112      Sequence
+0:112        move second child to first child ( temp unsized 1-element array of float)
+0:112          'local' ( temp unsized 1-element array of float)
+0:112          'gUnusedUnsized' ( global unsized 1-element array of float)
 0:?   Linker Objects
 0:?     'gu' ( global runtime-sized array of float)
 0:?     'g4' ( global 4-element array of float)
diff --git a/Test/baseResults/compoundsuffix.frag.hlsl b/Test/baseResults/compoundsuffix.frag.hlsl
new file mode 100644
index 0000000..c3d1d97
--- /dev/null
+++ b/Test/baseResults/compoundsuffix.frag.hlsl
@@ -0,0 +1,45 @@
+compoundsuffix.frag.hlsl

+// Module Version 10000

+// Generated by (magic number): 80006

+// Id's are bound by 22

+

+                              Capability Shader

+               1:             ExtInstImport  "GLSL.std.450"

+                              MemoryModel Logical GLSL450

+                              EntryPoint Fragment 4  "main" 20

+                              ExecutionMode 4 OriginUpperLeft

+                              Source HLSL 500

+                              Name 4  "main"

+                              Name 11  "@main(vf4;"

+                              Name 10  "fragColor"

+                              Name 15  "fragColor"

+                              Name 16  "param"

+                              Name 20  "fragColor"

+                              Decorate 20(fragColor) Location 0

+               2:             TypeVoid

+               3:             TypeFunction 2

+               6:             TypeFloat 32

+               7:             TypeVector 6(float) 4

+               8:             TypePointer Function 7(fvec4)

+               9:             TypeFunction 2 8(ptr)

+              13:    6(float) Constant 1065353216

+              14:    7(fvec4) ConstantComposite 13 13 13 13

+              19:             TypePointer Output 7(fvec4)

+   20(fragColor):     19(ptr) Variable Output

+         4(main):           2 Function None 3

+               5:             Label

+   15(fragColor):      8(ptr) Variable Function

+       16(param):      8(ptr) Variable Function

+              17:           2 FunctionCall 11(@main(vf4;) 16(param)

+              18:    7(fvec4) Load 16(param)

+                              Store 15(fragColor) 18

+              21:    7(fvec4) Load 15(fragColor)

+                              Store 20(fragColor) 21

+                              Return

+                              FunctionEnd

+  11(@main(vf4;):           2 Function None 9

+   10(fragColor):      8(ptr) FunctionParameter

+              12:             Label

+                              Store 10(fragColor) 14

+                              Return

+                              FunctionEnd

diff --git a/Test/baseResults/compoundsuffix.vert.glsl b/Test/baseResults/compoundsuffix.vert.glsl
new file mode 100644
index 0000000..58354a4
--- /dev/null
+++ b/Test/baseResults/compoundsuffix.vert.glsl
@@ -0,0 +1,15 @@
+compoundsuffix.vert.glsl

+Shader version: 100

+0:? Sequence

+0:1  Function Definition: main( ( global void)

+0:1    Function Parameters: 

+0:3    Sequence

+0:3      move second child to first child ( temp highp 4-component vector of float)

+0:3        'gl_Position' ( gl_Position highp 4-component vector of float Position)

+0:3        Constant:

+0:3          1.000000

+0:3          1.000000

+0:3          1.000000

+0:3          1.000000

+0:?   Linker Objects

+

diff --git a/Test/baseResults/cppPassMacroName.frag.out b/Test/baseResults/cppPassMacroName.frag.out
index d8459b3..e09b00d 100755
--- a/Test/baseResults/cppPassMacroName.frag.out
+++ b/Test/baseResults/cppPassMacroName.frag.out
@@ -1,33 +1,38 @@
 cppPassMacroName.frag
 Shader version: 100
 0:? Sequence
-0:5  Function Definition: main( ( global void)
-0:5    Function Parameters: 
-0:7    Sequence
-0:7      Sequence
-0:7        move second child to first child ( temp mediump int)
-0:7          'f1' ( temp mediump int)
-0:7          Constant:
-0:7            4 (const int)
-0:8      Sequence
-0:8        move second child to first child ( temp mediump int)
-0:8          'f2' ( temp mediump int)
-0:8          'f1' ( temp mediump int)
-0:9      Sequence
-0:9        move second child to first child ( temp mediump int)
-0:9          'f3' ( temp mediump int)
-0:9          Constant:
-0:9            9 (const int)
-0:10      Sequence
-0:10        move second child to first child ( temp mediump int)
-0:10          'f4' ( temp mediump int)
-0:10          Constant:
-0:10            1 (const int)
+0:9  Function Definition: main( ( global void)
+0:9    Function Parameters: 
+0:11    Sequence
 0:11      Sequence
 0:11        move second child to first child ( temp mediump int)
-0:11          'f5' ( temp mediump int)
+0:11          'f1' ( temp mediump int)
 0:11          Constant:
-0:11            5 (const int)
+0:11            4 (const int)
+0:12      Sequence
+0:12        move second child to first child ( temp mediump int)
+0:12          'f2' ( temp mediump int)
+0:12          'f1' ( temp mediump int)
+0:13      Sequence
+0:13        move second child to first child ( temp mediump int)
+0:13          'f3' ( temp mediump int)
+0:13          Constant:
+0:13            9 (const int)
+0:14      Sequence
+0:14        move second child to first child ( temp mediump int)
+0:14          'f4' ( temp mediump int)
+0:14          Constant:
+0:14            1 (const int)
+0:15      Sequence
+0:15        move second child to first child ( temp mediump int)
+0:15          'f5' ( temp mediump int)
+0:15          Constant:
+0:15            5 (const int)
+0:17      Sequence
+0:17        move second child to first child ( temp highp float)
+0:17          'fl_f5' ( temp highp float)
+0:17          Constant:
+0:17            0.460000
 0:?   Linker Objects
 
 
@@ -36,32 +41,37 @@
 
 Shader version: 100
 0:? Sequence
-0:5  Function Definition: main( ( global void)
-0:5    Function Parameters: 
-0:7    Sequence
-0:7      Sequence
-0:7        move second child to first child ( temp mediump int)
-0:7          'f1' ( temp mediump int)
-0:7          Constant:
-0:7            4 (const int)
-0:8      Sequence
-0:8        move second child to first child ( temp mediump int)
-0:8          'f2' ( temp mediump int)
-0:8          'f1' ( temp mediump int)
-0:9      Sequence
-0:9        move second child to first child ( temp mediump int)
-0:9          'f3' ( temp mediump int)
-0:9          Constant:
-0:9            9 (const int)
-0:10      Sequence
-0:10        move second child to first child ( temp mediump int)
-0:10          'f4' ( temp mediump int)
-0:10          Constant:
-0:10            1 (const int)
+0:9  Function Definition: main( ( global void)
+0:9    Function Parameters: 
+0:11    Sequence
 0:11      Sequence
 0:11        move second child to first child ( temp mediump int)
-0:11          'f5' ( temp mediump int)
+0:11          'f1' ( temp mediump int)
 0:11          Constant:
-0:11            5 (const int)
+0:11            4 (const int)
+0:12      Sequence
+0:12        move second child to first child ( temp mediump int)
+0:12          'f2' ( temp mediump int)
+0:12          'f1' ( temp mediump int)
+0:13      Sequence
+0:13        move second child to first child ( temp mediump int)
+0:13          'f3' ( temp mediump int)
+0:13          Constant:
+0:13            9 (const int)
+0:14      Sequence
+0:14        move second child to first child ( temp mediump int)
+0:14          'f4' ( temp mediump int)
+0:14          Constant:
+0:14            1 (const int)
+0:15      Sequence
+0:15        move second child to first child ( temp mediump int)
+0:15          'f5' ( temp mediump int)
+0:15          Constant:
+0:15            5 (const int)
+0:17      Sequence
+0:17        move second child to first child ( temp highp float)
+0:17          'fl_f5' ( temp highp float)
+0:17          Constant:
+0:17            0.460000
 0:?   Linker Objects
 
diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out
index 48cd680..884c64c 100755
--- a/Test/baseResults/hlsl.basic.comp.out
+++ b/Test/baseResults/hlsl.basic.comp.out
@@ -15,17 +15,19 @@
 0:?     Sequence
 0:4      move second child to first child ( temp int)
 0:?         'dti' ( temp int)
-0:?         'dti' ( in int GlobalInvocationID)
+0:?         Construct int ( temp int)
+0:?           'dti' ( in 3-component vector of int GlobalInvocationID)
 0:4      move second child to first child ( temp int)
 0:?         'gti' ( temp int)
-0:?         'gti' ( in int LocalInvocationID)
+0:?         Construct int ( temp int)
+0:?           'gti' ( in 3-component vector of int LocalInvocationID)
 0:4      Function Call: @main(i1;i1; ( temp void)
 0:?         'dti' ( temp int)
 0:?         'gti' ( temp int)
 0:?   Linker Objects
 0:?     'a' ( shared 100-element array of 4-component vector of float)
-0:?     'dti' ( in int GlobalInvocationID)
-0:?     'gti' ( in int LocalInvocationID)
+0:?     'dti' ( in 3-component vector of int GlobalInvocationID)
+0:?     'gti' ( in 3-component vector of int LocalInvocationID)
 
 
 Linked compute stage:
@@ -47,26 +49,28 @@
 0:?     Sequence
 0:4      move second child to first child ( temp int)
 0:?         'dti' ( temp int)
-0:?         'dti' ( in int GlobalInvocationID)
+0:?         Construct int ( temp int)
+0:?           'dti' ( in 3-component vector of int GlobalInvocationID)
 0:4      move second child to first child ( temp int)
 0:?         'gti' ( temp int)
-0:?         'gti' ( in int LocalInvocationID)
+0:?         Construct int ( temp int)
+0:?           'gti' ( in 3-component vector of int LocalInvocationID)
 0:4      Function Call: @main(i1;i1; ( temp void)
 0:?         'dti' ( temp int)
 0:?         'gti' ( temp int)
 0:?   Linker Objects
 0:?     'a' ( shared 100-element array of 4-component vector of float)
-0:?     'dti' ( in int GlobalInvocationID)
-0:?     'gti' ( in int LocalInvocationID)
+0:?     'dti' ( in 3-component vector of int GlobalInvocationID)
+0:?     'gti' ( in 3-component vector of int LocalInvocationID)
 
 // Module Version 10000
 // Generated by (magic number): 80006
-// Id's are bound by 35
+// Id's are bound by 38
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "main" 18 21
+                              EntryPoint GLCompute 4  "main" 19 23
                               ExecutionMode 4 LocalSize 1 1 1
                               Source HLSL 500
                               Name 4  "main"
@@ -74,44 +78,47 @@
                               Name 9  "dti"
                               Name 10  "gti"
                               Name 16  "dti"
-                              Name 18  "dti"
-                              Name 20  "gti"
-                              Name 21  "gti"
-                              Name 23  "param"
-                              Name 25  "param"
-                              Name 34  "a"
-                              Decorate 18(dti) BuiltIn GlobalInvocationId
-                              Decorate 21(gti) BuiltIn LocalInvocationId
+                              Name 19  "dti"
+                              Name 22  "gti"
+                              Name 23  "gti"
+                              Name 26  "param"
+                              Name 28  "param"
+                              Name 37  "a"
+                              Decorate 19(dti) BuiltIn GlobalInvocationId
+                              Decorate 23(gti) BuiltIn LocalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
                7:             TypePointer Function 6(int)
                8:             TypeFunction 2 7(ptr) 7(ptr)
-              17:             TypePointer Input 6(int)
-         18(dti):     17(ptr) Variable Input
-         21(gti):     17(ptr) Variable Input
-              28:             TypeFloat 32
-              29:             TypeVector 28(float) 4
-              30:             TypeInt 32 0
-              31:     30(int) Constant 100
-              32:             TypeArray 29(fvec4) 31
-              33:             TypePointer Workgroup 32
-           34(a):     33(ptr) Variable Workgroup
+              17:             TypeVector 6(int) 3
+              18:             TypePointer Input 17(ivec3)
+         19(dti):     18(ptr) Variable Input
+         23(gti):     18(ptr) Variable Input
+              31:             TypeFloat 32
+              32:             TypeVector 31(float) 4
+              33:             TypeInt 32 0
+              34:     33(int) Constant 100
+              35:             TypeArray 32(fvec4) 34
+              36:             TypePointer Workgroup 35
+           37(a):     36(ptr) Variable Workgroup
          4(main):           2 Function None 3
                5:             Label
          16(dti):      7(ptr) Variable Function
-         20(gti):      7(ptr) Variable Function
-       23(param):      7(ptr) Variable Function
-       25(param):      7(ptr) Variable Function
-              19:      6(int) Load 18(dti)
-                              Store 16(dti) 19
-              22:      6(int) Load 21(gti)
-                              Store 20(gti) 22
-              24:      6(int) Load 16(dti)
-                              Store 23(param) 24
-              26:      6(int) Load 20(gti)
-                              Store 25(param) 26
-              27:           2 FunctionCall 11(@main(i1;i1;) 23(param) 25(param)
+         22(gti):      7(ptr) Variable Function
+       26(param):      7(ptr) Variable Function
+       28(param):      7(ptr) Variable Function
+              20:   17(ivec3) Load 19(dti)
+              21:      6(int) CompositeExtract 20 0
+                              Store 16(dti) 21
+              24:   17(ivec3) Load 23(gti)
+              25:      6(int) CompositeExtract 24 0
+                              Store 22(gti) 25
+              27:      6(int) Load 16(dti)
+                              Store 26(param) 27
+              29:      6(int) Load 22(gti)
+                              Store 28(param) 29
+              30:           2 FunctionCall 11(@main(i1;i1;) 26(param) 28(param)
                               Return
                               FunctionEnd
 11(@main(i1;i1;):           2 Function None 8
diff --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out
index 2fb3769..9eccd51 100755
--- a/Test/baseResults/hlsl.cast.frag.out
+++ b/Test/baseResults/hlsl.cast.frag.out
@@ -9,8 +9,7 @@
 0:3      Branch: Return with expression
 0:3        add ( temp 4-component vector of float)
 0:3          add ( temp 4-component vector of float)
-0:3            Construct vec4 ( temp 4-component vector of float)
-0:3              'input' ( in 4-component vector of float)
+0:3            'input' ( in 4-component vector of float)
 0:3            Convert int to float ( temp 4-component vector of float)
 0:3              Convert float to int ( temp 4-component vector of int)
 0:3                'input' ( in 4-component vector of float)
@@ -47,8 +46,7 @@
 0:3      Branch: Return with expression
 0:3        add ( temp 4-component vector of float)
 0:3          add ( temp 4-component vector of float)
-0:3            Construct vec4 ( temp 4-component vector of float)
-0:3              'input' ( in 4-component vector of float)
+0:3            'input' ( in 4-component vector of float)
 0:3            Convert int to float ( temp 4-component vector of float)
 0:3              Convert float to int ( temp 4-component vector of int)
 0:3                'input' ( in 4-component vector of float)
@@ -73,62 +71,57 @@
 
 // Module Version 10000
 // Generated by (magic number): 80006
-// Id's are bound by 39
+// Id's are bound by 34
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 32 35
+                              EntryPoint Fragment 4  "PixelShaderFunction" 27 30
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "PixelShaderFunction"
                               Name 11  "@PixelShaderFunction(vf4;"
                               Name 10  "input"
-                              Name 30  "input"
-                              Name 32  "input"
-                              Name 35  "@entryPointOutput"
-                              Name 36  "param"
-                              Decorate 32(input) Location 0
-                              Decorate 35(@entryPointOutput) Location 0
+                              Name 25  "input"
+                              Name 27  "input"
+                              Name 30  "@entryPointOutput"
+                              Name 31  "param"
+                              Decorate 27(input) Location 0
+                              Decorate 30(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeVector 6(float) 4
                8:             TypePointer Function 7(fvec4)
                9:             TypeFunction 7(fvec4) 8(ptr)
-              20:             TypeInt 32 1
-              21:             TypeVector 20(int) 4
-              25:    6(float) Constant 1067014160
-              26:    7(fvec4) ConstantComposite 25 25 25 25
-              31:             TypePointer Input 7(fvec4)
-       32(input):     31(ptr) Variable Input
-              34:             TypePointer Output 7(fvec4)
-35(@entryPointOutput):     34(ptr) Variable Output
+              15:             TypeInt 32 1
+              16:             TypeVector 15(int) 4
+              20:    6(float) Constant 1067014160
+              21:    7(fvec4) ConstantComposite 20 20 20 20
+              26:             TypePointer Input 7(fvec4)
+       27(input):     26(ptr) Variable Input
+              29:             TypePointer Output 7(fvec4)
+30(@entryPointOutput):     29(ptr) Variable Output
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-       30(input):      8(ptr) Variable Function
-       36(param):      8(ptr) Variable Function
-              33:    7(fvec4) Load 32(input)
-                              Store 30(input) 33
-              37:    7(fvec4) Load 30(input)
-                              Store 36(param) 37
-              38:    7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 36(param)
-                              Store 35(@entryPointOutput) 38
+       25(input):      8(ptr) Variable Function
+       31(param):      8(ptr) Variable Function
+              28:    7(fvec4) Load 27(input)
+                              Store 25(input) 28
+              32:    7(fvec4) Load 25(input)
+                              Store 31(param) 32
+              33:    7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 31(param)
+                              Store 30(@entryPointOutput) 33
                               Return
                               FunctionEnd
 11(@PixelShaderFunction(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
               12:             Label
               13:    7(fvec4) Load 10(input)
-              14:    6(float) CompositeExtract 13 0
-              15:    6(float) CompositeExtract 13 1
-              16:    6(float) CompositeExtract 13 2
-              17:    6(float) CompositeExtract 13 3
-              18:    7(fvec4) CompositeConstruct 14 15 16 17
-              19:    7(fvec4) Load 10(input)
-              22:   21(ivec4) ConvertFToS 19
-              23:    7(fvec4) ConvertSToF 22
-              24:    7(fvec4) FAdd 18 23
-              27:    7(fvec4) FAdd 24 26
-                              ReturnValue 27
+              14:    7(fvec4) Load 10(input)
+              17:   16(ivec4) ConvertFToS 14
+              18:    7(fvec4) ConvertSToF 17
+              19:    7(fvec4) FAdd 13 18
+              22:    7(fvec4) FAdd 19 21
+                              ReturnValue 22
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.coverage.frag.out b/Test/baseResults/hlsl.coverage.frag.out
new file mode 100644
index 0000000..8fc6abf
--- /dev/null
+++ b/Test/baseResults/hlsl.coverage.frag.out
@@ -0,0 +1,204 @@
+hlsl.coverage.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15  Function Definition: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15    Function Parameters: 
+0:15      'i' ( in structure{})
+0:?     Sequence
+0:17      move second child to first child ( temp 4-component vector of float)
+0:17        vColor: direct index for structure ( temp 4-component vector of float)
+0:17          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:17          Constant:
+0:17            0 (const int)
+0:?         Constant:
+0:?           1.000000
+0:?           0.000000
+0:?           0.000000
+0:?           1.000000
+0:18      move second child to first child ( temp uint)
+0:18        nCoverageMask: direct index for structure ( temp uint)
+0:18          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:18          Constant:
+0:18            1 (const int)
+0:18        Constant:
+0:18          0 (const uint)
+0:19      Branch: Return with expression
+0:19        'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15  Function Definition: main( ( temp void)
+0:15    Function Parameters: 
+0:?     Sequence
+0:15      Sequence
+0:15        move second child to first child ( temp structure{})
+0:?           'i' ( temp structure{})
+0:?           'i' ( in structure{})
+0:15      Sequence
+0:15        move second child to first child ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15          'flattenTemp' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15          Function Call: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:?             'i' ( temp structure{})
+0:15        move second child to first child ( temp 4-component vector of float)
+0:?           '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
+0:15          vColor: direct index for structure ( temp 4-component vector of float)
+0:15            'flattenTemp' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15            Constant:
+0:15              0 (const int)
+0:15        move second child to first child ( temp uint)
+0:15          direct index ( out uint SampleMaskIn)
+0:?             '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
+0:15            Constant:
+0:15              0 (const int)
+0:15          nCoverageMask: direct index for structure ( temp uint)
+0:15            'flattenTemp' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15            Constant:
+0:15              1 (const int)
+0:?   Linker Objects
+0:?     '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
+0:?     '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:15  Function Definition: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15    Function Parameters: 
+0:15      'i' ( in structure{})
+0:?     Sequence
+0:17      move second child to first child ( temp 4-component vector of float)
+0:17        vColor: direct index for structure ( temp 4-component vector of float)
+0:17          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:17          Constant:
+0:17            0 (const int)
+0:?         Constant:
+0:?           1.000000
+0:?           0.000000
+0:?           0.000000
+0:?           1.000000
+0:18      move second child to first child ( temp uint)
+0:18        nCoverageMask: direct index for structure ( temp uint)
+0:18          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:18          Constant:
+0:18            1 (const int)
+0:18        Constant:
+0:18          0 (const uint)
+0:19      Branch: Return with expression
+0:19        'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15  Function Definition: main( ( temp void)
+0:15    Function Parameters: 
+0:?     Sequence
+0:15      Sequence
+0:15        move second child to first child ( temp structure{})
+0:?           'i' ( temp structure{})
+0:?           'i' ( in structure{})
+0:15      Sequence
+0:15        move second child to first child ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15          'flattenTemp' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15          Function Call: @main(struct-PS_INPUT1; ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:?             'i' ( temp structure{})
+0:15        move second child to first child ( temp 4-component vector of float)
+0:?           '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
+0:15          vColor: direct index for structure ( temp 4-component vector of float)
+0:15            'flattenTemp' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15            Constant:
+0:15              0 (const int)
+0:15        move second child to first child ( temp uint)
+0:15          direct index ( out uint SampleMaskIn)
+0:?             '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
+0:15            Constant:
+0:15              0 (const int)
+0:15          nCoverageMask: direct index for structure ( temp uint)
+0:15            'flattenTemp' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
+0:15            Constant:
+0:15              1 (const int)
+0:?   Linker Objects
+0:?     '@entryPointOutput.nCoverageMask' ( out 1-element array of uint SampleMaskIn)
+0:?     '@entryPointOutput.vColor' (layout( location=0) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80006
+// Id's are bound by 52
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 41 47
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 6  "PS_INPUT"
+                              Name 11  "PS_OUTPUT"
+                              MemberName 11(PS_OUTPUT) 0  "vColor"
+                              MemberName 11(PS_OUTPUT) 1  "nCoverageMask"
+                              Name 14  "@main(struct-PS_INPUT1;"
+                              Name 13  "i"
+                              Name 17  "o"
+                              Name 32  "i"
+                              Name 34  "i"
+                              Name 36  "flattenTemp"
+                              Name 37  "param"
+                              Name 41  "@entryPointOutput.vColor"
+                              Name 47  "@entryPointOutput.nCoverageMask"
+                              Decorate 41(@entryPointOutput.vColor) Location 0
+                              Decorate 47(@entryPointOutput.nCoverageMask) BuiltIn SampleMask
+               2:             TypeVoid
+               3:             TypeFunction 2
+     6(PS_INPUT):             TypeStruct
+               7:             TypePointer Function 6(PS_INPUT)
+               8:             TypeFloat 32
+               9:             TypeVector 8(float) 4
+              10:             TypeInt 32 0
+   11(PS_OUTPUT):             TypeStruct 9(fvec4) 10(int)
+              12:             TypeFunction 11(PS_OUTPUT) 7(ptr)
+              16:             TypePointer Function 11(PS_OUTPUT)
+              18:             TypeInt 32 1
+              19:     18(int) Constant 0
+              20:    8(float) Constant 1065353216
+              21:    8(float) Constant 0
+              22:    9(fvec4) ConstantComposite 20 21 21 20
+              23:             TypePointer Function 9(fvec4)
+              25:     18(int) Constant 1
+              26:     10(int) Constant 0
+              27:             TypePointer Function 10(int)
+              33:             TypePointer Input 6(PS_INPUT)
+           34(i):     33(ptr) Variable Input
+              40:             TypePointer Output 9(fvec4)
+41(@entryPointOutput.vColor):     40(ptr) Variable Output
+              44:     10(int) Constant 1
+              45:             TypeArray 10(int) 44
+              46:             TypePointer Output 45
+47(@entryPointOutput.nCoverageMask):     46(ptr) Variable Output
+              50:             TypePointer Output 10(int)
+         4(main):           2 Function None 3
+               5:             Label
+           32(i):      7(ptr) Variable Function
+ 36(flattenTemp):     16(ptr) Variable Function
+       37(param):      7(ptr) Variable Function
+              35: 6(PS_INPUT) Load 34(i)
+                              Store 32(i) 35
+              38: 6(PS_INPUT) Load 32(i)
+                              Store 37(param) 38
+              39:11(PS_OUTPUT) FunctionCall 14(@main(struct-PS_INPUT1;) 37(param)
+                              Store 36(flattenTemp) 39
+              42:     23(ptr) AccessChain 36(flattenTemp) 19
+              43:    9(fvec4) Load 42
+                              Store 41(@entryPointOutput.vColor) 43
+              48:     27(ptr) AccessChain 36(flattenTemp) 25
+              49:     10(int) Load 48
+              51:     50(ptr) AccessChain 47(@entryPointOutput.nCoverageMask) 19
+                              Store 51 49
+                              Return
+                              FunctionEnd
+14(@main(struct-PS_INPUT1;):11(PS_OUTPUT) Function None 12
+           13(i):      7(ptr) FunctionParameter
+              15:             Label
+           17(o):     16(ptr) Variable Function
+              24:     23(ptr) AccessChain 17(o) 19
+                              Store 24 22
+              28:     27(ptr) AccessChain 17(o) 25
+                              Store 28 26
+              29:11(PS_OUTPUT) Load 17(o)
+                              ReturnValue 29
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.groupid.comp.out b/Test/baseResults/hlsl.groupid.comp.out
new file mode 100644
index 0000000..3404551
--- /dev/null
+++ b/Test/baseResults/hlsl.groupid.comp.out
@@ -0,0 +1,146 @@
+hlsl.groupid.comp
+Shader version: 500
+local_size = (8, 8, 1)
+0:? Sequence
+0:7  Function Definition: @main(vu2; ( temp void)
+0:7    Function Parameters: 
+0:7      'vGroupId' ( in 2-component vector of uint)
+0:?     Sequence
+0:8      Sequence
+0:8        move second child to first child ( temp 4-component vector of float)
+0:8          'storeTemp' ( temp 4-component vector of float)
+0:?           Constant:
+0:?             1.000000
+0:?             0.000000
+0:?             0.000000
+0:?             1.000000
+0:8        imageStore ( temp void)
+0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
+0:8          vector swizzle ( temp 2-component vector of uint)
+0:8            'vGroupId' ( in 2-component vector of uint)
+0:8            Sequence
+0:8              Constant:
+0:8                0 (const int)
+0:8              Constant:
+0:8                1 (const int)
+0:8          'storeTemp' ( temp 4-component vector of float)
+0:8        'storeTemp' ( temp 4-component vector of float)
+0:7  Function Definition: main( ( temp void)
+0:7    Function Parameters: 
+0:?     Sequence
+0:7      move second child to first child ( temp 2-component vector of uint)
+0:?         'vGroupId' ( temp 2-component vector of uint)
+0:?         Construct uvec2 ( temp 2-component vector of uint)
+0:?           'vGroupId' ( in 3-component vector of uint WorkGroupID)
+0:7      Function Call: @main(vu2; ( temp void)
+0:?         'vGroupId' ( temp 2-component vector of uint)
+0:?   Linker Objects
+0:?     'OutputTexture' (layout( rgba32f) uniform image2D)
+0:?     'vGroupId' ( in 3-component vector of uint WorkGroupID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (8, 8, 1)
+0:? Sequence
+0:7  Function Definition: @main(vu2; ( temp void)
+0:7    Function Parameters: 
+0:7      'vGroupId' ( in 2-component vector of uint)
+0:?     Sequence
+0:8      Sequence
+0:8        move second child to first child ( temp 4-component vector of float)
+0:8          'storeTemp' ( temp 4-component vector of float)
+0:?           Constant:
+0:?             1.000000
+0:?             0.000000
+0:?             0.000000
+0:?             1.000000
+0:8        imageStore ( temp void)
+0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
+0:8          vector swizzle ( temp 2-component vector of uint)
+0:8            'vGroupId' ( in 2-component vector of uint)
+0:8            Sequence
+0:8              Constant:
+0:8                0 (const int)
+0:8              Constant:
+0:8                1 (const int)
+0:8          'storeTemp' ( temp 4-component vector of float)
+0:8        'storeTemp' ( temp 4-component vector of float)
+0:7  Function Definition: main( ( temp void)
+0:7    Function Parameters: 
+0:?     Sequence
+0:7      move second child to first child ( temp 2-component vector of uint)
+0:?         'vGroupId' ( temp 2-component vector of uint)
+0:?         Construct uvec2 ( temp 2-component vector of uint)
+0:?           'vGroupId' ( in 3-component vector of uint WorkGroupID)
+0:7      Function Call: @main(vu2; ( temp void)
+0:?         'vGroupId' ( temp 2-component vector of uint)
+0:?   Linker Objects
+0:?     'OutputTexture' (layout( rgba32f) uniform image2D)
+0:?     'vGroupId' ( in 3-component vector of uint WorkGroupID)
+
+// Module Version 10000
+// Generated by (magic number): 80006
+// Id's are bound by 37
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 29
+                              ExecutionMode 4 LocalSize 8 8 1
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 11  "@main(vu2;"
+                              Name 10  "vGroupId"
+                              Name 16  "storeTemp"
+                              Name 22  "OutputTexture"
+                              Name 26  "vGroupId"
+                              Name 29  "vGroupId"
+                              Name 34  "param"
+                              Decorate 22(OutputTexture) DescriptorSet 0
+                              Decorate 29(vGroupId) BuiltIn WorkgroupId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 2
+               8:             TypePointer Function 7(ivec2)
+               9:             TypeFunction 2 8(ptr)
+              13:             TypeFloat 32
+              14:             TypeVector 13(float) 4
+              15:             TypePointer Function 14(fvec4)
+              17:   13(float) Constant 1065353216
+              18:   13(float) Constant 0
+              19:   14(fvec4) ConstantComposite 17 18 18 17
+              20:             TypeImage 13(float) 2D nonsampled format:Rgba32f
+              21:             TypePointer UniformConstant 20
+22(OutputTexture):     21(ptr) Variable UniformConstant
+              27:             TypeVector 6(int) 3
+              28:             TypePointer Input 27(ivec3)
+    29(vGroupId):     28(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+    26(vGroupId):      8(ptr) Variable Function
+       34(param):      8(ptr) Variable Function
+              30:   27(ivec3) Load 29(vGroupId)
+              31:      6(int) CompositeExtract 30 0
+              32:      6(int) CompositeExtract 30 1
+              33:    7(ivec2) CompositeConstruct 31 32
+                              Store 26(vGroupId) 33
+              35:    7(ivec2) Load 26(vGroupId)
+                              Store 34(param) 35
+              36:           2 FunctionCall 11(@main(vu2;) 34(param)
+                              Return
+                              FunctionEnd
+  11(@main(vu2;):           2 Function None 9
+    10(vGroupId):      8(ptr) FunctionParameter
+              12:             Label
+   16(storeTemp):     15(ptr) Variable Function
+                              Store 16(storeTemp) 19
+              23:          20 Load 22(OutputTexture)
+              24:    7(ivec2) Load 10(vGroupId)
+              25:   14(fvec4) Load 16(storeTemp)
+                              ImageWrite 23 24 25
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out
index 0a8e597..8eef84e 100644
--- a/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/Test/baseResults/hlsl.inoutquals.frag.out
@@ -93,13 +93,16 @@
 0:16            Constant:
 0:16              1 (const int)
 0:16      move second child to first child ( temp int)
-0:?         'sampleMask' ( out int SampleMaskIn)
+0:16        direct index ( out int SampleMaskIn)
+0:?           'sampleMask' ( out 1-element array of int SampleMaskIn)
+0:16          Constant:
+0:16            0 (const int)
 0:?         'sampleMask' ( temp int)
 0:?   Linker Objects
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     'inpos' ( noperspective in 4-component vector of float FragCoord)
-0:?     'sampleMask' ( out int SampleMaskIn)
+0:?     'sampleMask' ( out 1-element array of int SampleMaskIn)
 
 
 Linked fragment stage:
@@ -199,22 +202,25 @@
 0:16            Constant:
 0:16              1 (const int)
 0:16      move second child to first child ( temp int)
-0:?         'sampleMask' ( out int SampleMaskIn)
+0:16        direct index ( out int SampleMaskIn)
+0:?           'sampleMask' ( out 1-element array of int SampleMaskIn)
+0:16          Constant:
+0:16            0 (const int)
 0:?         'sampleMask' ( temp int)
 0:?   Linker Objects
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 0:?     'inpos' ( noperspective in 4-component vector of float FragCoord)
-0:?     'sampleMask' ( out int SampleMaskIn)
+0:?     'sampleMask' ( out 1-element array of int SampleMaskIn)
 
 // Module Version 10000
 // Generated by (magic number): 80006
-// Id's are bound by 88
+// Id's are bound by 92
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 68 78 82 86
+                              EntryPoint Fragment 4  "main" 68 78 82 88
                               ExecutionMode 4 OriginUpperLeft
                               ExecutionMode 4 DepthReplacing
                               Source HLSL 500
@@ -246,12 +252,12 @@
                               Name 74  "param"
                               Name 78  "@entryPointOutput.Color"
                               Name 82  "@entryPointOutput.Depth"
-                              Name 86  "sampleMask"
+                              Name 88  "sampleMask"
                               Decorate 68(inpos) NoPerspective
                               Decorate 68(inpos) BuiltIn FragCoord
                               Decorate 78(@entryPointOutput.Color) Location 0
                               Decorate 82(@entryPointOutput.Depth) BuiltIn FragDepth
-                              Decorate 86(sampleMask) BuiltIn SampleMask
+                              Decorate 88(sampleMask) BuiltIn SampleMask
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -278,8 +284,11 @@
 78(@entryPointOutput.Color):     77(ptr) Variable Output
               81:             TypePointer Output 6(float)
 82(@entryPointOutput.Depth):     81(ptr) Variable Output
-              85:             TypePointer Output 17(int)
-  86(sampleMask):     85(ptr) Variable Output
+              85:     42(int) Constant 1
+              86:             TypeArray 17(int) 85
+              87:             TypePointer Output 86
+  88(sampleMask):     87(ptr) Variable Output
+              90:             TypePointer Output 17(int)
          4(main):           2 Function None 3
                5:             Label
        66(inpos):     16(ptr) Variable Function
@@ -301,8 +310,9 @@
               83:      7(ptr) AccessChain 70(flattenTemp) 59
               84:    6(float) Load 83
                               Store 82(@entryPointOutput.Depth) 84
-              87:     17(int) Load 71(sampleMask)
-                              Store 86(sampleMask) 87
+              89:     17(int) Load 71(sampleMask)
+              91:     90(ptr) AccessChain 88(sampleMask) 53
+                              Store 91 89
                               Return
                               FunctionEnd
 13(MyFunc(f1;f1;f1;f1;):           2 Function None 8
diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out
index 29f70d2..c7c0e70 100644
--- a/Test/baseResults/hlsl.intrinsics.double.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.double.frag.out
@@ -231,28 +231,28 @@
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 64
-               7:             TypePointer Function 6(float)
-               8:             TypeVector 6(float) 2
-               9:             TypePointer Function 8(fvec2)
-              10:             TypeVector 6(float) 3
-              11:             TypePointer Function 10(fvec3)
-              12:             TypeVector 6(float) 4
-              13:             TypePointer Function 12(fvec4)
+               7:             TypePointer Function 6(float64_t)
+               8:             TypeVector 6(float64_t) 2
+               9:             TypePointer Function 8(f64vec2)
+              10:             TypeVector 6(float64_t) 3
+              11:             TypePointer Function 10(f64vec3)
+              12:             TypeVector 6(float64_t) 4
+              13:             TypePointer Function 12(f64vec4)
               14:             TypeInt 32 0
               15:             TypePointer Function 14(int)
               16:             TypeFloat 32
               17:             TypeFunction 16(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr) 11(ptr) 13(ptr) 15(ptr) 15(ptr)
               36:             TypeVector 14(int) 2
               39:   16(float) Constant 0
-              43:             TypePointer Input 6(float)
+              43:             TypePointer Input 6(float64_t)
       44(inDV1a):     43(ptr) Variable Input
       47(inDV1b):     43(ptr) Variable Input
       50(inDV1c):     43(ptr) Variable Input
-              53:             TypePointer Input 8(fvec2)
+              53:             TypePointer Input 8(f64vec2)
        54(inDV2):     53(ptr) Variable Input
-              57:             TypePointer Input 10(fvec3)
+              57:             TypePointer Input 10(f64vec3)
        58(inDV3):     57(ptr) Variable Input
-              61:             TypePointer Input 12(fvec4)
+              61:             TypePointer Input 12(f64vec4)
        62(inDV4):     61(ptr) Variable Input
               65:             TypePointer Input 14(int)
        66(inU1a):     65(ptr) Variable Input
@@ -277,33 +277,33 @@
        83(param):     13(ptr) Variable Function
        85(param):     15(ptr) Variable Function
        87(param):     15(ptr) Variable Function
-              45:    6(float) Load 44(inDV1a)
+              45:6(float64_t) Load 44(inDV1a)
                               Store 42(inDV1a) 45
-              48:    6(float) Load 47(inDV1b)
+              48:6(float64_t) Load 47(inDV1b)
                               Store 46(inDV1b) 48
-              51:    6(float) Load 50(inDV1c)
+              51:6(float64_t) Load 50(inDV1c)
                               Store 49(inDV1c) 51
-              55:    8(fvec2) Load 54(inDV2)
+              55:  8(f64vec2) Load 54(inDV2)
                               Store 52(inDV2) 55
-              59:   10(fvec3) Load 58(inDV3)
+              59: 10(f64vec3) Load 58(inDV3)
                               Store 56(inDV3) 59
-              63:   12(fvec4) Load 62(inDV4)
+              63: 12(f64vec4) Load 62(inDV4)
                               Store 60(inDV4) 63
               67:     14(int) Load 66(inU1a)
                               Store 64(inU1a) 67
               70:     14(int) Load 69(inU1b)
                               Store 68(inU1b) 70
-              74:    6(float) Load 42(inDV1a)
+              74:6(float64_t) Load 42(inDV1a)
                               Store 73(param) 74
-              76:    6(float) Load 46(inDV1b)
+              76:6(float64_t) Load 46(inDV1b)
                               Store 75(param) 76
-              78:    6(float) Load 49(inDV1c)
+              78:6(float64_t) Load 49(inDV1c)
                               Store 77(param) 78
-              80:    8(fvec2) Load 52(inDV2)
+              80:  8(f64vec2) Load 52(inDV2)
                               Store 79(param) 80
-              82:   10(fvec3) Load 56(inDV3)
+              82: 10(f64vec3) Load 56(inDV3)
                               Store 81(param) 82
-              84:   12(fvec4) Load 60(inDV4)
+              84: 12(f64vec4) Load 60(inDV4)
                               Store 83(param) 84
               86:     14(int) Load 64(inU1a)
                               Store 85(param) 86
@@ -325,15 +325,15 @@
               27:             Label
          28(r00):      7(ptr) Variable Function
          33(r01):      7(ptr) Variable Function
-              29:    6(float) Load 18(inDV1a)
-              30:    6(float) Load 19(inDV1b)
-              31:    6(float) Load 20(inDV1c)
-              32:    6(float) ExtInst 1(GLSL.std.450) 50(Fma) 29 30 31
+              29:6(float64_t) Load 18(inDV1a)
+              30:6(float64_t) Load 19(inDV1b)
+              31:6(float64_t) Load 20(inDV1c)
+              32:6(float64_t) ExtInst 1(GLSL.std.450) 50(Fma) 29 30 31
                               Store 28(r00) 32
               34:     14(int) Load 24(inU1a)
               35:     14(int) Load 25(inU1b)
               37:   36(ivec2) CompositeConstruct 34 35
-              38:    6(float) Bitcast 37
+              38:6(float64_t) Bitcast 37
                               Store 33(r01) 38
                               ReturnValue 39
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out
index 58d275c..280141f 100755
--- a/Test/baseResults/hlsl.matType.frag.out
+++ b/Test/baseResults/hlsl.matType.frag.out
@@ -82,8 +82,8 @@
               19:             TypeVector 6(float) 2
               20:             TypeMatrix 19(fvec2) 1
               21:             TypeFloat 64
-              22:             TypeVector 21(float) 3
-              23:             TypeMatrix 22(fvec3) 2
+              22:             TypeVector 21(float64_t) 3
+              23:             TypeMatrix 22(f64vec3) 2
               24:             TypeInt 32 1
               25:             TypeVector 24(int) 4
               26:             TypeMatrix 25(ivec4) 4
diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out
index 0141a6b..da40b57 100755
--- a/Test/baseResults/hlsl.overload.frag.out
+++ b/Test/baseResults/hlsl.overload.frag.out
@@ -937,7 +937,7 @@
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 64
-               7:             TypePointer Function 6(float)
+               7:             TypePointer Function 6(float64_t)
                8:             TypeBool
                9:             TypePointer Function 8(bool)
               10:             TypeFunction 2 7(ptr) 9(ptr)
@@ -967,8 +967,8 @@
              113:             TypeVector 22(int) 3
              114:             TypePointer Function 113(ivec3)
              115:             TypeFunction 2 114(ptr)
-             125:             TypeVector 6(float) 3
-             126:             TypePointer Function 125(fvec3)
+             125:             TypeVector 6(float64_t) 3
+             126:             TypePointer Function 125(f64vec3)
              127:             TypeFunction 2 126(ptr)
              134:             TypeVector 15(int) 2
              135:             TypePointer Function 134(ivec2)
@@ -976,14 +976,14 @@
              149:             TypeVector 29(float) 4
              150:             TypePointer Function 149(fvec4)
              151:             TypeFunction 149(fvec4) 150(ptr)
-             334:    6(float) Constant 0 0
+             334:6(float64_t) Constant 0 0
              339:     15(int) Constant 0
              348:   29(float) Constant 0
              353:     15(int) Constant 1
              373:     22(int) Constant 0
              374:     22(int) Constant 1
              394:   29(float) Constant 1065353216
-             414:    6(float) Constant 0 1072693248
+             414:6(float64_t) Constant 0 1072693248
              484:             TypeVector 22(int) 2
              494:             TypeVector 22(int) 4
              503:             TypeVector 8(bool) 3
@@ -1283,117 +1283,117 @@
       497(param):     23(ptr) Variable Function
       500(param):      9(ptr) Variable Function
       506(param):      9(ptr) Variable Function
-             158:    6(float) Load 155(d)
+             158:6(float64_t) Load 155(d)
                               Store 157(param) 158
              160:     8(bool) Load 156(b)
                               Store 159(param) 160
              161:           2 FunctionCall 13(foo1(d1;b1;) 157(param) 159(param)
-             163:    6(float) Load 155(d)
+             163:6(float64_t) Load 155(d)
                               Store 162(param) 163
-             165:    6(float) Load 155(d)
+             165:6(float64_t) Load 155(d)
                               Store 164(param) 165
              166:           2 FunctionCall 39(foo1(d1;d1;) 162(param) 164(param)
-             169:    6(float) Load 155(d)
+             169:6(float64_t) Load 155(d)
                               Store 168(param) 169
              171:     15(int) Load 167(u)
                               Store 170(param) 171
              172:           2 FunctionCall 20(foo1(d1;u1;) 168(param) 170(param)
-             175:    6(float) Load 155(d)
+             175:6(float64_t) Load 155(d)
                               Store 174(param) 175
              177:     22(int) Load 173(i)
                               Store 176(param) 177
              178:           2 FunctionCall 27(foo1(d1;i1;) 174(param) 176(param)
-             181:    6(float) Load 155(d)
+             181:6(float64_t) Load 155(d)
                               Store 180(param) 181
              183:   29(float) Load 179(f)
                               Store 182(param) 183
              184:           2 FunctionCall 34(foo1(d1;f1;) 180(param) 182(param)
              185:   29(float) Load 179(f)
-             186:    6(float) FConvert 185
+             186:6(float64_t) FConvert 185
                               Store 187(param) 186
              189:     8(bool) Load 156(b)
                               Store 188(param) 189
              190:           2 FunctionCall 13(foo1(d1;b1;) 187(param) 188(param)
              191:   29(float) Load 179(f)
-             192:    6(float) FConvert 191
+             192:6(float64_t) FConvert 191
                               Store 193(param) 192
-             195:    6(float) Load 155(d)
+             195:6(float64_t) Load 155(d)
                               Store 194(param) 195
              196:           2 FunctionCall 39(foo1(d1;d1;) 193(param) 194(param)
              197:   29(float) Load 179(f)
-             198:    6(float) FConvert 197
+             198:6(float64_t) FConvert 197
                               Store 199(param) 198
              201:     15(int) Load 167(u)
                               Store 200(param) 201
              202:           2 FunctionCall 20(foo1(d1;u1;) 199(param) 200(param)
              203:   29(float) Load 179(f)
-             204:    6(float) FConvert 203
+             204:6(float64_t) FConvert 203
                               Store 205(param) 204
              207:     22(int) Load 173(i)
                               Store 206(param) 207
              208:           2 FunctionCall 27(foo1(d1;i1;) 205(param) 206(param)
              209:   29(float) Load 179(f)
-             210:    6(float) FConvert 209
+             210:6(float64_t) FConvert 209
                               Store 211(param) 210
              213:   29(float) Load 179(f)
                               Store 212(param) 213
              214:           2 FunctionCall 34(foo1(d1;f1;) 211(param) 212(param)
              215:     15(int) Load 167(u)
-             216:    6(float) ConvertUToF 215
+             216:6(float64_t) ConvertUToF 215
                               Store 217(param) 216
              219:     8(bool) Load 156(b)
                               Store 218(param) 219
              220:           2 FunctionCall 13(foo1(d1;b1;) 217(param) 218(param)
              221:     15(int) Load 167(u)
-             222:    6(float) ConvertUToF 221
+             222:6(float64_t) ConvertUToF 221
                               Store 223(param) 222
-             225:    6(float) Load 155(d)
+             225:6(float64_t) Load 155(d)
                               Store 224(param) 225
              226:           2 FunctionCall 39(foo1(d1;d1;) 223(param) 224(param)
              227:     15(int) Load 167(u)
-             228:    6(float) ConvertUToF 227
+             228:6(float64_t) ConvertUToF 227
                               Store 229(param) 228
              231:     15(int) Load 167(u)
                               Store 230(param) 231
              232:           2 FunctionCall 20(foo1(d1;u1;) 229(param) 230(param)
              233:     15(int) Load 167(u)
-             234:    6(float) ConvertUToF 233
+             234:6(float64_t) ConvertUToF 233
                               Store 235(param) 234
              237:     22(int) Load 173(i)
                               Store 236(param) 237
              238:           2 FunctionCall 27(foo1(d1;i1;) 235(param) 236(param)
              239:     15(int) Load 167(u)
-             240:    6(float) ConvertUToF 239
+             240:6(float64_t) ConvertUToF 239
                               Store 241(param) 240
              243:   29(float) Load 179(f)
                               Store 242(param) 243
              244:           2 FunctionCall 34(foo1(d1;f1;) 241(param) 242(param)
              245:     22(int) Load 173(i)
-             246:    6(float) ConvertSToF 245
+             246:6(float64_t) ConvertSToF 245
                               Store 247(param) 246
              249:     8(bool) Load 156(b)
                               Store 248(param) 249
              250:           2 FunctionCall 13(foo1(d1;b1;) 247(param) 248(param)
              251:     22(int) Load 173(i)
-             252:    6(float) ConvertSToF 251
+             252:6(float64_t) ConvertSToF 251
                               Store 253(param) 252
-             255:    6(float) Load 155(d)
+             255:6(float64_t) Load 155(d)
                               Store 254(param) 255
              256:           2 FunctionCall 39(foo1(d1;d1;) 253(param) 254(param)
              257:     22(int) Load 173(i)
-             258:    6(float) ConvertSToF 257
+             258:6(float64_t) ConvertSToF 257
                               Store 259(param) 258
              261:     15(int) Load 167(u)
                               Store 260(param) 261
              262:           2 FunctionCall 20(foo1(d1;u1;) 259(param) 260(param)
              263:     22(int) Load 173(i)
-             264:    6(float) ConvertSToF 263
+             264:6(float64_t) ConvertSToF 263
                               Store 265(param) 264
              267:     22(int) Load 173(i)
                               Store 266(param) 267
              268:           2 FunctionCall 27(foo1(d1;i1;) 265(param) 266(param)
              269:     22(int) Load 173(i)
-             270:    6(float) ConvertSToF 269
+             270:6(float64_t) ConvertSToF 269
                               Store 271(param) 270
              273:   29(float) Load 179(f)
                               Store 272(param) 273
@@ -1407,7 +1407,7 @@
              281:     15(int) Load 167(u)
              282:     22(int) Bitcast 281
                               Store 283(param) 282
-             285:    6(float) Load 155(d)
+             285:6(float64_t) Load 155(d)
                               Store 284(param) 285
              286:           2 FunctionCall 64(foo2(i1;d1;) 283(param) 284(param)
              287:     15(int) Load 167(u)
@@ -1435,7 +1435,7 @@
              309:           2 FunctionCall 44(foo2(i1;b1;) 305(param) 307(param)
              311:     22(int) Load 173(i)
                               Store 310(param) 311
-             313:    6(float) Load 155(d)
+             313:6(float64_t) Load 155(d)
                               Store 312(param) 313
              314:           2 FunctionCall 64(foo2(i1;d1;) 310(param) 312(param)
              316:     22(int) Load 173(i)
@@ -1456,7 +1456,7 @@
              331:     8(bool) Load 156(b)
                               Store 330(param) 331
              332:           2 FunctionCall 68(foo3(b1;) 330(param)
-             333:    6(float) Load 155(d)
+             333:6(float64_t) Load 155(d)
              335:     8(bool) FOrdNotEqual 333 334
                               Store 336(param) 335
              337:           2 FunctionCall 68(foo3(b1;) 336(param)
@@ -1476,7 +1476,7 @@
              354:     15(int) Select 352 353 339
                               Store 355(param) 354
              356:           2 FunctionCall 72(foo4(u1;) 355(param)
-             357:    6(float) Load 155(d)
+             357:6(float64_t) Load 155(d)
              358:     15(int) ConvertFToU 357
                               Store 359(param) 358
              360:           2 FunctionCall 72(foo4(u1;) 359(param)
@@ -1495,7 +1495,7 @@
              375:     22(int) Select 372 374 373
                               Store 376(param) 375
              377:           2 FunctionCall 76(foo5(i1;) 376(param)
-             378:    6(float) Load 155(d)
+             378:6(float64_t) Load 155(d)
              379:     22(int) ConvertFToS 378
                               Store 380(param) 379
              381:           2 FunctionCall 76(foo5(i1;) 380(param)
@@ -1514,7 +1514,7 @@
              395:   29(float) Select 393 394 348
                               Store 396(param) 395
              397:           2 FunctionCall 80(foo6(f1;) 396(param)
-             398:    6(float) Load 155(d)
+             398:6(float64_t) Load 155(d)
              399:   29(float) FConvert 398
                               Store 400(param) 399
              401:           2 FunctionCall 80(foo6(f1;) 400(param)
@@ -1530,22 +1530,22 @@
                               Store 410(param) 411
              412:           2 FunctionCall 80(foo6(f1;) 410(param)
              413:     8(bool) Load 156(b)
-             415:    6(float) Select 413 414 334
+             415:6(float64_t) Select 413 414 334
                               Store 416(param) 415
              417:           2 FunctionCall 84(foo7(d1;) 416(param)
-             419:    6(float) Load 155(d)
+             419:6(float64_t) Load 155(d)
                               Store 418(param) 419
              420:           2 FunctionCall 84(foo7(d1;) 418(param)
              421:     15(int) Load 167(u)
-             422:    6(float) ConvertUToF 421
+             422:6(float64_t) ConvertUToF 421
                               Store 423(param) 422
              424:           2 FunctionCall 84(foo7(d1;) 423(param)
              425:     22(int) Load 173(i)
-             426:    6(float) ConvertSToF 425
+             426:6(float64_t) ConvertSToF 425
                               Store 427(param) 426
              428:           2 FunctionCall 84(foo7(d1;) 427(param)
              429:   29(float) Load 179(f)
-             430:    6(float) FConvert 429
+             430:6(float64_t) FConvert 429
                               Store 431(param) 430
              432:           2 FunctionCall 84(foo7(d1;) 431(param)
              433:     8(bool) Load 156(b)
@@ -1568,7 +1568,7 @@
              450:     15(int) ConvertFToU 449
                               Store 451(param) 450
              452:           2 FunctionCall 96(foo9(u1;) 451(param)
-             453:    6(float) Load 155(d)
+             453:6(float64_t) Load 155(d)
              454:     15(int) ConvertFToU 453
                               Store 455(param) 454
              456:           2 FunctionCall 96(foo9(u1;) 455(param)
@@ -1580,7 +1580,7 @@
              462:     22(int) ConvertFToS 461
                               Store 463(param) 462
              464:           2 FunctionCall 102(foo10(i1;) 463(param)
-             465:    6(float) Load 155(d)
+             465:6(float64_t) Load 155(d)
              466:     22(int) ConvertFToS 465
                               Store 467(param) 466
              468:           2 FunctionCall 102(foo10(i1;) 467(param)
@@ -1589,12 +1589,12 @@
                               Store 471(param) 470
              472:           2 FunctionCall 120(foo11(u1;) 471(param)
              473:   29(float) Load 179(f)
-             474:    6(float) FConvert 473
+             474:6(float64_t) FConvert 473
                               Store 475(param) 474
              476:           2 FunctionCall 111(foo11(d1;) 475(param)
              477:   29(float) Load 179(f)
              478:  104(fvec3) CompositeConstruct 477 477 477
-             479:  125(fvec3) FConvert 478
+             479:125(f64vec3) FConvert 478
                               Store 480(param) 479
              481:           2 FunctionCall 129(foo12(vd3;) 480(param)
              482:     22(int) Load 173(i)
diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out
index bdad6ca..0fcb6b7 100644
--- a/Test/baseResults/hlsl.promotions.frag.out
+++ b/Test/baseResults/hlsl.promotions.frag.out
@@ -1715,18 +1715,18 @@
               29:             TypePointer Function 28(bvec3)
               30:             TypeFunction 2 29(ptr)
               34:             TypeFloat 64
-              35:             TypeVector 34(float) 3
-              36:             TypePointer Function 35(fvec3)
+              35:             TypeVector 34(float64_t) 3
+              36:             TypePointer Function 35(f64vec3)
               37:             TypeFunction 2 36(ptr)
               41:             TypeFunction 7(fvec3) 8(ptr)
               54:             TypeFunction 14(ivec3) 15(ptr)
               67:             TypeFunction 21(ivec3) 22(ptr)
               80:             TypeFunction 28(bvec3) 29(ptr)
-              93:             TypeFunction 35(fvec3) 36(ptr)
+              93:             TypeFunction 35(f64vec3) 36(ptr)
              106:             TypeVector 6(float) 4
   107(PS_OUTPUT):             TypeStruct 106(fvec4)
              108:             TypeFunction 107(PS_OUTPUT)
-    111($Global):             TypeStruct 14(ivec3) 21(ivec3) 7(fvec3) 21(ivec3) 35(fvec3) 13(int) 20(int) 6(float) 20(int) 34(float)
+    111($Global):             TypeStruct 14(ivec3) 21(ivec3) 7(fvec3) 21(ivec3) 35(f64vec3) 13(int) 20(int) 6(float) 20(int) 34(float64_t)
              112:             TypePointer Uniform 111($Global)
              113:    112(ptr) Variable Uniform
              114:     13(int) Constant 0
@@ -1741,24 +1741,24 @@
              142:    7(fvec3) ConstantComposite 140 140 140
              143:    7(fvec3) ConstantComposite 141 141 141
              151:     13(int) Constant 4
-             152:             TypePointer Uniform 35(fvec3)
+             152:             TypePointer Uniform 35(f64vec3)
              172:   14(ivec3) ConstantComposite 114 114 114
              173:   14(ivec3) ConstantComposite 134 134 134
              181:     13(int) Constant 2
              182:             TypePointer Uniform 7(fvec3)
              218:     20(int) Constant 1
              219:   21(ivec3) ConstantComposite 218 218 218
-             261:   34(float) Constant 0 0
-             262:   35(fvec3) ConstantComposite 261 261 261
-             288:   34(float) Constant 0 1072693248
-             289:   35(fvec3) ConstantComposite 288 288 288
+             261:34(float64_t) Constant 0 0
+             262: 35(f64vec3) ConstantComposite 261 261 261
+             288:34(float64_t) Constant 0 1072693248
+             289: 35(f64vec3) ConstantComposite 288 288 288
              473:     13(int) Constant 5
              474:             TypePointer Uniform 13(int)
              480:     13(int) Constant 6
              481:             TypePointer Uniform 20(int)
              488:     13(int) Constant 8
              494:     13(int) Constant 9
-             495:             TypePointer Uniform 34(float)
+             495:             TypePointer Uniform 34(float64_t)
              514:     13(int) Constant 7
              515:             TypePointer Uniform 6(float)
              574:             TypePointer Function 13(int)
@@ -1841,11 +1841,11 @@
            51(p):      8(ptr) FunctionParameter
               53:             Label
              153:    152(ptr) AccessChain 113 151
-             154:   35(fvec3) Load 153
+             154: 35(f64vec3) Load 153
              155:    7(fvec3) FConvert 154
                               Store 51(p) 155
              156:    152(ptr) AccessChain 113 151
-             157:   35(fvec3) Load 156
+             157: 35(f64vec3) Load 156
              158:    7(fvec3) FConvert 157
                               ReturnValue 158
                               FunctionEnd
@@ -1891,11 +1891,11 @@
            64(p):     15(ptr) FunctionParameter
               66:             Label
              191:    152(ptr) AccessChain 113 151
-             192:   35(fvec3) Load 191
+             192: 35(f64vec3) Load 191
              193:   14(ivec3) ConvertFToS 192
                               Store 64(p) 193
              194:    152(ptr) AccessChain 113 151
-             195:   35(fvec3) Load 194
+             195: 35(f64vec3) Load 194
              196:   14(ivec3) ConvertFToS 195
                               ReturnValue 196
                               FunctionEnd
@@ -1941,11 +1941,11 @@
            77(p):     22(ptr) FunctionParameter
               79:             Label
              227:    152(ptr) AccessChain 113 151
-             228:   35(fvec3) Load 227
+             228: 35(f64vec3) Load 227
              229:   21(ivec3) ConvertFToU 228
                               Store 77(p) 229
              230:    152(ptr) AccessChain 113 151
-             231:   35(fvec3) Load 230
+             231: 35(f64vec3) Load 230
              232:   21(ivec3) ConvertFToU 231
                               ReturnValue 232
                               FunctionEnd
@@ -1989,62 +1989,62 @@
            90(p):     29(ptr) FunctionParameter
               92:             Label
              259:    152(ptr) AccessChain 113 151
-             260:   35(fvec3) Load 259
+             260: 35(f64vec3) Load 259
              263:   28(bvec3) FOrdNotEqual 260 262
                               Store 90(p) 263
              264:    152(ptr) AccessChain 113 151
-             265:   35(fvec3) Load 264
+             265: 35(f64vec3) Load 264
              266:   28(bvec3) FOrdNotEqual 265 262
                               ReturnValue 266
                               FunctionEnd
-95(Fn_R_D3I(vd3;):   35(fvec3) Function None 93
+95(Fn_R_D3I(vd3;): 35(f64vec3) Function None 93
            94(p):     36(ptr) FunctionParameter
               96:             Label
              269:    115(ptr) AccessChain 113 114
              270:   14(ivec3) Load 269
-             271:   35(fvec3) ConvertSToF 270
+             271: 35(f64vec3) ConvertSToF 270
                               Store 94(p) 271
              272:    115(ptr) AccessChain 113 114
              273:   14(ivec3) Load 272
-             274:   35(fvec3) ConvertSToF 273
+             274: 35(f64vec3) ConvertSToF 273
                               ReturnValue 274
                               FunctionEnd
-98(Fn_R_D3U(vd3;):   35(fvec3) Function None 93
+98(Fn_R_D3U(vd3;): 35(f64vec3) Function None 93
            97(p):     36(ptr) FunctionParameter
               99:             Label
              277:    125(ptr) AccessChain 113 124
              278:   21(ivec3) Load 277
-             279:   35(fvec3) ConvertUToF 278
+             279: 35(f64vec3) ConvertUToF 278
                               Store 97(p) 279
              280:    125(ptr) AccessChain 113 124
              281:   21(ivec3) Load 280
-             282:   35(fvec3) ConvertUToF 281
+             282: 35(f64vec3) ConvertUToF 281
                               ReturnValue 282
                               FunctionEnd
-101(Fn_R_D3B(vd3;):   35(fvec3) Function None 93
+101(Fn_R_D3B(vd3;): 35(f64vec3) Function None 93
           100(p):     36(ptr) FunctionParameter
              102:             Label
              285:    125(ptr) AccessChain 113 134
              286:   21(ivec3) Load 285
              287:   28(bvec3) INotEqual 286 138
-             290:   35(fvec3) Select 287 289 262
+             290: 35(f64vec3) Select 287 289 262
                               Store 100(p) 290
              291:    125(ptr) AccessChain 113 134
              292:   21(ivec3) Load 291
              293:   28(bvec3) INotEqual 292 138
-             294:   35(fvec3) Select 293 289 262
+             294: 35(f64vec3) Select 293 289 262
                               ReturnValue 294
                               FunctionEnd
-104(Fn_R_D3F(vd3;):   35(fvec3) Function None 93
+104(Fn_R_D3F(vd3;): 35(f64vec3) Function None 93
           103(p):     36(ptr) FunctionParameter
              105:             Label
              297:    182(ptr) AccessChain 113 181
              298:    7(fvec3) Load 297
-             299:   35(fvec3) FConvert 298
+             299: 35(f64vec3) FConvert 298
                               Store 103(p) 299
              300:    182(ptr) AccessChain 113 181
              301:    7(fvec3) Load 300
-             302:   35(fvec3) FConvert 301
+             302: 35(f64vec3) FConvert 301
                               ReturnValue 302
                               FunctionEnd
      109(@main():107(PS_OUTPUT) Function None 108
@@ -2087,7 +2087,7 @@
              317:    7(fvec3) ConvertUToF 316
                               Store 314(r02) 317
              319:    152(ptr) AccessChain 113 151
-             320:   35(fvec3) Load 319
+             320: 35(f64vec3) Load 319
              321:    7(fvec3) FConvert 320
                               Store 318(r03) 321
              323:    125(ptr) AccessChain 113 134
@@ -2104,7 +2104,7 @@
              334:   14(ivec3) ConvertFToS 333
                               Store 331(r12) 334
              336:    152(ptr) AccessChain 113 151
-             337:   35(fvec3) Load 336
+             337: 35(f64vec3) Load 336
              338:   14(ivec3) ConvertFToS 337
                               Store 335(r13) 338
              340:    125(ptr) AccessChain 113 134
@@ -2121,7 +2121,7 @@
              351:   21(ivec3) ConvertFToU 350
                               Store 348(r22) 351
              353:    152(ptr) AccessChain 113 151
-             354:   35(fvec3) Load 353
+             354: 35(f64vec3) Load 353
              355:   21(ivec3) ConvertFToU 354
                               Store 352(r23) 355
              357:    115(ptr) AccessChain 113 114
@@ -2137,25 +2137,25 @@
              367:   28(bvec3) FOrdNotEqual 366 142
                               Store 364(r32) 367
              369:    152(ptr) AccessChain 113 151
-             370:   35(fvec3) Load 369
+             370: 35(f64vec3) Load 369
              371:   28(bvec3) FOrdNotEqual 370 262
                               Store 368(r33) 371
              373:    115(ptr) AccessChain 113 114
              374:   14(ivec3) Load 373
-             375:   35(fvec3) ConvertSToF 374
+             375: 35(f64vec3) ConvertSToF 374
                               Store 372(r40) 375
              377:    125(ptr) AccessChain 113 124
              378:   21(ivec3) Load 377
-             379:   35(fvec3) ConvertUToF 378
+             379: 35(f64vec3) ConvertUToF 378
                               Store 376(r41) 379
              381:    182(ptr) AccessChain 113 181
              382:    7(fvec3) Load 381
-             383:   35(fvec3) FConvert 382
+             383: 35(f64vec3) FConvert 382
                               Store 380(r42) 383
              385:    125(ptr) AccessChain 113 134
              386:   21(ivec3) Load 385
              387:   28(bvec3) INotEqual 386 138
-             388:   35(fvec3) Select 387 289 262
+             388: 35(f64vec3) Select 387 289 262
                               Store 384(r43) 388
              389:    115(ptr) AccessChain 113 114
              390:   14(ivec3) Load 389
@@ -2177,7 +2177,7 @@
              404:    7(fvec3) FMul 403 402
                               Store 314(r02) 404
              405:    152(ptr) AccessChain 113 151
-             406:   35(fvec3) Load 405
+             406: 35(f64vec3) Load 405
              407:    7(fvec3) FConvert 406
              408:    7(fvec3) Load 318(r03)
              409:    7(fvec3) FMul 408 407
@@ -2202,7 +2202,7 @@
              425:   14(ivec3) IMul 424 423
                               Store 331(r12) 425
              426:    152(ptr) AccessChain 113 151
-             427:   35(fvec3) Load 426
+             427: 35(f64vec3) Load 426
              428:   14(ivec3) ConvertFToS 427
              429:   14(ivec3) Load 335(r13)
              430:   14(ivec3) IMul 429 428
@@ -2227,35 +2227,35 @@
              446:   21(ivec3) IMul 445 444
                               Store 348(r22) 446
              447:    152(ptr) AccessChain 113 151
-             448:   35(fvec3) Load 447
+             448: 35(f64vec3) Load 447
              449:   21(ivec3) ConvertFToU 448
              450:   21(ivec3) Load 352(r23)
              451:   21(ivec3) IMul 450 449
                               Store 352(r23) 451
              452:    115(ptr) AccessChain 113 114
              453:   14(ivec3) Load 452
-             454:   35(fvec3) ConvertSToF 453
-             455:   35(fvec3) Load 372(r40)
-             456:   35(fvec3) FMul 455 454
+             454: 35(f64vec3) ConvertSToF 453
+             455: 35(f64vec3) Load 372(r40)
+             456: 35(f64vec3) FMul 455 454
                               Store 372(r40) 456
              457:    125(ptr) AccessChain 113 124
              458:   21(ivec3) Load 457
-             459:   35(fvec3) ConvertUToF 458
-             460:   35(fvec3) Load 376(r41)
-             461:   35(fvec3) FMul 460 459
+             459: 35(f64vec3) ConvertUToF 458
+             460: 35(f64vec3) Load 376(r41)
+             461: 35(f64vec3) FMul 460 459
                               Store 376(r41) 461
              462:    182(ptr) AccessChain 113 181
              463:    7(fvec3) Load 462
-             464:   35(fvec3) FConvert 463
-             465:   35(fvec3) Load 380(r42)
-             466:   35(fvec3) FMul 465 464
+             464: 35(f64vec3) FConvert 463
+             465: 35(f64vec3) Load 380(r42)
+             466: 35(f64vec3) FMul 465 464
                               Store 380(r42) 466
              467:    125(ptr) AccessChain 113 134
              468:   21(ivec3) Load 467
              469:   28(bvec3) INotEqual 468 138
-             470:   35(fvec3) Select 469 289 262
-             471:   35(fvec3) Load 384(r43)
-             472:   35(fvec3) FMul 471 470
+             470: 35(f64vec3) Select 469 289 262
+             471: 35(f64vec3) Load 384(r43)
+             472: 35(f64vec3) FMul 471 470
                               Store 384(r43) 472
              475:    474(ptr) AccessChain 113 473
              476:     13(int) Load 475
@@ -2277,7 +2277,7 @@
              493:    7(fvec3) VectorTimesScalar 492 491
                               Store 314(r02) 493
              496:    495(ptr) AccessChain 113 494
-             497:   34(float) Load 496
+             497:34(float64_t) Load 496
              498:    6(float) FConvert 497
              499:    7(fvec3) Load 318(r03)
              500:    7(fvec3) VectorTimesScalar 499 498
@@ -2305,7 +2305,7 @@
              521:   14(ivec3) IMul 519 520
                               Store 331(r12) 521
              522:    495(ptr) AccessChain 113 494
-             523:   34(float) Load 522
+             523:34(float64_t) Load 522
              524:     13(int) ConvertFToS 523
              525:   14(ivec3) Load 335(r13)
              526:   14(ivec3) CompositeConstruct 524 524 524
@@ -2334,7 +2334,7 @@
              546:   21(ivec3) IMul 544 545
                               Store 348(r22) 546
              547:    495(ptr) AccessChain 113 494
-             548:   34(float) Load 547
+             548:34(float64_t) Load 547
              549:     20(int) ConvertFToU 548
              550:   21(ivec3) Load 352(r23)
              551:   21(ivec3) CompositeConstruct 549 549 549
@@ -2342,28 +2342,28 @@
                               Store 352(r23) 552
              553:    474(ptr) AccessChain 113 473
              554:     13(int) Load 553
-             555:   34(float) ConvertSToF 554
-             556:   35(fvec3) Load 372(r40)
-             557:   35(fvec3) VectorTimesScalar 556 555
+             555:34(float64_t) ConvertSToF 554
+             556: 35(f64vec3) Load 372(r40)
+             557: 35(f64vec3) VectorTimesScalar 556 555
                               Store 372(r40) 557
              558:    481(ptr) AccessChain 113 488
              559:     20(int) Load 558
-             560:   34(float) ConvertUToF 559
-             561:   35(fvec3) Load 376(r41)
-             562:   35(fvec3) VectorTimesScalar 561 560
+             560:34(float64_t) ConvertUToF 559
+             561: 35(f64vec3) Load 376(r41)
+             562: 35(f64vec3) VectorTimesScalar 561 560
                               Store 376(r41) 562
              563:    515(ptr) AccessChain 113 514
              564:    6(float) Load 563
-             565:   34(float) FConvert 564
-             566:   35(fvec3) Load 380(r42)
-             567:   35(fvec3) VectorTimesScalar 566 565
+             565:34(float64_t) FConvert 564
+             566: 35(f64vec3) Load 380(r42)
+             567: 35(f64vec3) VectorTimesScalar 566 565
                               Store 380(r42) 567
              568:    481(ptr) AccessChain 113 480
              569:     20(int) Load 568
              570:    27(bool) INotEqual 569 137
-             571:   34(float) Select 570 288 261
-             572:   35(fvec3) Load 384(r43)
-             573:   35(fvec3) VectorTimesScalar 572 571
+             571:34(float64_t) Select 570 288 261
+             572: 35(f64vec3) Load 384(r43)
+             573: 35(f64vec3) VectorTimesScalar 572 571
                               Store 384(r43) 573
                               Store 575(c1) 124
                               Store 576(c2) 124
diff --git a/Test/baseResults/hlsl.self_cast.frag.out b/Test/baseResults/hlsl.self_cast.frag.out
new file mode 100644
index 0000000..b2decf3
--- /dev/null
+++ b/Test/baseResults/hlsl.self_cast.frag.out
@@ -0,0 +1,130 @@
+hlsl.self_cast.frag
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5  Function Definition: @main( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:?       Sequence
+0:8        Sequence
+0:8          move second child to first child ( temp structure{})
+0:8            'b' ( temp structure{})
+0:8            'a' ( temp structure{})
+0:?       Sequence
+0:13        Sequence
+0:13          move second child to first child ( temp structure{ temp float f})
+0:13            'b' ( temp structure{ temp float f})
+0:13            'a' ( temp structure{ temp float f})
+0:?       Sequence
+0:18        Sequence
+0:18          move second child to first child ( temp 2-element array of structure{})
+0:18            'b' ( temp 2-element array of structure{})
+0:18            'a' ( temp 2-element array of structure{})
+0:?       Sequence
+0:23        Sequence
+0:23          move second child to first child ( temp 2-element array of structure{ temp float f})
+0:23            'b' ( temp 2-element array of structure{ temp float f})
+0:23            'a' ( temp 2-element array of structure{ temp float f})
+0:5  Function Definition: main( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:5      Function Call: @main( ( temp void)
+0:?   Linker Objects
+
+
+Linked fragment stage:
+
+
+Shader version: 500
+gl_FragCoord origin is upper left
+0:? Sequence
+0:5  Function Definition: @main( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:?       Sequence
+0:8        Sequence
+0:8          move second child to first child ( temp structure{})
+0:8            'b' ( temp structure{})
+0:8            'a' ( temp structure{})
+0:?       Sequence
+0:13        Sequence
+0:13          move second child to first child ( temp structure{ temp float f})
+0:13            'b' ( temp structure{ temp float f})
+0:13            'a' ( temp structure{ temp float f})
+0:?       Sequence
+0:18        Sequence
+0:18          move second child to first child ( temp 2-element array of structure{})
+0:18            'b' ( temp 2-element array of structure{})
+0:18            'a' ( temp 2-element array of structure{})
+0:?       Sequence
+0:23        Sequence
+0:23          move second child to first child ( temp 2-element array of structure{ temp float f})
+0:23            'b' ( temp 2-element array of structure{ temp float f})
+0:23            'a' ( temp 2-element array of structure{ temp float f})
+0:5  Function Definition: main( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:5      Function Call: @main( ( temp void)
+0:?   Linker Objects
+
+// Module Version 10000
+// Generated by (magic number): 80006
+// Id's are bound by 32
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main"
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 6  "@main("
+                              Name 8  "Test0"
+                              Name 10  "b"
+                              Name 11  "a"
+                              Name 14  "Test1"
+                              MemberName 14(Test1) 0  "f"
+                              Name 16  "b"
+                              Name 17  "a"
+                              Name 23  "b"
+                              Name 24  "a"
+                              Name 28  "b"
+                              Name 29  "a"
+               2:             TypeVoid
+               3:             TypeFunction 2
+        8(Test0):             TypeStruct
+               9:             TypePointer Function 8(Test0)
+              13:             TypeFloat 32
+       14(Test1):             TypeStruct 13(float)
+              15:             TypePointer Function 14(Test1)
+              19:             TypeInt 32 0
+              20:     19(int) Constant 2
+              21:             TypeArray 8(Test0) 20
+              22:             TypePointer Function 21
+              26:             TypeArray 14(Test1) 20
+              27:             TypePointer Function 26
+         4(main):           2 Function None 3
+               5:             Label
+              31:           2 FunctionCall 6(@main()
+                              Return
+                              FunctionEnd
+       6(@main():           2 Function None 3
+               7:             Label
+           10(b):      9(ptr) Variable Function
+           11(a):      9(ptr) Variable Function
+           16(b):     15(ptr) Variable Function
+           17(a):     15(ptr) Variable Function
+           23(b):     22(ptr) Variable Function
+           24(a):     22(ptr) Variable Function
+           28(b):     27(ptr) Variable Function
+           29(a):     27(ptr) Variable Function
+              12:    8(Test0) Load 11(a)
+                              Store 10(b) 12
+              18:   14(Test1) Load 17(a)
+                              Store 16(b) 18
+              25:          21 Load 24(a)
+                              Store 23(b) 25
+              30:          26 Load 29(a)
+                              Store 28(b) 30
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out
index 0a2a5b2..15ebe4d 100755
--- a/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/Test/baseResults/hlsl.shapeConv.frag.out
@@ -40,8 +40,7 @@
 0:10      move second child to first child ( temp 3-component vector of float)
 0:10        'u' ( temp 3-component vector of float)
 0:10        Construct vec3 ( temp 3-component vector of float)
-0:10          Construct float ( temp float)
-0:10            'f' ( in float)
+0:10          'f' ( in float)
 0:11      Sequence
 0:11        move second child to first child ( temp 2-component vector of float)
 0:11          'w' ( temp 2-component vector of float)
@@ -203,8 +202,7 @@
 0:10      move second child to first child ( temp 3-component vector of float)
 0:10        'u' ( temp 3-component vector of float)
 0:10        Construct vec3 ( temp 3-component vector of float)
-0:10          Construct float ( temp float)
-0:10            'f' ( in float)
+0:10          'f' ( in float)
 0:11      Sequence
 0:11        move second child to first child ( temp 2-component vector of float)
 0:11          'w' ( temp 2-component vector of float)
diff --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out
index 95f2b85..ca5a980 100644
--- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out
+++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out
@@ -56,13 +56,14 @@
 0:?     Sequence
 0:12      move second child to first child ( temp uint)
 0:?         'dispatchId' ( temp uint)
-0:?         'dispatchId' ( in uint GlobalInvocationID)
+0:?         Construct uint ( temp uint)
+0:?           'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
 0:12      Function Call: @main(u1; ( temp void)
 0:?         'dispatchId' ( temp uint)
 0:?   Linker Objects
 0:?     'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
 0:?     'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
-0:?     'dispatchId' ( in uint GlobalInvocationID)
+0:?     'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
 
 
 Linked compute stage:
@@ -125,24 +126,25 @@
 0:?     Sequence
 0:12      move second child to first child ( temp uint)
 0:?         'dispatchId' ( temp uint)
-0:?         'dispatchId' ( in uint GlobalInvocationID)
+0:?         Construct uint ( temp uint)
+0:?           'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
 0:12      Function Call: @main(u1; ( temp void)
 0:?         'dispatchId' ( temp uint)
 0:?   Linker Objects
 0:?     'g_input' (layout( binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
 0:?     'g_output' (layout( binding=1 rg32ui) uniform uimageBuffer)
-0:?     'dispatchId' ( in uint GlobalInvocationID)
+0:?     'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
 // Generated by (magic number): 80006
-// Id's are bound by 61
+// Id's are bound by 63
 
                               Capability Shader
                               Capability ImageBuffer
                               Capability StorageImageExtendedFormats
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "main" 56
+                              EntryPoint GLCompute 4  "main" 57
                               ExecutionMode 4 LocalSize 256 1 1
                               Source HLSL 500
                               Name 4  "main"
@@ -160,8 +162,8 @@
                               Name 45  "param"
                               Name 50  "g_output"
                               Name 54  "dispatchId"
-                              Name 56  "dispatchId"
-                              Name 58  "param"
+                              Name 57  "dispatchId"
+                              Name 60  "param"
                               Decorate 8 ArrayStride 4
                               MemberDecorate 9 0 NonWritable
                               MemberDecorate 9 0 Offset 0
@@ -171,7 +173,7 @@
                               Decorate 44(g_input) Binding 0
                               Decorate 50(g_output) DescriptorSet 0
                               Decorate 50(g_output) Binding 1
-                              Decorate 56(dispatchId) BuiltIn GlobalInvocationId
+                              Decorate 57(dispatchId) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -193,17 +195,19 @@
               48:             TypeImage 6(int) Buffer nonsampled format:Rg32ui
               49:             TypePointer UniformConstant 48
     50(g_output):     49(ptr) Variable UniformConstant
-              55:             TypePointer Input 6(int)
-  56(dispatchId):     55(ptr) Variable Input
+              55:             TypeVector 6(int) 3
+              56:             TypePointer Input 55(ivec3)
+  57(dispatchId):     56(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
   54(dispatchId):      7(ptr) Variable Function
-       58(param):      7(ptr) Variable Function
-              57:      6(int) Load 56(dispatchId)
-                              Store 54(dispatchId) 57
-              59:      6(int) Load 54(dispatchId)
-                              Store 58(param) 59
-              60:           2 FunctionCall 19(@main(u1;) 58(param)
+       60(param):      7(ptr) Variable Function
+              58:   55(ivec3) Load 57(dispatchId)
+              59:      6(int) CompositeExtract 58 0
+                              Store 54(dispatchId) 59
+              61:      6(int) Load 54(dispatchId)
+                              Store 60(param) 61
+              62:           2 FunctionCall 19(@main(u1;) 60(param)
                               Return
                               FunctionEnd
 15(testLoad(u1;block--u1[0]1;):   11(ivec2) Function None 12
diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out
index 7ca8f11..dca8c4d 100644
--- a/Test/baseResults/hlsl.templatetypes.frag.out
+++ b/Test/baseResults/hlsl.templatetypes.frag.out
@@ -571,8 +571,8 @@
               28:     25(int) Constant 1
               29:             TypePointer Function 6(float)
               31:             TypeFloat 64
-              32:             TypePointer Function 31(float)
-              34:   31(float) Constant 0 1072693248
+              32:             TypePointer Function 31(float64_t)
+              34:31(float64_t) Constant 0 1072693248
               35:             TypeInt 32 0
               36:             TypePointer Function 35(int)
               38:     35(int) Constant 1
@@ -587,10 +587,10 @@
               49:             TypeVector 6(float) 2
               50:             TypePointer Function 49(fvec2)
               52:   49(fvec2) ConstantComposite 13 14
-              53:             TypeVector 31(float) 2
-              54:             TypePointer Function 53(fvec2)
-              56:   31(float) Constant 0 1073741824
-              57:   53(fvec2) ConstantComposite 34 56
+              53:             TypeVector 31(float64_t) 2
+              54:             TypePointer Function 53(f64vec2)
+              56:31(float64_t) Constant 0 1073741824
+              57: 53(f64vec2) ConstantComposite 34 56
               58:             TypeVector 35(int) 2
               59:             TypePointer Function 58(ivec2)
               61:     35(int) Constant 2
@@ -605,10 +605,10 @@
               72:             TypeVector 6(float) 3
               73:             TypePointer Function 72(fvec3)
               75:   72(fvec3) ConstantComposite 13 14 15
-              76:             TypeVector 31(float) 3
-              77:             TypePointer Function 76(fvec3)
-              79:   31(float) Constant 0 1074266112
-              80:   76(fvec3) ConstantComposite 34 56 79
+              76:             TypeVector 31(float64_t) 3
+              77:             TypePointer Function 76(f64vec3)
+              79:31(float64_t) Constant 0 1074266112
+              80: 76(f64vec3) ConstantComposite 34 56 79
               81:             TypeVector 35(int) 3
               82:             TypePointer Function 81(ivec3)
               84:     35(int) Constant 3
@@ -620,10 +620,10 @@
               91:             TypePointer Function 90(ivec4)
               93:     25(int) Constant 4
               94:   90(ivec4) ConstantComposite 28 47 70 93
-              96:             TypeVector 31(float) 4
-              97:             TypePointer Function 96(fvec4)
-              99:   31(float) Constant 0 1074790400
-             100:   96(fvec4) ConstantComposite 34 56 79 99
+              96:             TypeVector 31(float64_t) 4
+              97:             TypePointer Function 96(f64vec4)
+              99:31(float64_t) Constant 0 1074790400
+             100: 96(f64vec4) ConstantComposite 34 56 79 99
              101:             TypeVector 35(int) 4
              102:             TypePointer Function 101(ivec4)
              104:     35(int) Constant 4
diff --git a/Test/baseResults/hlsl.tristream-append.geom.out b/Test/baseResults/hlsl.tristream-append.geom.out
new file mode 100644
index 0000000..2444cfb
--- /dev/null
+++ b/Test/baseResults/hlsl.tristream-append.geom.out
@@ -0,0 +1,212 @@
+hlsl.tristream-append.geom
+Shader version: 500
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:8  Function Definition: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:8    Function Parameters: 
+0:8      'output' ( in structure{})
+0:8      'TriStream' ( out structure{})
+0:?     Sequence
+0:9      Sequence
+0:9        Sequence
+0:9          move second child to first child ( temp structure{})
+0:9            'TriStream' ( out structure{})
+0:9            'output' ( in structure{})
+0:9        EmitVertex ( temp void)
+0:14  Function Definition: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
+0:14    Function Parameters: 
+0:14      'input' ( in 3-element array of structure{})
+0:14      'TriStream' ( out structure{})
+0:?     Sequence
+0:15      Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:15        direct index ( temp structure{})
+0:15          'input' ( in 3-element array of structure{})
+0:15          Constant:
+0:15            0 (const int)
+0:15        'TriStream' ( out structure{})
+0:16      Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:16        direct index ( temp structure{})
+0:16          'input' ( in 3-element array of structure{})
+0:16          Constant:
+0:16            1 (const int)
+0:16        'TriStream' ( out structure{})
+0:17      Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:17        direct index ( temp structure{})
+0:17          'input' ( in 3-element array of structure{})
+0:17          Constant:
+0:17            2 (const int)
+0:17        'TriStream' ( out structure{})
+0:14  Function Definition: main( ( temp void)
+0:14    Function Parameters: 
+0:?     Sequence
+0:14      move second child to first child ( temp 3-element array of structure{})
+0:?         'input' ( temp 3-element array of structure{})
+0:?         'input' ( in 3-element array of structure{})
+0:14      Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
+0:?         'input' ( temp 3-element array of structure{})
+0:?         'TriStream' ( temp structure{})
+0:?   Linker Objects
+
+
+Linked geometry stage:
+
+
+Shader version: 500
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+0:? Sequence
+0:8  Function Definition: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:8    Function Parameters: 
+0:8      'output' ( in structure{})
+0:8      'TriStream' ( out structure{})
+0:?     Sequence
+0:9      Sequence
+0:9        Sequence
+0:9          move second child to first child ( temp structure{})
+0:9            'TriStream' ( out structure{})
+0:9            'output' ( in structure{})
+0:9        EmitVertex ( temp void)
+0:14  Function Definition: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
+0:14    Function Parameters: 
+0:14      'input' ( in 3-element array of structure{})
+0:14      'TriStream' ( out structure{})
+0:?     Sequence
+0:15      Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:15        direct index ( temp structure{})
+0:15          'input' ( in 3-element array of structure{})
+0:15          Constant:
+0:15            0 (const int)
+0:15        'TriStream' ( out structure{})
+0:16      Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:16        direct index ( temp structure{})
+0:16          'input' ( in 3-element array of structure{})
+0:16          Constant:
+0:16            1 (const int)
+0:16        'TriStream' ( out structure{})
+0:17      Function Call: EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1; ( temp void)
+0:17        direct index ( temp structure{})
+0:17          'input' ( in 3-element array of structure{})
+0:17          Constant:
+0:17            2 (const int)
+0:17        'TriStream' ( out structure{})
+0:14  Function Definition: main( ( temp void)
+0:14    Function Parameters: 
+0:?     Sequence
+0:14      move second child to first child ( temp 3-element array of structure{})
+0:?         'input' ( temp 3-element array of structure{})
+0:?         'input' ( in 3-element array of structure{})
+0:14      Function Call: @main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1; ( temp void)
+0:?         'input' ( temp 3-element array of structure{})
+0:?         'TriStream' ( temp structure{})
+0:?   Linker Objects
+
+// Module Version 10000
+// Generated by (magic number): 80006
+// Id's are bound by 57
+
+                              Capability Geometry
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Geometry 4  "main"
+                              ExecutionMode 4 Triangles
+                              ExecutionMode 4 Invocations 1
+                              ExecutionMode 4 OutputTriangleStrip
+                              ExecutionMode 4 OutputVertices 3
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 6  "GSPS_INPUT"
+                              Name 11  "EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;"
+                              Name 9  "output"
+                              Name 10  "TriStream"
+                              Name 20  "@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;"
+                              Name 18  "input"
+                              Name 19  "TriStream"
+                              Name 23  "TriStream"
+                              Name 27  "param"
+                              Name 30  "param"
+                              Name 34  "param"
+                              Name 37  "param"
+                              Name 41  "param"
+                              Name 44  "param"
+                              Name 47  "input"
+                              Name 49  "input"
+                              Name 51  "TriStream"
+                              Name 52  "param"
+                              Name 54  "param"
+               2:             TypeVoid
+               3:             TypeFunction 2
+   6(GSPS_INPUT):             TypeStruct
+               7:             TypePointer Function 6(GSPS_INPUT)
+               8:             TypeFunction 2 7(ptr) 7(ptr)
+              13:             TypeInt 32 0
+              14:     13(int) Constant 3
+              15:             TypeArray 6(GSPS_INPUT) 14
+              16:             TypePointer Function 15
+              17:             TypeFunction 2 16(ptr) 7(ptr)
+              22:             TypePointer Output 6(GSPS_INPUT)
+   23(TriStream):     22(ptr) Variable Output
+              25:             TypeInt 32 1
+              26:     25(int) Constant 0
+              33:     25(int) Constant 1
+              40:     25(int) Constant 2
+              48:             TypePointer Input 15
+       49(input):     48(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+       47(input):     16(ptr) Variable Function
+   51(TriStream):      7(ptr) Variable Function
+       52(param):     16(ptr) Variable Function
+       54(param):      7(ptr) Variable Function
+              50:          15 Load 49(input)
+                              Store 47(input) 50
+              53:          15 Load 47(input)
+                              Store 52(param) 53
+              55:           2 FunctionCall 20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;) 52(param) 54(param)
+              56:6(GSPS_INPUT) Load 54(param)
+                              Store 51(TriStream) 56
+                              Return
+                              FunctionEnd
+11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;):           2 Function None 8
+       9(output):      7(ptr) FunctionParameter
+   10(TriStream):      7(ptr) FunctionParameter
+              12:             Label
+              24:6(GSPS_INPUT) Load 9(output)
+                              Store 23(TriStream) 24
+                              EmitVertex
+                              Return
+                              FunctionEnd
+20(@main(struct-GSPS_INPUT1[3];struct-GSPS_INPUT1;):           2 Function None 17
+       18(input):     16(ptr) FunctionParameter
+   19(TriStream):      7(ptr) FunctionParameter
+              21:             Label
+       27(param):      7(ptr) Variable Function
+       30(param):      7(ptr) Variable Function
+       34(param):      7(ptr) Variable Function
+       37(param):      7(ptr) Variable Function
+       41(param):      7(ptr) Variable Function
+       44(param):      7(ptr) Variable Function
+              28:      7(ptr) AccessChain 18(input) 26
+              29:6(GSPS_INPUT) Load 28
+                              Store 27(param) 29
+              31:           2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 27(param) 30(param)
+              32:6(GSPS_INPUT) Load 30(param)
+                              Store 19(TriStream) 32
+              35:      7(ptr) AccessChain 18(input) 33
+              36:6(GSPS_INPUT) Load 35
+                              Store 34(param) 36
+              38:           2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 34(param) 37(param)
+              39:6(GSPS_INPUT) Load 37(param)
+                              Store 19(TriStream) 39
+              42:      7(ptr) AccessChain 18(input) 40
+              43:6(GSPS_INPUT) Load 42
+                              Store 41(param) 43
+              45:           2 FunctionCall 11(EmitVertex(struct-GSPS_INPUT1;struct-GSPS_INPUT1;) 41(param) 44(param)
+              46:6(GSPS_INPUT) Load 44(param)
+                              Store 19(TriStream) 46
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out
index 5c84fb3..48a87c6 100644
--- a/Test/baseResults/hlsl.wavebroadcast.comp.out
+++ b/Test/baseResults/hlsl.wavebroadcast.comp.out
@@ -2346,8 +2346,8 @@
               16:             TypeFloat 32
               17:             TypeVector 16(float) 4
               18:             TypeFloat 64
-              19:             TypeVector 18(float) 4
-       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+              19:             TypeVector 18(float64_t) 4
+       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
               21:             TypeRuntimeArray 20(Types)
         22(data):             TypeStruct 21
               23:             TypePointer Uniform 22(data)
@@ -2371,10 +2371,10 @@
              137:             TypeVector 16(float) 2
              149:             TypeVector 16(float) 3
              159:     14(int) Constant 3
-             162:             TypePointer Uniform 19(fvec4)
-             171:             TypePointer Uniform 18(float)
-             180:             TypeVector 18(float) 2
-             192:             TypeVector 18(float) 3
+             162:             TypePointer Uniform 19(f64vec4)
+             171:             TypePointer Uniform 18(float64_t)
+             180:             TypeVector 18(float64_t) 2
+             192:             TypeVector 18(float64_t) 3
              353:             TypePointer Input 7(ivec3)
         354(dti):    353(ptr) Variable Input
        4(CSMain):           2 Function None 3
@@ -2522,8 +2522,8 @@
              160:     27(ptr) AccessChain 10(dti) 26
              161:      6(int) Load 160
              163:    162(ptr) AccessChain 24(data) 25 161 159
-             164:   19(fvec4) Load 163
-             165:   19(fvec4) GroupNonUniformBroadcastFirst 36 164
+             164: 19(f64vec4) Load 163
+             165: 19(f64vec4) GroupNonUniformBroadcastFirst 36 164
              166:    162(ptr) AccessChain 24(data) 25 158 159
                               Store 166 165
              167:     27(ptr) AccessChain 10(dti) 26
@@ -2531,8 +2531,8 @@
              169:     27(ptr) AccessChain 10(dti) 26
              170:      6(int) Load 169
              172:    171(ptr) AccessChain 24(data) 25 170 159 26
-             173:   18(float) Load 172
-             174:   18(float) GroupNonUniformBroadcastFirst 36 173
+             173:18(float64_t) Load 172
+             174:18(float64_t) GroupNonUniformBroadcastFirst 36 173
              175:    171(ptr) AccessChain 24(data) 25 168 159 26
                               Store 175 174
              176:     27(ptr) AccessChain 10(dti) 26
@@ -2540,24 +2540,24 @@
              178:     27(ptr) AccessChain 10(dti) 26
              179:      6(int) Load 178
              181:    162(ptr) AccessChain 24(data) 25 179 159
-             182:   19(fvec4) Load 181
-             183:  180(fvec2) VectorShuffle 182 182 0 1
-             184:  180(fvec2) GroupNonUniformBroadcastFirst 36 183
+             182: 19(f64vec4) Load 181
+             183:180(f64vec2) VectorShuffle 182 182 0 1
+             184:180(f64vec2) GroupNonUniformBroadcastFirst 36 183
              185:    162(ptr) AccessChain 24(data) 25 177 159
-             186:   19(fvec4) Load 185
-             187:   19(fvec4) VectorShuffle 186 184 4 5 2 3
+             186: 19(f64vec4) Load 185
+             187: 19(f64vec4) VectorShuffle 186 184 4 5 2 3
                               Store 185 187
              188:     27(ptr) AccessChain 10(dti) 26
              189:      6(int) Load 188
              190:     27(ptr) AccessChain 10(dti) 26
              191:      6(int) Load 190
              193:    162(ptr) AccessChain 24(data) 25 191 159
-             194:   19(fvec4) Load 193
-             195:  192(fvec3) VectorShuffle 194 194 0 1 2
-             196:  192(fvec3) GroupNonUniformBroadcastFirst 36 195
+             194: 19(f64vec4) Load 193
+             195:192(f64vec3) VectorShuffle 194 194 0 1 2
+             196:192(f64vec3) GroupNonUniformBroadcastFirst 36 195
              197:    162(ptr) AccessChain 24(data) 25 189 159
-             198:   19(fvec4) Load 197
-             199:   19(fvec4) VectorShuffle 198 196 4 5 6 3
+             198: 19(f64vec4) Load 197
+             199: 19(f64vec4) VectorShuffle 198 196 4 5 6 3
                               Store 197 199
              200:     27(ptr) AccessChain 10(dti) 26
              201:      6(int) Load 200
@@ -2690,8 +2690,8 @@
              316:     27(ptr) AccessChain 10(dti) 26
              317:      6(int) Load 316
              318:    162(ptr) AccessChain 24(data) 25 317 159
-             319:   19(fvec4) Load 318
-             320:   19(fvec4) GroupNonUniformBroadcastFirst 36 319
+             319: 19(f64vec4) Load 318
+             320: 19(f64vec4) GroupNonUniformBroadcastFirst 36 319
              321:    162(ptr) AccessChain 24(data) 25 315 159
                               Store 321 320
              322:     27(ptr) AccessChain 10(dti) 26
@@ -2699,8 +2699,8 @@
              324:     27(ptr) AccessChain 10(dti) 26
              325:      6(int) Load 324
              326:    171(ptr) AccessChain 24(data) 25 325 159 26
-             327:   18(float) Load 326
-             328:   18(float) GroupNonUniformBroadcastFirst 36 327
+             327:18(float64_t) Load 326
+             328:18(float64_t) GroupNonUniformBroadcastFirst 36 327
              329:    171(ptr) AccessChain 24(data) 25 323 159 26
                               Store 329 328
              330:     27(ptr) AccessChain 10(dti) 26
@@ -2708,24 +2708,24 @@
              332:     27(ptr) AccessChain 10(dti) 26
              333:      6(int) Load 332
              334:    162(ptr) AccessChain 24(data) 25 333 159
-             335:   19(fvec4) Load 334
-             336:  180(fvec2) VectorShuffle 335 335 0 1
-             337:  180(fvec2) GroupNonUniformBroadcastFirst 36 336
+             335: 19(f64vec4) Load 334
+             336:180(f64vec2) VectorShuffle 335 335 0 1
+             337:180(f64vec2) GroupNonUniformBroadcastFirst 36 336
              338:    162(ptr) AccessChain 24(data) 25 331 159
-             339:   19(fvec4) Load 338
-             340:   19(fvec4) VectorShuffle 339 337 4 5 2 3
+             339: 19(f64vec4) Load 338
+             340: 19(f64vec4) VectorShuffle 339 337 4 5 2 3
                               Store 338 340
              341:     27(ptr) AccessChain 10(dti) 26
              342:      6(int) Load 341
              343:     27(ptr) AccessChain 10(dti) 26
              344:      6(int) Load 343
              345:    162(ptr) AccessChain 24(data) 25 344 159
-             346:   19(fvec4) Load 345
-             347:  192(fvec3) VectorShuffle 346 346 0 1 2
-             348:  192(fvec3) GroupNonUniformBroadcastFirst 36 347
+             346: 19(f64vec4) Load 345
+             347:192(f64vec3) VectorShuffle 346 346 0 1 2
+             348:192(f64vec3) GroupNonUniformBroadcastFirst 36 347
              349:    162(ptr) AccessChain 24(data) 25 342 159
-             350:   19(fvec4) Load 349
-             351:   19(fvec4) VectorShuffle 350 348 4 5 6 3
+             350: 19(f64vec4) Load 349
+             351: 19(f64vec4) VectorShuffle 350 348 4 5 6 3
                               Store 349 351
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out
index fbc2055..637b8ba 100644
--- a/Test/baseResults/hlsl.waveprefix.comp.out
+++ b/Test/baseResults/hlsl.waveprefix.comp.out
@@ -2370,8 +2370,8 @@
               16:             TypeFloat 32
               17:             TypeVector 16(float) 4
               18:             TypeFloat 64
-              19:             TypeVector 18(float) 4
-       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+              19:             TypeVector 18(float64_t) 4
+       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
               21:             TypeRuntimeArray 20(Types)
         22(data):             TypeStruct 21
               23:             TypePointer Uniform 22(data)
@@ -2394,10 +2394,10 @@
              136:             TypeVector 16(float) 2
              148:             TypeVector 16(float) 3
              158:     14(int) Constant 3
-             161:             TypePointer Uniform 19(fvec4)
-             170:             TypePointer Uniform 18(float)
-             179:             TypeVector 18(float) 2
-             191:             TypeVector 18(float) 3
+             161:             TypePointer Uniform 19(f64vec4)
+             170:             TypePointer Uniform 18(float64_t)
+             179:             TypeVector 18(float64_t) 2
+             191:             TypeVector 18(float64_t) 3
              357:             TypeBool
              363:             TypePointer Input 7(ivec3)
         364(dti):    363(ptr) Variable Input
@@ -2546,8 +2546,8 @@
              159:     27(ptr) AccessChain 10(dti) 26
              160:      6(int) Load 159
              162:    161(ptr) AccessChain 24(data) 25 160 158
-             163:   19(fvec4) Load 162
-             164:   19(fvec4) GroupNonUniformFAdd 35 InclusiveScan 163
+             163: 19(f64vec4) Load 162
+             164: 19(f64vec4) GroupNonUniformFAdd 35 InclusiveScan 163
              165:    161(ptr) AccessChain 24(data) 25 157 158
                               Store 165 164
              166:     27(ptr) AccessChain 10(dti) 26
@@ -2555,8 +2555,8 @@
              168:     27(ptr) AccessChain 10(dti) 26
              169:      6(int) Load 168
              171:    170(ptr) AccessChain 24(data) 25 169 158 26
-             172:   18(float) Load 171
-             173:   18(float) GroupNonUniformFAdd 35 InclusiveScan 172
+             172:18(float64_t) Load 171
+             173:18(float64_t) GroupNonUniformFAdd 35 InclusiveScan 172
              174:    170(ptr) AccessChain 24(data) 25 167 158 26
                               Store 174 173
              175:     27(ptr) AccessChain 10(dti) 26
@@ -2564,24 +2564,24 @@
              177:     27(ptr) AccessChain 10(dti) 26
              178:      6(int) Load 177
              180:    161(ptr) AccessChain 24(data) 25 178 158
-             181:   19(fvec4) Load 180
-             182:  179(fvec2) VectorShuffle 181 181 0 1
-             183:  179(fvec2) GroupNonUniformFAdd 35 InclusiveScan 182
+             181: 19(f64vec4) Load 180
+             182:179(f64vec2) VectorShuffle 181 181 0 1
+             183:179(f64vec2) GroupNonUniformFAdd 35 InclusiveScan 182
              184:    161(ptr) AccessChain 24(data) 25 176 158
-             185:   19(fvec4) Load 184
-             186:   19(fvec4) VectorShuffle 185 183 4 5 2 3
+             185: 19(f64vec4) Load 184
+             186: 19(f64vec4) VectorShuffle 185 183 4 5 2 3
                               Store 184 186
              187:     27(ptr) AccessChain 10(dti) 26
              188:      6(int) Load 187
              189:     27(ptr) AccessChain 10(dti) 26
              190:      6(int) Load 189
              192:    161(ptr) AccessChain 24(data) 25 190 158
-             193:   19(fvec4) Load 192
-             194:  191(fvec3) VectorShuffle 193 193 0 1 2
-             195:  191(fvec3) GroupNonUniformFAdd 35 InclusiveScan 194
+             193: 19(f64vec4) Load 192
+             194:191(f64vec3) VectorShuffle 193 193 0 1 2
+             195:191(f64vec3) GroupNonUniformFAdd 35 InclusiveScan 194
              196:    161(ptr) AccessChain 24(data) 25 188 158
-             197:   19(fvec4) Load 196
-             198:   19(fvec4) VectorShuffle 197 195 4 5 6 3
+             197: 19(f64vec4) Load 196
+             198: 19(f64vec4) VectorShuffle 197 195 4 5 6 3
                               Store 196 198
              199:     27(ptr) AccessChain 10(dti) 26
              200:      6(int) Load 199
@@ -2714,8 +2714,8 @@
              315:     27(ptr) AccessChain 10(dti) 26
              316:      6(int) Load 315
              317:    161(ptr) AccessChain 24(data) 25 316 158
-             318:   19(fvec4) Load 317
-             319:   19(fvec4) GroupNonUniformFMul 35 InclusiveScan 318
+             318: 19(f64vec4) Load 317
+             319: 19(f64vec4) GroupNonUniformFMul 35 InclusiveScan 318
              320:    161(ptr) AccessChain 24(data) 25 314 158
                               Store 320 319
              321:     27(ptr) AccessChain 10(dti) 26
@@ -2723,8 +2723,8 @@
              323:     27(ptr) AccessChain 10(dti) 26
              324:      6(int) Load 323
              325:    170(ptr) AccessChain 24(data) 25 324 158 26
-             326:   18(float) Load 325
-             327:   18(float) GroupNonUniformFMul 35 InclusiveScan 326
+             326:18(float64_t) Load 325
+             327:18(float64_t) GroupNonUniformFMul 35 InclusiveScan 326
              328:    170(ptr) AccessChain 24(data) 25 322 158 26
                               Store 328 327
              329:     27(ptr) AccessChain 10(dti) 26
@@ -2732,24 +2732,24 @@
              331:     27(ptr) AccessChain 10(dti) 26
              332:      6(int) Load 331
              333:    161(ptr) AccessChain 24(data) 25 332 158
-             334:   19(fvec4) Load 333
-             335:  179(fvec2) VectorShuffle 334 334 0 1
-             336:  179(fvec2) GroupNonUniformFMul 35 InclusiveScan 335
+             334: 19(f64vec4) Load 333
+             335:179(f64vec2) VectorShuffle 334 334 0 1
+             336:179(f64vec2) GroupNonUniformFMul 35 InclusiveScan 335
              337:    161(ptr) AccessChain 24(data) 25 330 158
-             338:   19(fvec4) Load 337
-             339:   19(fvec4) VectorShuffle 338 336 4 5 2 3
+             338: 19(f64vec4) Load 337
+             339: 19(f64vec4) VectorShuffle 338 336 4 5 2 3
                               Store 337 339
              340:     27(ptr) AccessChain 10(dti) 26
              341:      6(int) Load 340
              342:     27(ptr) AccessChain 10(dti) 26
              343:      6(int) Load 342
              344:    161(ptr) AccessChain 24(data) 25 343 158
-             345:   19(fvec4) Load 344
-             346:  191(fvec3) VectorShuffle 345 345 0 1 2
-             347:  191(fvec3) GroupNonUniformFMul 35 InclusiveScan 346
+             345: 19(f64vec4) Load 344
+             346:191(f64vec3) VectorShuffle 345 345 0 1 2
+             347:191(f64vec3) GroupNonUniformFMul 35 InclusiveScan 346
              348:    161(ptr) AccessChain 24(data) 25 341 158
-             349:   19(fvec4) Load 348
-             350:   19(fvec4) VectorShuffle 349 347 4 5 6 3
+             349: 19(f64vec4) Load 348
+             350: 19(f64vec4) VectorShuffle 349 347 4 5 6 3
                               Store 348 350
              351:     27(ptr) AccessChain 10(dti) 26
              352:      6(int) Load 351
diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out
index 5e6af59..8030b4b 100644
--- a/Test/baseResults/hlsl.wavequad.comp.out
+++ b/Test/baseResults/hlsl.wavequad.comp.out
@@ -8073,8 +8073,8 @@
               16:             TypeFloat 32
               17:             TypeVector 16(float) 4
               18:             TypeFloat 64
-              19:             TypeVector 18(float) 4
-       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+              19:             TypeVector 18(float64_t) 4
+       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
               21:             TypeRuntimeArray 20(Types)
         22(data):             TypeStruct 21
               23:             TypePointer Uniform 22(data)
@@ -8097,10 +8097,10 @@
              136:             TypeVector 16(float) 2
              148:             TypeVector 16(float) 3
              158:     14(int) Constant 3
-             161:             TypePointer Uniform 19(fvec4)
-             170:             TypePointer Uniform 18(float)
-             179:             TypeVector 18(float) 2
-             191:             TypeVector 18(float) 3
+             161:             TypePointer Uniform 19(f64vec4)
+             170:             TypePointer Uniform 18(float64_t)
+             179:             TypeVector 18(float64_t) 2
+             191:             TypeVector 18(float64_t) 3
              205:      6(int) Constant 1
              358:      6(int) Constant 2
             1114:             TypePointer Input 7(ivec3)
@@ -8250,8 +8250,8 @@
              159:     27(ptr) AccessChain 10(dti) 26
              160:      6(int) Load 159
              162:    161(ptr) AccessChain 24(data) 25 160 158
-             163:   19(fvec4) Load 162
-             164:   19(fvec4) GroupNonUniformQuadBroadcast 35 163 26
+             163: 19(f64vec4) Load 162
+             164: 19(f64vec4) GroupNonUniformQuadBroadcast 35 163 26
              165:    161(ptr) AccessChain 24(data) 25 157 158
                               Store 165 164
              166:     27(ptr) AccessChain 10(dti) 26
@@ -8259,8 +8259,8 @@
              168:     27(ptr) AccessChain 10(dti) 26
              169:      6(int) Load 168
              171:    170(ptr) AccessChain 24(data) 25 169 158 26
-             172:   18(float) Load 171
-             173:   18(float) GroupNonUniformQuadBroadcast 35 172 26
+             172:18(float64_t) Load 171
+             173:18(float64_t) GroupNonUniformQuadBroadcast 35 172 26
              174:    170(ptr) AccessChain 24(data) 25 167 158 26
                               Store 174 173
              175:     27(ptr) AccessChain 10(dti) 26
@@ -8268,24 +8268,24 @@
              177:     27(ptr) AccessChain 10(dti) 26
              178:      6(int) Load 177
              180:    161(ptr) AccessChain 24(data) 25 178 158
-             181:   19(fvec4) Load 180
-             182:  179(fvec2) VectorShuffle 181 181 0 1
-             183:  179(fvec2) GroupNonUniformQuadBroadcast 35 182 26
+             181: 19(f64vec4) Load 180
+             182:179(f64vec2) VectorShuffle 181 181 0 1
+             183:179(f64vec2) GroupNonUniformQuadBroadcast 35 182 26
              184:    161(ptr) AccessChain 24(data) 25 176 158
-             185:   19(fvec4) Load 184
-             186:   19(fvec4) VectorShuffle 185 183 4 5 2 3
+             185: 19(f64vec4) Load 184
+             186: 19(f64vec4) VectorShuffle 185 183 4 5 2 3
                               Store 184 186
              187:     27(ptr) AccessChain 10(dti) 26
              188:      6(int) Load 187
              189:     27(ptr) AccessChain 10(dti) 26
              190:      6(int) Load 189
              192:    161(ptr) AccessChain 24(data) 25 190 158
-             193:   19(fvec4) Load 192
-             194:  191(fvec3) VectorShuffle 193 193 0 1 2
-             195:  191(fvec3) GroupNonUniformQuadBroadcast 35 194 26
+             193: 19(f64vec4) Load 192
+             194:191(f64vec3) VectorShuffle 193 193 0 1 2
+             195:191(f64vec3) GroupNonUniformQuadBroadcast 35 194 26
              196:    161(ptr) AccessChain 24(data) 25 188 158
-             197:   19(fvec4) Load 196
-             198:   19(fvec4) VectorShuffle 197 195 4 5 6 3
+             197: 19(f64vec4) Load 196
+             198: 19(f64vec4) VectorShuffle 197 195 4 5 6 3
                               Store 196 198
              199:     27(ptr) AccessChain 10(dti) 26
              200:      6(int) Load 199
@@ -8418,8 +8418,8 @@
              316:     27(ptr) AccessChain 10(dti) 26
              317:      6(int) Load 316
              318:    161(ptr) AccessChain 24(data) 25 317 158
-             319:   19(fvec4) Load 318
-             320:   19(fvec4) GroupNonUniformQuadBroadcast 35 319 205
+             319: 19(f64vec4) Load 318
+             320: 19(f64vec4) GroupNonUniformQuadBroadcast 35 319 205
              321:    161(ptr) AccessChain 24(data) 25 315 158
                               Store 321 320
              322:     27(ptr) AccessChain 10(dti) 26
@@ -8427,8 +8427,8 @@
              324:     27(ptr) AccessChain 10(dti) 26
              325:      6(int) Load 324
              326:    170(ptr) AccessChain 24(data) 25 325 158 26
-             327:   18(float) Load 326
-             328:   18(float) GroupNonUniformQuadBroadcast 35 327 205
+             327:18(float64_t) Load 326
+             328:18(float64_t) GroupNonUniformQuadBroadcast 35 327 205
              329:    170(ptr) AccessChain 24(data) 25 323 158 26
                               Store 329 328
              330:     27(ptr) AccessChain 10(dti) 26
@@ -8436,24 +8436,24 @@
              332:     27(ptr) AccessChain 10(dti) 26
              333:      6(int) Load 332
              334:    161(ptr) AccessChain 24(data) 25 333 158
-             335:   19(fvec4) Load 334
-             336:  179(fvec2) VectorShuffle 335 335 0 1
-             337:  179(fvec2) GroupNonUniformQuadBroadcast 35 336 205
+             335: 19(f64vec4) Load 334
+             336:179(f64vec2) VectorShuffle 335 335 0 1
+             337:179(f64vec2) GroupNonUniformQuadBroadcast 35 336 205
              338:    161(ptr) AccessChain 24(data) 25 331 158
-             339:   19(fvec4) Load 338
-             340:   19(fvec4) VectorShuffle 339 337 4 5 2 3
+             339: 19(f64vec4) Load 338
+             340: 19(f64vec4) VectorShuffle 339 337 4 5 2 3
                               Store 338 340
              341:     27(ptr) AccessChain 10(dti) 26
              342:      6(int) Load 341
              343:     27(ptr) AccessChain 10(dti) 26
              344:      6(int) Load 343
              345:    161(ptr) AccessChain 24(data) 25 344 158
-             346:   19(fvec4) Load 345
-             347:  191(fvec3) VectorShuffle 346 346 0 1 2
-             348:  191(fvec3) GroupNonUniformQuadBroadcast 35 347 205
+             346: 19(f64vec4) Load 345
+             347:191(f64vec3) VectorShuffle 346 346 0 1 2
+             348:191(f64vec3) GroupNonUniformQuadBroadcast 35 347 205
              349:    161(ptr) AccessChain 24(data) 25 342 158
-             350:   19(fvec4) Load 349
-             351:   19(fvec4) VectorShuffle 350 348 4 5 6 3
+             350: 19(f64vec4) Load 349
+             351: 19(f64vec4) VectorShuffle 350 348 4 5 6 3
                               Store 349 351
              352:     27(ptr) AccessChain 10(dti) 26
              353:      6(int) Load 352
@@ -8586,8 +8586,8 @@
              469:     27(ptr) AccessChain 10(dti) 26
              470:      6(int) Load 469
              471:    161(ptr) AccessChain 24(data) 25 470 158
-             472:   19(fvec4) Load 471
-             473:   19(fvec4) GroupNonUniformQuadBroadcast 35 472 358
+             472: 19(f64vec4) Load 471
+             473: 19(f64vec4) GroupNonUniformQuadBroadcast 35 472 358
              474:    161(ptr) AccessChain 24(data) 25 468 158
                               Store 474 473
              475:     27(ptr) AccessChain 10(dti) 26
@@ -8595,8 +8595,8 @@
              477:     27(ptr) AccessChain 10(dti) 26
              478:      6(int) Load 477
              479:    170(ptr) AccessChain 24(data) 25 478 158 26
-             480:   18(float) Load 479
-             481:   18(float) GroupNonUniformQuadBroadcast 35 480 358
+             480:18(float64_t) Load 479
+             481:18(float64_t) GroupNonUniformQuadBroadcast 35 480 358
              482:    170(ptr) AccessChain 24(data) 25 476 158 26
                               Store 482 481
              483:     27(ptr) AccessChain 10(dti) 26
@@ -8604,24 +8604,24 @@
              485:     27(ptr) AccessChain 10(dti) 26
              486:      6(int) Load 485
              487:    161(ptr) AccessChain 24(data) 25 486 158
-             488:   19(fvec4) Load 487
-             489:  179(fvec2) VectorShuffle 488 488 0 1
-             490:  179(fvec2) GroupNonUniformQuadBroadcast 35 489 358
+             488: 19(f64vec4) Load 487
+             489:179(f64vec2) VectorShuffle 488 488 0 1
+             490:179(f64vec2) GroupNonUniformQuadBroadcast 35 489 358
              491:    161(ptr) AccessChain 24(data) 25 484 158
-             492:   19(fvec4) Load 491
-             493:   19(fvec4) VectorShuffle 492 490 4 5 2 3
+             492: 19(f64vec4) Load 491
+             493: 19(f64vec4) VectorShuffle 492 490 4 5 2 3
                               Store 491 493
              494:     27(ptr) AccessChain 10(dti) 26
              495:      6(int) Load 494
              496:     27(ptr) AccessChain 10(dti) 26
              497:      6(int) Load 496
              498:    161(ptr) AccessChain 24(data) 25 497 158
-             499:   19(fvec4) Load 498
-             500:  191(fvec3) VectorShuffle 499 499 0 1 2
-             501:  191(fvec3) GroupNonUniformQuadBroadcast 35 500 358
+             499: 19(f64vec4) Load 498
+             500:191(f64vec3) VectorShuffle 499 499 0 1 2
+             501:191(f64vec3) GroupNonUniformQuadBroadcast 35 500 358
              502:    161(ptr) AccessChain 24(data) 25 495 158
-             503:   19(fvec4) Load 502
-             504:   19(fvec4) VectorShuffle 503 501 4 5 6 3
+             503: 19(f64vec4) Load 502
+             504: 19(f64vec4) VectorShuffle 503 501 4 5 6 3
                               Store 502 504
              505:     27(ptr) AccessChain 10(dti) 26
              506:      6(int) Load 505
@@ -8754,8 +8754,8 @@
              621:     27(ptr) AccessChain 10(dti) 26
              622:      6(int) Load 621
              623:    161(ptr) AccessChain 24(data) 25 622 158
-             624:   19(fvec4) Load 623
-             625:   19(fvec4) GroupNonUniformQuadBroadcast 35 624 35
+             624: 19(f64vec4) Load 623
+             625: 19(f64vec4) GroupNonUniformQuadBroadcast 35 624 35
              626:    161(ptr) AccessChain 24(data) 25 620 158
                               Store 626 625
              627:     27(ptr) AccessChain 10(dti) 26
@@ -8763,8 +8763,8 @@
              629:     27(ptr) AccessChain 10(dti) 26
              630:      6(int) Load 629
              631:    170(ptr) AccessChain 24(data) 25 630 158 26
-             632:   18(float) Load 631
-             633:   18(float) GroupNonUniformQuadBroadcast 35 632 35
+             632:18(float64_t) Load 631
+             633:18(float64_t) GroupNonUniformQuadBroadcast 35 632 35
              634:    170(ptr) AccessChain 24(data) 25 628 158 26
                               Store 634 633
              635:     27(ptr) AccessChain 10(dti) 26
@@ -8772,24 +8772,24 @@
              637:     27(ptr) AccessChain 10(dti) 26
              638:      6(int) Load 637
              639:    161(ptr) AccessChain 24(data) 25 638 158
-             640:   19(fvec4) Load 639
-             641:  179(fvec2) VectorShuffle 640 640 0 1
-             642:  179(fvec2) GroupNonUniformQuadBroadcast 35 641 35
+             640: 19(f64vec4) Load 639
+             641:179(f64vec2) VectorShuffle 640 640 0 1
+             642:179(f64vec2) GroupNonUniformQuadBroadcast 35 641 35
              643:    161(ptr) AccessChain 24(data) 25 636 158
-             644:   19(fvec4) Load 643
-             645:   19(fvec4) VectorShuffle 644 642 4 5 2 3
+             644: 19(f64vec4) Load 643
+             645: 19(f64vec4) VectorShuffle 644 642 4 5 2 3
                               Store 643 645
              646:     27(ptr) AccessChain 10(dti) 26
              647:      6(int) Load 646
              648:     27(ptr) AccessChain 10(dti) 26
              649:      6(int) Load 648
              650:    161(ptr) AccessChain 24(data) 25 649 158
-             651:   19(fvec4) Load 650
-             652:  191(fvec3) VectorShuffle 651 651 0 1 2
-             653:  191(fvec3) GroupNonUniformQuadBroadcast 35 652 35
+             651: 19(f64vec4) Load 650
+             652:191(f64vec3) VectorShuffle 651 651 0 1 2
+             653:191(f64vec3) GroupNonUniformQuadBroadcast 35 652 35
              654:    161(ptr) AccessChain 24(data) 25 647 158
-             655:   19(fvec4) Load 654
-             656:   19(fvec4) VectorShuffle 655 653 4 5 6 3
+             655: 19(f64vec4) Load 654
+             656: 19(f64vec4) VectorShuffle 655 653 4 5 6 3
                               Store 654 656
              657:     27(ptr) AccessChain 10(dti) 26
              658:      6(int) Load 657
@@ -8922,8 +8922,8 @@
              773:     27(ptr) AccessChain 10(dti) 26
              774:      6(int) Load 773
              775:    161(ptr) AccessChain 24(data) 25 774 158
-             776:   19(fvec4) Load 775
-             777:   19(fvec4) GroupNonUniformQuadSwap 35 776 26
+             776: 19(f64vec4) Load 775
+             777: 19(f64vec4) GroupNonUniformQuadSwap 35 776 26
              778:    161(ptr) AccessChain 24(data) 25 772 158
                               Store 778 777
              779:     27(ptr) AccessChain 10(dti) 26
@@ -8931,8 +8931,8 @@
              781:     27(ptr) AccessChain 10(dti) 26
              782:      6(int) Load 781
              783:    170(ptr) AccessChain 24(data) 25 782 158 26
-             784:   18(float) Load 783
-             785:   18(float) GroupNonUniformQuadSwap 35 784 26
+             784:18(float64_t) Load 783
+             785:18(float64_t) GroupNonUniformQuadSwap 35 784 26
              786:    170(ptr) AccessChain 24(data) 25 780 158 26
                               Store 786 785
              787:     27(ptr) AccessChain 10(dti) 26
@@ -8940,24 +8940,24 @@
              789:     27(ptr) AccessChain 10(dti) 26
              790:      6(int) Load 789
              791:    161(ptr) AccessChain 24(data) 25 790 158
-             792:   19(fvec4) Load 791
-             793:  179(fvec2) VectorShuffle 792 792 0 1
-             794:  179(fvec2) GroupNonUniformQuadSwap 35 793 26
+             792: 19(f64vec4) Load 791
+             793:179(f64vec2) VectorShuffle 792 792 0 1
+             794:179(f64vec2) GroupNonUniformQuadSwap 35 793 26
              795:    161(ptr) AccessChain 24(data) 25 788 158
-             796:   19(fvec4) Load 795
-             797:   19(fvec4) VectorShuffle 796 794 4 5 2 3
+             796: 19(f64vec4) Load 795
+             797: 19(f64vec4) VectorShuffle 796 794 4 5 2 3
                               Store 795 797
              798:     27(ptr) AccessChain 10(dti) 26
              799:      6(int) Load 798
              800:     27(ptr) AccessChain 10(dti) 26
              801:      6(int) Load 800
              802:    161(ptr) AccessChain 24(data) 25 801 158
-             803:   19(fvec4) Load 802
-             804:  191(fvec3) VectorShuffle 803 803 0 1 2
-             805:  191(fvec3) GroupNonUniformQuadSwap 35 804 26
+             803: 19(f64vec4) Load 802
+             804:191(f64vec3) VectorShuffle 803 803 0 1 2
+             805:191(f64vec3) GroupNonUniformQuadSwap 35 804 26
              806:    161(ptr) AccessChain 24(data) 25 799 158
-             807:   19(fvec4) Load 806
-             808:   19(fvec4) VectorShuffle 807 805 4 5 6 3
+             807: 19(f64vec4) Load 806
+             808: 19(f64vec4) VectorShuffle 807 805 4 5 6 3
                               Store 806 808
              809:     27(ptr) AccessChain 10(dti) 26
              810:      6(int) Load 809
@@ -9090,8 +9090,8 @@
              925:     27(ptr) AccessChain 10(dti) 26
              926:      6(int) Load 925
              927:    161(ptr) AccessChain 24(data) 25 926 158
-             928:   19(fvec4) Load 927
-             929:   19(fvec4) GroupNonUniformQuadSwap 35 928 205
+             928: 19(f64vec4) Load 927
+             929: 19(f64vec4) GroupNonUniformQuadSwap 35 928 205
              930:    161(ptr) AccessChain 24(data) 25 924 158
                               Store 930 929
              931:     27(ptr) AccessChain 10(dti) 26
@@ -9099,8 +9099,8 @@
              933:     27(ptr) AccessChain 10(dti) 26
              934:      6(int) Load 933
              935:    170(ptr) AccessChain 24(data) 25 934 158 26
-             936:   18(float) Load 935
-             937:   18(float) GroupNonUniformQuadSwap 35 936 205
+             936:18(float64_t) Load 935
+             937:18(float64_t) GroupNonUniformQuadSwap 35 936 205
              938:    170(ptr) AccessChain 24(data) 25 932 158 26
                               Store 938 937
              939:     27(ptr) AccessChain 10(dti) 26
@@ -9108,24 +9108,24 @@
              941:     27(ptr) AccessChain 10(dti) 26
              942:      6(int) Load 941
              943:    161(ptr) AccessChain 24(data) 25 942 158
-             944:   19(fvec4) Load 943
-             945:  179(fvec2) VectorShuffle 944 944 0 1
-             946:  179(fvec2) GroupNonUniformQuadSwap 35 945 205
+             944: 19(f64vec4) Load 943
+             945:179(f64vec2) VectorShuffle 944 944 0 1
+             946:179(f64vec2) GroupNonUniformQuadSwap 35 945 205
              947:    161(ptr) AccessChain 24(data) 25 940 158
-             948:   19(fvec4) Load 947
-             949:   19(fvec4) VectorShuffle 948 946 4 5 2 3
+             948: 19(f64vec4) Load 947
+             949: 19(f64vec4) VectorShuffle 948 946 4 5 2 3
                               Store 947 949
              950:     27(ptr) AccessChain 10(dti) 26
              951:      6(int) Load 950
              952:     27(ptr) AccessChain 10(dti) 26
              953:      6(int) Load 952
              954:    161(ptr) AccessChain 24(data) 25 953 158
-             955:   19(fvec4) Load 954
-             956:  191(fvec3) VectorShuffle 955 955 0 1 2
-             957:  191(fvec3) GroupNonUniformQuadSwap 35 956 205
+             955: 19(f64vec4) Load 954
+             956:191(f64vec3) VectorShuffle 955 955 0 1 2
+             957:191(f64vec3) GroupNonUniformQuadSwap 35 956 205
              958:    161(ptr) AccessChain 24(data) 25 951 158
-             959:   19(fvec4) Load 958
-             960:   19(fvec4) VectorShuffle 959 957 4 5 6 3
+             959: 19(f64vec4) Load 958
+             960: 19(f64vec4) VectorShuffle 959 957 4 5 6 3
                               Store 958 960
              961:     27(ptr) AccessChain 10(dti) 26
              962:      6(int) Load 961
@@ -9258,8 +9258,8 @@
             1077:     27(ptr) AccessChain 10(dti) 26
             1078:      6(int) Load 1077
             1079:    161(ptr) AccessChain 24(data) 25 1078 158
-            1080:   19(fvec4) Load 1079
-            1081:   19(fvec4) GroupNonUniformQuadSwap 35 1080 358
+            1080: 19(f64vec4) Load 1079
+            1081: 19(f64vec4) GroupNonUniformQuadSwap 35 1080 358
             1082:    161(ptr) AccessChain 24(data) 25 1076 158
                               Store 1082 1081
             1083:     27(ptr) AccessChain 10(dti) 26
@@ -9267,8 +9267,8 @@
             1085:     27(ptr) AccessChain 10(dti) 26
             1086:      6(int) Load 1085
             1087:    170(ptr) AccessChain 24(data) 25 1086 158 26
-            1088:   18(float) Load 1087
-            1089:   18(float) GroupNonUniformQuadSwap 35 1088 358
+            1088:18(float64_t) Load 1087
+            1089:18(float64_t) GroupNonUniformQuadSwap 35 1088 358
             1090:    170(ptr) AccessChain 24(data) 25 1084 158 26
                               Store 1090 1089
             1091:     27(ptr) AccessChain 10(dti) 26
@@ -9276,24 +9276,24 @@
             1093:     27(ptr) AccessChain 10(dti) 26
             1094:      6(int) Load 1093
             1095:    161(ptr) AccessChain 24(data) 25 1094 158
-            1096:   19(fvec4) Load 1095
-            1097:  179(fvec2) VectorShuffle 1096 1096 0 1
-            1098:  179(fvec2) GroupNonUniformQuadSwap 35 1097 358
+            1096: 19(f64vec4) Load 1095
+            1097:179(f64vec2) VectorShuffle 1096 1096 0 1
+            1098:179(f64vec2) GroupNonUniformQuadSwap 35 1097 358
             1099:    161(ptr) AccessChain 24(data) 25 1092 158
-            1100:   19(fvec4) Load 1099
-            1101:   19(fvec4) VectorShuffle 1100 1098 4 5 2 3
+            1100: 19(f64vec4) Load 1099
+            1101: 19(f64vec4) VectorShuffle 1100 1098 4 5 2 3
                               Store 1099 1101
             1102:     27(ptr) AccessChain 10(dti) 26
             1103:      6(int) Load 1102
             1104:     27(ptr) AccessChain 10(dti) 26
             1105:      6(int) Load 1104
             1106:    161(ptr) AccessChain 24(data) 25 1105 158
-            1107:   19(fvec4) Load 1106
-            1108:  191(fvec3) VectorShuffle 1107 1107 0 1 2
-            1109:  191(fvec3) GroupNonUniformQuadSwap 35 1108 358
+            1107: 19(f64vec4) Load 1106
+            1108:191(f64vec3) VectorShuffle 1107 1107 0 1 2
+            1109:191(f64vec3) GroupNonUniformQuadSwap 35 1108 358
             1110:    161(ptr) AccessChain 24(data) 25 1103 158
-            1111:   19(fvec4) Load 1110
-            1112:   19(fvec4) VectorShuffle 1111 1109 4 5 6 3
+            1111: 19(f64vec4) Load 1110
+            1112: 19(f64vec4) VectorShuffle 1111 1109 4 5 6 3
                               Store 1110 1112
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out
index e8e840e..f088063 100644
--- a/Test/baseResults/hlsl.wavereduction.comp.out
+++ b/Test/baseResults/hlsl.wavereduction.comp.out
@@ -6234,8 +6234,8 @@
               16:             TypeFloat 32
               17:             TypeVector 16(float) 4
               18:             TypeFloat 64
-              19:             TypeVector 18(float) 4
-       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(fvec4)
+              19:             TypeVector 18(float64_t) 4
+       20(Types):             TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4)
               21:             TypeRuntimeArray 20(Types)
         22(data):             TypeStruct 21
               23:             TypePointer Uniform 22(data)
@@ -6258,10 +6258,10 @@
              136:             TypeVector 16(float) 2
              148:             TypeVector 16(float) 3
              158:     14(int) Constant 3
-             161:             TypePointer Uniform 19(fvec4)
-             170:             TypePointer Uniform 18(float)
-             179:             TypeVector 18(float) 2
-             191:             TypeVector 18(float) 3
+             161:             TypePointer Uniform 19(f64vec4)
+             170:             TypePointer Uniform 18(float64_t)
+             179:             TypeVector 18(float64_t) 2
+             191:             TypeVector 18(float64_t) 3
              889:             TypeBool
              895:             TypePointer Input 7(ivec3)
         896(dti):    895(ptr) Variable Input
@@ -6410,8 +6410,8 @@
              159:     27(ptr) AccessChain 10(dti) 26
              160:      6(int) Load 159
              162:    161(ptr) AccessChain 24(data) 25 160 158
-             163:   19(fvec4) Load 162
-             164:   19(fvec4) GroupNonUniformFAdd 35 Reduce 163
+             163: 19(f64vec4) Load 162
+             164: 19(f64vec4) GroupNonUniformFAdd 35 Reduce 163
              165:    161(ptr) AccessChain 24(data) 25 157 158
                               Store 165 164
              166:     27(ptr) AccessChain 10(dti) 26
@@ -6419,8 +6419,8 @@
              168:     27(ptr) AccessChain 10(dti) 26
              169:      6(int) Load 168
              171:    170(ptr) AccessChain 24(data) 25 169 158 26
-             172:   18(float) Load 171
-             173:   18(float) GroupNonUniformFAdd 35 Reduce 172
+             172:18(float64_t) Load 171
+             173:18(float64_t) GroupNonUniformFAdd 35 Reduce 172
              174:    170(ptr) AccessChain 24(data) 25 167 158 26
                               Store 174 173
              175:     27(ptr) AccessChain 10(dti) 26
@@ -6428,24 +6428,24 @@
              177:     27(ptr) AccessChain 10(dti) 26
              178:      6(int) Load 177
              180:    161(ptr) AccessChain 24(data) 25 178 158
-             181:   19(fvec4) Load 180
-             182:  179(fvec2) VectorShuffle 181 181 0 1
-             183:  179(fvec2) GroupNonUniformFAdd 35 Reduce 182
+             181: 19(f64vec4) Load 180
+             182:179(f64vec2) VectorShuffle 181 181 0 1
+             183:179(f64vec2) GroupNonUniformFAdd 35 Reduce 182
              184:    161(ptr) AccessChain 24(data) 25 176 158
-             185:   19(fvec4) Load 184
-             186:   19(fvec4) VectorShuffle 185 183 4 5 2 3
+             185: 19(f64vec4) Load 184
+             186: 19(f64vec4) VectorShuffle 185 183 4 5 2 3
                               Store 184 186
              187:     27(ptr) AccessChain 10(dti) 26
              188:      6(int) Load 187
              189:     27(ptr) AccessChain 10(dti) 26
              190:      6(int) Load 189
              192:    161(ptr) AccessChain 24(data) 25 190 158
-             193:   19(fvec4) Load 192
-             194:  191(fvec3) VectorShuffle 193 193 0 1 2
-             195:  191(fvec3) GroupNonUniformFAdd 35 Reduce 194
+             193: 19(f64vec4) Load 192
+             194:191(f64vec3) VectorShuffle 193 193 0 1 2
+             195:191(f64vec3) GroupNonUniformFAdd 35 Reduce 194
              196:    161(ptr) AccessChain 24(data) 25 188 158
-             197:   19(fvec4) Load 196
-             198:   19(fvec4) VectorShuffle 197 195 4 5 6 3
+             197: 19(f64vec4) Load 196
+             198: 19(f64vec4) VectorShuffle 197 195 4 5 6 3
                               Store 196 198
              199:     27(ptr) AccessChain 10(dti) 26
              200:      6(int) Load 199
@@ -6578,8 +6578,8 @@
              315:     27(ptr) AccessChain 10(dti) 26
              316:      6(int) Load 315
              317:    161(ptr) AccessChain 24(data) 25 316 158
-             318:   19(fvec4) Load 317
-             319:   19(fvec4) GroupNonUniformFMul 35 Reduce 318
+             318: 19(f64vec4) Load 317
+             319: 19(f64vec4) GroupNonUniformFMul 35 Reduce 318
              320:    161(ptr) AccessChain 24(data) 25 314 158
                               Store 320 319
              321:     27(ptr) AccessChain 10(dti) 26
@@ -6587,8 +6587,8 @@
              323:     27(ptr) AccessChain 10(dti) 26
              324:      6(int) Load 323
              325:    170(ptr) AccessChain 24(data) 25 324 158 26
-             326:   18(float) Load 325
-             327:   18(float) GroupNonUniformFMul 35 Reduce 326
+             326:18(float64_t) Load 325
+             327:18(float64_t) GroupNonUniformFMul 35 Reduce 326
              328:    170(ptr) AccessChain 24(data) 25 322 158 26
                               Store 328 327
              329:     27(ptr) AccessChain 10(dti) 26
@@ -6596,24 +6596,24 @@
              331:     27(ptr) AccessChain 10(dti) 26
              332:      6(int) Load 331
              333:    161(ptr) AccessChain 24(data) 25 332 158
-             334:   19(fvec4) Load 333
-             335:  179(fvec2) VectorShuffle 334 334 0 1
-             336:  179(fvec2) GroupNonUniformFMul 35 Reduce 335
+             334: 19(f64vec4) Load 333
+             335:179(f64vec2) VectorShuffle 334 334 0 1
+             336:179(f64vec2) GroupNonUniformFMul 35 Reduce 335
              337:    161(ptr) AccessChain 24(data) 25 330 158
-             338:   19(fvec4) Load 337
-             339:   19(fvec4) VectorShuffle 338 336 4 5 2 3
+             338: 19(f64vec4) Load 337
+             339: 19(f64vec4) VectorShuffle 338 336 4 5 2 3
                               Store 337 339
              340:     27(ptr) AccessChain 10(dti) 26
              341:      6(int) Load 340
              342:     27(ptr) AccessChain 10(dti) 26
              343:      6(int) Load 342
              344:    161(ptr) AccessChain 24(data) 25 343 158
-             345:   19(fvec4) Load 344
-             346:  191(fvec3) VectorShuffle 345 345 0 1 2
-             347:  191(fvec3) GroupNonUniformFMul 35 Reduce 346
+             345: 19(f64vec4) Load 344
+             346:191(f64vec3) VectorShuffle 345 345 0 1 2
+             347:191(f64vec3) GroupNonUniformFMul 35 Reduce 346
              348:    161(ptr) AccessChain 24(data) 25 341 158
-             349:   19(fvec4) Load 348
-             350:   19(fvec4) VectorShuffle 349 347 4 5 6 3
+             349: 19(f64vec4) Load 348
+             350: 19(f64vec4) VectorShuffle 349 347 4 5 6 3
                               Store 348 350
              351:     27(ptr) AccessChain 10(dti) 26
              352:      6(int) Load 351
@@ -6746,8 +6746,8 @@
              467:     27(ptr) AccessChain 10(dti) 26
              468:      6(int) Load 467
              469:    161(ptr) AccessChain 24(data) 25 468 158
-             470:   19(fvec4) Load 469
-             471:   19(fvec4) GroupNonUniformFMin 35 Reduce 470
+             470: 19(f64vec4) Load 469
+             471: 19(f64vec4) GroupNonUniformFMin 35 Reduce 470
              472:    161(ptr) AccessChain 24(data) 25 466 158
                               Store 472 471
              473:     27(ptr) AccessChain 10(dti) 26
@@ -6755,8 +6755,8 @@
              475:     27(ptr) AccessChain 10(dti) 26
              476:      6(int) Load 475
              477:    170(ptr) AccessChain 24(data) 25 476 158 26
-             478:   18(float) Load 477
-             479:   18(float) GroupNonUniformFMin 35 Reduce 478
+             478:18(float64_t) Load 477
+             479:18(float64_t) GroupNonUniformFMin 35 Reduce 478
              480:    170(ptr) AccessChain 24(data) 25 474 158 26
                               Store 480 479
              481:     27(ptr) AccessChain 10(dti) 26
@@ -6764,24 +6764,24 @@
              483:     27(ptr) AccessChain 10(dti) 26
              484:      6(int) Load 483
              485:    161(ptr) AccessChain 24(data) 25 484 158
-             486:   19(fvec4) Load 485
-             487:  179(fvec2) VectorShuffle 486 486 0 1
-             488:  179(fvec2) GroupNonUniformFMin 35 Reduce 487
+             486: 19(f64vec4) Load 485
+             487:179(f64vec2) VectorShuffle 486 486 0 1
+             488:179(f64vec2) GroupNonUniformFMin 35 Reduce 487
              489:    161(ptr) AccessChain 24(data) 25 482 158
-             490:   19(fvec4) Load 489
-             491:   19(fvec4) VectorShuffle 490 488 4 5 2 3
+             490: 19(f64vec4) Load 489
+             491: 19(f64vec4) VectorShuffle 490 488 4 5 2 3
                               Store 489 491
              492:     27(ptr) AccessChain 10(dti) 26
              493:      6(int) Load 492
              494:     27(ptr) AccessChain 10(dti) 26
              495:      6(int) Load 494
              496:    161(ptr) AccessChain 24(data) 25 495 158
-             497:   19(fvec4) Load 496
-             498:  191(fvec3) VectorShuffle 497 497 0 1 2
-             499:  191(fvec3) GroupNonUniformFMin 35 Reduce 498
+             497: 19(f64vec4) Load 496
+             498:191(f64vec3) VectorShuffle 497 497 0 1 2
+             499:191(f64vec3) GroupNonUniformFMin 35 Reduce 498
              500:    161(ptr) AccessChain 24(data) 25 493 158
-             501:   19(fvec4) Load 500
-             502:   19(fvec4) VectorShuffle 501 499 4 5 6 3
+             501: 19(f64vec4) Load 500
+             502: 19(f64vec4) VectorShuffle 501 499 4 5 6 3
                               Store 500 502
              503:     27(ptr) AccessChain 10(dti) 26
              504:      6(int) Load 503
@@ -6914,8 +6914,8 @@
              619:     27(ptr) AccessChain 10(dti) 26
              620:      6(int) Load 619
              621:    161(ptr) AccessChain 24(data) 25 620 158
-             622:   19(fvec4) Load 621
-             623:   19(fvec4) GroupNonUniformFMax 35 Reduce 622
+             622: 19(f64vec4) Load 621
+             623: 19(f64vec4) GroupNonUniformFMax 35 Reduce 622
              624:    161(ptr) AccessChain 24(data) 25 618 158
                               Store 624 623
              625:     27(ptr) AccessChain 10(dti) 26
@@ -6923,8 +6923,8 @@
              627:     27(ptr) AccessChain 10(dti) 26
              628:      6(int) Load 627
              629:    170(ptr) AccessChain 24(data) 25 628 158 26
-             630:   18(float) Load 629
-             631:   18(float) GroupNonUniformFMax 35 Reduce 630
+             630:18(float64_t) Load 629
+             631:18(float64_t) GroupNonUniformFMax 35 Reduce 630
              632:    170(ptr) AccessChain 24(data) 25 626 158 26
                               Store 632 631
              633:     27(ptr) AccessChain 10(dti) 26
@@ -6932,24 +6932,24 @@
              635:     27(ptr) AccessChain 10(dti) 26
              636:      6(int) Load 635
              637:    161(ptr) AccessChain 24(data) 25 636 158
-             638:   19(fvec4) Load 637
-             639:  179(fvec2) VectorShuffle 638 638 0 1
-             640:  179(fvec2) GroupNonUniformFMax 35 Reduce 639
+             638: 19(f64vec4) Load 637
+             639:179(f64vec2) VectorShuffle 638 638 0 1
+             640:179(f64vec2) GroupNonUniformFMax 35 Reduce 639
              641:    161(ptr) AccessChain 24(data) 25 634 158
-             642:   19(fvec4) Load 641
-             643:   19(fvec4) VectorShuffle 642 640 4 5 2 3
+             642: 19(f64vec4) Load 641
+             643: 19(f64vec4) VectorShuffle 642 640 4 5 2 3
                               Store 641 643
              644:     27(ptr) AccessChain 10(dti) 26
              645:      6(int) Load 644
              646:     27(ptr) AccessChain 10(dti) 26
              647:      6(int) Load 646
              648:    161(ptr) AccessChain 24(data) 25 647 158
-             649:   19(fvec4) Load 648
-             650:  191(fvec3) VectorShuffle 649 649 0 1 2
-             651:  191(fvec3) GroupNonUniformFMax 35 Reduce 650
+             649: 19(f64vec4) Load 648
+             650:191(f64vec3) VectorShuffle 649 649 0 1 2
+             651:191(f64vec3) GroupNonUniformFMax 35 Reduce 650
              652:    161(ptr) AccessChain 24(data) 25 645 158
-             653:   19(fvec4) Load 652
-             654:   19(fvec4) VectorShuffle 653 651 4 5 6 3
+             653: 19(f64vec4) Load 652
+             654: 19(f64vec4) VectorShuffle 653 651 4 5 6 3
                               Store 652 654
              655:     27(ptr) AccessChain 10(dti) 26
              656:      6(int) Load 655
diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out
index 004ee8b..0e33067 100644
--- a/Test/baseResults/hlsl.wavevote.comp.out
+++ b/Test/baseResults/hlsl.wavevote.comp.out
@@ -238,7 +238,7 @@
                8:             TypePointer Function 7(ivec3)
                9:             TypeFunction 2 8(ptr)
               13:             TypeInt 64 0
-              14:             TypeRuntimeArray 13(int)
+              14:             TypeRuntimeArray 13(int64_t)
         15(data):             TypeStruct 14
               16:             TypePointer Uniform 15(data)
         17(data):     16(ptr) Variable Uniform
@@ -249,8 +249,8 @@
               26:             TypeBool
               28:      6(int) Constant 3
               30:             TypeVector 6(int) 4
-              32:             TypeVector 13(int) 4
-              35:             TypePointer Uniform 13(int)
+              32:             TypeVector 13(int64_t) 4
+              35:             TypePointer Uniform 13(int64_t)
               37:      6(int) Constant 1
               48:      6(int) Constant 2
               69:             TypePointer Input 7(ivec3)
@@ -276,8 +276,8 @@
               27:    26(bool) IEqual 25 20
               29:    26(bool) GroupNonUniformAny 28 27
               31:   30(ivec4) GroupNonUniformBallot 28 29
-              33:   32(ivec4) UConvert 31
-              34:     13(int) CompositeExtract 33 0
+              33: 32(i64vec4) UConvert 31
+              34: 13(int64_t) CompositeExtract 33 0
               36:     35(ptr) AccessChain 17(data) 19 23
                               Store 36 34
               38:     21(ptr) AccessChain 10(dti) 37
@@ -287,8 +287,8 @@
               42:    26(bool) IEqual 41 20
               43:    26(bool) GroupNonUniformAll 28 42
               44:   30(ivec4) GroupNonUniformBallot 28 43
-              45:   32(ivec4) UConvert 44
-              46:     13(int) CompositeExtract 45 0
+              45: 32(i64vec4) UConvert 44
+              46: 13(int64_t) CompositeExtract 45 0
               47:     35(ptr) AccessChain 17(data) 19 39
                               Store 47 46
               49:     21(ptr) AccessChain 10(dti) 48
@@ -298,8 +298,8 @@
               53:    26(bool) IEqual 52 20
               54:    26(bool) GroupNonUniformAllEqual 28 53
               55:   30(ivec4) GroupNonUniformBallot 28 54
-              56:   32(ivec4) UConvert 55
-              57:     13(int) CompositeExtract 56 0
+              56: 32(i64vec4) UConvert 55
+              57: 13(int64_t) CompositeExtract 56 0
               58:     35(ptr) AccessChain 17(data) 19 50
                               Store 58 57
               59:     21(ptr) AccessChain 10(dti) 48
@@ -308,8 +308,8 @@
               62:      6(int) Load 61
               63:    26(bool) GroupNonUniformAllEqual 28 62
               64:   30(ivec4) GroupNonUniformBallot 28 63
-              65:   32(ivec4) UConvert 64
-              66:     13(int) CompositeExtract 65 0
+              65: 32(i64vec4) UConvert 64
+              66: 13(int64_t) CompositeExtract 65 0
               67:     35(ptr) AccessChain 17(data) 19 60
                               Store 67 66
                               Return
diff --git a/Test/baseResults/lineContinuation.vert.out b/Test/baseResults/lineContinuation.vert.out
index 3dd8206..9faa420 100644
--- a/Test/baseResults/lineContinuation.vert.out
+++ b/Test/baseResults/lineContinuation.vert.out
@@ -66,7 +66,7 @@
 0:74    move second child to first child ( temp highp float)
 0:74      'funkyf' ( global highp float)
 0:75      Constant:
-0:75        12300000000000000.000000
+0:75        1.2300000000000e+16
 0:85  Sequence
 0:84    move second child to first child ( temp highp int)
 0:84      'funkyh' ( global highp int)
@@ -200,7 +200,7 @@
 0:74    move second child to first child ( temp highp float)
 0:74      'funkyf' ( global highp float)
 0:75      Constant:
-0:75        12300000000000000.000000
+0:75        1.2300000000000e+16
 0:85  Sequence
 0:84    move second child to first child ( temp highp int)
 0:84      'funkyh' ( global highp int)
diff --git a/Test/baseResults/numeral.frag.out b/Test/baseResults/numeral.frag.out
index a7343f9..b7c0a78 100644
--- a/Test/baseResults/numeral.frag.out
+++ b/Test/baseResults/numeral.frag.out
@@ -330,7 +330,7 @@
 0:73        move second child to first child ( temp float)
 0:73          'g6' ( temp float)
 0:73          Constant:
-0:73            0.000005
+0:73            5.0000000000000e-06
 0:74      Sequence
 0:74        move second child to first child ( temp float)
 0:74          'g7' ( temp float)
@@ -739,7 +739,7 @@
 0:73        move second child to first child ( temp float)
 0:73          'g6' ( temp float)
 0:73          Constant:
-0:73            0.000005
+0:73            5.0000000000000e-06
 0:74      Sequence
 0:74        move second child to first child ( temp float)
 0:74          'g7' ( temp float)
diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
index a17b744..f37403c 100644
--- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
+++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
@@ -68,8 +68,8 @@
               29:     26(int) Constant 1
               30:             TypePointer Function 6(float)
               32:             TypeFloat 64
-              33:             TypePointer Function 32(float)
-              35:   32(float) Constant 0 1072693248
+              33:             TypePointer Function 32(float64_t)
+              35:32(float64_t) Constant 0 1072693248
               36:             TypeInt 32 0
               37:             TypePointer Function 36(int)
               39:     36(int) Constant 1
@@ -84,10 +84,10 @@
               50:             TypeVector 6(float) 2
               51:             TypePointer Function 50(fvec2)
               53:   50(fvec2) ConstantComposite 14 15
-              54:             TypeVector 32(float) 2
-              55:             TypePointer Function 54(fvec2)
-              57:   32(float) Constant 0 1073741824
-              58:   54(fvec2) ConstantComposite 35 57
+              54:             TypeVector 32(float64_t) 2
+              55:             TypePointer Function 54(f64vec2)
+              57:32(float64_t) Constant 0 1073741824
+              58: 54(f64vec2) ConstantComposite 35 57
               59:             TypeVector 36(int) 2
               60:             TypePointer Function 59(ivec2)
               62:     36(int) Constant 2
@@ -102,10 +102,10 @@
               73:             TypeVector 6(float) 3
               74:             TypePointer Function 73(fvec3)
               76:   73(fvec3) ConstantComposite 14 15 16
-              77:             TypeVector 32(float) 3
-              78:             TypePointer Function 77(fvec3)
-              80:   32(float) Constant 0 1074266112
-              81:   77(fvec3) ConstantComposite 35 57 80
+              77:             TypeVector 32(float64_t) 3
+              78:             TypePointer Function 77(f64vec3)
+              80:32(float64_t) Constant 0 1074266112
+              81: 77(f64vec3) ConstantComposite 35 57 80
               82:             TypeVector 36(int) 3
               83:             TypePointer Function 82(ivec3)
               85:     36(int) Constant 3
@@ -117,10 +117,10 @@
               92:             TypePointer Function 91(ivec4)
               94:     26(int) Constant 4
               95:   91(ivec4) ConstantComposite 29 48 71 94
-              97:             TypeVector 32(float) 4
-              98:             TypePointer Function 97(fvec4)
-             100:   32(float) Constant 0 1074790400
-             101:   97(fvec4) ConstantComposite 35 57 80 100
+              97:             TypeVector 32(float64_t) 4
+              98:             TypePointer Function 97(f64vec4)
+             100:32(float64_t) Constant 0 1074790400
+             101: 97(f64vec4) ConstantComposite 35 57 80 100
              102:             TypeVector 36(int) 4
              103:             TypePointer Function 102(ivec4)
              105:     36(int) Constant 4
diff --git a/Test/baseResults/remap.literal64.none.spv.out b/Test/baseResults/remap.literal64.none.spv.out
index 792b13a..d88992f 100644
--- a/Test/baseResults/remap.literal64.none.spv.out
+++ b/Test/baseResults/remap.literal64.none.spv.out
@@ -8,7 +8,7 @@
                1:             TypeVoid
                2:             TypeInt 64 1
                3:             TypeFunction 1
-               4:      2(int) Constant 0 0
+               4:  2(int64_t) Constant 0 0
                5:           1 Function None 3
                6:             Label
                               SelectionMerge 7 None
diff --git a/Test/baseResults/runtimeArray.vert.out b/Test/baseResults/runtimeArray.vert.out
index 839c5bd..5ba3992 100755
--- a/Test/baseResults/runtimeArray.vert.out
+++ b/Test/baseResults/runtimeArray.vert.out
@@ -31,7 +31,8 @@
 ERROR: 0:105: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier
 ERROR: 0:106: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier
 ERROR: 0:107: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier
-ERROR: 26 compilation errors.  No code generated.
+ERROR: 0:109: '[]' : array initializer must be sized 
+ERROR: 27 compilation errors.  No code generated.
 
 
 Shader version: 450
@@ -311,6 +312,13 @@
 0:107      indirect index (layout( binding=9 r32f) temp imageBuffer)
 0:107        'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer)
 0:107        'i' ( global int)
+0:109      Sequence
+0:109        move second child to first child ( temp unsized 1-element array of float)
+0:109          'local' ( temp unsized 1-element array of float)
+0:109          b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float)
+0:109            'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b})
+0:109            Constant:
+0:109              1 (const int)
 0:?   Linker Objects
 0:?     'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b})
 0:?     'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b})
@@ -611,6 +619,13 @@
 0:107      indirect index (layout( binding=9 r32f) temp imageBuffer)
 0:107        'storageTexelBuffer' (layout( binding=9 r32f) uniform runtime-sized array of imageBuffer)
 0:107        'i' ( global int)
+0:109      Sequence
+0:109        move second child to first child ( temp 1-element array of float)
+0:109          'local' ( temp 1-element array of float)
+0:109          b: direct index for structure (layout( column_major shared) uniform runtime-sized array of float)
+0:109            'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b})
+0:109            Constant:
+0:109              1 (const int)
 0:?   Linker Objects
 0:?     'buf' (layout( column_major shared) buffer block{layout( column_major shared) buffer runtime-sized array of int a, layout( column_major shared) buffer runtime-sized array of float b})
 0:?     'ubuf' (layout( column_major shared) uniform block{layout( column_major shared) uniform runtime-sized array of int a, layout( column_major shared) uniform runtime-sized array of float b})
diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out
index 4606e99..b5c9b8e 100644
--- a/Test/baseResults/spv.400.frag.out
+++ b/Test/baseResults/spv.400.frag.out
@@ -1,7 +1,7 @@
 spv.400.frag
 // Module Version 10000
 // Generated by (magic number): 80006
-// Id's are bound by 1118
+// Id's are bound by 1115
 
                               Capability Shader
                               Capability Geometry
@@ -11,7 +11,7 @@
                               Capability SampledRect
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116
+                              EntryPoint Fragment 4  "main" 13 1024 1030 1035 1047 1073 1094 1096 1102 1104 1113
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 400
                               SourceExtension  "GL_ARB_separate_shader_objects"
@@ -28,41 +28,41 @@
                               Name 439  "bvec2v"
                               Name 448  "bvec3v"
                               Name 457  "bvec4v"
-                              Name 739  "dmat2v"
-                              Name 745  "dmat3v"
-                              Name 751  "dmat4v"
-                              Name 757  "dmat2x3v"
-                              Name 763  "dmat3x2v"
-                              Name 769  "dmat2x4v"
-                              Name 775  "dmat4x2v"
-                              Name 781  "dmat3x4v"
-                              Name 787  "dmat4x3v"
-                              Name 1019  "v"
-                              Name 1025  "arrayedSampler"
-                              Name 1027  "i"
-                              Name 1033  "c2D"
-                              Name 1038  "gl_ClipDistance"
-                              Name 1050  "uoutp"
-                              Name 1054  "samp2dr"
-                              Name 1076  "ioutp"
-                              Name 1080  "isamp2DA"
-                              Name 1097  "gl_FragCoord"
-                              Name 1099  "vl2"
-                              Name 1105  "uo"
-                              Name 1107  "u"
-                              Name 1115  "id"
-                              Name 1116  "gl_PrimitiveID"
+                              Name 736  "dmat2v"
+                              Name 742  "dmat3v"
+                              Name 748  "dmat4v"
+                              Name 754  "dmat2x3v"
+                              Name 760  "dmat3x2v"
+                              Name 766  "dmat2x4v"
+                              Name 772  "dmat4x2v"
+                              Name 778  "dmat3x4v"
+                              Name 784  "dmat4x3v"
+                              Name 1016  "v"
+                              Name 1022  "arrayedSampler"
+                              Name 1024  "i"
+                              Name 1030  "c2D"
+                              Name 1035  "gl_ClipDistance"
+                              Name 1047  "uoutp"
+                              Name 1051  "samp2dr"
+                              Name 1073  "ioutp"
+                              Name 1077  "isamp2DA"
+                              Name 1094  "gl_FragCoord"
+                              Name 1096  "vl2"
+                              Name 1102  "uo"
+                              Name 1104  "u"
+                              Name 1112  "id"
+                              Name 1113  "gl_PrimitiveID"
                               Decorate 17(u2drs) DescriptorSet 0
-                              Decorate 1025(arrayedSampler) DescriptorSet 0
-                              Decorate 1027(i) Flat
-                              Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance
-                              Decorate 1054(samp2dr) DescriptorSet 0
-                              Decorate 1080(isamp2DA) DescriptorSet 0
-                              Decorate 1097(gl_FragCoord) BuiltIn FragCoord
-                              Decorate 1099(vl2) Location 6
-                              Decorate 1107(u) Flat
-                              Decorate 1116(gl_PrimitiveID) Flat
-                              Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId
+                              Decorate 1022(arrayedSampler) DescriptorSet 0
+                              Decorate 1024(i) Flat
+                              Decorate 1035(gl_ClipDistance) BuiltIn ClipDistance
+                              Decorate 1051(samp2dr) DescriptorSet 0
+                              Decorate 1077(isamp2DA) DescriptorSet 0
+                              Decorate 1094(gl_FragCoord) BuiltIn FragCoord
+                              Decorate 1096(vl2) Location 6
+                              Decorate 1104(u) Flat
+                              Decorate 1113(gl_PrimitiveID) Flat
+                              Decorate 1113(gl_PrimitiveID) BuiltIn PrimitiveId
                2:             TypeVoid
                3:             TypeFunction 2
               10:             TypeFloat 32
@@ -85,18 +85,18 @@
               33:     32(int) Constant 0
               34:             TypePointer Output 10(float)
               39:             TypeFloat 64
-              40:             TypePointer Function 39(float)
-              42:   39(float) Constant 2507418074 1073430332
-              43:             TypeVector 39(float) 2
-              44:             TypePointer Function 43(fvec2)
-              46:   39(float) Constant 796182188 1073367658
-              47:   43(fvec2) ConstantComposite 46 46
-              48:             TypeVector 39(float) 3
-              49:             TypePointer Function 48(fvec3)
-              51:   39(float) Constant 1719614413 1073127582
-              52:   48(fvec3) ConstantComposite 51 51 51
-              53:             TypeVector 39(float) 4
-              54:             TypePointer Function 53(fvec4)
+              40:             TypePointer Function 39(float64_t)
+              42:39(float64_t) Constant 2507418074 1073430332
+              43:             TypeVector 39(float64_t) 2
+              44:             TypePointer Function 43(f64vec2)
+              46:39(float64_t) Constant 796182188 1073367658
+              47: 43(f64vec2) ConstantComposite 46 46
+              48:             TypeVector 39(float64_t) 3
+              49:             TypePointer Function 48(f64vec3)
+              51:39(float64_t) Constant 1719614413 1073127582
+              52: 48(f64vec3) ConstantComposite 51 51 51
+              53:             TypeVector 39(float64_t) 4
+              54:             TypePointer Function 53(f64vec4)
              428:             TypeBool
              429:             TypePointer Function 428(bool)
              437:             TypeVector 428(bool) 2
@@ -109,143 +109,144 @@
              572:  437(bvec2) ConstantComposite 563 563
              581:  446(bvec3) ConstantComposite 563 563 563
              590:  455(bvec4) ConstantComposite 563 563 563 563
-             737:             TypeMatrix 43(fvec2) 2
-             738:             TypePointer Function 737
-             743:             TypeMatrix 48(fvec3) 3
-             744:             TypePointer Function 743
-             749:             TypeMatrix 53(fvec4) 4
-             750:             TypePointer Function 749
-             755:             TypeMatrix 48(fvec3) 2
-             756:             TypePointer Function 755
-             761:             TypeMatrix 43(fvec2) 3
-             762:             TypePointer Function 761
-             767:             TypeMatrix 53(fvec4) 2
-             768:             TypePointer Function 767
-             773:             TypeMatrix 43(fvec2) 4
-             774:             TypePointer Function 773
-             779:             TypeMatrix 53(fvec4) 3
-             780:             TypePointer Function 779
-             785:             TypeMatrix 48(fvec3) 4
-             786:             TypePointer Function 785
-             954:     32(int) Constant 1
-             958:     32(int) Constant 2
-             962:     32(int) Constant 3
-             966:     23(int) Constant 1
-             970:     23(int) Constant 2
-             996:   10(float) Constant 1065353216
-            1018:             TypePointer Function 11(fvec4)
-            1020:             TypeImage 10(float) 2D sampled format:Unknown
-            1021:             TypeSampledImage 1020
-            1022:     32(int) Constant 5
-            1023:             TypeArray 1021 1022
-            1024:             TypePointer UniformConstant 1023
-1025(arrayedSampler):   1024(ptr) Variable UniformConstant
-            1026:             TypePointer Input 23(int)
-         1027(i):   1026(ptr) Variable Input
-            1029:             TypePointer UniformConstant 1021
-            1032:             TypePointer Input 20(fvec2)
-       1033(c2D):   1032(ptr) Variable Input
-            1036:             TypeArray 10(float) 958
-            1037:             TypePointer Input 1036
-1038(gl_ClipDistance):   1037(ptr) Variable Input
-            1039:             TypePointer Input 10(float)
-            1043:             TypeVector 10(float) 3
-            1048:             TypeVector 32(int) 4
-            1049:             TypePointer Output 1048(ivec4)
-     1050(uoutp):   1049(ptr) Variable Output
-            1051:             TypeImage 32(int) Rect sampled format:Unknown
-            1052:             TypeSampledImage 1051
-            1053:             TypePointer UniformConstant 1052
-   1054(samp2dr):   1053(ptr) Variable UniformConstant
-            1057:     32(int) Constant 4
-            1058:             TypeArray 24(ivec2) 1057
-            1059:   24(ivec2) ConstantComposite 966 970
-            1060:     23(int) Constant 15
-            1061:     23(int) Constant 16
+             715:   10(float) Constant 1067869798
+             734:             TypeMatrix 43(f64vec2) 2
+             735:             TypePointer Function 734
+             740:             TypeMatrix 48(f64vec3) 3
+             741:             TypePointer Function 740
+             746:             TypeMatrix 53(f64vec4) 4
+             747:             TypePointer Function 746
+             752:             TypeMatrix 48(f64vec3) 2
+             753:             TypePointer Function 752
+             758:             TypeMatrix 43(f64vec2) 3
+             759:             TypePointer Function 758
+             764:             TypeMatrix 53(f64vec4) 2
+             765:             TypePointer Function 764
+             770:             TypeMatrix 43(f64vec2) 4
+             771:             TypePointer Function 770
+             776:             TypeMatrix 53(f64vec4) 3
+             777:             TypePointer Function 776
+             782:             TypeMatrix 48(f64vec3) 4
+             783:             TypePointer Function 782
+             951:     32(int) Constant 1
+             955:     32(int) Constant 2
+             959:     32(int) Constant 3
+             963:     23(int) Constant 1
+             967:     23(int) Constant 2
+             993:   10(float) Constant 1065353216
+            1015:             TypePointer Function 11(fvec4)
+            1017:             TypeImage 10(float) 2D sampled format:Unknown
+            1018:             TypeSampledImage 1017
+            1019:     32(int) Constant 5
+            1020:             TypeArray 1018 1019
+            1021:             TypePointer UniformConstant 1020
+1022(arrayedSampler):   1021(ptr) Variable UniformConstant
+            1023:             TypePointer Input 23(int)
+         1024(i):   1023(ptr) Variable Input
+            1026:             TypePointer UniformConstant 1018
+            1029:             TypePointer Input 20(fvec2)
+       1030(c2D):   1029(ptr) Variable Input
+            1033:             TypeArray 10(float) 955
+            1034:             TypePointer Input 1033
+1035(gl_ClipDistance):   1034(ptr) Variable Input
+            1036:             TypePointer Input 10(float)
+            1040:             TypeVector 10(float) 3
+            1045:             TypeVector 32(int) 4
+            1046:             TypePointer Output 1045(ivec4)
+     1047(uoutp):   1046(ptr) Variable Output
+            1048:             TypeImage 32(int) Rect sampled format:Unknown
+            1049:             TypeSampledImage 1048
+            1050:             TypePointer UniformConstant 1049
+   1051(samp2dr):   1050(ptr) Variable UniformConstant
+            1054:     32(int) Constant 4
+            1055:             TypeArray 24(ivec2) 1054
+            1056:   24(ivec2) ConstantComposite 963 967
+            1057:     23(int) Constant 15
+            1058:     23(int) Constant 16
+            1059:   24(ivec2) ConstantComposite 1057 1058
+            1060:     23(int) Constant 4294967294
+            1061:     23(int) Constant 0
             1062:   24(ivec2) ConstantComposite 1060 1061
-            1063:     23(int) Constant 4294967294
-            1064:     23(int) Constant 0
-            1065:   24(ivec2) ConstantComposite 1063 1064
-            1066:        1058 ConstantComposite 1059 27 1062 1065
-            1074:             TypeVector 23(int) 4
-            1075:             TypePointer Output 1074(ivec4)
-     1076(ioutp):   1075(ptr) Variable Output
-            1077:             TypeImage 23(int) 2D array sampled format:Unknown
-            1078:             TypeSampledImage 1077
-            1079:             TypePointer UniformConstant 1078
-  1080(isamp2DA):   1079(ptr) Variable UniformConstant
-            1082:   10(float) Constant 1036831949
-            1083: 1043(fvec3) ConstantComposite 1082 1082 1082
-            1084:   24(ivec2) ConstantComposite 966 966
-            1096:             TypePointer Input 11(fvec4)
-1097(gl_FragCoord):   1096(ptr) Variable Input
-       1099(vl2):   1096(ptr) Variable Input
-            1104:             TypePointer Output 32(int)
-        1105(uo):   1104(ptr) Variable Output
-            1106:             TypePointer Input 32(int)
-         1107(u):   1106(ptr) Variable Input
-            1114:             TypePointer Function 23(int)
-1116(gl_PrimitiveID):   1026(ptr) Variable Input
+            1063:        1055 ConstantComposite 1056 27 1059 1062
+            1071:             TypeVector 23(int) 4
+            1072:             TypePointer Output 1071(ivec4)
+     1073(ioutp):   1072(ptr) Variable Output
+            1074:             TypeImage 23(int) 2D array sampled format:Unknown
+            1075:             TypeSampledImage 1074
+            1076:             TypePointer UniformConstant 1075
+  1077(isamp2DA):   1076(ptr) Variable UniformConstant
+            1079:   10(float) Constant 1036831949
+            1080: 1040(fvec3) ConstantComposite 1079 1079 1079
+            1081:   24(ivec2) ConstantComposite 963 963
+            1093:             TypePointer Input 11(fvec4)
+1094(gl_FragCoord):   1093(ptr) Variable Input
+       1096(vl2):   1093(ptr) Variable Input
+            1101:             TypePointer Output 32(int)
+        1102(uo):   1101(ptr) Variable Output
+            1103:             TypePointer Input 32(int)
+         1104(u):   1103(ptr) Variable Input
+            1111:             TypePointer Function 23(int)
+1113(gl_PrimitiveID):   1023(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-         1019(v):   1018(ptr) Variable Function
-        1115(id):   1114(ptr) Variable Function
-            1028:     23(int) Load 1027(i)
-            1030:   1029(ptr) AccessChain 1025(arrayedSampler) 1028
-            1031:        1021 Load 1030
-            1034:   20(fvec2) Load 1033(c2D)
-            1035:   11(fvec4) ImageSampleImplicitLod 1031 1034
-                              Store 1019(v) 1035
-            1040:   1039(ptr) AccessChain 1038(gl_ClipDistance) 966
-            1041:   10(float) Load 1040
-            1042:     34(ptr) AccessChain 13(outp) 33
-                              Store 1042 1041
-            1044:   11(fvec4) Load 1019(v)
-            1045: 1043(fvec3) VectorShuffle 1044 1044 1 2 3
-            1046:   11(fvec4) Load 13(outp)
-            1047:   11(fvec4) VectorShuffle 1046 1045 0 4 5 6
-                              Store 13(outp) 1047
-            1055:        1052 Load 1054(samp2dr)
-            1056:   20(fvec2) Load 1033(c2D)
-            1067: 1048(ivec4) ImageGather 1055 1056 970 ConstOffsets 1066
-                              Store 1050(uoutp) 1067
-            1068:   1029(ptr) AccessChain 1025(arrayedSampler) 1064
-            1069:        1021 Load 1068
-            1070:   20(fvec2) Load 1033(c2D)
-            1071:   11(fvec4) ImageGather 1069 1070 1064
-            1072:   11(fvec4) Load 13(outp)
-            1073:   11(fvec4) FAdd 1072 1071
-                              Store 13(outp) 1073
-            1081:        1078 Load 1080(isamp2DA)
-            1085: 1074(ivec4) ImageGather 1081 1083 25 ConstOffset 1084
-                              Store 1076(ioutp) 1085
-            1086:        1078 Load 1080(isamp2DA)
-            1087: 1074(ivec4) ImageGather 1086 1083 25 ConstOffset 1084
-            1088: 1074(ivec4) Load 1076(ioutp)
-            1089: 1074(ivec4) IAdd 1088 1087
-                              Store 1076(ioutp) 1089
-            1090:        1078 Load 1080(isamp2DA)
-            1091:     23(int) Load 1027(i)
-            1092:   24(ivec2) CompositeConstruct 1091 1091
-            1093: 1074(ivec4) ImageGather 1090 1083 1064 Offset 1092
-            1094: 1074(ivec4) Load 1076(ioutp)
-            1095: 1074(ivec4) IAdd 1094 1093
-                              Store 1076(ioutp) 1095
-            1098:   11(fvec4) Load 1097(gl_FragCoord)
-            1100:   11(fvec4) Load 1099(vl2)
-            1101:   11(fvec4) FAdd 1098 1100
-            1102:   11(fvec4) Load 13(outp)
-            1103:   11(fvec4) FAdd 1102 1101
-                              Store 13(outp) 1103
-            1108:     32(int) Load 1107(u)
-            1109:     23(int) Load 1027(i)
-            1110:     32(int) Bitcast 1109
-            1111:     32(int) UMod 1108 1110
-                              Store 1105(uo) 1111
-            1112:           2 FunctionCall 6(foo23()
-            1113:           2 FunctionCall 8(doubles()
-            1117:     23(int) Load 1116(gl_PrimitiveID)
-                              Store 1115(id) 1117
+         1016(v):   1015(ptr) Variable Function
+        1112(id):   1111(ptr) Variable Function
+            1025:     23(int) Load 1024(i)
+            1027:   1026(ptr) AccessChain 1022(arrayedSampler) 1025
+            1028:        1018 Load 1027
+            1031:   20(fvec2) Load 1030(c2D)
+            1032:   11(fvec4) ImageSampleImplicitLod 1028 1031
+                              Store 1016(v) 1032
+            1037:   1036(ptr) AccessChain 1035(gl_ClipDistance) 963
+            1038:   10(float) Load 1037
+            1039:     34(ptr) AccessChain 13(outp) 33
+                              Store 1039 1038
+            1041:   11(fvec4) Load 1016(v)
+            1042: 1040(fvec3) VectorShuffle 1041 1041 1 2 3
+            1043:   11(fvec4) Load 13(outp)
+            1044:   11(fvec4) VectorShuffle 1043 1042 0 4 5 6
+                              Store 13(outp) 1044
+            1052:        1049 Load 1051(samp2dr)
+            1053:   20(fvec2) Load 1030(c2D)
+            1064: 1045(ivec4) ImageGather 1052 1053 967 ConstOffsets 1063
+                              Store 1047(uoutp) 1064
+            1065:   1026(ptr) AccessChain 1022(arrayedSampler) 1061
+            1066:        1018 Load 1065
+            1067:   20(fvec2) Load 1030(c2D)
+            1068:   11(fvec4) ImageGather 1066 1067 1061
+            1069:   11(fvec4) Load 13(outp)
+            1070:   11(fvec4) FAdd 1069 1068
+                              Store 13(outp) 1070
+            1078:        1075 Load 1077(isamp2DA)
+            1082: 1071(ivec4) ImageGather 1078 1080 25 ConstOffset 1081
+                              Store 1073(ioutp) 1082
+            1083:        1075 Load 1077(isamp2DA)
+            1084: 1071(ivec4) ImageGather 1083 1080 25 ConstOffset 1081
+            1085: 1071(ivec4) Load 1073(ioutp)
+            1086: 1071(ivec4) IAdd 1085 1084
+                              Store 1073(ioutp) 1086
+            1087:        1075 Load 1077(isamp2DA)
+            1088:     23(int) Load 1024(i)
+            1089:   24(ivec2) CompositeConstruct 1088 1088
+            1090: 1071(ivec4) ImageGather 1087 1080 1061 Offset 1089
+            1091: 1071(ivec4) Load 1073(ioutp)
+            1092: 1071(ivec4) IAdd 1091 1090
+                              Store 1073(ioutp) 1092
+            1095:   11(fvec4) Load 1094(gl_FragCoord)
+            1097:   11(fvec4) Load 1096(vl2)
+            1098:   11(fvec4) FAdd 1095 1097
+            1099:   11(fvec4) Load 13(outp)
+            1100:   11(fvec4) FAdd 1099 1098
+                              Store 13(outp) 1100
+            1105:     32(int) Load 1104(u)
+            1106:     23(int) Load 1024(i)
+            1107:     32(int) Bitcast 1106
+            1108:     32(int) UMod 1105 1107
+                              Store 1102(uo) 1108
+            1109:           2 FunctionCall 6(foo23()
+            1110:           2 FunctionCall 8(doubles()
+            1114:     23(int) Load 1113(gl_PrimitiveID)
+                              Store 1112(id) 1114
                               Return
                               FunctionEnd
        6(foo23():           2 Function None 3
@@ -277,609 +278,609 @@
              566:    438(ptr) Variable Function
              575:    447(ptr) Variable Function
              584:    456(ptr) Variable Function
-     739(dmat2v):    738(ptr) Variable Function
-     745(dmat3v):    744(ptr) Variable Function
-     751(dmat4v):    750(ptr) Variable Function
-   757(dmat2x3v):    756(ptr) Variable Function
-   763(dmat3x2v):    762(ptr) Variable Function
-   769(dmat2x4v):    768(ptr) Variable Function
-   775(dmat4x2v):    774(ptr) Variable Function
-   781(dmat3x4v):    780(ptr) Variable Function
-   787(dmat4x3v):    786(ptr) Variable Function
+     736(dmat2v):    735(ptr) Variable Function
+     742(dmat3v):    741(ptr) Variable Function
+     748(dmat4v):    747(ptr) Variable Function
+   754(dmat2x3v):    753(ptr) Variable Function
+   760(dmat3x2v):    759(ptr) Variable Function
+   766(dmat2x4v):    765(ptr) Variable Function
+   772(dmat4x2v):    771(ptr) Variable Function
+   778(dmat3x4v):    777(ptr) Variable Function
+   784(dmat4x3v):    783(ptr) Variable Function
                               Store 41(doublev) 42
                               Store 45(dvec2v) 47
                               Store 50(dvec3v) 52
-              56:   39(float) Load 41(doublev)
-              57:   53(fvec4) CompositeConstruct 56 56 56 56
-              58:   53(fvec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 57
+              56:39(float64_t) Load 41(doublev)
+              57: 53(f64vec4) CompositeConstruct 56 56 56 56
+              58: 53(f64vec4) ExtInst 1(GLSL.std.450) 31(Sqrt) 57
                               Store 55(dvec4v) 58
-              59:   39(float) Load 41(doublev)
-              60:   39(float) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 59
-              61:   39(float) Load 41(doublev)
-              62:   39(float) FAdd 61 60
+              59:39(float64_t) Load 41(doublev)
+              60:39(float64_t) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 59
+              61:39(float64_t) Load 41(doublev)
+              62:39(float64_t) FAdd 61 60
                               Store 41(doublev) 62
-              63:   43(fvec2) Load 45(dvec2v)
-              64:   43(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 63
-              65:   43(fvec2) Load 45(dvec2v)
-              66:   43(fvec2) FAdd 65 64
+              63: 43(f64vec2) Load 45(dvec2v)
+              64: 43(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 63
+              65: 43(f64vec2) Load 45(dvec2v)
+              66: 43(f64vec2) FAdd 65 64
                               Store 45(dvec2v) 66
-              67:   48(fvec3) Load 50(dvec3v)
-              68:   48(fvec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 67
-              69:   48(fvec3) Load 50(dvec3v)
-              70:   48(fvec3) FAdd 69 68
+              67: 48(f64vec3) Load 50(dvec3v)
+              68: 48(f64vec3) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 67
+              69: 48(f64vec3) Load 50(dvec3v)
+              70: 48(f64vec3) FAdd 69 68
                               Store 50(dvec3v) 70
-              71:   53(fvec4) Load 55(dvec4v)
-              72:   53(fvec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 71
-              73:   53(fvec4) Load 55(dvec4v)
-              74:   53(fvec4) FAdd 73 72
+              71: 53(f64vec4) Load 55(dvec4v)
+              72: 53(f64vec4) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 71
+              73: 53(f64vec4) Load 55(dvec4v)
+              74: 53(f64vec4) FAdd 73 72
                               Store 55(dvec4v) 74
-              75:   39(float) Load 41(doublev)
-              76:   39(float) ExtInst 1(GLSL.std.450) 4(FAbs) 75
-              77:   39(float) Load 41(doublev)
-              78:   39(float) FAdd 77 76
+              75:39(float64_t) Load 41(doublev)
+              76:39(float64_t) ExtInst 1(GLSL.std.450) 4(FAbs) 75
+              77:39(float64_t) Load 41(doublev)
+              78:39(float64_t) FAdd 77 76
                               Store 41(doublev) 78
-              79:   43(fvec2) Load 45(dvec2v)
-              80:   43(fvec2) ExtInst 1(GLSL.std.450) 4(FAbs) 79
-              81:   43(fvec2) Load 45(dvec2v)
-              82:   43(fvec2) FAdd 81 80
+              79: 43(f64vec2) Load 45(dvec2v)
+              80: 43(f64vec2) ExtInst 1(GLSL.std.450) 4(FAbs) 79
+              81: 43(f64vec2) Load 45(dvec2v)
+              82: 43(f64vec2) FAdd 81 80
                               Store 45(dvec2v) 82
-              83:   48(fvec3) Load 50(dvec3v)
-              84:   48(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 83
-              85:   48(fvec3) Load 50(dvec3v)
-              86:   48(fvec3) FAdd 85 84
+              83: 48(f64vec3) Load 50(dvec3v)
+              84: 48(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 83
+              85: 48(f64vec3) Load 50(dvec3v)
+              86: 48(f64vec3) FAdd 85 84
                               Store 50(dvec3v) 86
-              87:   53(fvec4) Load 55(dvec4v)
-              88:   53(fvec4) ExtInst 1(GLSL.std.450) 4(FAbs) 87
-              89:   53(fvec4) Load 55(dvec4v)
-              90:   53(fvec4) FAdd 89 88
+              87: 53(f64vec4) Load 55(dvec4v)
+              88: 53(f64vec4) ExtInst 1(GLSL.std.450) 4(FAbs) 87
+              89: 53(f64vec4) Load 55(dvec4v)
+              90: 53(f64vec4) FAdd 89 88
                               Store 55(dvec4v) 90
-              91:   39(float) Load 41(doublev)
-              92:   39(float) ExtInst 1(GLSL.std.450) 6(FSign) 91
-              93:   39(float) Load 41(doublev)
-              94:   39(float) FAdd 93 92
+              91:39(float64_t) Load 41(doublev)
+              92:39(float64_t) ExtInst 1(GLSL.std.450) 6(FSign) 91
+              93:39(float64_t) Load 41(doublev)
+              94:39(float64_t) FAdd 93 92
                               Store 41(doublev) 94
-              95:   43(fvec2) Load 45(dvec2v)
-              96:   43(fvec2) ExtInst 1(GLSL.std.450) 6(FSign) 95
-              97:   43(fvec2) Load 45(dvec2v)
-              98:   43(fvec2) FAdd 97 96
+              95: 43(f64vec2) Load 45(dvec2v)
+              96: 43(f64vec2) ExtInst 1(GLSL.std.450) 6(FSign) 95
+              97: 43(f64vec2) Load 45(dvec2v)
+              98: 43(f64vec2) FAdd 97 96
                               Store 45(dvec2v) 98
-              99:   48(fvec3) Load 50(dvec3v)
-             100:   48(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 99
-             101:   48(fvec3) Load 50(dvec3v)
-             102:   48(fvec3) FAdd 101 100
+              99: 48(f64vec3) Load 50(dvec3v)
+             100: 48(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 99
+             101: 48(f64vec3) Load 50(dvec3v)
+             102: 48(f64vec3) FAdd 101 100
                               Store 50(dvec3v) 102
-             103:   53(fvec4) Load 55(dvec4v)
-             104:   53(fvec4) ExtInst 1(GLSL.std.450) 6(FSign) 103
-             105:   53(fvec4) Load 55(dvec4v)
-             106:   53(fvec4) FAdd 105 104
+             103: 53(f64vec4) Load 55(dvec4v)
+             104: 53(f64vec4) ExtInst 1(GLSL.std.450) 6(FSign) 103
+             105: 53(f64vec4) Load 55(dvec4v)
+             106: 53(f64vec4) FAdd 105 104
                               Store 55(dvec4v) 106
-             107:   39(float) Load 41(doublev)
-             108:   39(float) ExtInst 1(GLSL.std.450) 8(Floor) 107
-             109:   39(float) Load 41(doublev)
-             110:   39(float) FAdd 109 108
+             107:39(float64_t) Load 41(doublev)
+             108:39(float64_t) ExtInst 1(GLSL.std.450) 8(Floor) 107
+             109:39(float64_t) Load 41(doublev)
+             110:39(float64_t) FAdd 109 108
                               Store 41(doublev) 110
-             111:   43(fvec2) Load 45(dvec2v)
-             112:   43(fvec2) ExtInst 1(GLSL.std.450) 8(Floor) 111
-             113:   43(fvec2) Load 45(dvec2v)
-             114:   43(fvec2) FAdd 113 112
+             111: 43(f64vec2) Load 45(dvec2v)
+             112: 43(f64vec2) ExtInst 1(GLSL.std.450) 8(Floor) 111
+             113: 43(f64vec2) Load 45(dvec2v)
+             114: 43(f64vec2) FAdd 113 112
                               Store 45(dvec2v) 114
-             115:   48(fvec3) Load 50(dvec3v)
-             116:   48(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 115
-             117:   48(fvec3) Load 50(dvec3v)
-             118:   48(fvec3) FAdd 117 116
+             115: 48(f64vec3) Load 50(dvec3v)
+             116: 48(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 115
+             117: 48(f64vec3) Load 50(dvec3v)
+             118: 48(f64vec3) FAdd 117 116
                               Store 50(dvec3v) 118
-             119:   53(fvec4) Load 55(dvec4v)
-             120:   53(fvec4) ExtInst 1(GLSL.std.450) 8(Floor) 119
-             121:   53(fvec4) Load 55(dvec4v)
-             122:   53(fvec4) FAdd 121 120
+             119: 53(f64vec4) Load 55(dvec4v)
+             120: 53(f64vec4) ExtInst 1(GLSL.std.450) 8(Floor) 119
+             121: 53(f64vec4) Load 55(dvec4v)
+             122: 53(f64vec4) FAdd 121 120
                               Store 55(dvec4v) 122
-             123:   39(float) Load 41(doublev)
-             124:   39(float) ExtInst 1(GLSL.std.450) 3(Trunc) 123
-             125:   39(float) Load 41(doublev)
-             126:   39(float) FAdd 125 124
+             123:39(float64_t) Load 41(doublev)
+             124:39(float64_t) ExtInst 1(GLSL.std.450) 3(Trunc) 123
+             125:39(float64_t) Load 41(doublev)
+             126:39(float64_t) FAdd 125 124
                               Store 41(doublev) 126
-             127:   43(fvec2) Load 45(dvec2v)
-             128:   43(fvec2) ExtInst 1(GLSL.std.450) 3(Trunc) 127
-             129:   43(fvec2) Load 45(dvec2v)
-             130:   43(fvec2) FAdd 129 128
+             127: 43(f64vec2) Load 45(dvec2v)
+             128: 43(f64vec2) ExtInst 1(GLSL.std.450) 3(Trunc) 127
+             129: 43(f64vec2) Load 45(dvec2v)
+             130: 43(f64vec2) FAdd 129 128
                               Store 45(dvec2v) 130
-             131:   48(fvec3) Load 50(dvec3v)
-             132:   48(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 131
-             133:   48(fvec3) Load 50(dvec3v)
-             134:   48(fvec3) FAdd 133 132
+             131: 48(f64vec3) Load 50(dvec3v)
+             132: 48(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 131
+             133: 48(f64vec3) Load 50(dvec3v)
+             134: 48(f64vec3) FAdd 133 132
                               Store 50(dvec3v) 134
-             135:   53(fvec4) Load 55(dvec4v)
-             136:   53(fvec4) ExtInst 1(GLSL.std.450) 3(Trunc) 135
-             137:   53(fvec4) Load 55(dvec4v)
-             138:   53(fvec4) FAdd 137 136
+             135: 53(f64vec4) Load 55(dvec4v)
+             136: 53(f64vec4) ExtInst 1(GLSL.std.450) 3(Trunc) 135
+             137: 53(f64vec4) Load 55(dvec4v)
+             138: 53(f64vec4) FAdd 137 136
                               Store 55(dvec4v) 138
-             139:   39(float) Load 41(doublev)
-             140:   39(float) ExtInst 1(GLSL.std.450) 1(Round) 139
-             141:   39(float) Load 41(doublev)
-             142:   39(float) FAdd 141 140
+             139:39(float64_t) Load 41(doublev)
+             140:39(float64_t) ExtInst 1(GLSL.std.450) 1(Round) 139
+             141:39(float64_t) Load 41(doublev)
+             142:39(float64_t) FAdd 141 140
                               Store 41(doublev) 142
-             143:   43(fvec2) Load 45(dvec2v)
-             144:   43(fvec2) ExtInst 1(GLSL.std.450) 1(Round) 143
-             145:   43(fvec2) Load 45(dvec2v)
-             146:   43(fvec2) FAdd 145 144
+             143: 43(f64vec2) Load 45(dvec2v)
+             144: 43(f64vec2) ExtInst 1(GLSL.std.450) 1(Round) 143
+             145: 43(f64vec2) Load 45(dvec2v)
+             146: 43(f64vec2) FAdd 145 144
                               Store 45(dvec2v) 146
-             147:   48(fvec3) Load 50(dvec3v)
-             148:   48(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 147
-             149:   48(fvec3) Load 50(dvec3v)
-             150:   48(fvec3) FAdd 149 148
+             147: 48(f64vec3) Load 50(dvec3v)
+             148: 48(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 147
+             149: 48(f64vec3) Load 50(dvec3v)
+             150: 48(f64vec3) FAdd 149 148
                               Store 50(dvec3v) 150
-             151:   53(fvec4) Load 55(dvec4v)
-             152:   53(fvec4) ExtInst 1(GLSL.std.450) 1(Round) 151
-             153:   53(fvec4) Load 55(dvec4v)
-             154:   53(fvec4) FAdd 153 152
+             151: 53(f64vec4) Load 55(dvec4v)
+             152: 53(f64vec4) ExtInst 1(GLSL.std.450) 1(Round) 151
+             153: 53(f64vec4) Load 55(dvec4v)
+             154: 53(f64vec4) FAdd 153 152
                               Store 55(dvec4v) 154
-             155:   39(float) Load 41(doublev)
-             156:   39(float) ExtInst 1(GLSL.std.450) 2(RoundEven) 155
-             157:   39(float) Load 41(doublev)
-             158:   39(float) FAdd 157 156
+             155:39(float64_t) Load 41(doublev)
+             156:39(float64_t) ExtInst 1(GLSL.std.450) 2(RoundEven) 155
+             157:39(float64_t) Load 41(doublev)
+             158:39(float64_t) FAdd 157 156
                               Store 41(doublev) 158
-             159:   43(fvec2) Load 45(dvec2v)
-             160:   43(fvec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 159
-             161:   43(fvec2) Load 45(dvec2v)
-             162:   43(fvec2) FAdd 161 160
+             159: 43(f64vec2) Load 45(dvec2v)
+             160: 43(f64vec2) ExtInst 1(GLSL.std.450) 2(RoundEven) 159
+             161: 43(f64vec2) Load 45(dvec2v)
+             162: 43(f64vec2) FAdd 161 160
                               Store 45(dvec2v) 162
-             163:   48(fvec3) Load 50(dvec3v)
-             164:   48(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 163
-             165:   48(fvec3) Load 50(dvec3v)
-             166:   48(fvec3) FAdd 165 164
+             163: 48(f64vec3) Load 50(dvec3v)
+             164: 48(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 163
+             165: 48(f64vec3) Load 50(dvec3v)
+             166: 48(f64vec3) FAdd 165 164
                               Store 50(dvec3v) 166
-             167:   53(fvec4) Load 55(dvec4v)
-             168:   53(fvec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 167
-             169:   53(fvec4) Load 55(dvec4v)
-             170:   53(fvec4) FAdd 169 168
+             167: 53(f64vec4) Load 55(dvec4v)
+             168: 53(f64vec4) ExtInst 1(GLSL.std.450) 2(RoundEven) 167
+             169: 53(f64vec4) Load 55(dvec4v)
+             170: 53(f64vec4) FAdd 169 168
                               Store 55(dvec4v) 170
-             171:   39(float) Load 41(doublev)
-             172:   39(float) ExtInst 1(GLSL.std.450) 9(Ceil) 171
-             173:   39(float) Load 41(doublev)
-             174:   39(float) FAdd 173 172
+             171:39(float64_t) Load 41(doublev)
+             172:39(float64_t) ExtInst 1(GLSL.std.450) 9(Ceil) 171
+             173:39(float64_t) Load 41(doublev)
+             174:39(float64_t) FAdd 173 172
                               Store 41(doublev) 174
-             175:   43(fvec2) Load 45(dvec2v)
-             176:   43(fvec2) ExtInst 1(GLSL.std.450) 9(Ceil) 175
-             177:   43(fvec2) Load 45(dvec2v)
-             178:   43(fvec2) FAdd 177 176
+             175: 43(f64vec2) Load 45(dvec2v)
+             176: 43(f64vec2) ExtInst 1(GLSL.std.450) 9(Ceil) 175
+             177: 43(f64vec2) Load 45(dvec2v)
+             178: 43(f64vec2) FAdd 177 176
                               Store 45(dvec2v) 178
-             179:   48(fvec3) Load 50(dvec3v)
-             180:   48(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 179
-             181:   48(fvec3) Load 50(dvec3v)
-             182:   48(fvec3) FAdd 181 180
+             179: 48(f64vec3) Load 50(dvec3v)
+             180: 48(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 179
+             181: 48(f64vec3) Load 50(dvec3v)
+             182: 48(f64vec3) FAdd 181 180
                               Store 50(dvec3v) 182
-             183:   53(fvec4) Load 55(dvec4v)
-             184:   53(fvec4) ExtInst 1(GLSL.std.450) 9(Ceil) 183
-             185:   53(fvec4) Load 55(dvec4v)
-             186:   53(fvec4) FAdd 185 184
+             183: 53(f64vec4) Load 55(dvec4v)
+             184: 53(f64vec4) ExtInst 1(GLSL.std.450) 9(Ceil) 183
+             185: 53(f64vec4) Load 55(dvec4v)
+             186: 53(f64vec4) FAdd 185 184
                               Store 55(dvec4v) 186
-             187:   39(float) Load 41(doublev)
-             188:   39(float) ExtInst 1(GLSL.std.450) 10(Fract) 187
-             189:   39(float) Load 41(doublev)
-             190:   39(float) FAdd 189 188
+             187:39(float64_t) Load 41(doublev)
+             188:39(float64_t) ExtInst 1(GLSL.std.450) 10(Fract) 187
+             189:39(float64_t) Load 41(doublev)
+             190:39(float64_t) FAdd 189 188
                               Store 41(doublev) 190
-             191:   43(fvec2) Load 45(dvec2v)
-             192:   43(fvec2) ExtInst 1(GLSL.std.450) 10(Fract) 191
-             193:   43(fvec2) Load 45(dvec2v)
-             194:   43(fvec2) FAdd 193 192
+             191: 43(f64vec2) Load 45(dvec2v)
+             192: 43(f64vec2) ExtInst 1(GLSL.std.450) 10(Fract) 191
+             193: 43(f64vec2) Load 45(dvec2v)
+             194: 43(f64vec2) FAdd 193 192
                               Store 45(dvec2v) 194
-             195:   48(fvec3) Load 50(dvec3v)
-             196:   48(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 195
-             197:   48(fvec3) Load 50(dvec3v)
-             198:   48(fvec3) FAdd 197 196
+             195: 48(f64vec3) Load 50(dvec3v)
+             196: 48(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 195
+             197: 48(f64vec3) Load 50(dvec3v)
+             198: 48(f64vec3) FAdd 197 196
                               Store 50(dvec3v) 198
-             199:   53(fvec4) Load 55(dvec4v)
-             200:   53(fvec4) ExtInst 1(GLSL.std.450) 10(Fract) 199
-             201:   53(fvec4) Load 55(dvec4v)
-             202:   53(fvec4) FAdd 201 200
+             199: 53(f64vec4) Load 55(dvec4v)
+             200: 53(f64vec4) ExtInst 1(GLSL.std.450) 10(Fract) 199
+             201: 53(f64vec4) Load 55(dvec4v)
+             202: 53(f64vec4) FAdd 201 200
                               Store 55(dvec4v) 202
-             203:   39(float) Load 41(doublev)
-             204:   39(float) Load 41(doublev)
-             205:   39(float) FMod 203 204
-             206:   39(float) Load 41(doublev)
-             207:   39(float) FAdd 206 205
+             203:39(float64_t) Load 41(doublev)
+             204:39(float64_t) Load 41(doublev)
+             205:39(float64_t) FMod 203 204
+             206:39(float64_t) Load 41(doublev)
+             207:39(float64_t) FAdd 206 205
                               Store 41(doublev) 207
-             208:   43(fvec2) Load 45(dvec2v)
-             209:   39(float) Load 41(doublev)
-             210:   43(fvec2) CompositeConstruct 209 209
-             211:   43(fvec2) FMod 208 210
-             212:   43(fvec2) Load 45(dvec2v)
-             213:   43(fvec2) FAdd 212 211
+             208: 43(f64vec2) Load 45(dvec2v)
+             209:39(float64_t) Load 41(doublev)
+             210: 43(f64vec2) CompositeConstruct 209 209
+             211: 43(f64vec2) FMod 208 210
+             212: 43(f64vec2) Load 45(dvec2v)
+             213: 43(f64vec2) FAdd 212 211
                               Store 45(dvec2v) 213
-             214:   48(fvec3) Load 50(dvec3v)
-             215:   39(float) Load 41(doublev)
-             216:   48(fvec3) CompositeConstruct 215 215 215
-             217:   48(fvec3) FMod 214 216
-             218:   48(fvec3) Load 50(dvec3v)
-             219:   48(fvec3) FAdd 218 217
+             214: 48(f64vec3) Load 50(dvec3v)
+             215:39(float64_t) Load 41(doublev)
+             216: 48(f64vec3) CompositeConstruct 215 215 215
+             217: 48(f64vec3) FMod 214 216
+             218: 48(f64vec3) Load 50(dvec3v)
+             219: 48(f64vec3) FAdd 218 217
                               Store 50(dvec3v) 219
-             220:   53(fvec4) Load 55(dvec4v)
-             221:   39(float) Load 41(doublev)
-             222:   53(fvec4) CompositeConstruct 221 221 221 221
-             223:   53(fvec4) FMod 220 222
-             224:   53(fvec4) Load 55(dvec4v)
-             225:   53(fvec4) FAdd 224 223
+             220: 53(f64vec4) Load 55(dvec4v)
+             221:39(float64_t) Load 41(doublev)
+             222: 53(f64vec4) CompositeConstruct 221 221 221 221
+             223: 53(f64vec4) FMod 220 222
+             224: 53(f64vec4) Load 55(dvec4v)
+             225: 53(f64vec4) FAdd 224 223
                               Store 55(dvec4v) 225
-             226:   43(fvec2) Load 45(dvec2v)
-             227:   43(fvec2) Load 45(dvec2v)
-             228:   43(fvec2) FMod 226 227
-             229:   43(fvec2) Load 45(dvec2v)
-             230:   43(fvec2) FAdd 229 228
+             226: 43(f64vec2) Load 45(dvec2v)
+             227: 43(f64vec2) Load 45(dvec2v)
+             228: 43(f64vec2) FMod 226 227
+             229: 43(f64vec2) Load 45(dvec2v)
+             230: 43(f64vec2) FAdd 229 228
                               Store 45(dvec2v) 230
-             231:   48(fvec3) Load 50(dvec3v)
-             232:   48(fvec3) Load 50(dvec3v)
-             233:   48(fvec3) FMod 231 232
-             234:   48(fvec3) Load 50(dvec3v)
-             235:   48(fvec3) FAdd 234 233
+             231: 48(f64vec3) Load 50(dvec3v)
+             232: 48(f64vec3) Load 50(dvec3v)
+             233: 48(f64vec3) FMod 231 232
+             234: 48(f64vec3) Load 50(dvec3v)
+             235: 48(f64vec3) FAdd 234 233
                               Store 50(dvec3v) 235
-             236:   53(fvec4) Load 55(dvec4v)
-             237:   53(fvec4) Load 55(dvec4v)
-             238:   53(fvec4) FMod 236 237
-             239:   53(fvec4) Load 55(dvec4v)
-             240:   53(fvec4) FAdd 239 238
+             236: 53(f64vec4) Load 55(dvec4v)
+             237: 53(f64vec4) Load 55(dvec4v)
+             238: 53(f64vec4) FMod 236 237
+             239: 53(f64vec4) Load 55(dvec4v)
+             240: 53(f64vec4) FAdd 239 238
                               Store 55(dvec4v) 240
-             241:   39(float) Load 41(doublev)
-             242:   39(float) ExtInst 1(GLSL.std.450) 35(Modf) 241 41(doublev)
-             243:   39(float) Load 41(doublev)
-             244:   39(float) FAdd 243 242
+             241:39(float64_t) Load 41(doublev)
+             242:39(float64_t) ExtInst 1(GLSL.std.450) 35(Modf) 241 41(doublev)
+             243:39(float64_t) Load 41(doublev)
+             244:39(float64_t) FAdd 243 242
                               Store 41(doublev) 244
-             245:   43(fvec2) Load 45(dvec2v)
-             246:   43(fvec2) ExtInst 1(GLSL.std.450) 35(Modf) 245 45(dvec2v)
-             247:   43(fvec2) Load 45(dvec2v)
-             248:   43(fvec2) FAdd 247 246
+             245: 43(f64vec2) Load 45(dvec2v)
+             246: 43(f64vec2) ExtInst 1(GLSL.std.450) 35(Modf) 245 45(dvec2v)
+             247: 43(f64vec2) Load 45(dvec2v)
+             248: 43(f64vec2) FAdd 247 246
                               Store 45(dvec2v) 248
-             249:   48(fvec3) Load 50(dvec3v)
-             250:   48(fvec3) ExtInst 1(GLSL.std.450) 35(Modf) 249 50(dvec3v)
-             251:   48(fvec3) Load 50(dvec3v)
-             252:   48(fvec3) FAdd 251 250
+             249: 48(f64vec3) Load 50(dvec3v)
+             250: 48(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 249 50(dvec3v)
+             251: 48(f64vec3) Load 50(dvec3v)
+             252: 48(f64vec3) FAdd 251 250
                               Store 50(dvec3v) 252
-             253:   53(fvec4) Load 55(dvec4v)
-             254:   53(fvec4) ExtInst 1(GLSL.std.450) 35(Modf) 253 55(dvec4v)
-             255:   53(fvec4) Load 55(dvec4v)
-             256:   53(fvec4) FAdd 255 254
+             253: 53(f64vec4) Load 55(dvec4v)
+             254: 53(f64vec4) ExtInst 1(GLSL.std.450) 35(Modf) 253 55(dvec4v)
+             255: 53(f64vec4) Load 55(dvec4v)
+             256: 53(f64vec4) FAdd 255 254
                               Store 55(dvec4v) 256
-             257:   39(float) Load 41(doublev)
-             258:   39(float) Load 41(doublev)
-             259:   39(float) ExtInst 1(GLSL.std.450) 37(FMin) 257 258
-             260:   39(float) Load 41(doublev)
-             261:   39(float) FAdd 260 259
+             257:39(float64_t) Load 41(doublev)
+             258:39(float64_t) Load 41(doublev)
+             259:39(float64_t) ExtInst 1(GLSL.std.450) 37(FMin) 257 258
+             260:39(float64_t) Load 41(doublev)
+             261:39(float64_t) FAdd 260 259
                               Store 41(doublev) 261
-             262:   43(fvec2) Load 45(dvec2v)
-             263:   39(float) Load 41(doublev)
-             264:   43(fvec2) CompositeConstruct 263 263
-             265:   43(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 262 264
-             266:   43(fvec2) Load 45(dvec2v)
-             267:   43(fvec2) FAdd 266 265
+             262: 43(f64vec2) Load 45(dvec2v)
+             263:39(float64_t) Load 41(doublev)
+             264: 43(f64vec2) CompositeConstruct 263 263
+             265: 43(f64vec2) ExtInst 1(GLSL.std.450) 37(FMin) 262 264
+             266: 43(f64vec2) Load 45(dvec2v)
+             267: 43(f64vec2) FAdd 266 265
                               Store 45(dvec2v) 267
-             268:   48(fvec3) Load 50(dvec3v)
-             269:   39(float) Load 41(doublev)
-             270:   48(fvec3) CompositeConstruct 269 269 269
-             271:   48(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 268 270
-             272:   48(fvec3) Load 50(dvec3v)
-             273:   48(fvec3) FAdd 272 271
+             268: 48(f64vec3) Load 50(dvec3v)
+             269:39(float64_t) Load 41(doublev)
+             270: 48(f64vec3) CompositeConstruct 269 269 269
+             271: 48(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 268 270
+             272: 48(f64vec3) Load 50(dvec3v)
+             273: 48(f64vec3) FAdd 272 271
                               Store 50(dvec3v) 273
-             274:   53(fvec4) Load 55(dvec4v)
-             275:   39(float) Load 41(doublev)
-             276:   53(fvec4) CompositeConstruct 275 275 275 275
-             277:   53(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 274 276
-             278:   53(fvec4) Load 55(dvec4v)
-             279:   53(fvec4) FAdd 278 277
+             274: 53(f64vec4) Load 55(dvec4v)
+             275:39(float64_t) Load 41(doublev)
+             276: 53(f64vec4) CompositeConstruct 275 275 275 275
+             277: 53(f64vec4) ExtInst 1(GLSL.std.450) 37(FMin) 274 276
+             278: 53(f64vec4) Load 55(dvec4v)
+             279: 53(f64vec4) FAdd 278 277
                               Store 55(dvec4v) 279
-             280:   43(fvec2) Load 45(dvec2v)
-             281:   43(fvec2) Load 45(dvec2v)
-             282:   43(fvec2) ExtInst 1(GLSL.std.450) 37(FMin) 280 281
-             283:   43(fvec2) Load 45(dvec2v)
-             284:   43(fvec2) FAdd 283 282
+             280: 43(f64vec2) Load 45(dvec2v)
+             281: 43(f64vec2) Load 45(dvec2v)
+             282: 43(f64vec2) ExtInst 1(GLSL.std.450) 37(FMin) 280 281
+             283: 43(f64vec2) Load 45(dvec2v)
+             284: 43(f64vec2) FAdd 283 282
                               Store 45(dvec2v) 284
-             285:   48(fvec3) Load 50(dvec3v)
-             286:   48(fvec3) Load 50(dvec3v)
-             287:   48(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 285 286
-             288:   48(fvec3) Load 50(dvec3v)
-             289:   48(fvec3) FAdd 288 287
+             285: 48(f64vec3) Load 50(dvec3v)
+             286: 48(f64vec3) Load 50(dvec3v)
+             287: 48(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 285 286
+             288: 48(f64vec3) Load 50(dvec3v)
+             289: 48(f64vec3) FAdd 288 287
                               Store 50(dvec3v) 289
-             290:   53(fvec4) Load 55(dvec4v)
-             291:   53(fvec4) Load 55(dvec4v)
-             292:   53(fvec4) ExtInst 1(GLSL.std.450) 37(FMin) 290 291
-             293:   53(fvec4) Load 55(dvec4v)
-             294:   53(fvec4) FAdd 293 292
+             290: 53(f64vec4) Load 55(dvec4v)
+             291: 53(f64vec4) Load 55(dvec4v)
+             292: 53(f64vec4) ExtInst 1(GLSL.std.450) 37(FMin) 290 291
+             293: 53(f64vec4) Load 55(dvec4v)
+             294: 53(f64vec4) FAdd 293 292
                               Store 55(dvec4v) 294
-             295:   39(float) Load 41(doublev)
-             296:   39(float) Load 41(doublev)
-             297:   39(float) ExtInst 1(GLSL.std.450) 40(FMax) 295 296
-             298:   39(float) Load 41(doublev)
-             299:   39(float) FAdd 298 297
+             295:39(float64_t) Load 41(doublev)
+             296:39(float64_t) Load 41(doublev)
+             297:39(float64_t) ExtInst 1(GLSL.std.450) 40(FMax) 295 296
+             298:39(float64_t) Load 41(doublev)
+             299:39(float64_t) FAdd 298 297
                               Store 41(doublev) 299
-             300:   43(fvec2) Load 45(dvec2v)
-             301:   39(float) Load 41(doublev)
-             302:   43(fvec2) CompositeConstruct 301 301
-             303:   43(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 300 302
-             304:   43(fvec2) Load 45(dvec2v)
-             305:   43(fvec2) FAdd 304 303
+             300: 43(f64vec2) Load 45(dvec2v)
+             301:39(float64_t) Load 41(doublev)
+             302: 43(f64vec2) CompositeConstruct 301 301
+             303: 43(f64vec2) ExtInst 1(GLSL.std.450) 40(FMax) 300 302
+             304: 43(f64vec2) Load 45(dvec2v)
+             305: 43(f64vec2) FAdd 304 303
                               Store 45(dvec2v) 305
-             306:   48(fvec3) Load 50(dvec3v)
-             307:   39(float) Load 41(doublev)
-             308:   48(fvec3) CompositeConstruct 307 307 307
-             309:   48(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 306 308
-             310:   48(fvec3) Load 50(dvec3v)
-             311:   48(fvec3) FAdd 310 309
+             306: 48(f64vec3) Load 50(dvec3v)
+             307:39(float64_t) Load 41(doublev)
+             308: 48(f64vec3) CompositeConstruct 307 307 307
+             309: 48(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 306 308
+             310: 48(f64vec3) Load 50(dvec3v)
+             311: 48(f64vec3) FAdd 310 309
                               Store 50(dvec3v) 311
-             312:   53(fvec4) Load 55(dvec4v)
-             313:   39(float) Load 41(doublev)
-             314:   53(fvec4) CompositeConstruct 313 313 313 313
-             315:   53(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 312 314
-             316:   53(fvec4) Load 55(dvec4v)
-             317:   53(fvec4) FAdd 316 315
+             312: 53(f64vec4) Load 55(dvec4v)
+             313:39(float64_t) Load 41(doublev)
+             314: 53(f64vec4) CompositeConstruct 313 313 313 313
+             315: 53(f64vec4) ExtInst 1(GLSL.std.450) 40(FMax) 312 314
+             316: 53(f64vec4) Load 55(dvec4v)
+             317: 53(f64vec4) FAdd 316 315
                               Store 55(dvec4v) 317
-             318:   43(fvec2) Load 45(dvec2v)
-             319:   43(fvec2) Load 45(dvec2v)
-             320:   43(fvec2) ExtInst 1(GLSL.std.450) 40(FMax) 318 319
-             321:   43(fvec2) Load 45(dvec2v)
-             322:   43(fvec2) FAdd 321 320
+             318: 43(f64vec2) Load 45(dvec2v)
+             319: 43(f64vec2) Load 45(dvec2v)
+             320: 43(f64vec2) ExtInst 1(GLSL.std.450) 40(FMax) 318 319
+             321: 43(f64vec2) Load 45(dvec2v)
+             322: 43(f64vec2) FAdd 321 320
                               Store 45(dvec2v) 322
-             323:   48(fvec3) Load 50(dvec3v)
-             324:   48(fvec3) Load 50(dvec3v)
-             325:   48(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 323 324
-             326:   48(fvec3) Load 50(dvec3v)
-             327:   48(fvec3) FAdd 326 325
+             323: 48(f64vec3) Load 50(dvec3v)
+             324: 48(f64vec3) Load 50(dvec3v)
+             325: 48(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 323 324
+             326: 48(f64vec3) Load 50(dvec3v)
+             327: 48(f64vec3) FAdd 326 325
                               Store 50(dvec3v) 327
-             328:   53(fvec4) Load 55(dvec4v)
-             329:   53(fvec4) Load 55(dvec4v)
-             330:   53(fvec4) ExtInst 1(GLSL.std.450) 40(FMax) 328 329
-             331:   53(fvec4) Load 55(dvec4v)
-             332:   53(fvec4) FAdd 331 330
+             328: 53(f64vec4) Load 55(dvec4v)
+             329: 53(f64vec4) Load 55(dvec4v)
+             330: 53(f64vec4) ExtInst 1(GLSL.std.450) 40(FMax) 328 329
+             331: 53(f64vec4) Load 55(dvec4v)
+             332: 53(f64vec4) FAdd 331 330
                               Store 55(dvec4v) 332
-             333:   39(float) Load 41(doublev)
-             334:   39(float) Load 41(doublev)
-             335:   39(float) Load 41(doublev)
-             336:   39(float) ExtInst 1(GLSL.std.450) 43(FClamp) 333 334 335
-             337:   39(float) Load 41(doublev)
-             338:   39(float) FAdd 337 336
+             333:39(float64_t) Load 41(doublev)
+             334:39(float64_t) Load 41(doublev)
+             335:39(float64_t) Load 41(doublev)
+             336:39(float64_t) ExtInst 1(GLSL.std.450) 43(FClamp) 333 334 335
+             337:39(float64_t) Load 41(doublev)
+             338:39(float64_t) FAdd 337 336
                               Store 41(doublev) 338
-             339:   43(fvec2) Load 45(dvec2v)
-             340:   39(float) Load 41(doublev)
-             341:   39(float) Load 41(doublev)
-             342:   43(fvec2) CompositeConstruct 340 340
-             343:   43(fvec2) CompositeConstruct 341 341
-             344:   43(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 339 342 343
-             345:   43(fvec2) Load 45(dvec2v)
-             346:   43(fvec2) FAdd 345 344
+             339: 43(f64vec2) Load 45(dvec2v)
+             340:39(float64_t) Load 41(doublev)
+             341:39(float64_t) Load 41(doublev)
+             342: 43(f64vec2) CompositeConstruct 340 340
+             343: 43(f64vec2) CompositeConstruct 341 341
+             344: 43(f64vec2) ExtInst 1(GLSL.std.450) 43(FClamp) 339 342 343
+             345: 43(f64vec2) Load 45(dvec2v)
+             346: 43(f64vec2) FAdd 345 344
                               Store 45(dvec2v) 346
-             347:   48(fvec3) Load 50(dvec3v)
-             348:   39(float) Load 41(doublev)
-             349:   39(float) Load 41(doublev)
-             350:   48(fvec3) CompositeConstruct 348 348 348
-             351:   48(fvec3) CompositeConstruct 349 349 349
-             352:   48(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 347 350 351
-             353:   48(fvec3) Load 50(dvec3v)
-             354:   48(fvec3) FAdd 353 352
+             347: 48(f64vec3) Load 50(dvec3v)
+             348:39(float64_t) Load 41(doublev)
+             349:39(float64_t) Load 41(doublev)
+             350: 48(f64vec3) CompositeConstruct 348 348 348
+             351: 48(f64vec3) CompositeConstruct 349 349 349
+             352: 48(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 347 350 351
+             353: 48(f64vec3) Load 50(dvec3v)
+             354: 48(f64vec3) FAdd 353 352
                               Store 50(dvec3v) 354
-             355:   53(fvec4) Load 55(dvec4v)
-             356:   39(float) Load 41(doublev)
-             357:   39(float) Load 41(doublev)
-             358:   53(fvec4) CompositeConstruct 356 356 356 356
-             359:   53(fvec4) CompositeConstruct 357 357 357 357
-             360:   53(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 355 358 359
-             361:   53(fvec4) Load 55(dvec4v)
-             362:   53(fvec4) FAdd 361 360
+             355: 53(f64vec4) Load 55(dvec4v)
+             356:39(float64_t) Load 41(doublev)
+             357:39(float64_t) Load 41(doublev)
+             358: 53(f64vec4) CompositeConstruct 356 356 356 356
+             359: 53(f64vec4) CompositeConstruct 357 357 357 357
+             360: 53(f64vec4) ExtInst 1(GLSL.std.450) 43(FClamp) 355 358 359
+             361: 53(f64vec4) Load 55(dvec4v)
+             362: 53(f64vec4) FAdd 361 360
                               Store 55(dvec4v) 362
-             363:   43(fvec2) Load 45(dvec2v)
-             364:   43(fvec2) Load 45(dvec2v)
-             365:   43(fvec2) Load 45(dvec2v)
-             366:   43(fvec2) ExtInst 1(GLSL.std.450) 43(FClamp) 363 364 365
-             367:   43(fvec2) Load 45(dvec2v)
-             368:   43(fvec2) FAdd 367 366
+             363: 43(f64vec2) Load 45(dvec2v)
+             364: 43(f64vec2) Load 45(dvec2v)
+             365: 43(f64vec2) Load 45(dvec2v)
+             366: 43(f64vec2) ExtInst 1(GLSL.std.450) 43(FClamp) 363 364 365
+             367: 43(f64vec2) Load 45(dvec2v)
+             368: 43(f64vec2) FAdd 367 366
                               Store 45(dvec2v) 368
-             369:   48(fvec3) Load 50(dvec3v)
-             370:   48(fvec3) Load 50(dvec3v)
-             371:   48(fvec3) Load 50(dvec3v)
-             372:   48(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 369 370 371
-             373:   48(fvec3) Load 50(dvec3v)
-             374:   48(fvec3) FAdd 373 372
+             369: 48(f64vec3) Load 50(dvec3v)
+             370: 48(f64vec3) Load 50(dvec3v)
+             371: 48(f64vec3) Load 50(dvec3v)
+             372: 48(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 369 370 371
+             373: 48(f64vec3) Load 50(dvec3v)
+             374: 48(f64vec3) FAdd 373 372
                               Store 50(dvec3v) 374
-             375:   53(fvec4) Load 55(dvec4v)
-             376:   53(fvec4) Load 55(dvec4v)
-             377:   53(fvec4) Load 55(dvec4v)
-             378:   53(fvec4) ExtInst 1(GLSL.std.450) 43(FClamp) 375 376 377
-             379:   53(fvec4) Load 55(dvec4v)
-             380:   53(fvec4) FAdd 379 378
+             375: 53(f64vec4) Load 55(dvec4v)
+             376: 53(f64vec4) Load 55(dvec4v)
+             377: 53(f64vec4) Load 55(dvec4v)
+             378: 53(f64vec4) ExtInst 1(GLSL.std.450) 43(FClamp) 375 376 377
+             379: 53(f64vec4) Load 55(dvec4v)
+             380: 53(f64vec4) FAdd 379 378
                               Store 55(dvec4v) 380
-             381:   39(float) Load 41(doublev)
-             382:   39(float) Load 41(doublev)
-             383:   39(float) Load 41(doublev)
-             384:   39(float) ExtInst 1(GLSL.std.450) 46(FMix) 381 382 383
-             385:   39(float) Load 41(doublev)
-             386:   39(float) FAdd 385 384
+             381:39(float64_t) Load 41(doublev)
+             382:39(float64_t) Load 41(doublev)
+             383:39(float64_t) Load 41(doublev)
+             384:39(float64_t) ExtInst 1(GLSL.std.450) 46(FMix) 381 382 383
+             385:39(float64_t) Load 41(doublev)
+             386:39(float64_t) FAdd 385 384
                               Store 41(doublev) 386
-             387:   43(fvec2) Load 45(dvec2v)
-             388:   43(fvec2) Load 45(dvec2v)
-             389:   39(float) Load 41(doublev)
-             390:   43(fvec2) CompositeConstruct 389 389
-             391:   43(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 387 388 390
-             392:   43(fvec2) Load 45(dvec2v)
-             393:   43(fvec2) FAdd 392 391
+             387: 43(f64vec2) Load 45(dvec2v)
+             388: 43(f64vec2) Load 45(dvec2v)
+             389:39(float64_t) Load 41(doublev)
+             390: 43(f64vec2) CompositeConstruct 389 389
+             391: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 387 388 390
+             392: 43(f64vec2) Load 45(dvec2v)
+             393: 43(f64vec2) FAdd 392 391
                               Store 45(dvec2v) 393
-             394:   48(fvec3) Load 50(dvec3v)
-             395:   48(fvec3) Load 50(dvec3v)
-             396:   39(float) Load 41(doublev)
-             397:   48(fvec3) CompositeConstruct 396 396 396
-             398:   48(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 394 395 397
-             399:   48(fvec3) Load 50(dvec3v)
-             400:   48(fvec3) FAdd 399 398
+             394: 48(f64vec3) Load 50(dvec3v)
+             395: 48(f64vec3) Load 50(dvec3v)
+             396:39(float64_t) Load 41(doublev)
+             397: 48(f64vec3) CompositeConstruct 396 396 396
+             398: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 394 395 397
+             399: 48(f64vec3) Load 50(dvec3v)
+             400: 48(f64vec3) FAdd 399 398
                               Store 50(dvec3v) 400
-             401:   53(fvec4) Load 55(dvec4v)
-             402:   53(fvec4) Load 55(dvec4v)
-             403:   39(float) Load 41(doublev)
-             404:   53(fvec4) CompositeConstruct 403 403 403 403
-             405:   53(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 401 402 404
-             406:   53(fvec4) Load 55(dvec4v)
-             407:   53(fvec4) FAdd 406 405
+             401: 53(f64vec4) Load 55(dvec4v)
+             402: 53(f64vec4) Load 55(dvec4v)
+             403:39(float64_t) Load 41(doublev)
+             404: 53(f64vec4) CompositeConstruct 403 403 403 403
+             405: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 401 402 404
+             406: 53(f64vec4) Load 55(dvec4v)
+             407: 53(f64vec4) FAdd 406 405
                               Store 55(dvec4v) 407
-             408:   43(fvec2) Load 45(dvec2v)
-             409:   43(fvec2) Load 45(dvec2v)
-             410:   43(fvec2) Load 45(dvec2v)
-             411:   43(fvec2) ExtInst 1(GLSL.std.450) 46(FMix) 408 409 410
-             412:   43(fvec2) Load 45(dvec2v)
-             413:   43(fvec2) FAdd 412 411
+             408: 43(f64vec2) Load 45(dvec2v)
+             409: 43(f64vec2) Load 45(dvec2v)
+             410: 43(f64vec2) Load 45(dvec2v)
+             411: 43(f64vec2) ExtInst 1(GLSL.std.450) 46(FMix) 408 409 410
+             412: 43(f64vec2) Load 45(dvec2v)
+             413: 43(f64vec2) FAdd 412 411
                               Store 45(dvec2v) 413
-             414:   48(fvec3) Load 50(dvec3v)
-             415:   48(fvec3) Load 50(dvec3v)
-             416:   48(fvec3) Load 50(dvec3v)
-             417:   48(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 414 415 416
-             418:   48(fvec3) Load 50(dvec3v)
-             419:   48(fvec3) FAdd 418 417
+             414: 48(f64vec3) Load 50(dvec3v)
+             415: 48(f64vec3) Load 50(dvec3v)
+             416: 48(f64vec3) Load 50(dvec3v)
+             417: 48(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 414 415 416
+             418: 48(f64vec3) Load 50(dvec3v)
+             419: 48(f64vec3) FAdd 418 417
                               Store 50(dvec3v) 419
-             420:   53(fvec4) Load 55(dvec4v)
-             421:   53(fvec4) Load 55(dvec4v)
-             422:   53(fvec4) Load 55(dvec4v)
-             423:   53(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 420 421 422
-             424:   53(fvec4) Load 55(dvec4v)
-             425:   53(fvec4) FAdd 424 423
+             420: 53(f64vec4) Load 55(dvec4v)
+             421: 53(f64vec4) Load 55(dvec4v)
+             422: 53(f64vec4) Load 55(dvec4v)
+             423: 53(f64vec4) ExtInst 1(GLSL.std.450) 46(FMix) 420 421 422
+             424: 53(f64vec4) Load 55(dvec4v)
+             425: 53(f64vec4) FAdd 424 423
                               Store 55(dvec4v) 425
-             426:   39(float) Load 41(doublev)
-             427:   39(float) Load 41(doublev)
+             426:39(float64_t) Load 41(doublev)
+             427:39(float64_t) Load 41(doublev)
              431:   428(bool) Load 430(boolv)
-             432:   39(float) Select 431 427 426
-             433:   39(float) Load 41(doublev)
-             434:   39(float) FAdd 433 432
+             432:39(float64_t) Select 431 427 426
+             433:39(float64_t) Load 41(doublev)
+             434:39(float64_t) FAdd 433 432
                               Store 41(doublev) 434
-             435:   43(fvec2) Load 45(dvec2v)
-             436:   43(fvec2) Load 45(dvec2v)
+             435: 43(f64vec2) Load 45(dvec2v)
+             436: 43(f64vec2) Load 45(dvec2v)
              440:  437(bvec2) Load 439(bvec2v)
-             441:   43(fvec2) Select 440 436 435
-             442:   43(fvec2) Load 45(dvec2v)
-             443:   43(fvec2) FAdd 442 441
+             441: 43(f64vec2) Select 440 436 435
+             442: 43(f64vec2) Load 45(dvec2v)
+             443: 43(f64vec2) FAdd 442 441
                               Store 45(dvec2v) 443
-             444:   48(fvec3) Load 50(dvec3v)
-             445:   48(fvec3) Load 50(dvec3v)
+             444: 48(f64vec3) Load 50(dvec3v)
+             445: 48(f64vec3) Load 50(dvec3v)
              449:  446(bvec3) Load 448(bvec3v)
-             450:   48(fvec3) Select 449 445 444
-             451:   48(fvec3) Load 50(dvec3v)
-             452:   48(fvec3) FAdd 451 450
+             450: 48(f64vec3) Select 449 445 444
+             451: 48(f64vec3) Load 50(dvec3v)
+             452: 48(f64vec3) FAdd 451 450
                               Store 50(dvec3v) 452
-             453:   53(fvec4) Load 55(dvec4v)
-             454:   53(fvec4) Load 55(dvec4v)
+             453: 53(f64vec4) Load 55(dvec4v)
+             454: 53(f64vec4) Load 55(dvec4v)
              458:  455(bvec4) Load 457(bvec4v)
-             459:   53(fvec4) Select 458 454 453
-             460:   53(fvec4) Load 55(dvec4v)
-             461:   53(fvec4) FAdd 460 459
+             459: 53(f64vec4) Select 458 454 453
+             460: 53(f64vec4) Load 55(dvec4v)
+             461: 53(f64vec4) FAdd 460 459
                               Store 55(dvec4v) 461
-             462:   39(float) Load 41(doublev)
-             463:   39(float) Load 41(doublev)
-             464:   39(float) ExtInst 1(GLSL.std.450) 48(Step) 462 463
-             465:   39(float) Load 41(doublev)
-             466:   39(float) FAdd 465 464
+             462:39(float64_t) Load 41(doublev)
+             463:39(float64_t) Load 41(doublev)
+             464:39(float64_t) ExtInst 1(GLSL.std.450) 48(Step) 462 463
+             465:39(float64_t) Load 41(doublev)
+             466:39(float64_t) FAdd 465 464
                               Store 41(doublev) 466
-             467:   43(fvec2) Load 45(dvec2v)
-             468:   43(fvec2) Load 45(dvec2v)
-             469:   43(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 467 468
-             470:   43(fvec2) Load 45(dvec2v)
-             471:   43(fvec2) FAdd 470 469
+             467: 43(f64vec2) Load 45(dvec2v)
+             468: 43(f64vec2) Load 45(dvec2v)
+             469: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 467 468
+             470: 43(f64vec2) Load 45(dvec2v)
+             471: 43(f64vec2) FAdd 470 469
                               Store 45(dvec2v) 471
-             472:   48(fvec3) Load 50(dvec3v)
-             473:   48(fvec3) Load 50(dvec3v)
-             474:   48(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 472 473
-             475:   48(fvec3) Load 50(dvec3v)
-             476:   48(fvec3) FAdd 475 474
+             472: 48(f64vec3) Load 50(dvec3v)
+             473: 48(f64vec3) Load 50(dvec3v)
+             474: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 472 473
+             475: 48(f64vec3) Load 50(dvec3v)
+             476: 48(f64vec3) FAdd 475 474
                               Store 50(dvec3v) 476
-             477:   53(fvec4) Load 55(dvec4v)
-             478:   53(fvec4) Load 55(dvec4v)
-             479:   53(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 477 478
-             480:   53(fvec4) Load 55(dvec4v)
-             481:   53(fvec4) FAdd 480 479
+             477: 53(f64vec4) Load 55(dvec4v)
+             478: 53(f64vec4) Load 55(dvec4v)
+             479: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 477 478
+             480: 53(f64vec4) Load 55(dvec4v)
+             481: 53(f64vec4) FAdd 480 479
                               Store 55(dvec4v) 481
-             482:   39(float) Load 41(doublev)
-             483:   43(fvec2) Load 45(dvec2v)
-             484:   43(fvec2) CompositeConstruct 482 482
-             485:   43(fvec2) ExtInst 1(GLSL.std.450) 48(Step) 484 483
-             486:   43(fvec2) Load 45(dvec2v)
-             487:   43(fvec2) FAdd 486 485
+             482:39(float64_t) Load 41(doublev)
+             483: 43(f64vec2) Load 45(dvec2v)
+             484: 43(f64vec2) CompositeConstruct 482 482
+             485: 43(f64vec2) ExtInst 1(GLSL.std.450) 48(Step) 484 483
+             486: 43(f64vec2) Load 45(dvec2v)
+             487: 43(f64vec2) FAdd 486 485
                               Store 45(dvec2v) 487
-             488:   39(float) Load 41(doublev)
-             489:   48(fvec3) Load 50(dvec3v)
-             490:   48(fvec3) CompositeConstruct 488 488 488
-             491:   48(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 490 489
-             492:   48(fvec3) Load 50(dvec3v)
-             493:   48(fvec3) FAdd 492 491
+             488:39(float64_t) Load 41(doublev)
+             489: 48(f64vec3) Load 50(dvec3v)
+             490: 48(f64vec3) CompositeConstruct 488 488 488
+             491: 48(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 490 489
+             492: 48(f64vec3) Load 50(dvec3v)
+             493: 48(f64vec3) FAdd 492 491
                               Store 50(dvec3v) 493
-             494:   39(float) Load 41(doublev)
-             495:   53(fvec4) Load 55(dvec4v)
-             496:   53(fvec4) CompositeConstruct 494 494 494 494
-             497:   53(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 496 495
-             498:   53(fvec4) Load 55(dvec4v)
-             499:   53(fvec4) FAdd 498 497
+             494:39(float64_t) Load 41(doublev)
+             495: 53(f64vec4) Load 55(dvec4v)
+             496: 53(f64vec4) CompositeConstruct 494 494 494 494
+             497: 53(f64vec4) ExtInst 1(GLSL.std.450) 48(Step) 496 495
+             498: 53(f64vec4) Load 55(dvec4v)
+             499: 53(f64vec4) FAdd 498 497
                               Store 55(dvec4v) 499
-             500:   39(float) Load 41(doublev)
-             501:   39(float) Load 41(doublev)
-             502:   39(float) Load 41(doublev)
-             503:   39(float) ExtInst 1(GLSL.std.450) 49(SmoothStep) 500 501 502
-             504:   39(float) Load 41(doublev)
-             505:   39(float) FAdd 504 503
+             500:39(float64_t) Load 41(doublev)
+             501:39(float64_t) Load 41(doublev)
+             502:39(float64_t) Load 41(doublev)
+             503:39(float64_t) ExtInst 1(GLSL.std.450) 49(SmoothStep) 500 501 502
+             504:39(float64_t) Load 41(doublev)
+             505:39(float64_t) FAdd 504 503
                               Store 41(doublev) 505
-             506:   43(fvec2) Load 45(dvec2v)
-             507:   43(fvec2) Load 45(dvec2v)
-             508:   43(fvec2) Load 45(dvec2v)
-             509:   43(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 506 507 508
-             510:   43(fvec2) Load 45(dvec2v)
-             511:   43(fvec2) FAdd 510 509
+             506: 43(f64vec2) Load 45(dvec2v)
+             507: 43(f64vec2) Load 45(dvec2v)
+             508: 43(f64vec2) Load 45(dvec2v)
+             509: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 506 507 508
+             510: 43(f64vec2) Load 45(dvec2v)
+             511: 43(f64vec2) FAdd 510 509
                               Store 45(dvec2v) 511
-             512:   48(fvec3) Load 50(dvec3v)
-             513:   48(fvec3) Load 50(dvec3v)
-             514:   48(fvec3) Load 50(dvec3v)
-             515:   48(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 512 513 514
-             516:   48(fvec3) Load 50(dvec3v)
-             517:   48(fvec3) FAdd 516 515
+             512: 48(f64vec3) Load 50(dvec3v)
+             513: 48(f64vec3) Load 50(dvec3v)
+             514: 48(f64vec3) Load 50(dvec3v)
+             515: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 512 513 514
+             516: 48(f64vec3) Load 50(dvec3v)
+             517: 48(f64vec3) FAdd 516 515
                               Store 50(dvec3v) 517
-             518:   53(fvec4) Load 55(dvec4v)
-             519:   53(fvec4) Load 55(dvec4v)
-             520:   53(fvec4) Load 55(dvec4v)
-             521:   53(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 518 519 520
-             522:   53(fvec4) Load 55(dvec4v)
-             523:   53(fvec4) FAdd 522 521
+             518: 53(f64vec4) Load 55(dvec4v)
+             519: 53(f64vec4) Load 55(dvec4v)
+             520: 53(f64vec4) Load 55(dvec4v)
+             521: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 518 519 520
+             522: 53(f64vec4) Load 55(dvec4v)
+             523: 53(f64vec4) FAdd 522 521
                               Store 55(dvec4v) 523
-             524:   39(float) Load 41(doublev)
-             525:   39(float) Load 41(doublev)
-             526:   43(fvec2) Load 45(dvec2v)
-             527:   43(fvec2) CompositeConstruct 524 524
-             528:   43(fvec2) CompositeConstruct 525 525
-             529:   43(fvec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 527 528 526
-             530:   43(fvec2) Load 45(dvec2v)
-             531:   43(fvec2) FAdd 530 529
+             524:39(float64_t) Load 41(doublev)
+             525:39(float64_t) Load 41(doublev)
+             526: 43(f64vec2) Load 45(dvec2v)
+             527: 43(f64vec2) CompositeConstruct 524 524
+             528: 43(f64vec2) CompositeConstruct 525 525
+             529: 43(f64vec2) ExtInst 1(GLSL.std.450) 49(SmoothStep) 527 528 526
+             530: 43(f64vec2) Load 45(dvec2v)
+             531: 43(f64vec2) FAdd 530 529
                               Store 45(dvec2v) 531
-             532:   39(float) Load 41(doublev)
-             533:   39(float) Load 41(doublev)
-             534:   48(fvec3) Load 50(dvec3v)
-             535:   48(fvec3) CompositeConstruct 532 532 532
-             536:   48(fvec3) CompositeConstruct 533 533 533
-             537:   48(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 535 536 534
-             538:   48(fvec3) Load 50(dvec3v)
-             539:   48(fvec3) FAdd 538 537
+             532:39(float64_t) Load 41(doublev)
+             533:39(float64_t) Load 41(doublev)
+             534: 48(f64vec3) Load 50(dvec3v)
+             535: 48(f64vec3) CompositeConstruct 532 532 532
+             536: 48(f64vec3) CompositeConstruct 533 533 533
+             537: 48(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 535 536 534
+             538: 48(f64vec3) Load 50(dvec3v)
+             539: 48(f64vec3) FAdd 538 537
                               Store 50(dvec3v) 539
-             540:   39(float) Load 41(doublev)
-             541:   39(float) Load 41(doublev)
-             542:   53(fvec4) Load 55(dvec4v)
-             543:   53(fvec4) CompositeConstruct 540 540 540 540
-             544:   53(fvec4) CompositeConstruct 541 541 541 541
-             545:   53(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 543 544 542
-             546:   53(fvec4) Load 55(dvec4v)
-             547:   53(fvec4) FAdd 546 545
+             540:39(float64_t) Load 41(doublev)
+             541:39(float64_t) Load 41(doublev)
+             542: 53(f64vec4) Load 55(dvec4v)
+             543: 53(f64vec4) CompositeConstruct 540 540 540 540
+             544: 53(f64vec4) CompositeConstruct 541 541 541 541
+             545: 53(f64vec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 543 544 542
+             546: 53(f64vec4) Load 55(dvec4v)
+             547: 53(f64vec4) FAdd 546 545
                               Store 55(dvec4v) 547
-             548:   39(float) Load 41(doublev)
+             548:39(float64_t) Load 41(doublev)
              549:   428(bool) IsNan 548
                               Store 430(boolv) 549
-             550:   43(fvec2) Load 45(dvec2v)
+             550: 43(f64vec2) Load 45(dvec2v)
              551:  437(bvec2) IsNan 550
                               Store 439(bvec2v) 551
-             552:   48(fvec3) Load 50(dvec3v)
+             552: 48(f64vec3) Load 50(dvec3v)
              553:  446(bvec3) IsNan 552
                               Store 448(bvec3v) 553
-             554:   53(fvec4) Load 55(dvec4v)
+             554: 53(f64vec4) Load 55(dvec4v)
              555:  455(bvec4) IsNan 554
                               Store 457(bvec4v) 555
              556:   428(bool) Load 430(boolv)
                               SelectionMerge 559 None
                               BranchConditional 556 558 562
              558:               Label
-             560:   39(float)   Load 41(doublev)
+             560:39(float64_t)   Load 41(doublev)
              561:   428(bool)   IsInf 560
                                 Store 557 561
                                 Branch 559
@@ -893,7 +894,7 @@
                               SelectionMerge 568 None
                               BranchConditional 565 567 571
              567:               Label
-             569:   43(fvec2)   Load 45(dvec2v)
+             569: 43(f64vec2)   Load 45(dvec2v)
              570:  437(bvec2)   IsInf 569
                                 Store 566 570
                                 Branch 568
@@ -907,7 +908,7 @@
                               SelectionMerge 577 None
                               BranchConditional 574 576 580
              576:               Label
-             578:   48(fvec3)   Load 50(dvec3v)
+             578: 48(f64vec3)   Load 50(dvec3v)
              579:  446(bvec3)   IsInf 578
                                 Store 575 579
                                 Branch 577
@@ -921,7 +922,7 @@
                               SelectionMerge 586 None
                               BranchConditional 583 585 589
              585:               Label
-             587:   53(fvec4)   Load 55(dvec4v)
+             587: 53(f64vec4)   Load 55(dvec4v)
              588:  455(bvec4)   IsInf 587
                                 Store 584 588
                                 Branch 586
@@ -931,461 +932,457 @@
              586:             Label
              591:  455(bvec4) Load 584
                               Store 457(bvec4v) 591
-             592:   39(float) Load 41(doublev)
-             593:   39(float) ExtInst 1(GLSL.std.450) 66(Length) 592
-             594:   39(float) Load 41(doublev)
-             595:   39(float) FAdd 594 593
+             592:39(float64_t) Load 41(doublev)
+             593:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 592
+             594:39(float64_t) Load 41(doublev)
+             595:39(float64_t) FAdd 594 593
                               Store 41(doublev) 595
-             596:   43(fvec2) Load 45(dvec2v)
-             597:   39(float) ExtInst 1(GLSL.std.450) 66(Length) 596
-             598:   39(float) Load 41(doublev)
-             599:   39(float) FAdd 598 597
+             596: 43(f64vec2) Load 45(dvec2v)
+             597:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 596
+             598:39(float64_t) Load 41(doublev)
+             599:39(float64_t) FAdd 598 597
                               Store 41(doublev) 599
-             600:   48(fvec3) Load 50(dvec3v)
-             601:   39(float) ExtInst 1(GLSL.std.450) 66(Length) 600
-             602:   39(float) Load 41(doublev)
-             603:   39(float) FAdd 602 601
+             600: 48(f64vec3) Load 50(dvec3v)
+             601:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 600
+             602:39(float64_t) Load 41(doublev)
+             603:39(float64_t) FAdd 602 601
                               Store 41(doublev) 603
-             604:   53(fvec4) Load 55(dvec4v)
-             605:   39(float) ExtInst 1(GLSL.std.450) 66(Length) 604
-             606:   39(float) Load 41(doublev)
-             607:   39(float) FAdd 606 605
+             604: 53(f64vec4) Load 55(dvec4v)
+             605:39(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 604
+             606:39(float64_t) Load 41(doublev)
+             607:39(float64_t) FAdd 606 605
                               Store 41(doublev) 607
-             608:   39(float) Load 41(doublev)
-             609:   39(float) Load 41(doublev)
-             610:   39(float) ExtInst 1(GLSL.std.450) 67(Distance) 608 609
-             611:   39(float) Load 41(doublev)
-             612:   39(float) FAdd 611 610
+             608:39(float64_t) Load 41(doublev)
+             609:39(float64_t) Load 41(doublev)
+             610:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 608 609
+             611:39(float64_t) Load 41(doublev)
+             612:39(float64_t) FAdd 611 610
                               Store 41(doublev) 612
-             613:   43(fvec2) Load 45(dvec2v)
-             614:   43(fvec2) Load 45(dvec2v)
-             615:   39(float) ExtInst 1(GLSL.std.450) 67(Distance) 613 614
-             616:   39(float) Load 41(doublev)
-             617:   39(float) FAdd 616 615
+             613: 43(f64vec2) Load 45(dvec2v)
+             614: 43(f64vec2) Load 45(dvec2v)
+             615:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 613 614
+             616:39(float64_t) Load 41(doublev)
+             617:39(float64_t) FAdd 616 615
                               Store 41(doublev) 617
-             618:   48(fvec3) Load 50(dvec3v)
-             619:   48(fvec3) Load 50(dvec3v)
-             620:   39(float) ExtInst 1(GLSL.std.450) 67(Distance) 618 619
-             621:   39(float) Load 41(doublev)
-             622:   39(float) FAdd 621 620
+             618: 48(f64vec3) Load 50(dvec3v)
+             619: 48(f64vec3) Load 50(dvec3v)
+             620:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 618 619
+             621:39(float64_t) Load 41(doublev)
+             622:39(float64_t) FAdd 621 620
                               Store 41(doublev) 622
-             623:   53(fvec4) Load 55(dvec4v)
-             624:   53(fvec4) Load 55(dvec4v)
-             625:   39(float) ExtInst 1(GLSL.std.450) 67(Distance) 623 624
-             626:   39(float) Load 41(doublev)
-             627:   39(float) FAdd 626 625
+             623: 53(f64vec4) Load 55(dvec4v)
+             624: 53(f64vec4) Load 55(dvec4v)
+             625:39(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 623 624
+             626:39(float64_t) Load 41(doublev)
+             627:39(float64_t) FAdd 626 625
                               Store 41(doublev) 627
-             628:   39(float) Load 41(doublev)
-             629:   39(float) Load 41(doublev)
-             630:   39(float) FMul 628 629
-             631:   39(float) Load 41(doublev)
-             632:   39(float) FAdd 631 630
+             628:39(float64_t) Load 41(doublev)
+             629:39(float64_t) Load 41(doublev)
+             630:39(float64_t) FMul 628 629
+             631:39(float64_t) Load 41(doublev)
+             632:39(float64_t) FAdd 631 630
                               Store 41(doublev) 632
-             633:   43(fvec2) Load 45(dvec2v)
-             634:   43(fvec2) Load 45(dvec2v)
-             635:   39(float) Dot 633 634
-             636:   39(float) Load 41(doublev)
-             637:   39(float) FAdd 636 635
+             633: 43(f64vec2) Load 45(dvec2v)
+             634: 43(f64vec2) Load 45(dvec2v)
+             635:39(float64_t) Dot 633 634
+             636:39(float64_t) Load 41(doublev)
+             637:39(float64_t) FAdd 636 635
                               Store 41(doublev) 637
-             638:   48(fvec3) Load 50(dvec3v)
-             639:   48(fvec3) Load 50(dvec3v)
-             640:   39(float) Dot 638 639
-             641:   39(float) Load 41(doublev)
-             642:   39(float) FAdd 641 640
+             638: 48(f64vec3) Load 50(dvec3v)
+             639: 48(f64vec3) Load 50(dvec3v)
+             640:39(float64_t) Dot 638 639
+             641:39(float64_t) Load 41(doublev)
+             642:39(float64_t) FAdd 641 640
                               Store 41(doublev) 642
-             643:   53(fvec4) Load 55(dvec4v)
-             644:   53(fvec4) Load 55(dvec4v)
-             645:   39(float) Dot 643 644
-             646:   39(float) Load 41(doublev)
-             647:   39(float) FAdd 646 645
+             643: 53(f64vec4) Load 55(dvec4v)
+             644: 53(f64vec4) Load 55(dvec4v)
+             645:39(float64_t) Dot 643 644
+             646:39(float64_t) Load 41(doublev)
+             647:39(float64_t) FAdd 646 645
                               Store 41(doublev) 647
-             648:   48(fvec3) Load 50(dvec3v)
-             649:   48(fvec3) Load 50(dvec3v)
-             650:   48(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 648 649
-             651:   48(fvec3) Load 50(dvec3v)
-             652:   48(fvec3) FAdd 651 650
+             648: 48(f64vec3) Load 50(dvec3v)
+             649: 48(f64vec3) Load 50(dvec3v)
+             650: 48(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 648 649
+             651: 48(f64vec3) Load 50(dvec3v)
+             652: 48(f64vec3) FAdd 651 650
                               Store 50(dvec3v) 652
-             653:   39(float) Load 41(doublev)
-             654:   39(float) ExtInst 1(GLSL.std.450) 69(Normalize) 653
-             655:   39(float) Load 41(doublev)
-             656:   39(float) FAdd 655 654
+             653:39(float64_t) Load 41(doublev)
+             654:39(float64_t) ExtInst 1(GLSL.std.450) 69(Normalize) 653
+             655:39(float64_t) Load 41(doublev)
+             656:39(float64_t) FAdd 655 654
                               Store 41(doublev) 656
-             657:   43(fvec2) Load 45(dvec2v)
-             658:   43(fvec2) ExtInst 1(GLSL.std.450) 69(Normalize) 657
-             659:   43(fvec2) Load 45(dvec2v)
-             660:   43(fvec2) FAdd 659 658
+             657: 43(f64vec2) Load 45(dvec2v)
+             658: 43(f64vec2) ExtInst 1(GLSL.std.450) 69(Normalize) 657
+             659: 43(f64vec2) Load 45(dvec2v)
+             660: 43(f64vec2) FAdd 659 658
                               Store 45(dvec2v) 660
-             661:   48(fvec3) Load 50(dvec3v)
-             662:   48(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 661
-             663:   48(fvec3) Load 50(dvec3v)
-             664:   48(fvec3) FAdd 663 662
+             661: 48(f64vec3) Load 50(dvec3v)
+             662: 48(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 661
+             663: 48(f64vec3) Load 50(dvec3v)
+             664: 48(f64vec3) FAdd 663 662
                               Store 50(dvec3v) 664
-             665:   53(fvec4) Load 55(dvec4v)
-             666:   53(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 665
-             667:   53(fvec4) Load 55(dvec4v)
-             668:   53(fvec4) FAdd 667 666
+             665: 53(f64vec4) Load 55(dvec4v)
+             666: 53(f64vec4) ExtInst 1(GLSL.std.450) 69(Normalize) 665
+             667: 53(f64vec4) Load 55(dvec4v)
+             668: 53(f64vec4) FAdd 667 666
                               Store 55(dvec4v) 668
-             669:   39(float) Load 41(doublev)
-             670:   39(float) Load 41(doublev)
-             671:   39(float) Load 41(doublev)
-             672:   39(float) ExtInst 1(GLSL.std.450) 70(FaceForward) 669 670 671
-             673:   39(float) Load 41(doublev)
-             674:   39(float) FAdd 673 672
+             669:39(float64_t) Load 41(doublev)
+             670:39(float64_t) Load 41(doublev)
+             671:39(float64_t) Load 41(doublev)
+             672:39(float64_t) ExtInst 1(GLSL.std.450) 70(FaceForward) 669 670 671
+             673:39(float64_t) Load 41(doublev)
+             674:39(float64_t) FAdd 673 672
                               Store 41(doublev) 674
-             675:   43(fvec2) Load 45(dvec2v)
-             676:   43(fvec2) Load 45(dvec2v)
-             677:   43(fvec2) Load 45(dvec2v)
-             678:   43(fvec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 675 676 677
-             679:   43(fvec2) Load 45(dvec2v)
-             680:   43(fvec2) FAdd 679 678
+             675: 43(f64vec2) Load 45(dvec2v)
+             676: 43(f64vec2) Load 45(dvec2v)
+             677: 43(f64vec2) Load 45(dvec2v)
+             678: 43(f64vec2) ExtInst 1(GLSL.std.450) 70(FaceForward) 675 676 677
+             679: 43(f64vec2) Load 45(dvec2v)
+             680: 43(f64vec2) FAdd 679 678
                               Store 45(dvec2v) 680
-             681:   48(fvec3) Load 50(dvec3v)
-             682:   48(fvec3) Load 50(dvec3v)
-             683:   48(fvec3) Load 50(dvec3v)
-             684:   48(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 681 682 683
-             685:   48(fvec3) Load 50(dvec3v)
-             686:   48(fvec3) FAdd 685 684
+             681: 48(f64vec3) Load 50(dvec3v)
+             682: 48(f64vec3) Load 50(dvec3v)
+             683: 48(f64vec3) Load 50(dvec3v)
+             684: 48(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 681 682 683
+             685: 48(f64vec3) Load 50(dvec3v)
+             686: 48(f64vec3) FAdd 685 684
                               Store 50(dvec3v) 686
-             687:   53(fvec4) Load 55(dvec4v)
-             688:   53(fvec4) Load 55(dvec4v)
-             689:   53(fvec4) Load 55(dvec4v)
-             690:   53(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 687 688 689
-             691:   53(fvec4) Load 55(dvec4v)
-             692:   53(fvec4) FAdd 691 690
+             687: 53(f64vec4) Load 55(dvec4v)
+             688: 53(f64vec4) Load 55(dvec4v)
+             689: 53(f64vec4) Load 55(dvec4v)
+             690: 53(f64vec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 687 688 689
+             691: 53(f64vec4) Load 55(dvec4v)
+             692: 53(f64vec4) FAdd 691 690
                               Store 55(dvec4v) 692
-             693:   39(float) Load 41(doublev)
-             694:   39(float) Load 41(doublev)
-             695:   39(float) ExtInst 1(GLSL.std.450) 71(Reflect) 693 694
-             696:   39(float) Load 41(doublev)
-             697:   39(float) FAdd 696 695
+             693:39(float64_t) Load 41(doublev)
+             694:39(float64_t) Load 41(doublev)
+             695:39(float64_t) ExtInst 1(GLSL.std.450) 71(Reflect) 693 694
+             696:39(float64_t) Load 41(doublev)
+             697:39(float64_t) FAdd 696 695
                               Store 41(doublev) 697
-             698:   43(fvec2) Load 45(dvec2v)
-             699:   43(fvec2) Load 45(dvec2v)
-             700:   43(fvec2) ExtInst 1(GLSL.std.450) 71(Reflect) 698 699
-             701:   43(fvec2) Load 45(dvec2v)
-             702:   43(fvec2) FAdd 701 700
+             698: 43(f64vec2) Load 45(dvec2v)
+             699: 43(f64vec2) Load 45(dvec2v)
+             700: 43(f64vec2) ExtInst 1(GLSL.std.450) 71(Reflect) 698 699
+             701: 43(f64vec2) Load 45(dvec2v)
+             702: 43(f64vec2) FAdd 701 700
                               Store 45(dvec2v) 702
-             703:   48(fvec3) Load 50(dvec3v)
-             704:   48(fvec3) Load 50(dvec3v)
-             705:   48(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 703 704
-             706:   48(fvec3) Load 50(dvec3v)
-             707:   48(fvec3) FAdd 706 705
+             703: 48(f64vec3) Load 50(dvec3v)
+             704: 48(f64vec3) Load 50(dvec3v)
+             705: 48(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 703 704
+             706: 48(f64vec3) Load 50(dvec3v)
+             707: 48(f64vec3) FAdd 706 705
                               Store 50(dvec3v) 707
-             708:   53(fvec4) Load 55(dvec4v)
-             709:   53(fvec4) Load 55(dvec4v)
-             710:   53(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 708 709
-             711:   53(fvec4) Load 55(dvec4v)
-             712:   53(fvec4) FAdd 711 710
+             708: 53(f64vec4) Load 55(dvec4v)
+             709: 53(f64vec4) Load 55(dvec4v)
+             710: 53(f64vec4) ExtInst 1(GLSL.std.450) 71(Reflect) 708 709
+             711: 53(f64vec4) Load 55(dvec4v)
+             712: 53(f64vec4) FAdd 711 710
                               Store 55(dvec4v) 712
-             713:   39(float) Load 41(doublev)
-             714:   39(float) Load 41(doublev)
-             715:   39(float) Load 41(doublev)
-             716:   39(float) ExtInst 1(GLSL.std.450) 72(Refract) 713 714 715
-             717:   39(float) Load 41(doublev)
-             718:   39(float) FAdd 717 716
+             713:39(float64_t) Load 41(doublev)
+             714:39(float64_t) Load 41(doublev)
+             716:39(float64_t) ExtInst 1(GLSL.std.450) 72(Refract) 713 714 715
+             717:39(float64_t) Load 41(doublev)
+             718:39(float64_t) FAdd 717 716
                               Store 41(doublev) 718
-             719:   43(fvec2) Load 45(dvec2v)
-             720:   43(fvec2) Load 45(dvec2v)
-             721:   39(float) Load 41(doublev)
-             722:   43(fvec2) ExtInst 1(GLSL.std.450) 72(Refract) 719 720 721
-             723:   43(fvec2) Load 45(dvec2v)
-             724:   43(fvec2) FAdd 723 722
-                              Store 45(dvec2v) 724
-             725:   48(fvec3) Load 50(dvec3v)
-             726:   48(fvec3) Load 50(dvec3v)
-             727:   39(float) Load 41(doublev)
-             728:   48(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 725 726 727
-             729:   48(fvec3) Load 50(dvec3v)
-             730:   48(fvec3) FAdd 729 728
-                              Store 50(dvec3v) 730
-             731:   53(fvec4) Load 55(dvec4v)
-             732:   53(fvec4) Load 55(dvec4v)
-             733:   39(float) Load 41(doublev)
-             734:   53(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 731 732 733
-             735:   53(fvec4) Load 55(dvec4v)
-             736:   53(fvec4) FAdd 735 734
-                              Store 55(dvec4v) 736
-             740:   43(fvec2) Load 45(dvec2v)
-             741:   43(fvec2) Load 45(dvec2v)
-             742:         737 OuterProduct 740 741
-                              Store 739(dmat2v) 742
-             746:   48(fvec3) Load 50(dvec3v)
-             747:   48(fvec3) Load 50(dvec3v)
-             748:         743 OuterProduct 746 747
-                              Store 745(dmat3v) 748
-             752:   53(fvec4) Load 55(dvec4v)
-             753:   53(fvec4) Load 55(dvec4v)
-             754:         749 OuterProduct 752 753
-                              Store 751(dmat4v) 754
-             758:   48(fvec3) Load 50(dvec3v)
-             759:   43(fvec2) Load 45(dvec2v)
-             760:         755 OuterProduct 758 759
-                              Store 757(dmat2x3v) 760
-             764:   43(fvec2) Load 45(dvec2v)
-             765:   48(fvec3) Load 50(dvec3v)
-             766:         761 OuterProduct 764 765
-                              Store 763(dmat3x2v) 766
-             770:   53(fvec4) Load 55(dvec4v)
-             771:   43(fvec2) Load 45(dvec2v)
-             772:         767 OuterProduct 770 771
-                              Store 769(dmat2x4v) 772
-             776:   43(fvec2) Load 45(dvec2v)
-             777:   53(fvec4) Load 55(dvec4v)
-             778:         773 OuterProduct 776 777
-                              Store 775(dmat4x2v) 778
-             782:   53(fvec4) Load 55(dvec4v)
-             783:   48(fvec3) Load 50(dvec3v)
-             784:         779 OuterProduct 782 783
-                              Store 781(dmat3x4v) 784
-             788:   48(fvec3) Load 50(dvec3v)
-             789:   53(fvec4) Load 55(dvec4v)
-             790:         785 OuterProduct 788 789
-                              Store 787(dmat4x3v) 790
-             791:         737 Load 739(dmat2v)
-             792:         737 Load 739(dmat2v)
-             793:   43(fvec2) CompositeExtract 791 0
-             794:   43(fvec2) CompositeExtract 792 0
-             795:   43(fvec2) FMul 793 794
-             796:   43(fvec2) CompositeExtract 791 1
-             797:   43(fvec2) CompositeExtract 792 1
-             798:   43(fvec2) FMul 796 797
-             799:         737 CompositeConstruct 795 798
-             800:         737 Load 739(dmat2v)
-             801:         737 MatrixTimesMatrix 800 799
-                              Store 739(dmat2v) 801
-             802:         743 Load 745(dmat3v)
-             803:         743 Load 745(dmat3v)
-             804:   48(fvec3) CompositeExtract 802 0
-             805:   48(fvec3) CompositeExtract 803 0
-             806:   48(fvec3) FMul 804 805
-             807:   48(fvec3) CompositeExtract 802 1
-             808:   48(fvec3) CompositeExtract 803 1
-             809:   48(fvec3) FMul 807 808
-             810:   48(fvec3) CompositeExtract 802 2
-             811:   48(fvec3) CompositeExtract 803 2
-             812:   48(fvec3) FMul 810 811
-             813:         743 CompositeConstruct 806 809 812
-             814:         743 Load 745(dmat3v)
-             815:         743 MatrixTimesMatrix 814 813
-                              Store 745(dmat3v) 815
-             816:         749 Load 751(dmat4v)
-             817:         749 Load 751(dmat4v)
-             818:   53(fvec4) CompositeExtract 816 0
-             819:   53(fvec4) CompositeExtract 817 0
-             820:   53(fvec4) FMul 818 819
-             821:   53(fvec4) CompositeExtract 816 1
-             822:   53(fvec4) CompositeExtract 817 1
-             823:   53(fvec4) FMul 821 822
-             824:   53(fvec4) CompositeExtract 816 2
-             825:   53(fvec4) CompositeExtract 817 2
-             826:   53(fvec4) FMul 824 825
-             827:   53(fvec4) CompositeExtract 816 3
-             828:   53(fvec4) CompositeExtract 817 3
-             829:   53(fvec4) FMul 827 828
-             830:         749 CompositeConstruct 820 823 826 829
-             831:         749 Load 751(dmat4v)
-             832:         749 MatrixTimesMatrix 831 830
-                              Store 751(dmat4v) 832
-             833:         755 Load 757(dmat2x3v)
-             834:         755 Load 757(dmat2x3v)
-             835:   48(fvec3) CompositeExtract 833 0
-             836:   48(fvec3) CompositeExtract 834 0
-             837:   48(fvec3) FMul 835 836
-             838:   48(fvec3) CompositeExtract 833 1
-             839:   48(fvec3) CompositeExtract 834 1
-             840:   48(fvec3) FMul 838 839
-             841:         755 CompositeConstruct 837 840
-                              Store 757(dmat2x3v) 841
-             842:         767 Load 769(dmat2x4v)
-             843:         767 Load 769(dmat2x4v)
-             844:   53(fvec4) CompositeExtract 842 0
-             845:   53(fvec4) CompositeExtract 843 0
-             846:   53(fvec4) FMul 844 845
-             847:   53(fvec4) CompositeExtract 842 1
-             848:   53(fvec4) CompositeExtract 843 1
-             849:   53(fvec4) FMul 847 848
-             850:         767 CompositeConstruct 846 849
-                              Store 769(dmat2x4v) 850
-             851:         761 Load 763(dmat3x2v)
-             852:         761 Load 763(dmat3x2v)
-             853:   43(fvec2) CompositeExtract 851 0
-             854:   43(fvec2) CompositeExtract 852 0
-             855:   43(fvec2) FMul 853 854
-             856:   43(fvec2) CompositeExtract 851 1
-             857:   43(fvec2) CompositeExtract 852 1
-             858:   43(fvec2) FMul 856 857
-             859:   43(fvec2) CompositeExtract 851 2
-             860:   43(fvec2) CompositeExtract 852 2
-             861:   43(fvec2) FMul 859 860
-             862:         761 CompositeConstruct 855 858 861
-                              Store 763(dmat3x2v) 862
-             863:         779 Load 781(dmat3x4v)
-             864:         779 Load 781(dmat3x4v)
-             865:   53(fvec4) CompositeExtract 863 0
-             866:   53(fvec4) CompositeExtract 864 0
-             867:   53(fvec4) FMul 865 866
-             868:   53(fvec4) CompositeExtract 863 1
-             869:   53(fvec4) CompositeExtract 864 1
-             870:   53(fvec4) FMul 868 869
-             871:   53(fvec4) CompositeExtract 863 2
-             872:   53(fvec4) CompositeExtract 864 2
-             873:   53(fvec4) FMul 871 872
-             874:         779 CompositeConstruct 867 870 873
-                              Store 781(dmat3x4v) 874
-             875:         773 Load 775(dmat4x2v)
-             876:         773 Load 775(dmat4x2v)
-             877:   43(fvec2) CompositeExtract 875 0
-             878:   43(fvec2) CompositeExtract 876 0
-             879:   43(fvec2) FMul 877 878
-             880:   43(fvec2) CompositeExtract 875 1
-             881:   43(fvec2) CompositeExtract 876 1
-             882:   43(fvec2) FMul 880 881
-             883:   43(fvec2) CompositeExtract 875 2
-             884:   43(fvec2) CompositeExtract 876 2
-             885:   43(fvec2) FMul 883 884
-             886:   43(fvec2) CompositeExtract 875 3
-             887:   43(fvec2) CompositeExtract 876 3
-             888:   43(fvec2) FMul 886 887
-             889:         773 CompositeConstruct 879 882 885 888
-                              Store 775(dmat4x2v) 889
-             890:         785 Load 787(dmat4x3v)
-             891:         785 Load 787(dmat4x3v)
-             892:   48(fvec3) CompositeExtract 890 0
-             893:   48(fvec3) CompositeExtract 891 0
-             894:   48(fvec3) FMul 892 893
-             895:   48(fvec3) CompositeExtract 890 1
-             896:   48(fvec3) CompositeExtract 891 1
-             897:   48(fvec3) FMul 895 896
-             898:   48(fvec3) CompositeExtract 890 2
-             899:   48(fvec3) CompositeExtract 891 2
-             900:   48(fvec3) FMul 898 899
-             901:   48(fvec3) CompositeExtract 890 3
-             902:   48(fvec3) CompositeExtract 891 3
-             903:   48(fvec3) FMul 901 902
-             904:         785 CompositeConstruct 894 897 900 903
-                              Store 787(dmat4x3v) 904
-             905:         737 Load 739(dmat2v)
-             906:         737 Transpose 905
-             907:         737 Load 739(dmat2v)
-             908:         737 MatrixTimesMatrix 907 906
-                              Store 739(dmat2v) 908
-             909:         743 Load 745(dmat3v)
-             910:         743 Transpose 909
-             911:         743 Load 745(dmat3v)
-             912:         743 MatrixTimesMatrix 911 910
-                              Store 745(dmat3v) 912
-             913:         749 Load 751(dmat4v)
-             914:         749 Transpose 913
-             915:         749 Load 751(dmat4v)
-             916:         749 MatrixTimesMatrix 915 914
-                              Store 751(dmat4v) 916
-             917:         761 Load 763(dmat3x2v)
-             918:         755 Transpose 917
-                              Store 757(dmat2x3v) 918
-             919:         755 Load 757(dmat2x3v)
-             920:         761 Transpose 919
-                              Store 763(dmat3x2v) 920
-             921:         773 Load 775(dmat4x2v)
-             922:         767 Transpose 921
-                              Store 769(dmat2x4v) 922
-             923:         767 Load 769(dmat2x4v)
-             924:         773 Transpose 923
-                              Store 775(dmat4x2v) 924
-             925:         785 Load 787(dmat4x3v)
-             926:         779 Transpose 925
-                              Store 781(dmat3x4v) 926
-             927:         779 Load 781(dmat3x4v)
-             928:         785 Transpose 927
-                              Store 787(dmat4x3v) 928
-             929:         737 Load 739(dmat2v)
-             930:   39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 929
-             931:   39(float) Load 41(doublev)
-             932:   39(float) FAdd 931 930
-                              Store 41(doublev) 932
-             933:         743 Load 745(dmat3v)
-             934:   39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 933
-             935:   39(float) Load 41(doublev)
-             936:   39(float) FAdd 935 934
-                              Store 41(doublev) 936
-             937:         749 Load 751(dmat4v)
-             938:   39(float) ExtInst 1(GLSL.std.450) 33(Determinant) 937
-             939:   39(float) Load 41(doublev)
-             940:   39(float) FAdd 939 938
-                              Store 41(doublev) 940
-             941:         737 Load 739(dmat2v)
-             942:         737 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 941
-             943:         737 Load 739(dmat2v)
-             944:         737 MatrixTimesMatrix 943 942
-                              Store 739(dmat2v) 944
-             945:         743 Load 745(dmat3v)
-             946:         743 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 945
-             947:         743 Load 745(dmat3v)
-             948:         743 MatrixTimesMatrix 947 946
-                              Store 745(dmat3v) 948
-             949:         749 Load 751(dmat4v)
-             950:         749 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 949
-             951:         749 Load 751(dmat4v)
-             952:         749 MatrixTimesMatrix 951 950
-                              Store 751(dmat4v) 952
-             953:   39(float) Load 41(doublev)
-             955:     40(ptr) AccessChain 45(dvec2v) 954
-             956:   39(float) Load 955
-             957:   39(float) FAdd 953 956
-             959:     40(ptr) AccessChain 50(dvec3v) 958
-             960:   39(float) Load 959
-             961:   39(float) FAdd 957 960
-             963:     40(ptr) AccessChain 55(dvec4v) 962
-             964:   39(float) Load 963
-             965:   39(float) FAdd 961 964
-             967:     40(ptr) AccessChain 739(dmat2v) 966 954
-             968:   39(float) Load 967
-             969:   39(float) FAdd 965 968
-             971:     40(ptr) AccessChain 745(dmat3v) 970 958
-             972:   39(float) Load 971
-             973:   39(float) FAdd 969 972
-             974:     40(ptr) AccessChain 751(dmat4v) 25 962
-             975:   39(float) Load 974
-             976:   39(float) FAdd 973 975
-             977:     40(ptr) AccessChain 757(dmat2x3v) 966 954
-             978:   39(float) Load 977
-             979:   39(float) FAdd 976 978
-             980:     40(ptr) AccessChain 763(dmat3x2v) 966 954
-             981:   39(float) Load 980
-             982:   39(float) FAdd 979 981
-             983:     40(ptr) AccessChain 781(dmat3x4v) 970 958
-             984:   39(float) Load 983
-             985:   39(float) FAdd 982 984
-             986:     40(ptr) AccessChain 787(dmat4x3v) 970 958
-             987:   39(float) Load 986
-             988:   39(float) FAdd 985 987
-             989:     40(ptr) AccessChain 769(dmat2x4v) 966 954
-             990:   39(float) Load 989
-             991:   39(float) FAdd 988 990
-             992:     40(ptr) AccessChain 775(dmat4x2v) 966 954
-             993:   39(float) Load 992
-             994:   39(float) FAdd 991 993
-             995:   428(bool) Load 430(boolv)
-             997:   10(float) Select 995 996 21
-             998:   39(float) FConvert 997
-             999:   39(float) FAdd 994 998
-            1000:    429(ptr) AccessChain 439(bvec2v) 33
-            1001:   428(bool) Load 1000
-            1002:   10(float) Select 1001 996 21
-            1003:   39(float) FConvert 1002
-            1004:   39(float) FAdd 999 1003
-            1005:    429(ptr) AccessChain 448(bvec3v) 33
-            1006:   428(bool) Load 1005
-            1007:   10(float) Select 1006 996 21
-            1008:   39(float) FConvert 1007
-            1009:   39(float) FAdd 1004 1008
-            1010:    429(ptr) AccessChain 457(bvec4v) 33
-            1011:   428(bool) Load 1010
-            1012:   10(float) Select 1011 996 21
-            1013:   39(float) FConvert 1012
-            1014:   39(float) FAdd 1009 1013
-            1015:   10(float) FConvert 1014
-            1016:   11(fvec4) Load 13(outp)
-            1017:   11(fvec4) VectorTimesScalar 1016 1015
-                              Store 13(outp) 1017
+             719: 43(f64vec2) Load 45(dvec2v)
+             720: 43(f64vec2) Load 45(dvec2v)
+             721: 43(f64vec2) ExtInst 1(GLSL.std.450) 72(Refract) 719 720 715
+             722: 43(f64vec2) Load 45(dvec2v)
+             723: 43(f64vec2) FAdd 722 721
+                              Store 45(dvec2v) 723
+             724: 48(f64vec3) Load 50(dvec3v)
+             725: 48(f64vec3) Load 50(dvec3v)
+             726: 48(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 724 725 715
+             727: 48(f64vec3) Load 50(dvec3v)
+             728: 48(f64vec3) FAdd 727 726
+                              Store 50(dvec3v) 728
+             729: 53(f64vec4) Load 55(dvec4v)
+             730: 53(f64vec4) Load 55(dvec4v)
+             731: 53(f64vec4) ExtInst 1(GLSL.std.450) 72(Refract) 729 730 715
+             732: 53(f64vec4) Load 55(dvec4v)
+             733: 53(f64vec4) FAdd 732 731
+                              Store 55(dvec4v) 733
+             737: 43(f64vec2) Load 45(dvec2v)
+             738: 43(f64vec2) Load 45(dvec2v)
+             739:         734 OuterProduct 737 738
+                              Store 736(dmat2v) 739
+             743: 48(f64vec3) Load 50(dvec3v)
+             744: 48(f64vec3) Load 50(dvec3v)
+             745:         740 OuterProduct 743 744
+                              Store 742(dmat3v) 745
+             749: 53(f64vec4) Load 55(dvec4v)
+             750: 53(f64vec4) Load 55(dvec4v)
+             751:         746 OuterProduct 749 750
+                              Store 748(dmat4v) 751
+             755: 48(f64vec3) Load 50(dvec3v)
+             756: 43(f64vec2) Load 45(dvec2v)
+             757:         752 OuterProduct 755 756
+                              Store 754(dmat2x3v) 757
+             761: 43(f64vec2) Load 45(dvec2v)
+             762: 48(f64vec3) Load 50(dvec3v)
+             763:         758 OuterProduct 761 762
+                              Store 760(dmat3x2v) 763
+             767: 53(f64vec4) Load 55(dvec4v)
+             768: 43(f64vec2) Load 45(dvec2v)
+             769:         764 OuterProduct 767 768
+                              Store 766(dmat2x4v) 769
+             773: 43(f64vec2) Load 45(dvec2v)
+             774: 53(f64vec4) Load 55(dvec4v)
+             775:         770 OuterProduct 773 774
+                              Store 772(dmat4x2v) 775
+             779: 53(f64vec4) Load 55(dvec4v)
+             780: 48(f64vec3) Load 50(dvec3v)
+             781:         776 OuterProduct 779 780
+                              Store 778(dmat3x4v) 781
+             785: 48(f64vec3) Load 50(dvec3v)
+             786: 53(f64vec4) Load 55(dvec4v)
+             787:         782 OuterProduct 785 786
+                              Store 784(dmat4x3v) 787
+             788:         734 Load 736(dmat2v)
+             789:         734 Load 736(dmat2v)
+             790: 43(f64vec2) CompositeExtract 788 0
+             791: 43(f64vec2) CompositeExtract 789 0
+             792: 43(f64vec2) FMul 790 791
+             793: 43(f64vec2) CompositeExtract 788 1
+             794: 43(f64vec2) CompositeExtract 789 1
+             795: 43(f64vec2) FMul 793 794
+             796:         734 CompositeConstruct 792 795
+             797:         734 Load 736(dmat2v)
+             798:         734 MatrixTimesMatrix 797 796
+                              Store 736(dmat2v) 798
+             799:         740 Load 742(dmat3v)
+             800:         740 Load 742(dmat3v)
+             801: 48(f64vec3) CompositeExtract 799 0
+             802: 48(f64vec3) CompositeExtract 800 0
+             803: 48(f64vec3) FMul 801 802
+             804: 48(f64vec3) CompositeExtract 799 1
+             805: 48(f64vec3) CompositeExtract 800 1
+             806: 48(f64vec3) FMul 804 805
+             807: 48(f64vec3) CompositeExtract 799 2
+             808: 48(f64vec3) CompositeExtract 800 2
+             809: 48(f64vec3) FMul 807 808
+             810:         740 CompositeConstruct 803 806 809
+             811:         740 Load 742(dmat3v)
+             812:         740 MatrixTimesMatrix 811 810
+                              Store 742(dmat3v) 812
+             813:         746 Load 748(dmat4v)
+             814:         746 Load 748(dmat4v)
+             815: 53(f64vec4) CompositeExtract 813 0
+             816: 53(f64vec4) CompositeExtract 814 0
+             817: 53(f64vec4) FMul 815 816
+             818: 53(f64vec4) CompositeExtract 813 1
+             819: 53(f64vec4) CompositeExtract 814 1
+             820: 53(f64vec4) FMul 818 819
+             821: 53(f64vec4) CompositeExtract 813 2
+             822: 53(f64vec4) CompositeExtract 814 2
+             823: 53(f64vec4) FMul 821 822
+             824: 53(f64vec4) CompositeExtract 813 3
+             825: 53(f64vec4) CompositeExtract 814 3
+             826: 53(f64vec4) FMul 824 825
+             827:         746 CompositeConstruct 817 820 823 826
+             828:         746 Load 748(dmat4v)
+             829:         746 MatrixTimesMatrix 828 827
+                              Store 748(dmat4v) 829
+             830:         752 Load 754(dmat2x3v)
+             831:         752 Load 754(dmat2x3v)
+             832: 48(f64vec3) CompositeExtract 830 0
+             833: 48(f64vec3) CompositeExtract 831 0
+             834: 48(f64vec3) FMul 832 833
+             835: 48(f64vec3) CompositeExtract 830 1
+             836: 48(f64vec3) CompositeExtract 831 1
+             837: 48(f64vec3) FMul 835 836
+             838:         752 CompositeConstruct 834 837
+                              Store 754(dmat2x3v) 838
+             839:         764 Load 766(dmat2x4v)
+             840:         764 Load 766(dmat2x4v)
+             841: 53(f64vec4) CompositeExtract 839 0
+             842: 53(f64vec4) CompositeExtract 840 0
+             843: 53(f64vec4) FMul 841 842
+             844: 53(f64vec4) CompositeExtract 839 1
+             845: 53(f64vec4) CompositeExtract 840 1
+             846: 53(f64vec4) FMul 844 845
+             847:         764 CompositeConstruct 843 846
+                              Store 766(dmat2x4v) 847
+             848:         758 Load 760(dmat3x2v)
+             849:         758 Load 760(dmat3x2v)
+             850: 43(f64vec2) CompositeExtract 848 0
+             851: 43(f64vec2) CompositeExtract 849 0
+             852: 43(f64vec2) FMul 850 851
+             853: 43(f64vec2) CompositeExtract 848 1
+             854: 43(f64vec2) CompositeExtract 849 1
+             855: 43(f64vec2) FMul 853 854
+             856: 43(f64vec2) CompositeExtract 848 2
+             857: 43(f64vec2) CompositeExtract 849 2
+             858: 43(f64vec2) FMul 856 857
+             859:         758 CompositeConstruct 852 855 858
+                              Store 760(dmat3x2v) 859
+             860:         776 Load 778(dmat3x4v)
+             861:         776 Load 778(dmat3x4v)
+             862: 53(f64vec4) CompositeExtract 860 0
+             863: 53(f64vec4) CompositeExtract 861 0
+             864: 53(f64vec4) FMul 862 863
+             865: 53(f64vec4) CompositeExtract 860 1
+             866: 53(f64vec4) CompositeExtract 861 1
+             867: 53(f64vec4) FMul 865 866
+             868: 53(f64vec4) CompositeExtract 860 2
+             869: 53(f64vec4) CompositeExtract 861 2
+             870: 53(f64vec4) FMul 868 869
+             871:         776 CompositeConstruct 864 867 870
+                              Store 778(dmat3x4v) 871
+             872:         770 Load 772(dmat4x2v)
+             873:         770 Load 772(dmat4x2v)
+             874: 43(f64vec2) CompositeExtract 872 0
+             875: 43(f64vec2) CompositeExtract 873 0
+             876: 43(f64vec2) FMul 874 875
+             877: 43(f64vec2) CompositeExtract 872 1
+             878: 43(f64vec2) CompositeExtract 873 1
+             879: 43(f64vec2) FMul 877 878
+             880: 43(f64vec2) CompositeExtract 872 2
+             881: 43(f64vec2) CompositeExtract 873 2
+             882: 43(f64vec2) FMul 880 881
+             883: 43(f64vec2) CompositeExtract 872 3
+             884: 43(f64vec2) CompositeExtract 873 3
+             885: 43(f64vec2) FMul 883 884
+             886:         770 CompositeConstruct 876 879 882 885
+                              Store 772(dmat4x2v) 886
+             887:         782 Load 784(dmat4x3v)
+             888:         782 Load 784(dmat4x3v)
+             889: 48(f64vec3) CompositeExtract 887 0
+             890: 48(f64vec3) CompositeExtract 888 0
+             891: 48(f64vec3) FMul 889 890
+             892: 48(f64vec3) CompositeExtract 887 1
+             893: 48(f64vec3) CompositeExtract 888 1
+             894: 48(f64vec3) FMul 892 893
+             895: 48(f64vec3) CompositeExtract 887 2
+             896: 48(f64vec3) CompositeExtract 888 2
+             897: 48(f64vec3) FMul 895 896
+             898: 48(f64vec3) CompositeExtract 887 3
+             899: 48(f64vec3) CompositeExtract 888 3
+             900: 48(f64vec3) FMul 898 899
+             901:         782 CompositeConstruct 891 894 897 900
+                              Store 784(dmat4x3v) 901
+             902:         734 Load 736(dmat2v)
+             903:         734 Transpose 902
+             904:         734 Load 736(dmat2v)
+             905:         734 MatrixTimesMatrix 904 903
+                              Store 736(dmat2v) 905
+             906:         740 Load 742(dmat3v)
+             907:         740 Transpose 906
+             908:         740 Load 742(dmat3v)
+             909:         740 MatrixTimesMatrix 908 907
+                              Store 742(dmat3v) 909
+             910:         746 Load 748(dmat4v)
+             911:         746 Transpose 910
+             912:         746 Load 748(dmat4v)
+             913:         746 MatrixTimesMatrix 912 911
+                              Store 748(dmat4v) 913
+             914:         758 Load 760(dmat3x2v)
+             915:         752 Transpose 914
+                              Store 754(dmat2x3v) 915
+             916:         752 Load 754(dmat2x3v)
+             917:         758 Transpose 916
+                              Store 760(dmat3x2v) 917
+             918:         770 Load 772(dmat4x2v)
+             919:         764 Transpose 918
+                              Store 766(dmat2x4v) 919
+             920:         764 Load 766(dmat2x4v)
+             921:         770 Transpose 920
+                              Store 772(dmat4x2v) 921
+             922:         782 Load 784(dmat4x3v)
+             923:         776 Transpose 922
+                              Store 778(dmat3x4v) 923
+             924:         776 Load 778(dmat3x4v)
+             925:         782 Transpose 924
+                              Store 784(dmat4x3v) 925
+             926:         734 Load 736(dmat2v)
+             927:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 926
+             928:39(float64_t) Load 41(doublev)
+             929:39(float64_t) FAdd 928 927
+                              Store 41(doublev) 929
+             930:         740 Load 742(dmat3v)
+             931:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 930
+             932:39(float64_t) Load 41(doublev)
+             933:39(float64_t) FAdd 932 931
+                              Store 41(doublev) 933
+             934:         746 Load 748(dmat4v)
+             935:39(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 934
+             936:39(float64_t) Load 41(doublev)
+             937:39(float64_t) FAdd 936 935
+                              Store 41(doublev) 937
+             938:         734 Load 736(dmat2v)
+             939:         734 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 938
+             940:         734 Load 736(dmat2v)
+             941:         734 MatrixTimesMatrix 940 939
+                              Store 736(dmat2v) 941
+             942:         740 Load 742(dmat3v)
+             943:         740 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 942
+             944:         740 Load 742(dmat3v)
+             945:         740 MatrixTimesMatrix 944 943
+                              Store 742(dmat3v) 945
+             946:         746 Load 748(dmat4v)
+             947:         746 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 946
+             948:         746 Load 748(dmat4v)
+             949:         746 MatrixTimesMatrix 948 947
+                              Store 748(dmat4v) 949
+             950:39(float64_t) Load 41(doublev)
+             952:     40(ptr) AccessChain 45(dvec2v) 951
+             953:39(float64_t) Load 952
+             954:39(float64_t) FAdd 950 953
+             956:     40(ptr) AccessChain 50(dvec3v) 955
+             957:39(float64_t) Load 956
+             958:39(float64_t) FAdd 954 957
+             960:     40(ptr) AccessChain 55(dvec4v) 959
+             961:39(float64_t) Load 960
+             962:39(float64_t) FAdd 958 961
+             964:     40(ptr) AccessChain 736(dmat2v) 963 951
+             965:39(float64_t) Load 964
+             966:39(float64_t) FAdd 962 965
+             968:     40(ptr) AccessChain 742(dmat3v) 967 955
+             969:39(float64_t) Load 968
+             970:39(float64_t) FAdd 966 969
+             971:     40(ptr) AccessChain 748(dmat4v) 25 959
+             972:39(float64_t) Load 971
+             973:39(float64_t) FAdd 970 972
+             974:     40(ptr) AccessChain 754(dmat2x3v) 963 951
+             975:39(float64_t) Load 974
+             976:39(float64_t) FAdd 973 975
+             977:     40(ptr) AccessChain 760(dmat3x2v) 963 951
+             978:39(float64_t) Load 977
+             979:39(float64_t) FAdd 976 978
+             980:     40(ptr) AccessChain 778(dmat3x4v) 967 955
+             981:39(float64_t) Load 980
+             982:39(float64_t) FAdd 979 981
+             983:     40(ptr) AccessChain 784(dmat4x3v) 967 955
+             984:39(float64_t) Load 983
+             985:39(float64_t) FAdd 982 984
+             986:     40(ptr) AccessChain 766(dmat2x4v) 963 951
+             987:39(float64_t) Load 986
+             988:39(float64_t) FAdd 985 987
+             989:     40(ptr) AccessChain 772(dmat4x2v) 963 951
+             990:39(float64_t) Load 989
+             991:39(float64_t) FAdd 988 990
+             992:   428(bool) Load 430(boolv)
+             994:   10(float) Select 992 993 21
+             995:39(float64_t) FConvert 994
+             996:39(float64_t) FAdd 991 995
+             997:    429(ptr) AccessChain 439(bvec2v) 33
+             998:   428(bool) Load 997
+             999:   10(float) Select 998 993 21
+            1000:39(float64_t) FConvert 999
+            1001:39(float64_t) FAdd 996 1000
+            1002:    429(ptr) AccessChain 448(bvec3v) 33
+            1003:   428(bool) Load 1002
+            1004:   10(float) Select 1003 993 21
+            1005:39(float64_t) FConvert 1004
+            1006:39(float64_t) FAdd 1001 1005
+            1007:    429(ptr) AccessChain 457(bvec4v) 33
+            1008:   428(bool) Load 1007
+            1009:   10(float) Select 1008 993 21
+            1010:39(float64_t) FConvert 1009
+            1011:39(float64_t) FAdd 1006 1010
+            1012:   10(float) FConvert 1011
+            1013:   11(fvec4) Load 13(outp)
+            1014:   11(fvec4) VectorTimesScalar 1013 1012
+                              Store 13(outp) 1014
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out
index 88a313b..aaa9a49 100644
--- a/Test/baseResults/spv.AofA.frag.out
+++ b/Test/baseResults/spv.AofA.frag.out
@@ -1,4 +1,6 @@
 spv.AofA.frag
+WARNING: 0:6: '[][]' : Generating SPIR-V array-of-arrays, but Vulkan only supports single array level for this resource 
+
 // Module Version 10000
 // Generated by (magic number): 80006
 // Id's are bound by 104
diff --git a/Test/baseResults/spv.atomicInt64.comp.out b/Test/baseResults/spv.atomicInt64.comp.out
index 720e316..0e1f89f 100644
--- a/Test/baseResults/spv.atomicInt64.comp.out
+++ b/Test/baseResults/spv.atomicInt64.comp.out
@@ -33,29 +33,29 @@
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 64 1
-               7:             TypePointer Function 6(int)
-               9:      6(int) Constant 0 0
+               7:             TypePointer Function 6(int64_t)
+               9:  6(int64_t) Constant 0 0
               10:             TypeInt 64 0
-              11:             TypePointer Function 10(int)
-              13:     10(int) Constant 0 0
-      14(Buffer):             TypeStruct 6(int) 10(int)
+              11:             TypePointer Function 10(int64_t)
+              13: 10(int64_t) Constant 0 0
+      14(Buffer):             TypeStruct 6(int64_t) 10(int64_t)
               15:             TypePointer Uniform 14(Buffer)
          16(buf):     15(ptr) Variable Uniform
               17:             TypeInt 32 1
               18:     17(int) Constant 0
-              19:             TypePointer Uniform 6(int)
-              21:      6(int) Constant 4294967272 4294967295
+              19:             TypePointer Uniform 6(int64_t)
+              21:  6(int64_t) Constant 4294967272 4294967295
               22:             TypeInt 32 0
               23:     22(int) Constant 1
               24:     22(int) Constant 0
               28:     17(int) Constant 1
-              29:             TypePointer Uniform 10(int)
-              31:     10(int) Constant 15 240
-      84(Struct):             TypeStruct 6(int) 10(int)
+              29:             TypePointer Uniform 10(int64_t)
+              31: 10(int64_t) Constant 15 240
+      84(Struct):             TypeStruct 6(int64_t) 10(int64_t)
               85:             TypePointer Workgroup 84(Struct)
            86(s):     85(ptr) Variable Workgroup
-              87:             TypePointer Workgroup 6(int)
-              92:             TypePointer Workgroup 10(int)
+              87:             TypePointer Workgroup 6(int64_t)
+              92:             TypePointer Workgroup 10(int64_t)
              146:             TypeVector 22(int) 3
              147:     22(int) Constant 16
              148:  146(ivec3) ConstantComposite 147 147 23
@@ -66,149 +66,149 @@
                               Store 8(i64) 9
                               Store 12(u64) 13
               20:     19(ptr) AccessChain 16(buf) 18
-              25:      6(int) AtomicSMin 20 23 24 21
-              26:      6(int) Load 8(i64)
-              27:      6(int) IAdd 26 25
+              25:  6(int64_t) AtomicSMin 20 23 24 21
+              26:  6(int64_t) Load 8(i64)
+              27:  6(int64_t) IAdd 26 25
                               Store 8(i64) 27
               30:     29(ptr) AccessChain 16(buf) 28
-              32:     10(int) AtomicUMin 30 23 24 31
-              33:     10(int) Load 12(u64)
-              34:     10(int) IAdd 33 32
+              32: 10(int64_t) AtomicUMin 30 23 24 31
+              33: 10(int64_t) Load 12(u64)
+              34: 10(int64_t) IAdd 33 32
                               Store 12(u64) 34
               35:     19(ptr) AccessChain 16(buf) 18
-              36:      6(int) AtomicSMax 35 23 24 21
-              37:      6(int) Load 8(i64)
-              38:      6(int) IAdd 37 36
+              36:  6(int64_t) AtomicSMax 35 23 24 21
+              37:  6(int64_t) Load 8(i64)
+              38:  6(int64_t) IAdd 37 36
                               Store 8(i64) 38
               39:     29(ptr) AccessChain 16(buf) 28
-              40:     10(int) AtomicUMax 39 23 24 31
-              41:     10(int) Load 12(u64)
-              42:     10(int) IAdd 41 40
+              40: 10(int64_t) AtomicUMax 39 23 24 31
+              41: 10(int64_t) Load 12(u64)
+              42: 10(int64_t) IAdd 41 40
                               Store 12(u64) 42
               43:     19(ptr) AccessChain 16(buf) 18
-              44:      6(int) AtomicAnd 43 23 24 21
-              45:      6(int) Load 8(i64)
-              46:      6(int) IAdd 45 44
+              44:  6(int64_t) AtomicAnd 43 23 24 21
+              45:  6(int64_t) Load 8(i64)
+              46:  6(int64_t) IAdd 45 44
                               Store 8(i64) 46
               47:     29(ptr) AccessChain 16(buf) 28
-              48:     10(int) AtomicAnd 47 23 24 31
-              49:     10(int) Load 12(u64)
-              50:     10(int) IAdd 49 48
+              48: 10(int64_t) AtomicAnd 47 23 24 31
+              49: 10(int64_t) Load 12(u64)
+              50: 10(int64_t) IAdd 49 48
                               Store 12(u64) 50
               51:     19(ptr) AccessChain 16(buf) 18
-              52:      6(int) AtomicOr 51 23 24 21
-              53:      6(int) Load 8(i64)
-              54:      6(int) IAdd 53 52
+              52:  6(int64_t) AtomicOr 51 23 24 21
+              53:  6(int64_t) Load 8(i64)
+              54:  6(int64_t) IAdd 53 52
                               Store 8(i64) 54
               55:     29(ptr) AccessChain 16(buf) 28
-              56:     10(int) AtomicOr 55 23 24 31
-              57:     10(int) Load 12(u64)
-              58:     10(int) IAdd 57 56
+              56: 10(int64_t) AtomicOr 55 23 24 31
+              57: 10(int64_t) Load 12(u64)
+              58: 10(int64_t) IAdd 57 56
                               Store 12(u64) 58
               59:     19(ptr) AccessChain 16(buf) 18
-              60:      6(int) AtomicXor 59 23 24 21
-              61:      6(int) Load 8(i64)
-              62:      6(int) IAdd 61 60
+              60:  6(int64_t) AtomicXor 59 23 24 21
+              61:  6(int64_t) Load 8(i64)
+              62:  6(int64_t) IAdd 61 60
                               Store 8(i64) 62
               63:     29(ptr) AccessChain 16(buf) 28
-              64:     10(int) AtomicXor 63 23 24 31
-              65:     10(int) Load 12(u64)
-              66:     10(int) IAdd 65 64
+              64: 10(int64_t) AtomicXor 63 23 24 31
+              65: 10(int64_t) Load 12(u64)
+              66: 10(int64_t) IAdd 65 64
                               Store 12(u64) 66
               67:     19(ptr) AccessChain 16(buf) 18
-              68:      6(int) AtomicIAdd 67 23 24 21
-              69:      6(int) Load 8(i64)
-              70:      6(int) IAdd 69 68
+              68:  6(int64_t) AtomicIAdd 67 23 24 21
+              69:  6(int64_t) Load 8(i64)
+              70:  6(int64_t) IAdd 69 68
                               Store 8(i64) 70
               71:     19(ptr) AccessChain 16(buf) 18
-              72:      6(int) AtomicExchange 71 23 24 21
-              73:      6(int) Load 8(i64)
-              74:      6(int) IAdd 73 72
+              72:  6(int64_t) AtomicExchange 71 23 24 21
+              73:  6(int64_t) Load 8(i64)
+              74:  6(int64_t) IAdd 73 72
                               Store 8(i64) 74
               75:     19(ptr) AccessChain 16(buf) 18
-              76:      6(int) Load 8(i64)
-              77:      6(int) AtomicCompareExchange 75 23 24 24 76 21
-              78:      6(int) Load 8(i64)
-              79:      6(int) IAdd 78 77
+              76:  6(int64_t) Load 8(i64)
+              77:  6(int64_t) AtomicCompareExchange 75 23 24 24 76 21
+              78:  6(int64_t) Load 8(i64)
+              79:  6(int64_t) IAdd 78 77
                               Store 8(i64) 79
-              80:      6(int) Load 8(i64)
+              80:  6(int64_t) Load 8(i64)
               81:     19(ptr) AccessChain 16(buf) 18
                               Store 81 80
-              82:     10(int) Load 12(u64)
+              82: 10(int64_t) Load 12(u64)
               83:     29(ptr) AccessChain 16(buf) 28
                               Store 83 82
                               Store 8(i64) 9
                               Store 12(u64) 13
               88:     87(ptr) AccessChain 86(s) 18
-              89:      6(int) AtomicSMin 88 23 24 21
-              90:      6(int) Load 8(i64)
-              91:      6(int) IAdd 90 89
+              89:  6(int64_t) AtomicSMin 88 23 24 21
+              90:  6(int64_t) Load 8(i64)
+              91:  6(int64_t) IAdd 90 89
                               Store 8(i64) 91
               93:     92(ptr) AccessChain 86(s) 28
-              94:     10(int) AtomicUMin 93 23 24 31
-              95:     10(int) Load 12(u64)
-              96:     10(int) IAdd 95 94
+              94: 10(int64_t) AtomicUMin 93 23 24 31
+              95: 10(int64_t) Load 12(u64)
+              96: 10(int64_t) IAdd 95 94
                               Store 12(u64) 96
               97:     87(ptr) AccessChain 86(s) 18
-              98:      6(int) AtomicSMax 97 23 24 21
-              99:      6(int) Load 8(i64)
-             100:      6(int) IAdd 99 98
+              98:  6(int64_t) AtomicSMax 97 23 24 21
+              99:  6(int64_t) Load 8(i64)
+             100:  6(int64_t) IAdd 99 98
                               Store 8(i64) 100
              101:     92(ptr) AccessChain 86(s) 28
-             102:     10(int) AtomicUMax 101 23 24 31
-             103:     10(int) Load 12(u64)
-             104:     10(int) IAdd 103 102
+             102: 10(int64_t) AtomicUMax 101 23 24 31
+             103: 10(int64_t) Load 12(u64)
+             104: 10(int64_t) IAdd 103 102
                               Store 12(u64) 104
              105:     87(ptr) AccessChain 86(s) 18
-             106:      6(int) AtomicAnd 105 23 24 21
-             107:      6(int) Load 8(i64)
-             108:      6(int) IAdd 107 106
+             106:  6(int64_t) AtomicAnd 105 23 24 21
+             107:  6(int64_t) Load 8(i64)
+             108:  6(int64_t) IAdd 107 106
                               Store 8(i64) 108
              109:     92(ptr) AccessChain 86(s) 28
-             110:     10(int) AtomicAnd 109 23 24 31
-             111:     10(int) Load 12(u64)
-             112:     10(int) IAdd 111 110
+             110: 10(int64_t) AtomicAnd 109 23 24 31
+             111: 10(int64_t) Load 12(u64)
+             112: 10(int64_t) IAdd 111 110
                               Store 12(u64) 112
              113:     87(ptr) AccessChain 86(s) 18
-             114:      6(int) AtomicOr 113 23 24 21
-             115:      6(int) Load 8(i64)
-             116:      6(int) IAdd 115 114
+             114:  6(int64_t) AtomicOr 113 23 24 21
+             115:  6(int64_t) Load 8(i64)
+             116:  6(int64_t) IAdd 115 114
                               Store 8(i64) 116
              117:     92(ptr) AccessChain 86(s) 28
-             118:     10(int) AtomicOr 117 23 24 31
-             119:     10(int) Load 12(u64)
-             120:     10(int) IAdd 119 118
+             118: 10(int64_t) AtomicOr 117 23 24 31
+             119: 10(int64_t) Load 12(u64)
+             120: 10(int64_t) IAdd 119 118
                               Store 12(u64) 120
              121:     87(ptr) AccessChain 86(s) 18
-             122:      6(int) AtomicXor 121 23 24 21
-             123:      6(int) Load 8(i64)
-             124:      6(int) IAdd 123 122
+             122:  6(int64_t) AtomicXor 121 23 24 21
+             123:  6(int64_t) Load 8(i64)
+             124:  6(int64_t) IAdd 123 122
                               Store 8(i64) 124
              125:     92(ptr) AccessChain 86(s) 28
-             126:     10(int) AtomicXor 125 23 24 31
-             127:     10(int) Load 12(u64)
-             128:     10(int) IAdd 127 126
+             126: 10(int64_t) AtomicXor 125 23 24 31
+             127: 10(int64_t) Load 12(u64)
+             128: 10(int64_t) IAdd 127 126
                               Store 12(u64) 128
              129:     87(ptr) AccessChain 86(s) 18
-             130:      6(int) AtomicIAdd 129 23 24 21
-             131:      6(int) Load 8(i64)
-             132:      6(int) IAdd 131 130
+             130:  6(int64_t) AtomicIAdd 129 23 24 21
+             131:  6(int64_t) Load 8(i64)
+             132:  6(int64_t) IAdd 131 130
                               Store 8(i64) 132
              133:     87(ptr) AccessChain 86(s) 18
-             134:      6(int) AtomicExchange 133 23 24 21
-             135:      6(int) Load 8(i64)
-             136:      6(int) IAdd 135 134
+             134:  6(int64_t) AtomicExchange 133 23 24 21
+             135:  6(int64_t) Load 8(i64)
+             136:  6(int64_t) IAdd 135 134
                               Store 8(i64) 136
              137:     87(ptr) AccessChain 86(s) 18
-             138:      6(int) Load 8(i64)
-             139:      6(int) AtomicCompareExchange 137 23 24 24 138 21
-             140:      6(int) Load 8(i64)
-             141:      6(int) IAdd 140 139
+             138:  6(int64_t) Load 8(i64)
+             139:  6(int64_t) AtomicCompareExchange 137 23 24 24 138 21
+             140:  6(int64_t) Load 8(i64)
+             141:  6(int64_t) IAdd 140 139
                               Store 8(i64) 141
-             142:      6(int) Load 8(i64)
+             142:  6(int64_t) Load 8(i64)
              143:     87(ptr) AccessChain 86(s) 18
                               Store 143 142
-             144:     10(int) Load 12(u64)
+             144: 10(int64_t) Load 12(u64)
              145:     92(ptr) AccessChain 86(s) 28
                               Store 145 144
                               Return
diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out
index 9bd1491..f6de5e2 100644
--- a/Test/baseResults/spv.debugInfo.1.1.frag.out
+++ b/Test/baseResults/spv.debugInfo.1.1.frag.out
@@ -1,7 +1,7 @@
 spv.debugInfo.frag
 // Module Version 10300
 // Generated by (magic number): 80006
-// Id's are bound by 126
+// Id's are bound by 124
 
                               Capability Shader
                2:             ExtInstImport  "GLSL.std.450"
@@ -74,11 +74,9 @@
                               Name 54  "ubuf"
                               MemberName 54(ubuf) 0  "s"
                               Name 56  ""
-                              Name 57  "S"
-                              MemberName 57(S) 0  "a"
-                              Name 59  "param"
-                              Name 69  "s2d"
-                              Name 99  "i"
+                              Name 57  "param"
+                              Name 67  "s2d"
+                              Name 97  "i"
                               ModuleProcessed  "no-storage-format"
                               ModuleProcessed  "resource-set-binding 3"
                               ModuleProcessed  "auto-map-locations"
@@ -94,8 +92,8 @@
                               MemberDecorate 54(ubuf) 0 Offset 0
                               Decorate 54(ubuf) Block
                               Decorate 56 DescriptorSet 3
-                              Decorate 69(s2d) Location 0
-                              Decorate 69(s2d) DescriptorSet 3
+                              Decorate 67(s2d) Location 0
+                              Decorate 67(s2d) DescriptorSet 3
                3:             TypeVoid
                4:             TypeFunction 3
                7:             TypeInt 32 1
@@ -122,120 +120,118 @@
         54(ubuf):             TypeStruct 53(S)
               55:             TypePointer Uniform 54(ubuf)
               56:     55(ptr) Variable Uniform
-           57(S):             TypeStruct 7(int)
-              58:             TypePointer Function 57(S)
-              60:             TypePointer Uniform 53(S)
-              66:             TypeImage 10(float) 2D sampled format:Unknown
-              67:             TypeSampledImage 66
-              68:             TypePointer UniformConstant 67
-         69(s2d):     68(ptr) Variable UniformConstant
-              71:             TypeVector 10(float) 2
-              72:   10(float) Constant 1056964608
-              73:   71(fvec2) ConstantComposite 72 72
-              77:             TypePointer Uniform 7(int)
-             106:      7(int) Constant 10
-             111:      7(int) Constant 1
-             113:             TypePointer Output 10(float)
-             116:   10(float) Constant 1092616192
+              58:             TypePointer Uniform 53(S)
+              64:             TypeImage 10(float) 2D sampled format:Unknown
+              65:             TypeSampledImage 64
+              66:             TypePointer UniformConstant 65
+         67(s2d):     66(ptr) Variable UniformConstant
+              69:             TypeVector 10(float) 2
+              70:   10(float) Constant 1056964608
+              71:   69(fvec2) ConstantComposite 70 70
+              75:             TypePointer Uniform 7(int)
+             104:      7(int) Constant 10
+             109:      7(int) Constant 1
+             111:             TypePointer Output 10(float)
+             114:   10(float) Constant 1092616192
          5(main):           3 Function None 4
                6:             Label
-       59(param):     58(ptr) Variable Function
-           99(i):     19(ptr) Variable Function
-             118:     16(ptr) Variable Function
+       57(param):      9(ptr) Variable Function
+           97(i):     19(ptr) Variable Function
+             116:     16(ptr) Variable Function
                               Line 1 30 0
-              61:     60(ptr) AccessChain 56 18
-              62:       53(S) Load 61
-              63:      7(int) CompositeExtract 62 0
-              64:     19(ptr) AccessChain 59(param) 18
-                              Store 64 63
-              65:   11(fvec4) FunctionCall 14(foo(struct-S-i11;) 59(param)
-                              Store 52(outv) 65
+              59:     58(ptr) AccessChain 56 18
+              60:       53(S) Load 59
+              61:      7(int) CompositeExtract 60 0
+              62:     19(ptr) AccessChain 57(param) 18
+                              Store 62 61
+              63:   11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param)
+                              Store 52(outv) 63
                               Line 1 31 0
-              70:          67 Load 69(s2d)
-              74:   11(fvec4) ImageSampleImplicitLod 70 73
-              75:   11(fvec4) Load 52(outv)
-              76:   11(fvec4) FAdd 75 74
-                              Store 52(outv) 76
+              68:          65 Load 67(s2d)
+              72:   11(fvec4) ImageSampleImplicitLod 68 71
+              73:   11(fvec4) Load 52(outv)
+              74:   11(fvec4) FAdd 73 72
+                              Store 52(outv) 74
                               Line 1 33 0
-              78:     77(ptr) AccessChain 56 18 18
-              79:      7(int) Load 78
-                              SelectionMerge 83 None
-                              Switch 79 82 
-                                     case 10: 80
-                                     case 20: 81
-              82:               Label
-                                Line 1 42 0
-              94:   11(fvec4)   Load 52(outv)
-              95:   11(fvec4)   CompositeConstruct 28 28 28 28
-              96:   11(fvec4)   FSub 94 95
-                                Store 52(outv) 96
-                                Line 1 43 0
-                                Branch 83
+              76:     75(ptr) AccessChain 56 18 18
+              77:      7(int) Load 76
+                              SelectionMerge 81 None
+                              Switch 77 80 
+                                     case 10: 78
+                                     case 20: 79
               80:               Label
+                                Line 1 42 0
+              92:   11(fvec4)   Load 52(outv)
+              93:   11(fvec4)   CompositeConstruct 28 28 28 28
+              94:   11(fvec4)   FSub 92 93
+                                Store 52(outv) 94
+                                Line 1 43 0
+                                Branch 81
+              78:               Label
                                 Line 1 35 0
-              84:   11(fvec4)   Load 52(outv)
-              85:   11(fvec4)   CompositeConstruct 28 28 28 28
-              86:   11(fvec4)   FAdd 84 85
-                                Store 52(outv) 86
+              82:   11(fvec4)   Load 52(outv)
+              83:   11(fvec4)   CompositeConstruct 28 28 28 28
+              84:   11(fvec4)   FAdd 82 83
+                                Store 52(outv) 84
                                 Line 1 36 0
-                                Branch 83
-              81:               Label
+                                Branch 81
+              79:               Label
                                 Line 1 38 0
-              88:   11(fvec4)   Load 52(outv)
-              89:   11(fvec4)   VectorTimesScalar 88 45
-                                Store 52(outv) 89
+              86:   11(fvec4)   Load 52(outv)
+              87:   11(fvec4)   VectorTimesScalar 86 45
+                                Store 52(outv) 87
                                 Line 1 39 0
-              90:   11(fvec4)   Load 52(outv)
-              91:   11(fvec4)   CompositeConstruct 28 28 28 28
-              92:   11(fvec4)   FAdd 90 91
-                                Store 52(outv) 92
+              88:   11(fvec4)   Load 52(outv)
+              89:   11(fvec4)   CompositeConstruct 28 28 28 28
+              90:   11(fvec4)   FAdd 88 89
+                                Store 52(outv) 90
                                 Line 1 40 0
-                                Branch 83
-              83:             Label
+                                Branch 81
+              81:             Label
                               Line 1 46 0
-                              Store 99(i) 18
-                              Branch 100
-             100:             Label
-                              LoopMerge 102 103 None
-                              Branch 104
-             104:             Label
-             105:      7(int) Load 99(i)
-             107:    37(bool) SLessThan 105 106
-                              BranchConditional 107 101 102
-             101:               Label
-                                Line 1 47 0
-             108:   11(fvec4)   Load 52(outv)
-             109:   11(fvec4)   VectorTimesScalar 108 36
-                                Store 52(outv) 109
-                                Branch 103
-             103:               Label
-                                Line 1 46 0
-             110:      7(int)   Load 99(i)
-             112:      7(int)   IAdd 110 111
-                                Store 99(i) 112
-                                Branch 100
+                              Store 97(i) 18
+                              Branch 98
+              98:             Label
+                              LoopMerge 100 101 None
+                              Branch 102
              102:             Label
+             103:      7(int) Load 97(i)
+             105:    37(bool) SLessThan 103 104
+                              BranchConditional 105 99 100
+              99:               Label
+                                Line 1 47 0
+             106:   11(fvec4)   Load 52(outv)
+             107:   11(fvec4)   VectorTimesScalar 106 36
+                                Store 52(outv) 107
+                                Branch 101
+             101:               Label
+                                Line 1 46 0
+             108:      7(int)   Load 97(i)
+             110:      7(int)   IAdd 108 109
+                                Store 97(i) 110
+                                Branch 98
+             100:             Label
                               Line 1 49 0
-             114:    113(ptr) AccessChain 52(outv) 32
-             115:   10(float) Load 114
-             117:    37(bool) FOrdLessThan 115 116
-                              SelectionMerge 120 None
-                              BranchConditional 117 119 123
-             119:               Label
+             112:    111(ptr) AccessChain 52(outv) 32
+             113:   10(float) Load 112
+             115:    37(bool) FOrdLessThan 113 114
+                              SelectionMerge 118 None
+                              BranchConditional 115 117 121
+             117:               Label
                                 Line 1 50 0
-             121:   11(fvec4)   Load 52(outv)
-             122:   11(fvec4)   ExtInst 2(GLSL.std.450) 13(Sin) 121
-                                Store 52(outv) 122
-                                Store 118 122
-                                Branch 120
-             123:               Label
+             119:   11(fvec4)   Load 52(outv)
+             120:   11(fvec4)   ExtInst 2(GLSL.std.450) 13(Sin) 119
+                                Store 52(outv) 120
+                                Store 116 120
+                                Branch 118
+             121:               Label
                                 Line 1 51 0
-             124:   11(fvec4)   Load 52(outv)
-             125:   11(fvec4)   ExtInst 2(GLSL.std.450) 14(Cos) 124
-                                Store 52(outv) 125
-                                Store 118 125
-                                Branch 120
-             120:             Label
+             122:   11(fvec4)   Load 52(outv)
+             123:   11(fvec4)   ExtInst 2(GLSL.std.450) 14(Cos) 122
+                                Store 52(outv) 123
+                                Store 116 123
+                                Branch 118
+             118:             Label
                               Return
                               FunctionEnd
 14(foo(struct-S-i11;):   11(fvec4) Function None 12
diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out
index 0bb266b..809fe9a 100644
--- a/Test/baseResults/spv.debugInfo.frag.out
+++ b/Test/baseResults/spv.debugInfo.frag.out
@@ -1,7 +1,7 @@
 spv.debugInfo.frag
 // Module Version 10000
 // Generated by (magic number): 80006
-// Id's are bound by 126
+// Id's are bound by 124
 
                               Capability Shader
                2:             ExtInstImport  "GLSL.std.450"
@@ -85,11 +85,9 @@
                               Name 54  "ubuf"
                               MemberName 54(ubuf) 0  "s"
                               Name 56  ""
-                              Name 57  "S"
-                              MemberName 57(S) 0  "a"
-                              Name 59  "param"
-                              Name 69  "s2d"
-                              Name 99  "i"
+                              Name 57  "param"
+                              Name 67  "s2d"
+                              Name 97  "i"
                               Decorate 24(inv) Location 0
                               Decorate 52(outv) Location 0
                               MemberDecorate 53(S) 0 Offset 0
@@ -97,9 +95,9 @@
                               Decorate 54(ubuf) Block
                               Decorate 56 DescriptorSet 3
                               Decorate 56 Binding 0
-                              Decorate 69(s2d) Location 0
-                              Decorate 69(s2d) DescriptorSet 3
-                              Decorate 69(s2d) Binding 1
+                              Decorate 67(s2d) Location 0
+                              Decorate 67(s2d) DescriptorSet 3
+                              Decorate 67(s2d) Binding 1
                3:             TypeVoid
                4:             TypeFunction 3
                7:             TypeInt 32 1
@@ -126,120 +124,118 @@
         54(ubuf):             TypeStruct 53(S)
               55:             TypePointer Uniform 54(ubuf)
               56:     55(ptr) Variable Uniform
-           57(S):             TypeStruct 7(int)
-              58:             TypePointer Function 57(S)
-              60:             TypePointer Uniform 53(S)
-              66:             TypeImage 10(float) 2D sampled format:Unknown
-              67:             TypeSampledImage 66
-              68:             TypePointer UniformConstant 67
-         69(s2d):     68(ptr) Variable UniformConstant
-              71:             TypeVector 10(float) 2
-              72:   10(float) Constant 1056964608
-              73:   71(fvec2) ConstantComposite 72 72
-              77:             TypePointer Uniform 7(int)
-             106:      7(int) Constant 10
-             111:      7(int) Constant 1
-             113:             TypePointer Output 10(float)
-             116:   10(float) Constant 1092616192
+              58:             TypePointer Uniform 53(S)
+              64:             TypeImage 10(float) 2D sampled format:Unknown
+              65:             TypeSampledImage 64
+              66:             TypePointer UniformConstant 65
+         67(s2d):     66(ptr) Variable UniformConstant
+              69:             TypeVector 10(float) 2
+              70:   10(float) Constant 1056964608
+              71:   69(fvec2) ConstantComposite 70 70
+              75:             TypePointer Uniform 7(int)
+             104:      7(int) Constant 10
+             109:      7(int) Constant 1
+             111:             TypePointer Output 10(float)
+             114:   10(float) Constant 1092616192
          5(main):           3 Function None 4
                6:             Label
-       59(param):     58(ptr) Variable Function
-           99(i):     19(ptr) Variable Function
-             118:     16(ptr) Variable Function
+       57(param):      9(ptr) Variable Function
+           97(i):     19(ptr) Variable Function
+             116:     16(ptr) Variable Function
                               Line 1 30 0
-              61:     60(ptr) AccessChain 56 18
-              62:       53(S) Load 61
-              63:      7(int) CompositeExtract 62 0
-              64:     19(ptr) AccessChain 59(param) 18
-                              Store 64 63
-              65:   11(fvec4) FunctionCall 14(foo(struct-S-i11;) 59(param)
-                              Store 52(outv) 65
+              59:     58(ptr) AccessChain 56 18
+              60:       53(S) Load 59
+              61:      7(int) CompositeExtract 60 0
+              62:     19(ptr) AccessChain 57(param) 18
+                              Store 62 61
+              63:   11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param)
+                              Store 52(outv) 63
                               Line 1 31 0
-              70:          67 Load 69(s2d)
-              74:   11(fvec4) ImageSampleImplicitLod 70 73
-              75:   11(fvec4) Load 52(outv)
-              76:   11(fvec4) FAdd 75 74
-                              Store 52(outv) 76
+              68:          65 Load 67(s2d)
+              72:   11(fvec4) ImageSampleImplicitLod 68 71
+              73:   11(fvec4) Load 52(outv)
+              74:   11(fvec4) FAdd 73 72
+                              Store 52(outv) 74
                               Line 1 33 0
-              78:     77(ptr) AccessChain 56 18 18
-              79:      7(int) Load 78
-                              SelectionMerge 83 None
-                              Switch 79 82 
-                                     case 10: 80
-                                     case 20: 81
-              82:               Label
-                                Line 1 42 0
-              94:   11(fvec4)   Load 52(outv)
-              95:   11(fvec4)   CompositeConstruct 28 28 28 28
-              96:   11(fvec4)   FSub 94 95
-                                Store 52(outv) 96
-                                Line 1 43 0
-                                Branch 83
+              76:     75(ptr) AccessChain 56 18 18
+              77:      7(int) Load 76
+                              SelectionMerge 81 None
+                              Switch 77 80 
+                                     case 10: 78
+                                     case 20: 79
               80:               Label
+                                Line 1 42 0
+              92:   11(fvec4)   Load 52(outv)
+              93:   11(fvec4)   CompositeConstruct 28 28 28 28
+              94:   11(fvec4)   FSub 92 93
+                                Store 52(outv) 94
+                                Line 1 43 0
+                                Branch 81
+              78:               Label
                                 Line 1 35 0
-              84:   11(fvec4)   Load 52(outv)
-              85:   11(fvec4)   CompositeConstruct 28 28 28 28
-              86:   11(fvec4)   FAdd 84 85
-                                Store 52(outv) 86
+              82:   11(fvec4)   Load 52(outv)
+              83:   11(fvec4)   CompositeConstruct 28 28 28 28
+              84:   11(fvec4)   FAdd 82 83
+                                Store 52(outv) 84
                                 Line 1 36 0
-                                Branch 83
-              81:               Label
+                                Branch 81
+              79:               Label
                                 Line 1 38 0
-              88:   11(fvec4)   Load 52(outv)
-              89:   11(fvec4)   VectorTimesScalar 88 45
-                                Store 52(outv) 89
+              86:   11(fvec4)   Load 52(outv)
+              87:   11(fvec4)   VectorTimesScalar 86 45
+                                Store 52(outv) 87
                                 Line 1 39 0
-              90:   11(fvec4)   Load 52(outv)
-              91:   11(fvec4)   CompositeConstruct 28 28 28 28
-              92:   11(fvec4)   FAdd 90 91
-                                Store 52(outv) 92
+              88:   11(fvec4)   Load 52(outv)
+              89:   11(fvec4)   CompositeConstruct 28 28 28 28
+              90:   11(fvec4)   FAdd 88 89
+                                Store 52(outv) 90
                                 Line 1 40 0
-                                Branch 83
-              83:             Label
+                                Branch 81
+              81:             Label
                               Line 1 46 0
-                              Store 99(i) 18
-                              Branch 100
-             100:             Label
-                              LoopMerge 102 103 None
-                              Branch 104
-             104:             Label
-             105:      7(int) Load 99(i)
-             107:    37(bool) SLessThan 105 106
-                              BranchConditional 107 101 102
-             101:               Label
-                                Line 1 47 0
-             108:   11(fvec4)   Load 52(outv)
-             109:   11(fvec4)   VectorTimesScalar 108 36
-                                Store 52(outv) 109
-                                Branch 103
-             103:               Label
-                                Line 1 46 0
-             110:      7(int)   Load 99(i)
-             112:      7(int)   IAdd 110 111
-                                Store 99(i) 112
-                                Branch 100
+                              Store 97(i) 18
+                              Branch 98
+              98:             Label
+                              LoopMerge 100 101 None
+                              Branch 102
              102:             Label
+             103:      7(int) Load 97(i)
+             105:    37(bool) SLessThan 103 104
+                              BranchConditional 105 99 100
+              99:               Label
+                                Line 1 47 0
+             106:   11(fvec4)   Load 52(outv)
+             107:   11(fvec4)   VectorTimesScalar 106 36
+                                Store 52(outv) 107
+                                Branch 101
+             101:               Label
+                                Line 1 46 0
+             108:      7(int)   Load 97(i)
+             110:      7(int)   IAdd 108 109
+                                Store 97(i) 110
+                                Branch 98
+             100:             Label
                               Line 1 49 0
-             114:    113(ptr) AccessChain 52(outv) 32
-             115:   10(float) Load 114
-             117:    37(bool) FOrdLessThan 115 116
-                              SelectionMerge 120 None
-                              BranchConditional 117 119 123
-             119:               Label
+             112:    111(ptr) AccessChain 52(outv) 32
+             113:   10(float) Load 112
+             115:    37(bool) FOrdLessThan 113 114
+                              SelectionMerge 118 None
+                              BranchConditional 115 117 121
+             117:               Label
                                 Line 1 50 0
-             121:   11(fvec4)   Load 52(outv)
-             122:   11(fvec4)   ExtInst 2(GLSL.std.450) 13(Sin) 121
-                                Store 52(outv) 122
-                                Store 118 122
-                                Branch 120
-             123:               Label
+             119:   11(fvec4)   Load 52(outv)
+             120:   11(fvec4)   ExtInst 2(GLSL.std.450) 13(Sin) 119
+                                Store 52(outv) 120
+                                Store 116 120
+                                Branch 118
+             121:               Label
                                 Line 1 51 0
-             124:   11(fvec4)   Load 52(outv)
-             125:   11(fvec4)   ExtInst 2(GLSL.std.450) 14(Cos) 124
-                                Store 52(outv) 125
-                                Store 118 125
-                                Branch 120
-             120:             Label
+             122:   11(fvec4)   Load 52(outv)
+             123:   11(fvec4)   ExtInst 2(GLSL.std.450) 14(Cos) 122
+                                Store 52(outv) 123
+                                Store 116 123
+                                Branch 118
+             118:             Label
                               Return
                               FunctionEnd
 14(foo(struct-S-i11;):   11(fvec4) Function None 12
diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out
index d4525cd..6f825c9 100755
--- a/Test/baseResults/spv.double.comp.out
+++ b/Test/baseResults/spv.double.comp.out
@@ -34,13 +34,13 @@
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeFloat 64
-      8(bufName):             TypeStruct 6(float) 7(float)
+      8(bufName):             TypeStruct 6(float) 7(float64_t)
                9:             TypePointer Uniform 8(bufName)
      10(bufInst):      9(ptr) Variable Uniform
               11:             TypeInt 32 1
               12:     11(int) Constant 1
-              13:    7(float) Constant 1413754136 1074340347
-              14:             TypePointer Uniform 7(float)
+              13:7(float64_t) Constant 1413754136 1074340347
+              14:             TypePointer Uniform 7(float64_t)
               16:     11(int) Constant 0
               17:    6(float) Constant 1095307129
               18:             TypePointer Uniform 6(float)
@@ -51,19 +51,19 @@
               25:             TypePointer Input 24(ivec3)
 26(gl_GlobalInvocationID):     25(ptr) Variable Input
               27:             TypeVector 23(int) 2
-              31:             TypePointer Function 7(float)
+              31:             TypePointer Function 7(float64_t)
 33(gl_LocalInvocationID):     25(ptr) Variable Input
               37:     11(int) Constant 8
               40:             TypeVector 6(float) 2
               42:    6(float) Constant 1090519040
-              47:             TypeVector 7(float) 4
-              48:             TypePointer Function 47(fvec4)
-              50:    7(float) Constant 2576980378 1071225241
-              51:    7(float) Constant 2576980378 1070176665
-              52:    7(float) Constant 858993459 1070805811
-              53:   47(fvec4) ConstantComposite 50 51 52 50
-              55:    7(float) Constant 0 1072693248
-              56:    7(float) Constant 3229815407 1074340298
+              47:             TypeVector 7(float64_t) 4
+              48:             TypePointer Function 47(f64vec4)
+              50:7(float64_t) Constant 2576980378 1071225241
+              51:7(float64_t) Constant 2576980378 1070176665
+              52:7(float64_t) Constant 858993459 1070805811
+              53: 47(f64vec4) ConstantComposite 50 51 52 50
+              55:7(float64_t) Constant 0 1072693248
+              56:7(float64_t) Constant 3229815407 1074340298
               57:             TypeImage 6(float) 2D nonsampled format:Unknown
               58:             TypePointer UniformConstant 57
      59(destTex):     58(ptr) Variable UniformConstant
@@ -90,7 +90,7 @@
               43:   40(fvec2) CompositeConstruct 42 42
               44:   40(fvec2) FDiv 41 43
               45:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 44
-              46:    7(float) FConvert 45
+              46:7(float64_t) FConvert 45
                               Store 32(localCoef) 46
                               Store 49(aa) 53
                               Store 54(globalCoef) 55
diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out
index b6fcb85..1fb2485 100755
--- a/Test/baseResults/spv.explicittypes.frag.out
+++ b/Test/baseResults/spv.explicittypes.frag.out
@@ -140,13 +140,13 @@
                2:             TypeVoid
                3:             TypeFunction 2
               16:             TypeInt 64 1
-              17:             TypePointer Function 16(int)
+              17:             TypePointer Function 16(int64_t)
               19:             TypeInt 32 0
               20:     19(int) Constant 3
-              21:             TypeArray 16(int) 20
-              22:     16(int) Constant 4008636143 4008636142
-              23:     16(int) Constant 4294967295 4294967295
-              24:     16(int) Constant 0 1
+              21:             TypeArray 16(int64_t) 20
+              22: 16(int64_t) Constant 4008636143 4008636142
+              23: 16(int64_t) Constant 4294967295 4294967295
+              24: 16(int64_t) Constant 0 1
               25:          21 ConstantComposite 22 23 24
     26(Uniforms):             TypeStruct 19(int)
               27:             TypePointer Uniform 26(Uniforms)
@@ -156,11 +156,11 @@
               31:             TypePointer Uniform 19(int)
               34:             TypePointer Function 21
               38:             TypeInt 64 0
-              39:             TypePointer Function 38(int)
-              41:             TypeArray 38(int) 20
-              42:     38(int) Constant 4294967295 4294967295
-              43:     38(int) Constant 0 1
-              44:     38(int) Constant 4294967295 1
+              39:             TypePointer Function 38(int64_t)
+              41:             TypeArray 38(int64_t) 20
+              42: 38(int64_t) Constant 4294967295 4294967295
+              43: 38(int64_t) Constant 0 1
+              44: 38(int64_t) Constant 4294967295 1
               45:          41 ConstantComposite 42 43 44
               48:             TypePointer Function 41
               52:             TypePointer Function 29(int)
@@ -177,78 +177,78 @@
               70:          67 ConstantComposite 68 68 69
               73:             TypePointer Function 67
               77:             TypeInt 16 1
-              78:             TypePointer Function 77(int)
-              80:             TypeArray 77(int) 20
-              81:     77(int) Constant 4294962927
-              82:     77(int) Constant 4294967295
-              83:     77(int) Constant 16384
+              78:             TypePointer Function 77(int16_t)
+              80:             TypeArray 77(int16_t) 20
+              81: 77(int16_t) Constant 4294962927
+              82: 77(int16_t) Constant 4294967295
+              83: 77(int16_t) Constant 16384
               84:          80 ConstantComposite 81 82 83
               87:             TypePointer Function 80
               91:             TypeInt 16 0
-              92:             TypePointer Function 91(int)
-              94:             TypeArray 91(int) 20
-              95:     91(int) Constant 65535
-              96:     91(int) Constant 32767
+              92:             TypePointer Function 91(int16_t)
+              94:             TypeArray 91(int16_t) 20
+              95: 91(int16_t) Constant 65535
+              96: 91(int16_t) Constant 32767
               97:          94 ConstantComposite 95 95 96
              100:             TypePointer Function 94
              104:             TypeInt 8 1
-             105:             TypePointer Function 104(int)
-             107:             TypeArray 104(int) 20
-             108:    104(int) Constant 4294967279
-             109:    104(int) Constant 4294967295
-             110:    104(int) Constant 0
+             105:             TypePointer Function 104(int8_t)
+             107:             TypeArray 104(int8_t) 20
+             108: 104(int8_t) Constant 4294967279
+             109: 104(int8_t) Constant 4294967295
+             110: 104(int8_t) Constant 0
              111:         107 ConstantComposite 108 109 110
              114:             TypePointer Function 107
              118:             TypeInt 8 0
-             119:             TypePointer Function 118(int)
-             121:             TypeArray 118(int) 20
-             122:    118(int) Constant 255
-             123:    118(int) Constant 127
+             119:             TypePointer Function 118(int8_t)
+             121:             TypeArray 118(int8_t) 20
+             122: 118(int8_t) Constant 255
+             123: 118(int8_t) Constant 127
              124:         121 ConstantComposite 122 122 123
              127:             TypePointer Function 121
-             131:             TypeVector 118(int) 2
-             132:             TypePointer Function 131(ivec2)
-             134:             TypeVector 104(int) 2
-             135:             TypePointer Function 134(ivec2)
-             139:             TypeVector 77(int) 2
-             140:             TypePointer Function 139(ivec2)
+             131:             TypeVector 118(int8_t) 2
+             132:             TypePointer Function 131(i8vec2)
+             134:             TypeVector 104(int8_t) 2
+             135:             TypePointer Function 134(i8vec2)
+             139:             TypeVector 77(int16_t) 2
+             140:             TypePointer Function 139(i16vec2)
              147:             TypeVector 29(int) 2
              148:             TypePointer Function 147(ivec2)
              155:             TypeVector 19(int) 2
              156:             TypePointer Function 155(ivec2)
-             161:             TypeVector 16(int) 2
-             162:             TypePointer Function 161(ivec2)
-             166:             TypeVector 38(int) 2
-             167:             TypePointer Function 166(ivec2)
+             161:             TypeVector 16(int64_t) 2
+             162:             TypePointer Function 161(i64vec2)
+             166:             TypeVector 38(int64_t) 2
+             167:             TypePointer Function 166(i64vec2)
              179:             TypeFloat 16
-             180:             TypeVector 179(float) 2
-             181:             TypePointer Function 180(fvec2)
+             180:             TypeVector 179(float16_t) 2
+             181:             TypePointer Function 180(f16vec2)
              185:             TypeFloat 32
              186:             TypeVector 185(float) 2
              187:             TypePointer Function 186(fvec2)
              191:             TypeFloat 64
-             192:             TypeVector 191(float) 2
-             193:             TypePointer Function 192(fvec2)
-             220:             TypeVector 91(int) 2
-             221:             TypePointer Function 220(ivec2)
+             192:             TypeVector 191(float64_t) 2
+             193:             TypePointer Function 192(f64vec2)
+             220:             TypeVector 91(int16_t) 2
+             221:             TypePointer Function 220(i16vec2)
              249:             TypeBool
              250:             TypeVector 249(bool) 2
              251:             TypePointer Function 250(bvec2)
-             254:    104(int) Constant 1
-             255:  134(ivec2) ConstantComposite 110 110
-             256:  134(ivec2) ConstantComposite 254 254
-             259:    118(int) Constant 0
-             260:    118(int) Constant 1
-             261:  131(ivec2) ConstantComposite 259 259
-             262:  131(ivec2) ConstantComposite 260 260
-             365:     77(int) Constant 0
-             366:     77(int) Constant 1
-             367:  139(ivec2) ConstantComposite 365 365
-             368:  139(ivec2) ConstantComposite 366 366
-             371:     91(int) Constant 0
-             372:     91(int) Constant 1
-             373:  220(ivec2) ConstantComposite 371 371
-             374:  220(ivec2) ConstantComposite 372 372
+             254: 104(int8_t) Constant 1
+             255: 134(i8vec2) ConstantComposite 110 110
+             256: 134(i8vec2) ConstantComposite 254 254
+             259: 118(int8_t) Constant 0
+             260: 118(int8_t) Constant 1
+             261: 131(i8vec2) ConstantComposite 259 259
+             262: 131(i8vec2) ConstantComposite 260 260
+             365: 77(int16_t) Constant 0
+             366: 77(int16_t) Constant 1
+             367:139(i16vec2) ConstantComposite 365 365
+             368:139(i16vec2) ConstantComposite 366 366
+             371: 91(int16_t) Constant 0
+             372: 91(int16_t) Constant 1
+             373:220(i16vec2) ConstantComposite 371 371
+             374:220(i16vec2) ConstantComposite 372 372
              467:     29(int) Constant 1
              468:  147(ivec2) ConstantComposite 30 30
              469:  147(ivec2) ConstantComposite 467 467
@@ -256,23 +256,23 @@
              473:     19(int) Constant 1
              474:  155(ivec2) ConstantComposite 472 472
              475:  155(ivec2) ConstantComposite 473 473
-             550:     16(int) Constant 0 0
-             551:     16(int) Constant 1 0
-             552:  161(ivec2) ConstantComposite 550 550
-             553:  161(ivec2) ConstantComposite 551 551
-             556:     38(int) Constant 0 0
-             557:     38(int) Constant 1 0
-             558:  166(ivec2) ConstantComposite 556 556
-             559:  166(ivec2) ConstantComposite 557 557
-             565:             TypeVector 77(int) 3
-             566:             TypeVector 77(int) 4
-             567:             TypeVector 91(int) 3
-             568:             TypeVector 91(int) 4
+             550: 16(int64_t) Constant 0 0
+             551: 16(int64_t) Constant 1 0
+             552:161(i64vec2) ConstantComposite 550 550
+             553:161(i64vec2) ConstantComposite 551 551
+             556: 38(int64_t) Constant 0 0
+             557: 38(int64_t) Constant 1 0
+             558:166(i64vec2) ConstantComposite 556 556
+             559:166(i64vec2) ConstantComposite 557 557
+             565:             TypeVector 77(int16_t) 3
+             566:             TypeVector 77(int16_t) 4
+             567:             TypeVector 91(int16_t) 3
+             568:             TypeVector 91(int16_t) 4
              569:             TypeVector 29(int) 3
              570:             TypeVector 29(int) 4
              571:             TypeVector 19(int) 3
              572:             TypeVector 19(int) 4
-      573(Block):             TypeStruct 77(int) 139(ivec2) 565(ivec3) 566(ivec4) 91(int) 220(ivec2) 567(ivec3) 568(ivec4) 29(int) 147(ivec2) 569(ivec3) 570(ivec4) 19(int) 155(ivec2) 571(ivec3) 572(ivec4)
+      573(Block):             TypeStruct 77(int16_t) 139(i16vec2) 565(i16vec3) 566(i16vec4) 91(int16_t) 220(i16vec2) 567(i16vec3) 568(i16vec4) 29(int) 147(ivec2) 569(ivec3) 570(ivec4) 19(int) 155(ivec2) 571(ivec3) 572(ivec4)
              574:             TypePointer Uniform 573(Block)
       575(block):    574(ptr) Variable Uniform
          4(main):           2 Function None 3
@@ -301,13 +301,13 @@
               33:     19(int) Load 32
                               Store 35(indexable) 25
               36:     17(ptr) AccessChain 35(indexable) 33
-              37:     16(int) Load 36
+              37: 16(int64_t) Load 36
                               Store 18(i64) 37
               46:     31(ptr) AccessChain 28 30
               47:     19(int) Load 46
                               Store 49(indexable) 45
               50:     39(ptr) AccessChain 49(indexable) 47
-              51:     38(int) Load 50
+              51: 38(int64_t) Load 50
                               Store 40(u64) 51
               59:     31(ptr) AccessChain 28 30
               60:     19(int) Load 59
@@ -325,25 +325,25 @@
               86:     19(int) Load 85
                               Store 88(indexable) 84
               89:     78(ptr) AccessChain 88(indexable) 86
-              90:     77(int) Load 89
+              90: 77(int16_t) Load 89
                               Store 79(i16) 90
               98:     31(ptr) AccessChain 28 30
               99:     19(int) Load 98
                               Store 101(indexable) 97
              102:     92(ptr) AccessChain 101(indexable) 99
-             103:     91(int) Load 102
+             103: 91(int16_t) Load 102
                               Store 93(u16) 103
              112:     31(ptr) AccessChain 28 30
              113:     19(int) Load 112
                               Store 115(indexable) 111
              116:    105(ptr) AccessChain 115(indexable) 113
-             117:    104(int) Load 116
+             117: 104(int8_t) Load 116
                               Store 106(i8) 117
              125:     31(ptr) AccessChain 28 30
              126:     19(int) Load 125
                               Store 128(indexable) 124
              129:    119(ptr) AccessChain 128(indexable) 126
-             130:    118(int) Load 129
+             130: 118(int8_t) Load 129
                               Store 120(u8) 130
                               Return
                               FunctionEnd
@@ -361,133 +361,133 @@
        194(f64v):    193(ptr) Variable Function
        222(u16v):    221(ptr) Variable Function
          252(bv):    251(ptr) Variable Function
-             137:  134(ivec2) Load 136(i8v)
-             138:  131(ivec2) Bitcast 137
+             137: 134(i8vec2) Load 136(i8v)
+             138: 131(i8vec2) Bitcast 137
                               Store 133(u8v) 138
-             142:  134(ivec2) Load 136(i8v)
-             143:  139(ivec2) SConvert 142
+             142: 134(i8vec2) Load 136(i8v)
+             143:139(i16vec2) SConvert 142
                               Store 141(i16v) 143
-             144:  131(ivec2) Load 133(u8v)
-             145:  139(ivec2) UConvert 144
-             146:  139(ivec2) Bitcast 145
+             144: 131(i8vec2) Load 133(u8v)
+             145:139(i16vec2) UConvert 144
+             146:139(i16vec2) Bitcast 145
                               Store 141(i16v) 146
-             150:  134(ivec2) Load 136(i8v)
+             150: 134(i8vec2) Load 136(i8v)
              151:  147(ivec2) SConvert 150
                               Store 149(i32v) 151
-             152:  131(ivec2) Load 133(u8v)
+             152: 131(i8vec2) Load 133(u8v)
              153:  147(ivec2) UConvert 152
              154:  147(ivec2) Bitcast 153
                               Store 149(i32v) 154
-             158:  134(ivec2) Load 136(i8v)
+             158: 134(i8vec2) Load 136(i8v)
              159:  147(ivec2) SConvert 158
              160:  155(ivec2) Bitcast 159
                               Store 157(u32v) 160
-             164:  134(ivec2) Load 136(i8v)
-             165:  161(ivec2) SConvert 164
+             164: 134(i8vec2) Load 136(i8v)
+             165:161(i64vec2) SConvert 164
                               Store 163(i64v) 165
-             169:  134(ivec2) Load 136(i8v)
-             170:  161(ivec2) SConvert 169
-             171:  166(ivec2) Bitcast 170
+             169: 134(i8vec2) Load 136(i8v)
+             170:161(i64vec2) SConvert 169
+             171:166(i64vec2) Bitcast 170
                               Store 168(u64v) 171
-             172:  131(ivec2) Load 133(u8v)
+             172: 131(i8vec2) Load 133(u8v)
              173:  155(ivec2) UConvert 172
                               Store 157(u32v) 173
-             174:  131(ivec2) Load 133(u8v)
-             175:  161(ivec2) UConvert 174
-             176:  161(ivec2) Bitcast 175
+             174: 131(i8vec2) Load 133(u8v)
+             175:161(i64vec2) UConvert 174
+             176:161(i64vec2) Bitcast 175
                               Store 163(i64v) 176
-             177:  131(ivec2) Load 133(u8v)
-             178:  166(ivec2) UConvert 177
+             177: 131(i8vec2) Load 133(u8v)
+             178:166(i64vec2) UConvert 177
                               Store 168(u64v) 178
-             183:  134(ivec2) Load 136(i8v)
-             184:  180(fvec2) ConvertSToF 183
+             183: 134(i8vec2) Load 136(i8v)
+             184:180(f16vec2) ConvertSToF 183
                               Store 182(f16v) 184
-             189:  134(ivec2) Load 136(i8v)
+             189: 134(i8vec2) Load 136(i8v)
              190:  186(fvec2) ConvertSToF 189
                               Store 188(f32v) 190
-             195:  134(ivec2) Load 136(i8v)
-             196:  192(fvec2) ConvertSToF 195
+             195: 134(i8vec2) Load 136(i8v)
+             196:192(f64vec2) ConvertSToF 195
                               Store 194(f64v) 196
-             197:  131(ivec2) Load 133(u8v)
-             198:  180(fvec2) ConvertUToF 197
+             197: 131(i8vec2) Load 133(u8v)
+             198:180(f16vec2) ConvertUToF 197
                               Store 182(f16v) 198
-             199:  131(ivec2) Load 133(u8v)
+             199: 131(i8vec2) Load 133(u8v)
              200:  186(fvec2) ConvertUToF 199
                               Store 188(f32v) 200
-             201:  131(ivec2) Load 133(u8v)
-             202:  192(fvec2) ConvertUToF 201
+             201: 131(i8vec2) Load 133(u8v)
+             202:192(f64vec2) ConvertUToF 201
                               Store 194(f64v) 202
-             203:  131(ivec2) Load 133(u8v)
-             204:  134(ivec2) Bitcast 203
+             203: 131(i8vec2) Load 133(u8v)
+             204: 134(i8vec2) Bitcast 203
                               Store 136(i8v) 204
-             205:  134(ivec2) Load 136(i8v)
-             206:  139(ivec2) SConvert 205
+             205: 134(i8vec2) Load 136(i8v)
+             206:139(i16vec2) SConvert 205
                               Store 141(i16v) 206
-             207:  131(ivec2) Load 133(u8v)
-             208:  139(ivec2) UConvert 207
-             209:  139(ivec2) Bitcast 208
+             207: 131(i8vec2) Load 133(u8v)
+             208:139(i16vec2) UConvert 207
+             209:139(i16vec2) Bitcast 208
                               Store 141(i16v) 209
-             210:  134(ivec2) Load 136(i8v)
+             210: 134(i8vec2) Load 136(i8v)
              211:  147(ivec2) SConvert 210
                               Store 149(i32v) 211
-             212:  131(ivec2) Load 133(u8v)
+             212: 131(i8vec2) Load 133(u8v)
              213:  147(ivec2) UConvert 212
              214:  147(ivec2) Bitcast 213
                               Store 149(i32v) 214
-             215:  134(ivec2) Load 136(i8v)
-             216:  161(ivec2) SConvert 215
+             215: 134(i8vec2) Load 136(i8v)
+             216:161(i64vec2) SConvert 215
                               Store 163(i64v) 216
-             217:  134(ivec2) Load 136(i8v)
-             218:  161(ivec2) SConvert 217
-             219:  166(ivec2) Bitcast 218
+             217: 134(i8vec2) Load 136(i8v)
+             218:161(i64vec2) SConvert 217
+             219:166(i64vec2) Bitcast 218
                               Store 168(u64v) 219
-             223:  134(ivec2) Load 136(i8v)
-             224:  139(ivec2) SConvert 223
-             225:  220(ivec2) Bitcast 224
+             223: 134(i8vec2) Load 136(i8v)
+             224:139(i16vec2) SConvert 223
+             225:220(i16vec2) Bitcast 224
                               Store 222(u16v) 225
-             226:  131(ivec2) Load 133(u8v)
-             227:  220(ivec2) UConvert 226
+             226: 131(i8vec2) Load 133(u8v)
+             227:220(i16vec2) UConvert 226
                               Store 222(u16v) 227
-             228:  131(ivec2) Load 133(u8v)
+             228: 131(i8vec2) Load 133(u8v)
              229:  155(ivec2) UConvert 228
                               Store 157(u32v) 229
-             230:  131(ivec2) Load 133(u8v)
-             231:  161(ivec2) UConvert 230
-             232:  161(ivec2) Bitcast 231
+             230: 131(i8vec2) Load 133(u8v)
+             231:161(i64vec2) UConvert 230
+             232:161(i64vec2) Bitcast 231
                               Store 163(i64v) 232
-             233:  131(ivec2) Load 133(u8v)
-             234:  161(ivec2) UConvert 233
-             235:  161(ivec2) Bitcast 234
-             236:  166(ivec2) Bitcast 235
+             233: 131(i8vec2) Load 133(u8v)
+             234:161(i64vec2) UConvert 233
+             235:161(i64vec2) Bitcast 234
+             236:166(i64vec2) Bitcast 235
                               Store 168(u64v) 236
-             237:  134(ivec2) Load 136(i8v)
-             238:  180(fvec2) ConvertSToF 237
+             237: 134(i8vec2) Load 136(i8v)
+             238:180(f16vec2) ConvertSToF 237
                               Store 182(f16v) 238
-             239:  134(ivec2) Load 136(i8v)
+             239: 134(i8vec2) Load 136(i8v)
              240:  186(fvec2) ConvertSToF 239
                               Store 188(f32v) 240
-             241:  134(ivec2) Load 136(i8v)
-             242:  192(fvec2) ConvertSToF 241
+             241: 134(i8vec2) Load 136(i8v)
+             242:192(f64vec2) ConvertSToF 241
                               Store 194(f64v) 242
-             243:  131(ivec2) Load 133(u8v)
-             244:  180(fvec2) ConvertUToF 243
+             243: 131(i8vec2) Load 133(u8v)
+             244:180(f16vec2) ConvertUToF 243
                               Store 182(f16v) 244
-             245:  131(ivec2) Load 133(u8v)
+             245: 131(i8vec2) Load 133(u8v)
              246:  186(fvec2) ConvertUToF 245
                               Store 188(f32v) 246
-             247:  131(ivec2) Load 133(u8v)
-             248:  192(fvec2) ConvertUToF 247
+             247: 131(i8vec2) Load 133(u8v)
+             248:192(f64vec2) ConvertUToF 247
                               Store 194(f64v) 248
              253:  250(bvec2) Load 252(bv)
-             257:  134(ivec2) Select 253 256 255
+             257: 134(i8vec2) Select 253 256 255
                               Store 136(i8v) 257
              258:  250(bvec2) Load 252(bv)
-             263:  131(ivec2) Select 258 262 261
+             263: 131(i8vec2) Select 258 262 261
                               Store 133(u8v) 263
-             264:  134(ivec2) Load 136(i8v)
+             264: 134(i8vec2) Load 136(i8v)
              265:  250(bvec2) INotEqual 264 261
                               Store 252(bv) 265
-             266:  131(ivec2) Load 133(u8v)
+             266: 131(i8vec2) Load 133(u8v)
              267:  250(bvec2) INotEqual 266 261
                               Store 252(bv) 267
                               Return
@@ -506,135 +506,135 @@
         347(i8v):    135(ptr) Variable Function
         353(u8v):    132(ptr) Variable Function
          363(bv):    251(ptr) Variable Function
-             270:  139(ivec2) Load 269(i16v)
+             270:139(i16vec2) Load 269(i16v)
              271:  147(ivec2) SConvert 270
                               Store 268(i32v) 271
-             273:  220(ivec2) Load 272(u16v)
+             273:220(i16vec2) Load 272(u16v)
              274:  147(ivec2) UConvert 273
              275:  147(ivec2) Bitcast 274
                               Store 268(i32v) 275
-             276:  139(ivec2) Load 269(i16v)
-             277:  220(ivec2) Bitcast 276
+             276:139(i16vec2) Load 269(i16v)
+             277:220(i16vec2) Bitcast 276
                               Store 272(u16v) 277
-             279:  139(ivec2) Load 269(i16v)
+             279:139(i16vec2) Load 269(i16v)
              280:  147(ivec2) SConvert 279
              281:  155(ivec2) Bitcast 280
                               Store 278(u32v) 281
-             283:  139(ivec2) Load 269(i16v)
-             284:  161(ivec2) SConvert 283
+             283:139(i16vec2) Load 269(i16v)
+             284:161(i64vec2) SConvert 283
                               Store 282(i64v) 284
-             286:  139(ivec2) Load 269(i16v)
-             287:  161(ivec2) SConvert 286
-             288:  166(ivec2) Bitcast 287
+             286:139(i16vec2) Load 269(i16v)
+             287:161(i64vec2) SConvert 286
+             288:166(i64vec2) Bitcast 287
                               Store 285(u64v) 288
-             289:  220(ivec2) Load 272(u16v)
+             289:220(i16vec2) Load 272(u16v)
              290:  155(ivec2) UConvert 289
                               Store 278(u32v) 290
-             291:  220(ivec2) Load 272(u16v)
-             292:  161(ivec2) UConvert 291
-             293:  161(ivec2) Bitcast 292
+             291:220(i16vec2) Load 272(u16v)
+             292:161(i64vec2) UConvert 291
+             293:161(i64vec2) Bitcast 292
                               Store 282(i64v) 293
-             294:  220(ivec2) Load 272(u16v)
-             295:  166(ivec2) UConvert 294
+             294:220(i16vec2) Load 272(u16v)
+             295:166(i64vec2) UConvert 294
                               Store 285(u64v) 295
-             297:  139(ivec2) Load 269(i16v)
-             298:  180(fvec2) ConvertSToF 297
+             297:139(i16vec2) Load 269(i16v)
+             298:180(f16vec2) ConvertSToF 297
                               Store 296(f16v) 298
-             300:  139(ivec2) Load 269(i16v)
+             300:139(i16vec2) Load 269(i16v)
              301:  186(fvec2) ConvertSToF 300
                               Store 299(f32v) 301
-             303:  139(ivec2) Load 269(i16v)
-             304:  192(fvec2) ConvertSToF 303
+             303:139(i16vec2) Load 269(i16v)
+             304:192(f64vec2) ConvertSToF 303
                               Store 302(f64v) 304
-             305:  220(ivec2) Load 272(u16v)
-             306:  180(fvec2) ConvertUToF 305
+             305:220(i16vec2) Load 272(u16v)
+             306:180(f16vec2) ConvertUToF 305
                               Store 296(f16v) 306
-             307:  220(ivec2) Load 272(u16v)
+             307:220(i16vec2) Load 272(u16v)
              308:  186(fvec2) ConvertUToF 307
                               Store 299(f32v) 308
-             309:  220(ivec2) Load 272(u16v)
-             310:  192(fvec2) ConvertUToF 309
+             309:220(i16vec2) Load 272(u16v)
+             310:192(f64vec2) ConvertUToF 309
                               Store 302(f64v) 310
-             311:  139(ivec2) Load 269(i16v)
+             311:139(i16vec2) Load 269(i16v)
              312:  147(ivec2) SConvert 311
                               Store 268(i32v) 312
-             313:  220(ivec2) Load 272(u16v)
+             313:220(i16vec2) Load 272(u16v)
              314:  147(ivec2) UConvert 313
              315:  147(ivec2) Bitcast 314
                               Store 268(i32v) 315
-             316:  139(ivec2) Load 269(i16v)
-             317:  220(ivec2) Bitcast 316
+             316:139(i16vec2) Load 269(i16v)
+             317:220(i16vec2) Bitcast 316
                               Store 272(u16v) 317
-             318:  139(ivec2) Load 269(i16v)
+             318:139(i16vec2) Load 269(i16v)
              319:  147(ivec2) SConvert 318
              320:  155(ivec2) Bitcast 319
                               Store 278(u32v) 320
-             321:  139(ivec2) Load 269(i16v)
-             322:  161(ivec2) SConvert 321
+             321:139(i16vec2) Load 269(i16v)
+             322:161(i64vec2) SConvert 321
                               Store 282(i64v) 322
-             323:  139(ivec2) Load 269(i16v)
-             324:  161(ivec2) SConvert 323
-             325:  166(ivec2) Bitcast 324
+             323:139(i16vec2) Load 269(i16v)
+             324:161(i64vec2) SConvert 323
+             325:166(i64vec2) Bitcast 324
                               Store 285(u64v) 325
-             326:  220(ivec2) Load 272(u16v)
+             326:220(i16vec2) Load 272(u16v)
              327:  155(ivec2) UConvert 326
                               Store 278(u32v) 327
-             328:  220(ivec2) Load 272(u16v)
-             329:  161(ivec2) UConvert 328
-             330:  161(ivec2) Bitcast 329
+             328:220(i16vec2) Load 272(u16v)
+             329:161(i64vec2) UConvert 328
+             330:161(i64vec2) Bitcast 329
                               Store 282(i64v) 330
-             331:  220(ivec2) Load 272(u16v)
-             332:  161(ivec2) UConvert 331
-             333:  161(ivec2) Bitcast 332
-             334:  166(ivec2) Bitcast 333
+             331:220(i16vec2) Load 272(u16v)
+             332:161(i64vec2) UConvert 331
+             333:161(i64vec2) Bitcast 332
+             334:166(i64vec2) Bitcast 333
                               Store 285(u64v) 334
-             335:  139(ivec2) Load 269(i16v)
-             336:  180(fvec2) ConvertSToF 335
+             335:139(i16vec2) Load 269(i16v)
+             336:180(f16vec2) ConvertSToF 335
                               Store 296(f16v) 336
-             337:  139(ivec2) Load 269(i16v)
+             337:139(i16vec2) Load 269(i16v)
              338:  186(fvec2) ConvertSToF 337
                               Store 299(f32v) 338
-             339:  139(ivec2) Load 269(i16v)
-             340:  192(fvec2) ConvertSToF 339
+             339:139(i16vec2) Load 269(i16v)
+             340:192(f64vec2) ConvertSToF 339
                               Store 302(f64v) 340
-             341:  220(ivec2) Load 272(u16v)
-             342:  180(fvec2) ConvertUToF 341
+             341:220(i16vec2) Load 272(u16v)
+             342:180(f16vec2) ConvertUToF 341
                               Store 296(f16v) 342
-             343:  220(ivec2) Load 272(u16v)
+             343:220(i16vec2) Load 272(u16v)
              344:  186(fvec2) ConvertUToF 343
                               Store 299(f32v) 344
-             345:  220(ivec2) Load 272(u16v)
-             346:  192(fvec2) ConvertUToF 345
+             345:220(i16vec2) Load 272(u16v)
+             346:192(f64vec2) ConvertUToF 345
                               Store 302(f64v) 346
-             348:  139(ivec2) Load 269(i16v)
-             349:  134(ivec2) SConvert 348
+             348:139(i16vec2) Load 269(i16v)
+             349: 134(i8vec2) SConvert 348
                               Store 347(i8v) 349
-             350:  220(ivec2) Load 272(u16v)
-             351:  134(ivec2) UConvert 350
-             352:  134(ivec2) Bitcast 351
+             350:220(i16vec2) Load 272(u16v)
+             351: 134(i8vec2) UConvert 350
+             352: 134(i8vec2) Bitcast 351
                               Store 347(i8v) 352
-             354:  139(ivec2) Load 269(i16v)
-             355:  134(ivec2) SConvert 354
-             356:  131(ivec2) Bitcast 355
+             354:139(i16vec2) Load 269(i16v)
+             355: 134(i8vec2) SConvert 354
+             356: 131(i8vec2) Bitcast 355
                               Store 353(u8v) 356
-             357:  220(ivec2) Load 272(u16v)
-             358:  131(ivec2) UConvert 357
+             357:220(i16vec2) Load 272(u16v)
+             358: 131(i8vec2) UConvert 357
                               Store 353(u8v) 358
-             359:  220(ivec2) Load 272(u16v)
-             360:  131(ivec2) UConvert 359
-             361:  139(ivec2) UConvert 360
-             362:  139(ivec2) Bitcast 361
+             359:220(i16vec2) Load 272(u16v)
+             360: 131(i8vec2) UConvert 359
+             361:139(i16vec2) UConvert 360
+             362:139(i16vec2) Bitcast 361
                               Store 269(i16v) 362
              364:  250(bvec2) Load 363(bv)
-             369:  139(ivec2) Select 364 368 367
+             369:139(i16vec2) Select 364 368 367
                               Store 269(i16v) 369
              370:  250(bvec2) Load 363(bv)
-             375:  220(ivec2) Select 370 374 373
+             375:220(i16vec2) Select 370 374 373
                               Store 272(u16v) 375
-             376:  139(ivec2) Load 269(i16v)
+             376:139(i16vec2) Load 269(i16v)
              377:  250(bvec2) INotEqual 376 373
                               Store 363(bv) 377
-             378:  220(ivec2) Load 272(u16v)
+             378:220(i16vec2) Load 272(u16v)
              379:  250(bvec2) INotEqual 378 373
                               Store 363(bv) 379
                               Return
@@ -657,44 +657,44 @@
              383:  155(ivec2) Bitcast 382
                               Store 380(u32v) 383
              385:  147(ivec2) Load 381(i32v)
-             386:  161(ivec2) SConvert 385
+             386:161(i64vec2) SConvert 385
                               Store 384(i64v) 386
              388:  147(ivec2) Load 381(i32v)
-             389:  161(ivec2) SConvert 388
-             390:  166(ivec2) Bitcast 389
+             389:161(i64vec2) SConvert 388
+             390:166(i64vec2) Bitcast 389
                               Store 387(u64v) 390
              391:  155(ivec2) Load 380(u32v)
-             392:  161(ivec2) UConvert 391
-             393:  161(ivec2) Bitcast 392
+             392:161(i64vec2) UConvert 391
+             393:161(i64vec2) Bitcast 392
                               Store 384(i64v) 393
              394:  155(ivec2) Load 380(u32v)
-             395:  166(ivec2) UConvert 394
+             395:166(i64vec2) UConvert 394
                               Store 387(u64v) 395
              397:  147(ivec2) Load 381(i32v)
              398:  186(fvec2) ConvertSToF 397
                               Store 396(f32v) 398
              400:  147(ivec2) Load 381(i32v)
-             401:  192(fvec2) ConvertSToF 400
+             401:192(f64vec2) ConvertSToF 400
                               Store 399(f64v) 401
              402:  155(ivec2) Load 380(u32v)
              403:  186(fvec2) ConvertUToF 402
                               Store 396(f32v) 403
              404:  155(ivec2) Load 380(u32v)
-             405:  192(fvec2) ConvertUToF 404
+             405:192(f64vec2) ConvertUToF 404
                               Store 399(f64v) 405
              407:  147(ivec2) Load 381(i32v)
-             408:  134(ivec2) SConvert 407
+             408: 134(i8vec2) SConvert 407
                               Store 406(i8v) 408
              409:  155(ivec2) Load 380(u32v)
-             410:  134(ivec2) UConvert 409
-             411:  134(ivec2) Bitcast 410
+             410: 134(i8vec2) UConvert 409
+             411: 134(i8vec2) Bitcast 410
                               Store 406(i8v) 411
              413:  147(ivec2) Load 381(i32v)
-             414:  139(ivec2) SConvert 413
+             414:139(i16vec2) SConvert 413
                               Store 412(i16v) 414
              415:  155(ivec2) Load 380(u32v)
-             416:  139(ivec2) UConvert 415
-             417:  139(ivec2) Bitcast 416
+             416:139(i16vec2) UConvert 415
+             417:139(i16vec2) Bitcast 416
                               Store 412(i16v) 417
              418:  147(ivec2) Load 381(i32v)
              419:     29(int) CompositeExtract 418 0
@@ -705,25 +705,25 @@
              423:  147(ivec2) Bitcast 422
                               Store 381(i32v) 423
              424:  147(ivec2) Load 381(i32v)
-             425:  161(ivec2) SConvert 424
+             425:161(i64vec2) SConvert 424
                               Store 384(i64v) 425
              426:  155(ivec2) Load 380(u32v)
-             427:  161(ivec2) UConvert 426
-             428:  161(ivec2) Bitcast 427
+             427:161(i64vec2) UConvert 426
+             428:161(i64vec2) Bitcast 427
                               Store 384(i64v) 428
              430:  147(ivec2) Load 381(i32v)
-             431:  134(ivec2) SConvert 430
-             432:  131(ivec2) Bitcast 431
+             431: 134(i8vec2) SConvert 430
+             432: 131(i8vec2) Bitcast 431
                               Store 429(u8v) 432
              433:  155(ivec2) Load 380(u32v)
-             434:  131(ivec2) UConvert 433
+             434: 131(i8vec2) UConvert 433
                               Store 429(u8v) 434
              436:  147(ivec2) Load 381(i32v)
-             437:  139(ivec2) SConvert 436
-             438:  220(ivec2) Bitcast 437
+             437:139(i16vec2) SConvert 436
+             438:220(i16vec2) Bitcast 437
                               Store 435(u16v) 438
              439:  155(ivec2) Load 380(u32v)
-             440:  220(ivec2) UConvert 439
+             440:220(i16vec2) UConvert 439
                               Store 435(u16v) 440
              441:  147(ivec2) Load 381(i32v)
              442:  155(ivec2) Bitcast 441
@@ -734,29 +734,29 @@
              446:  155(ivec2) CompositeConstruct 444 445
                               Store 380(u32v) 446
              447:  147(ivec2) Load 381(i32v)
-             448:  161(ivec2) SConvert 447
-             449:  166(ivec2) Bitcast 448
+             448:161(i64vec2) SConvert 447
+             449:166(i64vec2) Bitcast 448
                               Store 387(u64v) 449
              450:  155(ivec2) Load 380(u32v)
-             451:  166(ivec2) UConvert 450
+             451:166(i64vec2) UConvert 450
                               Store 387(u64v) 451
              453:  147(ivec2) Load 381(i32v)
-             454:  180(fvec2) ConvertSToF 453
+             454:180(f16vec2) ConvertSToF 453
                               Store 452(f16v) 454
              455:  147(ivec2) Load 381(i32v)
              456:  186(fvec2) ConvertSToF 455
                               Store 396(f32v) 456
              457:  147(ivec2) Load 381(i32v)
-             458:  192(fvec2) ConvertSToF 457
+             458:192(f64vec2) ConvertSToF 457
                               Store 399(f64v) 458
              459:  155(ivec2) Load 380(u32v)
-             460:  180(fvec2) ConvertUToF 459
+             460:180(f16vec2) ConvertUToF 459
                               Store 452(f16v) 460
              461:  155(ivec2) Load 380(u32v)
              462:  186(fvec2) ConvertUToF 461
                               Store 396(f32v) 462
              463:  155(ivec2) Load 380(u32v)
-             464:  192(fvec2) ConvertUToF 463
+             464:192(f64vec2) ConvertUToF 463
                               Store 399(f64v) 464
              466:  250(bvec2) Load 465(bv)
              470:  147(ivec2) Select 466 469 468
@@ -786,96 +786,96 @@
        534(f16v):    181(ptr) Variable Function
        537(f32v):    187(ptr) Variable Function
          548(bv):    251(ptr) Variable Function
-             483:  161(ivec2) Load 482(i64v)
-             484:  166(ivec2) Bitcast 483
+             483:161(i64vec2) Load 482(i64v)
+             484:166(i64vec2) Bitcast 483
                               Store 481(u64v) 484
-             486:  161(ivec2) Load 482(i64v)
-             487:  192(fvec2) ConvertSToF 486
+             486:161(i64vec2) Load 482(i64v)
+             487:192(f64vec2) ConvertSToF 486
                               Store 485(f64v) 487
-             488:  166(ivec2) Load 481(u64v)
-             489:  192(fvec2) ConvertUToF 488
+             488:166(i64vec2) Load 481(u64v)
+             489:192(f64vec2) ConvertUToF 488
                               Store 485(f64v) 489
-             491:  161(ivec2) Load 482(i64v)
-             492:  134(ivec2) SConvert 491
+             491:161(i64vec2) Load 482(i64v)
+             492: 134(i8vec2) SConvert 491
                               Store 490(i8v) 492
-             493:  166(ivec2) Load 481(u64v)
-             494:  134(ivec2) UConvert 493
-             495:  134(ivec2) Bitcast 494
+             493:166(i64vec2) Load 481(u64v)
+             494: 134(i8vec2) UConvert 493
+             495: 134(i8vec2) Bitcast 494
                               Store 490(i8v) 495
-             497:  161(ivec2) Load 482(i64v)
-             498:  139(ivec2) SConvert 497
+             497:161(i64vec2) Load 482(i64v)
+             498:139(i16vec2) SConvert 497
                               Store 496(i16v) 498
-             499:  166(ivec2) Load 481(u64v)
-             500:  139(ivec2) UConvert 499
-             501:  139(ivec2) Bitcast 500
+             499:166(i64vec2) Load 481(u64v)
+             500:139(i16vec2) UConvert 499
+             501:139(i16vec2) Bitcast 500
                               Store 496(i16v) 501
-             503:  161(ivec2) Load 482(i64v)
+             503:161(i64vec2) Load 482(i64v)
              504:  147(ivec2) SConvert 503
                               Store 502(i32v) 504
-             505:  166(ivec2) Load 481(u64v)
+             505:166(i64vec2) Load 481(u64v)
              506:  147(ivec2) UConvert 505
              507:  147(ivec2) Bitcast 506
                               Store 502(i32v) 507
-             508:  166(ivec2) Load 481(u64v)
-             509:  161(ivec2) Bitcast 508
+             508:166(i64vec2) Load 481(u64v)
+             509:161(i64vec2) Bitcast 508
                               Store 482(i64v) 509
-             511:  161(ivec2) Load 482(i64v)
-             512:  134(ivec2) SConvert 511
-             513:  131(ivec2) Bitcast 512
+             511:161(i64vec2) Load 482(i64v)
+             512: 134(i8vec2) SConvert 511
+             513: 131(i8vec2) Bitcast 512
                               Store 510(u8v) 513
-             514:  166(ivec2) Load 481(u64v)
-             515:  131(ivec2) UConvert 514
+             514:166(i64vec2) Load 481(u64v)
+             515: 131(i8vec2) UConvert 514
                               Store 510(u8v) 515
-             517:  161(ivec2) Load 482(i64v)
-             518:  139(ivec2) SConvert 517
-             519:  220(ivec2) Bitcast 518
+             517:161(i64vec2) Load 482(i64v)
+             518:139(i16vec2) SConvert 517
+             519:220(i16vec2) Bitcast 518
                               Store 516(u16v) 519
-             520:  166(ivec2) Load 481(u64v)
-             521:  220(ivec2) UConvert 520
+             520:166(i64vec2) Load 481(u64v)
+             521:220(i16vec2) UConvert 520
                               Store 516(u16v) 521
-             523:  161(ivec2) Load 482(i64v)
+             523:161(i64vec2) Load 482(i64v)
              524:  147(ivec2) SConvert 523
              525:  155(ivec2) Bitcast 524
                               Store 522(u32v) 525
-             526:  166(ivec2) Load 481(u64v)
+             526:166(i64vec2) Load 481(u64v)
              527:  155(ivec2) UConvert 526
                               Store 522(u32v) 527
-             528:  161(ivec2) Load 482(i64v)
-             529:  166(ivec2) Bitcast 528
+             528:161(i64vec2) Load 482(i64v)
+             529:166(i64vec2) Bitcast 528
                               Store 481(u64v) 529
-             530:  166(ivec2) Load 481(u64v)
-             531:     38(int) CompositeExtract 530 0
-             532:     38(int) CompositeExtract 530 1
-             533:  166(ivec2) CompositeConstruct 531 532
+             530:166(i64vec2) Load 481(u64v)
+             531: 38(int64_t) CompositeExtract 530 0
+             532: 38(int64_t) CompositeExtract 530 1
+             533:166(i64vec2) CompositeConstruct 531 532
                               Store 481(u64v) 533
-             535:  161(ivec2) Load 482(i64v)
-             536:  180(fvec2) ConvertSToF 535
+             535:161(i64vec2) Load 482(i64v)
+             536:180(f16vec2) ConvertSToF 535
                               Store 534(f16v) 536
-             538:  161(ivec2) Load 482(i64v)
+             538:161(i64vec2) Load 482(i64v)
              539:  186(fvec2) ConvertSToF 538
                               Store 537(f32v) 539
-             540:  161(ivec2) Load 482(i64v)
-             541:  192(fvec2) ConvertSToF 540
+             540:161(i64vec2) Load 482(i64v)
+             541:192(f64vec2) ConvertSToF 540
                               Store 485(f64v) 541
-             542:  166(ivec2) Load 481(u64v)
-             543:  180(fvec2) ConvertUToF 542
+             542:166(i64vec2) Load 481(u64v)
+             543:180(f16vec2) ConvertUToF 542
                               Store 534(f16v) 543
-             544:  166(ivec2) Load 481(u64v)
+             544:166(i64vec2) Load 481(u64v)
              545:  186(fvec2) ConvertUToF 544
                               Store 537(f32v) 545
-             546:  166(ivec2) Load 481(u64v)
-             547:  192(fvec2) ConvertUToF 546
+             546:166(i64vec2) Load 481(u64v)
+             547:192(f64vec2) ConvertUToF 546
                               Store 485(f64v) 547
              549:  250(bvec2) Load 548(bv)
-             554:  161(ivec2) Select 549 553 552
+             554:161(i64vec2) Select 549 553 552
                               Store 482(i64v) 554
              555:  250(bvec2) Load 548(bv)
-             560:  166(ivec2) Select 555 559 558
+             560:166(i64vec2) Select 555 559 558
                               Store 481(u64v) 560
-             561:  161(ivec2) Load 482(i64v)
+             561:161(i64vec2) Load 482(i64v)
              562:  250(bvec2) INotEqual 561 558
                               Store 548(bv) 562
-             563:  166(ivec2) Load 481(u64v)
+             563:166(i64vec2) Load 481(u64v)
              564:  250(bvec2) INotEqual 563 558
                               Store 548(bv) 564
                               Return
diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out
index cc7b33d..a29228f 100644
--- a/Test/baseResults/spv.float16.frag.out
+++ b/Test/baseResults/spv.float16.frag.out
@@ -156,86 +156,86 @@
                2:             TypeVoid
                3:             TypeFunction 2
               28:             TypeFloat 16
-              29:             TypeVector 28(float) 2
-              30:             TypePointer Function 29(fvec2)
-              32:   28(float) Constant 16
+              29:             TypeVector 28(float16_t) 2
+              30:             TypePointer Function 29(f16vec2)
+              32:28(float16_t) Constant 16
               33:             TypeInt 32 0
               34:     33(int) Constant 0
-              35:             TypePointer Function 28(float)
-              37:   28(float) Constant 46080
-              38:   28(float) Constant 10158
-              39:   29(fvec2) ConstantComposite 37 38
-              56:   28(float) Constant 15360
-              62:             TypeMatrix 29(fvec2) 2
+              35:             TypePointer Function 28(float16_t)
+              37:28(float16_t) Constant 46080
+              38:28(float16_t) Constant 10158
+              39: 29(f16vec2) ConstantComposite 37 38
+              56:28(float16_t) Constant 15360
+              62:             TypeMatrix 29(f16vec2) 2
               63:             TypePointer Function 62
               90:     33(int) Constant 1
              109:             TypeBool
              110:             TypePointer Function 109(bool)
-             151:             TypeVector 28(float) 3
-             152:             TypePointer Function 151(fvec3)
+             151:             TypeVector 28(float16_t) 3
+             152:             TypePointer Function 151(f16vec3)
              154:             TypeVector 109(bool) 3
              155:             TypePointer Function 154(bvec3)
-             158:   28(float) Constant 0
-             159:  151(fvec3) ConstantComposite 158 158 158
-             160:  151(fvec3) ConstantComposite 56 56 56
+             158:28(float16_t) Constant 0
+             159:151(f16vec3) ConstantComposite 158 158 158
+             160:151(f16vec3) ConstantComposite 56 56 56
              164:             TypeFloat 32
              165:             TypeVector 164(float) 3
              166:             TypePointer Function 165(fvec3)
              172:             TypeFloat 64
-             173:             TypeVector 172(float) 3
-             174:             TypePointer Function 173(fvec3)
+             173:             TypeVector 172(float64_t) 3
+             174:             TypePointer Function 173(f64vec3)
              183:             TypeInt 32 1
              184:             TypeVector 183(int) 3
              185:             TypePointer Function 184(ivec3)
              191:             TypeVector 33(int) 3
              192:             TypePointer Function 191(ivec3)
              198:             TypeInt 64 1
-             199:             TypeVector 198(int) 3
-             200:             TypePointer Function 199(ivec3)
+             199:             TypeVector 198(int64_t) 3
+             200:             TypePointer Function 199(i64vec3)
              206:             TypeInt 64 0
-             207:             TypeVector 206(int) 3
-             208:             TypePointer Function 207(ivec3)
-             214:             TypeVector 28(float) 4
-             215:             TypePointer Function 214(fvec4)
-    364(ResType):             TypeStruct 151(fvec3) 184(ivec3)
+             207:             TypeVector 206(int64_t) 3
+             208:             TypePointer Function 207(i64vec3)
+             214:             TypeVector 28(float16_t) 4
+             215:             TypePointer Function 214(f16vec4)
+    364(ResType):             TypeStruct 151(f16vec3) 184(ivec3)
              371:             TypePointer Function 33(int)
-             406:             TypeMatrix 151(fvec3) 2
+             406:             TypeMatrix 151(f16vec3) 2
              407:             TypePointer Function 406
-             425:             TypeMatrix 29(fvec2) 3
+             425:             TypeMatrix 29(f16vec2) 3
              426:             TypePointer Function 425
-             431:             TypeMatrix 151(fvec3) 3
+             431:             TypeMatrix 151(f16vec3) 3
              432:             TypePointer Function 431
-             436:             TypeMatrix 214(fvec4) 4
+             436:             TypeMatrix 214(f16vec4) 4
              437:             TypePointer Function 436
-             464:             TypePointer Input 151(fvec3)
+             464:             TypePointer Input 151(f16vec3)
       465(if16v):    464(ptr) Variable Input
-             466:             TypePointer Input 28(float)
+             466:             TypePointer Input 28(float16_t)
              503:    183(int) Constant 1
-             508:   28(float) Constant 14336
-             509:   29(fvec2) ConstantComposite 508 508
+             508:28(float16_t) Constant 14336
+             509: 29(f16vec2) ConstantComposite 508 508
              511:     33(int) Constant 2
-             512:             TypeArray 28(float) 511
+             512:             TypeArray 28(float16_t) 511
              513:             TypeArray 406 511
-          514(S):             TypeStruct 28(float) 29(fvec2) 151(fvec3)
+          514(S):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
              515:             TypeArray 514(S) 511
-         516(B1):             TypeStruct 28(float) 29(fvec2) 151(fvec3) 512 406 513 514(S) 515
+         516(B1):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 512 406 513 514(S) 515
              517:             TypePointer Uniform 516(B1)
              518:    517(ptr) Variable Uniform
-             519:             TypeArray 28(float) 511
+             519:             TypeArray 28(float16_t) 511
              520:             TypeArray 406 511
-          521(S):             TypeStruct 28(float) 29(fvec2) 151(fvec3)
+          521(S):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
              522:             TypeArray 521(S) 511
-         523(B2):             TypeStruct 28(float) 29(fvec2) 151(fvec3) 519 406 520 521(S) 522
+         523(B2):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 519 406 520 521(S) 522
              524:             TypePointer Uniform 523(B2)
              525:    524(ptr) Variable Uniform
-       526(sf16):   28(float) SpecConstant 12288
+       526(sf16):28(float16_t) SpecConstant 12288
          527(sf):  164(float) SpecConstant 1048576000
-         528(sd):  172(float) SpecConstant 0 1071644672
+         528(sd):172(float64_t) SpecConstant 0 1071644672
              529:  164(float) SpecConstantOp 115 526(sf16)
              530:  164(float) SpecConstantOp 115 526(sf16)
-             531:  172(float) SpecConstantOp 115 530
-             532:   28(float) SpecConstantOp 115 527(sf)
-             533:   28(float) SpecConstantOp 115 528(sd)
+             531:172(float64_t) SpecConstantOp 115 530
+             532:28(float16_t) SpecConstantOp 115 527(sf)
+             533:28(float16_t) SpecConstantOp 115 528(sd)
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -245,8 +245,8 @@
         31(f16v):     30(ptr) Variable Function
               36:     35(ptr) AccessChain 31(f16v) 34
                               Store 36 32
-              40:   29(fvec2) Load 31(f16v)
-              41:   29(fvec2) FAdd 40 39
+              40: 29(f16vec2) Load 31(f16v)
+              41: 29(f16vec2) FAdd 40 39
                               Store 31(f16v) 41
                               Return
                               FunctionEnd
@@ -256,125 +256,125 @@
         64(f16m):     63(ptr) Variable Function
          87(f16):     35(ptr) Variable Function
           111(b):    110(ptr) Variable Function
-              43:   29(fvec2) Load 42(f16v)
-              44:   29(fvec2) Load 42(f16v)
-              45:   29(fvec2) FAdd 44 43
+              43: 29(f16vec2) Load 42(f16v)
+              44: 29(f16vec2) Load 42(f16v)
+              45: 29(f16vec2) FAdd 44 43
                               Store 42(f16v) 45
-              46:   29(fvec2) Load 42(f16v)
-              47:   29(fvec2) Load 42(f16v)
-              48:   29(fvec2) FSub 47 46
+              46: 29(f16vec2) Load 42(f16v)
+              47: 29(f16vec2) Load 42(f16v)
+              48: 29(f16vec2) FSub 47 46
                               Store 42(f16v) 48
-              49:   29(fvec2) Load 42(f16v)
-              50:   29(fvec2) Load 42(f16v)
-              51:   29(fvec2) FMul 50 49
+              49: 29(f16vec2) Load 42(f16v)
+              50: 29(f16vec2) Load 42(f16v)
+              51: 29(f16vec2) FMul 50 49
                               Store 42(f16v) 51
-              52:   29(fvec2) Load 42(f16v)
-              53:   29(fvec2) Load 42(f16v)
-              54:   29(fvec2) FDiv 53 52
+              52: 29(f16vec2) Load 42(f16v)
+              53: 29(f16vec2) Load 42(f16v)
+              54: 29(f16vec2) FDiv 53 52
                               Store 42(f16v) 54
-              55:   29(fvec2) Load 42(f16v)
-              57:   29(fvec2) CompositeConstruct 56 56
-              58:   29(fvec2) FAdd 55 57
+              55: 29(f16vec2) Load 42(f16v)
+              57: 29(f16vec2) CompositeConstruct 56 56
+              58: 29(f16vec2) FAdd 55 57
                               Store 42(f16v) 58
-              59:   29(fvec2) Load 42(f16v)
-              60:   29(fvec2) CompositeConstruct 56 56
-              61:   29(fvec2) FSub 59 60
+              59: 29(f16vec2) Load 42(f16v)
+              60: 29(f16vec2) CompositeConstruct 56 56
+              61: 29(f16vec2) FSub 59 60
                               Store 42(f16v) 61
               65:          62 Load 64(f16m)
-              66:   29(fvec2) CompositeConstruct 56 56
-              67:   29(fvec2) CompositeExtract 65 0
-              68:   29(fvec2) FAdd 67 66
-              69:   29(fvec2) CompositeExtract 65 1
-              70:   29(fvec2) FAdd 69 66
+              66: 29(f16vec2) CompositeConstruct 56 56
+              67: 29(f16vec2) CompositeExtract 65 0
+              68: 29(f16vec2) FAdd 67 66
+              69: 29(f16vec2) CompositeExtract 65 1
+              70: 29(f16vec2) FAdd 69 66
               71:          62 CompositeConstruct 68 70
                               Store 64(f16m) 71
               72:          62 Load 64(f16m)
-              73:   29(fvec2) CompositeConstruct 56 56
-              74:   29(fvec2) CompositeExtract 72 0
-              75:   29(fvec2) FSub 74 73
-              76:   29(fvec2) CompositeExtract 72 1
-              77:   29(fvec2) FSub 76 73
+              73: 29(f16vec2) CompositeConstruct 56 56
+              74: 29(f16vec2) CompositeExtract 72 0
+              75: 29(f16vec2) FSub 74 73
+              76: 29(f16vec2) CompositeExtract 72 1
+              77: 29(f16vec2) FSub 76 73
               78:          62 CompositeConstruct 75 77
                               Store 64(f16m) 78
-              79:   29(fvec2) Load 42(f16v)
-              80:   29(fvec2) FNegate 79
+              79: 29(f16vec2) Load 42(f16v)
+              80: 29(f16vec2) FNegate 79
                               Store 42(f16v) 80
               81:          62 Load 64(f16m)
-              82:   29(fvec2) CompositeExtract 81 0
-              83:   29(fvec2) FNegate 82
-              84:   29(fvec2) CompositeExtract 81 1
-              85:   29(fvec2) FNegate 84
+              82: 29(f16vec2) CompositeExtract 81 0
+              83: 29(f16vec2) FNegate 82
+              84: 29(f16vec2) CompositeExtract 81 1
+              85: 29(f16vec2) FNegate 84
               86:          62 CompositeConstruct 83 85
                               Store 64(f16m) 86
               88:     35(ptr) AccessChain 42(f16v) 34
-              89:   28(float) Load 88
+              89:28(float16_t) Load 88
               91:     35(ptr) AccessChain 42(f16v) 90
-              92:   28(float) Load 91
-              93:   28(float) FAdd 89 92
+              92:28(float16_t) Load 91
+              93:28(float16_t) FAdd 89 92
                               Store 87(f16) 93
               94:     35(ptr) AccessChain 42(f16v) 34
-              95:   28(float) Load 94
+              95:28(float16_t) Load 94
               96:     35(ptr) AccessChain 42(f16v) 90
-              97:   28(float) Load 96
-              98:   28(float) FSub 95 97
+              97:28(float16_t) Load 96
+              98:28(float16_t) FSub 95 97
                               Store 87(f16) 98
               99:     35(ptr) AccessChain 42(f16v) 34
-             100:   28(float) Load 99
+             100:28(float16_t) Load 99
              101:     35(ptr) AccessChain 42(f16v) 90
-             102:   28(float) Load 101
-             103:   28(float) FMul 100 102
+             102:28(float16_t) Load 101
+             103:28(float16_t) FMul 100 102
                               Store 87(f16) 103
              104:     35(ptr) AccessChain 42(f16v) 34
-             105:   28(float) Load 104
+             105:28(float16_t) Load 104
              106:     35(ptr) AccessChain 42(f16v) 90
-             107:   28(float) Load 106
-             108:   28(float) FDiv 105 107
+             107:28(float16_t) Load 106
+             108:28(float16_t) FDiv 105 107
                               Store 87(f16) 108
              112:     35(ptr) AccessChain 42(f16v) 34
-             113:   28(float) Load 112
-             114:   28(float) Load 87(f16)
+             113:28(float16_t) Load 112
+             114:28(float16_t) Load 87(f16)
              115:   109(bool) FOrdNotEqual 113 114
                               Store 111(b) 115
              116:     35(ptr) AccessChain 42(f16v) 90
-             117:   28(float) Load 116
-             118:   28(float) Load 87(f16)
+             117:28(float16_t) Load 116
+             118:28(float16_t) Load 87(f16)
              119:   109(bool) FOrdEqual 117 118
                               Store 111(b) 119
              120:     35(ptr) AccessChain 42(f16v) 34
-             121:   28(float) Load 120
-             122:   28(float) Load 87(f16)
+             121:28(float16_t) Load 120
+             122:28(float16_t) Load 87(f16)
              123:   109(bool) FOrdGreaterThan 121 122
                               Store 111(b) 123
              124:     35(ptr) AccessChain 42(f16v) 90
-             125:   28(float) Load 124
-             126:   28(float) Load 87(f16)
+             125:28(float16_t) Load 124
+             126:28(float16_t) Load 87(f16)
              127:   109(bool) FOrdLessThan 125 126
                               Store 111(b) 127
              128:     35(ptr) AccessChain 42(f16v) 34
-             129:   28(float) Load 128
-             130:   28(float) Load 87(f16)
+             129:28(float16_t) Load 128
+             130:28(float16_t) Load 87(f16)
              131:   109(bool) FOrdGreaterThanEqual 129 130
                               Store 111(b) 131
              132:     35(ptr) AccessChain 42(f16v) 90
-             133:   28(float) Load 132
-             134:   28(float) Load 87(f16)
+             133:28(float16_t) Load 132
+             134:28(float16_t) Load 87(f16)
              135:   109(bool) FOrdLessThanEqual 133 134
                               Store 111(b) 135
-             136:   29(fvec2) Load 42(f16v)
-             137:   28(float) Load 87(f16)
-             138:   29(fvec2) VectorTimesScalar 136 137
+             136: 29(f16vec2) Load 42(f16v)
+             137:28(float16_t) Load 87(f16)
+             138: 29(f16vec2) VectorTimesScalar 136 137
                               Store 42(f16v) 138
              139:          62 Load 64(f16m)
-             140:   28(float) Load 87(f16)
+             140:28(float16_t) Load 87(f16)
              141:          62 MatrixTimesScalar 139 140
                               Store 64(f16m) 141
              142:          62 Load 64(f16m)
-             143:   29(fvec2) Load 42(f16v)
-             144:   29(fvec2) MatrixTimesVector 142 143
+             143: 29(f16vec2) Load 42(f16v)
+             144: 29(f16vec2) MatrixTimesVector 142 143
                               Store 42(f16v) 144
-             145:   29(fvec2) Load 42(f16v)
+             145: 29(f16vec2) Load 42(f16v)
              146:          62 Load 64(f16m)
-             147:   29(fvec2) VectorTimesMatrix 145 146
+             147: 29(f16vec2) VectorTimesMatrix 145 146
                               Store 42(f16v) 147
              148:          62 Load 64(f16m)
              149:          62 Load 64(f16m)
@@ -393,49 +393,49 @@
        201(i64v):    200(ptr) Variable Function
        209(u64v):    208(ptr) Variable Function
              157:  154(bvec3) Load 156(bv)
-             161:  151(fvec3) Select 157 160 159
+             161:151(f16vec3) Select 157 160 159
                               Store 153(f16v) 161
-             162:  151(fvec3) Load 153(f16v)
+             162:151(f16vec3) Load 153(f16v)
              163:  154(bvec3) FOrdNotEqual 162 159
                               Store 156(bv) 163
              168:  165(fvec3) Load 167(fv)
-             169:  151(fvec3) FConvert 168
+             169:151(f16vec3) FConvert 168
                               Store 153(f16v) 169
-             170:  151(fvec3) Load 153(f16v)
+             170:151(f16vec3) Load 153(f16v)
              171:  165(fvec3) FConvert 170
                               Store 167(fv) 171
-             176:  173(fvec3) Load 175(dv)
-             177:  151(fvec3) FConvert 176
+             176:173(f64vec3) Load 175(dv)
+             177:151(f16vec3) FConvert 176
                               Store 153(f16v) 177
-             178:  173(fvec3) Load 175(dv)
-             179:  172(float) CompositeExtract 178 0
-             180:  172(float) CompositeExtract 178 1
-             181:  172(float) CompositeExtract 178 2
-             182:  173(fvec3) CompositeConstruct 179 180 181
+             178:173(f64vec3) Load 175(dv)
+             179:172(float64_t) CompositeExtract 178 0
+             180:172(float64_t) CompositeExtract 178 1
+             181:172(float64_t) CompositeExtract 178 2
+             182:173(f64vec3) CompositeConstruct 179 180 181
                               Store 175(dv) 182
              187:  184(ivec3) Load 186(iv)
-             188:  151(fvec3) ConvertSToF 187
+             188:151(f16vec3) ConvertSToF 187
                               Store 153(f16v) 188
-             189:  151(fvec3) Load 153(f16v)
+             189:151(f16vec3) Load 153(f16v)
              190:  184(ivec3) ConvertFToS 189
                               Store 186(iv) 190
              194:  191(ivec3) Load 193(uv)
-             195:  151(fvec3) ConvertUToF 194
+             195:151(f16vec3) ConvertUToF 194
                               Store 153(f16v) 195
-             196:  151(fvec3) Load 153(f16v)
+             196:151(f16vec3) Load 153(f16v)
              197:  191(ivec3) ConvertFToU 196
                               Store 193(uv) 197
-             202:  199(ivec3) Load 201(i64v)
-             203:  151(fvec3) ConvertSToF 202
+             202:199(i64vec3) Load 201(i64v)
+             203:151(f16vec3) ConvertSToF 202
                               Store 153(f16v) 203
-             204:  151(fvec3) Load 153(f16v)
-             205:  199(ivec3) ConvertFToS 204
+             204:151(f16vec3) Load 153(f16v)
+             205:199(i64vec3) ConvertFToS 204
                               Store 201(i64v) 205
-             210:  207(ivec3) Load 209(u64v)
-             211:  151(fvec3) ConvertUToF 210
+             210:207(i64vec3) Load 209(u64v)
+             211:151(f16vec3) ConvertUToF 210
                               Store 153(f16v) 211
-             212:  151(fvec3) Load 153(f16v)
-             213:  207(ivec3) ConvertFToU 212
+             212:151(f16vec3) Load 153(f16v)
+             213:207(i64vec3) ConvertFToU 212
                               Store 209(u64v) 213
                               Return
                               FunctionEnd
@@ -443,51 +443,51 @@
               13:             Label
       216(f16v2):    215(ptr) Variable Function
       217(f16v1):    215(ptr) Variable Function
-             218:  214(fvec4) Load 217(f16v1)
-             219:  214(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 218
+             218:214(f16vec4) Load 217(f16v1)
+             219:214(f16vec4) ExtInst 1(GLSL.std.450) 11(Radians) 218
                               Store 216(f16v2) 219
-             220:  214(fvec4) Load 217(f16v1)
-             221:  214(fvec4) ExtInst 1(GLSL.std.450) 12(Degrees) 220
+             220:214(f16vec4) Load 217(f16v1)
+             221:214(f16vec4) ExtInst 1(GLSL.std.450) 12(Degrees) 220
                               Store 216(f16v2) 221
-             222:  214(fvec4) Load 217(f16v1)
-             223:  214(fvec4) ExtInst 1(GLSL.std.450) 13(Sin) 222
+             222:214(f16vec4) Load 217(f16v1)
+             223:214(f16vec4) ExtInst 1(GLSL.std.450) 13(Sin) 222
                               Store 216(f16v2) 223
-             224:  214(fvec4) Load 217(f16v1)
-             225:  214(fvec4) ExtInst 1(GLSL.std.450) 14(Cos) 224
+             224:214(f16vec4) Load 217(f16v1)
+             225:214(f16vec4) ExtInst 1(GLSL.std.450) 14(Cos) 224
                               Store 216(f16v2) 225
-             226:  214(fvec4) Load 217(f16v1)
-             227:  214(fvec4) ExtInst 1(GLSL.std.450) 15(Tan) 226
+             226:214(f16vec4) Load 217(f16v1)
+             227:214(f16vec4) ExtInst 1(GLSL.std.450) 15(Tan) 226
                               Store 216(f16v2) 227
-             228:  214(fvec4) Load 217(f16v1)
-             229:  214(fvec4) ExtInst 1(GLSL.std.450) 16(Asin) 228
+             228:214(f16vec4) Load 217(f16v1)
+             229:214(f16vec4) ExtInst 1(GLSL.std.450) 16(Asin) 228
                               Store 216(f16v2) 229
-             230:  214(fvec4) Load 217(f16v1)
-             231:  214(fvec4) ExtInst 1(GLSL.std.450) 17(Acos) 230
+             230:214(f16vec4) Load 217(f16v1)
+             231:214(f16vec4) ExtInst 1(GLSL.std.450) 17(Acos) 230
                               Store 216(f16v2) 231
-             232:  214(fvec4) Load 217(f16v1)
-             233:  214(fvec4) Load 216(f16v2)
-             234:  214(fvec4) ExtInst 1(GLSL.std.450) 25(Atan2) 232 233
+             232:214(f16vec4) Load 217(f16v1)
+             233:214(f16vec4) Load 216(f16v2)
+             234:214(f16vec4) ExtInst 1(GLSL.std.450) 25(Atan2) 232 233
                               Store 216(f16v2) 234
-             235:  214(fvec4) Load 217(f16v1)
-             236:  214(fvec4) ExtInst 1(GLSL.std.450) 18(Atan) 235
+             235:214(f16vec4) Load 217(f16v1)
+             236:214(f16vec4) ExtInst 1(GLSL.std.450) 18(Atan) 235
                               Store 216(f16v2) 236
-             237:  214(fvec4) Load 217(f16v1)
-             238:  214(fvec4) ExtInst 1(GLSL.std.450) 19(Sinh) 237
+             237:214(f16vec4) Load 217(f16v1)
+             238:214(f16vec4) ExtInst 1(GLSL.std.450) 19(Sinh) 237
                               Store 216(f16v2) 238
-             239:  214(fvec4) Load 217(f16v1)
-             240:  214(fvec4) ExtInst 1(GLSL.std.450) 20(Cosh) 239
+             239:214(f16vec4) Load 217(f16v1)
+             240:214(f16vec4) ExtInst 1(GLSL.std.450) 20(Cosh) 239
                               Store 216(f16v2) 240
-             241:  214(fvec4) Load 217(f16v1)
-             242:  214(fvec4) ExtInst 1(GLSL.std.450) 21(Tanh) 241
+             241:214(f16vec4) Load 217(f16v1)
+             242:214(f16vec4) ExtInst 1(GLSL.std.450) 21(Tanh) 241
                               Store 216(f16v2) 242
-             243:  214(fvec4) Load 217(f16v1)
-             244:  214(fvec4) ExtInst 1(GLSL.std.450) 22(Asinh) 243
+             243:214(f16vec4) Load 217(f16v1)
+             244:214(f16vec4) ExtInst 1(GLSL.std.450) 22(Asinh) 243
                               Store 216(f16v2) 244
-             245:  214(fvec4) Load 217(f16v1)
-             246:  214(fvec4) ExtInst 1(GLSL.std.450) 23(Acosh) 245
+             245:214(f16vec4) Load 217(f16v1)
+             246:214(f16vec4) ExtInst 1(GLSL.std.450) 23(Acosh) 245
                               Store 216(f16v2) 246
-             247:  214(fvec4) Load 217(f16v1)
-             248:  214(fvec4) ExtInst 1(GLSL.std.450) 24(Atanh) 247
+             247:214(f16vec4) Load 217(f16v1)
+             248:214(f16vec4) ExtInst 1(GLSL.std.450) 24(Atanh) 247
                               Store 216(f16v2) 248
                               Return
                               FunctionEnd
@@ -495,27 +495,27 @@
               15:             Label
       249(f16v2):     30(ptr) Variable Function
       250(f16v1):     30(ptr) Variable Function
-             251:   29(fvec2) Load 250(f16v1)
-             252:   29(fvec2) Load 249(f16v2)
-             253:   29(fvec2) ExtInst 1(GLSL.std.450) 26(Pow) 251 252
+             251: 29(f16vec2) Load 250(f16v1)
+             252: 29(f16vec2) Load 249(f16v2)
+             253: 29(f16vec2) ExtInst 1(GLSL.std.450) 26(Pow) 251 252
                               Store 249(f16v2) 253
-             254:   29(fvec2) Load 250(f16v1)
-             255:   29(fvec2) ExtInst 1(GLSL.std.450) 27(Exp) 254
+             254: 29(f16vec2) Load 250(f16v1)
+             255: 29(f16vec2) ExtInst 1(GLSL.std.450) 27(Exp) 254
                               Store 249(f16v2) 255
-             256:   29(fvec2) Load 250(f16v1)
-             257:   29(fvec2) ExtInst 1(GLSL.std.450) 28(Log) 256
+             256: 29(f16vec2) Load 250(f16v1)
+             257: 29(f16vec2) ExtInst 1(GLSL.std.450) 28(Log) 256
                               Store 249(f16v2) 257
-             258:   29(fvec2) Load 250(f16v1)
-             259:   29(fvec2) ExtInst 1(GLSL.std.450) 29(Exp2) 258
+             258: 29(f16vec2) Load 250(f16v1)
+             259: 29(f16vec2) ExtInst 1(GLSL.std.450) 29(Exp2) 258
                               Store 249(f16v2) 259
-             260:   29(fvec2) Load 250(f16v1)
-             261:   29(fvec2) ExtInst 1(GLSL.std.450) 30(Log2) 260
+             260: 29(f16vec2) Load 250(f16v1)
+             261: 29(f16vec2) ExtInst 1(GLSL.std.450) 30(Log2) 260
                               Store 249(f16v2) 261
-             262:   29(fvec2) Load 250(f16v1)
-             263:   29(fvec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 262
+             262: 29(f16vec2) Load 250(f16v1)
+             263: 29(f16vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 262
                               Store 249(f16v2) 263
-             264:   29(fvec2) Load 250(f16v1)
-             265:   29(fvec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 264
+             264: 29(f16vec2) Load 250(f16v1)
+             265: 29(f16vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 264
                               Store 249(f16v2) 265
                               Return
                               FunctionEnd
@@ -528,132 +528,132 @@
          332(bv):    155(ptr) Variable Function
           353(b):    110(ptr) Variable Function
          363(iv):    185(ptr) Variable Function
-             268:  151(fvec3) Load 267(f16v1)
-             269:  151(fvec3) ExtInst 1(GLSL.std.450) 4(FAbs) 268
+             268:151(f16vec3) Load 267(f16v1)
+             269:151(f16vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 268
                               Store 266(f16v2) 269
-             270:  151(fvec3) Load 267(f16v1)
-             271:  151(fvec3) ExtInst 1(GLSL.std.450) 6(FSign) 270
+             270:151(f16vec3) Load 267(f16v1)
+             271:151(f16vec3) ExtInst 1(GLSL.std.450) 6(FSign) 270
                               Store 266(f16v2) 271
-             272:  151(fvec3) Load 267(f16v1)
-             273:  151(fvec3) ExtInst 1(GLSL.std.450) 8(Floor) 272
+             272:151(f16vec3) Load 267(f16v1)
+             273:151(f16vec3) ExtInst 1(GLSL.std.450) 8(Floor) 272
                               Store 266(f16v2) 273
-             274:  151(fvec3) Load 267(f16v1)
-             275:  151(fvec3) ExtInst 1(GLSL.std.450) 3(Trunc) 274
+             274:151(f16vec3) Load 267(f16v1)
+             275:151(f16vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 274
                               Store 266(f16v2) 275
-             276:  151(fvec3) Load 267(f16v1)
-             277:  151(fvec3) ExtInst 1(GLSL.std.450) 1(Round) 276
+             276:151(f16vec3) Load 267(f16v1)
+             277:151(f16vec3) ExtInst 1(GLSL.std.450) 1(Round) 276
                               Store 266(f16v2) 277
-             278:  151(fvec3) Load 267(f16v1)
-             279:  151(fvec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 278
+             278:151(f16vec3) Load 267(f16v1)
+             279:151(f16vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 278
                               Store 266(f16v2) 279
-             280:  151(fvec3) Load 267(f16v1)
-             281:  151(fvec3) ExtInst 1(GLSL.std.450) 9(Ceil) 280
+             280:151(f16vec3) Load 267(f16v1)
+             281:151(f16vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 280
                               Store 266(f16v2) 281
-             282:  151(fvec3) Load 267(f16v1)
-             283:  151(fvec3) ExtInst 1(GLSL.std.450) 10(Fract) 282
+             282:151(f16vec3) Load 267(f16v1)
+             283:151(f16vec3) ExtInst 1(GLSL.std.450) 10(Fract) 282
                               Store 266(f16v2) 283
-             284:  151(fvec3) Load 267(f16v1)
-             285:  151(fvec3) Load 266(f16v2)
-             286:  151(fvec3) FMod 284 285
+             284:151(f16vec3) Load 267(f16v1)
+             285:151(f16vec3) Load 266(f16v2)
+             286:151(f16vec3) FMod 284 285
                               Store 266(f16v2) 286
-             287:  151(fvec3) Load 267(f16v1)
-             289:   28(float) Load 288(f16)
-             290:  151(fvec3) CompositeConstruct 289 289 289
-             291:  151(fvec3) FMod 287 290
+             287:151(f16vec3) Load 267(f16v1)
+             289:28(float16_t) Load 288(f16)
+             290:151(f16vec3) CompositeConstruct 289 289 289
+             291:151(f16vec3) FMod 287 290
                               Store 266(f16v2) 291
-             293:  151(fvec3) Load 267(f16v1)
-             294:  151(fvec3) ExtInst 1(GLSL.std.450) 35(Modf) 293 266(f16v2)
+             293:151(f16vec3) Load 267(f16v1)
+             294:151(f16vec3) ExtInst 1(GLSL.std.450) 35(Modf) 293 266(f16v2)
                               Store 292(f16v3) 294
-             295:  151(fvec3) Load 267(f16v1)
-             296:  151(fvec3) Load 266(f16v2)
-             297:  151(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 295 296
+             295:151(f16vec3) Load 267(f16v1)
+             296:151(f16vec3) Load 266(f16v2)
+             297:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 295 296
                               Store 292(f16v3) 297
-             298:  151(fvec3) Load 267(f16v1)
-             299:   28(float) Load 288(f16)
-             300:  151(fvec3) CompositeConstruct 299 299 299
-             301:  151(fvec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 300
+             298:151(f16vec3) Load 267(f16v1)
+             299:28(float16_t) Load 288(f16)
+             300:151(f16vec3) CompositeConstruct 299 299 299
+             301:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 300
                               Store 292(f16v3) 301
-             302:  151(fvec3) Load 267(f16v1)
-             303:  151(fvec3) Load 266(f16v2)
-             304:  151(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 302 303
+             302:151(f16vec3) Load 267(f16v1)
+             303:151(f16vec3) Load 266(f16v2)
+             304:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 302 303
                               Store 292(f16v3) 304
-             305:  151(fvec3) Load 267(f16v1)
-             306:   28(float) Load 288(f16)
-             307:  151(fvec3) CompositeConstruct 306 306 306
-             308:  151(fvec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 307
+             305:151(f16vec3) Load 267(f16v1)
+             306:28(float16_t) Load 288(f16)
+             307:151(f16vec3) CompositeConstruct 306 306 306
+             308:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 307
                               Store 292(f16v3) 308
-             309:  151(fvec3) Load 267(f16v1)
-             310:   28(float) Load 288(f16)
+             309:151(f16vec3) Load 267(f16v1)
+             310:28(float16_t) Load 288(f16)
              311:     35(ptr) AccessChain 266(f16v2) 34
-             312:   28(float) Load 311
-             313:  151(fvec3) CompositeConstruct 310 310 310
-             314:  151(fvec3) CompositeConstruct 312 312 312
-             315:  151(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 309 313 314
+             312:28(float16_t) Load 311
+             313:151(f16vec3) CompositeConstruct 310 310 310
+             314:151(f16vec3) CompositeConstruct 312 312 312
+             315:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 309 313 314
                               Store 292(f16v3) 315
-             316:  151(fvec3) Load 267(f16v1)
-             317:  151(fvec3) Load 266(f16v2)
-             318:   28(float) Load 288(f16)
-             319:  151(fvec3) CompositeConstruct 318 318 318
-             320:  151(fvec3) ExtInst 1(GLSL.std.450) 43(FClamp) 316 317 319
+             316:151(f16vec3) Load 267(f16v1)
+             317:151(f16vec3) Load 266(f16v2)
+             318:28(float16_t) Load 288(f16)
+             319:151(f16vec3) CompositeConstruct 318 318 318
+             320:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 316 317 319
                               Store 292(f16v3) 320
-             321:  151(fvec3) Load 267(f16v1)
-             322:  151(fvec3) Load 266(f16v2)
-             323:   28(float) Load 288(f16)
-             324:  151(fvec3) CompositeConstruct 323 323 323
-             325:  151(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 321 322 324
+             321:151(f16vec3) Load 267(f16v1)
+             322:151(f16vec3) Load 266(f16v2)
+             323:28(float16_t) Load 288(f16)
+             324:151(f16vec3) CompositeConstruct 323 323 323
+             325:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 321 322 324
                               Store 292(f16v3) 325
-             326:  151(fvec3) Load 267(f16v1)
-             327:  151(fvec3) Load 266(f16v2)
-             328:  151(fvec3) Load 292(f16v3)
-             329:  151(fvec3) ExtInst 1(GLSL.std.450) 46(FMix) 326 327 328
+             326:151(f16vec3) Load 267(f16v1)
+             327:151(f16vec3) Load 266(f16v2)
+             328:151(f16vec3) Load 292(f16v3)
+             329:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 326 327 328
                               Store 292(f16v3) 329
-             330:  151(fvec3) Load 267(f16v1)
-             331:  151(fvec3) Load 266(f16v2)
+             330:151(f16vec3) Load 267(f16v1)
+             331:151(f16vec3) Load 266(f16v2)
              333:  154(bvec3) Load 332(bv)
-             334:  151(fvec3) Select 333 331 330
+             334:151(f16vec3) Select 333 331 330
                               Store 292(f16v3) 334
-             335:  151(fvec3) Load 267(f16v1)
-             336:  151(fvec3) Load 266(f16v2)
-             337:  151(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 335 336
+             335:151(f16vec3) Load 267(f16v1)
+             336:151(f16vec3) Load 266(f16v2)
+             337:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 335 336
                               Store 292(f16v3) 337
-             338:   28(float) Load 288(f16)
-             339:  151(fvec3) Load 292(f16v3)
-             340:  151(fvec3) CompositeConstruct 338 338 338
-             341:  151(fvec3) ExtInst 1(GLSL.std.450) 48(Step) 340 339
+             338:28(float16_t) Load 288(f16)
+             339:151(f16vec3) Load 292(f16v3)
+             340:151(f16vec3) CompositeConstruct 338 338 338
+             341:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 340 339
                               Store 292(f16v3) 341
-             342:  151(fvec3) Load 267(f16v1)
-             343:  151(fvec3) Load 266(f16v2)
-             344:  151(fvec3) Load 292(f16v3)
-             345:  151(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 342 343 344
+             342:151(f16vec3) Load 267(f16v1)
+             343:151(f16vec3) Load 266(f16v2)
+             344:151(f16vec3) Load 292(f16v3)
+             345:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 342 343 344
                               Store 292(f16v3) 345
-             346:   28(float) Load 288(f16)
+             346:28(float16_t) Load 288(f16)
              347:     35(ptr) AccessChain 267(f16v1) 34
-             348:   28(float) Load 347
-             349:  151(fvec3) Load 266(f16v2)
-             350:  151(fvec3) CompositeConstruct 346 346 346
-             351:  151(fvec3) CompositeConstruct 348 348 348
-             352:  151(fvec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 350 351 349
+             348:28(float16_t) Load 347
+             349:151(f16vec3) Load 266(f16v2)
+             350:151(f16vec3) CompositeConstruct 346 346 346
+             351:151(f16vec3) CompositeConstruct 348 348 348
+             352:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 350 351 349
                               Store 292(f16v3) 352
-             354:   28(float) Load 288(f16)
+             354:28(float16_t) Load 288(f16)
              355:   109(bool) IsNan 354
                               Store 353(b) 355
-             356:  151(fvec3) Load 267(f16v1)
+             356:151(f16vec3) Load 267(f16v1)
              357:  154(bvec3) IsInf 356
                               Store 332(bv) 357
-             358:  151(fvec3) Load 267(f16v1)
-             359:  151(fvec3) Load 266(f16v2)
-             360:  151(fvec3) Load 292(f16v3)
-             361:  151(fvec3) ExtInst 1(GLSL.std.450) 50(Fma) 358 359 360
+             358:151(f16vec3) Load 267(f16v1)
+             359:151(f16vec3) Load 266(f16v2)
+             360:151(f16vec3) Load 292(f16v3)
+             361:151(f16vec3) ExtInst 1(GLSL.std.450) 50(Fma) 358 359 360
                               Store 292(f16v3) 361
-             362:  151(fvec3) Load 267(f16v1)
+             362:151(f16vec3) Load 267(f16v1)
              365:364(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 362
              366:  184(ivec3) CompositeExtract 365 1
                               Store 363(iv) 366
-             367:  151(fvec3) CompositeExtract 365 0
+             367:151(f16vec3) CompositeExtract 365 0
                               Store 266(f16v2) 367
-             368:  151(fvec3) Load 267(f16v1)
+             368:151(f16vec3) Load 267(f16v1)
              369:  184(ivec3) Load 363(iv)
-             370:  151(fvec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 368 369
+             370:151(f16vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 368 369
                               Store 266(f16v2) 370
                               Return
                               FunctionEnd
@@ -661,11 +661,11 @@
               19:             Label
           372(u):    371(ptr) Variable Function
        373(f16v):     30(ptr) Variable Function
-             374:   29(fvec2) Load 373(f16v)
+             374: 29(f16vec2) Load 373(f16v)
              375:     33(int) Bitcast 374
                               Store 372(u) 375
              376:     33(int) Load 372(u)
-             377:   29(fvec2) Bitcast 376
+             377: 29(f16vec2) Bitcast 376
                               Store 373(f16v) 377
                               Return
                               FunctionEnd
@@ -675,37 +675,37 @@
       379(f16v1):    152(ptr) Variable Function
       383(f16v2):    152(ptr) Variable Function
       389(f16v3):    152(ptr) Variable Function
-             380:  151(fvec3) Load 379(f16v1)
-             381:   28(float) ExtInst 1(GLSL.std.450) 66(Length) 380
+             380:151(f16vec3) Load 379(f16v1)
+             381:28(float16_t) ExtInst 1(GLSL.std.450) 66(Length) 380
                               Store 378(f16) 381
-             382:  151(fvec3) Load 379(f16v1)
-             384:  151(fvec3) Load 383(f16v2)
-             385:   28(float) ExtInst 1(GLSL.std.450) 67(Distance) 382 384
+             382:151(f16vec3) Load 379(f16v1)
+             384:151(f16vec3) Load 383(f16v2)
+             385:28(float16_t) ExtInst 1(GLSL.std.450) 67(Distance) 382 384
                               Store 378(f16) 385
-             386:  151(fvec3) Load 379(f16v1)
-             387:  151(fvec3) Load 383(f16v2)
-             388:   28(float) Dot 386 387
+             386:151(f16vec3) Load 379(f16v1)
+             387:151(f16vec3) Load 383(f16v2)
+             388:28(float16_t) Dot 386 387
                               Store 378(f16) 388
-             390:  151(fvec3) Load 379(f16v1)
-             391:  151(fvec3) Load 383(f16v2)
-             392:  151(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 390 391
+             390:151(f16vec3) Load 379(f16v1)
+             391:151(f16vec3) Load 383(f16v2)
+             392:151(f16vec3) ExtInst 1(GLSL.std.450) 68(Cross) 390 391
                               Store 389(f16v3) 392
-             393:  151(fvec3) Load 379(f16v1)
-             394:  151(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 393
+             393:151(f16vec3) Load 379(f16v1)
+             394:151(f16vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 393
                               Store 383(f16v2) 394
-             395:  151(fvec3) Load 379(f16v1)
-             396:  151(fvec3) Load 383(f16v2)
-             397:  151(fvec3) Load 389(f16v3)
-             398:  151(fvec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 395 396 397
+             395:151(f16vec3) Load 379(f16v1)
+             396:151(f16vec3) Load 383(f16v2)
+             397:151(f16vec3) Load 389(f16v3)
+             398:151(f16vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 395 396 397
                               Store 389(f16v3) 398
-             399:  151(fvec3) Load 379(f16v1)
-             400:  151(fvec3) Load 383(f16v2)
-             401:  151(fvec3) ExtInst 1(GLSL.std.450) 71(Reflect) 399 400
+             399:151(f16vec3) Load 379(f16v1)
+             400:151(f16vec3) Load 383(f16v2)
+             401:151(f16vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 399 400
                               Store 389(f16v3) 401
-             402:  151(fvec3) Load 379(f16v1)
-             403:  151(fvec3) Load 383(f16v2)
-             404:   28(float) Load 378(f16)
-             405:  151(fvec3) ExtInst 1(GLSL.std.450) 72(Refract) 402 403 404
+             402:151(f16vec3) Load 379(f16v1)
+             403:151(f16vec3) Load 383(f16v2)
+             404:28(float16_t) Load 378(f16)
+             405:151(f16vec3) ExtInst 1(GLSL.std.450) 72(Refract) 402 403 404
                               Store 389(f16v3) 405
                               Return
                               FunctionEnd
@@ -723,23 +723,23 @@
       439(f16m7):    437(ptr) Variable Function
              410:         406 Load 409(f16m1)
              412:         406 Load 411(f16m2)
-             413:  151(fvec3) CompositeExtract 410 0
-             414:  151(fvec3) CompositeExtract 412 0
-             415:  151(fvec3) FMul 413 414
-             416:  151(fvec3) CompositeExtract 410 1
-             417:  151(fvec3) CompositeExtract 412 1
-             418:  151(fvec3) FMul 416 417
+             413:151(f16vec3) CompositeExtract 410 0
+             414:151(f16vec3) CompositeExtract 412 0
+             415:151(f16vec3) FMul 413 414
+             416:151(f16vec3) CompositeExtract 410 1
+             417:151(f16vec3) CompositeExtract 412 1
+             418:151(f16vec3) FMul 416 417
              419:         406 CompositeConstruct 415 418
                               Store 408(f16m3) 419
-             421:  151(fvec3) Load 420(f16v1)
-             423:   29(fvec2) Load 422(f16v2)
+             421:151(f16vec3) Load 420(f16v1)
+             423: 29(f16vec2) Load 422(f16v2)
              424:         406 OuterProduct 421 423
                               Store 409(f16m1) 424
              428:         406 Load 409(f16m1)
              429:         425 Transpose 428
                               Store 427(f16m4) 429
              434:         431 Load 433(f16m5)
-             435:   28(float) ExtInst 1(GLSL.std.450) 33(Determinant) 434
+             435:28(float16_t) ExtInst 1(GLSL.std.450) 33(Determinant) 434
                               Store 430(f16) 435
              440:         436 Load 439(f16m7)
              441:         436 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 440
@@ -751,28 +751,28 @@
          442(bv):    155(ptr) Variable Function
       443(f16v1):    152(ptr) Variable Function
       445(f16v2):    152(ptr) Variable Function
-             444:  151(fvec3) Load 443(f16v1)
-             446:  151(fvec3) Load 445(f16v2)
+             444:151(f16vec3) Load 443(f16v1)
+             446:151(f16vec3) Load 445(f16v2)
              447:  154(bvec3) FOrdLessThan 444 446
                               Store 442(bv) 447
-             448:  151(fvec3) Load 443(f16v1)
-             449:  151(fvec3) Load 445(f16v2)
+             448:151(f16vec3) Load 443(f16v1)
+             449:151(f16vec3) Load 445(f16v2)
              450:  154(bvec3) FOrdLessThanEqual 448 449
                               Store 442(bv) 450
-             451:  151(fvec3) Load 443(f16v1)
-             452:  151(fvec3) Load 445(f16v2)
+             451:151(f16vec3) Load 443(f16v1)
+             452:151(f16vec3) Load 445(f16v2)
              453:  154(bvec3) FOrdGreaterThan 451 452
                               Store 442(bv) 453
-             454:  151(fvec3) Load 443(f16v1)
-             455:  151(fvec3) Load 445(f16v2)
+             454:151(f16vec3) Load 443(f16v1)
+             455:151(f16vec3) Load 445(f16v2)
              456:  154(bvec3) FOrdGreaterThanEqual 454 455
                               Store 442(bv) 456
-             457:  151(fvec3) Load 443(f16v1)
-             458:  151(fvec3) Load 445(f16v2)
+             457:151(f16vec3) Load 443(f16v1)
+             458:151(f16vec3) Load 445(f16v2)
              459:  154(bvec3) FOrdEqual 457 458
                               Store 442(bv) 459
-             460:  151(fvec3) Load 443(f16v1)
-             461:  151(fvec3) Load 445(f16v2)
+             460:151(f16vec3) Load 443(f16v1)
+             461:151(f16vec3) Load 445(f16v2)
              462:  154(bvec3) FOrdNotEqual 460 461
                               Store 442(bv) 462
                               Return
@@ -781,57 +781,57 @@
               27:             Label
        463(f16v):    152(ptr) Variable Function
              467:    466(ptr) AccessChain 465(if16v) 34
-             468:   28(float) Load 467
-             469:   28(float) DPdx 468
+             468:28(float16_t) Load 467
+             469:28(float16_t) DPdx 468
              470:     35(ptr) AccessChain 463(f16v) 34
                               Store 470 469
              471:    466(ptr) AccessChain 465(if16v) 90
-             472:   28(float) Load 471
-             473:   28(float) DPdy 472
+             472:28(float16_t) Load 471
+             473:28(float16_t) DPdy 472
              474:     35(ptr) AccessChain 463(f16v) 90
                               Store 474 473
-             475:  151(fvec3) Load 465(if16v)
-             476:   29(fvec2) VectorShuffle 475 475 0 1
-             477:   29(fvec2) DPdxFine 476
-             478:  151(fvec3) Load 463(f16v)
-             479:  151(fvec3) VectorShuffle 478 477 3 4 2
+             475:151(f16vec3) Load 465(if16v)
+             476: 29(f16vec2) VectorShuffle 475 475 0 1
+             477: 29(f16vec2) DPdxFine 476
+             478:151(f16vec3) Load 463(f16v)
+             479:151(f16vec3) VectorShuffle 478 477 3 4 2
                               Store 463(f16v) 479
-             480:  151(fvec3) Load 465(if16v)
-             481:   29(fvec2) VectorShuffle 480 480 0 1
-             482:   29(fvec2) DPdyFine 481
-             483:  151(fvec3) Load 463(f16v)
-             484:  151(fvec3) VectorShuffle 483 482 3 4 2
+             480:151(f16vec3) Load 465(if16v)
+             481: 29(f16vec2) VectorShuffle 480 480 0 1
+             482: 29(f16vec2) DPdyFine 481
+             483:151(f16vec3) Load 463(f16v)
+             484:151(f16vec3) VectorShuffle 483 482 3 4 2
                               Store 463(f16v) 484
-             485:  151(fvec3) Load 465(if16v)
-             486:  151(fvec3) DPdxCoarse 485
+             485:151(f16vec3) Load 465(if16v)
+             486:151(f16vec3) DPdxCoarse 485
                               Store 463(f16v) 486
-             487:  151(fvec3) Load 465(if16v)
-             488:  151(fvec3) DPdxCoarse 487
+             487:151(f16vec3) Load 465(if16v)
+             488:151(f16vec3) DPdxCoarse 487
                               Store 463(f16v) 488
              489:    466(ptr) AccessChain 465(if16v) 34
-             490:   28(float) Load 489
-             491:   28(float) Fwidth 490
+             490:28(float16_t) Load 489
+             491:28(float16_t) Fwidth 490
              492:     35(ptr) AccessChain 463(f16v) 34
                               Store 492 491
-             493:  151(fvec3) Load 465(if16v)
-             494:   29(fvec2) VectorShuffle 493 493 0 1
-             495:   29(fvec2) FwidthFine 494
-             496:  151(fvec3) Load 463(f16v)
-             497:  151(fvec3) VectorShuffle 496 495 3 4 2
+             493:151(f16vec3) Load 465(if16v)
+             494: 29(f16vec2) VectorShuffle 493 493 0 1
+             495: 29(f16vec2) FwidthFine 494
+             496:151(f16vec3) Load 463(f16v)
+             497:151(f16vec3) VectorShuffle 496 495 3 4 2
                               Store 463(f16v) 497
-             498:  151(fvec3) Load 465(if16v)
-             499:  151(fvec3) FwidthCoarse 498
+             498:151(f16vec3) Load 465(if16v)
+             499:151(f16vec3) FwidthCoarse 498
                               Store 463(f16v) 499
              500:    466(ptr) AccessChain 465(if16v) 34
-             501:   28(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 500
+             501:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 500
              502:     35(ptr) AccessChain 463(f16v) 34
                               Store 502 501
-             504:  151(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 503
-             505:   29(fvec2) VectorShuffle 504 504 0 1
-             506:  151(fvec3) Load 463(f16v)
-             507:  151(fvec3) VectorShuffle 506 505 3 4 2
+             504:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 503
+             505: 29(f16vec2) VectorShuffle 504 504 0 1
+             506:151(f16vec3) Load 463(f16v)
+             507:151(f16vec3) VectorShuffle 506 505 3 4 2
                               Store 463(f16v) 507
-             510:  151(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 509
+             510:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 509
                               Store 463(f16v) 510
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out
index 94125da..093af6b 100644
--- a/Test/baseResults/spv.float16Fetch.frag.out
+++ b/Test/baseResults/spv.float16Fetch.frag.out
@@ -321,8 +321,8 @@
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 16
-               7:             TypeVector 6(float) 4
-               8:             TypeFunction 7(fvec4)
+               7:             TypeVector 6(float16_t) 4
+               8:             TypeFunction 7(f16vec4)
               47:             TypeInt 32 1
               48:             TypeVector 47(int) 4
               49:             TypeFunction 48(ivec4)
@@ -330,92 +330,92 @@
               53:             TypeVector 52(float) 2
               54:             TypeFunction 53(fvec2)
               57:             TypeFunction 47(int)
-              64:             TypePointer Function 7(fvec4)
+              64:             TypePointer Function 7(f16vec4)
               65:             TypeFunction 2 64(ptr)
-             120:    6(float) Constant 0
-             121:    7(fvec4) ConstantComposite 120 120 120 120
-             122:             TypeImage 6(float) 1D sampled format:Unknown
+             120:6(float16_t) Constant 0
+             121:  7(f16vec4) ConstantComposite 120 120 120 120
+             122:             TypeImage 6(float16_t) 1D sampled format:Unknown
              123:             TypeSampledImage 122
              124:             TypePointer UniformConstant 123
         125(s1D):    124(ptr) Variable UniformConstant
              127:             TypePointer Input 52(float)
          128(c1):    127(ptr) Variable Input
-             134:             TypePointer Input 6(float)
+             134:             TypePointer Input 6(float16_t)
       135(f16c1):    134(ptr) Variable Input
     137(f16bias):    134(ptr) Variable Input
-             142:             TypeImage 6(float) 2D sampled format:Unknown
+             142:             TypeImage 6(float16_t) 2D sampled format:Unknown
              143:             TypeSampledImage 142
              144:             TypePointer UniformConstant 143
         145(s2D):    144(ptr) Variable UniformConstant
              147:             TypePointer Input 53(fvec2)
          148(c2):    147(ptr) Variable Input
-             154:             TypeVector 6(float) 2
-             155:             TypePointer Input 154(fvec2)
+             154:             TypeVector 6(float16_t) 2
+             155:             TypePointer Input 154(f16vec2)
       156(f16c2):    155(ptr) Variable Input
-             162:             TypeImage 6(float) 3D sampled format:Unknown
+             162:             TypeImage 6(float16_t) 3D sampled format:Unknown
              163:             TypeSampledImage 162
              164:             TypePointer UniformConstant 163
         165(s3D):    164(ptr) Variable UniformConstant
              167:             TypeVector 52(float) 3
              168:             TypePointer Input 167(fvec3)
          169(c3):    168(ptr) Variable Input
-             175:             TypeVector 6(float) 3
-             176:             TypePointer Input 175(fvec3)
+             175:             TypeVector 6(float16_t) 3
+             176:             TypePointer Input 175(f16vec3)
       177(f16c3):    176(ptr) Variable Input
-             183:             TypeImage 6(float) Cube sampled format:Unknown
+             183:             TypeImage 6(float16_t) Cube sampled format:Unknown
              184:             TypeSampledImage 183
              185:             TypePointer UniformConstant 184
       186(sCube):    185(ptr) Variable UniformConstant
-             198:             TypeImage 6(float) 1D depth sampled format:Unknown
+             198:             TypeImage 6(float16_t) 1D depth sampled format:Unknown
              199:             TypeSampledImage 198
              200:             TypePointer UniformConstant 199
   201(s1DShadow):    200(ptr) Variable UniformConstant
              206:             TypeInt 32 0
              207:    206(int) Constant 0
-             208:             TypePointer Function 6(float)
+             208:             TypePointer Function 6(float16_t)
     215(compare):    127(ptr) Variable Input
-             223:             TypeImage 6(float) 2D depth sampled format:Unknown
+             223:             TypeImage 6(float16_t) 2D depth sampled format:Unknown
              224:             TypeSampledImage 223
              225:             TypePointer UniformConstant 224
   226(s2DShadow):    225(ptr) Variable UniformConstant
-             244:             TypeImage 6(float) Cube depth sampled format:Unknown
+             244:             TypeImage 6(float16_t) Cube depth sampled format:Unknown
              245:             TypeSampledImage 244
              246:             TypePointer UniformConstant 245
 247(sCubeShadow):    246(ptr) Variable UniformConstant
              249:             TypeVector 52(float) 4
              250:             TypePointer Input 249(fvec4)
          251(c4):    250(ptr) Variable Input
-             268:             TypeImage 6(float) 1D array sampled format:Unknown
+             268:             TypeImage 6(float16_t) 1D array sampled format:Unknown
              269:             TypeSampledImage 268
              270:             TypePointer UniformConstant 269
    271(s1DArray):    270(ptr) Variable UniformConstant
-             283:             TypeImage 6(float) 2D array sampled format:Unknown
+             283:             TypeImage 6(float16_t) 2D array sampled format:Unknown
              284:             TypeSampledImage 283
              285:             TypePointer UniformConstant 284
    286(s2DArray):    285(ptr) Variable UniformConstant
-             298:             TypeImage 6(float) Cube array sampled format:Unknown
+             298:             TypeImage 6(float16_t) Cube array sampled format:Unknown
              299:             TypeSampledImage 298
              300:             TypePointer UniformConstant 299
  301(sCubeArray):    300(ptr) Variable UniformConstant
-             308:             TypePointer Input 7(fvec4)
+             308:             TypePointer Input 7(f16vec4)
       309(f16c4):    308(ptr) Variable Input
-             315:             TypeImage 6(float) 1D depth array sampled format:Unknown
+             315:             TypeImage 6(float16_t) 1D depth array sampled format:Unknown
              316:             TypeSampledImage 315
              317:             TypePointer UniformConstant 316
 318(s1DArrayShadow):    317(ptr) Variable UniformConstant
-             336:             TypeImage 6(float) 2D depth array sampled format:Unknown
+             336:             TypeImage 6(float16_t) 2D depth array sampled format:Unknown
              337:             TypeSampledImage 336
              338:             TypePointer UniformConstant 337
 339(s2DArrayShadow):    338(ptr) Variable UniformConstant
-             356:             TypeImage 6(float) Rect sampled format:Unknown
+             356:             TypeImage 6(float16_t) Rect sampled format:Unknown
              357:             TypeSampledImage 356
              358:             TypePointer UniformConstant 357
     359(s2DRect):    358(ptr) Variable UniformConstant
-             370:             TypeImage 6(float) Rect depth sampled format:Unknown
+             370:             TypeImage 6(float16_t) Rect depth sampled format:Unknown
              371:             TypeSampledImage 370
              372:             TypePointer UniformConstant 371
 373(s2DRectShadow):    372(ptr) Variable UniformConstant
-             390:             TypeImage 6(float) Cube depth array sampled format:Unknown
+             390:             TypeImage 6(float16_t) Cube depth array sampled format:Unknown
              391:             TypeSampledImage 390
              392:             TypePointer UniformConstant 391
 393(sCubeArrayShadow):    392(ptr) Variable UniformConstant
@@ -426,15 +426,15 @@
              722:  721(ivec2) ConstantComposite 709 709
              734:             TypeVector 47(int) 3
              735:  734(ivec3) ConstantComposite 709 709 709
-            1297:             TypeImage 6(float) Buffer sampled format:Unknown
+            1297:             TypeImage 6(float16_t) Buffer sampled format:Unknown
             1298:             TypeSampledImage 1297
             1299:             TypePointer UniformConstant 1298
    1300(sBuffer):   1299(ptr) Variable UniformConstant
-            1308:             TypeImage 6(float) 2D multi-sampled sampled format:Unknown
+            1308:             TypeImage 6(float16_t) 2D multi-sampled sampled format:Unknown
             1309:             TypeSampledImage 1308
             1310:             TypePointer UniformConstant 1309
      1311(s2DMS):   1310(ptr) Variable UniformConstant
-            1319:             TypeImage 6(float) 2D array multi-sampled sampled format:Unknown
+            1319:             TypeImage 6(float16_t) 2D array multi-sampled sampled format:Unknown
             1320:             TypeSampledImage 1319
             1321:             TypePointer UniformConstant 1320
 1322(s2DMSArray):   1321(ptr) Variable UniformConstant
@@ -455,41 +455,41 @@
             2732:             TypePointer Function 53(fvec2)
             2734:   52(float) Constant 0
             2735:   53(fvec2) ConstantComposite 2734 2734
-            2953:             TypeImage 6(float) 1D nonsampled format:Rgba16f
+            2953:             TypeImage 6(float16_t) 1D nonsampled format:Rgba16f
             2954:             TypePointer UniformConstant 2953
        2955(i1D):   2954(ptr) Variable UniformConstant
-            2962:             TypeImage 6(float) 2D nonsampled format:Rgba16f
+            2962:             TypeImage 6(float16_t) 2D nonsampled format:Rgba16f
             2963:             TypePointer UniformConstant 2962
        2964(i2D):   2963(ptr) Variable UniformConstant
-            2971:             TypeImage 6(float) 3D nonsampled format:Rgba16f
+            2971:             TypeImage 6(float16_t) 3D nonsampled format:Rgba16f
             2972:             TypePointer UniformConstant 2971
        2973(i3D):   2972(ptr) Variable UniformConstant
-            2980:             TypeImage 6(float) Rect nonsampled format:Rgba16f
+            2980:             TypeImage 6(float16_t) Rect nonsampled format:Rgba16f
             2981:             TypePointer UniformConstant 2980
    2982(i2DRect):   2981(ptr) Variable UniformConstant
-            2989:             TypeImage 6(float) Cube nonsampled format:Rgba16f
+            2989:             TypeImage 6(float16_t) Cube nonsampled format:Rgba16f
             2990:             TypePointer UniformConstant 2989
      2991(iCube):   2990(ptr) Variable UniformConstant
-            2998:             TypeImage 6(float) Buffer nonsampled format:Rgba16f
+            2998:             TypeImage 6(float16_t) Buffer nonsampled format:Rgba16f
             2999:             TypePointer UniformConstant 2998
    3000(iBuffer):   2999(ptr) Variable UniformConstant
-            3007:             TypeImage 6(float) 1D array nonsampled format:Rgba16f
+            3007:             TypeImage 6(float16_t) 1D array nonsampled format:Rgba16f
             3008:             TypePointer UniformConstant 3007
   3009(i1DArray):   3008(ptr) Variable UniformConstant
-            3016:             TypeImage 6(float) 2D array nonsampled format:Rgba16f
+            3016:             TypeImage 6(float16_t) 2D array nonsampled format:Rgba16f
             3017:             TypePointer UniformConstant 3016
   3018(i2DArray):   3017(ptr) Variable UniformConstant
-            3025:             TypeImage 6(float) Cube array nonsampled format:Rgba16f
+            3025:             TypeImage 6(float16_t) Cube array nonsampled format:Rgba16f
             3026:             TypePointer UniformConstant 3025
 3027(iCubeArray):   3026(ptr) Variable UniformConstant
-            3034:             TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba16f
+            3034:             TypeImage 6(float16_t) 2D multi-sampled nonsampled format:Rgba16f
             3035:             TypePointer UniformConstant 3034
      3036(i2DMS):   3035(ptr) Variable UniformConstant
-            3043:             TypeImage 6(float) 2D array multi-sampled nonsampled format:Rgba16f
+            3043:             TypeImage 6(float16_t) 2D array multi-sampled nonsampled format:Rgba16f
             3044:             TypePointer UniformConstant 3043
 3045(i2DMSArray):   3044(ptr) Variable UniformConstant
-   3102(ResType):             TypeStruct 47(int) 7(fvec4)
-   3138(ResType):             TypeStruct 47(int) 6(float)
+   3102(ResType):             TypeStruct 47(int) 7(f16vec4)
+   3138(ResType):             TypeStruct 47(int) 6(float16_t)
   4257(lodClamp):    127(ptr) Variable Input
 4264(f16lodClamp):    134(ptr) Variable Input
             5453:             TypePointer UniformConstant 122
@@ -512,11 +512,11 @@
 5623(tCubeArray):   5622(ptr) Variable UniformConstant
             5680:             TypePointer UniformConstant 356
    5681(t2DRect):   5680(ptr) Variable UniformConstant
-            5739:             TypeImage 6(float) SubpassData nonsampled format:Unknown
+            5739:             TypeImage 6(float16_t) SubpassData nonsampled format:Unknown
             5740:             TypePointer UniformConstant 5739
    5741(subpass):   5740(ptr) Variable UniformConstant
             5743:  721(ivec2) ConstantComposite 2187 2187
-            5745:             TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown
+            5745:             TypeImage 6(float16_t) SubpassData multi-sampled nonsampled format:Unknown
             5746:             TypePointer UniformConstant 5745
  5747(subpassMS):   5746(ptr) Variable UniformConstant
             5912:             TypePointer Output 249(fvec4)
@@ -533,555 +533,555 @@
     5753(result):     64(ptr) Variable Function
      5834(param):     64(ptr) Variable Function
                               Store 5753(result) 121
-            5754:    7(fvec4) FunctionCall 9(testTexture()
-            5755:    7(fvec4) Load 5753(result)
-            5756:    7(fvec4) FAdd 5755 5754
+            5754:  7(f16vec4) FunctionCall 9(testTexture()
+            5755:  7(f16vec4) Load 5753(result)
+            5756:  7(f16vec4) FAdd 5755 5754
                               Store 5753(result) 5756
-            5757:    7(fvec4) FunctionCall 11(testTextureProj()
-            5758:    7(fvec4) Load 5753(result)
-            5759:    7(fvec4) FAdd 5758 5757
+            5757:  7(f16vec4) FunctionCall 11(testTextureProj()
+            5758:  7(f16vec4) Load 5753(result)
+            5759:  7(f16vec4) FAdd 5758 5757
                               Store 5753(result) 5759
-            5760:    7(fvec4) FunctionCall 13(testTextureLod()
-            5761:    7(fvec4) Load 5753(result)
-            5762:    7(fvec4) FAdd 5761 5760
+            5760:  7(f16vec4) FunctionCall 13(testTextureLod()
+            5761:  7(f16vec4) Load 5753(result)
+            5762:  7(f16vec4) FAdd 5761 5760
                               Store 5753(result) 5762
-            5763:    7(fvec4) FunctionCall 15(testTextureOffset()
-            5764:    7(fvec4) Load 5753(result)
-            5765:    7(fvec4) FAdd 5764 5763
+            5763:  7(f16vec4) FunctionCall 15(testTextureOffset()
+            5764:  7(f16vec4) Load 5753(result)
+            5765:  7(f16vec4) FAdd 5764 5763
                               Store 5753(result) 5765
-            5766:    7(fvec4) FunctionCall 19(testTextureLodOffset()
-            5767:    7(fvec4) Load 5753(result)
-            5768:    7(fvec4) FAdd 5767 5766
+            5766:  7(f16vec4) FunctionCall 19(testTextureLodOffset()
+            5767:  7(f16vec4) Load 5753(result)
+            5768:  7(f16vec4) FAdd 5767 5766
                               Store 5753(result) 5768
-            5769:    7(fvec4) FunctionCall 21(testTextureProjLodOffset()
-            5770:    7(fvec4) Load 5753(result)
-            5771:    7(fvec4) FAdd 5770 5769
+            5769:  7(f16vec4) FunctionCall 21(testTextureProjLodOffset()
+            5770:  7(f16vec4) Load 5753(result)
+            5771:  7(f16vec4) FAdd 5770 5769
                               Store 5753(result) 5771
-            5772:    7(fvec4) FunctionCall 23(testTexelFetch()
-            5773:    7(fvec4) Load 5753(result)
-            5774:    7(fvec4) FAdd 5773 5772
+            5772:  7(f16vec4) FunctionCall 23(testTexelFetch()
+            5773:  7(f16vec4) Load 5753(result)
+            5774:  7(f16vec4) FAdd 5773 5772
                               Store 5753(result) 5774
-            5775:    7(fvec4) FunctionCall 25(testTexelFetchOffset()
-            5776:    7(fvec4) Load 5753(result)
-            5777:    7(fvec4) FAdd 5776 5775
+            5775:  7(f16vec4) FunctionCall 25(testTexelFetchOffset()
+            5776:  7(f16vec4) Load 5753(result)
+            5777:  7(f16vec4) FAdd 5776 5775
                               Store 5753(result) 5777
-            5778:    7(fvec4) FunctionCall 27(testTextureGrad()
-            5779:    7(fvec4) Load 5753(result)
-            5780:    7(fvec4) FAdd 5779 5778
+            5778:  7(f16vec4) FunctionCall 27(testTextureGrad()
+            5779:  7(f16vec4) Load 5753(result)
+            5780:  7(f16vec4) FAdd 5779 5778
                               Store 5753(result) 5780
-            5781:    7(fvec4) FunctionCall 29(testTextureGradOffset()
-            5782:    7(fvec4) Load 5753(result)
-            5783:    7(fvec4) FAdd 5782 5781
+            5781:  7(f16vec4) FunctionCall 29(testTextureGradOffset()
+            5782:  7(f16vec4) Load 5753(result)
+            5783:  7(f16vec4) FAdd 5782 5781
                               Store 5753(result) 5783
-            5784:    7(fvec4) FunctionCall 31(testTextureProjGrad()
-            5785:    7(fvec4) Load 5753(result)
-            5786:    7(fvec4) FAdd 5785 5784
+            5784:  7(f16vec4) FunctionCall 31(testTextureProjGrad()
+            5785:  7(f16vec4) Load 5753(result)
+            5786:  7(f16vec4) FAdd 5785 5784
                               Store 5753(result) 5786
-            5787:    7(fvec4) FunctionCall 33(testTextureProjGradoffset()
-            5788:    7(fvec4) Load 5753(result)
-            5789:    7(fvec4) FAdd 5788 5787
+            5787:  7(f16vec4) FunctionCall 33(testTextureProjGradoffset()
+            5788:  7(f16vec4) Load 5753(result)
+            5789:  7(f16vec4) FAdd 5788 5787
                               Store 5753(result) 5789
-            5790:    7(fvec4) FunctionCall 35(testTextureGather()
-            5791:    7(fvec4) Load 5753(result)
-            5792:    7(fvec4) FAdd 5791 5790
+            5790:  7(f16vec4) FunctionCall 35(testTextureGather()
+            5791:  7(f16vec4) Load 5753(result)
+            5792:  7(f16vec4) FAdd 5791 5790
                               Store 5753(result) 5792
-            5793:    7(fvec4) FunctionCall 37(testTextureGatherOffset()
-            5794:    7(fvec4) Load 5753(result)
-            5795:    7(fvec4) FAdd 5794 5793
+            5793:  7(f16vec4) FunctionCall 37(testTextureGatherOffset()
+            5794:  7(f16vec4) Load 5753(result)
+            5795:  7(f16vec4) FAdd 5794 5793
                               Store 5753(result) 5795
-            5796:    7(fvec4) FunctionCall 39(testTextureGatherOffsets()
-            5797:    7(fvec4) Load 5753(result)
-            5798:    7(fvec4) FAdd 5797 5796
+            5796:  7(f16vec4) FunctionCall 39(testTextureGatherOffsets()
+            5797:  7(f16vec4) Load 5753(result)
+            5798:  7(f16vec4) FAdd 5797 5796
                               Store 5753(result) 5798
-            5799:    7(fvec4) FunctionCall 41(testTextureGatherLod()
-            5800:    7(fvec4) Load 5753(result)
-            5801:    7(fvec4) FAdd 5800 5799
+            5799:  7(f16vec4) FunctionCall 41(testTextureGatherLod()
+            5800:  7(f16vec4) Load 5753(result)
+            5801:  7(f16vec4) FAdd 5800 5799
                               Store 5753(result) 5801
-            5802:    7(fvec4) FunctionCall 43(testTextureGatherLodOffset()
-            5803:    7(fvec4) Load 5753(result)
-            5804:    7(fvec4) FAdd 5803 5802
+            5802:  7(f16vec4) FunctionCall 43(testTextureGatherLodOffset()
+            5803:  7(f16vec4) Load 5753(result)
+            5804:  7(f16vec4) FAdd 5803 5802
                               Store 5753(result) 5804
-            5805:    7(fvec4) FunctionCall 45(testTextureGatherLodOffsets()
-            5806:    7(fvec4) Load 5753(result)
-            5807:    7(fvec4) FAdd 5806 5805
+            5805:  7(f16vec4) FunctionCall 45(testTextureGatherLodOffsets()
+            5806:  7(f16vec4) Load 5753(result)
+            5807:  7(f16vec4) FAdd 5806 5805
                               Store 5753(result) 5807
             5808:   48(ivec4) FunctionCall 50(testTextureSize()
-            5809:    7(fvec4) ConvertSToF 5808
-            5810:    7(fvec4) Load 5753(result)
-            5811:    7(fvec4) FAdd 5810 5809
+            5809:  7(f16vec4) ConvertSToF 5808
+            5810:  7(f16vec4) Load 5753(result)
+            5811:  7(f16vec4) FAdd 5810 5809
                               Store 5753(result) 5811
             5812:   53(fvec2) FunctionCall 55(testTextureQueryLod()
-            5813:  154(fvec2) FConvert 5812
-            5814:    7(fvec4) Load 5753(result)
-            5815:  154(fvec2) VectorShuffle 5814 5814 0 1
-            5816:  154(fvec2) FAdd 5815 5813
-            5817:    7(fvec4) Load 5753(result)
-            5818:    7(fvec4) VectorShuffle 5817 5816 4 5 2 3
+            5813:154(f16vec2) FConvert 5812
+            5814:  7(f16vec4) Load 5753(result)
+            5815:154(f16vec2) VectorShuffle 5814 5814 0 1
+            5816:154(f16vec2) FAdd 5815 5813
+            5817:  7(f16vec4) Load 5753(result)
+            5818:  7(f16vec4) VectorShuffle 5817 5816 4 5 2 3
                               Store 5753(result) 5818
             5819:     47(int) FunctionCall 58(testTextureQueryLevels()
-            5820:    6(float) ConvertSToF 5819
+            5820:6(float16_t) ConvertSToF 5819
             5821:    208(ptr) AccessChain 5753(result) 207
-            5822:    6(float) Load 5821
-            5823:    6(float) FAdd 5822 5820
+            5822:6(float16_t) Load 5821
+            5823:6(float16_t) FAdd 5822 5820
             5824:    208(ptr) AccessChain 5753(result) 207
                               Store 5824 5823
             5825:     47(int) FunctionCall 60(testTextureSamples()
-            5826:    6(float) ConvertSToF 5825
+            5826:6(float16_t) ConvertSToF 5825
             5827:    208(ptr) AccessChain 5753(result) 207
-            5828:    6(float) Load 5827
-            5829:    6(float) FAdd 5828 5826
+            5828:6(float16_t) Load 5827
+            5829:6(float16_t) FAdd 5828 5826
             5830:    208(ptr) AccessChain 5753(result) 207
                               Store 5830 5829
-            5831:    7(fvec4) FunctionCall 62(testImageLoad()
-            5832:    7(fvec4) Load 5753(result)
-            5833:    7(fvec4) FAdd 5832 5831
+            5831:  7(f16vec4) FunctionCall 62(testImageLoad()
+            5832:  7(f16vec4) Load 5753(result)
+            5833:  7(f16vec4) FAdd 5832 5831
                               Store 5753(result) 5833
-            5835:    7(fvec4) Load 5753(result)
+            5835:  7(f16vec4) Load 5753(result)
                               Store 5834(param) 5835
             5836:           2 FunctionCall 67(testImageStore(vf164;) 5834(param)
-            5837:    7(fvec4) FunctionCall 69(testSparseTexture()
-            5838:    7(fvec4) Load 5753(result)
-            5839:    7(fvec4) FAdd 5838 5837
+            5837:  7(f16vec4) FunctionCall 69(testSparseTexture()
+            5838:  7(f16vec4) Load 5753(result)
+            5839:  7(f16vec4) FAdd 5838 5837
                               Store 5753(result) 5839
-            5840:    7(fvec4) FunctionCall 71(testSparseTextureLod()
-            5841:    7(fvec4) Load 5753(result)
-            5842:    7(fvec4) FAdd 5841 5840
+            5840:  7(f16vec4) FunctionCall 71(testSparseTextureLod()
+            5841:  7(f16vec4) Load 5753(result)
+            5842:  7(f16vec4) FAdd 5841 5840
                               Store 5753(result) 5842
-            5843:    7(fvec4) FunctionCall 73(testSparseTextureOffset()
-            5844:    7(fvec4) Load 5753(result)
-            5845:    7(fvec4) FAdd 5844 5843
+            5843:  7(f16vec4) FunctionCall 73(testSparseTextureOffset()
+            5844:  7(f16vec4) Load 5753(result)
+            5845:  7(f16vec4) FAdd 5844 5843
                               Store 5753(result) 5845
-            5846:    7(fvec4) FunctionCall 75(testSparseTextureLodOffset()
-            5847:    7(fvec4) Load 5753(result)
-            5848:    7(fvec4) FAdd 5847 5846
+            5846:  7(f16vec4) FunctionCall 75(testSparseTextureLodOffset()
+            5847:  7(f16vec4) Load 5753(result)
+            5848:  7(f16vec4) FAdd 5847 5846
                               Store 5753(result) 5848
-            5849:    7(fvec4) FunctionCall 77(testSparseTextureGrad()
-            5850:    7(fvec4) Load 5753(result)
-            5851:    7(fvec4) FAdd 5850 5849
+            5849:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
+            5850:  7(f16vec4) Load 5753(result)
+            5851:  7(f16vec4) FAdd 5850 5849
                               Store 5753(result) 5851
-            5852:    7(fvec4) FunctionCall 79(testSparseTextureGradOffset()
-            5853:    7(fvec4) Load 5753(result)
-            5854:    7(fvec4) FAdd 5853 5852
+            5852:  7(f16vec4) FunctionCall 79(testSparseTextureGradOffset()
+            5853:  7(f16vec4) Load 5753(result)
+            5854:  7(f16vec4) FAdd 5853 5852
                               Store 5753(result) 5854
-            5855:    7(fvec4) FunctionCall 81(testSparseTexelFetch()
-            5856:    7(fvec4) Load 5753(result)
-            5857:    7(fvec4) FAdd 5856 5855
+            5855:  7(f16vec4) FunctionCall 81(testSparseTexelFetch()
+            5856:  7(f16vec4) Load 5753(result)
+            5857:  7(f16vec4) FAdd 5856 5855
                               Store 5753(result) 5857
-            5858:    7(fvec4) FunctionCall 83(testSparseTexelFetchOffset()
-            5859:    7(fvec4) Load 5753(result)
-            5860:    7(fvec4) FAdd 5859 5858
+            5858:  7(f16vec4) FunctionCall 83(testSparseTexelFetchOffset()
+            5859:  7(f16vec4) Load 5753(result)
+            5860:  7(f16vec4) FAdd 5859 5858
                               Store 5753(result) 5860
-            5861:    7(fvec4) FunctionCall 85(testSparseTextureGather()
-            5862:    7(fvec4) Load 5753(result)
-            5863:    7(fvec4) FAdd 5862 5861
+            5861:  7(f16vec4) FunctionCall 85(testSparseTextureGather()
+            5862:  7(f16vec4) Load 5753(result)
+            5863:  7(f16vec4) FAdd 5862 5861
                               Store 5753(result) 5863
-            5864:    7(fvec4) FunctionCall 87(testSparseTextureGatherOffset()
-            5865:    7(fvec4) Load 5753(result)
-            5866:    7(fvec4) FAdd 5865 5864
+            5864:  7(f16vec4) FunctionCall 87(testSparseTextureGatherOffset()
+            5865:  7(f16vec4) Load 5753(result)
+            5866:  7(f16vec4) FAdd 5865 5864
                               Store 5753(result) 5866
-            5867:    7(fvec4) FunctionCall 89(testSparseTextureGatherOffsets()
-            5868:    7(fvec4) Load 5753(result)
-            5869:    7(fvec4) FAdd 5868 5867
+            5867:  7(f16vec4) FunctionCall 89(testSparseTextureGatherOffsets()
+            5868:  7(f16vec4) Load 5753(result)
+            5869:  7(f16vec4) FAdd 5868 5867
                               Store 5753(result) 5869
-            5870:    7(fvec4) FunctionCall 91(testSparseTextureGatherLod()
-            5871:    7(fvec4) Load 5753(result)
-            5872:    7(fvec4) FAdd 5871 5870
+            5870:  7(f16vec4) FunctionCall 91(testSparseTextureGatherLod()
+            5871:  7(f16vec4) Load 5753(result)
+            5872:  7(f16vec4) FAdd 5871 5870
                               Store 5753(result) 5872
-            5873:    7(fvec4) FunctionCall 93(testSparseTextureGatherLodOffset()
-            5874:    7(fvec4) Load 5753(result)
-            5875:    7(fvec4) FAdd 5874 5873
+            5873:  7(f16vec4) FunctionCall 93(testSparseTextureGatherLodOffset()
+            5874:  7(f16vec4) Load 5753(result)
+            5875:  7(f16vec4) FAdd 5874 5873
                               Store 5753(result) 5875
-            5876:    7(fvec4) FunctionCall 95(testSparseTextureGatherLodOffsets()
-            5877:    7(fvec4) Load 5753(result)
-            5878:    7(fvec4) FAdd 5877 5876
+            5876:  7(f16vec4) FunctionCall 95(testSparseTextureGatherLodOffsets()
+            5877:  7(f16vec4) Load 5753(result)
+            5878:  7(f16vec4) FAdd 5877 5876
                               Store 5753(result) 5878
-            5879:    7(fvec4) FunctionCall 97(testSparseImageLoad()
-            5880:    7(fvec4) Load 5753(result)
-            5881:    7(fvec4) FAdd 5880 5879
+            5879:  7(f16vec4) FunctionCall 97(testSparseImageLoad()
+            5880:  7(f16vec4) Load 5753(result)
+            5881:  7(f16vec4) FAdd 5880 5879
                               Store 5753(result) 5881
-            5882:    7(fvec4) FunctionCall 99(testSparseTextureClamp()
-            5883:    7(fvec4) Load 5753(result)
-            5884:    7(fvec4) FAdd 5883 5882
+            5882:  7(f16vec4) FunctionCall 99(testSparseTextureClamp()
+            5883:  7(f16vec4) Load 5753(result)
+            5884:  7(f16vec4) FAdd 5883 5882
                               Store 5753(result) 5884
-            5885:    7(fvec4) FunctionCall 101(testTextureClamp()
-            5886:    7(fvec4) Load 5753(result)
-            5887:    7(fvec4) FAdd 5886 5885
+            5885:  7(f16vec4) FunctionCall 101(testTextureClamp()
+            5886:  7(f16vec4) Load 5753(result)
+            5887:  7(f16vec4) FAdd 5886 5885
                               Store 5753(result) 5887
-            5888:    7(fvec4) FunctionCall 103(testSparseTextureOffsetClamp()
-            5889:    7(fvec4) Load 5753(result)
-            5890:    7(fvec4) FAdd 5889 5888
+            5888:  7(f16vec4) FunctionCall 103(testSparseTextureOffsetClamp()
+            5889:  7(f16vec4) Load 5753(result)
+            5890:  7(f16vec4) FAdd 5889 5888
                               Store 5753(result) 5890
-            5891:    7(fvec4) FunctionCall 105(testTextureOffsetClamp()
-            5892:    7(fvec4) Load 5753(result)
-            5893:    7(fvec4) FAdd 5892 5891
+            5891:  7(f16vec4) FunctionCall 105(testTextureOffsetClamp()
+            5892:  7(f16vec4) Load 5753(result)
+            5893:  7(f16vec4) FAdd 5892 5891
                               Store 5753(result) 5893
-            5894:    7(fvec4) FunctionCall 77(testSparseTextureGrad()
-            5895:    7(fvec4) Load 5753(result)
-            5896:    7(fvec4) FAdd 5895 5894
+            5894:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
+            5895:  7(f16vec4) Load 5753(result)
+            5896:  7(f16vec4) FAdd 5895 5894
                               Store 5753(result) 5896
-            5897:    7(fvec4) FunctionCall 27(testTextureGrad()
-            5898:    7(fvec4) Load 5753(result)
-            5899:    7(fvec4) FAdd 5898 5897
+            5897:  7(f16vec4) FunctionCall 27(testTextureGrad()
+            5898:  7(f16vec4) Load 5753(result)
+            5899:  7(f16vec4) FAdd 5898 5897
                               Store 5753(result) 5899
-            5900:    7(fvec4) FunctionCall 111(testSparseTextureGradOffsetClamp()
-            5901:    7(fvec4) Load 5753(result)
-            5902:    7(fvec4) FAdd 5901 5900
+            5900:  7(f16vec4) FunctionCall 111(testSparseTextureGradOffsetClamp()
+            5901:  7(f16vec4) Load 5753(result)
+            5902:  7(f16vec4) FAdd 5901 5900
                               Store 5753(result) 5902
-            5903:    7(fvec4) FunctionCall 113(testTextureGradOffsetClamp()
-            5904:    7(fvec4) Load 5753(result)
-            5905:    7(fvec4) FAdd 5904 5903
+            5903:  7(f16vec4) FunctionCall 113(testTextureGradOffsetClamp()
+            5904:  7(f16vec4) Load 5753(result)
+            5905:  7(f16vec4) FAdd 5904 5903
                               Store 5753(result) 5905
-            5906:    7(fvec4) FunctionCall 115(testCombinedTextureSampler()
-            5907:    7(fvec4) Load 5753(result)
-            5908:    7(fvec4) FAdd 5907 5906
+            5906:  7(f16vec4) FunctionCall 115(testCombinedTextureSampler()
+            5907:  7(f16vec4) Load 5753(result)
+            5908:  7(f16vec4) FAdd 5907 5906
                               Store 5753(result) 5908
-            5909:    7(fvec4) FunctionCall 117(testSubpassLoad()
-            5910:    7(fvec4) Load 5753(result)
-            5911:    7(fvec4) FAdd 5910 5909
+            5909:  7(f16vec4) FunctionCall 117(testSubpassLoad()
+            5910:  7(f16vec4) Load 5753(result)
+            5911:  7(f16vec4) FAdd 5910 5909
                               Store 5753(result) 5911
-            5914:    7(fvec4) Load 5753(result)
+            5914:  7(f16vec4) Load 5753(result)
             5915:  249(fvec4) FConvert 5914
                               Store 5913(fragColor) 5915
                               Return
                               FunctionEnd
- 9(testTexture():    7(fvec4) Function None 8
+ 9(testTexture():  7(f16vec4) Function None 8
               10:             Label
       119(texel):     64(ptr) Variable Function
                               Store 119(texel) 121
              126:         123 Load 125(s1D)
              129:   52(float) Load 128(c1)
-             130:    7(fvec4) ImageSampleImplicitLod 126 129
-             131:    7(fvec4) Load 119(texel)
-             132:    7(fvec4) FAdd 131 130
+             130:  7(f16vec4) ImageSampleImplicitLod 126 129
+             131:  7(f16vec4) Load 119(texel)
+             132:  7(f16vec4) FAdd 131 130
                               Store 119(texel) 132
              133:         123 Load 125(s1D)
-             136:    6(float) Load 135(f16c1)
-             138:    6(float) Load 137(f16bias)
-             139:    7(fvec4) ImageSampleImplicitLod 133 136 Bias 138
-             140:    7(fvec4) Load 119(texel)
-             141:    7(fvec4) FAdd 140 139
+             136:6(float16_t) Load 135(f16c1)
+             138:6(float16_t) Load 137(f16bias)
+             139:  7(f16vec4) ImageSampleImplicitLod 133 136 Bias 138
+             140:  7(f16vec4) Load 119(texel)
+             141:  7(f16vec4) FAdd 140 139
                               Store 119(texel) 141
              146:         143 Load 145(s2D)
              149:   53(fvec2) Load 148(c2)
-             150:    7(fvec4) ImageSampleImplicitLod 146 149
-             151:    7(fvec4) Load 119(texel)
-             152:    7(fvec4) FAdd 151 150
+             150:  7(f16vec4) ImageSampleImplicitLod 146 149
+             151:  7(f16vec4) Load 119(texel)
+             152:  7(f16vec4) FAdd 151 150
                               Store 119(texel) 152
              153:         143 Load 145(s2D)
-             157:  154(fvec2) Load 156(f16c2)
-             158:    6(float) Load 137(f16bias)
-             159:    7(fvec4) ImageSampleImplicitLod 153 157 Bias 158
-             160:    7(fvec4) Load 119(texel)
-             161:    7(fvec4) FAdd 160 159
+             157:154(f16vec2) Load 156(f16c2)
+             158:6(float16_t) Load 137(f16bias)
+             159:  7(f16vec4) ImageSampleImplicitLod 153 157 Bias 158
+             160:  7(f16vec4) Load 119(texel)
+             161:  7(f16vec4) FAdd 160 159
                               Store 119(texel) 161
              166:         163 Load 165(s3D)
              170:  167(fvec3) Load 169(c3)
-             171:    7(fvec4) ImageSampleImplicitLod 166 170
-             172:    7(fvec4) Load 119(texel)
-             173:    7(fvec4) FAdd 172 171
+             171:  7(f16vec4) ImageSampleImplicitLod 166 170
+             172:  7(f16vec4) Load 119(texel)
+             173:  7(f16vec4) FAdd 172 171
                               Store 119(texel) 173
              174:         163 Load 165(s3D)
-             178:  175(fvec3) Load 177(f16c3)
-             179:    6(float) Load 137(f16bias)
-             180:    7(fvec4) ImageSampleImplicitLod 174 178 Bias 179
-             181:    7(fvec4) Load 119(texel)
-             182:    7(fvec4) FAdd 181 180
+             178:175(f16vec3) Load 177(f16c3)
+             179:6(float16_t) Load 137(f16bias)
+             180:  7(f16vec4) ImageSampleImplicitLod 174 178 Bias 179
+             181:  7(f16vec4) Load 119(texel)
+             182:  7(f16vec4) FAdd 181 180
                               Store 119(texel) 182
              187:         184 Load 186(sCube)
              188:  167(fvec3) Load 169(c3)
-             189:    7(fvec4) ImageSampleImplicitLod 187 188
-             190:    7(fvec4) Load 119(texel)
-             191:    7(fvec4) FAdd 190 189
+             189:  7(f16vec4) ImageSampleImplicitLod 187 188
+             190:  7(f16vec4) Load 119(texel)
+             191:  7(f16vec4) FAdd 190 189
                               Store 119(texel) 191
              192:         184 Load 186(sCube)
-             193:  175(fvec3) Load 177(f16c3)
-             194:    6(float) Load 137(f16bias)
-             195:    7(fvec4) ImageSampleImplicitLod 192 193 Bias 194
-             196:    7(fvec4) Load 119(texel)
-             197:    7(fvec4) FAdd 196 195
+             193:175(f16vec3) Load 177(f16c3)
+             194:6(float16_t) Load 137(f16bias)
+             195:  7(f16vec4) ImageSampleImplicitLod 192 193 Bias 194
+             196:  7(f16vec4) Load 119(texel)
+             197:  7(f16vec4) FAdd 196 195
                               Store 119(texel) 197
              202:         199 Load 201(s1DShadow)
              203:  167(fvec3) Load 169(c3)
              204:   52(float) CompositeExtract 203 2
-             205:    6(float) ImageSampleDrefImplicitLod 202 203 204
+             205:6(float16_t) ImageSampleDrefImplicitLod 202 203 204
              209:    208(ptr) AccessChain 119(texel) 207
-             210:    6(float) Load 209
-             211:    6(float) FAdd 210 205
+             210:6(float16_t) Load 209
+             211:6(float16_t) FAdd 210 205
              212:    208(ptr) AccessChain 119(texel) 207
                               Store 212 211
              213:         199 Load 201(s1DShadow)
-             214:  154(fvec2) Load 156(f16c2)
+             214:154(f16vec2) Load 156(f16c2)
              216:   52(float) Load 215(compare)
-             217:    6(float) Load 137(f16bias)
-             218:    6(float) ImageSampleDrefImplicitLod 213 214 216 Bias 217
+             217:6(float16_t) Load 137(f16bias)
+             218:6(float16_t) ImageSampleDrefImplicitLod 213 214 216 Bias 217
              219:    208(ptr) AccessChain 119(texel) 207
-             220:    6(float) Load 219
-             221:    6(float) FAdd 220 218
+             220:6(float16_t) Load 219
+             221:6(float16_t) FAdd 220 218
              222:    208(ptr) AccessChain 119(texel) 207
                               Store 222 221
              227:         224 Load 226(s2DShadow)
              228:  167(fvec3) Load 169(c3)
              229:   52(float) CompositeExtract 228 2
-             230:    6(float) ImageSampleDrefImplicitLod 227 228 229
+             230:6(float16_t) ImageSampleDrefImplicitLod 227 228 229
              231:    208(ptr) AccessChain 119(texel) 207
-             232:    6(float) Load 231
-             233:    6(float) FAdd 232 230
+             232:6(float16_t) Load 231
+             233:6(float16_t) FAdd 232 230
              234:    208(ptr) AccessChain 119(texel) 207
                               Store 234 233
              235:         224 Load 226(s2DShadow)
-             236:  154(fvec2) Load 156(f16c2)
+             236:154(f16vec2) Load 156(f16c2)
              237:   52(float) Load 215(compare)
-             238:    6(float) Load 137(f16bias)
-             239:    6(float) ImageSampleDrefImplicitLod 235 236 237 Bias 238
+             238:6(float16_t) Load 137(f16bias)
+             239:6(float16_t) ImageSampleDrefImplicitLod 235 236 237 Bias 238
              240:    208(ptr) AccessChain 119(texel) 207
-             241:    6(float) Load 240
-             242:    6(float) FAdd 241 239
+             241:6(float16_t) Load 240
+             242:6(float16_t) FAdd 241 239
              243:    208(ptr) AccessChain 119(texel) 207
                               Store 243 242
              248:         245 Load 247(sCubeShadow)
              252:  249(fvec4) Load 251(c4)
              253:   52(float) CompositeExtract 252 3
-             254:    6(float) ImageSampleDrefImplicitLod 248 252 253
+             254:6(float16_t) ImageSampleDrefImplicitLod 248 252 253
              255:    208(ptr) AccessChain 119(texel) 207
-             256:    6(float) Load 255
-             257:    6(float) FAdd 256 254
+             256:6(float16_t) Load 255
+             257:6(float16_t) FAdd 256 254
              258:    208(ptr) AccessChain 119(texel) 207
                               Store 258 257
              259:         245 Load 247(sCubeShadow)
-             260:  175(fvec3) Load 177(f16c3)
+             260:175(f16vec3) Load 177(f16c3)
              261:   52(float) Load 215(compare)
-             262:    6(float) Load 137(f16bias)
-             263:    6(float) ImageSampleDrefImplicitLod 259 260 261 Bias 262
+             262:6(float16_t) Load 137(f16bias)
+             263:6(float16_t) ImageSampleDrefImplicitLod 259 260 261 Bias 262
              264:    208(ptr) AccessChain 119(texel) 207
-             265:    6(float) Load 264
-             266:    6(float) FAdd 265 263
+             265:6(float16_t) Load 264
+             266:6(float16_t) FAdd 265 263
              267:    208(ptr) AccessChain 119(texel) 207
                               Store 267 266
              272:         269 Load 271(s1DArray)
              273:   53(fvec2) Load 148(c2)
-             274:    7(fvec4) ImageSampleImplicitLod 272 273
-             275:    7(fvec4) Load 119(texel)
-             276:    7(fvec4) FAdd 275 274
+             274:  7(f16vec4) ImageSampleImplicitLod 272 273
+             275:  7(f16vec4) Load 119(texel)
+             276:  7(f16vec4) FAdd 275 274
                               Store 119(texel) 276
              277:         269 Load 271(s1DArray)
-             278:  154(fvec2) Load 156(f16c2)
-             279:    6(float) Load 137(f16bias)
-             280:    7(fvec4) ImageSampleImplicitLod 277 278 Bias 279
-             281:    7(fvec4) Load 119(texel)
-             282:    7(fvec4) FAdd 281 280
+             278:154(f16vec2) Load 156(f16c2)
+             279:6(float16_t) Load 137(f16bias)
+             280:  7(f16vec4) ImageSampleImplicitLod 277 278 Bias 279
+             281:  7(f16vec4) Load 119(texel)
+             282:  7(f16vec4) FAdd 281 280
                               Store 119(texel) 282
              287:         284 Load 286(s2DArray)
              288:  167(fvec3) Load 169(c3)
-             289:    7(fvec4) ImageSampleImplicitLod 287 288
-             290:    7(fvec4) Load 119(texel)
-             291:    7(fvec4) FAdd 290 289
+             289:  7(f16vec4) ImageSampleImplicitLod 287 288
+             290:  7(f16vec4) Load 119(texel)
+             291:  7(f16vec4) FAdd 290 289
                               Store 119(texel) 291
              292:         284 Load 286(s2DArray)
-             293:  175(fvec3) Load 177(f16c3)
-             294:    6(float) Load 137(f16bias)
-             295:    7(fvec4) ImageSampleImplicitLod 292 293 Bias 294
-             296:    7(fvec4) Load 119(texel)
-             297:    7(fvec4) FAdd 296 295
+             293:175(f16vec3) Load 177(f16c3)
+             294:6(float16_t) Load 137(f16bias)
+             295:  7(f16vec4) ImageSampleImplicitLod 292 293 Bias 294
+             296:  7(f16vec4) Load 119(texel)
+             297:  7(f16vec4) FAdd 296 295
                               Store 119(texel) 297
              302:         299 Load 301(sCubeArray)
              303:  249(fvec4) Load 251(c4)
-             304:    7(fvec4) ImageSampleImplicitLod 302 303
-             305:    7(fvec4) Load 119(texel)
-             306:    7(fvec4) FAdd 305 304
+             304:  7(f16vec4) ImageSampleImplicitLod 302 303
+             305:  7(f16vec4) Load 119(texel)
+             306:  7(f16vec4) FAdd 305 304
                               Store 119(texel) 306
              307:         299 Load 301(sCubeArray)
-             310:    7(fvec4) Load 309(f16c4)
-             311:    6(float) Load 137(f16bias)
-             312:    7(fvec4) ImageSampleImplicitLod 307 310 Bias 311
-             313:    7(fvec4) Load 119(texel)
-             314:    7(fvec4) FAdd 313 312
+             310:  7(f16vec4) Load 309(f16c4)
+             311:6(float16_t) Load 137(f16bias)
+             312:  7(f16vec4) ImageSampleImplicitLod 307 310 Bias 311
+             313:  7(f16vec4) Load 119(texel)
+             314:  7(f16vec4) FAdd 313 312
                               Store 119(texel) 314
              319:         316 Load 318(s1DArrayShadow)
              320:  167(fvec3) Load 169(c3)
              321:   52(float) CompositeExtract 320 2
-             322:    6(float) ImageSampleDrefImplicitLod 319 320 321
+             322:6(float16_t) ImageSampleDrefImplicitLod 319 320 321
              323:    208(ptr) AccessChain 119(texel) 207
-             324:    6(float) Load 323
-             325:    6(float) FAdd 324 322
+             324:6(float16_t) Load 323
+             325:6(float16_t) FAdd 324 322
              326:    208(ptr) AccessChain 119(texel) 207
                               Store 326 325
              327:         316 Load 318(s1DArrayShadow)
-             328:  154(fvec2) Load 156(f16c2)
+             328:154(f16vec2) Load 156(f16c2)
              329:   52(float) Load 215(compare)
-             330:    6(float) Load 137(f16bias)
-             331:    6(float) ImageSampleDrefImplicitLod 327 328 329 Bias 330
+             330:6(float16_t) Load 137(f16bias)
+             331:6(float16_t) ImageSampleDrefImplicitLod 327 328 329 Bias 330
              332:    208(ptr) AccessChain 119(texel) 207
-             333:    6(float) Load 332
-             334:    6(float) FAdd 333 331
+             333:6(float16_t) Load 332
+             334:6(float16_t) FAdd 333 331
              335:    208(ptr) AccessChain 119(texel) 207
                               Store 335 334
              340:         337 Load 339(s2DArrayShadow)
              341:  249(fvec4) Load 251(c4)
              342:   52(float) CompositeExtract 341 3
-             343:    6(float) ImageSampleDrefImplicitLod 340 341 342
+             343:6(float16_t) ImageSampleDrefImplicitLod 340 341 342
              344:    208(ptr) AccessChain 119(texel) 207
-             345:    6(float) Load 344
-             346:    6(float) FAdd 345 343
+             345:6(float16_t) Load 344
+             346:6(float16_t) FAdd 345 343
              347:    208(ptr) AccessChain 119(texel) 207
                               Store 347 346
              348:         337 Load 339(s2DArrayShadow)
-             349:  175(fvec3) Load 177(f16c3)
+             349:175(f16vec3) Load 177(f16c3)
              350:   52(float) Load 215(compare)
-             351:    6(float) ImageSampleDrefImplicitLod 348 349 350
+             351:6(float16_t) ImageSampleDrefImplicitLod 348 349 350
              352:    208(ptr) AccessChain 119(texel) 207
-             353:    6(float) Load 352
-             354:    6(float) FAdd 353 351
+             353:6(float16_t) Load 352
+             354:6(float16_t) FAdd 353 351
              355:    208(ptr) AccessChain 119(texel) 207
                               Store 355 354
              360:         357 Load 359(s2DRect)
              361:   53(fvec2) Load 148(c2)
-             362:    7(fvec4) ImageSampleImplicitLod 360 361
-             363:    7(fvec4) Load 119(texel)
-             364:    7(fvec4) FAdd 363 362
+             362:  7(f16vec4) ImageSampleImplicitLod 360 361
+             363:  7(f16vec4) Load 119(texel)
+             364:  7(f16vec4) FAdd 363 362
                               Store 119(texel) 364
              365:         357 Load 359(s2DRect)
-             366:  154(fvec2) Load 156(f16c2)
-             367:    7(fvec4) ImageSampleImplicitLod 365 366
-             368:    7(fvec4) Load 119(texel)
-             369:    7(fvec4) FAdd 368 367
+             366:154(f16vec2) Load 156(f16c2)
+             367:  7(f16vec4) ImageSampleImplicitLod 365 366
+             368:  7(f16vec4) Load 119(texel)
+             369:  7(f16vec4) FAdd 368 367
                               Store 119(texel) 369
              374:         371 Load 373(s2DRectShadow)
              375:  167(fvec3) Load 169(c3)
              376:   52(float) CompositeExtract 375 2
-             377:    6(float) ImageSampleDrefImplicitLod 374 375 376
+             377:6(float16_t) ImageSampleDrefImplicitLod 374 375 376
              378:    208(ptr) AccessChain 119(texel) 207
-             379:    6(float) Load 378
-             380:    6(float) FAdd 379 377
+             379:6(float16_t) Load 378
+             380:6(float16_t) FAdd 379 377
              381:    208(ptr) AccessChain 119(texel) 207
                               Store 381 380
              382:         371 Load 373(s2DRectShadow)
-             383:  154(fvec2) Load 156(f16c2)
+             383:154(f16vec2) Load 156(f16c2)
              384:   52(float) Load 215(compare)
-             385:    6(float) ImageSampleDrefImplicitLod 382 383 384
+             385:6(float16_t) ImageSampleDrefImplicitLod 382 383 384
              386:    208(ptr) AccessChain 119(texel) 207
-             387:    6(float) Load 386
-             388:    6(float) FAdd 387 385
+             387:6(float16_t) Load 386
+             388:6(float16_t) FAdd 387 385
              389:    208(ptr) AccessChain 119(texel) 207
                               Store 389 388
              394:         391 Load 393(sCubeArrayShadow)
              395:  249(fvec4) Load 251(c4)
              396:   52(float) Load 215(compare)
-             397:    6(float) ImageSampleDrefImplicitLod 394 395 396
+             397:6(float16_t) ImageSampleDrefImplicitLod 394 395 396
              398:    208(ptr) AccessChain 119(texel) 207
-             399:    6(float) Load 398
-             400:    6(float) FAdd 399 397
+             399:6(float16_t) Load 398
+             400:6(float16_t) FAdd 399 397
              401:    208(ptr) AccessChain 119(texel) 207
                               Store 401 400
              402:         391 Load 393(sCubeArrayShadow)
-             403:    7(fvec4) Load 309(f16c4)
+             403:  7(f16vec4) Load 309(f16c4)
              404:   52(float) Load 215(compare)
-             405:    6(float) ImageSampleDrefImplicitLod 402 403 404
+             405:6(float16_t) ImageSampleDrefImplicitLod 402 403 404
              406:    208(ptr) AccessChain 119(texel) 207
-             407:    6(float) Load 406
-             408:    6(float) FAdd 407 405
+             407:6(float16_t) Load 406
+             408:6(float16_t) FAdd 407 405
              409:    208(ptr) AccessChain 119(texel) 207
                               Store 409 408
-             410:    7(fvec4) Load 119(texel)
+             410:  7(f16vec4) Load 119(texel)
                               ReturnValue 410
                               FunctionEnd
-11(testTextureProj():    7(fvec4) Function None 8
+11(testTextureProj():  7(f16vec4) Function None 8
               12:             Label
       413(texel):     64(ptr) Variable Function
                               Store 413(texel) 121
              414:         123 Load 125(s1D)
              415:   53(fvec2) Load 148(c2)
-             416:    7(fvec4) ImageSampleProjImplicitLod 414 415
-             417:    7(fvec4) Load 413(texel)
-             418:    7(fvec4) FAdd 417 416
+             416:  7(f16vec4) ImageSampleProjImplicitLod 414 415
+             417:  7(f16vec4) Load 413(texel)
+             418:  7(f16vec4) FAdd 417 416
                               Store 413(texel) 418
              419:         123 Load 125(s1D)
-             420:  154(fvec2) Load 156(f16c2)
-             421:    6(float) Load 137(f16bias)
-             422:    7(fvec4) ImageSampleProjImplicitLod 419 420 Bias 421
-             423:    7(fvec4) Load 413(texel)
-             424:    7(fvec4) FAdd 423 422
+             420:154(f16vec2) Load 156(f16c2)
+             421:6(float16_t) Load 137(f16bias)
+             422:  7(f16vec4) ImageSampleProjImplicitLod 419 420 Bias 421
+             423:  7(f16vec4) Load 413(texel)
+             424:  7(f16vec4) FAdd 423 422
                               Store 413(texel) 424
              425:         123 Load 125(s1D)
              426:  249(fvec4) Load 251(c4)
              427:   52(float) CompositeExtract 426 3
              428:  249(fvec4) CompositeInsert 427 426 1
-             429:    7(fvec4) ImageSampleProjImplicitLod 425 428
-             430:    7(fvec4) Load 413(texel)
-             431:    7(fvec4) FAdd 430 429
+             429:  7(f16vec4) ImageSampleProjImplicitLod 425 428
+             430:  7(f16vec4) Load 413(texel)
+             431:  7(f16vec4) FAdd 430 429
                               Store 413(texel) 431
              432:         123 Load 125(s1D)
-             433:    7(fvec4) Load 309(f16c4)
-             434:    6(float) Load 137(f16bias)
-             435:    6(float) CompositeExtract 433 3
-             436:    7(fvec4) CompositeInsert 435 433 1
-             437:    7(fvec4) ImageSampleProjImplicitLod 432 436 Bias 434
-             438:    7(fvec4) Load 413(texel)
-             439:    7(fvec4) FAdd 438 437
+             433:  7(f16vec4) Load 309(f16c4)
+             434:6(float16_t) Load 137(f16bias)
+             435:6(float16_t) CompositeExtract 433 3
+             436:  7(f16vec4) CompositeInsert 435 433 1
+             437:  7(f16vec4) ImageSampleProjImplicitLod 432 436 Bias 434
+             438:  7(f16vec4) Load 413(texel)
+             439:  7(f16vec4) FAdd 438 437
                               Store 413(texel) 439
              440:         143 Load 145(s2D)
              441:  167(fvec3) Load 169(c3)
-             442:    7(fvec4) ImageSampleProjImplicitLod 440 441
-             443:    7(fvec4) Load 413(texel)
-             444:    7(fvec4) FAdd 443 442
+             442:  7(f16vec4) ImageSampleProjImplicitLod 440 441
+             443:  7(f16vec4) Load 413(texel)
+             444:  7(f16vec4) FAdd 443 442
                               Store 413(texel) 444
              445:         143 Load 145(s2D)
-             446:  175(fvec3) Load 177(f16c3)
-             447:    6(float) Load 137(f16bias)
-             448:    7(fvec4) ImageSampleProjImplicitLod 445 446 Bias 447
-             449:    7(fvec4) Load 413(texel)
-             450:    7(fvec4) FAdd 449 448
+             446:175(f16vec3) Load 177(f16c3)
+             447:6(float16_t) Load 137(f16bias)
+             448:  7(f16vec4) ImageSampleProjImplicitLod 445 446 Bias 447
+             449:  7(f16vec4) Load 413(texel)
+             450:  7(f16vec4) FAdd 449 448
                               Store 413(texel) 450
              451:         143 Load 145(s2D)
              452:  249(fvec4) Load 251(c4)
              453:   52(float) CompositeExtract 452 3
              454:  249(fvec4) CompositeInsert 453 452 2
-             455:    7(fvec4) ImageSampleProjImplicitLod 451 454
-             456:    7(fvec4) Load 413(texel)
-             457:    7(fvec4) FAdd 456 455
+             455:  7(f16vec4) ImageSampleProjImplicitLod 451 454
+             456:  7(f16vec4) Load 413(texel)
+             457:  7(f16vec4) FAdd 456 455
                               Store 413(texel) 457
              458:         143 Load 145(s2D)
-             459:    7(fvec4) Load 309(f16c4)
-             460:    6(float) Load 137(f16bias)
-             461:    6(float) CompositeExtract 459 3
-             462:    7(fvec4) CompositeInsert 461 459 2
-             463:    7(fvec4) ImageSampleProjImplicitLod 458 462 Bias 460
-             464:    7(fvec4) Load 413(texel)
-             465:    7(fvec4) FAdd 464 463
+             459:  7(f16vec4) Load 309(f16c4)
+             460:6(float16_t) Load 137(f16bias)
+             461:6(float16_t) CompositeExtract 459 3
+             462:  7(f16vec4) CompositeInsert 461 459 2
+             463:  7(f16vec4) ImageSampleProjImplicitLod 458 462 Bias 460
+             464:  7(f16vec4) Load 413(texel)
+             465:  7(f16vec4) FAdd 464 463
                               Store 413(texel) 465
              466:         163 Load 165(s3D)
              467:  249(fvec4) Load 251(c4)
-             468:    7(fvec4) ImageSampleProjImplicitLod 466 467
-             469:    7(fvec4) Load 413(texel)
-             470:    7(fvec4) FAdd 469 468
+             468:  7(f16vec4) ImageSampleProjImplicitLod 466 467
+             469:  7(f16vec4) Load 413(texel)
+             470:  7(f16vec4) FAdd 469 468
                               Store 413(texel) 470
              471:         163 Load 165(s3D)
-             472:    7(fvec4) Load 309(f16c4)
-             473:    6(float) Load 137(f16bias)
-             474:    7(fvec4) ImageSampleProjImplicitLod 471 472 Bias 473
-             475:    7(fvec4) Load 413(texel)
-             476:    7(fvec4) FAdd 475 474
+             472:  7(f16vec4) Load 309(f16c4)
+             473:6(float16_t) Load 137(f16bias)
+             474:  7(f16vec4) ImageSampleProjImplicitLod 471 472 Bias 473
+             475:  7(f16vec4) Load 413(texel)
+             476:  7(f16vec4) FAdd 475 474
                               Store 413(texel) 476
              477:         199 Load 201(s1DShadow)
              478:  249(fvec4) Load 251(c4)
              479:   52(float) CompositeExtract 478 2
              480:   52(float) CompositeExtract 478 3
              481:  249(fvec4) CompositeInsert 480 478 1
-             482:    6(float) ImageSampleProjDrefImplicitLod 477 481 479
+             482:6(float16_t) ImageSampleProjDrefImplicitLod 477 481 479
              483:    208(ptr) AccessChain 413(texel) 207
-             484:    6(float) Load 483
-             485:    6(float) FAdd 484 482
+             484:6(float16_t) Load 483
+             485:6(float16_t) FAdd 484 482
              486:    208(ptr) AccessChain 413(texel) 207
                               Store 486 485
              487:         199 Load 201(s1DShadow)
-             488:  175(fvec3) Load 177(f16c3)
+             488:175(f16vec3) Load 177(f16c3)
              489:   52(float) Load 215(compare)
-             490:    6(float) Load 137(f16bias)
-             491:    6(float) CompositeExtract 488 2
-             492:  175(fvec3) CompositeInsert 491 488 1
-             493:    6(float) ImageSampleProjDrefImplicitLod 487 492 489 Bias 490
+             490:6(float16_t) Load 137(f16bias)
+             491:6(float16_t) CompositeExtract 488 2
+             492:175(f16vec3) CompositeInsert 491 488 1
+             493:6(float16_t) ImageSampleProjDrefImplicitLod 487 492 489 Bias 490
              494:    208(ptr) AccessChain 413(texel) 207
-             495:    6(float) Load 494
-             496:    6(float) FAdd 495 493
+             495:6(float16_t) Load 494
+             496:6(float16_t) FAdd 495 493
              497:    208(ptr) AccessChain 413(texel) 207
                               Store 497 496
              498:         224 Load 226(s2DShadow)
@@ -1089,538 +1089,538 @@
              500:   52(float) CompositeExtract 499 2
              501:   52(float) CompositeExtract 499 3
              502:  249(fvec4) CompositeInsert 501 499 2
-             503:    6(float) ImageSampleProjDrefImplicitLod 498 502 500
+             503:6(float16_t) ImageSampleProjDrefImplicitLod 498 502 500
              504:    208(ptr) AccessChain 413(texel) 207
-             505:    6(float) Load 504
-             506:    6(float) FAdd 505 503
+             505:6(float16_t) Load 504
+             506:6(float16_t) FAdd 505 503
              507:    208(ptr) AccessChain 413(texel) 207
                               Store 507 506
              508:         224 Load 226(s2DShadow)
-             509:  175(fvec3) Load 177(f16c3)
+             509:175(f16vec3) Load 177(f16c3)
              510:   52(float) Load 215(compare)
-             511:    6(float) Load 137(f16bias)
-             512:    6(float) ImageSampleProjDrefImplicitLod 508 509 510 Bias 511
+             511:6(float16_t) Load 137(f16bias)
+             512:6(float16_t) ImageSampleProjDrefImplicitLod 508 509 510 Bias 511
              513:    208(ptr) AccessChain 413(texel) 207
-             514:    6(float) Load 513
-             515:    6(float) FAdd 514 512
+             514:6(float16_t) Load 513
+             515:6(float16_t) FAdd 514 512
              516:    208(ptr) AccessChain 413(texel) 207
                               Store 516 515
              517:         357 Load 359(s2DRect)
              518:  167(fvec3) Load 169(c3)
-             519:    7(fvec4) ImageSampleProjImplicitLod 517 518
-             520:    7(fvec4) Load 413(texel)
-             521:    7(fvec4) FAdd 520 519
+             519:  7(f16vec4) ImageSampleProjImplicitLod 517 518
+             520:  7(f16vec4) Load 413(texel)
+             521:  7(f16vec4) FAdd 520 519
                               Store 413(texel) 521
              522:         357 Load 359(s2DRect)
-             523:  175(fvec3) Load 177(f16c3)
-             524:    7(fvec4) ImageSampleProjImplicitLod 522 523
-             525:    7(fvec4) Load 413(texel)
-             526:    7(fvec4) FAdd 525 524
+             523:175(f16vec3) Load 177(f16c3)
+             524:  7(f16vec4) ImageSampleProjImplicitLod 522 523
+             525:  7(f16vec4) Load 413(texel)
+             526:  7(f16vec4) FAdd 525 524
                               Store 413(texel) 526
              527:         357 Load 359(s2DRect)
              528:  249(fvec4) Load 251(c4)
              529:   52(float) CompositeExtract 528 3
              530:  249(fvec4) CompositeInsert 529 528 2
-             531:    7(fvec4) ImageSampleProjImplicitLod 527 530
-             532:    7(fvec4) Load 413(texel)
-             533:    7(fvec4) FAdd 532 531
+             531:  7(f16vec4) ImageSampleProjImplicitLod 527 530
+             532:  7(f16vec4) Load 413(texel)
+             533:  7(f16vec4) FAdd 532 531
                               Store 413(texel) 533
              534:         357 Load 359(s2DRect)
-             535:    7(fvec4) Load 309(f16c4)
-             536:    6(float) CompositeExtract 535 3
-             537:    7(fvec4) CompositeInsert 536 535 2
-             538:    7(fvec4) ImageSampleProjImplicitLod 534 537
-             539:    7(fvec4) Load 413(texel)
-             540:    7(fvec4) FAdd 539 538
+             535:  7(f16vec4) Load 309(f16c4)
+             536:6(float16_t) CompositeExtract 535 3
+             537:  7(f16vec4) CompositeInsert 536 535 2
+             538:  7(f16vec4) ImageSampleProjImplicitLod 534 537
+             539:  7(f16vec4) Load 413(texel)
+             540:  7(f16vec4) FAdd 539 538
                               Store 413(texel) 540
              541:         371 Load 373(s2DRectShadow)
              542:  249(fvec4) Load 251(c4)
              543:   52(float) CompositeExtract 542 2
              544:   52(float) CompositeExtract 542 3
              545:  249(fvec4) CompositeInsert 544 542 2
-             546:    6(float) ImageSampleProjDrefImplicitLod 541 545 543
+             546:6(float16_t) ImageSampleProjDrefImplicitLod 541 545 543
              547:    208(ptr) AccessChain 413(texel) 207
-             548:    6(float) Load 547
-             549:    6(float) FAdd 548 546
+             548:6(float16_t) Load 547
+             549:6(float16_t) FAdd 548 546
              550:    208(ptr) AccessChain 413(texel) 207
                               Store 550 549
              551:         371 Load 373(s2DRectShadow)
-             552:  175(fvec3) Load 177(f16c3)
+             552:175(f16vec3) Load 177(f16c3)
              553:   52(float) Load 215(compare)
-             554:    6(float) ImageSampleProjDrefImplicitLod 551 552 553
+             554:6(float16_t) ImageSampleProjDrefImplicitLod 551 552 553
              555:    208(ptr) AccessChain 413(texel) 207
-             556:    6(float) Load 555
-             557:    6(float) FAdd 556 554
+             556:6(float16_t) Load 555
+             557:6(float16_t) FAdd 556 554
              558:    208(ptr) AccessChain 413(texel) 207
                               Store 558 557
-             559:    7(fvec4) Load 413(texel)
+             559:  7(f16vec4) Load 413(texel)
                               ReturnValue 559
                               FunctionEnd
-13(testTextureLod():    7(fvec4) Function None 8
+13(testTextureLod():  7(f16vec4) Function None 8
               14:             Label
       562(texel):     64(ptr) Variable Function
                               Store 562(texel) 121
              563:         123 Load 125(s1D)
              564:   52(float) Load 128(c1)
              566:   52(float) Load 565(lod)
-             567:    7(fvec4) ImageSampleExplicitLod 563 564 Lod 566
-             568:    7(fvec4) Load 562(texel)
-             569:    7(fvec4) FAdd 568 567
+             567:  7(f16vec4) ImageSampleExplicitLod 563 564 Lod 566
+             568:  7(f16vec4) Load 562(texel)
+             569:  7(f16vec4) FAdd 568 567
                               Store 562(texel) 569
              570:         123 Load 125(s1D)
-             571:    6(float) Load 135(f16c1)
-             573:    6(float) Load 572(f16lod)
-             574:    7(fvec4) ImageSampleExplicitLod 570 571 Lod 573
-             575:    7(fvec4) Load 562(texel)
-             576:    7(fvec4) FAdd 575 574
+             571:6(float16_t) Load 135(f16c1)
+             573:6(float16_t) Load 572(f16lod)
+             574:  7(f16vec4) ImageSampleExplicitLod 570 571 Lod 573
+             575:  7(f16vec4) Load 562(texel)
+             576:  7(f16vec4) FAdd 575 574
                               Store 562(texel) 576
              577:         143 Load 145(s2D)
              578:   53(fvec2) Load 148(c2)
              579:   52(float) Load 565(lod)
-             580:    7(fvec4) ImageSampleExplicitLod 577 578 Lod 579
-             581:    7(fvec4) Load 562(texel)
-             582:    7(fvec4) FAdd 581 580
+             580:  7(f16vec4) ImageSampleExplicitLod 577 578 Lod 579
+             581:  7(f16vec4) Load 562(texel)
+             582:  7(f16vec4) FAdd 581 580
                               Store 562(texel) 582
              583:         143 Load 145(s2D)
-             584:  154(fvec2) Load 156(f16c2)
-             585:    6(float) Load 572(f16lod)
-             586:    7(fvec4) ImageSampleExplicitLod 583 584 Lod 585
-             587:    7(fvec4) Load 562(texel)
-             588:    7(fvec4) FAdd 587 586
+             584:154(f16vec2) Load 156(f16c2)
+             585:6(float16_t) Load 572(f16lod)
+             586:  7(f16vec4) ImageSampleExplicitLod 583 584 Lod 585
+             587:  7(f16vec4) Load 562(texel)
+             588:  7(f16vec4) FAdd 587 586
                               Store 562(texel) 588
              589:         163 Load 165(s3D)
              590:  167(fvec3) Load 169(c3)
              591:   52(float) Load 565(lod)
-             592:    7(fvec4) ImageSampleExplicitLod 589 590 Lod 591
-             593:    7(fvec4) Load 562(texel)
-             594:    7(fvec4) FAdd 593 592
+             592:  7(f16vec4) ImageSampleExplicitLod 589 590 Lod 591
+             593:  7(f16vec4) Load 562(texel)
+             594:  7(f16vec4) FAdd 593 592
                               Store 562(texel) 594
              595:         163 Load 165(s3D)
-             596:  175(fvec3) Load 177(f16c3)
-             597:    6(float) Load 572(f16lod)
-             598:    7(fvec4) ImageSampleExplicitLod 595 596 Lod 597
-             599:    7(fvec4) Load 562(texel)
-             600:    7(fvec4) FAdd 599 598
+             596:175(f16vec3) Load 177(f16c3)
+             597:6(float16_t) Load 572(f16lod)
+             598:  7(f16vec4) ImageSampleExplicitLod 595 596 Lod 597
+             599:  7(f16vec4) Load 562(texel)
+             600:  7(f16vec4) FAdd 599 598
                               Store 562(texel) 600
              601:         184 Load 186(sCube)
              602:  167(fvec3) Load 169(c3)
              603:   52(float) Load 565(lod)
-             604:    7(fvec4) ImageSampleExplicitLod 601 602 Lod 603
-             605:    7(fvec4) Load 562(texel)
-             606:    7(fvec4) FAdd 605 604
+             604:  7(f16vec4) ImageSampleExplicitLod 601 602 Lod 603
+             605:  7(f16vec4) Load 562(texel)
+             606:  7(f16vec4) FAdd 605 604
                               Store 562(texel) 606
              607:         184 Load 186(sCube)
-             608:  175(fvec3) Load 177(f16c3)
-             609:    6(float) Load 572(f16lod)
-             610:    7(fvec4) ImageSampleExplicitLod 607 608 Lod 609
-             611:    7(fvec4) Load 562(texel)
-             612:    7(fvec4) FAdd 611 610
+             608:175(f16vec3) Load 177(f16c3)
+             609:6(float16_t) Load 572(f16lod)
+             610:  7(f16vec4) ImageSampleExplicitLod 607 608 Lod 609
+             611:  7(f16vec4) Load 562(texel)
+             612:  7(f16vec4) FAdd 611 610
                               Store 562(texel) 612
              613:         199 Load 201(s1DShadow)
              614:  167(fvec3) Load 169(c3)
              615:   52(float) Load 565(lod)
              616:   52(float) CompositeExtract 614 2
-             617:    6(float) ImageSampleDrefExplicitLod 613 614 616 Lod 615
+             617:6(float16_t) ImageSampleDrefExplicitLod 613 614 616 Lod 615
              618:    208(ptr) AccessChain 562(texel) 207
-             619:    6(float) Load 618
-             620:    6(float) FAdd 619 617
+             619:6(float16_t) Load 618
+             620:6(float16_t) FAdd 619 617
              621:    208(ptr) AccessChain 562(texel) 207
                               Store 621 620
              622:         199 Load 201(s1DShadow)
-             623:  154(fvec2) Load 156(f16c2)
+             623:154(f16vec2) Load 156(f16c2)
              624:   52(float) Load 215(compare)
-             625:    6(float) Load 572(f16lod)
-             626:    6(float) ImageSampleDrefExplicitLod 622 623 624 Lod 625
+             625:6(float16_t) Load 572(f16lod)
+             626:6(float16_t) ImageSampleDrefExplicitLod 622 623 624 Lod 625
              627:    208(ptr) AccessChain 562(texel) 207
-             628:    6(float) Load 627
-             629:    6(float) FAdd 628 626
+             628:6(float16_t) Load 627
+             629:6(float16_t) FAdd 628 626
              630:    208(ptr) AccessChain 562(texel) 207
                               Store 630 629
              631:         224 Load 226(s2DShadow)
              632:  167(fvec3) Load 169(c3)
              633:   52(float) Load 565(lod)
              634:   52(float) CompositeExtract 632 2
-             635:    6(float) ImageSampleDrefExplicitLod 631 632 634 Lod 633
+             635:6(float16_t) ImageSampleDrefExplicitLod 631 632 634 Lod 633
              636:    208(ptr) AccessChain 562(texel) 207
-             637:    6(float) Load 636
-             638:    6(float) FAdd 637 635
+             637:6(float16_t) Load 636
+             638:6(float16_t) FAdd 637 635
              639:    208(ptr) AccessChain 562(texel) 207
                               Store 639 638
              640:         224 Load 226(s2DShadow)
-             641:  154(fvec2) Load 156(f16c2)
+             641:154(f16vec2) Load 156(f16c2)
              642:   52(float) Load 215(compare)
-             643:    6(float) Load 572(f16lod)
-             644:    6(float) ImageSampleDrefExplicitLod 640 641 642 Lod 643
+             643:6(float16_t) Load 572(f16lod)
+             644:6(float16_t) ImageSampleDrefExplicitLod 640 641 642 Lod 643
              645:    208(ptr) AccessChain 562(texel) 207
-             646:    6(float) Load 645
-             647:    6(float) FAdd 646 644
+             646:6(float16_t) Load 645
+             647:6(float16_t) FAdd 646 644
              648:    208(ptr) AccessChain 562(texel) 207
                               Store 648 647
              649:         269 Load 271(s1DArray)
              650:   53(fvec2) Load 148(c2)
              651:   52(float) Load 565(lod)
-             652:    7(fvec4) ImageSampleExplicitLod 649 650 Lod 651
-             653:    7(fvec4) Load 562(texel)
-             654:    7(fvec4) FAdd 653 652
+             652:  7(f16vec4) ImageSampleExplicitLod 649 650 Lod 651
+             653:  7(f16vec4) Load 562(texel)
+             654:  7(f16vec4) FAdd 653 652
                               Store 562(texel) 654
              655:         269 Load 271(s1DArray)
-             656:  154(fvec2) Load 156(f16c2)
-             657:    6(float) Load 572(f16lod)
-             658:    7(fvec4) ImageSampleExplicitLod 655 656 Lod 657
-             659:    7(fvec4) Load 562(texel)
-             660:    7(fvec4) FAdd 659 658
+             656:154(f16vec2) Load 156(f16c2)
+             657:6(float16_t) Load 572(f16lod)
+             658:  7(f16vec4) ImageSampleExplicitLod 655 656 Lod 657
+             659:  7(f16vec4) Load 562(texel)
+             660:  7(f16vec4) FAdd 659 658
                               Store 562(texel) 660
              661:         284 Load 286(s2DArray)
              662:  167(fvec3) Load 169(c3)
              663:   52(float) Load 565(lod)
-             664:    7(fvec4) ImageSampleExplicitLod 661 662 Lod 663
-             665:    7(fvec4) Load 562(texel)
-             666:    7(fvec4) FAdd 665 664
+             664:  7(f16vec4) ImageSampleExplicitLod 661 662 Lod 663
+             665:  7(f16vec4) Load 562(texel)
+             666:  7(f16vec4) FAdd 665 664
                               Store 562(texel) 666
              667:         284 Load 286(s2DArray)
-             668:  175(fvec3) Load 177(f16c3)
-             669:    6(float) Load 572(f16lod)
-             670:    7(fvec4) ImageSampleExplicitLod 667 668 Lod 669
-             671:    7(fvec4) Load 562(texel)
-             672:    7(fvec4) FAdd 671 670
+             668:175(f16vec3) Load 177(f16c3)
+             669:6(float16_t) Load 572(f16lod)
+             670:  7(f16vec4) ImageSampleExplicitLod 667 668 Lod 669
+             671:  7(f16vec4) Load 562(texel)
+             672:  7(f16vec4) FAdd 671 670
                               Store 562(texel) 672
              673:         316 Load 318(s1DArrayShadow)
              674:  167(fvec3) Load 169(c3)
              675:   52(float) Load 565(lod)
              676:   52(float) CompositeExtract 674 2
-             677:    6(float) ImageSampleDrefExplicitLod 673 674 676 Lod 675
+             677:6(float16_t) ImageSampleDrefExplicitLod 673 674 676 Lod 675
              678:    208(ptr) AccessChain 562(texel) 207
-             679:    6(float) Load 678
-             680:    6(float) FAdd 679 677
+             679:6(float16_t) Load 678
+             680:6(float16_t) FAdd 679 677
              681:    208(ptr) AccessChain 562(texel) 207
                               Store 681 680
              682:         316 Load 318(s1DArrayShadow)
-             683:  154(fvec2) Load 156(f16c2)
+             683:154(f16vec2) Load 156(f16c2)
              684:   52(float) Load 215(compare)
-             685:    6(float) Load 572(f16lod)
-             686:    6(float) ImageSampleDrefExplicitLod 682 683 684 Lod 685
+             685:6(float16_t) Load 572(f16lod)
+             686:6(float16_t) ImageSampleDrefExplicitLod 682 683 684 Lod 685
              687:    208(ptr) AccessChain 562(texel) 207
-             688:    6(float) Load 687
-             689:    6(float) FAdd 688 686
+             688:6(float16_t) Load 687
+             689:6(float16_t) FAdd 688 686
              690:    208(ptr) AccessChain 562(texel) 207
                               Store 690 689
              691:         299 Load 301(sCubeArray)
              692:  249(fvec4) Load 251(c4)
              693:   52(float) Load 565(lod)
-             694:    7(fvec4) ImageSampleExplicitLod 691 692 Lod 693
-             695:    7(fvec4) Load 562(texel)
-             696:    7(fvec4) FAdd 695 694
+             694:  7(f16vec4) ImageSampleExplicitLod 691 692 Lod 693
+             695:  7(f16vec4) Load 562(texel)
+             696:  7(f16vec4) FAdd 695 694
                               Store 562(texel) 696
              697:         299 Load 301(sCubeArray)
-             698:    7(fvec4) Load 309(f16c4)
-             699:    6(float) Load 572(f16lod)
-             700:    7(fvec4) ImageSampleExplicitLod 697 698 Lod 699
-             701:    7(fvec4) Load 562(texel)
-             702:    7(fvec4) FAdd 701 700
+             698:  7(f16vec4) Load 309(f16c4)
+             699:6(float16_t) Load 572(f16lod)
+             700:  7(f16vec4) ImageSampleExplicitLod 697 698 Lod 699
+             701:  7(f16vec4) Load 562(texel)
+             702:  7(f16vec4) FAdd 701 700
                               Store 562(texel) 702
-             703:    7(fvec4) Load 562(texel)
+             703:  7(f16vec4) Load 562(texel)
                               ReturnValue 703
                               FunctionEnd
-15(testTextureOffset():    7(fvec4) Function None 8
+15(testTextureOffset():  7(f16vec4) Function None 8
               16:             Label
       706(texel):     64(ptr) Variable Function
                               Store 706(texel) 121
              707:         123 Load 125(s1D)
              708:   52(float) Load 128(c1)
-             710:    7(fvec4) ImageSampleImplicitLod 707 708 ConstOffset 709
-             711:    7(fvec4) Load 706(texel)
-             712:    7(fvec4) FAdd 711 710
+             710:  7(f16vec4) ImageSampleImplicitLod 707 708 ConstOffset 709
+             711:  7(f16vec4) Load 706(texel)
+             712:  7(f16vec4) FAdd 711 710
                               Store 706(texel) 712
              713:         123 Load 125(s1D)
-             714:    6(float) Load 135(f16c1)
-             715:    6(float) Load 137(f16bias)
-             716:    7(fvec4) ImageSampleImplicitLod 713 714 Bias ConstOffset 715 709
-             717:    7(fvec4) Load 706(texel)
-             718:    7(fvec4) FAdd 717 716
+             714:6(float16_t) Load 135(f16c1)
+             715:6(float16_t) Load 137(f16bias)
+             716:  7(f16vec4) ImageSampleImplicitLod 713 714 Bias ConstOffset 715 709
+             717:  7(f16vec4) Load 706(texel)
+             718:  7(f16vec4) FAdd 717 716
                               Store 706(texel) 718
              719:         143 Load 145(s2D)
              720:   53(fvec2) Load 148(c2)
-             723:    7(fvec4) ImageSampleImplicitLod 719 720 ConstOffset 722
-             724:    7(fvec4) Load 706(texel)
-             725:    7(fvec4) FAdd 724 723
+             723:  7(f16vec4) ImageSampleImplicitLod 719 720 ConstOffset 722
+             724:  7(f16vec4) Load 706(texel)
+             725:  7(f16vec4) FAdd 724 723
                               Store 706(texel) 725
              726:         143 Load 145(s2D)
-             727:  154(fvec2) Load 156(f16c2)
-             728:    6(float) Load 137(f16bias)
-             729:    7(fvec4) ImageSampleImplicitLod 726 727 Bias ConstOffset 728 722
-             730:    7(fvec4) Load 706(texel)
-             731:    7(fvec4) FAdd 730 729
+             727:154(f16vec2) Load 156(f16c2)
+             728:6(float16_t) Load 137(f16bias)
+             729:  7(f16vec4) ImageSampleImplicitLod 726 727 Bias ConstOffset 728 722
+             730:  7(f16vec4) Load 706(texel)
+             731:  7(f16vec4) FAdd 730 729
                               Store 706(texel) 731
              732:         163 Load 165(s3D)
              733:  167(fvec3) Load 169(c3)
-             736:    7(fvec4) ImageSampleImplicitLod 732 733 ConstOffset 735
-             737:    7(fvec4) Load 706(texel)
-             738:    7(fvec4) FAdd 737 736
+             736:  7(f16vec4) ImageSampleImplicitLod 732 733 ConstOffset 735
+             737:  7(f16vec4) Load 706(texel)
+             738:  7(f16vec4) FAdd 737 736
                               Store 706(texel) 738
              739:         163 Load 165(s3D)
-             740:  175(fvec3) Load 177(f16c3)
-             741:    6(float) Load 137(f16bias)
-             742:    7(fvec4) ImageSampleImplicitLod 739 740 Bias ConstOffset 741 735
-             743:    7(fvec4) Load 706(texel)
-             744:    7(fvec4) FAdd 743 742
+             740:175(f16vec3) Load 177(f16c3)
+             741:6(float16_t) Load 137(f16bias)
+             742:  7(f16vec4) ImageSampleImplicitLod 739 740 Bias ConstOffset 741 735
+             743:  7(f16vec4) Load 706(texel)
+             744:  7(f16vec4) FAdd 743 742
                               Store 706(texel) 744
              745:         357 Load 359(s2DRect)
              746:   53(fvec2) Load 148(c2)
-             747:    7(fvec4) ImageSampleImplicitLod 745 746 ConstOffset 722
-             748:    7(fvec4) Load 706(texel)
-             749:    7(fvec4) FAdd 748 747
+             747:  7(f16vec4) ImageSampleImplicitLod 745 746 ConstOffset 722
+             748:  7(f16vec4) Load 706(texel)
+             749:  7(f16vec4) FAdd 748 747
                               Store 706(texel) 749
              750:         357 Load 359(s2DRect)
-             751:  154(fvec2) Load 156(f16c2)
-             752:    7(fvec4) ImageSampleImplicitLod 750 751 ConstOffset 722
-             753:    7(fvec4) Load 706(texel)
-             754:    7(fvec4) FAdd 753 752
+             751:154(f16vec2) Load 156(f16c2)
+             752:  7(f16vec4) ImageSampleImplicitLod 750 751 ConstOffset 722
+             753:  7(f16vec4) Load 706(texel)
+             754:  7(f16vec4) FAdd 753 752
                               Store 706(texel) 754
              755:         371 Load 373(s2DRectShadow)
              756:  167(fvec3) Load 169(c3)
              757:   52(float) CompositeExtract 756 2
-             758:    6(float) ImageSampleDrefImplicitLod 755 756 757 ConstOffset 722
+             758:6(float16_t) ImageSampleDrefImplicitLod 755 756 757 ConstOffset 722
              759:    208(ptr) AccessChain 706(texel) 207
-             760:    6(float) Load 759
-             761:    6(float) FAdd 760 758
+             760:6(float16_t) Load 759
+             761:6(float16_t) FAdd 760 758
              762:    208(ptr) AccessChain 706(texel) 207
                               Store 762 761
              763:         371 Load 373(s2DRectShadow)
-             764:  154(fvec2) Load 156(f16c2)
+             764:154(f16vec2) Load 156(f16c2)
              765:   52(float) Load 215(compare)
-             766:    6(float) ImageSampleDrefImplicitLod 763 764 765 ConstOffset 722
+             766:6(float16_t) ImageSampleDrefImplicitLod 763 764 765 ConstOffset 722
              767:    208(ptr) AccessChain 706(texel) 207
-             768:    6(float) Load 767
-             769:    6(float) FAdd 768 766
+             768:6(float16_t) Load 767
+             769:6(float16_t) FAdd 768 766
              770:    208(ptr) AccessChain 706(texel) 207
                               Store 770 769
              771:         199 Load 201(s1DShadow)
              772:  167(fvec3) Load 169(c3)
              773:   52(float) CompositeExtract 772 2
-             774:    6(float) ImageSampleDrefImplicitLod 771 772 773 ConstOffset 709
+             774:6(float16_t) ImageSampleDrefImplicitLod 771 772 773 ConstOffset 709
              775:    208(ptr) AccessChain 706(texel) 207
-             776:    6(float) Load 775
-             777:    6(float) FAdd 776 774
+             776:6(float16_t) Load 775
+             777:6(float16_t) FAdd 776 774
              778:    208(ptr) AccessChain 706(texel) 207
                               Store 778 777
              779:         199 Load 201(s1DShadow)
-             780:  154(fvec2) Load 156(f16c2)
+             780:154(f16vec2) Load 156(f16c2)
              781:   52(float) Load 215(compare)
-             782:    6(float) Load 137(f16bias)
-             783:    6(float) ImageSampleDrefImplicitLod 779 780 781 Bias ConstOffset 782 709
+             782:6(float16_t) Load 137(f16bias)
+             783:6(float16_t) ImageSampleDrefImplicitLod 779 780 781 Bias ConstOffset 782 709
              784:    208(ptr) AccessChain 706(texel) 207
-             785:    6(float) Load 784
-             786:    6(float) FAdd 785 783
+             785:6(float16_t) Load 784
+             786:6(float16_t) FAdd 785 783
              787:    208(ptr) AccessChain 706(texel) 207
                               Store 787 786
              788:         224 Load 226(s2DShadow)
              789:  167(fvec3) Load 169(c3)
              790:   52(float) CompositeExtract 789 2
-             791:    6(float) ImageSampleDrefImplicitLod 788 789 790 ConstOffset 722
+             791:6(float16_t) ImageSampleDrefImplicitLod 788 789 790 ConstOffset 722
              792:    208(ptr) AccessChain 706(texel) 207
-             793:    6(float) Load 792
-             794:    6(float) FAdd 793 791
+             793:6(float16_t) Load 792
+             794:6(float16_t) FAdd 793 791
              795:    208(ptr) AccessChain 706(texel) 207
                               Store 795 794
              796:         224 Load 226(s2DShadow)
-             797:  154(fvec2) Load 156(f16c2)
+             797:154(f16vec2) Load 156(f16c2)
              798:   52(float) Load 215(compare)
-             799:    6(float) Load 137(f16bias)
-             800:    6(float) ImageSampleDrefImplicitLod 796 797 798 Bias ConstOffset 799 722
+             799:6(float16_t) Load 137(f16bias)
+             800:6(float16_t) ImageSampleDrefImplicitLod 796 797 798 Bias ConstOffset 799 722
              801:    208(ptr) AccessChain 706(texel) 207
-             802:    6(float) Load 801
-             803:    6(float) FAdd 802 800
+             802:6(float16_t) Load 801
+             803:6(float16_t) FAdd 802 800
              804:    208(ptr) AccessChain 706(texel) 207
                               Store 804 803
              805:         269 Load 271(s1DArray)
              806:   53(fvec2) Load 148(c2)
-             807:    7(fvec4) ImageSampleImplicitLod 805 806 ConstOffset 709
-             808:    7(fvec4) Load 706(texel)
-             809:    7(fvec4) FAdd 808 807
+             807:  7(f16vec4) ImageSampleImplicitLod 805 806 ConstOffset 709
+             808:  7(f16vec4) Load 706(texel)
+             809:  7(f16vec4) FAdd 808 807
                               Store 706(texel) 809
              810:         269 Load 271(s1DArray)
-             811:  154(fvec2) Load 156(f16c2)
-             812:    6(float) Load 137(f16bias)
-             813:    7(fvec4) ImageSampleImplicitLod 810 811 Bias ConstOffset 812 709
-             814:    7(fvec4) Load 706(texel)
-             815:    7(fvec4) FAdd 814 813
+             811:154(f16vec2) Load 156(f16c2)
+             812:6(float16_t) Load 137(f16bias)
+             813:  7(f16vec4) ImageSampleImplicitLod 810 811 Bias ConstOffset 812 709
+             814:  7(f16vec4) Load 706(texel)
+             815:  7(f16vec4) FAdd 814 813
                               Store 706(texel) 815
              816:         284 Load 286(s2DArray)
              817:  167(fvec3) Load 169(c3)
-             818:    7(fvec4) ImageSampleImplicitLod 816 817 ConstOffset 722
-             819:    7(fvec4) Load 706(texel)
-             820:    7(fvec4) FAdd 819 818
+             818:  7(f16vec4) ImageSampleImplicitLod 816 817 ConstOffset 722
+             819:  7(f16vec4) Load 706(texel)
+             820:  7(f16vec4) FAdd 819 818
                               Store 706(texel) 820
              821:         284 Load 286(s2DArray)
-             822:  175(fvec3) Load 177(f16c3)
-             823:    6(float) Load 137(f16bias)
-             824:    7(fvec4) ImageSampleImplicitLod 821 822 Bias ConstOffset 823 722
-             825:    7(fvec4) Load 706(texel)
-             826:    7(fvec4) FAdd 825 824
+             822:175(f16vec3) Load 177(f16c3)
+             823:6(float16_t) Load 137(f16bias)
+             824:  7(f16vec4) ImageSampleImplicitLod 821 822 Bias ConstOffset 823 722
+             825:  7(f16vec4) Load 706(texel)
+             826:  7(f16vec4) FAdd 825 824
                               Store 706(texel) 826
              827:         316 Load 318(s1DArrayShadow)
              828:  167(fvec3) Load 169(c3)
              829:   52(float) CompositeExtract 828 2
-             830:    6(float) ImageSampleDrefImplicitLod 827 828 829 ConstOffset 709
+             830:6(float16_t) ImageSampleDrefImplicitLod 827 828 829 ConstOffset 709
              831:    208(ptr) AccessChain 706(texel) 207
-             832:    6(float) Load 831
-             833:    6(float) FAdd 832 830
+             832:6(float16_t) Load 831
+             833:6(float16_t) FAdd 832 830
              834:    208(ptr) AccessChain 706(texel) 207
                               Store 834 833
              835:         316 Load 318(s1DArrayShadow)
-             836:  154(fvec2) Load 156(f16c2)
+             836:154(f16vec2) Load 156(f16c2)
              837:   52(float) Load 215(compare)
-             838:    6(float) Load 137(f16bias)
-             839:    6(float) ImageSampleDrefImplicitLod 835 836 837 Bias ConstOffset 838 709
+             838:6(float16_t) Load 137(f16bias)
+             839:6(float16_t) ImageSampleDrefImplicitLod 835 836 837 Bias ConstOffset 838 709
              840:    208(ptr) AccessChain 706(texel) 207
-             841:    6(float) Load 840
-             842:    6(float) FAdd 841 839
+             841:6(float16_t) Load 840
+             842:6(float16_t) FAdd 841 839
              843:    208(ptr) AccessChain 706(texel) 207
                               Store 843 842
              844:         337 Load 339(s2DArrayShadow)
              845:  249(fvec4) Load 251(c4)
              846:   52(float) CompositeExtract 845 3
-             847:    6(float) ImageSampleDrefImplicitLod 844 845 846 ConstOffset 722
+             847:6(float16_t) ImageSampleDrefImplicitLod 844 845 846 ConstOffset 722
              848:    208(ptr) AccessChain 706(texel) 207
-             849:    6(float) Load 848
-             850:    6(float) FAdd 849 847
+             849:6(float16_t) Load 848
+             850:6(float16_t) FAdd 849 847
              851:    208(ptr) AccessChain 706(texel) 207
                               Store 851 850
              852:         337 Load 339(s2DArrayShadow)
-             853:  175(fvec3) Load 177(f16c3)
+             853:175(f16vec3) Load 177(f16c3)
              854:   52(float) Load 215(compare)
-             855:    6(float) ImageSampleDrefImplicitLod 852 853 854 ConstOffset 722
+             855:6(float16_t) ImageSampleDrefImplicitLod 852 853 854 ConstOffset 722
              856:    208(ptr) AccessChain 706(texel) 207
-             857:    6(float) Load 856
-             858:    6(float) FAdd 857 855
+             857:6(float16_t) Load 856
+             858:6(float16_t) FAdd 857 855
              859:    208(ptr) AccessChain 706(texel) 207
                               Store 859 858
-             860:    7(fvec4) Load 706(texel)
+             860:  7(f16vec4) Load 706(texel)
                               ReturnValue 860
                               FunctionEnd
-17(testTextureProjOffset():    7(fvec4) Function None 8
+17(testTextureProjOffset():  7(f16vec4) Function None 8
               18:             Label
       863(texel):     64(ptr) Variable Function
                               Store 863(texel) 121
              864:         123 Load 125(s1D)
              865:   53(fvec2) Load 148(c2)
-             866:    7(fvec4) ImageSampleProjImplicitLod 864 865 ConstOffset 709
-             867:    7(fvec4) Load 863(texel)
-             868:    7(fvec4) FAdd 867 866
+             866:  7(f16vec4) ImageSampleProjImplicitLod 864 865 ConstOffset 709
+             867:  7(f16vec4) Load 863(texel)
+             868:  7(f16vec4) FAdd 867 866
                               Store 863(texel) 868
              869:         123 Load 125(s1D)
-             870:  154(fvec2) Load 156(f16c2)
-             871:    6(float) Load 137(f16bias)
-             872:    7(fvec4) ImageSampleProjImplicitLod 869 870 Bias ConstOffset 871 709
-             873:    7(fvec4) Load 863(texel)
-             874:    7(fvec4) FAdd 873 872
+             870:154(f16vec2) Load 156(f16c2)
+             871:6(float16_t) Load 137(f16bias)
+             872:  7(f16vec4) ImageSampleProjImplicitLod 869 870 Bias ConstOffset 871 709
+             873:  7(f16vec4) Load 863(texel)
+             874:  7(f16vec4) FAdd 873 872
                               Store 863(texel) 874
              875:         123 Load 125(s1D)
              876:  249(fvec4) Load 251(c4)
              877:   52(float) CompositeExtract 876 3
              878:  249(fvec4) CompositeInsert 877 876 1
-             879:    7(fvec4) ImageSampleProjImplicitLod 875 878 ConstOffset 709
-             880:    7(fvec4) Load 863(texel)
-             881:    7(fvec4) FAdd 880 879
+             879:  7(f16vec4) ImageSampleProjImplicitLod 875 878 ConstOffset 709
+             880:  7(f16vec4) Load 863(texel)
+             881:  7(f16vec4) FAdd 880 879
                               Store 863(texel) 881
              882:         123 Load 125(s1D)
-             883:    7(fvec4) Load 309(f16c4)
-             884:    6(float) Load 137(f16bias)
-             885:    6(float) CompositeExtract 883 3
-             886:    7(fvec4) CompositeInsert 885 883 1
-             887:    7(fvec4) ImageSampleProjImplicitLod 882 886 Bias ConstOffset 884 709
-             888:    7(fvec4) Load 863(texel)
-             889:    7(fvec4) FAdd 888 887
+             883:  7(f16vec4) Load 309(f16c4)
+             884:6(float16_t) Load 137(f16bias)
+             885:6(float16_t) CompositeExtract 883 3
+             886:  7(f16vec4) CompositeInsert 885 883 1
+             887:  7(f16vec4) ImageSampleProjImplicitLod 882 886 Bias ConstOffset 884 709
+             888:  7(f16vec4) Load 863(texel)
+             889:  7(f16vec4) FAdd 888 887
                               Store 863(texel) 889
              890:         143 Load 145(s2D)
              891:  167(fvec3) Load 169(c3)
-             892:    7(fvec4) ImageSampleProjImplicitLod 890 891 ConstOffset 722
-             893:    7(fvec4) Load 863(texel)
-             894:    7(fvec4) FAdd 893 892
+             892:  7(f16vec4) ImageSampleProjImplicitLod 890 891 ConstOffset 722
+             893:  7(f16vec4) Load 863(texel)
+             894:  7(f16vec4) FAdd 893 892
                               Store 863(texel) 894
              895:         143 Load 145(s2D)
-             896:  175(fvec3) Load 177(f16c3)
-             897:    6(float) Load 137(f16bias)
-             898:    7(fvec4) ImageSampleProjImplicitLod 895 896 Bias ConstOffset 897 722
-             899:    7(fvec4) Load 863(texel)
-             900:    7(fvec4) FAdd 899 898
+             896:175(f16vec3) Load 177(f16c3)
+             897:6(float16_t) Load 137(f16bias)
+             898:  7(f16vec4) ImageSampleProjImplicitLod 895 896 Bias ConstOffset 897 722
+             899:  7(f16vec4) Load 863(texel)
+             900:  7(f16vec4) FAdd 899 898
                               Store 863(texel) 900
              901:         143 Load 145(s2D)
              902:  249(fvec4) Load 251(c4)
              903:   52(float) CompositeExtract 902 3
              904:  249(fvec4) CompositeInsert 903 902 2
-             905:    7(fvec4) ImageSampleProjImplicitLod 901 904 ConstOffset 722
-             906:    7(fvec4) Load 863(texel)
-             907:    7(fvec4) FAdd 906 905
+             905:  7(f16vec4) ImageSampleProjImplicitLod 901 904 ConstOffset 722
+             906:  7(f16vec4) Load 863(texel)
+             907:  7(f16vec4) FAdd 906 905
                               Store 863(texel) 907
              908:         143 Load 145(s2D)
-             909:    7(fvec4) Load 309(f16c4)
-             910:    6(float) Load 137(f16bias)
-             911:    6(float) CompositeExtract 909 3
-             912:    7(fvec4) CompositeInsert 911 909 2
-             913:    7(fvec4) ImageSampleProjImplicitLod 908 912 Bias ConstOffset 910 722
-             914:    7(fvec4) Load 863(texel)
-             915:    7(fvec4) FAdd 914 913
+             909:  7(f16vec4) Load 309(f16c4)
+             910:6(float16_t) Load 137(f16bias)
+             911:6(float16_t) CompositeExtract 909 3
+             912:  7(f16vec4) CompositeInsert 911 909 2
+             913:  7(f16vec4) ImageSampleProjImplicitLod 908 912 Bias ConstOffset 910 722
+             914:  7(f16vec4) Load 863(texel)
+             915:  7(f16vec4) FAdd 914 913
                               Store 863(texel) 915
              916:         163 Load 165(s3D)
              917:  249(fvec4) Load 251(c4)
-             918:    7(fvec4) ImageSampleProjImplicitLod 916 917 ConstOffset 735
-             919:    7(fvec4) Load 863(texel)
-             920:    7(fvec4) FAdd 919 918
+             918:  7(f16vec4) ImageSampleProjImplicitLod 916 917 ConstOffset 735
+             919:  7(f16vec4) Load 863(texel)
+             920:  7(f16vec4) FAdd 919 918
                               Store 863(texel) 920
              921:         163 Load 165(s3D)
-             922:    7(fvec4) Load 309(f16c4)
-             923:    6(float) Load 137(f16bias)
-             924:    7(fvec4) ImageSampleProjImplicitLod 921 922 Bias ConstOffset 923 735
-             925:    7(fvec4) Load 863(texel)
-             926:    7(fvec4) FAdd 925 924
+             922:  7(f16vec4) Load 309(f16c4)
+             923:6(float16_t) Load 137(f16bias)
+             924:  7(f16vec4) ImageSampleProjImplicitLod 921 922 Bias ConstOffset 923 735
+             925:  7(f16vec4) Load 863(texel)
+             926:  7(f16vec4) FAdd 925 924
                               Store 863(texel) 926
              927:         357 Load 359(s2DRect)
              928:  167(fvec3) Load 169(c3)
-             929:    7(fvec4) ImageSampleProjImplicitLod 927 928 ConstOffset 722
-             930:    7(fvec4) Load 863(texel)
-             931:    7(fvec4) FAdd 930 929
+             929:  7(f16vec4) ImageSampleProjImplicitLod 927 928 ConstOffset 722
+             930:  7(f16vec4) Load 863(texel)
+             931:  7(f16vec4) FAdd 930 929
                               Store 863(texel) 931
              932:         357 Load 359(s2DRect)
-             933:  175(fvec3) Load 177(f16c3)
-             934:    7(fvec4) ImageSampleProjImplicitLod 932 933 ConstOffset 722
-             935:    7(fvec4) Load 863(texel)
-             936:    7(fvec4) FAdd 935 934
+             933:175(f16vec3) Load 177(f16c3)
+             934:  7(f16vec4) ImageSampleProjImplicitLod 932 933 ConstOffset 722
+             935:  7(f16vec4) Load 863(texel)
+             936:  7(f16vec4) FAdd 935 934
                               Store 863(texel) 936
              937:         357 Load 359(s2DRect)
              938:  249(fvec4) Load 251(c4)
              939:   52(float) CompositeExtract 938 3
              940:  249(fvec4) CompositeInsert 939 938 2
-             941:    7(fvec4) ImageSampleProjImplicitLod 937 940 ConstOffset 722
-             942:    7(fvec4) Load 863(texel)
-             943:    7(fvec4) FAdd 942 941
+             941:  7(f16vec4) ImageSampleProjImplicitLod 937 940 ConstOffset 722
+             942:  7(f16vec4) Load 863(texel)
+             943:  7(f16vec4) FAdd 942 941
                               Store 863(texel) 943
              944:         357 Load 359(s2DRect)
-             945:    7(fvec4) Load 309(f16c4)
-             946:    6(float) CompositeExtract 945 3
-             947:    7(fvec4) CompositeInsert 946 945 2
-             948:    7(fvec4) ImageSampleProjImplicitLod 944 947 ConstOffset 722
-             949:    7(fvec4) Load 863(texel)
-             950:    7(fvec4) FAdd 949 948
+             945:  7(f16vec4) Load 309(f16c4)
+             946:6(float16_t) CompositeExtract 945 3
+             947:  7(f16vec4) CompositeInsert 946 945 2
+             948:  7(f16vec4) ImageSampleProjImplicitLod 944 947 ConstOffset 722
+             949:  7(f16vec4) Load 863(texel)
+             950:  7(f16vec4) FAdd 949 948
                               Store 863(texel) 950
              951:         371 Load 373(s2DRectShadow)
              952:  249(fvec4) Load 251(c4)
              953:   52(float) CompositeExtract 952 2
              954:   52(float) CompositeExtract 952 3
              955:  249(fvec4) CompositeInsert 954 952 2
-             956:    6(float) ImageSampleProjDrefImplicitLod 951 955 953 ConstOffset 722
+             956:6(float16_t) ImageSampleProjDrefImplicitLod 951 955 953 ConstOffset 722
              957:    208(ptr) AccessChain 863(texel) 207
-             958:    6(float) Load 957
-             959:    6(float) FAdd 958 956
+             958:6(float16_t) Load 957
+             959:6(float16_t) FAdd 958 956
              960:    208(ptr) AccessChain 863(texel) 207
                               Store 960 959
              961:         371 Load 373(s2DRectShadow)
-             962:  175(fvec3) Load 177(f16c3)
+             962:175(f16vec3) Load 177(f16c3)
              963:   52(float) Load 215(compare)
-             964:    6(float) ImageSampleProjDrefImplicitLod 961 962 963 ConstOffset 722
+             964:6(float16_t) ImageSampleProjDrefImplicitLod 961 962 963 ConstOffset 722
              965:    208(ptr) AccessChain 863(texel) 207
-             966:    6(float) Load 965
-             967:    6(float) FAdd 966 964
+             966:6(float16_t) Load 965
+             967:6(float16_t) FAdd 966 964
              968:    208(ptr) AccessChain 863(texel) 207
                               Store 968 967
              969:         199 Load 201(s1DShadow)
@@ -1628,22 +1628,22 @@
              971:   52(float) CompositeExtract 970 2
              972:   52(float) CompositeExtract 970 3
              973:  249(fvec4) CompositeInsert 972 970 1
-             974:    6(float) ImageSampleProjDrefImplicitLod 969 973 971 ConstOffset 709
+             974:6(float16_t) ImageSampleProjDrefImplicitLod 969 973 971 ConstOffset 709
              975:    208(ptr) AccessChain 863(texel) 207
-             976:    6(float) Load 975
-             977:    6(float) FAdd 976 974
+             976:6(float16_t) Load 975
+             977:6(float16_t) FAdd 976 974
              978:    208(ptr) AccessChain 863(texel) 207
                               Store 978 977
              979:         199 Load 201(s1DShadow)
-             980:  175(fvec3) Load 177(f16c3)
+             980:175(f16vec3) Load 177(f16c3)
              981:   52(float) Load 215(compare)
-             982:    6(float) Load 137(f16bias)
-             983:    6(float) CompositeExtract 980 2
-             984:  175(fvec3) CompositeInsert 983 980 1
-             985:    6(float) ImageSampleProjDrefImplicitLod 979 984 981 Bias ConstOffset 982 709
+             982:6(float16_t) Load 137(f16bias)
+             983:6(float16_t) CompositeExtract 980 2
+             984:175(f16vec3) CompositeInsert 983 980 1
+             985:6(float16_t) ImageSampleProjDrefImplicitLod 979 984 981 Bias ConstOffset 982 709
              986:    208(ptr) AccessChain 863(texel) 207
-             987:    6(float) Load 986
-             988:    6(float) FAdd 987 985
+             987:6(float16_t) Load 986
+             988:6(float16_t) FAdd 987 985
              989:    208(ptr) AccessChain 863(texel) 207
                               Store 989 988
              990:         224 Load 226(s2DShadow)
@@ -1651,243 +1651,243 @@
              992:   52(float) CompositeExtract 991 2
              993:   52(float) CompositeExtract 991 3
              994:  249(fvec4) CompositeInsert 993 991 2
-             995:    6(float) ImageSampleProjDrefImplicitLod 990 994 992 ConstOffset 722
+             995:6(float16_t) ImageSampleProjDrefImplicitLod 990 994 992 ConstOffset 722
              996:    208(ptr) AccessChain 863(texel) 207
-             997:    6(float) Load 996
-             998:    6(float) FAdd 997 995
+             997:6(float16_t) Load 996
+             998:6(float16_t) FAdd 997 995
              999:    208(ptr) AccessChain 863(texel) 207
                               Store 999 998
             1000:         224 Load 226(s2DShadow)
-            1001:  175(fvec3) Load 177(f16c3)
+            1001:175(f16vec3) Load 177(f16c3)
             1002:   52(float) Load 215(compare)
-            1003:    6(float) Load 137(f16bias)
-            1004:    6(float) ImageSampleProjDrefImplicitLod 1000 1001 1002 Bias ConstOffset 1003 722
+            1003:6(float16_t) Load 137(f16bias)
+            1004:6(float16_t) ImageSampleProjDrefImplicitLod 1000 1001 1002 Bias ConstOffset 1003 722
             1005:    208(ptr) AccessChain 863(texel) 207
-            1006:    6(float) Load 1005
-            1007:    6(float) FAdd 1006 1004
+            1006:6(float16_t) Load 1005
+            1007:6(float16_t) FAdd 1006 1004
             1008:    208(ptr) AccessChain 863(texel) 207
                               Store 1008 1007
-            1009:    7(fvec4) Load 863(texel)
+            1009:  7(f16vec4) Load 863(texel)
                               ReturnValue 1009
                               FunctionEnd
-19(testTextureLodOffset():    7(fvec4) Function None 8
+19(testTextureLodOffset():  7(f16vec4) Function None 8
               20:             Label
      1012(texel):     64(ptr) Variable Function
                               Store 1012(texel) 121
             1013:         123 Load 125(s1D)
             1014:   52(float) Load 128(c1)
             1015:   52(float) Load 565(lod)
-            1016:    7(fvec4) ImageSampleExplicitLod 1013 1014 Lod ConstOffset 1015 709
-            1017:    7(fvec4) Load 1012(texel)
-            1018:    7(fvec4) FAdd 1017 1016
+            1016:  7(f16vec4) ImageSampleExplicitLod 1013 1014 Lod ConstOffset 1015 709
+            1017:  7(f16vec4) Load 1012(texel)
+            1018:  7(f16vec4) FAdd 1017 1016
                               Store 1012(texel) 1018
             1019:         123 Load 125(s1D)
-            1020:    6(float) Load 135(f16c1)
-            1021:    6(float) Load 572(f16lod)
-            1022:    7(fvec4) ImageSampleExplicitLod 1019 1020 Lod ConstOffset 1021 709
-            1023:    7(fvec4) Load 1012(texel)
-            1024:    7(fvec4) FAdd 1023 1022
+            1020:6(float16_t) Load 135(f16c1)
+            1021:6(float16_t) Load 572(f16lod)
+            1022:  7(f16vec4) ImageSampleExplicitLod 1019 1020 Lod ConstOffset 1021 709
+            1023:  7(f16vec4) Load 1012(texel)
+            1024:  7(f16vec4) FAdd 1023 1022
                               Store 1012(texel) 1024
             1025:         143 Load 145(s2D)
             1026:   53(fvec2) Load 148(c2)
             1027:   52(float) Load 565(lod)
-            1028:    7(fvec4) ImageSampleExplicitLod 1025 1026 Lod ConstOffset 1027 722
-            1029:    7(fvec4) Load 1012(texel)
-            1030:    7(fvec4) FAdd 1029 1028
+            1028:  7(f16vec4) ImageSampleExplicitLod 1025 1026 Lod ConstOffset 1027 722
+            1029:  7(f16vec4) Load 1012(texel)
+            1030:  7(f16vec4) FAdd 1029 1028
                               Store 1012(texel) 1030
             1031:         143 Load 145(s2D)
-            1032:  154(fvec2) Load 156(f16c2)
-            1033:    6(float) Load 572(f16lod)
-            1034:    7(fvec4) ImageSampleExplicitLod 1031 1032 Lod ConstOffset 1033 722
-            1035:    7(fvec4) Load 1012(texel)
-            1036:    7(fvec4) FAdd 1035 1034
+            1032:154(f16vec2) Load 156(f16c2)
+            1033:6(float16_t) Load 572(f16lod)
+            1034:  7(f16vec4) ImageSampleExplicitLod 1031 1032 Lod ConstOffset 1033 722
+            1035:  7(f16vec4) Load 1012(texel)
+            1036:  7(f16vec4) FAdd 1035 1034
                               Store 1012(texel) 1036
             1037:         163 Load 165(s3D)
             1038:  167(fvec3) Load 169(c3)
             1039:   52(float) Load 565(lod)
-            1040:    7(fvec4) ImageSampleExplicitLod 1037 1038 Lod ConstOffset 1039 735
-            1041:    7(fvec4) Load 1012(texel)
-            1042:    7(fvec4) FAdd 1041 1040
+            1040:  7(f16vec4) ImageSampleExplicitLod 1037 1038 Lod ConstOffset 1039 735
+            1041:  7(f16vec4) Load 1012(texel)
+            1042:  7(f16vec4) FAdd 1041 1040
                               Store 1012(texel) 1042
             1043:         163 Load 165(s3D)
-            1044:  175(fvec3) Load 177(f16c3)
-            1045:    6(float) Load 572(f16lod)
-            1046:    7(fvec4) ImageSampleExplicitLod 1043 1044 Lod ConstOffset 1045 735
-            1047:    7(fvec4) Load 1012(texel)
-            1048:    7(fvec4) FAdd 1047 1046
+            1044:175(f16vec3) Load 177(f16c3)
+            1045:6(float16_t) Load 572(f16lod)
+            1046:  7(f16vec4) ImageSampleExplicitLod 1043 1044 Lod ConstOffset 1045 735
+            1047:  7(f16vec4) Load 1012(texel)
+            1048:  7(f16vec4) FAdd 1047 1046
                               Store 1012(texel) 1048
             1049:         199 Load 201(s1DShadow)
             1050:  167(fvec3) Load 169(c3)
             1051:   52(float) Load 565(lod)
             1052:   52(float) CompositeExtract 1050 2
-            1053:    6(float) ImageSampleDrefExplicitLod 1049 1050 1052 Lod ConstOffset 1051 709
+            1053:6(float16_t) ImageSampleDrefExplicitLod 1049 1050 1052 Lod ConstOffset 1051 709
             1054:    208(ptr) AccessChain 1012(texel) 207
-            1055:    6(float) Load 1054
-            1056:    6(float) FAdd 1055 1053
+            1055:6(float16_t) Load 1054
+            1056:6(float16_t) FAdd 1055 1053
             1057:    208(ptr) AccessChain 1012(texel) 207
                               Store 1057 1056
             1058:         199 Load 201(s1DShadow)
-            1059:  154(fvec2) Load 156(f16c2)
+            1059:154(f16vec2) Load 156(f16c2)
             1060:   52(float) Load 215(compare)
-            1061:    6(float) Load 572(f16lod)
-            1062:    6(float) ImageSampleDrefExplicitLod 1058 1059 1060 Lod ConstOffset 1061 709
+            1061:6(float16_t) Load 572(f16lod)
+            1062:6(float16_t) ImageSampleDrefExplicitLod 1058 1059 1060 Lod ConstOffset 1061 709
             1063:    208(ptr) AccessChain 1012(texel) 207
-            1064:    6(float) Load 1063
-            1065:    6(float) FAdd 1064 1062
+            1064:6(float16_t) Load 1063
+            1065:6(float16_t) FAdd 1064 1062
             1066:    208(ptr) AccessChain 1012(texel) 207
                               Store 1066 1065
             1067:         224 Load 226(s2DShadow)
             1068:  167(fvec3) Load 169(c3)
             1069:   52(float) Load 565(lod)
             1070:   52(float) CompositeExtract 1068 2
-            1071:    6(float) ImageSampleDrefExplicitLod 1067 1068 1070 Lod ConstOffset 1069 722
+            1071:6(float16_t) ImageSampleDrefExplicitLod 1067 1068 1070 Lod ConstOffset 1069 722
             1072:    208(ptr) AccessChain 1012(texel) 207
-            1073:    6(float) Load 1072
-            1074:    6(float) FAdd 1073 1071
+            1073:6(float16_t) Load 1072
+            1074:6(float16_t) FAdd 1073 1071
             1075:    208(ptr) AccessChain 1012(texel) 207
                               Store 1075 1074
             1076:         224 Load 226(s2DShadow)
-            1077:  154(fvec2) Load 156(f16c2)
+            1077:154(f16vec2) Load 156(f16c2)
             1078:   52(float) Load 215(compare)
-            1079:    6(float) Load 572(f16lod)
-            1080:    6(float) ImageSampleDrefExplicitLod 1076 1077 1078 Lod ConstOffset 1079 722
+            1079:6(float16_t) Load 572(f16lod)
+            1080:6(float16_t) ImageSampleDrefExplicitLod 1076 1077 1078 Lod ConstOffset 1079 722
             1081:    208(ptr) AccessChain 1012(texel) 207
-            1082:    6(float) Load 1081
-            1083:    6(float) FAdd 1082 1080
+            1082:6(float16_t) Load 1081
+            1083:6(float16_t) FAdd 1082 1080
             1084:    208(ptr) AccessChain 1012(texel) 207
                               Store 1084 1083
             1085:         269 Load 271(s1DArray)
             1086:   53(fvec2) Load 148(c2)
             1087:   52(float) Load 565(lod)
-            1088:    7(fvec4) ImageSampleExplicitLod 1085 1086 Lod ConstOffset 1087 709
-            1089:    7(fvec4) Load 1012(texel)
-            1090:    7(fvec4) FAdd 1089 1088
+            1088:  7(f16vec4) ImageSampleExplicitLod 1085 1086 Lod ConstOffset 1087 709
+            1089:  7(f16vec4) Load 1012(texel)
+            1090:  7(f16vec4) FAdd 1089 1088
                               Store 1012(texel) 1090
             1091:         269 Load 271(s1DArray)
-            1092:  154(fvec2) Load 156(f16c2)
-            1093:    6(float) Load 572(f16lod)
-            1094:    7(fvec4) ImageSampleExplicitLod 1091 1092 Lod ConstOffset 1093 709
-            1095:    7(fvec4) Load 1012(texel)
-            1096:    7(fvec4) FAdd 1095 1094
+            1092:154(f16vec2) Load 156(f16c2)
+            1093:6(float16_t) Load 572(f16lod)
+            1094:  7(f16vec4) ImageSampleExplicitLod 1091 1092 Lod ConstOffset 1093 709
+            1095:  7(f16vec4) Load 1012(texel)
+            1096:  7(f16vec4) FAdd 1095 1094
                               Store 1012(texel) 1096
             1097:         284 Load 286(s2DArray)
             1098:  167(fvec3) Load 169(c3)
             1099:   52(float) Load 565(lod)
-            1100:    7(fvec4) ImageSampleExplicitLod 1097 1098 Lod ConstOffset 1099 722
-            1101:    7(fvec4) Load 1012(texel)
-            1102:    7(fvec4) FAdd 1101 1100
+            1100:  7(f16vec4) ImageSampleExplicitLod 1097 1098 Lod ConstOffset 1099 722
+            1101:  7(f16vec4) Load 1012(texel)
+            1102:  7(f16vec4) FAdd 1101 1100
                               Store 1012(texel) 1102
             1103:         284 Load 286(s2DArray)
-            1104:  175(fvec3) Load 177(f16c3)
-            1105:    6(float) Load 572(f16lod)
-            1106:    7(fvec4) ImageSampleExplicitLod 1103 1104 Lod ConstOffset 1105 722
-            1107:    7(fvec4) Load 1012(texel)
-            1108:    7(fvec4) FAdd 1107 1106
+            1104:175(f16vec3) Load 177(f16c3)
+            1105:6(float16_t) Load 572(f16lod)
+            1106:  7(f16vec4) ImageSampleExplicitLod 1103 1104 Lod ConstOffset 1105 722
+            1107:  7(f16vec4) Load 1012(texel)
+            1108:  7(f16vec4) FAdd 1107 1106
                               Store 1012(texel) 1108
             1109:         316 Load 318(s1DArrayShadow)
             1110:  167(fvec3) Load 169(c3)
             1111:   52(float) Load 565(lod)
             1112:   52(float) CompositeExtract 1110 2
-            1113:    6(float) ImageSampleDrefExplicitLod 1109 1110 1112 Lod ConstOffset 1111 709
+            1113:6(float16_t) ImageSampleDrefExplicitLod 1109 1110 1112 Lod ConstOffset 1111 709
             1114:    208(ptr) AccessChain 1012(texel) 207
-            1115:    6(float) Load 1114
-            1116:    6(float) FAdd 1115 1113
+            1115:6(float16_t) Load 1114
+            1116:6(float16_t) FAdd 1115 1113
             1117:    208(ptr) AccessChain 1012(texel) 207
                               Store 1117 1116
             1118:         316 Load 318(s1DArrayShadow)
-            1119:  154(fvec2) Load 156(f16c2)
+            1119:154(f16vec2) Load 156(f16c2)
             1120:   52(float) Load 215(compare)
-            1121:    6(float) Load 572(f16lod)
-            1122:    6(float) ImageSampleDrefExplicitLod 1118 1119 1120 Lod ConstOffset 1121 709
+            1121:6(float16_t) Load 572(f16lod)
+            1122:6(float16_t) ImageSampleDrefExplicitLod 1118 1119 1120 Lod ConstOffset 1121 709
             1123:    208(ptr) AccessChain 1012(texel) 207
-            1124:    6(float) Load 1123
-            1125:    6(float) FAdd 1124 1122
+            1124:6(float16_t) Load 1123
+            1125:6(float16_t) FAdd 1124 1122
             1126:    208(ptr) AccessChain 1012(texel) 207
                               Store 1126 1125
-            1127:    7(fvec4) Load 1012(texel)
+            1127:  7(f16vec4) Load 1012(texel)
                               ReturnValue 1127
                               FunctionEnd
-21(testTextureProjLodOffset():    7(fvec4) Function None 8
+21(testTextureProjLodOffset():  7(f16vec4) Function None 8
               22:             Label
      1130(texel):     64(ptr) Variable Function
                               Store 1130(texel) 121
             1131:         123 Load 125(s1D)
             1132:   53(fvec2) Load 148(c2)
             1133:   52(float) Load 565(lod)
-            1134:    7(fvec4) ImageSampleProjExplicitLod 1131 1132 Lod ConstOffset 1133 709
-            1135:    7(fvec4) Load 1130(texel)
-            1136:    7(fvec4) FAdd 1135 1134
+            1134:  7(f16vec4) ImageSampleProjExplicitLod 1131 1132 Lod ConstOffset 1133 709
+            1135:  7(f16vec4) Load 1130(texel)
+            1136:  7(f16vec4) FAdd 1135 1134
                               Store 1130(texel) 1136
             1137:         123 Load 125(s1D)
-            1138:  154(fvec2) Load 156(f16c2)
-            1139:    6(float) Load 572(f16lod)
-            1140:    7(fvec4) ImageSampleProjExplicitLod 1137 1138 Lod ConstOffset 1139 709
-            1141:    7(fvec4) Load 1130(texel)
-            1142:    7(fvec4) FAdd 1141 1140
+            1138:154(f16vec2) Load 156(f16c2)
+            1139:6(float16_t) Load 572(f16lod)
+            1140:  7(f16vec4) ImageSampleProjExplicitLod 1137 1138 Lod ConstOffset 1139 709
+            1141:  7(f16vec4) Load 1130(texel)
+            1142:  7(f16vec4) FAdd 1141 1140
                               Store 1130(texel) 1142
             1143:         123 Load 125(s1D)
             1144:  249(fvec4) Load 251(c4)
             1145:   52(float) Load 565(lod)
             1146:   52(float) CompositeExtract 1144 3
             1147:  249(fvec4) CompositeInsert 1146 1144 1
-            1148:    7(fvec4) ImageSampleProjExplicitLod 1143 1147 Lod ConstOffset 1145 709
-            1149:    7(fvec4) Load 1130(texel)
-            1150:    7(fvec4) FAdd 1149 1148
+            1148:  7(f16vec4) ImageSampleProjExplicitLod 1143 1147 Lod ConstOffset 1145 709
+            1149:  7(f16vec4) Load 1130(texel)
+            1150:  7(f16vec4) FAdd 1149 1148
                               Store 1130(texel) 1150
             1151:         123 Load 125(s1D)
-            1152:    7(fvec4) Load 309(f16c4)
-            1153:    6(float) Load 572(f16lod)
-            1154:    6(float) CompositeExtract 1152 3
-            1155:    7(fvec4) CompositeInsert 1154 1152 1
-            1156:    7(fvec4) ImageSampleProjExplicitLod 1151 1155 Lod ConstOffset 1153 709
-            1157:    7(fvec4) Load 1130(texel)
-            1158:    7(fvec4) FAdd 1157 1156
+            1152:  7(f16vec4) Load 309(f16c4)
+            1153:6(float16_t) Load 572(f16lod)
+            1154:6(float16_t) CompositeExtract 1152 3
+            1155:  7(f16vec4) CompositeInsert 1154 1152 1
+            1156:  7(f16vec4) ImageSampleProjExplicitLod 1151 1155 Lod ConstOffset 1153 709
+            1157:  7(f16vec4) Load 1130(texel)
+            1158:  7(f16vec4) FAdd 1157 1156
                               Store 1130(texel) 1158
             1159:         143 Load 145(s2D)
             1160:  167(fvec3) Load 169(c3)
             1161:   52(float) Load 565(lod)
-            1162:    7(fvec4) ImageSampleProjExplicitLod 1159 1160 Lod ConstOffset 1161 722
-            1163:    7(fvec4) Load 1130(texel)
-            1164:    7(fvec4) FAdd 1163 1162
+            1162:  7(f16vec4) ImageSampleProjExplicitLod 1159 1160 Lod ConstOffset 1161 722
+            1163:  7(f16vec4) Load 1130(texel)
+            1164:  7(f16vec4) FAdd 1163 1162
                               Store 1130(texel) 1164
             1165:         143 Load 145(s2D)
-            1166:  175(fvec3) Load 177(f16c3)
-            1167:    6(float) Load 572(f16lod)
-            1168:    7(fvec4) ImageSampleProjExplicitLod 1165 1166 Lod ConstOffset 1167 722
-            1169:    7(fvec4) Load 1130(texel)
-            1170:    7(fvec4) FAdd 1169 1168
+            1166:175(f16vec3) Load 177(f16c3)
+            1167:6(float16_t) Load 572(f16lod)
+            1168:  7(f16vec4) ImageSampleProjExplicitLod 1165 1166 Lod ConstOffset 1167 722
+            1169:  7(f16vec4) Load 1130(texel)
+            1170:  7(f16vec4) FAdd 1169 1168
                               Store 1130(texel) 1170
             1171:         143 Load 145(s2D)
             1172:  249(fvec4) Load 251(c4)
             1173:   52(float) Load 565(lod)
             1174:   52(float) CompositeExtract 1172 3
             1175:  249(fvec4) CompositeInsert 1174 1172 2
-            1176:    7(fvec4) ImageSampleProjExplicitLod 1171 1175 Lod ConstOffset 1173 722
-            1177:    7(fvec4) Load 1130(texel)
-            1178:    7(fvec4) FAdd 1177 1176
+            1176:  7(f16vec4) ImageSampleProjExplicitLod 1171 1175 Lod ConstOffset 1173 722
+            1177:  7(f16vec4) Load 1130(texel)
+            1178:  7(f16vec4) FAdd 1177 1176
                               Store 1130(texel) 1178
             1179:         143 Load 145(s2D)
-            1180:    7(fvec4) Load 309(f16c4)
-            1181:    6(float) Load 572(f16lod)
-            1182:    6(float) CompositeExtract 1180 3
-            1183:    7(fvec4) CompositeInsert 1182 1180 2
-            1184:    7(fvec4) ImageSampleProjExplicitLod 1179 1183 Lod ConstOffset 1181 722
-            1185:    7(fvec4) Load 1130(texel)
-            1186:    7(fvec4) FAdd 1185 1184
+            1180:  7(f16vec4) Load 309(f16c4)
+            1181:6(float16_t) Load 572(f16lod)
+            1182:6(float16_t) CompositeExtract 1180 3
+            1183:  7(f16vec4) CompositeInsert 1182 1180 2
+            1184:  7(f16vec4) ImageSampleProjExplicitLod 1179 1183 Lod ConstOffset 1181 722
+            1185:  7(f16vec4) Load 1130(texel)
+            1186:  7(f16vec4) FAdd 1185 1184
                               Store 1130(texel) 1186
             1187:         163 Load 165(s3D)
             1188:  249(fvec4) Load 251(c4)
             1189:   52(float) Load 565(lod)
-            1190:    7(fvec4) ImageSampleProjExplicitLod 1187 1188 Lod ConstOffset 1189 735
-            1191:    7(fvec4) Load 1130(texel)
-            1192:    7(fvec4) FAdd 1191 1190
+            1190:  7(f16vec4) ImageSampleProjExplicitLod 1187 1188 Lod ConstOffset 1189 735
+            1191:  7(f16vec4) Load 1130(texel)
+            1192:  7(f16vec4) FAdd 1191 1190
                               Store 1130(texel) 1192
             1193:         163 Load 165(s3D)
-            1194:    7(fvec4) Load 309(f16c4)
-            1195:    6(float) Load 572(f16lod)
-            1196:    7(fvec4) ImageSampleProjExplicitLod 1193 1194 Lod ConstOffset 1195 735
-            1197:    7(fvec4) Load 1130(texel)
-            1198:    7(fvec4) FAdd 1197 1196
+            1194:  7(f16vec4) Load 309(f16c4)
+            1195:6(float16_t) Load 572(f16lod)
+            1196:  7(f16vec4) ImageSampleProjExplicitLod 1193 1194 Lod ConstOffset 1195 735
+            1197:  7(f16vec4) Load 1130(texel)
+            1198:  7(f16vec4) FAdd 1197 1196
                               Store 1130(texel) 1198
             1199:         199 Load 201(s1DShadow)
             1200:  249(fvec4) Load 251(c4)
@@ -1895,22 +1895,22 @@
             1202:   52(float) CompositeExtract 1200 2
             1203:   52(float) CompositeExtract 1200 3
             1204:  249(fvec4) CompositeInsert 1203 1200 1
-            1205:    6(float) ImageSampleProjDrefExplicitLod 1199 1204 1202 Lod ConstOffset 1201 709
+            1205:6(float16_t) ImageSampleProjDrefExplicitLod 1199 1204 1202 Lod ConstOffset 1201 709
             1206:    208(ptr) AccessChain 1130(texel) 207
-            1207:    6(float) Load 1206
-            1208:    6(float) FAdd 1207 1205
+            1207:6(float16_t) Load 1206
+            1208:6(float16_t) FAdd 1207 1205
             1209:    208(ptr) AccessChain 1130(texel) 207
                               Store 1209 1208
             1210:         199 Load 201(s1DShadow)
-            1211:  175(fvec3) Load 177(f16c3)
+            1211:175(f16vec3) Load 177(f16c3)
             1212:   52(float) Load 215(compare)
-            1213:    6(float) Load 572(f16lod)
-            1214:    6(float) CompositeExtract 1211 2
-            1215:  175(fvec3) CompositeInsert 1214 1211 1
-            1216:    6(float) ImageSampleProjDrefExplicitLod 1210 1215 1212 Lod ConstOffset 1213 709
+            1213:6(float16_t) Load 572(f16lod)
+            1214:6(float16_t) CompositeExtract 1211 2
+            1215:175(f16vec3) CompositeInsert 1214 1211 1
+            1216:6(float16_t) ImageSampleProjDrefExplicitLod 1210 1215 1212 Lod ConstOffset 1213 709
             1217:    208(ptr) AccessChain 1130(texel) 207
-            1218:    6(float) Load 1217
-            1219:    6(float) FAdd 1218 1216
+            1218:6(float16_t) Load 1217
+            1219:6(float16_t) FAdd 1218 1216
             1220:    208(ptr) AccessChain 1130(texel) 207
                               Store 1220 1219
             1221:         224 Load 226(s2DShadow)
@@ -1919,26 +1919,26 @@
             1224:   52(float) CompositeExtract 1222 2
             1225:   52(float) CompositeExtract 1222 3
             1226:  249(fvec4) CompositeInsert 1225 1222 2
-            1227:    6(float) ImageSampleProjDrefExplicitLod 1221 1226 1224 Lod ConstOffset 1223 722
+            1227:6(float16_t) ImageSampleProjDrefExplicitLod 1221 1226 1224 Lod ConstOffset 1223 722
             1228:    208(ptr) AccessChain 1130(texel) 207
-            1229:    6(float) Load 1228
-            1230:    6(float) FAdd 1229 1227
+            1229:6(float16_t) Load 1228
+            1230:6(float16_t) FAdd 1229 1227
             1231:    208(ptr) AccessChain 1130(texel) 207
                               Store 1231 1230
             1232:         224 Load 226(s2DShadow)
-            1233:  175(fvec3) Load 177(f16c3)
+            1233:175(f16vec3) Load 177(f16c3)
             1234:   52(float) Load 215(compare)
-            1235:    6(float) Load 572(f16lod)
-            1236:    6(float) ImageSampleProjDrefExplicitLod 1232 1233 1234 Lod ConstOffset 1235 722
+            1235:6(float16_t) Load 572(f16lod)
+            1236:6(float16_t) ImageSampleProjDrefExplicitLod 1232 1233 1234 Lod ConstOffset 1235 722
             1237:    208(ptr) AccessChain 1130(texel) 207
-            1238:    6(float) Load 1237
-            1239:    6(float) FAdd 1238 1236
+            1238:6(float16_t) Load 1237
+            1239:6(float16_t) FAdd 1238 1236
             1240:    208(ptr) AccessChain 1130(texel) 207
                               Store 1240 1239
-            1241:    7(fvec4) Load 1130(texel)
+            1241:  7(f16vec4) Load 1130(texel)
                               ReturnValue 1241
                               FunctionEnd
-23(testTexelFetch():    7(fvec4) Function None 8
+23(testTexelFetch():  7(f16vec4) Function None 8
               24:             Label
      1244(texel):     64(ptr) Variable Function
                               Store 1244(texel) 121
@@ -1948,9 +1948,9 @@
             1248:   52(float) Load 565(lod)
             1249:     47(int) ConvertFToS 1248
             1250:         122 Image 1245
-            1251:    7(fvec4) ImageFetch 1250 1247 Lod 1249
-            1252:    7(fvec4) Load 1244(texel)
-            1253:    7(fvec4) FAdd 1252 1251
+            1251:  7(f16vec4) ImageFetch 1250 1247 Lod 1249
+            1252:  7(f16vec4) Load 1244(texel)
+            1253:  7(f16vec4) FAdd 1252 1251
                               Store 1244(texel) 1253
             1254:         143 Load 145(s2D)
             1255:   53(fvec2) Load 148(c2)
@@ -1958,9 +1958,9 @@
             1257:   52(float) Load 565(lod)
             1258:     47(int) ConvertFToS 1257
             1259:         142 Image 1254
-            1260:    7(fvec4) ImageFetch 1259 1256 Lod 1258
-            1261:    7(fvec4) Load 1244(texel)
-            1262:    7(fvec4) FAdd 1261 1260
+            1260:  7(f16vec4) ImageFetch 1259 1256 Lod 1258
+            1261:  7(f16vec4) Load 1244(texel)
+            1262:  7(f16vec4) FAdd 1261 1260
                               Store 1244(texel) 1262
             1263:         163 Load 165(s3D)
             1264:  167(fvec3) Load 169(c3)
@@ -1968,17 +1968,17 @@
             1266:   52(float) Load 565(lod)
             1267:     47(int) ConvertFToS 1266
             1268:         162 Image 1263
-            1269:    7(fvec4) ImageFetch 1268 1265 Lod 1267
-            1270:    7(fvec4) Load 1244(texel)
-            1271:    7(fvec4) FAdd 1270 1269
+            1269:  7(f16vec4) ImageFetch 1268 1265 Lod 1267
+            1270:  7(f16vec4) Load 1244(texel)
+            1271:  7(f16vec4) FAdd 1270 1269
                               Store 1244(texel) 1271
             1272:         357 Load 359(s2DRect)
             1273:   53(fvec2) Load 148(c2)
             1274:  721(ivec2) ConvertFToS 1273
             1275:         356 Image 1272
-            1276:    7(fvec4) ImageFetch 1275 1274
-            1277:    7(fvec4) Load 1244(texel)
-            1278:    7(fvec4) FAdd 1277 1276
+            1276:  7(f16vec4) ImageFetch 1275 1274
+            1277:  7(f16vec4) Load 1244(texel)
+            1278:  7(f16vec4) FAdd 1277 1276
                               Store 1244(texel) 1278
             1279:         269 Load 271(s1DArray)
             1280:   53(fvec2) Load 148(c2)
@@ -1986,9 +1986,9 @@
             1282:   52(float) Load 565(lod)
             1283:     47(int) ConvertFToS 1282
             1284:         268 Image 1279
-            1285:    7(fvec4) ImageFetch 1284 1281 Lod 1283
-            1286:    7(fvec4) Load 1244(texel)
-            1287:    7(fvec4) FAdd 1286 1285
+            1285:  7(f16vec4) ImageFetch 1284 1281 Lod 1283
+            1286:  7(f16vec4) Load 1244(texel)
+            1287:  7(f16vec4) FAdd 1286 1285
                               Store 1244(texel) 1287
             1288:         284 Load 286(s2DArray)
             1289:  167(fvec3) Load 169(c3)
@@ -1996,38 +1996,38 @@
             1291:   52(float) Load 565(lod)
             1292:     47(int) ConvertFToS 1291
             1293:         283 Image 1288
-            1294:    7(fvec4) ImageFetch 1293 1290 Lod 1292
-            1295:    7(fvec4) Load 1244(texel)
-            1296:    7(fvec4) FAdd 1295 1294
+            1294:  7(f16vec4) ImageFetch 1293 1290 Lod 1292
+            1295:  7(f16vec4) Load 1244(texel)
+            1296:  7(f16vec4) FAdd 1295 1294
                               Store 1244(texel) 1296
             1301:        1298 Load 1300(sBuffer)
             1302:   52(float) Load 128(c1)
             1303:     47(int) ConvertFToS 1302
             1304:        1297 Image 1301
-            1305:    7(fvec4) ImageFetch 1304 1303
-            1306:    7(fvec4) Load 1244(texel)
-            1307:    7(fvec4) FAdd 1306 1305
+            1305:  7(f16vec4) ImageFetch 1304 1303
+            1306:  7(f16vec4) Load 1244(texel)
+            1307:  7(f16vec4) FAdd 1306 1305
                               Store 1244(texel) 1307
             1312:        1309 Load 1311(s2DMS)
             1313:   53(fvec2) Load 148(c2)
             1314:  721(ivec2) ConvertFToS 1313
             1315:        1308 Image 1312
-            1316:    7(fvec4) ImageFetch 1315 1314 Sample 709
-            1317:    7(fvec4) Load 1244(texel)
-            1318:    7(fvec4) FAdd 1317 1316
+            1316:  7(f16vec4) ImageFetch 1315 1314 Sample 709
+            1317:  7(f16vec4) Load 1244(texel)
+            1318:  7(f16vec4) FAdd 1317 1316
                               Store 1244(texel) 1318
             1323:        1320 Load 1322(s2DMSArray)
             1324:  167(fvec3) Load 169(c3)
             1325:  734(ivec3) ConvertFToS 1324
             1327:        1319 Image 1323
-            1328:    7(fvec4) ImageFetch 1327 1325 Sample 1326
-            1329:    7(fvec4) Load 1244(texel)
-            1330:    7(fvec4) FAdd 1329 1328
+            1328:  7(f16vec4) ImageFetch 1327 1325 Sample 1326
+            1329:  7(f16vec4) Load 1244(texel)
+            1330:  7(f16vec4) FAdd 1329 1328
                               Store 1244(texel) 1330
-            1331:    7(fvec4) Load 1244(texel)
+            1331:  7(f16vec4) Load 1244(texel)
                               ReturnValue 1331
                               FunctionEnd
-25(testTexelFetchOffset():    7(fvec4) Function None 8
+25(testTexelFetchOffset():  7(f16vec4) Function None 8
               26:             Label
      1334(texel):     64(ptr) Variable Function
                               Store 1334(texel) 121
@@ -2037,9 +2037,9 @@
             1338:   52(float) Load 565(lod)
             1339:     47(int) ConvertFToS 1338
             1340:         122 Image 1335
-            1341:    7(fvec4) ImageFetch 1340 1337 Lod ConstOffset 1339 709
-            1342:    7(fvec4) Load 1334(texel)
-            1343:    7(fvec4) FAdd 1342 1341
+            1341:  7(f16vec4) ImageFetch 1340 1337 Lod ConstOffset 1339 709
+            1342:  7(f16vec4) Load 1334(texel)
+            1343:  7(f16vec4) FAdd 1342 1341
                               Store 1334(texel) 1343
             1344:         143 Load 145(s2D)
             1345:   53(fvec2) Load 148(c2)
@@ -2047,9 +2047,9 @@
             1347:   52(float) Load 565(lod)
             1348:     47(int) ConvertFToS 1347
             1349:         142 Image 1344
-            1350:    7(fvec4) ImageFetch 1349 1346 Lod ConstOffset 1348 722
-            1351:    7(fvec4) Load 1334(texel)
-            1352:    7(fvec4) FAdd 1351 1350
+            1350:  7(f16vec4) ImageFetch 1349 1346 Lod ConstOffset 1348 722
+            1351:  7(f16vec4) Load 1334(texel)
+            1352:  7(f16vec4) FAdd 1351 1350
                               Store 1334(texel) 1352
             1353:         163 Load 165(s3D)
             1354:  167(fvec3) Load 169(c3)
@@ -2057,17 +2057,17 @@
             1356:   52(float) Load 565(lod)
             1357:     47(int) ConvertFToS 1356
             1358:         162 Image 1353
-            1359:    7(fvec4) ImageFetch 1358 1355 Lod ConstOffset 1357 735
-            1360:    7(fvec4) Load 1334(texel)
-            1361:    7(fvec4) FAdd 1360 1359
+            1359:  7(f16vec4) ImageFetch 1358 1355 Lod ConstOffset 1357 735
+            1360:  7(f16vec4) Load 1334(texel)
+            1361:  7(f16vec4) FAdd 1360 1359
                               Store 1334(texel) 1361
             1362:         357 Load 359(s2DRect)
             1363:   53(fvec2) Load 148(c2)
             1364:  721(ivec2) ConvertFToS 1363
             1365:         356 Image 1362
-            1366:    7(fvec4) ImageFetch 1365 1364 ConstOffset 722
-            1367:    7(fvec4) Load 1334(texel)
-            1368:    7(fvec4) FAdd 1367 1366
+            1366:  7(f16vec4) ImageFetch 1365 1364 ConstOffset 722
+            1367:  7(f16vec4) Load 1334(texel)
+            1368:  7(f16vec4) FAdd 1367 1366
                               Store 1334(texel) 1368
             1369:         269 Load 271(s1DArray)
             1370:   53(fvec2) Load 148(c2)
@@ -2075,9 +2075,9 @@
             1372:   52(float) Load 565(lod)
             1373:     47(int) ConvertFToS 1372
             1374:         268 Image 1369
-            1375:    7(fvec4) ImageFetch 1374 1371 Lod ConstOffset 1373 709
-            1376:    7(fvec4) Load 1334(texel)
-            1377:    7(fvec4) FAdd 1376 1375
+            1375:  7(f16vec4) ImageFetch 1374 1371 Lod ConstOffset 1373 709
+            1376:  7(f16vec4) Load 1334(texel)
+            1377:  7(f16vec4) FAdd 1376 1375
                               Store 1334(texel) 1377
             1378:         284 Load 286(s2DArray)
             1379:  167(fvec3) Load 169(c3)
@@ -2085,14 +2085,14 @@
             1381:   52(float) Load 565(lod)
             1382:     47(int) ConvertFToS 1381
             1383:         283 Image 1378
-            1384:    7(fvec4) ImageFetch 1383 1380 Lod ConstOffset 1382 722
-            1385:    7(fvec4) Load 1334(texel)
-            1386:    7(fvec4) FAdd 1385 1384
+            1384:  7(f16vec4) ImageFetch 1383 1380 Lod ConstOffset 1382 722
+            1385:  7(f16vec4) Load 1334(texel)
+            1386:  7(f16vec4) FAdd 1385 1384
                               Store 1334(texel) 1386
-            1387:    7(fvec4) Load 1334(texel)
+            1387:  7(f16vec4) Load 1334(texel)
                               ReturnValue 1387
                               FunctionEnd
-27(testTextureGrad():    7(fvec4) Function None 8
+27(testTextureGrad():  7(f16vec4) Function None 8
               28:             Label
      1390(texel):     64(ptr) Variable Function
                               Store 1390(texel) 121
@@ -2100,102 +2100,102 @@
             1392:   52(float) Load 128(c1)
             1394:   52(float) Load 1393(dPdxy1)
             1395:   52(float) Load 1393(dPdxy1)
-            1396:    7(fvec4) ImageSampleExplicitLod 1391 1392 Grad 1394 1395
-            1397:    7(fvec4) Load 1390(texel)
-            1398:    7(fvec4) FAdd 1397 1396
+            1396:  7(f16vec4) ImageSampleExplicitLod 1391 1392 Grad 1394 1395
+            1397:  7(f16vec4) Load 1390(texel)
+            1398:  7(f16vec4) FAdd 1397 1396
                               Store 1390(texel) 1398
             1399:         123 Load 125(s1D)
-            1400:    6(float) Load 135(f16c1)
-            1402:    6(float) Load 1401(f16dPdxy1)
-            1403:    6(float) Load 1401(f16dPdxy1)
-            1404:    7(fvec4) ImageSampleExplicitLod 1399 1400 Grad 1402 1403
-            1405:    7(fvec4) Load 1390(texel)
-            1406:    7(fvec4) FAdd 1405 1404
+            1400:6(float16_t) Load 135(f16c1)
+            1402:6(float16_t) Load 1401(f16dPdxy1)
+            1403:6(float16_t) Load 1401(f16dPdxy1)
+            1404:  7(f16vec4) ImageSampleExplicitLod 1399 1400 Grad 1402 1403
+            1405:  7(f16vec4) Load 1390(texel)
+            1406:  7(f16vec4) FAdd 1405 1404
                               Store 1390(texel) 1406
             1407:         143 Load 145(s2D)
             1408:   53(fvec2) Load 148(c2)
             1410:   53(fvec2) Load 1409(dPdxy2)
             1411:   53(fvec2) Load 1409(dPdxy2)
-            1412:    7(fvec4) ImageSampleExplicitLod 1407 1408 Grad 1410 1411
-            1413:    7(fvec4) Load 1390(texel)
-            1414:    7(fvec4) FAdd 1413 1412
+            1412:  7(f16vec4) ImageSampleExplicitLod 1407 1408 Grad 1410 1411
+            1413:  7(f16vec4) Load 1390(texel)
+            1414:  7(f16vec4) FAdd 1413 1412
                               Store 1390(texel) 1414
             1415:         143 Load 145(s2D)
-            1416:  154(fvec2) Load 156(f16c2)
-            1418:  154(fvec2) Load 1417(f16dPdxy2)
-            1419:  154(fvec2) Load 1417(f16dPdxy2)
-            1420:    7(fvec4) ImageSampleExplicitLod 1415 1416 Grad 1418 1419
-            1421:    7(fvec4) Load 1390(texel)
-            1422:    7(fvec4) FAdd 1421 1420
+            1416:154(f16vec2) Load 156(f16c2)
+            1418:154(f16vec2) Load 1417(f16dPdxy2)
+            1419:154(f16vec2) Load 1417(f16dPdxy2)
+            1420:  7(f16vec4) ImageSampleExplicitLod 1415 1416 Grad 1418 1419
+            1421:  7(f16vec4) Load 1390(texel)
+            1422:  7(f16vec4) FAdd 1421 1420
                               Store 1390(texel) 1422
             1423:         163 Load 165(s3D)
             1424:  167(fvec3) Load 169(c3)
             1426:  167(fvec3) Load 1425(dPdxy3)
             1427:  167(fvec3) Load 1425(dPdxy3)
-            1428:    7(fvec4) ImageSampleExplicitLod 1423 1424 Grad 1426 1427
-            1429:    7(fvec4) Load 1390(texel)
-            1430:    7(fvec4) FAdd 1429 1428
+            1428:  7(f16vec4) ImageSampleExplicitLod 1423 1424 Grad 1426 1427
+            1429:  7(f16vec4) Load 1390(texel)
+            1430:  7(f16vec4) FAdd 1429 1428
                               Store 1390(texel) 1430
             1431:         163 Load 165(s3D)
-            1432:  175(fvec3) Load 177(f16c3)
-            1434:  175(fvec3) Load 1433(f16dPdxy3)
-            1435:  175(fvec3) Load 1433(f16dPdxy3)
-            1436:    7(fvec4) ImageSampleExplicitLod 1431 1432 Grad 1434 1435
-            1437:    7(fvec4) Load 1390(texel)
-            1438:    7(fvec4) FAdd 1437 1436
+            1432:175(f16vec3) Load 177(f16c3)
+            1434:175(f16vec3) Load 1433(f16dPdxy3)
+            1435:175(f16vec3) Load 1433(f16dPdxy3)
+            1436:  7(f16vec4) ImageSampleExplicitLod 1431 1432 Grad 1434 1435
+            1437:  7(f16vec4) Load 1390(texel)
+            1438:  7(f16vec4) FAdd 1437 1436
                               Store 1390(texel) 1438
             1439:         184 Load 186(sCube)
             1440:  167(fvec3) Load 169(c3)
             1441:  167(fvec3) Load 1425(dPdxy3)
             1442:  167(fvec3) Load 1425(dPdxy3)
-            1443:    7(fvec4) ImageSampleExplicitLod 1439 1440 Grad 1441 1442
-            1444:    7(fvec4) Load 1390(texel)
-            1445:    7(fvec4) FAdd 1444 1443
+            1443:  7(f16vec4) ImageSampleExplicitLod 1439 1440 Grad 1441 1442
+            1444:  7(f16vec4) Load 1390(texel)
+            1445:  7(f16vec4) FAdd 1444 1443
                               Store 1390(texel) 1445
             1446:         184 Load 186(sCube)
-            1447:  175(fvec3) Load 177(f16c3)
-            1448:  175(fvec3) Load 1433(f16dPdxy3)
-            1449:  175(fvec3) Load 1433(f16dPdxy3)
-            1450:    7(fvec4) ImageSampleExplicitLod 1446 1447 Grad 1448 1449
-            1451:    7(fvec4) Load 1390(texel)
-            1452:    7(fvec4) FAdd 1451 1450
+            1447:175(f16vec3) Load 177(f16c3)
+            1448:175(f16vec3) Load 1433(f16dPdxy3)
+            1449:175(f16vec3) Load 1433(f16dPdxy3)
+            1450:  7(f16vec4) ImageSampleExplicitLod 1446 1447 Grad 1448 1449
+            1451:  7(f16vec4) Load 1390(texel)
+            1452:  7(f16vec4) FAdd 1451 1450
                               Store 1390(texel) 1452
             1453:         357 Load 359(s2DRect)
             1454:   53(fvec2) Load 148(c2)
             1455:   53(fvec2) Load 1409(dPdxy2)
             1456:   53(fvec2) Load 1409(dPdxy2)
-            1457:    7(fvec4) ImageSampleExplicitLod 1453 1454 Grad 1455 1456
-            1458:    7(fvec4) Load 1390(texel)
-            1459:    7(fvec4) FAdd 1458 1457
+            1457:  7(f16vec4) ImageSampleExplicitLod 1453 1454 Grad 1455 1456
+            1458:  7(f16vec4) Load 1390(texel)
+            1459:  7(f16vec4) FAdd 1458 1457
                               Store 1390(texel) 1459
             1460:         357 Load 359(s2DRect)
-            1461:  154(fvec2) Load 156(f16c2)
-            1462:  154(fvec2) Load 1417(f16dPdxy2)
-            1463:  154(fvec2) Load 1417(f16dPdxy2)
-            1464:    7(fvec4) ImageSampleExplicitLod 1460 1461 Grad 1462 1463
-            1465:    7(fvec4) Load 1390(texel)
-            1466:    7(fvec4) FAdd 1465 1464
+            1461:154(f16vec2) Load 156(f16c2)
+            1462:154(f16vec2) Load 1417(f16dPdxy2)
+            1463:154(f16vec2) Load 1417(f16dPdxy2)
+            1464:  7(f16vec4) ImageSampleExplicitLod 1460 1461 Grad 1462 1463
+            1465:  7(f16vec4) Load 1390(texel)
+            1466:  7(f16vec4) FAdd 1465 1464
                               Store 1390(texel) 1466
             1467:         371 Load 373(s2DRectShadow)
             1468:  167(fvec3) Load 169(c3)
             1469:   53(fvec2) Load 1409(dPdxy2)
             1470:   53(fvec2) Load 1409(dPdxy2)
             1471:   52(float) CompositeExtract 1468 2
-            1472:    6(float) ImageSampleDrefExplicitLod 1467 1468 1471 Grad 1469 1470
+            1472:6(float16_t) ImageSampleDrefExplicitLod 1467 1468 1471 Grad 1469 1470
             1473:    208(ptr) AccessChain 1390(texel) 207
-            1474:    6(float) Load 1473
-            1475:    6(float) FAdd 1474 1472
+            1474:6(float16_t) Load 1473
+            1475:6(float16_t) FAdd 1474 1472
             1476:    208(ptr) AccessChain 1390(texel) 207
                               Store 1476 1475
             1477:         371 Load 373(s2DRectShadow)
-            1478:  154(fvec2) Load 156(f16c2)
+            1478:154(f16vec2) Load 156(f16c2)
             1479:   52(float) Load 215(compare)
-            1480:  154(fvec2) Load 1417(f16dPdxy2)
-            1481:  154(fvec2) Load 1417(f16dPdxy2)
-            1482:    6(float) ImageSampleDrefExplicitLod 1477 1478 1479 Grad 1480 1481
+            1480:154(f16vec2) Load 1417(f16dPdxy2)
+            1481:154(f16vec2) Load 1417(f16dPdxy2)
+            1482:6(float16_t) ImageSampleDrefExplicitLod 1477 1478 1479 Grad 1480 1481
             1483:    208(ptr) AccessChain 1390(texel) 207
-            1484:    6(float) Load 1483
-            1485:    6(float) FAdd 1484 1482
+            1484:6(float16_t) Load 1483
+            1485:6(float16_t) FAdd 1484 1482
             1486:    208(ptr) AccessChain 1390(texel) 207
                               Store 1486 1485
             1487:         199 Load 201(s1DShadow)
@@ -2203,21 +2203,21 @@
             1489:   52(float) Load 1393(dPdxy1)
             1490:   52(float) Load 1393(dPdxy1)
             1491:   52(float) CompositeExtract 1488 2
-            1492:    6(float) ImageSampleDrefExplicitLod 1487 1488 1491 Grad 1489 1490
+            1492:6(float16_t) ImageSampleDrefExplicitLod 1487 1488 1491 Grad 1489 1490
             1493:    208(ptr) AccessChain 1390(texel) 207
-            1494:    6(float) Load 1493
-            1495:    6(float) FAdd 1494 1492
+            1494:6(float16_t) Load 1493
+            1495:6(float16_t) FAdd 1494 1492
             1496:    208(ptr) AccessChain 1390(texel) 207
                               Store 1496 1495
             1497:         199 Load 201(s1DShadow)
-            1498:  154(fvec2) Load 156(f16c2)
+            1498:154(f16vec2) Load 156(f16c2)
             1499:   52(float) Load 215(compare)
-            1500:    6(float) Load 1401(f16dPdxy1)
-            1501:    6(float) Load 1401(f16dPdxy1)
-            1502:    6(float) ImageSampleDrefExplicitLod 1497 1498 1499 Grad 1500 1501
+            1500:6(float16_t) Load 1401(f16dPdxy1)
+            1501:6(float16_t) Load 1401(f16dPdxy1)
+            1502:6(float16_t) ImageSampleDrefExplicitLod 1497 1498 1499 Grad 1500 1501
             1503:    208(ptr) AccessChain 1390(texel) 207
-            1504:    6(float) Load 1503
-            1505:    6(float) FAdd 1504 1502
+            1504:6(float16_t) Load 1503
+            1505:6(float16_t) FAdd 1504 1502
             1506:    208(ptr) AccessChain 1390(texel) 207
                               Store 1506 1505
             1507:         224 Load 226(s2DShadow)
@@ -2225,21 +2225,21 @@
             1509:   53(fvec2) Load 1409(dPdxy2)
             1510:   53(fvec2) Load 1409(dPdxy2)
             1511:   52(float) CompositeExtract 1508 2
-            1512:    6(float) ImageSampleDrefExplicitLod 1507 1508 1511 Grad 1509 1510
+            1512:6(float16_t) ImageSampleDrefExplicitLod 1507 1508 1511 Grad 1509 1510
             1513:    208(ptr) AccessChain 1390(texel) 207
-            1514:    6(float) Load 1513
-            1515:    6(float) FAdd 1514 1512
+            1514:6(float16_t) Load 1513
+            1515:6(float16_t) FAdd 1514 1512
             1516:    208(ptr) AccessChain 1390(texel) 207
                               Store 1516 1515
             1517:         224 Load 226(s2DShadow)
-            1518:  154(fvec2) Load 156(f16c2)
+            1518:154(f16vec2) Load 156(f16c2)
             1519:   52(float) Load 215(compare)
-            1520:  154(fvec2) Load 1417(f16dPdxy2)
-            1521:  154(fvec2) Load 1417(f16dPdxy2)
-            1522:    6(float) ImageSampleDrefExplicitLod 1517 1518 1519 Grad 1520 1521
+            1520:154(f16vec2) Load 1417(f16dPdxy2)
+            1521:154(f16vec2) Load 1417(f16dPdxy2)
+            1522:6(float16_t) ImageSampleDrefExplicitLod 1517 1518 1519 Grad 1520 1521
             1523:    208(ptr) AccessChain 1390(texel) 207
-            1524:    6(float) Load 1523
-            1525:    6(float) FAdd 1524 1522
+            1524:6(float16_t) Load 1523
+            1525:6(float16_t) FAdd 1524 1522
             1526:    208(ptr) AccessChain 1390(texel) 207
                               Store 1526 1525
             1527:         245 Load 247(sCubeShadow)
@@ -2247,75 +2247,75 @@
             1529:  167(fvec3) Load 1425(dPdxy3)
             1530:  167(fvec3) Load 1425(dPdxy3)
             1531:   52(float) CompositeExtract 1528 3
-            1532:    6(float) ImageSampleDrefExplicitLod 1527 1528 1531 Grad 1529 1530
+            1532:6(float16_t) ImageSampleDrefExplicitLod 1527 1528 1531 Grad 1529 1530
             1533:    208(ptr) AccessChain 1390(texel) 207
-            1534:    6(float) Load 1533
-            1535:    6(float) FAdd 1534 1532
+            1534:6(float16_t) Load 1533
+            1535:6(float16_t) FAdd 1534 1532
             1536:    208(ptr) AccessChain 1390(texel) 207
                               Store 1536 1535
             1537:         245 Load 247(sCubeShadow)
-            1538:  175(fvec3) Load 177(f16c3)
+            1538:175(f16vec3) Load 177(f16c3)
             1539:   52(float) Load 215(compare)
-            1540:  175(fvec3) Load 1433(f16dPdxy3)
-            1541:  175(fvec3) Load 1433(f16dPdxy3)
-            1542:    6(float) ImageSampleDrefExplicitLod 1537 1538 1539 Grad 1540 1541
+            1540:175(f16vec3) Load 1433(f16dPdxy3)
+            1541:175(f16vec3) Load 1433(f16dPdxy3)
+            1542:6(float16_t) ImageSampleDrefExplicitLod 1537 1538 1539 Grad 1540 1541
             1543:    208(ptr) AccessChain 1390(texel) 207
-            1544:    6(float) Load 1543
-            1545:    6(float) FAdd 1544 1542
+            1544:6(float16_t) Load 1543
+            1545:6(float16_t) FAdd 1544 1542
             1546:    208(ptr) AccessChain 1390(texel) 207
                               Store 1546 1545
             1547:         269 Load 271(s1DArray)
             1548:   53(fvec2) Load 148(c2)
             1549:   52(float) Load 1393(dPdxy1)
             1550:   52(float) Load 1393(dPdxy1)
-            1551:    7(fvec4) ImageSampleExplicitLod 1547 1548 Grad 1549 1550
-            1552:    7(fvec4) Load 1390(texel)
-            1553:    7(fvec4) FAdd 1552 1551
+            1551:  7(f16vec4) ImageSampleExplicitLod 1547 1548 Grad 1549 1550
+            1552:  7(f16vec4) Load 1390(texel)
+            1553:  7(f16vec4) FAdd 1552 1551
                               Store 1390(texel) 1553
             1554:         269 Load 271(s1DArray)
-            1555:  154(fvec2) Load 156(f16c2)
-            1556:    6(float) Load 1401(f16dPdxy1)
-            1557:    6(float) Load 1401(f16dPdxy1)
-            1558:    7(fvec4) ImageSampleExplicitLod 1554 1555 Grad 1556 1557
-            1559:    7(fvec4) Load 1390(texel)
-            1560:    7(fvec4) FAdd 1559 1558
+            1555:154(f16vec2) Load 156(f16c2)
+            1556:6(float16_t) Load 1401(f16dPdxy1)
+            1557:6(float16_t) Load 1401(f16dPdxy1)
+            1558:  7(f16vec4) ImageSampleExplicitLod 1554 1555 Grad 1556 1557
+            1559:  7(f16vec4) Load 1390(texel)
+            1560:  7(f16vec4) FAdd 1559 1558
                               Store 1390(texel) 1560
             1561:         284 Load 286(s2DArray)
             1562:  167(fvec3) Load 169(c3)
             1563:   53(fvec2) Load 1409(dPdxy2)
             1564:   53(fvec2) Load 1409(dPdxy2)
-            1565:    7(fvec4) ImageSampleExplicitLod 1561 1562 Grad 1563 1564
-            1566:    7(fvec4) Load 1390(texel)
-            1567:    7(fvec4) FAdd 1566 1565
+            1565:  7(f16vec4) ImageSampleExplicitLod 1561 1562 Grad 1563 1564
+            1566:  7(f16vec4) Load 1390(texel)
+            1567:  7(f16vec4) FAdd 1566 1565
                               Store 1390(texel) 1567
             1568:         284 Load 286(s2DArray)
-            1569:  175(fvec3) Load 177(f16c3)
-            1570:  154(fvec2) Load 1417(f16dPdxy2)
-            1571:  154(fvec2) Load 1417(f16dPdxy2)
-            1572:    7(fvec4) ImageSampleExplicitLod 1568 1569 Grad 1570 1571
-            1573:    7(fvec4) Load 1390(texel)
-            1574:    7(fvec4) FAdd 1573 1572
+            1569:175(f16vec3) Load 177(f16c3)
+            1570:154(f16vec2) Load 1417(f16dPdxy2)
+            1571:154(f16vec2) Load 1417(f16dPdxy2)
+            1572:  7(f16vec4) ImageSampleExplicitLod 1568 1569 Grad 1570 1571
+            1573:  7(f16vec4) Load 1390(texel)
+            1574:  7(f16vec4) FAdd 1573 1572
                               Store 1390(texel) 1574
             1575:         316 Load 318(s1DArrayShadow)
             1576:  167(fvec3) Load 169(c3)
             1577:   52(float) Load 1393(dPdxy1)
             1578:   52(float) Load 1393(dPdxy1)
             1579:   52(float) CompositeExtract 1576 2
-            1580:    6(float) ImageSampleDrefExplicitLod 1575 1576 1579 Grad 1577 1578
+            1580:6(float16_t) ImageSampleDrefExplicitLod 1575 1576 1579 Grad 1577 1578
             1581:    208(ptr) AccessChain 1390(texel) 207
-            1582:    6(float) Load 1581
-            1583:    6(float) FAdd 1582 1580
+            1582:6(float16_t) Load 1581
+            1583:6(float16_t) FAdd 1582 1580
             1584:    208(ptr) AccessChain 1390(texel) 207
                               Store 1584 1583
             1585:         316 Load 318(s1DArrayShadow)
-            1586:  154(fvec2) Load 156(f16c2)
+            1586:154(f16vec2) Load 156(f16c2)
             1587:   52(float) Load 215(compare)
-            1588:    6(float) Load 1401(f16dPdxy1)
-            1589:    6(float) Load 1401(f16dPdxy1)
-            1590:    6(float) ImageSampleDrefExplicitLod 1585 1586 1587 Grad 1588 1589
+            1588:6(float16_t) Load 1401(f16dPdxy1)
+            1589:6(float16_t) Load 1401(f16dPdxy1)
+            1590:6(float16_t) ImageSampleDrefExplicitLod 1585 1586 1587 Grad 1588 1589
             1591:    208(ptr) AccessChain 1390(texel) 207
-            1592:    6(float) Load 1591
-            1593:    6(float) FAdd 1592 1590
+            1592:6(float16_t) Load 1591
+            1593:6(float16_t) FAdd 1592 1590
             1594:    208(ptr) AccessChain 1390(texel) 207
                               Store 1594 1593
             1595:         337 Load 339(s2DArrayShadow)
@@ -2323,43 +2323,43 @@
             1597:   53(fvec2) Load 1409(dPdxy2)
             1598:   53(fvec2) Load 1409(dPdxy2)
             1599:   52(float) CompositeExtract 1596 3
-            1600:    6(float) ImageSampleDrefExplicitLod 1595 1596 1599 Grad 1597 1598
+            1600:6(float16_t) ImageSampleDrefExplicitLod 1595 1596 1599 Grad 1597 1598
             1601:    208(ptr) AccessChain 1390(texel) 207
-            1602:    6(float) Load 1601
-            1603:    6(float) FAdd 1602 1600
+            1602:6(float16_t) Load 1601
+            1603:6(float16_t) FAdd 1602 1600
             1604:    208(ptr) AccessChain 1390(texel) 207
                               Store 1604 1603
             1605:         337 Load 339(s2DArrayShadow)
-            1606:  175(fvec3) Load 177(f16c3)
+            1606:175(f1