Fix #1360: uint->int width conversions must still be typed as uint.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 6d89109..ec1b530 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -190,7 +190,7 @@
                                        glslang::TBasicType typeProxy);
     spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand,
                              glslang::TBasicType typeProxy);
-    spv::Id createConversionOperation(glslang::TOperator op, spv::Id operand, int vectorSize);
+    spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize);
     spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
     spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
     spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
@@ -4830,109 +4830,45 @@
     return result;
 }
 
-spv::Id TGlslangToSpvTraverser::createConversionOperation(glslang::TOperator op, spv::Id operand, int vectorSize)
+// For converting integers where both the bitwidth and the signedness could
+// change, but only do the width change here. The caller is still responsible
+// for the signedness conversion.
+spv::Id TGlslangToSpvTraverser::createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize)
 {
-    spv::Op convOp = spv::OpNop;
-    spv::Id type = 0;
-
-    spv::Id result = 0;
-
+    // Get the result type width, based on the type to convert to.
+    int width = 32;
     switch(op) {
+    case glslang::EOpConvInt16ToUint8:
+    case glslang::EOpConvIntToUint8:
+    case glslang::EOpConvInt64ToUint8:
+    case glslang::EOpConvUint16ToInt8:
+    case glslang::EOpConvUintToInt8:
+    case glslang::EOpConvUint64ToInt8:
+        width = 8;
+        break;
     case glslang::EOpConvInt8ToUint16:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(16);
+    case glslang::EOpConvIntToUint16:
+    case glslang::EOpConvInt64ToUint16:
+    case glslang::EOpConvUint8ToInt16:
+    case glslang::EOpConvUintToInt16:
+    case glslang::EOpConvUint64ToInt16:
+        width = 16;
         break;
     case glslang::EOpConvInt8ToUint:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(32);
+    case glslang::EOpConvInt16ToUint:
+    case glslang::EOpConvInt64ToUint:
+    case glslang::EOpConvUint8ToInt:
+    case glslang::EOpConvUint16ToInt:
+    case glslang::EOpConvUint64ToInt:
+        width = 32;
         break;
     case glslang::EOpConvInt8ToUint64:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(64);
-        break;
-    case glslang::EOpConvInt16ToUint8:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(8);
-        break;
-    case glslang::EOpConvInt16ToUint:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(32);
-        break;
     case glslang::EOpConvInt16ToUint64:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(64);
-        break;
-    case glslang::EOpConvIntToUint8:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(8);
-        break;
-    case glslang::EOpConvIntToUint16:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(16);
-        break;
     case glslang::EOpConvIntToUint64:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(64);
-        break;
-    case glslang::EOpConvInt64ToUint8:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(8);
-        break;
-    case glslang::EOpConvInt64ToUint16:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(16);
-        break;
-    case glslang::EOpConvInt64ToUint:
-        convOp = spv::OpSConvert;
-        type   = builder.makeIntType(32);
-        break;
-    case glslang::EOpConvUint8ToInt16:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(16);
-        break;
-    case glslang::EOpConvUint8ToInt:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(32);
-        break;
     case glslang::EOpConvUint8ToInt64:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(64);
-        break;
-    case glslang::EOpConvUint16ToInt8:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(8);
-        break;
-    case glslang::EOpConvUint16ToInt:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(32);
-        break;
     case glslang::EOpConvUint16ToInt64:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(64);
-        break;
-    case glslang::EOpConvUintToInt8:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(8);
-        break;
-    case glslang::EOpConvUintToInt16:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(16);
-        break;
     case glslang::EOpConvUintToInt64:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(64);
-        break;
-    case glslang::EOpConvUint64ToInt8:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(8);
-        break;
-    case glslang::EOpConvUint64ToInt16:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(16);
-        break;
-    case glslang::EOpConvUint64ToInt:
-        convOp = spv::OpUConvert;
-        type   = builder.makeIntType(32);
+        width = 64;
         break;
 
     default:
@@ -4940,11 +4876,36 @@
         break;
     }
 
+    // Get the conversion operation and result type,
+    // based on the target width, but the source type.
+    spv::Id type = spv::NoType;
+    spv::Op convOp = spv::OpNop;
+    switch(op) {
+    case glslang::EOpConvInt8ToUint16:
+    case glslang::EOpConvInt8ToUint:
+    case glslang::EOpConvInt8ToUint64:
+    case glslang::EOpConvInt16ToUint8:
+    case glslang::EOpConvInt16ToUint:
+    case glslang::EOpConvInt16ToUint64:
+    case glslang::EOpConvIntToUint8:
+    case glslang::EOpConvIntToUint16:
+    case glslang::EOpConvIntToUint64:
+    case glslang::EOpConvInt64ToUint8:
+    case glslang::EOpConvInt64ToUint16:
+    case glslang::EOpConvInt64ToUint:
+        convOp = spv::OpSConvert;
+        type = builder.makeIntType(width);
+        break;
+    default:
+        convOp = spv::OpUConvert;
+        type = builder.makeUintType(width);
+        break;
+    }
+
     if (vectorSize > 0)
         type = builder.makeVectorType(type, vectorSize);
 
-    result = builder.createUnaryOp(convOp, type, operand);
-    return result;
+    return builder.createUnaryOp(convOp, type, operand);
 }
 
 spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecorations& decorations, spv::Id destType,
@@ -5219,7 +5180,7 @@
     case glslang::EOpConvUint64ToInt16:
     case glslang::EOpConvUint64ToInt:
         // OpSConvert/OpUConvert + OpBitCast
