SPV GLSL.std.450: Add needed smear operations for min, max, clamp, mix, step, and...
authorJohn Kessenich <cepheus@frii.com>
Sun, 13 Dec 2015 20:34:37 +0000 (13:34 -0700)
committerJohn Kessenich <cepheus@frii.com>
Sun, 13 Dec 2015 20:34:37 +0000 (13:34 -0700)
SPIRV/GlslangToSpv.cpp
Test/baseResults/spv.Operations.frag.out
Test/baseResults/spv.test.frag.out
Test/baseResults/spv.texture.frag.out
glslang/Include/revision.h

index 78e9e6d..e1babc1 100755 (executable)
@@ -2871,6 +2871,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
             libCall = spv::GLSLstd450UMin;
         else
             libCall = spv::GLSLstd450SMin;
+        builder.promoteScalar(precision, operands.front(), operands.back());
         break;
     case glslang::EOpModf:
         libCall = spv::GLSLstd450Modf;
@@ -2882,6 +2883,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
             libCall = spv::GLSLstd450UMax;
         else
             libCall = spv::GLSLstd450SMax;
+        builder.promoteScalar(precision, operands.front(), operands.back());
         break;
     case glslang::EOpPow:
         libCall = spv::GLSLstd450Pow;
@@ -2900,18 +2902,24 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv::
             libCall = spv::GLSLstd450UClamp;
         else
             libCall = spv::GLSLstd450SClamp;
+        builder.promoteScalar(precision, operands.front(), operands[1]);
+        builder.promoteScalar(precision, operands.front(), operands[2]);
         break;
     case glslang::EOpMix:
         if (isFloat)
             libCall = spv::GLSLstd450FMix;
         else
             libCall = spv::GLSLstd450IMix;
+        builder.promoteScalar(precision, operands.front(), operands.back());
         break;
     case glslang::EOpStep:
         libCall = spv::GLSLstd450Step;
+        builder.promoteScalar(precision, operands.front(), operands.back());
         break;
     case glslang::EOpSmoothStep:
         libCall = spv::GLSLstd450SmoothStep;
+        builder.promoteScalar(precision, operands[0], operands[2]);
+        builder.promoteScalar(precision, operands[1], operands[2]);
         break;
 
     case glslang::EOpDistance:
index 3685b73..16b0013 100755 (executable)
@@ -7,12 +7,12 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 503
+// Id's are bound by 507
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 479
+                              EntryPoint Fragment 4  "main" 483
                               ExecutionMode 4 OriginLowerLeft
                               Source GLSL 450
                               Name 4  "main"
@@ -22,15 +22,15 @@ Linked fragment stage:
                               Name 22  "ui"
                               Name 181  "ub41"
                               Name 188  "f"
-                              Name 211  "uf"
-                              Name 281  "u"
-                              Name 284  "uui"
-                              Name 301  "b"
-                              Name 338  "ub42"
-                              Name 479  "FragColor"
-                              Name 497  "uiv4"
-                              Name 499  "ub"
-                              Name 502  "uuv4"
+                              Name 212  "uf"
+                              Name 285  "u"
+                              Name 288  "uui"
+                              Name 305  "b"
+                              Name 342  "ub42"
+                              Name 483  "FragColor"
+                              Name 501  "uiv4"
+                              Name 503  "ub"
+                              Name 506  "uuv4"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -49,38 +49,38 @@ Linked fragment stage:
              179:             TypeVector 178(bool) 4
              180:             TypePointer UniformConstant 179(bvec4)
        181(ub41):    180(ptr) Variable UniformConstant
