HLSL: Fix #1249: Always execute both sides of ternary "?:".

This is semantically required by HLSL, and frequently results in using
OpSelect instead of control flow.
diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out
index 3c81a9f..b059009 100755
--- a/Test/baseResults/hlsl.conditional.frag.out
+++ b/Test/baseResults/hlsl.conditional.frag.out
@@ -78,7 +78,7 @@
 0:17      Sequence
 0:17        move second child to first child ( temp 4-component vector of float)
 0:17          'ret' ( temp 4-component vector of float)
-0:17          Test condition and select ( temp 4-component vector of float)
+0:17          Test condition and select ( temp 4-component vector of float): no shortcircuit
 0:17            Condition
 0:17            Compare Not Equal ( temp bool)
 0:17              t: direct index for structure ( uniform float)
@@ -169,7 +169,7 @@
 0:37          'e' ( temp int)
 0:37          move second child to first child ( temp int)
 0:37            'a' ( temp int)
-0:37            Test condition and select ( temp int)
+0:37            Test condition and select ( temp int): no shortcircuit
 0:37              Condition
 0:37              Convert int to bool ( temp bool)
 0:37                'b' ( temp int)
@@ -182,7 +182,7 @@
 0:37                10 (const int)
 0:37        move second child to first child ( temp int)
 0:37          'b' ( temp int)
-0:37          Test condition and select ( temp int)
+0:37          Test condition and select ( temp int): no shortcircuit
 0:37            Condition
 0:37            Convert int to bool ( temp bool)
 0:37              'a' ( temp int)
@@ -195,7 +195,7 @@
 0:37              11 (const int)
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        'f' ( temp 4-component vector of float)
-0:39        Test condition and select ( temp 4-component vector of float)
+0:39        Test condition and select ( temp 4-component vector of float): no shortcircuit
 0:39          Condition
 0:39          Compare Less Than ( temp bool)
 0:39            direct index ( temp float)
@@ -341,7 +341,7 @@
 0:17      Sequence
 0:17        move second child to first child ( temp 4-component vector of float)
 0:17          'ret' ( temp 4-component vector of float)
-0:17          Test condition and select ( temp 4-component vector of float)
+0:17          Test condition and select ( temp 4-component vector of float): no shortcircuit
 0:17            Condition
 0:17            Compare Not Equal ( temp bool)
 0:17              t: direct index for structure ( uniform float)
@@ -432,7 +432,7 @@
 0:37          'e' ( temp int)
 0:37          move second child to first child ( temp int)
 0:37            'a' ( temp int)
-0:37            Test condition and select ( temp int)
+0:37            Test condition and select ( temp int): no shortcircuit
 0:37              Condition
 0:37              Convert int to bool ( temp bool)
 0:37                'b' ( temp int)
@@ -445,7 +445,7 @@
 0:37                10 (const int)
 0:37        move second child to first child ( temp int)
 0:37          'b' ( temp int)
-0:37          Test condition and select ( temp int)
+0:37          Test condition and select ( temp int): no shortcircuit
 0:37            Condition
 0:37            Convert int to bool ( temp bool)
 0:37              'a' ( temp int)
@@ -458,7 +458,7 @@
 0:37              11 (const int)
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        'f' ( temp 4-component vector of float)
-0:39        Test condition and select ( temp 4-component vector of float)
+0:39        Test condition and select ( temp 4-component vector of float): no shortcircuit
 0:39          Condition
 0:39          Compare Less Than ( temp bool)
 0:39            direct index ( temp float)
@@ -523,12 +523,12 @@
 
 // Module Version 10000
 // Generated by (magic number): 80004
-// Id's are bound by 220
+// Id's are bound by 206
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 213 216
+                              EntryPoint Fragment 4  "PixelShaderFunction" 199 202
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "PixelShaderFunction"
@@ -548,20 +548,20 @@
                               MemberName 29($Global) 4  "f"
                               Name 31  ""
                               Name 85  "ret"
-                              Name 113  "a"
-                              Name 115  "b"
-                              Name 117  "c"
-                              Name 119  "d"
-                              Name 120  "ret"
-                              Name 140  "e"
-                              Name 161  "f"
-                              Name 200  "param"
-                              Name 201  "param"
-                              Name 202  "param"
-                              Name 211  "input"
-                              Name 213  "input"
-                              Name 216  "@entryPointOutput"
-                              Name 217  "param"
+                              Name 110  "a"
+                              Name 112  "b"
+                              Name 114  "c"
+                              Name 116  "d"
+                              Name 117  "ret"
+                              Name 137  "e"
+                              Name 150  "f"
+                              Name 186  "param"
+                              Name 187  "param"
+                              Name 188  "param"
+                              Name 197  "input"
+                              Name 199  "input"
+                              Name 202  "@entryPointOutput"
+                              Name 203  "param"
                               MemberDecorate 29($Global) 0 Offset 0
                               MemberDecorate 29($Global) 1 Offset 16
                               MemberDecorate 29($Global) 2 Offset 32
@@ -569,8 +569,8 @@
                               MemberDecorate 29($Global) 4 Offset 52
                               Decorate 29($Global) Block
                               Decorate 31 DescriptorSet 0