-        operand = createConversionOperation(op, operand, vectorSize);
+        operand = createIntWidthConversion(op, operand, vectorSize);
 
         if (builder.isInSpecConstCodeGenMode()) {
             // Build zero scalar or vector for OpIAdd.
diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out
index d7975b5..6f7f2b9 100755
--- a/Test/baseResults/spv.explicittypes.frag.out
+++ b/Test/baseResults/spv.explicittypes.frag.out
@@ -51,13 +51,13 @@
                               Name 133  "u8v"
                               Name 136  "i8v"
                               Name 141  "i16v"
-                              Name 149  "i32v"
-                              Name 157  "u32v"
-                              Name 163  "i64v"
-                              Name 168  "u64v"
-                              Name 182  "f16v"
-                              Name 188  "f32v"
-                              Name 194  "f64v"
+                              Name 150  "i32v"
+                              Name 158  "u32v"
+                              Name 164  "i64v"
+                              Name 169  "u64v"
+                              Name 183  "f16v"
+                              Name 189  "f32v"
+                              Name 195  "f64v"
                               Name 222  "u16v"
                               Name 252  "bv"
                               Name 268  "i32v"
@@ -212,25 +212,25 @@
              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(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(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(float64_t) 2
-             193:             TypePointer Function 192(f64vec2)
-             220:             TypeVector 91(int16_t) 2
-             221:             TypePointer Function 220(i16vec2)
+             145:             TypeVector 91(int16_t) 2
+             148:             TypeVector 29(int) 2
+             149:             TypePointer Function 148(ivec2)
+             154:             TypeVector 19(int) 2
+             157:             TypePointer Function 154(ivec2)
+             162:             TypeVector 16(int64_t) 2
+             163:             TypePointer Function 162(i64vec2)
+             167:             TypeVector 38(int64_t) 2
+             168:             TypePointer Function 167(i64vec2)
+             180:             TypeFloat 16
+             181:             TypeVector 180(float16_t) 2
+             182:             TypePointer Function 181(f16vec2)
+             186:             TypeFloat 32
+             187:             TypeVector 186(float) 2
+             188:             TypePointer Function 187(fvec2)
+             192:             TypeFloat 64
+             193:             TypeVector 192(float64_t) 2
+             194:             TypePointer Function 193(f64vec2)
+             221:             TypePointer Function 145(i16vec2)
              249:             TypeBool
              250:             TypeVector 249(bool) 2
              251:             TypePointer Function 250(bvec2)
@@ -247,23 +247,23 @@
              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
+             373:145(i16vec2) ConstantComposite 371 371
+             374:145(i16vec2) ConstantComposite 372 372
              467:     29(int) Constant 1
-             468:  147(ivec2) ConstantComposite 30 30
-             469:  147(ivec2) ConstantComposite 467 467
+             468:  148(ivec2) ConstantComposite 30 30
+             469:  148(ivec2) ConstantComposite 467 467
              472:     19(int) Constant 0
              473:     19(int) Constant 1
-             474:  155(ivec2) ConstantComposite 472 472
-             475:  155(ivec2) ConstantComposite 473 473
+             474:  154(ivec2) ConstantComposite 472 472
+             475:  154(ivec2) ConstantComposite 473 473
              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
+             552:162(i64vec2) ConstantComposite 550 550
+             553:162(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
+             558:167(i64vec2) ConstantComposite 556 556
+             559:167(i64vec2) ConstantComposite 557 557
              565:             TypeVector 77(int16_t) 3
              566:             TypeVector 77(int16_t) 4
              567:             TypeVector 91(int16_t) 3
@@ -272,7 +272,7 @@
              570:             TypeVector 29(int) 4
              571:             TypeVector 19(int) 3
              572:             TypeVector 19(int) 4
-      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)
+      573(Block):             TypeStruct 77(int16_t) 139(i16vec2) 565(i16vec3) 566(i16vec4) 91(int16_t) 145(i16vec2) 567(i16vec3) 568(i16vec4) 29(int) 148(ivec2) 569(ivec3) 570(ivec4) 19(int) 154(ivec2) 571(ivec3) 572(ivec4)
              574:             TypePointer Uniform 573(Block)
       575(block):    574(ptr) Variable Uniform
          4(main):           2 Function None 3
@@ -352,13 +352,13 @@
         133(u8v):    132(ptr) Variable Function
         136(i8v):    135(ptr) Variable Function
        141(i16v):    140(ptr) Variable Function
-       149(i32v):    148(ptr) Variable Function
-       157(u32v):    156(ptr) Variable Function
-       163(i64v):    162(ptr) Variable Function
-       168(u64v):    167(ptr) Variable Function
-       182(f16v):    181(ptr) Variable Function
-       188(f32v):    187(ptr) Variable Function
-       194(f64v):    193(ptr) Variable Function
+       150(i32v):    149(ptr) Variable Function
+       158(u32v):    157(ptr) Variable Function
+       164(i64v):    163(ptr) Variable Function
+       169(u64v):    168(ptr) Variable Function
+       183(f16v):    182(ptr) Variable Function
+       189(f32v):    188(ptr) Variable Function
+       195(f64v):    194(ptr) Variable Function
        222(u16v):    221(ptr) Variable Function
          252(bv):    251(ptr) Variable Function
              137: 134(i8vec2) Load 136(i8v)
@@ -368,116 +368,116 @@
              143:139(i16vec2) SConvert 142
                               Store 141(i16v) 143
              144: 131(i8vec2) Load 133(u8v)
-             145:139(i16vec2) UConvert 144
-             146:139(i16vec2) Bitcast 145
-                              Store 141(i16v) 146
-             150: 134(i8vec2) Load 136(i8v)
-             151:  147(ivec2) SConvert 150
-                              Store 149(i32v) 151
-             152: 131(i8vec2) Load 133(u8v)
-             153:  147(ivec2) UConvert 152
-             154:  147(ivec2) Bitcast 153
-                              Store 149(i32v) 154
-             158: 134(i8vec2) Load 136(i8v)
-             159:  147(ivec2) SConvert 158
-             160:  155(ivec2) Bitcast 159
-                              Store 157(u32v) 160
-             164: 134(i8vec2) Load 136(i8v)
-             165:161(i64vec2) SConvert 164
-                              Store 163(i64v) 165
-             169: 134(i8vec2) Load 136(i8v)
-             170:161(i64vec2) SConvert 169
-             171:166(i64vec2) Bitcast 170
-                              Store 168(u64v) 171
-             172: 131(i8vec2) Load 133(u8v)
-             173:  155(ivec2) UConvert 172
-                              Store 157(u32v) 173
-             174: 131(i8vec2) Load 133(u8v)
-             175:161(i64vec2) UConvert 174
-             176:161(i64vec2) Bitcast 175
-                              Store 163(i64v) 176
-             177: 131(i8vec2) Load 133(u8v)
-             178:166(i64vec2) UConvert 177
-                              Store 168(u64v) 178
-             183: 134(i8vec2) Load 136(i8v)
-             184:180(f16vec2) ConvertSToF 183
-                              Store 182(f16v) 184
-             189: 134(i8vec2) Load 136(i8v)
-             190:  186(fvec2) ConvertSToF 189
-                              Store 188(f32v) 190
-             195: 134(i8vec2) Load 136(i8v)
-             196:192(f64vec2) ConvertSToF 195
-                              Store 194(f64v) 196
-             197: 131(i8vec2) Load 133(u8v)
-             198:180(f16vec2) ConvertUToF 197
-                              Store 182(f16v) 198
-             199: 131(i8vec2) Load 133(u8v)
-             200:  186(fvec2) ConvertUToF 199
-                              Store 188(f32v) 200
-             201: 131(i8vec2) Load 133(u8v)
-             202:192(f64vec2) ConvertUToF 201
-                              Store 194(f64v) 202
-             203: 131(i8vec2) Load 133(u8v)
-             204: 134(i8vec2) Bitcast 203
-                              Store 136(i8v) 204
-             205: 134(i8vec2) Load 136(i8v)
-             206:139(i16vec2) SConvert 205
-                              Store 141(i16v) 206
-             207: 131(i8vec2) Load 133(u8v)
-             208:139(i16vec2) UConvert 207
-             209:139(i16vec2) Bitcast 208
-                              Store 141(i16v) 209
-             210: 134(i8vec2) Load 136(i8v)
-             211:  147(ivec2) SConvert 210
-                              Store 149(i32v) 211
-             212: 131(i8vec2) Load 133(u8v)
-             213:  147(ivec2) UConvert 212
-             214:  147(ivec2) Bitcast 213
-                              Store 149(i32v) 214
-             215: 134(i8vec2) Load 136(i8v)
-             216:161(i64vec2) SConvert 215
-                              Store 163(i64v) 216
-             217: 134(i8vec2) Load 136(i8v)
-             218:161(i64vec2) SConvert 217
-             219:166(i64vec2) Bitcast 218
-                              Store 168(u64v) 219
+             146:145(i16vec2) UConvert 144
+             147:139(i16vec2) Bitcast 146
+                              Store 141(i16v) 147
+             151: 134(i8vec2) Load 136(i8v)
+             152:  148(ivec2) SConvert 151
+                              Store 150(i32v) 152
+             153: 131(i8vec2) Load 133(u8v)
+             155:  154(ivec2) UConvert 153
+             156:  148(ivec2) Bitcast 155
+                              Store 150(i32v) 156
+             159: 134(i8vec2) Load 136(i8v)
+             160:  148(ivec2) SConvert 159
+             161:  154(ivec2) Bitcast 160
+                              Store 158(u32v) 161
+             165: 134(i8vec2) Load 136(i8v)
+             166:162(i64vec2) SConvert 165
+                              Store 164(i64v) 166
+             170: 134(i8vec2) Load 136(i8v)
+             171:162(i64vec2) SConvert 170
+             172:167(i64vec2) Bitcast 171
+                              Store 169(u64v) 172
+             173: 131(i8vec2) Load 133(u8v)
+             174:  154(ivec2) UConvert 173
+                              Store 158(u32v) 174
+             175: 131(i8vec2) Load 133(u8v)
+             176:167(i64vec2) UConvert 175
+             177:162(i64vec2) Bitcast 176
+                              Store 164(i64v) 177
+             178: 131(i8vec2) Load 133(u8v)
+             179:167(i64vec2) UConvert 178
+                              Store 169(u64v) 179
+             184: 134(i8vec2) Load 136(i8v)
+             185:181(f16vec2) ConvertSToF 184
+                              Store 183(f16v) 185
+             190: 134(i8vec2) Load 136(i8v)
+             191:  187(fvec2) ConvertSToF 190
+                              Store 189(f32v) 191
+             196: 134(i8vec2) Load 136(i8v)
+             197:193(f64vec2) ConvertSToF 196
+                              Store 195(f64v) 197
+             198: 131(i8vec2) Load 133(u8v)
+             199:181(f16vec2) ConvertUToF 198
+                              Store 183(f16v) 199
+             200: 131(i8vec2) Load 133(u8v)
+             201:  187(fvec2) ConvertUToF 200
+                              Store 189(f32v) 201
+             202: 131(i8vec2) Load 133(u8v)
+             203:193(f64vec2) ConvertUToF 202
+                              Store 195(f64v) 203
+             204: 131(i8vec2) Load 133(u8v)
+             205: 134(i8vec2) Bitcast 204
+                              Store 136(i8v) 205
+             206: 134(i8vec2) Load 136(i8v)
+             207:139(i16vec2) SConvert 206
+                              Store 141(i16v) 207
+             208: 131(i8vec2) Load 133(u8v)
+             209:145(i16vec2) UConvert 208
+             210:139(i16vec2) Bitcast 209
+                              Store 141(i16v) 210
+             211: 134(i8vec2) Load 136(i8v)
+             212:  148(ivec2) SConvert 211
+                              Store 150(i32v) 212
+             213: 131(i8vec2) Load 133(u8v)
+             214:  154(ivec2) UConvert 213
+             215:  148(ivec2) Bitcast 214
+                              Store 150(i32v) 215
+             216: 134(i8vec2) Load 136(i8v)
+             217:162(i64vec2) SConvert 216
+                              Store 164(i64v) 217
+             218: 134(i8vec2) Load 136(i8v)
+             219:162(i64vec2) SConvert 218
+             220:167(i64vec2) Bitcast 219
+                              Store 169(u64v) 220
              223: 134(i8vec2) Load 136(i8v)
              224:139(i16vec2) SConvert 223
-             225:220(i16vec2) Bitcast 224
+             225:145(i16vec2) Bitcast 224
                               Store 222(u16v) 225
              226: 131(i8vec2) Load 133(u8v)
-             227:220(i16vec2) UConvert 226
+             227:145(i16vec2) UConvert 226
                               Store 222(u16v) 227
              228: 131(i8vec2) Load 133(u8v)
-             229:  155(ivec2) UConvert 228
-                              Store 157(u32v) 229
+             229:  154(ivec2) UConvert 228
+                              Store 158(u32v) 229
              230: 131(i8vec2) Load 133(u8v)
-             231:161(i64vec2) UConvert 230
-             232:161(i64vec2) Bitcast 231
-                              Store 163(i64v) 232
+             231:167(i64vec2) UConvert 230
+             232:162(i64vec2) Bitcast 231
+                              Store 164(i64v) 232
              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
+             234:167(i64vec2) UConvert 233
+             235:162(i64vec2) Bitcast 234
+             236:167(i64vec2) Bitcast 235
+                              Store 169(u64v) 236
              237: 134(i8vec2) Load 136(i8v)
-             238:180(f16vec2) ConvertSToF 237
-                              Store 182(f16v) 238
+             238:181(f16vec2) ConvertSToF 237
+                              Store 183(f16v) 238
              239: 134(i8vec2) Load 136(i8v)
-             240:  186(fvec2) ConvertSToF 239
-                              Store 188(f32v) 240
+             240:  187(fvec2) ConvertSToF 239
+                              Store 189(f32v) 240
              241: 134(i8vec2) Load 136(i8v)
-             242:192(f64vec2) ConvertSToF 241
-                              Store 194(f64v) 242
+             242:193(f64vec2) ConvertSToF 241
+                              Store 195(f64v) 242
              243: 131(i8vec2) Load 133(u8v)
-             244:180(f16vec2) ConvertUToF 243
-                              Store 182(f16v) 244
+             244:181(f16vec2) ConvertUToF 243
+                              Store 183(f16v) 244
              245: 131(i8vec2) Load 133(u8v)
-             246:  186(fvec2) ConvertUToF 245
-                              Store 188(f32v) 246
+             246:  187(fvec2) ConvertUToF 245
+                              Store 189(f32v) 246
              247: 131(i8vec2) Load 133(u8v)
-             248:192(f64vec2) ConvertUToF 247
-                              Store 194(f64v) 248
+             248:193(f64vec2) ConvertUToF 247
+                              Store 195(f64v) 248
              253:  250(bvec2) Load 252(bv)
              257: 134(i8vec2) Select 253 256 255
                               Store 136(i8v) 257
@@ -494,388 +494,388 @@
                               FunctionEnd
  10(typeCast16():           2 Function None 3
               11:             Label
-       268(i32v):    148(ptr) Variable Function
+       268(i32v):    149(ptr) Variable Function
        269(i16v):    140(ptr) Variable Function
        272(u16v):    221(ptr) Variable Function
-       278(u32v):    156(ptr) Variable Function
-       282(i64v):    162(ptr) Variable Function
-       285(u64v):    167(ptr) Variable Function
-       296(f16v):    181(ptr) Variable Function
-       299(f32v):    187(ptr) Variable Function
-       302(f64v):    193(ptr) Variable Function
+       278(u32v):    157(ptr) Variable Function
+       282(i64v):    163(ptr) Variable Function
+       285(u64v):    168(ptr) Variable Function
+       296(f16v):    182(ptr) Variable Function
+       299(f32v):    188(ptr) Variable Function
+       302(f64v):    194(ptr) Variable Function
         347(i8v):    135(ptr) Variable Function
         353(u8v):    132(ptr) Variable Function
          363(bv):    251(ptr) Variable Function
              270:139(i16vec2) Load 269(i16v)
-             271:  147(ivec2) SConvert 270
+             271:  148(ivec2) SConvert 270
                               Store 268(i32v) 271
-             273:220(i16vec2) Load 272(u16v)
-             274:  147(ivec2) UConvert 273
-             275:  147(ivec2) Bitcast 274
+             273:145(i16vec2) Load 272(u16v)
+             274:  154(ivec2) UConvert 273
+             275:  148(ivec2) Bitcast 274
                               Store 268(i32v) 275
              276:139(i16vec2) Load 269(i16v)
-             277:220(i16vec2) Bitcast 276
+             277:145(i16vec2) Bitcast 276
                               Store 272(u16v) 277
              279:139(i16vec2) Load 269(i16v)
-             280:  147(ivec2) SConvert 279
-             281:  155(ivec2) Bitcast 280
+             280:  148(ivec2) SConvert 279
+             281:  154(ivec2) Bitcast 280
                               Store 278(u32v) 281
              283:139(i16vec2) Load 269(i16v)
-             284:161(i64vec2) SConvert 283
+             284:162(i64vec2) SConvert 283
                               Store 282(i64v) 284
              286:139(i16vec2) Load 269(i16v)
-             287:161(i64vec2) SConvert 286
-             288:166(i64vec2) Bitcast 287
+             287:162(i64vec2) SConvert 286
+             288:167(i64vec2) Bitcast 287
                               Store 285(u64v) 288
-             289:220(i16vec2) Load 272(u16v)
-             290:  155(ivec2) UConvert 289
+             289:145(i16vec2) Load 272(u16v)
+             290:  154(ivec2) UConvert 289
                               Store 278(u32v) 290
-             291:220(i16vec2) Load 272(u16v)
-             292:161(i64vec2) UConvert 291
-             293:161(i64vec2) Bitcast 292
+             291:145(i16vec2) Load 272(u16v)
+             292:167(i64vec2) UConvert 291
+             293:162(i64vec2) Bitcast 292
                               Store 282(i64v) 293
-             294:220(i16vec2) Load 272(u16v)
-             295:166(i64vec2) UConvert 294
+             294:145(i16vec2) Load 272(u16v)
+             295:167(i64vec2) UConvert 294
                               Store 285(u64v) 295
              297:139(i16vec2) Load 269(i16v)
-             298:180(f16vec2) ConvertSToF 297
+             298:181(f16vec2) ConvertSToF 297
                               Store 296(f16v) 298
              300:139(i16vec2) Load 269(i16v)
-             301:  186(fvec2) ConvertSToF 300
+             301:  187(fvec2) ConvertSToF 300
                               Store 299(f32v) 301
              303:139(i16vec2) Load 269(i16v)
-             304:192(f64vec2) ConvertSToF 303
+             304:193(f64vec2) ConvertSToF 303
                               Store 302(f64v) 304
-             305:220(i16vec2) Load 272(u16v)
-             306:180(f16vec2) ConvertUToF 305
+             305:145(i16vec2) Load 272(u16v)
+             306:181(f16vec2) ConvertUToF 305
                               Store 296(f16v) 306
-             307:220(i16vec2) Load 272(u16v)
-             308:  186(fvec2) ConvertUToF 307
+             307:145(i16vec2) Load 272(u16v)
+             308:  187(fvec2) ConvertUToF 307
                               Store 299(f32v) 308
-             309:220(i16vec2) Load 272(u16v)
-             310:192(f64vec2) ConvertUToF 309
+             309:145(i16vec2) Load 272(u16v)
+             310:193(f64vec2) ConvertUToF 309
                               Store 302(f64v) 310
              311:139(i16vec2) Load 269(i16v)
-             312:  147(ivec2) SConvert 311
+             312:  148(ivec2) SConvert 311
                               Store 268(i32v) 312
-             313:220(i16vec2) Load 272(u16v)
-             314:  147(ivec2) UConvert 313
-             315:  147(ivec2) Bitcast 314
+             313:145(i16vec2) Load 272(u16v)
+             314:  154(ivec2) UConvert 313
+             315:  148(ivec2) Bitcast 314
                               Store 268(i32v) 315
              316:139(i16vec2) Load 269(i16v)
-             317:220(i16vec2) Bitcast 316
+             317:145(i16vec2) Bitcast 316
                               Store 272(u16v) 317
              318:139(i16vec2) Load 269(i16v)
-             319:  147(ivec2) SConvert 318
-             320:  155(ivec2) Bitcast 319
+             319:  148(ivec2) SConvert 318
+             320:  154(ivec2) Bitcast 319
                               Store 278(u32v) 320
              321:139(i16vec2) Load 269(i16v)
-             322:161(i64vec2) SConvert 321
+             322:162(i64vec2) SConvert 321
                               Store 282(i64v) 322
              323:139(i16vec2) Load 269(i16v)
-             324:161(i64vec2) SConvert 323
-             325:166(i64vec2) Bitcast 324
+             324:162(i64vec2) SConvert 323
+             325:167(i64vec2) Bitcast 324
                               Store 285(u64v) 325
-             326:220(i16vec2) Load 272(u16v)
-             327:  155(ivec2) UConvert 326
+             326:145(i16vec2) Load 272(u16v)
+             327:  154(ivec2) UConvert 326
                               Store 278(u32v) 327
-             328:220(i16vec2) Load 272(u16v)
-             329:161(i64vec2) UConvert 328
-             330:161(i64vec2) Bitcast 329
+             328:145(i16vec2) Load 272(u16v)
+             329:167(i64vec2) UConvert 328
+             330:162(i64vec2) Bitcast 329
                               Store 282(i64v) 330
-             331:220(i16vec2) Load 272(u16v)
-             332:161(i64vec2) UConvert 331
-             333:161(i64vec2) Bitcast 332
-             334:166(i64vec2) Bitcast 333
+             331:145(i16vec2) Load 272(u16v)
+             332:167(i64vec2) UConvert 331
+             333:162(i64vec2) Bitcast 332
+             334:167(i64vec2) Bitcast 333
                               Store 285(u64v) 334
              335:139(i16vec2) Load 269(i16v)
-             336:180(f16vec2) ConvertSToF 335
+             336:181(f16vec2) ConvertSToF 335
                               Store 296(f16v) 336
              337:139(i16vec2) Load 269(i16v)
-             338:  186(fvec2) ConvertSToF 337
+             338:  187(fvec2) ConvertSToF 337
                               Store 299(f32v) 338
              339:139(i16vec2) Load 269(i16v)
-             340:192(f64vec2) ConvertSToF 339
+             340:193(f64vec2) ConvertSToF 339
                               Store 302(f64v) 340
-             341:220(i16vec2) Load 272(u16v)
-             342:180(f16vec2) ConvertUToF 341
+             341:145(i16vec2) Load 272(u16v)
+             342:181(f16vec2) ConvertUToF 341
                               Store 296(f16v) 342
-             343:220(i16vec2) Load 272(u16v)
-             344:  186(fvec2) ConvertUToF 343
+             343:145(i16vec2) Load 272(u16v)
+             344:  187(fvec2) ConvertUToF 343
                               Store 299(f32v) 344
-             345:220(i16vec2) Load 272(u16v)
-             346:192(f64vec2) ConvertUToF 345
+             345:145(i16vec2) Load 272(u16v)
+             346:193(f64vec2) ConvertUToF 345
                               Store 302(f64v) 346
              348:139(i16vec2) Load 269(i16v)
              349: 134(i8vec2) SConvert 348
                               Store 347(i8v) 349
-             350:220(i16vec2) Load 272(u16v)
-             351: 134(i8vec2) UConvert 350
+             350:145(i16vec2) Load 272(u16v)
+             351: 131(i8vec2) UConvert 350
              352: 134(i8vec2) Bitcast 351
                               Store 347(i8v) 352
              354:139(i16vec2) Load 269(i16v)
              355: 134(i8vec2) SConvert 354
              356: 131(i8vec2) Bitcast 355
                               Store 353(u8v) 356
-             357:220(i16vec2) Load 272(u16v)
+             357:145(i16vec2) Load 272(u16v)
              358: 131(i8vec2) UConvert 357
                               Store 353(u8v) 358
-             359:220(i16vec2) Load 272(u16v)
+             359:145(i16vec2) Load 272(u16v)
              360: 131(i8vec2) UConvert 359
-             361:139(i16vec2) UConvert 360
+             361:145(i16vec2) UConvert 360
              362:139(i16vec2) Bitcast 361
                               Store 269(i16v) 362
              364:  250(bvec2) Load 363(bv)
              369:139(i16vec2) Select 364 368 367
                               Store 269(i16v) 369
              370:  250(bvec2) Load 363(bv)
-             375:220(i16vec2) Select 370 374 373
+             375:145(i16vec2) Select 370 374 373
                               Store 272(u16v) 375
              376:139(i16vec2) Load 269(i16v)
              377:  250(bvec2) INotEqual 376 373
                               Store 363(bv) 377
-             378:220(i16vec2) Load 272(u16v)
+             378:145(i16vec2) Load 272(u16v)
              379:  250(bvec2) INotEqual 378 373
                               Store 363(bv) 379
                               Return
                               FunctionEnd
  12(typeCast32():           2 Function None 3
               13:             Label
-       380(u32v):    156(ptr) Variable Function
-       381(i32v):    148(ptr) Variable Function
-       384(i64v):    162(ptr) Variable Function
-       387(u64v):    167(ptr) Variable Function
-       396(f32v):    187(ptr) Variable Function
-       399(f64v):    193(ptr) Variable Function
+       380(u32v):    157(ptr) Variable Function
+       381(i32v):    149(ptr) Variable Function
+       384(i64v):    163(ptr) Variable Function
+       387(u64v):    168(ptr) Variable Function
+       396(f32v):    188(ptr) Variable Function
+       399(f64v):    194(ptr) Variable Function
         406(i8v):    135(ptr) Variable Function
        412(i16v):    140(ptr) Variable Function
         429(u8v):    132(ptr) Variable Function
        435(u16v):    221(ptr) Variable Function
-       452(f16v):    181(ptr) Variable Function
+       452(f16v):    182(ptr) Variable Function
          465(bv):    251(ptr) Variable Function
-             382:  147(ivec2) Load 381(i32v)
-             383:  155(ivec2) Bitcast 382
+             382:  148(ivec2) Load 381(i32v)
+             383:  154(ivec2) Bitcast 382
                               Store 380(u32v) 383
-             385:  147(ivec2) Load 381(i32v)
-             386:161(i64vec2) SConvert 385
+             385:  148(ivec2) Load 381(i32v)
+             386:162(i64vec2) SConvert 385
                               Store 384(i64v) 386
-             388:  147(ivec2) Load 381(i32v)
-             389:161(i64vec2) SConvert 388
-             390:166(i64vec2) Bitcast 389
+             388:  148(ivec2) Load 381(i32v)
+             389:162(i64vec2) SConvert 388
+             390:167(i64vec2) Bitcast 389
                               Store 387(u64v) 390
-             391:  155(ivec2) Load 380(u32v)
-             392:161(i64vec2) UConvert 391
-             393:161(i64vec2) Bitcast 392
+             391:  154(ivec2) Load 380(u32v)
+             392:167(i64vec2) UConvert 391
+             393:162(i64vec2) Bitcast 392
                               Store 384(i64v) 393
-             394:  155(ivec2) Load 380(u32v)
-             395:166(i64vec2) UConvert 394
+             394:  154(ivec2) Load 380(u32v)
+             395:167(i64vec2) UConvert 394
                               Store 387(u64v) 395
-             397:  147(ivec2) Load 381(i32v)
-             398:  186(fvec2) ConvertSToF 397
+             397:  148(ivec2) Load 381(i32v)
+             398:  187(fvec2) ConvertSToF 397
                               Store 396(f32v) 398
-             400:  147(ivec2) Load 381(i32v)
-             401:192(f64vec2) ConvertSToF 400
+             400:  148(ivec2) Load 381(i32v)
+             401:193(f64vec2) ConvertSToF 400
                               Store 399(f64v) 401
-             402:  155(ivec2) Load 380(u32v)
-             403:  186(fvec2) ConvertUToF 402
+             402:  154(ivec2) Load 380(u32v)
+             403:  187(fvec2) ConvertUToF 402
                               Store 396(f32v) 403
-             404:  155(ivec2) Load 380(u32v)
-             405:192(f64vec2) ConvertUToF 404
+             404:  154(ivec2) Load 380(u32v)
+             405:193(f64vec2) ConvertUToF 404
                               Store 399(f64v) 405
-             407:  147(ivec2) Load 381(i32v)
+             407:  148(ivec2) Load 381(i32v)
              408: 134(i8vec2) SConvert 407
                               Store 406(i8v) 408
-             409:  155(ivec2) Load 380(u32v)
-             410: 134(i8vec2) UConvert 409
+             409:  154(ivec2) Load 380(u32v)
+             410: 131(i8vec2) UConvert 409
              411: 134(i8vec2) Bitcast 410
                               Store 406(i8v) 411
-             413:  147(ivec2) Load 381(i32v)
+             413:  148(ivec2) Load 381(i32v)
              414:139(i16vec2) SConvert 413
                               Store 412(i16v) 414
-             415:  155(ivec2) Load 380(u32v)
-             416:139(i16vec2) UConvert 415
+             415:  154(ivec2) Load 380(u32v)
+             416:145(i16vec2) UConvert 415
              417:139(i16vec2) Bitcast 416
                               Store 412(i16v) 417
-             418:  147(ivec2) Load 381(i32v)
+             418:  148(ivec2) Load 381(i32v)
              419:     29(int) CompositeExtract 418 0
              420:     29(int) CompositeExtract 418 1
-             421:  147(ivec2) CompositeConstruct 419 420
+             421:  148(ivec2) CompositeConstruct 419 420
                               Store 381(i32v) 421
-             422:  155(ivec2) Load 380(u32v)
-             423:  147(ivec2) Bitcast 422
+             422:  154(ivec2) Load 380(u32v)
+             423:  148(ivec2) Bitcast 422
                               Store 381(i32v) 423
-             424:  147(ivec2) Load 381(i32v)
-             425:161(i64vec2) SConvert 424
+             424:  148(ivec2) Load 381(i32v)
+             425:162(i64vec2) SConvert 424
                               Store 384(i64v) 425
-             426:  155(ivec2) Load 380(u32v)
-             427:161(i64vec2) UConvert 426
-             428:161(i64vec2) Bitcast 427
+             426:  154(ivec2) Load 380(u32v)
+             427:167(i64vec2) UConvert 426
+             428:162(i64vec2) Bitcast 427
                               Store 384(i64v) 428
-             430:  147(ivec2) Load 381(i32v)
+             430:  148(ivec2) Load 381(i32v)
              431: 134(i8vec2) SConvert 430
              432: 131(i8vec2) Bitcast 431
                               Store 429(u8v) 432
-             433:  155(ivec2) Load 380(u32v)
+             433:  154(ivec2) Load 380(u32v)
              434: 131(i8vec2) UConvert 433
                               Store 429(u8v) 434
-             436:  147(ivec2) Load 381(i32v)
+             436:  148(ivec2) Load 381(i32v)
              437:139(i16vec2) SConvert 436
-             438:220(i16vec2) Bitcast 437
+             438:145(i16vec2) Bitcast 437
                               Store 435(u16v) 438
-             439:  155(ivec2) Load 380(u32v)
-             440:220(i16vec2) UConvert 439
+             439:  154(ivec2) Load 380(u32v)
+             440:145(i16vec2) UConvert 439
                               Store 435(u16v) 440
-             441:  147(ivec2) Load 381(i32v)
-             442:  155(ivec2) Bitcast 441
+             441:  148(ivec2) Load 381(i32v)
+             442:  154(ivec2) Bitcast 441
                               Store 380(u32v) 442
-             443:  155(ivec2) Load 380(u32v)
+             443:  154(ivec2) Load 380(u32v)
              444:     19(int) CompositeExtract 443 0
              445:     19(int) CompositeExtract 443 1
-             446:  155(ivec2) CompositeConstruct 444 445
+             446:  154(ivec2) CompositeConstruct 444 445
                               Store 380(u32v) 446
-             447:  147(ivec2) Load 381(i32v)
-             448:161(i64vec2) SConvert 447
-             449:166(i64vec2) Bitcast 448
+             447:  148(ivec2) Load 381(i32v)
+             448:162(i64vec2) SConvert 447
+             449:167(i64vec2) Bitcast 448
                               Store 387(u64v) 449
-             450:  155(ivec2) Load 380(u32v)
-             451:166(i64vec2) UConvert 450
+             450:  154(ivec2) Load 380(u32v)
+             451:167(i64vec2) UConvert 450
                               Store 387(u64v) 451
-             453:  147(ivec2) Load 381(i32v)
-             454:180(f16vec2) ConvertSToF 453
+             453:  148(ivec2) Load 381(i32v)
+             454:181(f16vec2) ConvertSToF 453
                               Store 452(f16v) 454
-             455:  147(ivec2) Load 381(i32v)
-             456:  186(fvec2) ConvertSToF 455
+             455:  148(ivec2) Load 381(i32v)
+             456:  187(fvec2) ConvertSToF 455
                               Store 396(f32v) 456
-             457:  147(ivec2) Load 381(i32v)
-             458:192(f64vec2) ConvertSToF 457
+             457:  148(ivec2) Load 381(i32v)
+             458:193(f64vec2) ConvertSToF 457
                               Store 399(f64v) 458
-             459:  155(ivec2) Load 380(u32v)
-             460:180(f16vec2) ConvertUToF 459
+             459:  154(ivec2) Load 380(u32v)
+             460:181(f16vec2) ConvertUToF 459
                               Store 452(f16v) 460
-             461:  155(ivec2) Load 380(u32v)
-             462:  186(fvec2) ConvertUToF 461
+             461:  154(ivec2) Load 380(u32v)
+             462:  187(fvec2) ConvertUToF 461
                               Store 396(f32v) 462
-             463:  155(ivec2) Load 380(u32v)
-             464:192(f64vec2) ConvertUToF 463
+             463:  154(ivec2) Load 380(u32v)
+             464:193(f64vec2) ConvertUToF 463
                               Store 399(f64v) 464
              466:  250(bvec2) Load 465(bv)
-             470:  147(ivec2) Select 466 469 468
+             470:  148(ivec2) Select 466 469 468
                               Store 381(i32v) 470
              471:  250(bvec2) Load 465(bv)
-             476:  155(ivec2) Select 471 475 474
+             476:  154(ivec2) Select 471 475 474
                               Store 380(u32v) 476
-             477:  147(ivec2) Load 381(i32v)
+             477:  148(ivec2) Load 381(i32v)
              478:  250(bvec2) INotEqual 477 474
                               Store 465(bv) 478
-             479:  155(ivec2) Load 380(u32v)
+             479:  154(ivec2) Load 380(u32v)
              480:  250(bvec2) INotEqual 479 474
                               Store 465(bv) 480
                               Return
                               FunctionEnd
  14(typeCast64():           2 Function None 3
               15:             Label
-       481(u64v):    167(ptr) Variable Function
-       482(i64v):    162(ptr) Variable Function
-       485(f64v):    193(ptr) Variable Function
+       481(u64v):    168(ptr) Variable Function
+       482(i64v):    163(ptr) Variable Function
+       485(f64v):    194(ptr) Variable Function
         490(i8v):    135(ptr) Variable Function
        496(i16v):    140(ptr) Variable Function
-       502(i32v):    148(ptr) Variable Function
+       502(i32v):    149(ptr) Variable Function
         510(u8v):    132(ptr) Variable Function
        516(u16v):    221(ptr) Variable Function
-       522(u32v):    156(ptr) Variable Function
-       534(f16v):    181(ptr) Variable Function
-       537(f32v):    187(ptr) Variable Function
+       522(u32v):    157(ptr) Variable Function
+       534(f16v):    182(ptr) Variable Function
+       537(f32v):    188(ptr) Variable Function
          548(bv):    251(ptr) Variable Function
-             483:161(i64vec2) Load 482(i64v)
-             484:166(i64vec2) Bitcast 483
+             483:162(i64vec2) Load 482(i64v)
+             484:167(i64vec2) Bitcast 483
                               Store 481(u64v) 484
-             486:161(i64vec2) Load 482(i64v)
-             487:192(f64vec2) ConvertSToF 486
+             486:162(i64vec2) Load 482(i64v)
+             487:193(f64vec2) ConvertSToF 486
                               Store 485(f64v) 487
-             488:166(i64vec2) Load 481(u64v)
-             489:192(f64vec2) ConvertUToF 488
+             488:167(i64vec2) Load 481(u64v)
+             489:193(f64vec2) ConvertUToF 488
                               Store 485(f64v) 489
-             491:161(i64vec2) Load 482(i64v)
+             491:162(i64vec2) Load 482(i64v)
              492: 134(i8vec2) SConvert 491
                               Store 490(i8v) 492
-             493:166(i64vec2) Load 481(u64v)
-             494: 134(i8vec2) UConvert 493
+             493:167(i64vec2) Load 481(u64v)
+             494: 131(i8vec2) UConvert 493
              495: 134(i8vec2) Bitcast 494
                               Store 490(i8v) 495
-             497:161(i64vec2) Load 482(i64v)
+             497:162(i64vec2) Load 482(i64v)
              498:139(i16vec2) SConvert 497
                               Store 496(i16v) 498
-             499:166(i64vec2) Load 481(u64v)
-             500:139(i16vec2) UConvert 499
+             499:167(i64vec2) Load 481(u64v)
+             500:145(i16vec2) UConvert 499
              501:139(i16vec2) Bitcast 500
                               Store 496(i16v) 501
-             503:161(i64vec2) Load 482(i64v)
-             504:  147(ivec2) SConvert 503
+             503:162(i64vec2) Load 482(i64v)
+             504:  148(ivec2) SConvert 503
                               Store 502(i32v) 504
-             505:166(i64vec2) Load 481(u64v)
-             506:  147(ivec2) UConvert 505
-             507:  147(ivec2) Bitcast 506
+             505:167(i64vec2) Load 481(u64v)
+             506:  154(ivec2) UConvert 505
+             507:  148(ivec2) Bitcast 506
                               Store 502(i32v) 507
-             508:166(i64vec2) Load 481(u64v)
-             509:161(i64vec2) Bitcast 508
+             508:167(i64vec2) Load 481(u64v)
+             509:162(i64vec2) Bitcast 508
                               Store 482(i64v) 509
-             511:161(i64vec2) Load 482(i64v)
+             511:162(i64vec2) Load 482(i64v)
              512: 134(i8vec2) SConvert 511
              513: 131(i8vec2) Bitcast 512
                               Store 510(u8v) 513
-             514:166(i64vec2) Load 481(u64v)
+             514:167(i64vec2) Load 481(u64v)
              515: 131(i8vec2) UConvert 514
                               Store 510(u8v) 515
-             517:161(i64vec2) Load 482(i64v)
+             517:162(i64vec2) Load 482(i64v)
              518:139(i16vec2) SConvert 517
-             519:220(i16vec2) Bitcast 518
+             519:145(i16vec2) Bitcast 518
                               Store 516(u16v) 519
-             520:166(i64vec2) Load 481(u64v)
-             521:220(i16vec2) UConvert 520
+             520:167(i64vec2) Load 481(u64v)
+             521:145(i16vec2) UConvert 520
                               Store 516(u16v) 521
-             523:161(i64vec2) Load 482(i64v)
-             524:  147(ivec2) SConvert 523
-             525:  155(ivec2) Bitcast 524
+             523:162(i64vec2) Load 482(i64v)
+             524:  148(ivec2) SConvert 523
+             525:  154(ivec2) Bitcast 524
                               Store 522(u32v) 525
-             526:166(i64vec2) Load 481(u64v)
-             527:  155(ivec2) UConvert 526
+             526:167(i64vec2) Load 481(u64v)
+             527:  154(ivec2) UConvert 526
                               Store 522(u32v) 527
-             528:161(i64vec2) Load 482(i64v)
-             529:166(i64vec2) Bitcast 528
+             528:162(i64vec2) Load 482(i64v)
+             529:167(i64vec2) Bitcast 528
                               Store 481(u64v) 529
-             530:166(i64vec2) Load 481(u64v)
+             530:167(i64vec2) Load 481(u64v)
              531: 38(int64_t) CompositeExtract 530 0
              532: 38(int64_t) CompositeExtract 530 1
-             533:166(i64vec2) CompositeConstruct 531 532
+             533:167(i64vec2) CompositeConstruct 531 532
                               Store 481(u64v) 533
-             535:161(i64vec2) Load 482(i64v)
-             536:180(f16vec2) ConvertSToF 535
+             535:162(i64vec2) Load 482(i64v)
+             536:181(f16vec2) ConvertSToF 535
                               Store 534(f16v) 536
-             538:161(i64vec2) Load 482(i64v)
-             539:  186(fvec2) ConvertSToF 538
+             538:162(i64vec2) Load 482(i64v)
+             539:  187(fvec2) ConvertSToF 538
                               Store 537(f32v) 539
-             540:161(i64vec2) Load 482(i64v)
-             541:192(f64vec2) ConvertSToF 540
+             540:162(i64vec2) Load 482(i64v)
+             541:193(f64vec2) ConvertSToF 540
                               Store 485(f64v) 541
-             542:166(i64vec2) Load 481(u64v)
-             543:180(f16vec2) ConvertUToF 542
+             542:167(i64vec2) Load 481(u64v)
+             543:181(f16vec2) ConvertUToF 542
                               Store 534(f16v) 543
-             544:166(i64vec2) Load 481(u64v)
-             545:  186(fvec2) ConvertUToF 544
+             544:167(i64vec2) Load 481(u64v)
+             545:  187(fvec2) ConvertUToF 544
                               Store 537(f32v) 545
-             546:166(i64vec2) Load 481(u64v)
-             547:192(f64vec2) ConvertUToF 546
+             546:167(i64vec2) Load 481(u64v)
+             547:193(f64vec2) ConvertUToF 546
                               Store 485(f64v) 547
              549:  250(bvec2) Load 548(bv)
-             554:161(i64vec2) Select 549 553 552
+             554:162(i64vec2) Select 549 553 552
                               Store 482(i64v) 554
              555:  250(bvec2) Load 548(bv)
-             560:166(i64vec2) Select 555 559 558
+             560:167(i64vec2) Select 555 559 558
                               Store 481(u64v) 560
-             561:161(i64vec2) Load 482(i64v)
+             561:162(i64vec2) Load 482(i64v)
              562:  250(bvec2) INotEqual 561 558
                               Store 548(bv) 562
-             563:166(i64vec2) Load 481(u64v)
+             563:167(i64vec2) Load 481(u64v)
              564:  250(bvec2) INotEqual 563 558
                               Store 548(bv) 564
                               Return
diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out
index c998e87..c404375 100644
--- a/Test/baseResults/spv.int16.amd.frag.out
+++ b/Test/baseResults/spv.int16.amd.frag.out
@@ -143,8 +143,8 @@
              205:198(i16vec2) ConstantComposite 203 203
              211:             TypeVector 28(int) 2
              212:             TypePointer Function 211(ivec2)
-             224:             TypeVector 18(int) 2
-             225:             TypePointer Function 224(ivec2)
+             222:             TypeVector 18(int) 2
+             225:             TypePointer Function 222(ivec2)
              237:             TypeFloat 32
              238:             TypeVector 237(float) 2
              239:             TypePointer Function 238(fvec2)
@@ -157,9 +157,9 @@
              273:             TypeInt 64 1
              274:             TypeVector 273(int64_t) 2
              275:             TypePointer Function 274(i64vec2)
-             287:             TypeInt 64 0
-             288:             TypeVector 287(int64_t) 2
-             289:             TypePointer Function 288(i64vec2)
+             285:             TypeInt 64 0
+             286:             TypeVector 285(int64_t) 2
+             289:             TypePointer Function 286(i64vec2)
              316: 17(int16_t) Constant 4294967295
              317:187(i16vec2) ConstantComposite 316 316
              326: 49(i16vec3) ConstantComposite 202 202 202
@@ -175,7 +175,7 @@
              407:             TypePointer Function 261(float16_t)
              431:             TypePointer Function 273(int64_t)
              434:             TypeVector 17(int16_t) 4
-             440:             TypePointer Function 287(int64_t)
+             440:             TypePointer Function 285(int64_t)
              443:             TypeVector 14(int16_t) 4
              449:             TypePointer Function 388(bvec3)
       515(Block):             TypeStruct 54(i16vec3) 14(int16_t)
@@ -186,7 +186,7 @@
              520:             TypePointer Input 17(int16_t)
        521(ii16):    520(ptr) Variable Input
        522(si64):273(int64_t) SpecConstant 4294967286 4294967295
-       523(su64):287(int64_t) SpecConstant 20 0
+       523(su64):285(int64_t) SpecConstant 20 0
          524(si):     28(int) SpecConstant 4294967291
          525(su):     18(int) SpecConstant 4
          526(sb):   125(bool) SpecConstantTrue
@@ -197,7 +197,7 @@
              531: 17(int16_t) SpecConstantOp 169 526(sb) 53 194
              532: 14(int16_t) SpecConstantOp 169 526(sb) 203 202
              533:     28(int) SpecConstantOp 114 527(si16)
-             534:     28(int) SpecConstantOp 113 528(su16)
+             534:     18(int) SpecConstantOp 113 528(su16)
              535:     28(int) SpecConstantOp 128 534 128
              536: 17(int16_t) SpecConstantOp 114 524(si)
              537: 17(int16_t) SpecConstantOp 114 524(si)
@@ -205,20 +205,20 @@
              539:     28(int) SpecConstantOp 114 527(si16)
              540:     18(int) SpecConstantOp 128 539 128
              541:     18(int) SpecConstantOp 113 528(su16)
-             542: 17(int16_t) SpecConstantOp 113 525(su)
+             542: 14(int16_t) SpecConstantOp 113 525(su)
              543: 17(int16_t) SpecConstantOp 128 542 202
              544: 14(int16_t) SpecConstantOp 113 525(su)
              545:273(int64_t) SpecConstantOp 114 527(si16)
-             546:273(int64_t) SpecConstantOp 113 528(su16)
-             547:287(int64_t) Constant 0 0
+             546:285(int64_t) SpecConstantOp 113 528(su16)
+             547:285(int64_t) Constant 0 0
              548:273(int64_t) SpecConstantOp 128 546 547
              549: 17(int16_t) SpecConstantOp 114 522(si64)
              550: 17(int16_t) SpecConstantOp 114 522(si64)
              551: 14(int16_t) SpecConstantOp 128 550 202
              552:273(int64_t) SpecConstantOp 114 527(si16)
-             553:287(int64_t) SpecConstantOp 128 552 547
-             554:287(int64_t) SpecConstantOp 113 528(su16)
-             555: 17(int16_t) SpecConstantOp 113 523(su64)
+             553:285(int64_t) SpecConstantOp 128 552 547
+             554:285(int64_t) SpecConstantOp 113 528(su16)
+             555: 14(int16_t) SpecConstantOp 113 523(su64)
              556: 17(int16_t) SpecConstantOp 128 555 202
              557: 14(int16_t) SpecConstantOp 113 523(su64)
              558: 14(int16_t) SpecConstantOp 128 527(si16) 202
@@ -450,22 +450,22 @@
              220:  211(ivec2) SConvert 219
                               Store 213(iv) 220
              221:198(i16vec2) Load 200(u16v)
-             222:  211(ivec2) UConvert 221
-             223:  211(ivec2) Bitcast 222
-                              Store 213(iv) 223
-             227:  224(ivec2) Load 226(uv)
-             228:187(i16vec2) UConvert 227
+             223:  222(ivec2) UConvert 221
+             224:  211(ivec2) Bitcast 223
+                              Store 213(iv) 224
+             227:  222(ivec2) Load 226(uv)
+             228:198(i16vec2) UConvert 227
              229:187(i16vec2) Bitcast 228
                               Store 189(i16v) 229
-             230:  224(ivec2) Load 226(uv)
+             230:  222(ivec2) Load 226(uv)
              231:198(i16vec2) UConvert 230
                               Store 200(u16v) 231
              232:187(i16vec2) Load 189(i16v)
              233:  211(ivec2) SConvert 232
-             234:  224(ivec2) Bitcast 233
+             234:  222(ivec2) Bitcast 233
                               Store 226(uv) 234
              235:198(i16vec2) Load 200(u16v)
-             236:  224(ivec2) UConvert 235
+             236:  222(ivec2) UConvert 235
                               Store 226(uv) 236
              241:  238(fvec2) Load 240(fv)
              242:187(i16vec2) ConvertFToS 241
@@ -514,22 +514,22 @@
              283:274(i64vec2) SConvert 282
                               Store 276(i64v) 283
              284:198(i16vec2) Load 200(u16v)
-             285:274(i64vec2) UConvert 284
-             286:274(i64vec2) Bitcast 285
-                              Store 276(i64v) 286
-             291:288(i64vec2) Load 290(u64v)
-             292:187(i16vec2) UConvert 291
+             287:286(i64vec2) UConvert 284
+             288:274(i64vec2) Bitcast 287
+                              Store 276(i64v) 288
+             291:286(i64vec2) Load 290(u64v)
+             292:198(i16vec2) UConvert 291
              293:187(i16vec2) Bitcast 292
                               Store 189(i16v) 293
-             294:288(i64vec2) Load 290(u64v)
+             294:286(i64vec2) Load 290(u64v)
              295:198(i16vec2) UConvert 294
                               Store 200(u16v) 295
              296:187(i16vec2) Load 189(i16v)
              297:274(i64vec2) SConvert 296
-             298:288(i64vec2) Bitcast 297
+             298:286(i64vec2) Bitcast 297
                               Store 290(u64v) 298
              299:198(i16vec2) Load 200(u16v)
-             300:288(i64vec2) UConvert 299
+             300:286(i64vec2) UConvert 299
                               Store 290(u64v) 300
              301:198(i16vec2) Load 200(u16v)
              302:187(i16vec2) Bitcast 301
@@ -696,9 +696,9 @@
                               Store 305(i16v) 439
              442: 14(int16_t) Load 321(u16)
              444:443(i16vec4) CompositeConstruct 442 442 442 442
-             445:287(int64_t) Bitcast 444
+             445:285(int64_t) Bitcast 444
                               Store 441(packu64) 445
-             446:287(int64_t) Load 441(packu64)
+             446:285(int64_t) Load 441(packu64)
              447:443(i16vec4) Bitcast 446
              448: 49(i16vec3) VectorShuffle 447 447 0 1 2
                               Store 319(u16v) 448
diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out
index 9f5c901..84128ab 100644
--- a/Test/baseResults/spv.int16.frag.out
+++ b/Test/baseResults/spv.int16.frag.out
@@ -128,8 +128,8 @@
               53:             TypePointer Function 52(i16vec2)
               57:             TypeVector 36(int16_t) 2
               58:             TypePointer Function 57(i16vec2)
-              65:             TypeVector 17(int) 2
-              66:             TypePointer Function 65(ivec2)
+              61:             TypeVector 17(int) 2
+              66:             TypePointer Function 61(ivec2)
               71:             TypeInt 64 1
               72:             TypeVector 71(int64_t) 2
               73:             TypePointer Function 72(i64vec2)
@@ -148,9 +148,9 @@
              151:             TypeInt 8 1
              152:             TypeVector 151(int8_t) 2
              153:             TypePointer Function 152(i8vec2)
-             160:             TypeInt 8 0
-             161:             TypeVector 160(int8_t) 2
-             162:             TypePointer Function 161(i8vec2)
+             158:             TypeInt 8 0
+             159:             TypeVector 158(int8_t) 2
+             162:             TypePointer Function 159(i8vec2)
              173:             TypeBool
              174:             TypeVector 173(bool) 2
              175:             TypePointer Function 174(bvec2)
@@ -235,15 +235,15 @@
               56:   49(ivec2) SConvert 55
                               Store 51(i32v) 56
               60: 57(i16vec2) Load 59(u16v)
-              61:   49(ivec2) UConvert 60
-              62:   49(ivec2) Bitcast 61
-                              Store 51(i32v) 62
-              63: 52(i16vec2) Load 54(i16v)
-              64: 57(i16vec2) Bitcast 63
-                              Store 59(u16v) 64
+              62:   61(ivec2) UConvert 60
+              63:   49(ivec2) Bitcast 62
+                              Store 51(i32v) 63
+              64: 52(i16vec2) Load 54(i16v)
+              65: 57(i16vec2) Bitcast 64
+                              Store 59(u16v) 65
               68: 52(i16vec2) Load 54(i16v)
               69:   49(ivec2) SConvert 68
-              70:   65(ivec2) Bitcast 69
+              70:   61(ivec2) Bitcast 69
                               Store 67(u32v) 70
               75: 52(i16vec2) Load 54(i16v)
               76: 72(i64vec2) SConvert 75
@@ -253,10 +253,10 @@
               83: 78(i64vec2) Bitcast 82
                               Store 80(u64v) 83
               84: 57(i16vec2) Load 59(u16v)
-              85:   65(ivec2) UConvert 84
+              85:   61(ivec2) UConvert 84
                               Store 67(u32v) 85
               86: 57(i16vec2) Load 59(u16v)
-              87: 72(i64vec2) UConvert 86
+              87: 78(i64vec2) UConvert 86
               88: 72(i64vec2) Bitcast 87
                               Store 74(i64v) 88
               89: 57(i16vec2) Load 59(u16v)
@@ -284,7 +284,7 @@
              116:   49(ivec2) SConvert 115
                               Store 51(i32v) 116
              117: 57(i16vec2) Load 59(u16v)
-             118:   49(ivec2) UConvert 117
+             118:   61(ivec2) UConvert 117
              119:   49(ivec2) Bitcast 118
                               Store 51(i32v) 119
              120: 52(i16vec2) Load 54(i16v)
@@ -292,7 +292,7 @@
                               Store 59(u16v) 121
              122: 52(i16vec2) Load 54(i16v)
              123:   49(ivec2) SConvert 122
-             124:   65(ivec2) Bitcast 123
+             124:   61(ivec2) Bitcast 123
                               Store 67(u32v) 124
              125: 52(i16vec2) Load 54(i16v)
              126: 72(i64vec2) SConvert 125
@@ -302,14 +302,14 @@
              129: 78(i64vec2) Bitcast 128
                               Store 80(u64v) 129
              130: 57(i16vec2) Load 59(u16v)
-             131:   65(ivec2) UConvert 130
+             131:   61(ivec2) UConvert 130
                               Store 67(u32v) 131
              132: 57(i16vec2) Load 59(u16v)
-             133: 72(i64vec2) UConvert 132
+             133: 78(i64vec2) UConvert 132
              134: 72(i64vec2) Bitcast 133
                               Store 74(i64v) 134
              135: 57(i16vec2) Load 59(u16v)
-             136: 72(i64vec2) UConvert 135
+             136: 78(i64vec2) UConvert 135
              137: 72(i64vec2) Bitcast 136
              138: 78(i64vec2) Bitcast 137
                               Store 80(u64v) 138
@@ -335,19 +335,19 @@
              156: 152(i8vec2) SConvert 155
                               Store 154(i8v) 156
              157: 57(i16vec2) Load 59(u16v)
-             158: 152(i8vec2) UConvert 157
-             159: 152(i8vec2) Bitcast 158
-                              Store 154(i8v) 159
+             160: 159(i8vec2) UConvert 157
+             161: 152(i8vec2) Bitcast 160
+                              Store 154(i8v) 161
              164: 52(i16vec2) Load 54(i16v)
              165: 152(i8vec2) SConvert 164
-             166: 161(i8vec2) Bitcast 165
+             166: 159(i8vec2) Bitcast 165
                               Store 163(u8v) 166
              167: 57(i16vec2) Load 59(u16v)
-             168: 161(i8vec2) UConvert 167
+             168: 159(i8vec2) UConvert 167
                               Store 163(u8v) 168
              169: 57(i16vec2) Load 59(u16v)
-             170: 161(i8vec2) UConvert 169
-             171: 52(i16vec2) UConvert 170
+             170: 159(i8vec2) UConvert 169
+             171: 57(i16vec2) UConvert 170
              172: 52(i16vec2) Bitcast 171
                               Store 54(i16v) 172
              177:  174(bvec2) Load 176(bv)
diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out
index 332c424..d72de0d 100644
--- a/Test/baseResults/spv.int32.frag.out
+++ b/Test/baseResults/spv.int32.frag.out
@@ -42,8 +42,8 @@
                               Name 78  "f32v"
                               Name 84  "f64v"
                               Name 94  "i8v"
-                              Name 103  "i16v"
-                              Name 123  "u8v"
+                              Name 105  "i16v"
+                              Name 125  "u8v"
                               Name 132  "u16v"
                               Name 152  "f16v"
                               Name 168  "bv"
@@ -144,15 +144,15 @@
               91:             TypeInt 8 1
               92:             TypeVector 91(int8_t) 2
               93:             TypePointer Function 92(i8vec2)
-             100:             TypeInt 16 1
-             101:             TypeVector 100(int16_t) 2
-             102:             TypePointer Function 101(i16vec2)
-             120:             TypeInt 8 0
-             121:             TypeVector 120(int8_t) 2
-             122:             TypePointer Function 121(i8vec2)
-             129:             TypeInt 16 0
-             130:             TypeVector 129(int16_t) 2
-             131:             TypePointer Function 130(i16vec2)
+              98:             TypeInt 8 0
+              99:             TypeVector 98(int8_t) 2
+             102:             TypeInt 16 1
+             103:             TypeVector 102(int16_t) 2
+             104:             TypePointer Function 103(i16vec2)
+             109:             TypeInt 16 0
+             110:             TypeVector 109(int16_t) 2
+             124:             TypePointer Function 99(i8vec2)
+             131:             TypePointer Function 110(i16vec2)
              149:             TypeFloat 16
              150:             TypeVector 149(float16_t) 2
              151:             TypePointer Function 150(f16vec2)
@@ -181,7 +181,7 @@
              395:  394(bvec3) ConstantComposite 381 381 381
              397:             TypeVector 91(int8_t) 4
              398:             TypePointer Function 397(i8vec4)
-             405:             TypeVector 120(int8_t) 4
+             405:             TypeVector 98(int8_t) 4
              406:             TypePointer Function 405(i8vec4)
              417:             TypePointer Function 63(int64_t)
              421:             TypePointer Function 394(bvec3)
@@ -229,8 +229,8 @@
         78(f32v):     77(ptr) Variable Function
         84(f64v):     83(ptr) Variable Function
          94(i8v):     93(ptr) Variable Function
-       103(i16v):    102(ptr) Variable Function
-        123(u8v):    122(ptr) Variable Function
+       105(i16v):    104(ptr) Variable Function
+        125(u8v):    124(ptr) Variable Function
        132(u16v):    131(ptr) Variable Function
        152(f16v):    151(ptr) Variable Function
          168(bv):    167(ptr) Variable Function
@@ -245,7 +245,7 @@
               69: 64(i64vec2) Bitcast 68
                               Store 66(u64v) 69
               70:   49(ivec2) Load 51(u32v)
-              71: 58(i64vec2) UConvert 70
+              71: 64(i64vec2) UConvert 70
               72: 58(i64vec2) Bitcast 71
                               Store 60(i64v) 72
               73:   49(ivec2) Load 51(u32v)
@@ -267,44 +267,44 @@
               96:  92(i8vec2) SConvert 95
                               Store 94(i8v) 96
               97:   49(ivec2) Load 51(u32v)
-              98:  92(i8vec2) UConvert 97
-              99:  92(i8vec2) Bitcast 98
-                              Store 94(i8v) 99
-             104:   52(ivec2) Load 54(i32v)
-             105:101(i16vec2) SConvert 104
-                              Store 103(i16v) 105
-             106:   49(ivec2) Load 51(u32v)
-             107:101(i16vec2) UConvert 106
-             108:101(i16vec2) Bitcast 107
-                              Store 103(i16v) 108
-             109:   52(ivec2) Load 54(i32v)
-             110:     18(int) CompositeExtract 109 0
-             111:     18(int) CompositeExtract 109 1
-             112:   52(ivec2) CompositeConstruct 110 111
-                              Store 54(i32v) 112
-             113:   49(ivec2) Load 51(u32v)
-             114:   52(ivec2) Bitcast 113
-                              Store 54(i32v) 114
-             115:   52(ivec2) Load 54(i32v)
-             116: 58(i64vec2) SConvert 115
-                              Store 60(i64v) 116
+             100:  99(i8vec2) UConvert 97
+             101:  92(i8vec2) Bitcast 100
+                              Store 94(i8v) 101
+             106:   52(ivec2) Load 54(i32v)
+             107:103(i16vec2) SConvert 106
+                              Store 105(i16v) 107
+             108:   49(ivec2) Load 51(u32v)
+             111:110(i16vec2) UConvert 108
+             112:103(i16vec2) Bitcast 111
+                              Store 105(i16v) 112
+             113:   52(ivec2) Load 54(i32v)
+             114:     18(int) CompositeExtract 113 0
+             115:     18(int) CompositeExtract 113 1
+             116:   52(ivec2) CompositeConstruct 114 115
+                              Store 54(i32v) 116
              117:   49(ivec2) Load 51(u32v)
-             118: 58(i64vec2) UConvert 117
-             119: 58(i64vec2) Bitcast 118
-                              Store 60(i64v) 119
-             124:   52(ivec2) Load 54(i32v)
-             125:  92(i8vec2) SConvert 124
-             126: 121(i8vec2) Bitcast 125
-                              Store 123(u8v) 126
-             127:   49(ivec2) Load 51(u32v)
-             128: 121(i8vec2) UConvert 127
-                              Store 123(u8v) 128
+             118:   52(ivec2) Bitcast 117
+                              Store 54(i32v) 118
+             119:   52(ivec2) Load 54(i32v)
+             120: 58(i64vec2) SConvert 119
+                              Store 60(i64v) 120
+             121:   49(ivec2) Load 51(u32v)
+             122: 64(i64vec2) UConvert 121
+             123: 58(i64vec2) Bitcast 122
+                              Store 60(i64v) 123
+             126:   52(ivec2) Load 54(i32v)
+             127:  92(i8vec2) SConvert 126
+             128:  99(i8vec2) Bitcast 127
+                              Store 125(u8v) 128
+             129:   49(ivec2) Load 51(u32v)
+             130:  99(i8vec2) UConvert 129
+                              Store 125(u8v) 130
              133:   52(ivec2) Load 54(i32v)
-             134:101(i16vec2) SConvert 133
-             135:130(i16vec2) Bitcast 134
+             134:103(i16vec2) SConvert 133
+             135:110(i16vec2) Bitcast 134
                               Store 132(u16v) 135
              136:   49(ivec2) Load 51(u32v)
-             137:130(i16vec2) UConvert 136
+             137:110(i16vec2) UConvert 136
                               Store 132(u16v) 137
              138:   52(ivec2) Load 54(i32v)
              139:   49(ivec2) Bitcast 138
@@ -519,7 +519,7 @@
        325(u32v):    185(ptr) Variable Function
         327(u32):     38(ptr) Variable Function
        399(i8v4):    398(ptr) Variable Function
-      402(i16v2):    102(ptr) Variable Function
+      402(i16v2):    104(ptr) Variable Function
        407(u8v4):    406(ptr) Variable Function
       410(u16v2):    131(ptr) Variable Function
         413(i64):    226(ptr) Variable Function
@@ -621,13 +621,13 @@
              400: 397(i8vec4) Load 399(i8v4)
              401:     18(int) Bitcast 400
                               Store 315(i32) 401
-             403:101(i16vec2) Load 402(i16v2)
+             403:103(i16vec2) Load 402(i16v2)
              404:     18(int) Bitcast 403
                               Store 315(i32) 404
              408: 405(i8vec4) Load 407(u8v4)
              409:     14(int) Bitcast 408
                               Store 327(u32) 409
-             411:130(i16vec2) Load 410(u16v2)
+             411:110(i16vec2) Load 410(u16v2)
              412:     14(int) Bitcast 411
                               Store 327(u32) 412
              414: 57(int64_t) Load 413(i64)
diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out
index ef21530..b82cfa3 100644
--- a/Test/baseResults/spv.int64.frag.out
+++ b/Test/baseResults/spv.int64.frag.out
@@ -167,13 +167,13 @@
              477: 14(int64_t) SpecConstantOp 113 468(su)
              478: 18(int64_t) SpecConstantOp 128 466(su64) 69
              479: 14(int64_t) SpecConstantOp 128 465(si64) 69
-             480:     31(int) SpecConstantOp 113 466(su64)
+             480:     21(int) SpecConstantOp 113 466(su64)
              481:     31(int) SpecConstantOp 128 480 227
              482: 18(int64_t) SpecConstantOp 114 467(si)
              483: 14(int64_t) SpecConstantOp 128 482 69
              484:     31(int) SpecConstantOp 114 465(si64)
              485:     21(int) SpecConstantOp 128 484 227
-             486: 18(int64_t) SpecConstantOp 113 468(su)
+             486: 14(int64_t) SpecConstantOp 113 468(su)
              487: 18(int64_t) SpecConstantOp 128 486 69
          4(main):           2 Function None 3
                5:             Label
@@ -268,11 +268,11 @@
              122:   81(ivec2) Bitcast 121
                               Store 83(uv) 122
              123:   81(ivec2) Load 83(uv)
-             124: 52(i64vec2) UConvert 123
+             124: 65(i64vec2) UConvert 123
              125: 52(i64vec2) Bitcast 124
                               Store 54(i64v) 125
              126: 65(i64vec2) Load 67(u64v)
-             127:   74(ivec2) UConvert 126
+             127:   81(ivec2) UConvert 126
              128:   74(ivec2) Bitcast 127
                               Store 76(iv) 128
              129:   74(ivec2) Load 76(iv)
diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out
index 4c5b590..20c37cc 100644
--- a/Test/baseResults/spv.int8.frag.out
+++ b/Test/baseResults/spv.int8.frag.out
@@ -37,13 +37,13 @@
                               Name 51  "u8v"
                               Name 54  "i8v"
                               Name 60  "i16v"
-                              Name 68  "i32v"
-                              Name 76  "u32v"
-                              Name 83  "i64v"
-                              Name 89  "u64v"
-                              Name 103  "f16v"
-                              Name 109  "f32v"
-                              Name 115  "f64v"
+                              Name 70  "i32v"
+                              Name 78  "u32v"
+                              Name 85  "i64v"
+                              Name 91  "u64v"
+                              Name 105  "f16v"
+                              Name 111  "f32v"
+                              Name 117  "f64v"
                               Name 144  "u16v"
                               Name 174  "bv"
                               Name 192  "u8v"
@@ -125,28 +125,28 @@
               57:             TypeInt 16 1
               58:             TypeVector 57(int16_t) 2
               59:             TypePointer Function 58(i16vec2)
-              66:             TypeVector 27(int) 2
-              67:             TypePointer Function 66(ivec2)
+              64:             TypeInt 16 0
+              65:             TypeVector 64(int16_t) 2
+              68:             TypeVector 27(int) 2
+              69:             TypePointer Function 68(ivec2)
               74:             TypeVector 17(int) 2
-              75:             TypePointer Function 74(ivec2)
-              80:             TypeInt 64 1
-              81:             TypeVector 80(int64_t) 2
-              82:             TypePointer Function 81(i64vec2)
-              86:             TypeInt 64 0
-              87:             TypeVector 86(int64_t) 2
-              88:             TypePointer Function 87(i64vec2)
-             100:             TypeFloat 16
-             101:             TypeVector 100(float16_t) 2
-             102:             TypePointer Function 101(f16vec2)
-             106:             TypeFloat 32
-             107:             TypeVector 106(float) 2
-             108:             TypePointer Function 107(fvec2)
-             112:             TypeFloat 64
-             113:             TypeVector 112(float64_t) 2
-             114:             TypePointer Function 113(f64vec2)
-             141:             TypeInt 16 0
-             142:             TypeVector 141(int16_t) 2
-             143:             TypePointer Function 142(i16vec2)
+              77:             TypePointer Function 74(ivec2)
+              82:             TypeInt 64 1
+              83:             TypeVector 82(int64_t) 2
+              84:             TypePointer Function 83(i64vec2)
+              88:             TypeInt 64 0
+              89:             TypeVector 88(int64_t) 2
+              90:             TypePointer Function 89(i64vec2)
+             102:             TypeFloat 16
+             103:             TypeVector 102(float16_t) 2
+             104:             TypePointer Function 103(f16vec2)
+             108:             TypeFloat 32
+             109:             TypeVector 108(float) 2
+             110:             TypePointer Function 109(fvec2)
+             114:             TypeFloat 64
+             115:             TypeVector 114(float64_t) 2
+             116:             TypePointer Function 115(f64vec2)
+             143:             TypePointer Function 65(i16vec2)
              171:             TypeBool
              172:             TypeVector 171(bool) 2
              173:             TypePointer Function 172(bvec2)
@@ -179,7 +179,7 @@
              428:  427(bvec3) ConstantComposite 411 411 411
              434:             TypeVector 14(int8_t) 4
              435:             TypePointer Function 434(i8vec4)
-             439:             TypePointer Function 141(int16_t)
+             439:             TypePointer Function 64(int16_t)
              445:             TypeVector 36(int8_t) 4
              446:             TypePointer Function 445(i8vec4)
              458:             TypePointer Function 427(bvec3)
@@ -217,13 +217,13 @@
          51(u8v):     50(ptr) Variable Function
          54(i8v):     53(ptr) Variable Function
         60(i16v):     59(ptr) Variable Function
-        68(i32v):     67(ptr) Variable Function
-        76(u32v):     75(ptr) Variable Function
-        83(i64v):     82(ptr) Variable Function
-        89(u64v):     88(ptr) Variable Function
-       103(f16v):    102(ptr) Variable Function
-       109(f32v):    108(ptr) Variable Function
-       115(f64v):    114(ptr) Variable Function
+        70(i32v):     69(ptr) Variable Function
+        78(u32v):     77(ptr) Variable Function
+        85(i64v):     84(ptr) Variable Function
+        91(u64v):     90(ptr) Variable Function
+       105(f16v):    104(ptr) Variable Function
+       111(f32v):    110(ptr) Variable Function
+       117(f64v):    116(ptr) Variable Function
        144(u16v):    143(ptr) Variable Function
          174(bv):    173(ptr) Variable Function
               55:  52(i8vec2) Load 54(i8v)
@@ -233,116 +233,116 @@
               62: 58(i16vec2) SConvert 61
                               Store 60(i16v) 62
               63:  49(i8vec2) Load 51(u8v)
-              64: 58(i16vec2) UConvert 63
-              65: 58(i16vec2) Bitcast 64
-                              Store 60(i16v) 65
-              69:  52(i8vec2) Load 54(i8v)
-              70:   66(ivec2) SConvert 69
-                              Store 68(i32v) 70
-              71:  49(i8vec2) Load 51(u8v)
-              72:   66(ivec2) UConvert 71
-              73:   66(ivec2) Bitcast 72
-                              Store 68(i32v) 73
-              77:  52(i8vec2) Load 54(i8v)
-              78:   66(ivec2) SConvert 77
-              79:   74(ivec2) Bitcast 78
-                              Store 76(u32v) 79
-              84:  52(i8vec2) Load 54(i8v)
-              85: 81(i64vec2) SConvert 84
-                              Store 83(i64v) 85
-              90:  52(i8vec2) Load 54(i8v)
-              91: 81(i64vec2) SConvert 90
-              92: 87(i64vec2) Bitcast 91
-                              Store 89(u64v) 92
-              93:  49(i8vec2) Load 51(u8v)
-              94:   74(ivec2) UConvert 93
-                              Store 76(u32v) 94
+              66: 65(i16vec2) UConvert 63
+              67: 58(i16vec2) Bitcast 66
+                              Store 60(i16v) 67
+              71:  52(i8vec2) Load 54(i8v)
+              72:   68(ivec2) SConvert 71
+                              Store 70(i32v) 72
+              73:  49(i8vec2) Load 51(u8v)
+              75:   74(ivec2) UConvert 73
+              76:   68(ivec2) Bitcast 75
+                              Store 70(i32v) 76
+              79:  52(i8vec2) Load 54(i8v)
+              80:   68(ivec2) SConvert 79
+              81:   74(ivec2) Bitcast 80
+                              Store 78(u32v) 81
+              86:  52(i8vec2) Load 54(i8v)
+              87: 83(i64vec2) SConvert 86
+                              Store 85(i64v) 87
+              92:  52(i8vec2) Load 54(i8v)
+              93: 83(i64vec2) SConvert 92
+              94: 89(i64vec2) Bitcast 93
+                              Store 91(u64v) 94
               95:  49(i8vec2) Load 51(u8v)
-              96: 81(i64vec2) UConvert 95
-              97: 81(i64vec2) Bitcast 96
-                              Store 83(i64v) 97
-              98:  49(i8vec2) Load 51(u8v)
-              99: 87(i64vec2) UConvert 98
-                              Store 89(u64v) 99
-             104:  52(i8vec2) Load 54(i8v)
-             105:101(f16vec2) ConvertSToF 104
-                              Store 103(f16v) 105
-             110:  52(i8vec2) Load 54(i8v)
-             111:  107(fvec2) ConvertSToF 110
-                              Store 109(f32v) 111
-             116:  52(i8vec2) Load 54(i8v)
-             117:113(f64vec2) ConvertSToF 116
-                              Store 115(f64v) 117
-             118:  49(i8vec2) Load 51(u8v)
-             119:101(f16vec2) ConvertUToF 118
-                              Store 103(f16v) 119
+              96:   74(ivec2) UConvert 95
+                              Store 78(u32v) 96
+              97:  49(i8vec2) Load 51(u8v)
+              98: 89(i64vec2) UConvert 97
+              99: 83(i64vec2) Bitcast 98
+                              Store 85(i64v) 99
+             100:  49(i8vec2) Load 51(u8v)
+             101: 89(i64vec2) UConvert 100
+                              Store 91(u64v) 101
+             106:  52(i8vec2) Load 54(i8v)
+             107:103(f16vec2) ConvertSToF 106
+                              Store 105(f16v) 107
+             112:  52(i8vec2) Load 54(i8v)
+             113:  109(fvec2) ConvertSToF 112
+                              Store 111(f32v) 113
+             118:  52(i8vec2) Load 54(i8v)
+             119:115(f64vec2) ConvertSToF 118
+                              Store 117(f64v) 119
              120:  49(i8vec2) Load 51(u8v)
-             121:  107(fvec2) ConvertUToF 120
-                              Store 109(f32v) 121
+             121:103(f16vec2) ConvertUToF 120
+                              Store 105(f16v) 121
              122:  49(i8vec2) Load 51(u8v)
-             123:113(f64vec2) ConvertUToF 122
-                              Store 115(f64v) 123
+             123:  109(fvec2) ConvertUToF 122
+                              Store 111(f32v) 123
              124:  49(i8vec2) Load 51(u8v)
-             125:  52(i8vec2) Bitcast 124
-                              Store 54(i8v) 125
-             126:  52(i8vec2) Load 54(i8v)
-             127: 58(i16vec2) SConvert 126
-                              Store 60(i16v) 127
-             128:  49(i8vec2) Load 51(u8v)
-             129: 58(i16vec2) UConvert 128
-             130: 58(i16vec2) Bitcast 129
-                              Store 60(i16v) 130
-             131:  52(i8vec2) Load 54(i8v)
-             132:   66(ivec2) SConvert 131
-                              Store 68(i32v) 132
-             133:  49(i8vec2) Load 51(u8v)
-             134:   66(ivec2) UConvert 133
-             135:   66(ivec2) Bitcast 134
-                              Store 68(i32v) 135
-             136:  52(i8vec2) Load 54(i8v)
-             137: 81(i64vec2) SConvert 136
-                              Store 83(i64v) 137
+             125:115(f64vec2) ConvertUToF 124
+                              Store 117(f64v) 125
+             126:  49(i8vec2) Load 51(u8v)
+             127:  52(i8vec2) Bitcast 126
+                              Store 54(i8v) 127
+             128:  52(i8vec2) Load 54(i8v)
+             129: 58(i16vec2) SConvert 128
+                              Store 60(i16v) 129
+             130:  49(i8vec2) Load 51(u8v)
+             131: 65(i16vec2) UConvert 130
+             132: 58(i16vec2) Bitcast 131
+                              Store 60(i16v) 132
+             133:  52(i8vec2) Load 54(i8v)
+             134:   68(ivec2) SConvert 133
+                              Store 70(i32v) 134
+             135:  49(i8vec2) Load 51(u8v)
+             136:   74(ivec2) UConvert 135
+             137:   68(ivec2) Bitcast 136
+                              Store 70(i32v) 137
              138:  52(i8vec2) Load 54(i8v)
-             139: 81(i64vec2) SConvert 138
-             140: 87(i64vec2) Bitcast 139
-                              Store 89(u64v) 140
+             139: 83(i64vec2) SConvert 138
+                              Store 85(i64v) 139
+             140:  52(i8vec2) Load 54(i8v)
+             141: 83(i64vec2) SConvert 140
+             142: 89(i64vec2) Bitcast 141
+                              Store 91(u64v) 142
              145:  52(i8vec2) Load 54(i8v)
              146: 58(i16vec2) SConvert 145
-             147:142(i16vec2) Bitcast 146
+             147: 65(i16vec2) Bitcast 146
                               Store 144(u16v) 147
              148:  49(i8vec2) Load 51(u8v)
-             149:142(i16vec2) UConvert 148
+             149: 65(i16vec2) UConvert 148
                               Store 144(u16v) 149
              150:  49(i8vec2) Load 51(u8v)
              151:   74(ivec2) UConvert 150
-                              Store 76(u32v) 151
+                              Store 78(u32v) 151
              152:  49(i8vec2) Load 51(u8v)
-             153: 81(i64vec2) UConvert 152
-             154: 81(i64vec2) Bitcast 153
-                              Store 83(i64v) 154
+             153: 89(i64vec2) UConvert 152
+             154: 83(i64vec2) Bitcast 153
+                              Store 85(i64v) 154
              155:  49(i8vec2) Load 51(u8v)
-             156: 81(i64vec2) UConvert 155
-             157: 81(i64vec2) Bitcast 156
-             158: 87(i64vec2) Bitcast 157
-                              Store 89(u64v) 158
+             156: 89(i64vec2) UConvert 155
+             157: 83(i64vec2) Bitcast 156
+             158: 89(i64vec2) Bitcast 157
+                              Store 91(u64v) 158
              159:  52(i8vec2) Load 54(i8v)
-             160:101(f16vec2) ConvertSToF 159
-                              Store 103(f16v) 160
+             160:103(f16vec2) ConvertSToF 159
+                              Store 105(f16v) 160
              161:  52(i8vec2) Load 54(i8v)
-             162:  107(fvec2) ConvertSToF 161
-                              Store 109(f32v) 162
+             162:  109(fvec2) ConvertSToF 161
+                              Store 111(f32v) 162
              163:  52(i8vec2) Load 54(i8v)
-             164:113(f64vec2) ConvertSToF 163
-                              Store 115(f64v) 164
+             164:115(f64vec2) ConvertSToF 163
+                              Store 117(f64v) 164
              165:  49(i8vec2) Load 51(u8v)
-             166:101(f16vec2) ConvertUToF 165
-                              Store 103(f16v) 166
+             166:103(f16vec2) ConvertUToF 165
+                              Store 105(f16v) 166
              167:  49(i8vec2) Load 51(u8v)
-             168:  107(fvec2) ConvertUToF 167
-                              Store 109(f32v) 168
+             168:  109(fvec2) ConvertUToF 167
+                              Store 111(f32v) 168
              169:  49(i8vec2) Load 51(u8v)
-             170:113(f64vec2) ConvertUToF 169
-                              Store 115(f64v) 170
+             170:115(f64vec2) ConvertUToF 169
+                              Store 117(f64v) 170
              175:  172(bvec2) Load 174(bv)
              179:  52(i8vec2) Select 175 178 177
                               Store 54(i8v) 179
@@ -649,7 +649,7 @@
              438:     27(int) Bitcast 437
                               Store 433(i32) 438
              442:  49(i8vec2) Load 441(u8v2)
-             443:141(int16_t) Bitcast 442
+             443: 64(int16_t) Bitcast 442
                               Store 440(u16) 443
              448: 445(i8vec4) Load 447(u8v4)
              449:     17(int) Bitcast 448
@@ -660,7 +660,7 @@
              452:     27(int) Load 433(i32)
              453: 434(i8vec4) Bitcast 452
                               Store 436(i8v4) 453
-             454:141(int16_t) Load 440(u16)
+             454: 64(int16_t) Load 440(u16)
              455:  49(i8vec2) Bitcast 454
                               Store 441(u8v2) 455
              456:     17(int) Load 444(u32)
diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out
index 5c28b4e..b6936f8 100755
--- a/Test/baseResults/spv.vulkan110.int16.frag.out
+++ b/Test/baseResults/spv.vulkan110.int16.frag.out
@@ -125,8 +125,8 @@
               53:             TypePointer Function 52(i16vec2)
               57:             TypeVector 36(int16_t) 2
               58:             TypePointer Function 57(i16vec2)
-              65:             TypeVector 17(int) 2
-              66:             TypePointer Function 65(ivec2)
+              61:             TypeVector 17(int) 2
+              66:             TypePointer Function 61(ivec2)
               71:             TypeInt 64 1
               72:             TypeVector 71(int64_t) 2
               73:             TypePointer Function 72(i64vec2)
@@ -145,9 +145,9 @@
              151:             TypeInt 8 1
              152:             TypeVector 151(int8_t) 2
              153:             TypePointer Function 152(i8vec2)
-             160:             TypeInt 8 0
-             161:             TypeVector 160(int8_t) 2
-             162:             TypePointer Function 161(i8vec2)
+             158:             TypeInt 8 0
+             159:             TypeVector 158(int8_t) 2
+             162:             TypePointer Function 159(i8vec2)
              173:             TypeBool
              174:             TypeVector 173(bool) 2
              175:             TypePointer Function 174(bvec2)
@@ -232,15 +232,15 @@
               56:   49(ivec2) SConvert 55
                               Store 51(i32v) 56
               60: 57(i16vec2) Load 59(u16v)
-              61:   49(ivec2) UConvert 60
-              62:   49(ivec2) Bitcast 61
-                              Store 51(i32v) 62
-              63: 52(i16vec2) Load 54(i16v)
-              64: 57(i16vec2) Bitcast 63
-                              Store 59(u16v) 64
+              62:   61(ivec2) UConvert 60
+              63:   49(ivec2) Bitcast 62
+                              Store 51(i32v) 63
+              64: 52(i16vec2) Load 54(i16v)
+              65: 57(i16vec2) Bitcast 64
+                              Store 59(u16v) 65
               68: 52(i16vec2) Load 54(i16v)
               69:   49(ivec2) SConvert 68
-              70:   65(ivec2) Bitcast 69
+              70:   61(ivec2) Bitcast 69
                               Store 67(u32v) 70
               75: 52(i16vec2) Load 54(i16v)
               76: 72(i64vec2) SConvert 75
@@ -250,10 +250,10 @@
               83: 78(i64vec2) Bitcast 82
                               Store 80(u64v) 83
               84: 57(i16vec2) Load 59(u16v)
-              85:   65(ivec2) UConvert 84
+              85:   61(ivec2) UConvert 84
                               Store 67(u32v) 85
               86: 57(i16vec2) Load 59(u16v)
-              87: 72(i64vec2) UConvert 86
+              87: 78(i64vec2) UConvert 86
               88: 72(i64vec2) Bitcast 87
                               Store 74(i64v) 88
               89: 57(i16vec2) Load 59(u16v)
@@ -281,7 +281,7 @@
              116:   49(ivec2) SConvert 115
                               Store 51(i32v) 116
              117: 57(i16vec2) Load 59(u16v)
-             118:   49(ivec2) UConvert 117
+             118:   61(ivec2) UConvert 117
              119:   49(ivec2) Bitcast 118
                               Store 51(i32v) 119
              120: 52(i16vec2) Load 54(i16v)
@@ -289,7 +289,7 @@
                               Store 59(u16v) 121
              122: 52(i16vec2) Load 54(i16v)
              123:   49(ivec2) SConvert 122
-             124:   65(ivec2) Bitcast 123
+             124:   61(ivec2) Bitcast 123
                               Store 67(u32v) 124
              125: 52(i16vec2) Load 54(i16v)
              126: 72(i64vec2) SConvert 125
@@ -299,14 +299,14 @@
              129: 78(i64vec2) Bitcast 128
                               Store 80(u64v) 129
              130: 57(i16vec2) Load 59(u16v)
-             131:   65(ivec2) UConvert 130
+             131:   61(ivec2) UConvert 130
                               Store 67(u32v) 131
              132: 57(i16vec2) Load 59(u16v)
-             133: 72(i64vec2) UConvert 132
+             133: 78(i64vec2) UConvert 132
              134: 72(i64vec2) Bitcast 133
                               Store 74(i64v) 134
              135: 57(i16vec2) Load 59(u16v)
-             136: 72(i64vec2) UConvert 135
+             136: 78(i64vec2) UConvert 135
              137: 72(i64vec2) Bitcast 136
              138: 78(i64vec2) Bitcast 137
                               Store 80(u64v) 138
@@ -332,19 +332,19 @@
              156: 152(i8vec2) SConvert 155
                               Store 154(i8v) 156
              157: 57(i16vec2) Load 59(u16v)
-             158: 152(i8vec2) UConvert 157
-             159: 152(i8vec2) Bitcast 158
-                              Store 154(i8v) 159
+             160: 159(i8vec2) UConvert 157
+             161: 152(i8vec2) Bitcast 160
+                              Store 154(i8v) 161
              164: 52(i16vec2) Load 54(i16v)
              165: 152(i8vec2) SConvert 164
-             166: 161(i8vec2) Bitcast 165
+             166: 159(i8vec2) Bitcast 165
                               Store 163(u8v) 166
              167: 57(i16vec2) Load 59(u16v)
-             168: 161(i8vec2) UConvert 167
+             168: 159(i8vec2) UConvert 167
                               Store 163(u8v) 168
              169: 57(i16vec2) Load 59(u16v)
-             170: 161(i8vec2) UConvert 169
-             171: 52(i16vec2) UConvert 170
+             170: 159(i8vec2) UConvert 169
+             171: 57(i16vec2) UConvert 170
              172: 52(i16vec2) Bitcast 171
                               Store 54(i16v) 172
              177:  174(bvec2) Load 176(bv)