-             210:             TypePointer UniformConstant 6(float)
-         211(uf):    210(ptr) Variable UniformConstant
-             280:             TypePointer Function 141(int)
-             283:             TypePointer UniformConstant 141(int)
-        284(uui):    283(ptr) Variable UniformConstant
-             300:             TypePointer Function 178(bool)
-       338(ub42):    180(ptr) Variable UniformConstant
-             392:     18(int) Constant 2
-             399:     18(int) Constant 1
-             429:             TypeVector 6(float) 3
-             448:    6(float) Constant 1073741824
-             455:    6(float) Constant 1065353216
-             460:     18(int) Constant 66
-             466:     18(int) Constant 17
-             478:             TypePointer Output 7(fvec4)
-  479(FragColor):    478(ptr) Variable Output
-             495:             TypeVector 18(int) 4
-             496:             TypePointer UniformConstant 495(ivec4)
-       497(uiv4):    496(ptr) Variable UniformConstant
-             498:             TypePointer UniformConstant 178(bool)
-         499(ub):    498(ptr) Variable UniformConstant
-             500:             TypeVector 141(int) 4
-             501:             TypePointer UniformConstant 500(ivec4)
-       502(uuv4):    501(ptr) Variable UniformConstant
+             211:             TypePointer UniformConstant 6(float)
+         212(uf):    211(ptr) Variable UniformConstant
+             284:             TypePointer Function 141(int)
+             287:             TypePointer UniformConstant 141(int)
+        288(uui):    287(ptr) Variable UniformConstant
+             304:             TypePointer Function 178(bool)
+       342(ub42):    180(ptr) Variable UniformConstant
+             396:     18(int) Constant 2
+             403:     18(int) Constant 1
+             433:             TypeVector 6(float) 3
+             452:    6(float) Constant 1073741824
+             459:    6(float) Constant 1065353216
+             464:     18(int) Constant 66
+             470:     18(int) Constant 17
+             482:             TypePointer Output 7(fvec4)
+  483(FragColor):    482(ptr) Variable Output
+             499:             TypeVector 18(int) 4
+             500:             TypePointer UniformConstant 499(ivec4)
+       501(uiv4):    500(ptr) Variable UniformConstant
+             502:             TypePointer UniformConstant 178(bool)
+         503(ub):    502(ptr) Variable UniformConstant
+             504:             TypeVector 141(int) 4
+             505:             TypePointer UniformConstant 504(ivec4)
+       506(uuv4):    505(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
             9(v):      8(ptr) Variable Function
            20(i):     19(ptr) Variable Function
           188(f):    143(ptr) Variable Function
-          281(u):    280(ptr) Variable Function
-          301(b):    300(ptr) Variable Function
-             480:      8(ptr) Variable Function
+          285(u):    284(ptr) Variable Function
+          305(b):    304(ptr) Variable Function
+             484:      8(ptr) Variable Function
               12:    7(fvec4) Load 11(uv4)
               13:    7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
                               Store 9(v) 13
@@ -284,378 +284,382 @@ Linked fragment stage:
              186:    7(fvec4) Load 9(v)
              187:    7(fvec4) Load 9(v)
              189:    6(float) Load 188(f)
-             190:    7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 189
-             191:    7(fvec4) Load 9(v)
-             192:    7(fvec4) FAdd 191 190
-                              Store 9(v) 192
-             193:    7(fvec4) Load 9(v)
-             194:    7(fvec4) Load 11(uv4)
-             195:    7(fvec4) Load 9(v)
-             196:    7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 193 194 195
-             197:    7(fvec4) Load 9(v)
-             198:    7(fvec4) FAdd 197 196
-                              Store 9(v) 198
-             199:    7(fvec4) Load 9(v)
+             190:    7(fvec4) CompositeConstruct 189 189 189 189
+             191:    7(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 186 187 190
+             192:    7(fvec4) Load 9(v)
+             193:    7(fvec4) FAdd 192 191
+                              Store 9(v) 193
+             194:    7(fvec4) Load 9(v)
+             195:    7(fvec4) Load 11(uv4)
+             196:    7(fvec4) Load 9(v)
+             197:    7(fvec4) ExtInst 1(GLSL.std.450) 50(Fma) 194 195 196
+             198:    7(fvec4) Load 9(v)
+             199:    7(fvec4) FAdd 198 197
+                              Store 9(v) 199
              200:    7(fvec4) Load 9(v)
-             201:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 199 200
-             202:    7(fvec4) Load 9(v)
-             203:    7(fvec4) FAdd 202 201
-                              Store 9(v) 203
-             204:    7(fvec4) Load 9(v)
+             201:    7(fvec4) Load 9(v)
+             202:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 200 201
+             203:    7(fvec4) Load 9(v)
+             204:    7(fvec4) FAdd 203 202
+                              Store 9(v) 204
              205:    7(fvec4) Load 9(v)
              206:    7(fvec4) Load 9(v)
-             207:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 204 205 206
-             208:    7(fvec4) Load 9(v)
-             209:    7(fvec4) FAdd 208 207
-                              Store 9(v) 209
-             212:    6(float) Load 211(uf)
-             213:    7(fvec4) Load 9(v)
-             214:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 212 213
-             215:    7(fvec4) Load 9(v)
-             216:    7(fvec4) FAdd 215 214
-                              Store 9(v) 216
-             217:    6(float) Load 211(uf)
-             218:    6(float) Load 211(uf)
-             219:    7(fvec4) Load 9(v)
-             220:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 217 218 219
+             207:    7(fvec4) Load 9(v)
+             208:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 205 206 207
+             209:    7(fvec4) Load 9(v)
+             210:    7(fvec4) FAdd 209 208
+                              Store 9(v) 210
+             213:    6(float) Load 212(uf)
+             214:    7(fvec4) Load 9(v)
+             215:    7(fvec4) CompositeConstruct 213 213 213 213
+             216:    7(fvec4) ExtInst 1(GLSL.std.450) 48(Step) 215 214
+             217:    7(fvec4) Load 9(v)
+             218:    7(fvec4) FAdd 217 216
+                              Store 9(v) 218
+             219:    6(float) Load 212(uf)
+             220:    6(float) Load 212(uf)
              221:    7(fvec4) Load 9(v)
-             222:    7(fvec4) FAdd 221 220
-                              Store 9(v) 222
-             223:    7(fvec4) Load 9(v)
-             224:    7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 223
+             222:    7(fvec4) CompositeConstruct 219 219 219 219
+             223:    7(fvec4) CompositeConstruct 220 220 220 220
+             224:    7(fvec4) ExtInst 1(GLSL.std.450) 49(SmoothStep) 222 223 221
              225:    7(fvec4) Load 9(v)
              226:    7(fvec4) FAdd 225 224
                               Store 9(v) 226
              227:    7(fvec4) Load 9(v)
-             228:    7(fvec4) Load 9(v)
+             228:    7(fvec4) ExtInst 1(GLSL.std.450) 69(Normalize) 227
              229:    7(fvec4) Load 9(v)
-             230:    7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 227 228 229
+             230:    7(fvec4) FAdd 229 228
+                              Store 9(v) 230
              231:    7(fvec4) Load 9(v)
-             232:    7(fvec4) FAdd 231 230
-                              Store 9(v) 232
+             232:    7(fvec4) Load 9(v)
              233:    7(fvec4) Load 9(v)
-             234:    7(fvec4) Load 9(v)
-             235:    7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 233 234
-             236:    7(fvec4) Load 9(v)
-             237:    7(fvec4) FAdd 236 235
-                              Store 9(v) 237
+             234:    7(fvec4) ExtInst 1(GLSL.std.450) 70(FaceForward) 231 232 233
+             235:    7(fvec4) Load 9(v)
+             236:    7(fvec4) FAdd 235 234
+                              Store 9(v) 236
+             237:    7(fvec4) Load 9(v)
              238:    7(fvec4) Load 9(v)
-             239:    7(fvec4) Load 9(v)
-             240:    6(float) Load 211(uf)
-             241:    7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 238 239 240
+             239:    7(fvec4) ExtInst 1(GLSL.std.450) 71(Reflect) 237 238
+             240:    7(fvec4) Load 9(v)
+             241:    7(fvec4) FAdd 240 239
+                              Store 9(v) 241
              242:    7(fvec4) Load 9(v)
-             243:    7(fvec4) FAdd 242 241
-                              Store 9(v) 243
-             244:    7(fvec4) Load 9(v)
-             245:    7(fvec4) DPdx 244
+             243:    7(fvec4) Load 9(v)
+             244:    6(float) Load 212(uf)
+             245:    7(fvec4) ExtInst 1(GLSL.std.450) 72(Refract) 242 243 244
              246:    7(fvec4) Load 9(v)
              247:    7(fvec4) FAdd 246 245
                               Store 9(v) 247
              248:    7(fvec4) Load 9(v)
-             249:    7(fvec4) DPdy 248
+             249:    7(fvec4) DPdx 248
              250:    7(fvec4) Load 9(v)
              251:    7(fvec4) FAdd 250 249
                               Store 9(v) 251
              252:    7(fvec4) Load 9(v)
-             253:    7(fvec4) Fwidth 252
+             253:    7(fvec4) DPdy 252
              254:    7(fvec4) Load 9(v)
              255:    7(fvec4) FAdd 254 253
                               Store 9(v) 255
-             256:     18(int) Load 22(ui)
-             257:     18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 256
-             258:     18(int) Load 20(i)
-             259:     18(int) IAdd 258 257
-                              Store 20(i) 259
-             260:     18(int) Load 20(i)
-             261:     18(int) ExtInst 1(GLSL.std.450) 7(SSign) 260
+             256:    7(fvec4) Load 9(v)
+             257:    7(fvec4) Fwidth 256
+             258:    7(fvec4) Load 9(v)
+             259:    7(fvec4) FAdd 258 257
+                              Store 9(v) 259
+             260:     18(int) Load 22(ui)
+             261:     18(int) ExtInst 1(GLSL.std.450) 5(SAbs) 260
              262:     18(int) Load 20(i)
              263:     18(int) IAdd 262 261
                               Store 20(i) 263
              264:     18(int) Load 20(i)
-             265:     18(int) Load 22(ui)
-             266:     18(int) ExtInst 1(GLSL.std.450) 39(SMin) 264 265
-             267:     18(int) Load 20(i)
-             268:     18(int) IAdd 267 266
-                              Store 20(i) 268
-             269:     18(int) Load 20(i)
-             270:     18(int) Load 22(ui)
-             271:     18(int) ExtInst 1(GLSL.std.450) 42(SMax) 269 270
-             272:     18(int) Load 20(i)
-             273:     18(int) IAdd 272 271
-                              Store 20(i) 273
-             274:     18(int) Load 20(i)
-             275:     18(int) Load 22(ui)
-             276:     18(int) Load 22(ui)
-             277:     18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 274 275 276
+             265:     18(int) ExtInst 1(GLSL.std.450) 7(SSign) 264
+             266:     18(int) Load 20(i)
+             267:     18(int) IAdd 266 265
+                              Store 20(i) 267
+             268:     18(int) Load 20(i)
+             269:     18(int) Load 22(ui)
+             270:     18(int) ExtInst 1(GLSL.std.450) 39(SMin) 268 269
+             271:     18(int) Load 20(i)
+             272:     18(int) IAdd 271 270
+                              Store 20(i) 272
+             273:     18(int) Load 20(i)
+             274:     18(int) Load 22(ui)
+             275:     18(int) ExtInst 1(GLSL.std.450) 42(SMax) 273 274
+             276:     18(int) Load 20(i)
+             277:     18(int) IAdd 276 275
+                              Store 20(i) 277
              278:     18(int) Load 20(i)
-             279:     18(int) IAdd 278 277
-                              Store 20(i) 279
-             282:    141(int) Load 281(u)
-             285:    141(int) Load 284(uui)
-             286:    141(int) ExtInst 1(GLSL.std.450) 38(UMin) 282 285
-             287:    141(int) Load 281(u)
-             288:    141(int) IAdd 287 286
-                              Store 281(u) 288
-             289:    141(int) Load 281(u)
-             290:    141(int) Load 284(uui)
-             291:    141(int) ExtInst 1(GLSL.std.450) 41(UMax) 289 290
-             292:    141(int) Load 281(u)
-             293:    141(int) IAdd 292 291
-                              Store 281(u) 293
-             294:    141(int) Load 281(u)
-             295:    141(int) Load 284(uui)
-             296:    141(int) Load 284(uui)
-             297:    141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 294 295 296
-             298:    141(int) Load 281(u)
-             299:    141(int) IAdd 298 297
-                              Store 281(u) 299
-             302:    6(float) Load 211(uf)
-             303:   178(bool) IsNan 302
-                              Store 301(b) 303
-             304:    6(float) Load 188(f)
-             305:   178(bool) IsInf 304
-                              Store 301(b) 305
-             306:    7(fvec4) Load 9(v)
-             307:    7(fvec4) Load 11(uv4)
-             308:  179(bvec4) FOrdLessThan 306 307
-             309:   178(bool) Any 308
-                              Store 301(b) 309
-             310:   178(bool) Load 301(b)
-                              SelectionMerge 312 None
-                              BranchConditional 310 311 312
-             311:               Label
-             313:    7(fvec4)   Load 9(v)
-             314:    7(fvec4)   Load 11(uv4)
-             315:  179(bvec4)   FOrdLessThanEqual 313 314
-             316:   178(bool)   Any 315
-                                Branch 312
-             312:             Label
-             317:   178(bool) Phi 310 5 316 311
-                              Store 301(b) 317
-             318:   178(bool) Load 301(b)
-                              SelectionMerge 320 None
-                              BranchConditional 318 319 320
-             319:               Label
-             321:    7(fvec4)   Load 9(v)
-             322:    7(fvec4)   Load 11(uv4)
-             323:  179(bvec4)   FOrdGreaterThan 321 322
-             324:   178(bool)   Any 323
-                                Branch 320
-             320:             Label
-             325:   178(bool) Phi 318 312 324 319
-                              Store 301(b) 325
-             326:   178(bool) Load 301(b)
-                              SelectionMerge 328 None
-                              BranchConditional 326 327 328
-             327:               Label
-             329:    7(fvec4)   Load 9(v)
-             330:    7(fvec4)   Load 11(uv4)
-             331:  179(bvec4)   FOrdGreaterThanEqual 329 330
-             332:   178(bool)   Any 331
-                                Branch 328
-             328:             Label
-             333:   178(bool) Phi 326 320 332 327
-                              Store 301(b) 333
-             334:   178(bool) Load 301(b)
-                              SelectionMerge 336 None
-                              BranchConditional 334 335 336
-             335:               Label
-             337:  179(bvec4)   Load 181(ub41)
-             339:  179(bvec4)   Load 338(ub42)
-             340:  179(bvec4)   IEqual 337 339
-             341:   178(bool)   Any 340
-                                Branch 336
-             336:             Label
-             342:   178(bool) Phi 334 328 341 335
-                              Store 301(b) 342
-             343:   178(bool) Load 301(b)
-                              SelectionMerge 345 None
-                              BranchConditional 343 344 345
-             344:               Label
-             346:  179(bvec4)   Load 181(ub41)
-             347:  179(bvec4)   Load 338(ub42)
-             348:  179(bvec4)   INotEqual 346 347
-             349:   178(bool)   Any 348
-                                Branch 345
-             345:             Label
-             350:   178(bool) Phi 343 336 349 344
-                              Store 301(b) 350
-             351:   178(bool) Load 301(b)
-             352:  179(bvec4) Load 181(ub41)
-             353:   178(bool) Any 352
-             354:   178(bool) LogicalAnd 351 353
-                              Store 301(b) 354
-             355:   178(bool) Load 301(b)
+             279:     18(int) Load 22(ui)
+             280:     18(int) Load 22(ui)
+             281:     18(int) ExtInst 1(GLSL.std.450) 45(SClamp) 278 279 280
+             282:     18(int) Load 20(i)
+             283:     18(int) IAdd 282 281
+                              Store 20(i) 283
+             286:    141(int) Load 285(u)
+             289:    141(int) Load 288(uui)
+             290:    141(int) ExtInst 1(GLSL.std.450) 38(UMin) 286 289
+             291:    141(int) Load 285(u)
+             292:    141(int) IAdd 291 290
+                              Store 285(u) 292
+             293:    141(int) Load 285(u)
+             294:    141(int) Load 288(uui)
+             295:    141(int) ExtInst 1(GLSL.std.450) 41(UMax) 293 294
+             296:    141(int) Load 285(u)
+             297:    141(int) IAdd 296 295
+                              Store 285(u) 297
+             298:    141(int) Load 285(u)
+             299:    141(int) Load 288(uui)
+             300:    141(int) Load 288(uui)
+             301:    141(int) ExtInst 1(GLSL.std.450) 44(UClamp) 298 299 300
+             302:    141(int) Load 285(u)
+             303:    141(int) IAdd 302 301
+                              Store 285(u) 303
+             306:    6(float) Load 212(uf)
+             307:   178(bool) IsNan 306
+                              Store 305(b) 307
+             308:    6(float) Load 188(f)
+             309:   178(bool) IsInf 308
+                              Store 305(b) 309
+             310:    7(fvec4) Load 9(v)
+             311:    7(fvec4) Load 11(uv4)
+             312:  179(bvec4) FOrdLessThan 310 311
+             313:   178(bool) Any 312
+                              Store 305(b) 313
+             314:   178(bool) Load 305(b)
+                              SelectionMerge 316 None
+                              BranchConditional 314 315 316
+             315:               Label
+             317:    7(fvec4)   Load 9(v)
+             318:    7(fvec4)   Load 11(uv4)
+             319:  179(bvec4)   FOrdLessThanEqual 317 318
+             320:   178(bool)   Any 319
+                                Branch 316
+             316:             Label
+             321:   178(bool) Phi 314 5 320 315
+                              Store 305(b) 321
+             322:   178(bool) Load 305(b)
+                              SelectionMerge 324 None
+                              BranchConditional 322 323 324
+             323:               Label
+             325:    7(fvec4)   Load 9(v)
+             326:    7(fvec4)   Load 11(uv4)
+             327:  179(bvec4)   FOrdGreaterThan 325 326
+             328:   178(bool)   Any 327
+                                Branch 324
+             324:             Label
+             329:   178(bool) Phi 322 316 328 323
+                              Store 305(b) 329
+             330:   178(bool) Load 305(b)
+                              SelectionMerge 332 None
+                              BranchConditional 330 331 332
+             331:               Label
+             333:    7(fvec4)   Load 9(v)
+             334:    7(fvec4)   Load 11(uv4)
+             335:  179(bvec4)   FOrdGreaterThanEqual 333 334
+             336:   178(bool)   Any 335
+                                Branch 332
+             332:             Label
+             337:   178(bool) Phi 330 324 336 331
+                              Store 305(b) 337
+             338:   178(bool) Load 305(b)
+                              SelectionMerge 340 None
+                              BranchConditional 338 339 340
+             339:               Label
+             341:  179(bvec4)   Load 181(ub41)
+             343:  179(bvec4)   Load 342(ub42)
+             344:  179(bvec4)   IEqual 341 343
+             345:   178(bool)   Any 344
+                                Branch 340
+             340:             Label
+             346:   178(bool) Phi 338 332 345 339
+                              Store 305(b) 346
+             347:   178(bool) Load 305(b)
+                              SelectionMerge 349 None
+                              BranchConditional 347 348 349
+             348:               Label
+             350:  179(bvec4)   Load 181(ub41)
+             351:  179(bvec4)   Load 342(ub42)
+             352:  179(bvec4)   INotEqual 350 351
+             353:   178(bool)   Any 352
+                                Branch 349
+             349:             Label
+             354:   178(bool) Phi 347 340 353 348
+                              Store 305(b) 354
+             355:   178(bool) Load 305(b)
              356:  179(bvec4) Load 181(ub41)
-             357:   178(bool) All 356
+             357:   178(bool) Any 356
              358:   178(bool) LogicalAnd 355 357
-                              Store 301(b) 358
-             359:   178(bool) Load 301(b)
-                              SelectionMerge 361 None
-                              BranchConditional 359 360 361
-             360:               Label
-             362:  179(bvec4)   Load 181(ub41)
-             363:  179(bvec4)   LogicalNot 362
-             364:   178(bool)   Any 363
-                                Branch 361
-             361:             Label
-             365:   178(bool) Phi 359 345 364 360
-                              Store 301(b) 365
-             366:     18(int) Load 20(i)
-             367:     18(int) Load 22(ui)
-             368:     18(int) IAdd 366 367
-             369:     18(int) Load 20(i)
-             370:     18(int) IMul 368 369
+                              Store 305(b) 358
+             359:   178(bool) Load 305(b)
+             360:  179(bvec4) Load 181(ub41)
+             361:   178(bool) All 360
+             362:   178(bool) LogicalAnd 359 361
+                              Store 305(b) 362
+             363:   178(bool) Load 305(b)
+                              SelectionMerge 365 None
+                              BranchConditional 363 364 365
+             364:               Label
+             366:  179(bvec4)   Load 181(ub41)
+             367:  179(bvec4)   LogicalNot 366
+             368:   178(bool)   Any 367
+                                Branch 365
+             365:             Label
+             369:   178(bool) Phi 363 349 368 364
+                              Store 305(b) 369
+             370:     18(int) Load 20(i)
              371:     18(int) Load 22(ui)
-             372:     18(int) ISub 370 371
+             372:     18(int) IAdd 370 371
              373:     18(int) Load 20(i)
-             374:     18(int) SDiv 372 373
-                              Store 20(i) 374
-             375:     18(int) Load 20(i)
-             376:     18(int) Load 22(ui)
-             377:     18(int) SMod 375 376
-                              Store 20(i) 377
-             378:     18(int) Load 20(i)
-             379:     18(int) Load 22(ui)
-             380:   178(bool) IEqual 378 379
-             381:   178(bool) LogicalNot 380
-                              SelectionMerge 383 None
-                              BranchConditional 381 382 383
-             382:               Label
-             384:     18(int)   Load 20(i)
-             385:     18(int)   Load 22(ui)
-             386:   178(bool)   INotEqual 384 385
-             387:     18(int)   Load 20(i)
-             388:     18(int)   Load 22(ui)
-             389:   178(bool)   IEqual 387 388
-             390:   178(bool)   LogicalAnd 386 389
+             374:     18(int) IMul 372 373
+             375:     18(int) Load 22(ui)
+             376:     18(int) ISub 374 375
+             377:     18(int) Load 20(i)
+             378:     18(int) SDiv 376 377
+                              Store 20(i) 378
+             379:     18(int) Load 20(i)
+             380:     18(int) Load 22(ui)
+             381:     18(int) SMod 379 380
+                              Store 20(i) 381
+             382:     18(int) Load 20(i)
+             383:     18(int) Load 22(ui)
+             384:   178(bool) IEqual 382 383
+             385:   178(bool) LogicalNot 384
+                              SelectionMerge 387 None
+                              BranchConditional 385 386 387
+             386:               Label
+             388:     18(int)   Load 20(i)
+             389:     18(int)   Load 22(ui)
+             390:   178(bool)   INotEqual 388 389
              391:     18(int)   Load 20(i)
-             393:   178(bool)   INotEqual 391 392
-             394:   178(bool)   LogicalNotEqual 390 393
-                                Branch 383
-             383:             Label
-             395:   178(bool) Phi 380 361 394 382
-                              SelectionMerge 397 None
-                              BranchConditional 395 396 397
-             396:               Label
-             398:     18(int)   Load 20(i)
-             400:     18(int)   IAdd 398 399
-                                Store 20(i) 400
-                                Branch 397
-             397:             Label
-             401:    6(float) Load 211(uf)
-             402:    6(float) Load 211(uf)
-             403:    6(float) FAdd 401 402
-             404:    6(float) Load 211(uf)
-             405:    6(float) FMul 403 404
-             406:    6(float) Load 211(uf)
-             407:    6(float) FSub 405 406
-             408:    6(float) Load 211(uf)
-             409:    6(float) FDiv 407 408
-                              Store 188(f) 409
-             410:    7(fvec4) Load 9(v)
-             411:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 410
-             412:    6(float) Load 188(f)
-             413:    6(float) FAdd 412 411
+             392:     18(int)   Load 22(ui)
+             393:   178(bool)   IEqual 391 392
+             394:   178(bool)   LogicalAnd 390 393
+             395:     18(int)   Load 20(i)
+             397:   178(bool)   INotEqual 395 396
+             398:   178(bool)   LogicalNotEqual 394 397
+                                Branch 387
+             387:             Label
+             399:   178(bool) Phi 384 365 398 386
+                              SelectionMerge 401 None
+                              BranchConditional 399 400 401
+             400:               Label
+             402:     18(int)   Load 20(i)
+             404:     18(int)   IAdd 402 403
+                                Store 20(i) 404
+                                Branch 401
+             401:             Label
+             405:    6(float) Load 212(uf)
+             406:    6(float) Load 212(uf)
+             407:    6(float) FAdd 405 406
+             408:    6(float) Load 212(uf)
+             409:    6(float) FMul 407 408
+             410:    6(float) Load 212(uf)
+             411:    6(float) FSub 409 410
+             412:    6(float) Load 212(uf)
+             413:    6(float) FDiv 411 412
                               Store 188(f) 413
              414:    7(fvec4) Load 9(v)
-             415:    7(fvec4) Load 9(v)
-             416:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 414 415
-             417:    6(float) Load 188(f)
-             418:    6(float) FAdd 417 416
-                              Store 188(f) 418
+             415:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 414
+             416:    6(float) Load 188(f)
+             417:    6(float) FAdd 416 415
+                              Store 188(f) 417
+             418:    7(fvec4) Load 9(v)
              419:    7(fvec4) Load 9(v)
-             420:    7(fvec4) Load 9(v)
-             421:    6(float) Dot 419 420
-             422:    6(float) Load 188(f)
-             423:    6(float) FAdd 422 421
-                              Store 188(f) 423
-             424:    6(float) Load 188(f)
-             425:    6(float) Load 211(uf)
-             426:    6(float) FMul 424 425
-             427:    6(float) Load 188(f)
-             428:    6(float) FAdd 427 426
-                              Store 188(f) 428
-             430:    7(fvec4) Load 9(v)
-             431:  429(fvec3) VectorShuffle 430 430 0 1 2
-             432:    7(fvec4) Load 9(v)
-             433:  429(fvec3) VectorShuffle 432 432 0 1 2
-             434:  429(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 431 433
-             435:    6(float) CompositeExtract 434 0
-             436:    6(float) Load 188(f)
-             437:    6(float) FAdd 436 435
-                              Store 188(f) 437
-             438:    6(float) Load 188(f)
-             439:    6(float) Load 211(uf)
-             440:   178(bool) FOrdEqual 438 439
-             441:   178(bool) LogicalNot 440
-                              SelectionMerge 443 None
-                              BranchConditional 441 442 443
-             442:               Label
-             444:    6(float)   Load 188(f)
-             445:    6(float)   Load 211(uf)
-             446:   178(bool)   FOrdNotEqual 444 445
-             447:    6(float)   Load 188(f)
-             449:   178(bool)   FOrdNotEqual 447 448
-             450:   178(bool)   LogicalAnd 446 449
-                                Branch 443
-             443:             Label
-             451:   178(bool) Phi 440 397 450 442
-                              SelectionMerge 453 None
-                              BranchConditional 451 452 453
-             452:               Label
-             454:    6(float)   Load 188(f)
-             456:    6(float)   FAdd 454 455
-                                Store 188(f) 456
-                                Branch 453
-             453:             Label
-             457:     18(int) Load 22(ui)
-             458:     18(int) Load 20(i)
-             459:     18(int) BitwiseAnd 458 457
-                              Store 20(i) 459
-             461:     18(int) Load 20(i)
-             462:     18(int) BitwiseOr 461 460
-                              Store 20(i) 462
-             463:     18(int) Load 22(ui)
-             464:     18(int) Load 20(i)
-             465:     18(int) BitwiseXor 464 463
-                              Store 20(i) 465
-             467:     18(int) Load 20(i)
-             468:     18(int) SMod 467 466
-                              Store 20(i) 468
-             469:     18(int) Load 20(i)
-             470:     18(int) ShiftRightArithmetic 469 392
-                              Store 20(i) 470
-             471:     18(int) Load 22(ui)
-             472:     18(int) Load 20(i)
-             473:     18(int) ShiftLeftLogical 472 471
-                              Store 20(i) 473
-             474:     18(int) Load 20(i)
-             475:     18(int) Not 474
-                              Store 20(i) 475
-             476:   178(bool) Load 301(b)
-             477:   178(bool) LogicalNot 476
-                              Store 301(b) 477
-             481:   178(bool) Load 301(b)
-                              SelectionMerge 483 None
-                              BranchConditional 481 482 492
-             482:               Label
-             484:     18(int)   Load 20(i)
-             485:    6(float)   ConvertSToF 484
-             486:    7(fvec4)   CompositeConstruct 485 485 485 485
-             487:    6(float)   Load 188(f)
-             488:    7(fvec4)   CompositeConstruct 487 487 487 487
-             489:    7(fvec4)   FAdd 486 488
-             490:    7(fvec4)   Load 9(v)
-             491:    7(fvec4)   FAdd 489 490
-                                Store 480 491
-                                Branch 483
-             492:               Label
-             493:    7(fvec4)   Load 9(v)
-                                Store 480 493
-                                Branch 483
-             483:             Label
-             494:    7(fvec4) Load 480
-                              Store 479(FragColor) 494
+             420:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 418 419
+             421:    6(float) Load 188(f)
+             422:    6(float) FAdd 421 420
+                              Store 188(f) 422
+             423:    7(fvec4) Load 9(v)
+             424:    7(fvec4) Load 9(v)
+             425:    6(float) Dot 423 424
+             426:    6(float) Load 188(f)
+             427:    6(float) FAdd 426 425
+                              Store 188(f) 427
+             428:    6(float) Load 188(f)
+             429:    6(float) Load 212(uf)
+             430:    6(float) FMul 428 429
+             431:    6(float) Load 188(f)
+             432:    6(float) FAdd 431 430
+                              Store 188(f) 432
+             434:    7(fvec4) Load 9(v)
+             435:  433(fvec3) VectorShuffle 434 434 0 1 2
+             436:    7(fvec4) Load 9(v)
+             437:  433(fvec3) VectorShuffle 436 436 0 1 2
+             438:  433(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 435 437
+             439:    6(float) CompositeExtract 438 0
+             440:    6(float) Load 188(f)
+             441:    6(float) FAdd 440 439
+                              Store 188(f) 441
+             442:    6(float) Load 188(f)
+             443:    6(float) Load 212(uf)
+             444:   178(bool) FOrdEqual 442 443
+             445:   178(bool) LogicalNot 444
+                              SelectionMerge 447 None
+                              BranchConditional 445 446 447
+             446:               Label
+             448:    6(float)   Load 188(f)
+             449:    6(float)   Load 212(uf)
+             450:   178(bool)   FOrdNotEqual 448 449
+             451:    6(float)   Load 188(f)
+             453:   178(bool)   FOrdNotEqual 451 452
+             454:   178(bool)   LogicalAnd 450 453
+                                Branch 447
+             447:             Label
+             455:   178(bool) Phi 444 401 454 446
+                              SelectionMerge 457 None
+                              BranchConditional 455 456 457
+             456:               Label
+             458:    6(float)   Load 188(f)
+             460:    6(float)   FAdd 458 459
+                                Store 188(f) 460
+                                Branch 457
+             457:             Label
+             461:     18(int) Load 22(ui)
+             462:     18(int) Load 20(i)
+             463:     18(int) BitwiseAnd 462 461
+                              Store 20(i) 463
+             465:     18(int) Load 20(i)
+             466:     18(int) BitwiseOr 465 464
+                              Store 20(i) 466
+             467:     18(int) Load 22(ui)
+             468:     18(int) Load 20(i)
+             469:     18(int) BitwiseXor 468 467
+                              Store 20(i) 469
+             471:     18(int) Load 20(i)
+             472:     18(int) SMod 471 470
+                              Store 20(i) 472
+             473:     18(int) Load 20(i)
+             474:     18(int) ShiftRightArithmetic 473 396
+                              Store 20(i) 474
+             475:     18(int) Load 22(ui)
+             476:     18(int) Load 20(i)
+             477:     18(int) ShiftLeftLogical 476 475
+                              Store 20(i) 477
+             478:     18(int) Load 20(i)
+             479:     18(int) Not 478
+                              Store 20(i) 479
+             480:   178(bool) Load 305(b)
+             481:   178(bool) LogicalNot 480
+                              Store 305(b) 481
+             485:   178(bool) Load 305(b)
+                              SelectionMerge 487 None
+                              BranchConditional 485 486 496
+             486:               Label
+             488:     18(int)   Load 20(i)
+             489:    6(float)   ConvertSToF 488
+             490:    7(fvec4)   CompositeConstruct 489 489 489 489
+             491:    6(float)   Load 188(f)
+             492:    7(fvec4)   CompositeConstruct 491 491 491 491
+             493:    7(fvec4)   FAdd 490 492
+             494:    7(fvec4)   Load 9(v)
+             495:    7(fvec4)   FAdd 493 494
+                                Store 484 495
+                                Branch 487
+             496:               Label
+             497:    7(fvec4)   Load 9(v)
+                                Store 484 497
+                                Branch 487
+             487:             Label
+             498:    7(fvec4) Load 484
+                              Store 483(FragColor) 498
                               Return
                               FunctionEnd
index 8bed807..94e1eac 100755 (executable)
@@ -7,7 +7,7 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 55
+// Id's are bound by 56
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -82,7 +82,8 @@ Linked fragment stage:
               51:    6(float) Load 50(blend)
               52:    6(float) Load 8(blendscale)
               53:    6(float) FMul 51 52
-              54:   10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 53
-                              Store 44(gl_FragColor) 54
+              54:   10(fvec4) CompositeConstruct 53 53 53 53
+              55:   10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 45 48 54
+                              Store 44(gl_FragColor) 55
                               Return
                               FunctionEnd
index cbbd0c4..b47200e 100755 (executable)
@@ -8,12 +8,12 @@ Linked fragment stage:
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 290
+// Id's are bound by 291
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 289 47
+                              EntryPoint Fragment 4  "main" 290 47
                               ExecutionMode 4 OriginLowerLeft
                               Source GLSL 130
                               Name 4  "main"
@@ -39,8 +39,8 @@ Linked fragment stage:
                               Name 276  "gl_FragColor"
                               Name 279  "u"
                               Name 282  "blend"
-                              Name 288  "scale"
-                              Name 289  "t"
+                              Name 289  "scale"
+                              Name 290  "t"
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -103,9 +103,9 @@ Linked fragment stage:
           279(u):    278(ptr) Variable UniformConstant
              281:             TypePointer UniformConstant 6(float)
       282(blend):    281(ptr) Variable UniformConstant
-             287:             TypePointer UniformConstant 45(fvec2)
-      288(scale):    287(ptr) Variable UniformConstant
-          289(t):     46(ptr) Variable Input
+             288:             TypePointer UniformConstant 45(fvec2)
+      289(scale):    288(ptr) Variable UniformConstant
+          290(t):     46(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
    8(blendscale):      7(ptr) Variable Function
@@ -370,7 +370,8 @@ Linked fragment stage:
              283:    6(float) Load 282(blend)
              284:    6(float) Load 8(blendscale)
              285:    6(float) FMul 283 284
-             286:   22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 285
-                              Store 276(gl_FragColor) 286
+             286:   22(fvec4) CompositeConstruct 285 285 285 285
+             287:   22(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 277 280 286
+                              Store 276(gl_FragColor) 287
                               Return
                               FunctionEnd
index ccef7b9..542f8f3 100644 (file)
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "SPIRV99.844"
+#define GLSLANG_REVISION "SPIRV99.845"
 #define GLSLANG_DATE "13-Dec-2015"