From e7c83cfb8c35b8bd3a9e39b619c4a8618f8f80f4 Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sun, 13 Dec 2015 13:34:37 -0700 Subject: [PATCH] SPV GLSL.std.450: Add needed smear operations for min, max, clamp, mix, step, and smoothstep. --- SPIRV/GlslangToSpv.cpp | 8 + Test/baseResults/spv.Operations.frag.out | 752 ++++++++++++++++--------------- Test/baseResults/spv.test.frag.out | 7 +- Test/baseResults/spv.texture.frag.out | 19 +- glslang/Include/revision.h | 2 +- 5 files changed, 401 insertions(+), 387 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 78e9e6d..e1babc1 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -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: diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out index 3685b73..16b0013 100755 --- a/Test/baseResults/spv.Operations.frag.out +++ b/Test/baseResults/spv.Operations.frag.out @@ -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 diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out index 8bed807..94e1eac 100755 --- a/Test/baseResults/spv.test.frag.out +++ b/Test/baseResults/spv.test.frag.out @@ -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 diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out index cbbd0c4..b47200e 100755 --- a/Test/baseResults/spv.texture.frag.out +++ b/Test/baseResults/spv.texture.frag.out @@ -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 diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h index ccef7b9..542f8f3 100644 --- a/glslang/Include/revision.h +++ b/glslang/Include/revision.h @@ -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" -- 2.7.4