-                              Decorate 213(input) Location 0
-                              Decorate 216(@entryPointOutput) Location 0
+                              Decorate 199(input) Location 0
+                              Decorate 202(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -598,41 +598,41 @@
               48:     32(int) Constant 4
               49:             TypePointer Uniform 6(float)
               53:     32(int) Constant 3
-             100:    6(float) Constant 1065353216
-             101:    7(fvec4) ConstantComposite 100 100 100 100
-             112:             TypePointer Function 32(int)
-             114:     32(int) Constant 5
-             116:     32(int) Constant 6
-             118:     32(int) Constant 7
-             143:             TypeInt 32 0
-             144:    143(int) Constant 0
-             150:     32(int) Constant 10
-             159:     32(int) Constant 11
-             163:             TypePointer Function 6(float)
-             166:    143(int) Constant 1
-             192:    13(bool) ConstantTrue
-             193:    13(bool) ConstantFalse
-             194:   14(bvec2) ConstantComposite 192 193
-             195:    6(float) Constant 1073741824
-             196:   16(fvec2) ConstantComposite 100 195
-             197:    6(float) Constant 1077936128
-             198:    6(float) Constant 1082130432
-             199:   16(fvec2) ConstantComposite 197 198
-             204:    6(float) Constant 1092616192
-             212:             TypePointer Input 7(fvec4)
-      213(input):    212(ptr) Variable Input
-             215:             TypePointer Output 7(fvec4)
-216(@entryPointOutput):    215(ptr) Variable Output
+              96:    6(float) Constant 1065353216
+              97:    7(fvec4) ConstantComposite 96 96 96 96
+             109:             TypePointer Function 32(int)
+             111:     32(int) Constant 5
+             113:     32(int) Constant 6
+             115:     32(int) Constant 7
+             139:             TypeInt 32 0
+             140:    139(int) Constant 0
+             143:     32(int) Constant 10
+             148:     32(int) Constant 11
+             151:             TypePointer Function 6(float)
+             154:    139(int) Constant 1
+             178:    13(bool) ConstantTrue
+             179:    13(bool) ConstantFalse
+             180:   14(bvec2) ConstantComposite 178 179
+             181:    6(float) Constant 1073741824
+             182:   16(fvec2) ConstantComposite 96 181
+             183:    6(float) Constant 1077936128
+             184:    6(float) Constant 1082130432
+             185:   16(fvec2) ConstantComposite 183 184
+             190:    6(float) Constant 1092616192
+             198:             TypePointer Input 7(fvec4)
+      199(input):    198(ptr) Variable Input
+             201:             TypePointer Output 7(fvec4)
+202(@entryPointOutput):    201(ptr) Variable Output
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-      211(input):     24(ptr) Variable Function
-      217(param):     24(ptr) Variable Function
-             214:    7(fvec4) Load 213(input)
-                              Store 211(input) 214
-             218:    7(fvec4) Load 211(input)
-                              Store 217(param) 218
-             219:    7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 217(param)
-                              Store 216(@entryPointOutput) 219
+      197(input):     24(ptr) Variable Function
+      203(param):     24(ptr) Variable Function
+             200:    7(fvec4) Load 199(input)
+                              Store 197(input) 200
+             204:    7(fvec4) Load 197(input)
+                              Store 203(param) 204
+             205:    7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 203(param)
+                              Store 202(@entryPointOutput) 205
                               Return
                               FunctionEnd
   9(vectorCond():    7(fvec4) Function None 8
@@ -682,154 +682,116 @@
  11(scalarCond():    7(fvec4) Function None 8
               12:             Label
          85(ret):     24(ptr) Variable Function
-              86:     24(ptr) Variable Function
-              87:     49(ptr) AccessChain 31 53
-              88:    6(float) Load 87
-              89:     49(ptr) AccessChain 31 48
-              90:    6(float) Load 89
-              91:    13(bool) FOrdNotEqual 88 90
-                              SelectionMerge 93 None
-                              BranchConditional 91 92 99
-              92:               Label
-              94:     49(ptr)   AccessChain 31 53
-              95:    6(float)   Load 94
-              96:     34(ptr)   AccessChain 31 33
-              97:    7(fvec4)   Load 96
-              98:    7(fvec4)   VectorTimesScalar 97 95
-                                Store 86 98
-                                Branch 93
-              99:               Label
-                                Store 86 101
-                                Branch 93
-              93:             Label
-             102:    7(fvec4) Load 86
-                              Store 85(ret) 102
-             103:    7(fvec4) Load 85(ret)
-                              ReturnValue 103
+              86:     49(ptr) AccessChain 31 53
+              87:    6(float) Load 86
+              88:     49(ptr) AccessChain 31 48
+              89:    6(float) Load 88
+              90:    13(bool) FOrdNotEqual 87 89
+              91:     49(ptr) AccessChain 31 53
+              92:    6(float) Load 91
+              93:     34(ptr) AccessChain 31 33
+              94:    7(fvec4) Load 93
+              95:    7(fvec4) VectorTimesScalar 94 92
+              98:   43(bvec4) CompositeConstruct 90 90 90 90
+              99:    7(fvec4) Select 98 95 97
+                              Store 85(ret) 99
+             100:    7(fvec4) Load 85(ret)
+                              ReturnValue 100
                               FunctionEnd
 22(fbSelect(vb2;vf2;vf2;):   16(fvec2) Function None 18
          19(cnd):     15(ptr) FunctionParameter
         20(src0):     17(ptr) FunctionParameter
         21(src1):     17(ptr) FunctionParameter
               23:             Label
-             106:   16(fvec2) Load 21(src1)
-             107:   16(fvec2) Load 20(src0)
-             108:   14(bvec2) Load 19(cnd)
-             109:   16(fvec2) Select 108 107 106
-                              ReturnValue 109
+             103:   16(fvec2) Load 21(src1)
+             104:   16(fvec2) Load 20(src0)
+             105:   14(bvec2) Load 19(cnd)
+             106:   16(fvec2) Select 105 104 103
+                              ReturnValue 106
                               FunctionEnd
 27(@PixelShaderFunction(vf4;):    7(fvec4) Function None 25
        26(input):     24(ptr) FunctionParameter
               28:             Label
-          113(a):    112(ptr) Variable Function
-          115(b):    112(ptr) Variable Function
-          117(c):    112(ptr) Variable Function
-          119(d):    112(ptr) Variable Function
-        120(ret):     24(ptr) Variable Function
-          140(e):    112(ptr) Variable Function
-             141:    112(ptr) Variable Function
-             152:    112(ptr) Variable Function
-          161(f):     24(ptr) Variable Function
-             162:     24(ptr) Variable Function
-      200(param):     15(ptr) Variable Function
-      201(param):     17(ptr) Variable Function
-      202(param):     17(ptr) Variable Function
-                              Store 113(a) 114
-                              Store 115(b) 116
-                              Store 117(c) 118
-                              Store 119(d) 118
-             121:     32(int) Load 113(a)
-             122:    6(float) ConvertSToF 121
-             123:    7(fvec4) Load 26(input)
-             124:    7(fvec4) VectorTimesScalar 123 122
-             125:     32(int) Load 115(b)
-             126:    6(float) ConvertSToF 125
-             127:    7(fvec4) Load 26(input)
-             128:    7(fvec4) VectorTimesScalar 127 126
-             129:    7(fvec4) FAdd 124 128
-             130:     32(int) Load 117(c)
-             131:    6(float) ConvertSToF 130
-             132:    7(fvec4) Load 26(input)
-             133:    7(fvec4) VectorTimesScalar 132 131
-             134:    7(fvec4) FAdd 129 133
-             135:     32(int) Load 119(d)
-             136:    6(float) ConvertSToF 135
-             137:    7(fvec4) Load 26(input)
-             138:    7(fvec4) VectorTimesScalar 137 136
-             139:    7(fvec4) FAdd 134 138
-                              Store 120(ret) 139
-             142:     32(int) Load 115(b)
-             145:    13(bool) INotEqual 142 144
-                              SelectionMerge 147 None
-                              BranchConditional 145 146 149
-             146:               Label
-             148:     32(int)   Load 119(d)
-                                Store 117(c) 148
-                                Store 141 148
-                                Branch 147
-             149:               Label
-                                Store 141 150
-                                Branch 147
-             147:             Label
-             151:     32(int) Load 141
-                              Store 113(a) 151
-                              Store 140(e) 151
-             153:     32(int) Load 113(a)
-             154:    13(bool) INotEqual 153 144
-                              SelectionMerge 156 None
-                              BranchConditional 154 155 158
-             155:               Label
-             157:     32(int)   Load 117(c)
-                                Store 119(d) 157
-                                Store 152 157
-                                Branch 156
-             158:               Label
-                                Store 152 159
-                                Branch 156
-             156:             Label
-             160:     32(int) Load 152
-                              Store 115(b) 160
-             164:    163(ptr) AccessChain 120(ret) 144
-             165:    6(float) Load 164
-             167:    163(ptr) AccessChain 26(input) 166
-             168:    6(float) Load 167
-             169:    13(bool) FOrdLessThan 165 168
-                              SelectionMerge 171 None
-                              BranchConditional 169 170 176
-             170:               Label
-             172:     32(int)   Load 117(c)
-             173:    6(float)   ConvertSToF 172
-             174:    7(fvec4)   Load 26(input)
-             175:    7(fvec4)   VectorTimesScalar 174 173
-                                Store 162 175
-                                Branch 171
-             176:               Label
-             177:     32(int)   Load 119(d)
-             178:    6(float)   ConvertSToF 177
-             179:    7(fvec4)   Load 26(input)
-             180:    7(fvec4)   VectorTimesScalar 179 178
-                                Store 162 180
-                                Branch 171
-             171:             Label
-             181:    7(fvec4) Load 162
-                              Store 161(f) 181
-             182:     32(int) Load 140(e)
-             183:    6(float) ConvertSToF 182
-             184:    7(fvec4) Load 120(ret)
-             185:    7(fvec4) VectorTimesScalar 184 183
-             186:    7(fvec4) Load 161(f)
-             187:    7(fvec4) FAdd 185 186
-             188:    7(fvec4) FunctionCall 9(vectorCond()
-             189:    7(fvec4) FAdd 187 188
-             190:    7(fvec4) FunctionCall 11(scalarCond()
-             191:    7(fvec4) FAdd 189 190
-                              Store 200(param) 194
-                              Store 201(param) 196
-                              Store 202(param) 199
-             203:   16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 200(param) 201(param) 202(param)
-             205:    6(float) CompositeExtract 203 0
-             206:    6(float) CompositeExtract 203 1
-             207:    7(fvec4) CompositeConstruct 205 206 204 204
-             208:    7(fvec4) FAdd 191 207
-                              ReturnValue 208
+          110(a):    109(ptr) Variable Function
+          112(b):    109(ptr) Variable Function
+          114(c):    109(ptr) Variable Function
+          116(d):    109(ptr) Variable Function
+        117(ret):     24(ptr) Variable Function
+          137(e):    109(ptr) Variable Function
+          150(f):     24(ptr) Variable Function
+      186(param):     15(ptr) Variable Function
+      187(param):     17(ptr) Variable Function
+      188(param):     17(ptr) Variable Function
+                              Store 110(a) 111
+                              Store 112(b) 113
+                              Store 114(c) 115
+                              Store 116(d) 115
+             118:     32(int) Load 110(a)
+             119:    6(float) ConvertSToF 118
+             120:    7(fvec4) Load 26(input)
+             121:    7(fvec4) VectorTimesScalar 120 119
+             122:     32(int) Load 112(b)
+             123:    6(float) ConvertSToF 122
+             124:    7(fvec4) Load 26(input)
+             125:    7(fvec4) VectorTimesScalar 124 123
+             126:    7(fvec4) FAdd 121 125
+             127:     32(int) Load 114(c)
+             128:    6(float) ConvertSToF 127
+             129:    7(fvec4) Load 26(input)
+             130:    7(fvec4) VectorTimesScalar 129 128
+             131:    7(fvec4) FAdd 126 130
+             132:     32(int) Load 116(d)
+             133:    6(float) ConvertSToF 132
+             134:    7(fvec4) Load 26(input)
+             135:    7(fvec4) VectorTimesScalar 134 133
+             136:    7(fvec4) FAdd 131 135
+                              Store 117(ret) 136
+             138:     32(int) Load 112(b)
+             141:    13(bool) INotEqual 138 140
+             142:     32(int) Load 116(d)
+                              Store 114(c) 142
+             144:     32(int) Select 141 142 143
+                              Store 110(a) 144
+                              Store 137(e) 144
+             145:     32(int) Load 110(a)
+             146:    13(bool) INotEqual 145 140
+             147:     32(int) Load 114(c)
+                              Store 116(d) 147
+             149:     32(int) Select 146 147 148
+                              Store 112(b) 149
+             152:    151(ptr) AccessChain 117(ret) 140
+             153:    6(float) Load 152
+             155:    151(ptr) AccessChain 26(input) 154
+             156:    6(float) Load 155
+             157:    13(bool) FOrdLessThan 153 156
+             158:     32(int) Load 114(c)
+             159:    6(float) ConvertSToF 158
+             160:    7(fvec4) Load 26(input)
+             161:    7(fvec4) VectorTimesScalar 160 159
+             162:     32(int) Load 116(d)
+             163:    6(float) ConvertSToF 162
+             164:    7(fvec4) Load 26(input)
+             165:    7(fvec4) VectorTimesScalar 164 163
+             166:   43(bvec4) CompositeConstruct 157 157 157 157
+             167:    7(fvec4) Select 166 161 165
+                              Store 150(f) 167
+             168:     32(int) Load 137(e)
+             169:    6(float) ConvertSToF 168
+             170:    7(fvec4) Load 117(ret)
+             171:    7(fvec4) VectorTimesScalar 170 169
+             172:    7(fvec4) Load 150(f)
+             173:    7(fvec4) FAdd 171 172
+             174:    7(fvec4) FunctionCall 9(vectorCond()
+             175:    7(fvec4) FAdd 173 174
+             176:    7(fvec4) FunctionCall 11(scalarCond()
+             177:    7(fvec4) FAdd 175 176
+                              Store 186(param) 180
+                              Store 187(param) 182
+                              Store 188(param) 185
+             189:   16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 186(param) 187(param) 188(param)
+             191:    6(float) CompositeExtract 189 0
+             192:    6(float) CompositeExtract 189 1
+             193:    7(fvec4) CompositeConstruct 191 192 190 190
+             194:    7(fvec4) FAdd 177 193
+                              ReturnValue 194
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index af8708e..a08f3e3 100644
--- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -14,7 +14,7 @@
 0:16              '@sampleCount' ( temp uint)
 0:16              imageQuerySamples ( temp uint)
 0:16                'g_tTex2dmsf4' ( uniform texture2DMS)
-0:16            Test condition and select ( temp 2-component vector of float)
+0:16            Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16              Condition
 0:16              Compare Equal ( temp bool)
 0:16                '@sampleCount' ( temp uint)
@@ -29,7 +29,7 @@
 0:?                   -0.250000
 0:16                'sample' ( in int)
 0:16              false case
-0:16              Test condition and select ( temp 2-component vector of float)
+0:16              Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16                Condition
 0:16                Compare Equal ( temp bool)
 0:16                  '@sampleCount' ( temp uint)
@@ -48,7 +48,7 @@
 0:?                     0.375000
 0:16                  'sample' ( in int)
 0:16                false case
-0:16                Test condition and select ( temp 2-component vector of float)
+0:16                Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16                  Condition
 0:16                  Compare Equal ( temp bool)
 0:16                    '@sampleCount' ( temp uint)
@@ -75,7 +75,7 @@
 0:?                       -0.437500
 0:16                    'sample' ( in int)
 0:16                  false case
-0:16                  Test condition and select ( temp 2-component vector of float)
+0:16                  Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16                    Condition
 0:16                    Compare Equal ( temp bool)
 0:16                      '@sampleCount' ( temp uint)
@@ -129,7 +129,7 @@
 0:17              '@sampleCount' ( temp uint)
 0:17              imageQuerySamples ( temp uint)
 0:17                'g_tTex2dmsf4a' ( uniform texture2DMSArray)
-0:17            Test condition and select ( temp 2-component vector of float)
+0:17            Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17              Condition
 0:17              Compare Equal ( temp bool)
 0:17                '@sampleCount' ( temp uint)
@@ -144,7 +144,7 @@
 0:?                   -0.250000
 0:17                'sample' ( in int)
 0:17              false case
-0:17              Test condition and select ( temp 2-component vector of float)
+0:17              Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17                Condition
 0:17                Compare Equal ( temp bool)
 0:17                  '@sampleCount' ( temp uint)
@@ -163,7 +163,7 @@
 0:?                     0.375000
 0:17                  'sample' ( in int)
 0:17                false case
-0:17                Test condition and select ( temp 2-component vector of float)
+0:17                Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17                  Condition
 0:17                  Compare Equal ( temp bool)
 0:17                    '@sampleCount' ( temp uint)
@@ -190,7 +190,7 @@
 0:?                       -0.437500
 0:17                    'sample' ( in int)
 0:17                  false case
-0:17                  Test condition and select ( temp 2-component vector of float)
+0:17                  Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17                    Condition
 0:17                    Compare Equal ( temp bool)
 0:17                      '@sampleCount' ( temp uint)
@@ -305,7 +305,7 @@
 0:16              '@sampleCount' ( temp uint)
 0:16              imageQuerySamples ( temp uint)
 0:16                'g_tTex2dmsf4' ( uniform texture2DMS)
-0:16            Test condition and select ( temp 2-component vector of float)
+0:16            Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16              Condition
 0:16              Compare Equal ( temp bool)
 0:16                '@sampleCount' ( temp uint)
@@ -320,7 +320,7 @@
 0:?                   -0.250000
 0:16                'sample' ( in int)
 0:16              false case
-0:16              Test condition and select ( temp 2-component vector of float)
+0:16              Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16                Condition
 0:16                Compare Equal ( temp bool)
 0:16                  '@sampleCount' ( temp uint)
@@ -339,7 +339,7 @@
 0:?                     0.375000
 0:16                  'sample' ( in int)
 0:16                false case
-0:16                Test condition and select ( temp 2-component vector of float)
+0:16                Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16                  Condition
 0:16                  Compare Equal ( temp bool)
 0:16                    '@sampleCount' ( temp uint)
@@ -366,7 +366,7 @@
 0:?                       -0.437500
 0:16                    'sample' ( in int)
 0:16                  false case
-0:16                  Test condition and select ( temp 2-component vector of float)
+0:16                  Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:16                    Condition
 0:16                    Compare Equal ( temp bool)
 0:16                      '@sampleCount' ( temp uint)
@@ -420,7 +420,7 @@
 0:17              '@sampleCount' ( temp uint)
 0:17              imageQuerySamples ( temp uint)
 0:17                'g_tTex2dmsf4a' ( uniform texture2DMSArray)
-0:17            Test condition and select ( temp 2-component vector of float)
+0:17            Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17              Condition
 0:17              Compare Equal ( temp bool)
 0:17                '@sampleCount' ( temp uint)
@@ -435,7 +435,7 @@
 0:?                   -0.250000
 0:17                'sample' ( in int)
 0:17              false case
-0:17              Test condition and select ( temp 2-component vector of float)
+0:17              Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17                Condition
 0:17                Compare Equal ( temp bool)
 0:17                  '@sampleCount' ( temp uint)
@@ -454,7 +454,7 @@
 0:?                     0.375000
 0:17                  'sample' ( in int)
 0:17                false case
-0:17                Test condition and select ( temp 2-component vector of float)
+0:17                Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17                  Condition
 0:17                  Compare Equal ( temp bool)
 0:17                    '@sampleCount' ( temp uint)
@@ -481,7 +481,7 @@
 0:?                       -0.437500
 0:17                    'sample' ( in int)
 0:17                  false case
-0:17                  Test condition and select ( temp 2-component vector of float)
+0:17                  Test condition and select ( temp 2-component vector of float): no shortcircuit
 0:17                    Condition
 0:17                    Compare Equal ( temp bool)
 0:17                      '@sampleCount' ( temp uint)
@@ -579,13 +579,13 @@
 
 // Module Version 10000
 // Generated by (magic number): 80004
-// Id's are bound by 221
+// Id's are bound by 198
 
                               Capability Shader
                               Capability ImageQuery
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 204 211 215
+                              EntryPoint Fragment 4  "main" 181 188 192
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -597,33 +597,33 @@
                               Name 17  "r00"
                               Name 20  "@sampleCount"
                               Name 23  "g_tTex2dmsf4"
-                              Name 42  "indexable"
-                              Name 65  "indexable"
-                              Name 96  "indexable"
-                              Name 129  "indexable"
-                              Name 138  "r01"
-                              Name 139  "@sampleCount"
-                              Name 142  "g_tTex2dmsf4a"
-                              Name 151  "indexable"
-                              Name 161  "indexable"
-                              Name 171  "indexable"
-                              Name 181  "indexable"
-                              Name 190  "psout"
-                              Name 202  "sample"
-                              Name 204  "sample"
-                              Name 206  "flattenTemp"
-                              Name 207  "param"
-                              Name 211  "@entryPointOutput.Color"
-                              Name 215  "@entryPointOutput.Depth"
-                              Name 220  "g_sSamp"
+                              Name 39  "indexable"
+                              Name 58  "indexable"
+                              Name 85  "indexable"
+                              Name 114  "indexable"
+                              Name 127  "r01"
+                              Name 128  "@sampleCount"
+                              Name 131  "g_tTex2dmsf4a"
+                              Name 137  "indexable"
+                              Name 143  "indexable"
+                              Name 149  "indexable"
+                              Name 155  "indexable"
+                              Name 167  "psout"
+                              Name 179  "sample"
+                              Name 181  "sample"
+                              Name 183  "flattenTemp"
+                              Name 184  "param"
+                              Name 188  "@entryPointOutput.Color"
+                              Name 192  "@entryPointOutput.Depth"
+                              Name 197  "g_sSamp"
                               Decorate 23(g_tTex2dmsf4) DescriptorSet 0
-                              Decorate 142(g_tTex2dmsf4a) DescriptorSet 0
-                              Decorate 204(sample) Flat
-                              Decorate 204(sample) Location 0
-                              Decorate 211(@entryPointOutput.Color) Location 0
-                              Decorate 215(@entryPointOutput.Depth) BuiltIn FragDepth
-                              Decorate 220(g_sSamp) DescriptorSet 0
-                              Decorate 220(g_sSamp) Binding 0
+                              Decorate 131(g_tTex2dmsf4a) DescriptorSet 0
+                              Decorate 181(sample) Flat
+                              Decorate 181(sample) Location 0
+                              Decorate 188(@entryPointOutput.Color) Location 0
+                              Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth
+                              Decorate 197(g_sSamp) DescriptorSet 0
+                              Decorate 197(g_sSamp) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -639,110 +639,111 @@
               21:             TypeImage 8(float) 2D multi-sampled sampled format:Unknown
               22:             TypePointer UniformConstant 21
 23(g_tTex2dmsf4):     22(ptr) Variable UniformConstant
-              28:      6(int) Constant 2
-              29:             TypeBool
-              33:     18(int) Constant 2
-              34:             TypeArray 15(fvec2) 33
-              35:    8(float) Constant 1048576000
-              36:   15(fvec2) ConstantComposite 35 35
-              37:    8(float) Constant 3196059648
-              38:   15(fvec2) ConstantComposite 37 37
-              39:          34 ConstantComposite 36 38
-              41:             TypePointer Function 34
-              48:      6(int) Constant 4
-              52:     18(int) Constant 4
-              53:             TypeArray 15(fvec2) 52
-              54:    8(float) Constant 3187671040
-              55:    8(float) Constant 3200253952
-              56:   15(fvec2) ConstantComposite 54 55
-              57:    8(float) Constant 1052770304
-              58:   15(fvec2) ConstantComposite 57 54
-              59:    8(float) Constant 1040187392
-              60:   15(fvec2) ConstantComposite 55 59
-              61:   15(fvec2) ConstantComposite 59 57
-              62:          53 ConstantComposite 56 58 60 61
-              64:             TypePointer Function 53
-              71:      6(int) Constant 8
-              75:     18(int) Constant 8
-              76:             TypeArray 15(fvec2) 75
-              77:    8(float) Constant 1031798784
-              78:    8(float) Constant 3191865344
-              79:   15(fvec2) ConstantComposite 77 78
-              80:    8(float) Constant 3179282432
-              81:    8(float) Constant 1044381696
-              82:   15(fvec2) ConstantComposite 80 81
-              83:    8(float) Constant 1050673152
-              84:   15(fvec2) ConstantComposite 83 77
-              85:    8(float) Constant 3198156800
-              86:   15(fvec2) ConstantComposite 78 85
-              87:   15(fvec2) ConstantComposite 85 83
-              88:    8(float) Constant 3202351104
-              89:   15(fvec2) ConstantComposite 88 80
-              90:    8(float) Constant 1054867456
-              91:   15(fvec2) ConstantComposite 81 90
-              92:   15(fvec2) ConstantComposite 90 88
-              93:          76 ConstantComposite 79 82 84 86 87 89 91 92
-              95:             TypePointer Function 76
-             102:      6(int) Constant 16
-             106:     18(int) Constant 16
-             107:             TypeArray 15(fvec2) 106
-             108:   15(fvec2) ConstantComposite 77 77
-             109:   15(fvec2) ConstantComposite 80 78
-             110:   15(fvec2) ConstantComposite 78 59
-             111:   15(fvec2) ConstantComposite 35 80
-             112:   15(fvec2) ConstantComposite 85 54
-             113:   15(fvec2) ConstantComposite 59 83
-             114:   15(fvec2) ConstantComposite 83 81
-             115:   15(fvec2) ConstantComposite 81 85
-             116:   15(fvec2) ConstantComposite 54 57
-             117:    8(float) Constant 0
-             118:   15(fvec2) ConstantComposite 117 88
-             119:   15(fvec2) ConstantComposite 37 55
-             120:   15(fvec2) ConstantComposite 55 35
-             121:    8(float) Constant 3204448256
-             122:   15(fvec2) ConstantComposite 121 117
-             123:   15(fvec2) ConstantComposite 90 37
-             124:   15(fvec2) ConstantComposite 57 90
-             125:   15(fvec2) ConstantComposite 88 121
-             126:         107 ConstantComposite 108 109 110 111 112 113 114 115 116 118 119 120 122 123 124 125
-             128:             TypePointer Function 107
-             133:   15(fvec2) ConstantComposite 117 117
-             140:             TypeImage 8(float) 2D array multi-sampled sampled format:Unknown
-             141:             TypePointer UniformConstant 140
-142(g_tTex2dmsf4a):    141(ptr) Variable UniformConstant
-             189:             TypePointer Function 10(PS_OUTPUT)
-             191:      6(int) Constant 0
-             192:    8(float) Constant 1065353216
-             193:    9(fvec4) ConstantComposite 192 192 192 192
-             194:             TypePointer Function 9(fvec4)
-             196:      6(int) Constant 1
-             197:             TypePointer Function 8(float)
-             203:             TypePointer Input 6(int)
-     204(sample):    203(ptr) Variable Input
-             210:             TypePointer Output 9(fvec4)
-211(@entryPointOutput.Color):    210(ptr) Variable Output
-             214:             TypePointer Output 8(float)
-215(@entryPointOutput.Depth):    214(ptr) Variable Output
-             218:             TypeSampler
-             219:             TypePointer UniformConstant 218
-    220(g_sSamp):    219(ptr) Variable UniformConstant
+              27:      6(int) Constant 2
+              28:             TypeBool
+              30:     18(int) Constant 2
+              31:             TypeArray 15(fvec2) 30
+              32:    8(float) Constant 1048576000
+              33:   15(fvec2) ConstantComposite 32 32
+              34:    8(float) Constant 3196059648
+              35:   15(fvec2) ConstantComposite 34 34
+              36:          31 ConstantComposite 33 35
+              38:             TypePointer Function 31
+              43:      6(int) Constant 4
+              45:     18(int) Constant 4
+              46:             TypeArray 15(fvec2) 45
+              47:    8(float) Constant 3187671040
+              48:    8(float) Constant 3200253952
+              49:   15(fvec2) ConstantComposite 47 48
+              50:    8(float) Constant 1052770304
+              51:   15(fvec2) ConstantComposite 50 47
+              52:    8(float) Constant 1040187392
+              53:   15(fvec2) ConstantComposite 48 52
+              54:   15(fvec2) ConstantComposite 52 50
+              55:          46 ConstantComposite 49 51 53 54
+              57:             TypePointer Function 46
+              62:      6(int) Constant 8
+              64:     18(int) Constant 8
+              65:             TypeArray 15(fvec2) 64
+              66:    8(float) Constant 1031798784
+              67:    8(float) Constant 3191865344
+              68:   15(fvec2) ConstantComposite 66 67
+              69:    8(float) Constant 3179282432
+              70:    8(float) Constant 1044381696
+              71:   15(fvec2) ConstantComposite 69 70
+              72:    8(float) Constant 1050673152
+              73:   15(fvec2) ConstantComposite 72 66
+              74:    8(float) Constant 3198156800
+              75:   15(fvec2) ConstantComposite 67 74
+              76:   15(fvec2) ConstantComposite 74 72
+              77:    8(float) Constant 3202351104
+              78:   15(fvec2) ConstantComposite 77 69
+              79:    8(float) Constant 1054867456
+              80:   15(fvec2) ConstantComposite 70 79
+              81:   15(fvec2) ConstantComposite 79 77
+              82:          65 ConstantComposite 68 71 73 75 76 78 80 81
+              84:             TypePointer Function 65
+              89:      6(int) Constant 16
+              91:     18(int) Constant 16
+              92:             TypeArray 15(fvec2) 91
+              93:   15(fvec2) ConstantComposite 66 66
+              94:   15(fvec2) ConstantComposite 69 67
+              95:   15(fvec2) ConstantComposite 67 52
+              96:   15(fvec2) ConstantComposite 32 69
+              97:   15(fvec2) ConstantComposite 74 47
+              98:   15(fvec2) ConstantComposite 52 72
+              99:   15(fvec2) ConstantComposite 72 70
+             100:   15(fvec2) ConstantComposite 70 74
+             101:   15(fvec2) ConstantComposite 47 50
+             102:    8(float) Constant 0
+             103:   15(fvec2) ConstantComposite 102 77
+             104:   15(fvec2) ConstantComposite 34 48
+             105:   15(fvec2) ConstantComposite 48 32
+             106:    8(float) Constant 3204448256
+             107:   15(fvec2) ConstantComposite 106 102
+             108:   15(fvec2) ConstantComposite 79 34
+             109:   15(fvec2) ConstantComposite 50 79
+             110:   15(fvec2) ConstantComposite 77 106
+             111:          92 ConstantComposite 93 94 95 96 97 98 99 100 101 103 104 105 107 108 109 110
+             113:             TypePointer Function 92
+             117:   15(fvec2) ConstantComposite 102 102
+             118:             TypeVector 28(bool) 2
+             129:             TypeImage 8(float) 2D array multi-sampled sampled format:Unknown
+             130:             TypePointer UniformConstant 129
+131(g_tTex2dmsf4a):    130(ptr) Variable UniformConstant
+             166:             TypePointer Function 10(PS_OUTPUT)
+             168:      6(int) Constant 0
+             169:    8(float) Constant 1065353216
+             170:    9(fvec4) ConstantComposite 169 169 169 169
+             171:             TypePointer Function 9(fvec4)
+             173:      6(int) Constant 1
+             174:             TypePointer Function 8(float)
+             180:             TypePointer Input 6(int)
+     181(sample):    180(ptr) Variable Input
+             187:             TypePointer Output 9(fvec4)
+188(@entryPointOutput.Color):    187(ptr) Variable Output
+             191:             TypePointer Output 8(float)
+192(@entryPointOutput.Depth):    191(ptr) Variable Output
+             195:             TypeSampler
+             196:             TypePointer UniformConstant 195
+    197(g_sSamp):    196(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-     202(sample):      7(ptr) Variable Function
-206(flattenTemp):    189(ptr) Variable Function
-      207(param):      7(ptr) Variable Function
-             205:      6(int) Load 204(sample)
-                              Store 202(sample) 205
-             208:      6(int) Load 202(sample)
-                              Store 207(param) 208
-             209:10(PS_OUTPUT) FunctionCall 13(@main(i1;) 207(param)
-                              Store 206(flattenTemp) 209
-             212:    194(ptr) AccessChain 206(flattenTemp) 191
-             213:    9(fvec4) Load 212
-                              Store 211(@entryPointOutput.Color) 213
-             216:    197(ptr) AccessChain 206(flattenTemp) 196
-             217:    8(float) Load 216
-                              Store 215(@entryPointOutput.Depth) 217
+     179(sample):      7(ptr) Variable Function
+183(flattenTemp):    166(ptr) Variable Function
+      184(param):      7(ptr) Variable Function
+             182:      6(int) Load 181(sample)
+                              Store 179(sample) 182
+             185:      6(int) Load 179(sample)
+                              Store 184(param) 185
+             186:10(PS_OUTPUT) FunctionCall 13(@main(i1;) 184(param)
+                              Store 183(flattenTemp) 186
+             189:    171(ptr) AccessChain 183(flattenTemp) 168
+             190:    9(fvec4) Load 189
+                              Store 188(@entryPointOutput.Color) 190
+             193:    174(ptr) AccessChain 183(flattenTemp) 173
+             194:    8(float) Load 193
+                              Store 192(@entryPointOutput.Depth) 194
                               Return
                               FunctionEnd
    13(@main(i1;):10(PS_OUTPUT) Function None 11
@@ -750,165 +751,93 @@
               14:             Label
          17(r00):     16(ptr) Variable Function
 20(@sampleCount):     19(ptr) Variable Function
-              26:     16(ptr) Variable Function
-   42(indexable):     41(ptr) Variable Function
-              46:     16(ptr) Variable Function
-   65(indexable):     64(ptr) Variable Function
-              69:     16(ptr) Variable Function
-   96(indexable):     95(ptr) Variable Function
-             100:     16(ptr) Variable Function
-  129(indexable):    128(ptr) Variable Function
-        138(r01):     16(ptr) Variable Function
-139(@sampleCount):     19(ptr) Variable Function
-             145:     16(ptr) Variable Function
-  151(indexable):     41(ptr) Variable Function
-             155:     16(ptr) Variable Function
-  161(indexable):     64(ptr) Variable Function
-             165:     16(ptr) Variable Function
-  171(indexable):     95(ptr) Variable Function
-             175:     16(ptr) Variable Function
-  181(indexable):    128(ptr) Variable Function
-      190(psout):    189(ptr) Variable Function
+   39(indexable):     38(ptr) Variable Function
+   58(indexable):     57(ptr) Variable Function
+   85(indexable):     84(ptr) Variable Function
+  114(indexable):    113(ptr) Variable Function
+        127(r01):     16(ptr) Variable Function
+128(@sampleCount):     19(ptr) Variable Function
+  137(indexable):     38(ptr) Variable Function
+  143(indexable):     57(ptr) Variable Function
+  149(indexable):     84(ptr) Variable Function
+  155(indexable):    113(ptr) Variable Function
+      167(psout):    166(ptr) Variable Function
               24:          21 Load 23(g_tTex2dmsf4)
               25:     18(int) ImageQuerySamples 24
                               Store 20(@sampleCount) 25
-              27:     18(int) Load 20(@sampleCount)
-              30:    29(bool) IEqual 27 28
-                              SelectionMerge 32 None
-                              BranchConditional 30 31 45
-              31:               Label
-              40:      6(int)   Load 12(sample)
-                                Store 42(indexable) 39
-              43:     16(ptr)   AccessChain 42(indexable) 40
-              44:   15(fvec2)   Load 43
-                                Store 26 44
-                                Branch 32
-              45:               Label
-              47:     18(int)   Load 20(@sampleCount)
-              49:    29(bool)   IEqual 47 48
-                                SelectionMerge 51 None
-                                BranchConditional 49 50 68
-              50:                 Label
-              63:      6(int)     Load 12(sample)
-                                  Store 65(indexable) 62
-              66:     16(ptr)     AccessChain 65(indexable) 63
-              67:   15(fvec2)     Load 66
-                                  Store 46 67
-                                  Branch 51
-              68:                 Label
-              70:     18(int)     Load 20(@sampleCount)
-              72:    29(bool)     IEqual 70 71
-                                  SelectionMerge 74 None
-                                  BranchConditional 72 73 99
-              73:                   Label
-              94:      6(int)       Load 12(sample)
-                                    Store 96(indexable) 93
-              97:     16(ptr)       AccessChain 96(indexable) 94
-              98:   15(fvec2)       Load 97
-                                    Store 69 98
-                                    Branch 74
-              99:                   Label
-             101:     18(int)       Load 20(@sampleCount)
-             103:    29(bool)       IEqual 101 102
-                                    SelectionMerge 105 None
-                                    BranchConditional 103 104 132
-             104:                     Label
-             127:      6(int)         Load 12(sample)
-                                      Store 129(indexable) 126
-             130:     16(ptr)         AccessChain 129(indexable) 127
-             131:   15(fvec2)         Load 130
-                                      Store 100 131
-                                      Branch 105
-             132:                     Label
-                                      Store 100 133
-                                      Branch 105
-             105:                   Label
-             134:   15(fvec2)       Load 100
-                                    Store 69 134
-                                    Branch 74
-              74:                 Label
-             135:   15(fvec2)     Load 69
-                                  Store 46 135
-                                  Branch 51
-              51:               Label
-             136:   15(fvec2)   Load 46
-                                Store 26 136
-                                Branch 32
-              32:             Label
-             137:   15(fvec2) Load 26
-                              Store 17(r00) 137
-             143:         140 Load 142(g_tTex2dmsf4a)
-             144:     18(int) ImageQuerySamples 143
-                              Store 139(@sampleCount) 144
-             146:     18(int) Load 139(@sampleCount)
-             147:    29(bool) IEqual 146 28
-                              SelectionMerge 149 None
-                              BranchConditional 147 148 154
-             148:               Label
-             150:      6(int)   Load 12(sample)
-                                Store 151(indexable) 39
-             152:     16(ptr)   AccessChain 151(indexable) 150
-             153:   15(fvec2)   Load 152
-                                Store 145 153
-                                Branch 149
-             154:               Label
-             156:     18(int)   Load 139(@sampleCount)
-             157:    29(bool)   IEqual 156 48
-                                SelectionMerge 159 None
-                                BranchConditional 157 158 164
-             158:                 Label
-             160:      6(int)     Load 12(sample)
-                                  Store 161(indexable) 62
-             162:     16(ptr)     AccessChain 161(indexable) 160
-             163:   15(fvec2)     Load 162
-                                  Store 155 163
-                                  Branch 159
-             164:                 Label
-             166:     18(int)     Load 139(@sampleCount)
-             167:    29(bool)     IEqual 166 71
-                                  SelectionMerge 169 None
-                                  BranchConditional 167 168 174
-             168:                   Label
-             170:      6(int)       Load 12(sample)
-                                    Store 171(indexable) 93
-             172:     16(ptr)       AccessChain 171(indexable) 170
-             173:   15(fvec2)       Load 172
-                                    Store 165 173
-                                    Branch 169
-             174:                   Label
-             176:     18(int)       Load 139(@sampleCount)
-             177:    29(bool)       IEqual 176 102
-                                    SelectionMerge 179 None
-                                    BranchConditional 177 178 184
-             178:                     Label
-             180:      6(int)         Load 12(sample)
-                                      Store 181(indexable) 126
-             182:     16(ptr)         AccessChain 181(indexable) 180
-             183:   15(fvec2)         Load 182
-                                      Store 175 183
-                                      Branch 179
-             184:                     Label
-                                      Store 175 133
-                                      Branch 179
-             179:                   Label
-             185:   15(fvec2)       Load 175
-                                    Store 165 185
-                                    Branch 169
-             169:                 Label
-             186:   15(fvec2)     Load 165
-                                  Store 155 186
-                                  Branch 159
-             159:               Label
-             187:   15(fvec2)   Load 155
-                                Store 145 187
-                                Branch 149
-             149:             Label
-             188:   15(fvec2) Load 145
-                              Store 138(r01) 188
-             195:    194(ptr) AccessChain 190(psout) 191
-                              Store 195 193
-             198:    197(ptr) AccessChain 190(psout) 196
-                              Store 198 192
-             199:10(PS_OUTPUT) Load 190(psout)
-                              ReturnValue 199
+              26:     18(int) Load 20(@sampleCount)
+              29:    28(bool) IEqual 26 27
+              37:      6(int) Load 12(sample)
+                              Store 39(indexable) 36
+              40:     16(ptr) AccessChain 39(indexable) 37
+              41:   15(fvec2) Load 40
+              42:     18(int) Load 20(@sampleCount)
+              44:    28(bool) IEqual 42 43
+              56:      6(int) Load 12(sample)
+                              Store 58(indexable) 55
+              59:     16(ptr) AccessChain 58(indexable) 56
+              60:   15(fvec2) Load 59
+              61:     18(int) Load 20(@sampleCount)
+              63:    28(bool) IEqual 61 62
+              83:      6(int) Load 12(sample)
+                              Store 85(indexable) 82
+              86:     16(ptr) AccessChain 85(indexable) 83
+              87:   15(fvec2) Load 86
+              88:     18(int) Load 20(@sampleCount)
+              90:    28(bool) IEqual 88 89
+             112:      6(int) Load 12(sample)
+                              Store 114(indexable) 111
+             115:     16(ptr) AccessChain 114(indexable) 112
+             116:   15(fvec2) Load 115
+             119:  118(bvec2) CompositeConstruct 90 90
+             120:   15(fvec2) Select 119 116 117
+             121:  118(bvec2) CompositeConstruct 63 63
+             122:   15(fvec2) Select 121 87 120
+             123:  118(bvec2) CompositeConstruct 44 44
+             124:   15(fvec2) Select 123 60 122
+             125:  118(bvec2) CompositeConstruct 29 29
+             126:   15(fvec2) Select 125 41 124
+                              Store 17(r00) 126
+             132:         129 Load 131(g_tTex2dmsf4a)
+             133:     18(int) ImageQuerySamples 132
+                              Store 128(@sampleCount) 133
+             134:     18(int) Load 128(@sampleCount)
+             135:    28(bool) IEqual 134 27
+             136:      6(int) Load 12(sample)
+                              Store 137(indexable) 36
+             138:     16(ptr) AccessChain 137(indexable) 136
+             139:   15(fvec2) Load 138
+             140:     18(int) Load 128(@sampleCount)
+             141:    28(bool) IEqual 140 43
+             142:      6(int) Load 12(sample)
+                              Store 143(indexable) 55
+             144:     16(ptr) AccessChain 143(indexable) 142
+             145:   15(fvec2) Load 144
+             146:     18(int) Load 128(@sampleCount)
+             147:    28(bool) IEqual 146 62
+             148:      6(int) Load 12(sample)
+                              Store 149(indexable) 82
+             150:     16(ptr) AccessChain 149(indexable) 148
+             151:   15(fvec2) Load 150
+             152:     18(int) Load 128(@sampleCount)
+             153:    28(bool) IEqual 152 89
+             154:      6(int) Load 12(sample)
+                              Store 155(indexable) 111
+             156:     16(ptr) AccessChain 155(indexable) 154
+             157:   15(fvec2) Load 156
+             158:  118(bvec2) CompositeConstruct 153 153
+             159:   15(fvec2) Select 158 157 117
+             160:  118(bvec2) CompositeConstruct 147 147
+             161:   15(fvec2) Select 160 151 159
+             162:  118(bvec2) CompositeConstruct 141 141
+             163:   15(fvec2) Select 162 145 161
+             164:  118(bvec2) CompositeConstruct 135 135
+             165:   15(fvec2) Select 164 139 163
+                              Store 127(r01) 165
+             172:    171(ptr) AccessChain 167(psout) 168
+                              Store 172 170
+             175:    174(ptr) AccessChain 167(psout) 173
+                              Store 175 169
+             176:10(PS_OUTPUT) Load 167(psout)
+                              ReturnValue 176
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out
index 658ea2e..3e90fdb 100755
--- a/Test/baseResults/hlsl.implicitBool.frag.out
+++ b/Test/baseResults/hlsl.implicitBool.frag.out
@@ -133,7 +133,7 @@
 0:28      Sequence
 0:28        move second child to first child ( temp float)
 0:28          'g' ( temp float)
-0:28          Test condition and select ( temp float)
+0:28          Test condition and select ( temp float): no shortcircuit
 0:28            Condition
 0:28            Convert float to bool ( temp bool)
 0:28              condf: direct index for structure ( uniform float)
@@ -302,7 +302,7 @@
 0:28      Sequence
 0:28        move second child to first child ( temp float)
 0:28          'g' ( temp float)
-0:28          Test condition and select ( temp float)
+0:28          Test condition and select ( temp float): no shortcircuit
 0:28            Condition
 0:28            Convert float to bool ( temp bool)
 0:28              condf: direct index for structure ( uniform float)
diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out
index 14c6448..78f9ac4 100644
--- a/Test/baseResults/hlsl.intrinsics.lit.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out
@@ -18,7 +18,7 @@
 0:3              'n_dot_l' ( in float)
 0:3              Constant:
 0:3                0.000000
-0:3            Test condition and select ( temp float)
+0:3            Test condition and select ( temp float): no shortcircuit
 0:3              Condition
 0:3              Compare Less Than ( temp bool)
 0:3                min ( temp float)
@@ -79,7 +79,7 @@
 0:3              'n_dot_l' ( in float)
 0:3              Constant:
 0:3                0.000000
-0:3            Test condition and select ( temp float)
+0:3            Test condition and select ( temp float): no shortcircuit
 0:3              Condition
 0:3              Compare Less Than ( temp bool)
 0:3                min ( temp float)
@@ -119,12 +119,12 @@
 
 // Module Version 10000
 // Generated by (magic number): 80004
-// Id's are bound by 52
+// Id's are bound by 48
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 37 40 43
+                              EntryPoint Fragment 4  "PixelShaderFunction" 33 36 39
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "PixelShaderFunction"
@@ -133,18 +133,18 @@
                               Name 10  "n_dot_h"
                               Name 11  "m"
                               Name 16  "r0"
-                              Name 35  "n_dot_l"
-                              Name 37  "n_dot_l"
-                              Name 39  "n_dot_h"
-                              Name 40  "n_dot_h"
-                              Name 42  "m"
-                              Name 43  "m"
+                              Name 31  "n_dot_l"
+                              Name 33  "n_dot_l"
+                              Name 35  "n_dot_h"
+                              Name 36  "n_dot_h"
+                              Name 38  "m"
+                              Name 39  "m"
+                              Name 41  "param"
+                              Name 43  "param"
                               Name 45  "param"
-                              Name 47  "param"
-                              Name 49  "param"
-                              Decorate 37(n_dot_l) Location 0
-                              Decorate 40(n_dot_h) Location 1
-                              Decorate 43(m) Location 2
+                              Decorate 33(n_dot_l) Location 0
+                              Decorate 36(n_dot_h) Location 1
+                              Decorate 39(m) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -154,32 +154,32 @@
               15:             TypePointer Function 14(fvec4)
               17:    6(float) Constant 1065353216
               19:    6(float) Constant 0
-              25:             TypeBool
-              36:             TypePointer Input 6(float)
-     37(n_dot_l):     36(ptr) Variable Input
-     40(n_dot_h):     36(ptr) Variable Input
-           43(m):     36(ptr) Variable Input
+              24:             TypeBool
+              32:             TypePointer Input 6(float)
+     33(n_dot_l):     32(ptr) Variable Input
+     36(n_dot_h):     32(ptr) Variable Input
+           39(m):     32(ptr) Variable Input
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-     35(n_dot_l):      7(ptr) Variable Function
-     39(n_dot_h):      7(ptr) Variable Function
-           42(m):      7(ptr) Variable Function
+     31(n_dot_l):      7(ptr) Variable Function
+     35(n_dot_h):      7(ptr) Variable Function
+           38(m):      7(ptr) Variable Function
+       41(param):      7(ptr) Variable Function
+       43(param):      7(ptr) Variable Function
        45(param):      7(ptr) Variable Function
-       47(param):      7(ptr) Variable Function
-       49(param):      7(ptr) Variable Function
-              38:    6(float) Load 37(n_dot_l)
-                              Store 35(n_dot_l) 38
-              41:    6(float) Load 40(n_dot_h)
-                              Store 39(n_dot_h) 41
-              44:    6(float) Load 43(m)
-                              Store 42(m) 44
-              46:    6(float) Load 35(n_dot_l)
+              34:    6(float) Load 33(n_dot_l)
+                              Store 31(n_dot_l) 34
+              37:    6(float) Load 36(n_dot_h)
+                              Store 35(n_dot_h) 37
+              40:    6(float) Load 39(m)
+                              Store 38(m) 40
+              42:    6(float) Load 31(n_dot_l)
+                              Store 41(param) 42
+              44:    6(float) Load 35(n_dot_h)
+                              Store 43(param) 44
+              46:    6(float) Load 38(m)
                               Store 45(param) 46
-              48:    6(float) Load 39(n_dot_h)
-                              Store 47(param) 48
-              50:    6(float) Load 42(m)
-                              Store 49(param) 50
-              51:           2 FunctionCall 12(@PixelShaderFunction(f1;f1;f1;) 45(param) 47(param) 49(param)
+              47:           2 FunctionCall 12(@PixelShaderFunction(f1;f1;f1;) 41(param) 43(param) 45(param)
                               Return
                               FunctionEnd
 12(@PixelShaderFunction(f1;f1;f1;):           2 Function None 8
@@ -188,27 +188,17 @@
            11(m):      7(ptr) FunctionParameter
               13:             Label
           16(r0):     15(ptr) Variable Function
-              21:      7(ptr) Variable Function
               18:    6(float) Load 9(n_dot_l)
               20:    6(float) ExtInst 1(GLSL.std.450) 40(FMax) 18 19
-              22:    6(float) Load 9(n_dot_l)
-              23:    6(float) Load 10(n_dot_h)
-              24:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 22 23
-              26:    25(bool) FOrdLessThan 24 19
-                              SelectionMerge 28 None
-                              BranchConditional 26 27 29
-              27:               Label
-                                Store 21 19
-                                Branch 28
-              29:               Label
-              30:    6(float)   Load 10(n_dot_h)
-              31:    6(float)   Load 11(m)
-              32:    6(float)   FMul 30 31
-                                Store 21 32
-                                Branch 28
-              28:             Label
-              33:    6(float) Load 21
-              34:   14(fvec4) CompositeConstruct 17 20 33 17
-                              Store 16(r0) 34
+              21:    6(float) Load 9(n_dot_l)
+              22:    6(float) Load 10(n_dot_h)
+              23:    6(float) ExtInst 1(GLSL.std.450) 37(FMin) 21 22
+              25:    24(bool) FOrdLessThan 23 19
+              26:    6(float) Load 10(n_dot_h)
+              27:    6(float) Load 11(m)
+              28:    6(float) FMul 26 27
+              29:    6(float) Select 25 19 28
+              30:   14(fvec4) CompositeConstruct 17 20 29 17
+                              Store 16(r0) 30
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.type.identifier.frag.out b/Test/baseResults/hlsl.type.identifier.frag.out
index 80a1b28..4bd2a9b 100644
--- a/Test/baseResults/hlsl.type.identifier.frag.out
+++ b/Test/baseResults/hlsl.type.identifier.frag.out
@@ -86,7 +86,7 @@
 0:25                    'uint' ( temp mediump uint)
 0:25                'min16float' ( temp mediump float)
 0:25              'min10float' ( temp mediump float)
-0:25            Test condition and select ( temp mediump float)
+0:25            Test condition and select ( temp mediump float): no shortcircuit
 0:25              Condition
 0:25              direct index ( temp bool)
 0:25                'bool' ( temp 2-element array of bool)
@@ -221,7 +221,7 @@
 0:25                    'uint' ( temp mediump uint)
 0:25                'min16float' ( temp mediump float)
 0:25              'min10float' ( temp mediump float)
-0:25            Test condition and select ( temp mediump float)
+0:25            Test condition and select ( temp mediump float): no shortcircuit
 0:25              Condition
 0:25              direct index ( temp bool)
 0:25                'bool' ( temp 2-element array of bool)
@@ -267,12 +267,12 @@
 
 // Module Version 10000
 // Generated by (magic number): 80004
-// Id's are bound by 109
+// Id's are bound by 105
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 107
+                              EntryPoint Fragment 4  "main" 103
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -289,9 +289,9 @@
                               Name 56  "foo_t"
                               MemberName 56(foo_t) 0  "float"
                               Name 58  "float"
-                              Name 86  "param"
-                              Name 93  "half2x3"
-                              Name 107  "@entryPointOutput"
+                              Name 82  "param"
+                              Name 89  "half2x3"
+                              Name 103  "@entryPointOutput"
                               Decorate 49(min16float) RelaxedPrecision
                               Decorate 50 RelaxedPrecision
                               Decorate 51 RelaxedPrecision
@@ -308,15 +308,14 @@
                               Decorate 72 RelaxedPrecision
                               Decorate 73 RelaxedPrecision
                               Decorate 74 RelaxedPrecision
-                              Decorate 80 RelaxedPrecision
+                              Decorate 77 RelaxedPrecision
+                              Decorate 78 RelaxedPrecision
+                              Decorate 79 RelaxedPrecision
                               Decorate 81 RelaxedPrecision
                               Decorate 83 RelaxedPrecision
                               Decorate 84 RelaxedPrecision
                               Decorate 85 RelaxedPrecision
-                              Decorate 87 RelaxedPrecision
-                              Decorate 88 RelaxedPrecision
-                              Decorate 89 RelaxedPrecision
-                              Decorate 107(@entryPointOutput) Location 0
+                              Decorate 103(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -341,16 +340,16 @@
        56(foo_t):             TypeStruct 6(float)
               57:             TypePointer Function 56(foo_t)
               59:    6(float) Constant 1109917696
-              90:             TypeVector 6(float) 3
-              91:             TypeMatrix 90(fvec3) 2
-              92:             TypePointer Function 91
-              97:     22(int) Constant 0
-             106:             TypePointer Output 12(fvec4)
-107(@entryPointOutput):    106(ptr) Variable Output
+              86:             TypeVector 6(float) 3
+              87:             TypeMatrix 86(fvec3) 2
+              88:             TypePointer Function 87
+              93:     22(int) Constant 0
+             102:             TypePointer Output 12(fvec4)
+103(@entryPointOutput):    102(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-             108:   12(fvec4) FunctionCall 14(@main()
-                              Store 107(@entryPointOutput) 108
+             104:   12(fvec4) FunctionCall 14(@main()
+                              Store 103(@entryPointOutput) 104
                               Return
                               FunctionEnd
       10(fn(f1;):    6(float) Function None 8
@@ -369,9 +368,8 @@
   52(min10float):      7(ptr) Variable Function
         54(half):      7(ptr) Variable Function
        58(float):     57(ptr) Variable Function
-              75:      7(ptr) Variable Function
-       86(param):      7(ptr) Variable Function
-     93(half2x3):     92(ptr) Variable Function
+       82(param):      7(ptr) Variable Function
+     89(half2x3):     88(ptr) Variable Function
                               Store 19(float) 20
               27:    6(float) Load 19(float)
               29:    21(bool) FOrdNotEqual 27 28
@@ -412,36 +410,27 @@
               72:    6(float) FAdd 70 71
               73:    6(float) Load 52(min10float)
               74:    6(float) FAdd 72 73
-              76:     37(ptr) AccessChain 26(bool) 40
-              77:    21(bool) Load 76
-                              SelectionMerge 79 None
-                              BranchConditional 77 78 82
-              78:               Label
-              80:     33(int)   Load 35(int)
-              81:    6(float)   ConvertSToF 80
-                                Store 75 81
-                                Branch 79
-              82:               Label
-              83:    6(float)   Load 19(float)
-                                Store 75 83
-                                Branch 79
-              79:             Label
-              84:    6(float) Load 75
-              85:    6(float) FAdd 74 84
-              87:    6(float) Load 19(float)
-                              Store 86(param) 87
-              88:    6(float) FunctionCall 10(fn(f1;) 86(param)
-              89:    6(float) FAdd 85 88
-                              Store 19(float) 89
-              94:    6(float) Load 19(float)
+              75:     37(ptr) AccessChain 26(bool) 40
+              76:    21(bool) Load 75
+              77:     33(int) Load 35(int)
+              78:    6(float) ConvertSToF 77
+              79:    6(float) Load 19(float)
+              80:    6(float) Select 76 78 79
+              81:    6(float) FAdd 74 80
+              83:    6(float) Load 19(float)
+                              Store 82(param) 83
+              84:    6(float) FunctionCall 10(fn(f1;) 82(param)
+              85:    6(float) FAdd 81 84
+                              Store 19(float) 85
+              90:    6(float) Load 19(float)
+              91:    6(float) Load 19(float)
+              92:    6(float) FMul 90 91
+              94:      7(ptr) AccessChain 89(half2x3) 40 93
+                              Store 94 92
               95:    6(float) Load 19(float)
-              96:    6(float) FMul 94 95
-              98:      7(ptr) AccessChain 93(half2x3) 40 97
-                              Store 98 96
-              99:    6(float) Load 19(float)
-             100:      7(ptr) AccessChain 93(half2x3) 40 97
-             101:    6(float) Load 100
-             102:    6(float) FAdd 99 101
-             103:   12(fvec4) CompositeConstruct 102 102 102 102
-                              ReturnValue 103
+              96:      7(ptr) AccessChain 89(half2x3) 40 93
+              97:    6(float) Load 96
+              98:    6(float) FAdd 95 97
+              99:   12(fvec4) CompositeConstruct 98 98 98 98
+                              ReturnValue 99
                               FunctionEnd
diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out
index fcae117..8ea83fc 100644
--- a/Test/baseResults/spv.400.frag.out
+++ b/Test/baseResults/spv.400.frag.out
@@ -273,10 +273,10 @@
      439(bvec2v):    438(ptr) Variable Function
      448(bvec3v):    447(ptr) Variable Function
      457(bvec4v):    456(ptr) Variable Function
-             556:    429(ptr) Variable Function
-             565:    438(ptr) Variable Function
-             574:    447(ptr) Variable Function
-             583:    456(ptr) Variable Function
+             557:    429(ptr) Variable Function
+             566:    438(ptr) Variable Function
+             575:    447(ptr) Variable Function
+             584:    456(ptr) Variable Function
      739(dmat2v):    738(ptr) Variable Function
      745(dmat3v):    744(ptr) Variable Function
      751(dmat4v):    750(ptr) Variable Function
@@ -875,61 +875,61 @@
              554:   53(fvec4) Load 55(dvec4v)
              555:  455(bvec4) IsNan 554
                               Store 457(bvec4v) 555
-             557:   428(bool) Load 430(boolv)
+             556:   428(bool) Load 430(boolv)
                               SelectionMerge 559 None
-                              BranchConditional 557 558 562
+                              BranchConditional 556 558 562
              558:               Label
              560:   39(float)   Load 41(doublev)
              561:   428(bool)   IsInf 560
-                                Store 556 561
+                                Store 557 561
                                 Branch 559
              562:               Label
-                                Store 556 563
+                                Store 557 563
                                 Branch 559
              559:             Label
-             564:   428(bool) Load 556
+             564:   428(bool) Load 557
                               Store 430(boolv) 564
-             566:   428(bool) Load 430(boolv)
+             565:   428(bool) Load 430(boolv)
                               SelectionMerge 568 None
-                              BranchConditional 566 567 571
+                              BranchConditional 565 567 571
              567:               Label
              569:   43(fvec2)   Load 45(dvec2v)
              570:  437(bvec2)   IsInf 569
-                                Store 565 570
+                                Store 566 570
                                 Branch 568
              571:               Label
-                                Store 565 572
+                                Store 566 572
                                 Branch 568
              568:             Label
-             573:  437(bvec2) Load 565
+             573:  437(bvec2) Load 566
                               Store 439(bvec2v) 573
-             575:   428(bool) Load 430(boolv)
+             574:   428(bool) Load 430(boolv)
                               SelectionMerge 577 None
-                              BranchConditional 575 576 580
+                              BranchConditional 574 576 580
              576:               Label
              578:   48(fvec3)   Load 50(dvec3v)
              579:  446(bvec3)   IsInf 578
-                                Store 574 579
+                                Store 575 579
                                 Branch 577
              580:               Label
-                                Store 574 581
+                                Store 575 581
                                 Branch 577
              577:             Label
-             582:  446(bvec3) Load 574
+             582:  446(bvec3) Load 575
                               Store 448(bvec3v) 582
-             584:   428(bool) Load 430(boolv)
+             583:   428(bool) Load 430(boolv)
                               SelectionMerge 586 None
-                              BranchConditional 584 585 589
+                              BranchConditional 583 585 589
              585:               Label
              587:   53(fvec4)   Load 55(dvec4v)
              588:  455(bvec4)   IsInf 587
-                                Store 583 588
+                                Store 584 588
                                 Branch 586
              589:               Label
-                                Store 583 590
+                                Store 584 590
                                 Branch 586
              586:             Label
-             591:  455(bvec4) Load 583
+             591:  455(bvec4) Load 584
                               Store 457(bvec4v) 591
              592:   39(float) Load 41(doublev)
              593:   39(float) ExtInst 1(GLSL.std.450) 66(Length) 592
diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out
index 64cd07e..74a165d 100755
--- a/Test/baseResults/spv.Operations.frag.out
+++ b/Test/baseResults/spv.Operations.frag.out
@@ -90,10 +90,10 @@
           188(f):    143(ptr) Variable Function
           285(u):    284(ptr) Variable Function
           305(b):    304(ptr) Variable Function
-             486:      8(ptr) Variable Function
+             487:      8(ptr) Variable Function
          503(m1):    502(ptr) Variable Function
          510(m2):    502(ptr) Variable Function
-             513:    502(ptr) Variable Function
+             514:    502(ptr) Variable Function
               12:    7(fvec4) Load 11(uv4)
               13:    7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
                               Store 9(v) 13
@@ -658,9 +658,9 @@
              482:   178(bool) Load 305(b)
              483:   178(bool) LogicalNot 482
                               Store 305(b) 483
-             487:   178(bool) Load 305(b)
+             486:   178(bool) Load 305(b)
                               SelectionMerge 489 None
-                              BranchConditional 487 488 498
+                              BranchConditional 486 488 498
              488:               Label
              490:     18(int)   Load 20(i)
              491:    6(float)   ConvertSToF 490
@@ -670,30 +670,30 @@
              495:    7(fvec4)   FAdd 492 494
              496:    7(fvec4)   Load 9(v)
              497:    7(fvec4)   FAdd 495 496
-                                Store 486 497
+                                Store 487 497
                                 Branch 489
              498:               Label
              499:    7(fvec4)   Load 9(v)
-                                Store 486 499
+                                Store 487 499
                                 Branch 489
              489:             Label
-             500:    7(fvec4) Load 486
+             500:    7(fvec4) Load 487
                               Store 485(FragColor) 500
                               Store 503(m1) 509
                               Store 510(m2) 512
-             514:   178(bool) Load 305(b)
+             513:   178(bool) Load 305(b)
                               SelectionMerge 516 None
-                              BranchConditional 514 515 518
+                              BranchConditional 513 515 518
              515:               Label
              517:         501   Load 503(m1)
-                                Store 513 517
+                                Store 514 517
                                 Branch 516
              518:               Label
              519:         501   Load 510(m2)
-                                Store 513 519
+                                Store 514 519
                                 Branch 516
              516:             Label
-             520:      8(ptr) AccessChain 513 405
+             520:      8(ptr) AccessChain 514 405
              521:    7(fvec4) Load 520
              522:    7(fvec4) Load 485(FragColor)
              523:    7(fvec4) FAdd 522 521
diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out
index dcd15e4..58deb0a 100644
--- a/Test/baseResults/spv.bitCast.frag.out
+++ b/Test/baseResults/spv.bitCast.frag.out
@@ -86,8 +86,8 @@
          148(u4):    147(ptr) Variable Input
              153:             TypePointer Output 46(fvec4)
   154(fragColor):    153(ptr) Variable Output
-             159:             TypeBool
-             160:             TypeVector 159(bool) 4
+             158:             TypeBool
+             159:             TypeVector 158(bool) 4
              168:   12(float) Constant 1045220557
              169:   46(fvec4) ConstantComposite 168 168 168 168
          4(main):           2 Function None 3
@@ -95,7 +95,7 @@
         9(idata):      8(ptr) Variable Function
        55(udata):     54(ptr) Variable Function
        85(fdata):     84(ptr) Variable Function
-             155:     84(ptr) Variable Function
+             162:     84(ptr) Variable Function
                               Store 9(idata) 11
               15:   12(float) Load 14(f1)
               16:      6(int) Bitcast 15
@@ -211,24 +211,24 @@
              151:   46(fvec4) Load 85(fdata)
              152:   46(fvec4) FAdd 151 150
                               Store 85(fdata) 152
-             156:    7(ivec4) Load 9(idata)
-             157:   53(ivec4) Bitcast 156
-             158:   53(ivec4) Load 55(udata)
-             161:  160(bvec4) IEqual 157 158
-             162:   159(bool) All 161
+             155:    7(ivec4) Load 9(idata)
+             156:   53(ivec4) Bitcast 155
+             157:   53(ivec4) Load 55(udata)
+             160:  159(bvec4) IEqual 156 157
+             161:   158(bool) All 160
                               SelectionMerge 164 None
-                              BranchConditional 162 163 166
+                              BranchConditional 161 163 166
              163:               Label
              165:   46(fvec4)   Load 85(fdata)
-                                Store 155 165
+                                Store 162 165
                                 Branch 164
              166:               Label
              167:   46(fvec4)   Load 85(fdata)
              170:   46(fvec4)   FAdd 167 169
-                                Store 155 170
+                                Store 162 170
                                 Branch 164
              164:             Label
-             171:   46(fvec4) Load 155
+             171:   46(fvec4) Load 162
                               Store 154(fragColor) 171
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out
index 5a756b3..c950443 100755
--- a/Test/baseResults/spv.conversion.frag.out
+++ b/Test/baseResults/spv.conversion.frag.out
@@ -119,8 +119,8 @@
              315:     13(int) Constant 1
              321:             TypePointer Output 95(fvec4)
 322(gl_FragColor):    321(ptr) Variable Output
-             337:     13(int) Constant 2
-             350:     13(int) Constant 3
+             336:     13(int) Constant 2
+             349:     13(int) Constant 3
              427:             TypePointer Private 6(bool)
         428(u_b):    427(ptr) Variable Private
              429:             TypePointer Private 23(bvec2)
@@ -163,9 +163,9 @@
          110(f2):    109(ptr) Variable Function
          114(f3):    113(ptr) Variable Function
          118(f4):    117(ptr) Variable Function
-             297:    105(ptr) Variable Function
-             307:    105(ptr) Variable Function
-             323:    117(ptr) Variable Function
+             298:    105(ptr) Variable Function
+             309:    105(ptr) Variable Function
+             353:    117(ptr) Variable Function
         417(cv2):     93(ptr) Variable Function
         418(cv5):     44(ptr) Variable Function
               12:      9(int) Load 11(u_i)
@@ -425,72 +425,72 @@
                               SelectionMerge 296 None
                               BranchConditional 294 295 296
              295:               Label
-             298:     6(bool)   Load 8(b)
+             297:     6(bool)   Load 8(b)
                                 SelectionMerge 300 None
-                                BranchConditional 298 299 303
+                                BranchConditional 297 299 303
              299:                 Label
              301:      9(int)     Load 58(i)
              302:   16(float)     ConvertSToF 301
-                                  Store 297 302
+                                  Store 298 302
                                   Branch 300
              303:                 Label
              304:    105(ptr)     AccessChain 110(f2) 14
              305:   16(float)     Load 304
-                                  Store 297 305
+                                  Store 298 305
                                   Branch 300
              300:               Label
-             306:   16(float)   Load 297
-             308:      7(ptr)   AccessChain 25(b2) 14
-             309:     6(bool)   Load 308
+             306:   16(float)   Load 298
+             307:      7(ptr)   AccessChain 25(b2) 14
+             308:     6(bool)   Load 307
                                 SelectionMerge 311 None
-                                BranchConditional 309 310 314
+                                BranchConditional 308 310 314
              310:                 Label
              312:    105(ptr)     AccessChain 114(f3) 14
              313:   16(float)     Load 312
-                                  Store 307 313
+                                  Store 309 313
                                   Branch 311
              314:                 Label
              316:     57(ptr)     AccessChain 68(i2) 315
              317:      9(int)     Load 316
              318:   16(float)     ConvertSToF 317
-                                  Store 307 318
+                                  Store 309 318
                                   Branch 311
              311:               Label
-             319:   16(float)   Load 307
+             319:   16(float)   Load 309
              320:   16(float)   FAdd 306 319
                                 Store 106(f) 320
                                 Branch 296
              296:             Label
-             324:     6(bool) Load 8(b)
-             325:      7(ptr) AccessChain 25(b2) 14
-             326:     6(bool) Load 325
-             327:     6(bool) LogicalOr 324 326
-             328:      7(ptr) AccessChain 25(b2) 315
-             329:     6(bool) Load 328
-             330:     6(bool) LogicalOr 327 329
-             331:      7(ptr) AccessChain 33(b3) 14
-             332:     6(bool) Load 331
-             333:     6(bool) LogicalOr 330 332
-             334:      7(ptr) AccessChain 33(b3) 315
-             335:     6(bool) Load 334
-             336:     6(bool) LogicalOr 333 335
-             338:      7(ptr) AccessChain 33(b3) 337
-             339:     6(bool) Load 338
-             340:     6(bool) LogicalOr 336 339
-             341:      7(ptr) AccessChain 45(b4) 14
-             342:     6(bool) Load 341
-             343:     6(bool) LogicalOr 340 342
-             344:      7(ptr) AccessChain 45(b4) 315
-             345:     6(bool) Load 344
-             346:     6(bool) LogicalOr 343 345
-             347:      7(ptr) AccessChain 45(b4) 337
-             348:     6(bool) Load 347
-             349:     6(bool) LogicalOr 346 348
-             351:      7(ptr) AccessChain 45(b4) 350
-             352:     6(bool) Load 351
-             353:     6(bool) LogicalOr 349 352
+             323:     6(bool) Load 8(b)
+             324:      7(ptr) AccessChain 25(b2) 14
+             325:     6(bool) Load 324
+             326:     6(bool) LogicalOr 323 325
+             327:      7(ptr) AccessChain 25(b2) 315
+             328:     6(bool) Load 327
+             329:     6(bool) LogicalOr 326 328
+             330:      7(ptr) AccessChain 33(b3) 14
+             331:     6(bool) Load 330
+             332:     6(bool) LogicalOr 329 331
+             333:      7(ptr) AccessChain 33(b3) 315
+             334:     6(bool) Load 333
+             335:     6(bool) LogicalOr 332 334
+             337:      7(ptr) AccessChain 33(b3) 336
+             338:     6(bool) Load 337
+             339:     6(bool) LogicalOr 335 338
+             340:      7(ptr) AccessChain 45(b4) 14
+             341:     6(bool) Load 340
+             342:     6(bool) LogicalOr 339 341
+             343:      7(ptr) AccessChain 45(b4) 315
+             344:     6(bool) Load 343
+             345:     6(bool) LogicalOr 342 344
+             346:      7(ptr) AccessChain 45(b4) 336
+             347:     6(bool) Load 346
+             348:     6(bool) LogicalOr 345 347
+             350:      7(ptr) AccessChain 45(b4) 349
+             351:     6(bool) Load 350
+             352:     6(bool) LogicalOr 348 351
                               SelectionMerge 355 None
-                              BranchConditional 353 354 415
+                              BranchConditional 352 354 415
              354:               Label
              356:      9(int)   Load 58(i)
              357:     57(ptr)   AccessChain 68(i2) 14
@@ -505,7 +505,7 @@
              366:     57(ptr)   AccessChain 81(i3) 315
              367:      9(int)   Load 366
              368:      9(int)   IAdd 365 367
-             369:     57(ptr)   AccessChain 81(i3) 337
+             369:     57(ptr)   AccessChain 81(i3) 336
              370:      9(int)   Load 369
              371:      9(int)   IAdd 368 370
              372:     57(ptr)   AccessChain 94(i4) 14
@@ -514,10 +514,10 @@
              375:     57(ptr)   AccessChain 94(i4) 315
              376:      9(int)   Load 375
              377:      9(int)   IAdd 374 376
-             378:     57(ptr)   AccessChain 94(i4) 337
+             378:     57(ptr)   AccessChain 94(i4) 336
              379:      9(int)   Load 378
              380:      9(int)   IAdd 377 379
-             381:     57(ptr)   AccessChain 94(i4) 350
+             381:     57(ptr)   AccessChain 94(i4) 349
              382:      9(int)   Load 381
              383:      9(int)   IAdd 380 382
              384:   16(float)   ConvertSToF 383
@@ -535,7 +535,7 @@
              396:    105(ptr)   AccessChain 114(f3) 315
              397:   16(float)   Load 396
              398:   16(float)   FAdd 395 397
-             399:    105(ptr)   AccessChain 114(f3) 337
+             399:    105(ptr)   AccessChain 114(f3) 336
              400:   16(float)   Load 399
              401:   16(float)   FAdd 398 400
              402:    105(ptr)   AccessChain 118(f4) 14
@@ -544,20 +544,20 @@
              405:    105(ptr)   AccessChain 118(f4) 315
              406:   16(float)   Load 405
              407:   16(float)   FAdd 404 406
-             408:    105(ptr)   AccessChain 118(f4) 337
+             408:    105(ptr)   AccessChain 118(f4) 336
              409:   16(float)   Load 408
              410:   16(float)   FAdd 407 409
-             411:    105(ptr)   AccessChain 118(f4) 350
+             411:    105(ptr)   AccessChain 118(f4) 349
              412:   16(float)   Load 411
              413:   16(float)   FAdd 410 412
              414:   95(fvec4)   CompositeConstruct 413 413 413 413
-                                Store 323 414
+                                Store 353 414
                                 Branch 355
              415:               Label
-                                Store 323 151
+                                Store 353 151
                                 Branch 355
              355:             Label
-             416:   95(fvec4) Load 323
+             416:   95(fvec4) Load 353
                               Store 322(gl_FragColor) 416
                               Store 417(cv2) 102
              419:   92(ivec4) Load 417(cv2)
diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out
index d937398..15dd7cd 100644
--- a/Test/baseResults/spv.debugInfo.frag.out
+++ b/Test/baseResults/spv.debugInfo.frag.out
@@ -135,13 +135,13 @@
               77:             TypePointer Uniform 7(int)
              106:      7(int) Constant 10
              111:      7(int) Constant 1
-             114:             TypePointer Output 10(float)
-             117:   10(float) Constant 1092616192
+             113:             TypePointer Output 10(float)
+             116:   10(float) Constant 1092616192
          5(main):           3 Function None 4
                6:             Label
        59(param):     58(ptr) Variable Function
            99(i):     19(ptr) Variable Function
-             113:     16(ptr) Variable Function
+             118:     16(ptr) Variable Function
                               Line 1 30 0
               61:     60(ptr) AccessChain 56 18
               62:       53(S) Load 61
@@ -216,24 +216,24 @@
                                 Branch 100
              102:             Label
                               Line 1 49 0
-             115:    114(ptr) AccessChain 52(outv) 32
-             116:   10(float) Load 115
-             118:    37(bool) FOrdLessThan 116 117
+             114:    113(ptr) AccessChain 52(outv) 32
+             115:   10(float) Load 114
+             117:    37(bool) FOrdLessThan 115 116
                               SelectionMerge 120 None
-                              BranchConditional 118 119 123
+                              BranchConditional 117 119 123
              119:               Label
                                 Line 1 50 0
              121:   11(fvec4)   Load 52(outv)
              122:   11(fvec4)   ExtInst 2(GLSL.std.450) 13(Sin) 121
                                 Store 52(outv) 122
-                                Store 113 122
+                                Store 118 122
                                 Branch 120
              123:               Label
                                 Line 1 51 0
              124:   11(fvec4)   Load 52(outv)
              125:   11(fvec4)   ExtInst 2(GLSL.std.450) 14(Cos) 124
                                 Store 52(outv) 125
-                                Store 113 125
+                                Store 118 125
                                 Branch 120
              120:             Label
                               Return
diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out
index 6d205ae..1f6d19b 100644
--- a/Test/baseResults/spv.sparseTexture.frag.out
+++ b/Test/baseResults/spv.sparseTexture.frag.out
@@ -182,14 +182,14 @@
       414(i2DMS):    413(ptr) Variable UniformConstant
              422:             TypePointer Output 11(fvec4)
    423(outColor):    422(ptr) Variable Output
-             426:             TypeBool
+             425:             TypeBool
          4(main):           2 Function None 3
                5:             Label
      8(resident):      7(ptr) Variable Function
        13(texel):     12(ptr) Variable Function
       18(itexel):     17(ptr) Variable Function
       23(utexel):     22(ptr) Variable Function
-             424:     12(ptr) Variable Function
+             427:     12(ptr) Variable Function
                               Store 8(resident) 9
                               Store 13(texel) 15
                               Store 18(itexel) 19
@@ -565,13 +565,13 @@
              420:      6(int) Load 8(resident)
              421:      6(int) BitwiseOr 420 419
                               Store 8(resident) 421
-             425:      6(int) Load 8(resident)
-             427:   426(bool) ImageSparseTexelsResident 425
+             424:      6(int) Load 8(resident)
+             426:   425(bool) ImageSparseTexelsResident 424
                               SelectionMerge 429 None
-                              BranchConditional 427 428 431
+                              BranchConditional 426 428 431
              428:               Label
              430:   11(fvec4)   Load 13(texel)
-                                Store 424 430
+                                Store 427 430
                                 Branch 429
              431:               Label
              432:   16(ivec4)   Load 18(itexel)
@@ -579,10 +579,10 @@
              434:   21(ivec4)   Load 23(utexel)
              435:   11(fvec4)   ConvertUToF 434
              436:   11(fvec4)   FAdd 433 435
-                                Store 424 436
+                                Store 427 436
                                 Branch 429
              429:             Label
-             437:   11(fvec4) Load 424
+             437:   11(fvec4) Load 427
                               Store 423(outColor) 437
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out
index 2181c0a..acf7f99 100644
--- a/Test/baseResults/spv.sparseTextureClamp.frag.out
+++ b/Test/baseResults/spv.sparseTextureClamp.frag.out
@@ -145,14 +145,14 @@
              310:  157(ivec2) ConstantComposite 143 143
              344:             TypePointer Output 11(fvec4)
    345(outColor):    344(ptr) Variable Output
-             348:             TypeBool
+             347:             TypeBool
          4(main):           2 Function None 3
                5:             Label
      8(resident):      7(ptr) Variable Function
        13(texel):     12(ptr) Variable Function
       18(itexel):     17(ptr) Variable Function
       23(utexel):     22(ptr) Variable Function
-             346:     12(ptr) Variable Function
+             349:     12(ptr) Variable Function
                               Store 8(resident) 9
                               Store 13(texel) 15
                               Store 18(itexel) 19
@@ -442,13 +442,13 @@
              342:   16(ivec4) Load 18(itexel)
              343:   16(ivec4) IAdd 342 341
                               Store 18(itexel) 343
-             347:      6(int) Load 8(resident)
-             349:   348(bool) ImageSparseTexelsResident 347
+             346:      6(int) Load 8(resident)
+             348:   347(bool) ImageSparseTexelsResident 346
                               SelectionMerge 351 None
-                              BranchConditional 349 350 353
+                              BranchConditional 348 350 353
              350:               Label
              352:   11(fvec4)   Load 13(texel)
-                                Store 346 352
+                                Store 349 352
                                 Branch 351
              353:               Label
              354:   16(ivec4)   Load 18(itexel)
@@ -456,10 +456,10 @@
              356:   21(ivec4)   Load 23(utexel)
              357:   11(fvec4)   ConvertUToF 356
              358:   11(fvec4)   FAdd 355 357
-                                Store 346 358
+                                Store 349 358
                                 Branch 351
              351:             Label
-             359:   11(fvec4) Load 346
+             359:   11(fvec4) Load 349
                               Store 345(outColor) 359
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out
index f749ea7..8ae9bf0 100755
--- a/Test/baseResults/spv.types.frag.out
+++ b/Test/baseResults/spv.types.frag.out
@@ -141,7 +141,7 @@
          139(f2):    138(ptr) Variable Function
          148(f3):    147(ptr) Variable Function
          157(f4):    156(ptr) Variable Function
-             166:    156(ptr) Variable Function
+             194:    156(ptr) Variable Function
               11:     6(bool) Load 10(u_b)
               13:     6(bool) Load 12(i_b)
               14:     6(bool) LogicalAnd 11 13
@@ -235,36 +235,36 @@
              162:  155(fvec4) Load 161(i_f4)
              163:  155(fvec4) FAdd 160 162
                               Store 157(f4) 163
-             167:     6(bool) Load 8(b)
-             168:      7(ptr) AccessChain 17(b2) 21
-             169:     6(bool) Load 168
-             170:     6(bool) LogicalOr 167 169
-             171:      7(ptr) AccessChain 17(b2) 28
-             172:     6(bool) Load 171
-             173:     6(bool) LogicalOr 170 172
-             174:      7(ptr) AccessChain 38(b3) 21
-             175:     6(bool) Load 174
-             176:     6(bool) LogicalOr 173 175
-             177:      7(ptr) AccessChain 38(b3) 28
-             178:     6(bool) Load 177
-             179:     6(bool) LogicalOr 176 178
-             180:      7(ptr) AccessChain 38(b3) 53
-             181:     6(bool) Load 180
-             182:     6(bool) LogicalOr 179 181
-             183:      7(ptr) AccessChain 63(b4) 21
-             184:     6(bool) Load 183
-             185:     6(bool) LogicalOr 182 184
-             186:      7(ptr) AccessChain 63(b4) 28
-             187:     6(bool) Load 186
-             188:     6(bool) LogicalOr 185 187
-             189:      7(ptr) AccessChain 63(b4) 53
-             190:     6(bool) Load 189
-             191:     6(bool) LogicalOr 188 190
-             192:      7(ptr) AccessChain 63(b4) 84
-             193:     6(bool) Load 192
-             194:     6(bool) LogicalOr 191 193
+             166:     6(bool) Load 8(b)
+             167:      7(ptr) AccessChain 17(b2) 21
+             168:     6(bool) Load 167
+             169:     6(bool) LogicalOr 166 168
+             170:      7(ptr) AccessChain 17(b2) 28
+             171:     6(bool) Load 170
+             172:     6(bool) LogicalOr 169 171
+             173:      7(ptr) AccessChain 38(b3) 21
+             174:     6(bool) Load 173
+             175:     6(bool) LogicalOr 172 174
+             176:      7(ptr) AccessChain 38(b3) 28
+             177:     6(bool) Load 176
+             178:     6(bool) LogicalOr 175 177
+             179:      7(ptr) AccessChain 38(b3) 53
+             180:     6(bool) Load 179
+             181:     6(bool) LogicalOr 178 180
+             182:      7(ptr) AccessChain 63(b4) 21
+             183:     6(bool) Load 182
+             184:     6(bool) LogicalOr 181 183
+             185:      7(ptr) AccessChain 63(b4) 28
+             186:     6(bool) Load 185
+             187:     6(bool) LogicalOr 184 186
+             188:      7(ptr) AccessChain 63(b4) 53
+             189:     6(bool) Load 188
+             190:     6(bool) LogicalOr 187 189
+             191:      7(ptr) AccessChain 63(b4) 84
+             192:     6(bool) Load 191
+             193:     6(bool) LogicalOr 190 192
                               SelectionMerge 196 None
-                              BranchConditional 194 195 256
+                              BranchConditional 193 195 256
              195:               Label
              197:     92(int)   Load 94(i)
              198:     93(ptr)   AccessChain 103(i2) 21
@@ -325,13 +325,13 @@
              253:  128(float)   Load 252
              254:  128(float)   FAdd 251 253
              255:  155(fvec4)   CompositeConstruct 254 254 254 254
-                                Store 166 255
+                                Store 194 255
                                 Branch 196
              256:               Label
-                                Store 166 258
+                                Store 194 258
                                 Branch 196
              196:             Label
-             259:  155(fvec4) Load 166
+             259:  155(fvec4) Load 194
                               Store 165(gl_FragColor) 259
                               Return
                               FunctionEnd