From 39374dadb51aee9f4dcfa9f38d589259bb4f0d14 Mon Sep 17 00:00:00 2001 From: John Kessenich <cepheus@frii.com> Date: Fri, 15 May 2015 21:32:46 +0000 Subject: [PATCH] glslang SPV tests: Add a set of SPV tests. git-svn-id: https://cvs.khronos.org/svn/repos/ogl/trunk/ecosystem/public/sdk/tools/glslang@31212 e7fa87d3-cd2b-0410-9028-fcbf551c1848 --- Test/baseResults/spv.100ops.frag.out | 89 ++ Test/baseResults/spv.130.frag.out | 10 + Test/baseResults/spv.140.frag.out | 151 +++ Test/baseResults/spv.140.vert.out | 30 + Test/baseResults/spv.150.geom.out | 146 +++ Test/baseResults/spv.150.vert.out | 108 ++ Test/baseResults/spv.300BuiltIns.vert.out | 85 ++ Test/baseResults/spv.300layout.frag.out | 76 ++ Test/baseResults/spv.300layout.vert.out | 9 + Test/baseResults/spv.300layoutp.vert.out | 211 ++++ Test/baseResults/spv.310.comp.out | 10 + Test/baseResults/spv.330.geom.out | 72 ++ Test/baseResults/spv.400.frag.out | 10 + Test/baseResults/spv.400.tesc.out | 176 +++ Test/baseResults/spv.400.tese.out | 191 +++ Test/baseResults/spv.420.geom.out | 10 + Test/baseResults/spv.430.vert.out | 135 ++ Test/baseResults/spv.Operations.frag.out | 516 ++++++++ Test/baseResults/spv.aggOps.frag.out | 11 + Test/baseResults/spv.always-discard.frag.out | 133 ++ Test/baseResults/spv.always-discard2.frag.out | 67 + .../spv.conditionalDiscard.frag.out | 64 + Test/baseResults/spv.conversion.frag.out | 580 +++++++++ Test/baseResults/spv.dataOut.frag.out | 45 + Test/baseResults/spv.dataOutIndirect.frag.out | 48 + Test/baseResults/spv.dataOutIndirect.vert.out | 76 ++ Test/baseResults/spv.deepRvalue.frag.out | 9 + Test/baseResults/spv.depthOut.frag.out | 49 + Test/baseResults/spv.discard-dce.frag.out | 131 ++ Test/baseResults/spv.doWhileLoop.frag.out | 68 + Test/baseResults/spv.double.comp.out | 110 ++ .../spv.earlyReturnDiscard.frag.out | 181 +++ Test/baseResults/spv.flowControl.frag.out | 81 ++ Test/baseResults/spv.forLoop.frag.out | 200 +++ Test/baseResults/spv.forwardFun.frag.out | 109 ++ Test/baseResults/spv.functionCall.frag.out | 132 ++ .../spv.functionSemantics.frag.out | 240 ++++ Test/baseResults/spv.length.frag.out | 61 + Test/baseResults/spv.localAggregates.frag.out | 220 ++++ Test/baseResults/spv.loops.frag.out | 1113 +++++++++++++++++ Test/baseResults/spv.loopsArtificial.frag.out | 352 ++++++ Test/baseResults/spv.matFun.vert.out | 142 +++ Test/baseResults/spv.matrix.frag.out | 12 + Test/baseResults/spv.matrix2.frag.out | 12 + Test/baseResults/spv.newTexture.frag.out | 10 + Test/baseResults/spv.nonSquare.vert.out | 123 ++ Test/baseResults/spv.precision.frag.out | 182 +++ Test/baseResults/spv.prepost.frag.out | 153 +++ Test/baseResults/spv.qualifiers.vert.out | 67 + Test/baseResults/spv.set.vert.out | 64 + .../spv.simpleFunctionCall.frag.out | 53 + Test/baseResults/spv.simpleMat.vert.out | 78 ++ .../baseResults/spv.structAssignment.frag.out | 98 ++ Test/baseResults/spv.structDeref.frag.out | 193 +++ Test/baseResults/spv.structure.frag.out | 105 ++ Test/baseResults/spv.switch.frag.out | 382 ++++++ Test/baseResults/spv.swizzle.frag.out | 179 +++ Test/baseResults/spv.test.frag.out | 90 ++ Test/baseResults/spv.test.vert.out | 10 + Test/baseResults/spv.texture.frag.out | 11 + Test/baseResults/spv.texture.vert.out | 186 +++ Test/baseResults/spv.types.frag.out | 347 +++++ Test/baseResults/spv.uint.frag.out | 357 ++++++ Test/baseResults/spv.uniformArray.frag.out | 82 ++ .../spv.variableArrayIndex.frag.out | 147 +++ Test/baseResults/spv.varyingArray.frag.out | 99 ++ .../spv.varyingArrayIndirect.frag.out | 109 ++ Test/baseResults/spv.voidFunction.frag.out | 81 ++ Test/baseResults/spv.whileLoop.frag.out | 64 + Test/spv.100ops.frag | 25 + Test/spv.130.frag | 119 ++ Test/spv.140.frag | 41 + Test/spv.150.geom | 39 + Test/spv.150.vert | 39 + Test/spv.300BuiltIns.vert | 17 + Test/spv.300layout.frag | 22 + Test/spv.300layout.vert | 49 + Test/spv.300layoutp.vert | 49 + Test/spv.310.comp | 37 + Test/spv.330.geom | 26 + Test/spv.400.frag | 42 + Test/spv.400.tesc | 43 + Test/spv.400.tese | 52 + Test/spv.420.geom | 43 + Test/spv.430.vert | 32 + Test/spv.Operations.frag | 166 +++ Test/spv.aggOps.frag | 51 + Test/spv.always-discard.frag | 36 + Test/spv.always-discard2.frag | 19 + Test/spv.conditionalDiscard.frag | 14 + Test/spv.conversion.frag | 112 ++ Test/spv.dataOut.frag | 8 + Test/spv.dataOutIndirect.frag | 10 + Test/spv.dataOutIndirect.vert | 12 + Test/spv.deepRvalue.frag | 36 + Test/spv.depthOut.frag | 10 + Test/spv.discard-dce.frag | 35 + Test/spv.doWhileLoop.frag | 16 + Test/spv.earlyReturnDiscard.frag | 102 ++ Test/spv.flowControl.frag | 23 + Test/spv.forLoop.frag | 41 + Test/spv.forwardFun.frag | 39 + Test/spv.functionCall.frag | 44 + Test/spv.functionSemantics.frag | 63 + Test/spv.length.frag | 18 + Test/spv.localAggregates.frag | 72 ++ Test/spv.loops.frag | 320 +++++ Test/spv.loopsArtificial.frag | 96 ++ Test/spv.matFun.vert | 26 + Test/spv.matrix.frag | 55 + Test/spv.matrix2.frag | 50 + Test/spv.newTexture.frag | 68 + Test/spv.nonSquare.vert | 25 + Test/spv.precision.frag | 50 + Test/spv.prepost.frag | 38 + Test/spv.qualifiers.vert | 19 + Test/spv.simpleFunctionCall.frag | 15 + Test/spv.simpleMat.vert | 19 + Test/spv.structAssignment.frag | 39 + Test/spv.structDeref.frag | 71 ++ Test/spv.structure.frag | 31 + Test/spv.switch.frag | 133 ++ Test/spv.swizzle.frag | 52 + Test/spv.test.frag | 22 + Test/spv.test.vert | 14 + Test/spv.texture.frag | 73 ++ Test/spv.texture.vert | 39 + Test/spv.types.frag | 81 ++ Test/spv.uint.frag | 99 ++ Test/spv.uniformArray.frag | 16 + Test/spv.variableArrayIndex.frag | 48 + Test/spv.varyingArray.frag | 19 + Test/spv.varyingArrayIndirect.frag | 21 + Test/spv.voidFunction.frag | 34 + Test/spv.whileLoop.frag | 16 + Test/test-spirv-list | 71 ++ 136 files changed, 12813 insertions(+) create mode 100644 Test/baseResults/spv.100ops.frag.out create mode 100644 Test/baseResults/spv.130.frag.out create mode 100644 Test/baseResults/spv.140.frag.out create mode 100644 Test/baseResults/spv.140.vert.out create mode 100644 Test/baseResults/spv.150.geom.out create mode 100644 Test/baseResults/spv.150.vert.out create mode 100644 Test/baseResults/spv.300BuiltIns.vert.out create mode 100644 Test/baseResults/spv.300layout.frag.out create mode 100644 Test/baseResults/spv.300layout.vert.out create mode 100644 Test/baseResults/spv.300layoutp.vert.out create mode 100644 Test/baseResults/spv.310.comp.out create mode 100644 Test/baseResults/spv.330.geom.out create mode 100644 Test/baseResults/spv.400.frag.out create mode 100644 Test/baseResults/spv.400.tesc.out create mode 100644 Test/baseResults/spv.400.tese.out create mode 100644 Test/baseResults/spv.420.geom.out create mode 100644 Test/baseResults/spv.430.vert.out create mode 100644 Test/baseResults/spv.Operations.frag.out create mode 100644 Test/baseResults/spv.aggOps.frag.out create mode 100644 Test/baseResults/spv.always-discard.frag.out create mode 100644 Test/baseResults/spv.always-discard2.frag.out create mode 100644 Test/baseResults/spv.conditionalDiscard.frag.out create mode 100644 Test/baseResults/spv.conversion.frag.out create mode 100644 Test/baseResults/spv.dataOut.frag.out create mode 100644 Test/baseResults/spv.dataOutIndirect.frag.out create mode 100644 Test/baseResults/spv.dataOutIndirect.vert.out create mode 100644 Test/baseResults/spv.deepRvalue.frag.out create mode 100644 Test/baseResults/spv.depthOut.frag.out create mode 100644 Test/baseResults/spv.discard-dce.frag.out create mode 100644 Test/baseResults/spv.doWhileLoop.frag.out create mode 100644 Test/baseResults/spv.double.comp.out create mode 100644 Test/baseResults/spv.earlyReturnDiscard.frag.out create mode 100644 Test/baseResults/spv.flowControl.frag.out create mode 100644 Test/baseResults/spv.forLoop.frag.out create mode 100644 Test/baseResults/spv.forwardFun.frag.out create mode 100644 Test/baseResults/spv.functionCall.frag.out create mode 100644 Test/baseResults/spv.functionSemantics.frag.out create mode 100644 Test/baseResults/spv.length.frag.out create mode 100644 Test/baseResults/spv.localAggregates.frag.out create mode 100644 Test/baseResults/spv.loops.frag.out create mode 100644 Test/baseResults/spv.loopsArtificial.frag.out create mode 100644 Test/baseResults/spv.matFun.vert.out create mode 100644 Test/baseResults/spv.matrix.frag.out create mode 100644 Test/baseResults/spv.matrix2.frag.out create mode 100644 Test/baseResults/spv.newTexture.frag.out create mode 100644 Test/baseResults/spv.nonSquare.vert.out create mode 100644 Test/baseResults/spv.precision.frag.out create mode 100644 Test/baseResults/spv.prepost.frag.out create mode 100644 Test/baseResults/spv.qualifiers.vert.out create mode 100644 Test/baseResults/spv.set.vert.out create mode 100644 Test/baseResults/spv.simpleFunctionCall.frag.out create mode 100644 Test/baseResults/spv.simpleMat.vert.out create mode 100644 Test/baseResults/spv.structAssignment.frag.out create mode 100644 Test/baseResults/spv.structDeref.frag.out create mode 100644 Test/baseResults/spv.structure.frag.out create mode 100644 Test/baseResults/spv.switch.frag.out create mode 100644 Test/baseResults/spv.swizzle.frag.out create mode 100644 Test/baseResults/spv.test.frag.out create mode 100644 Test/baseResults/spv.test.vert.out create mode 100644 Test/baseResults/spv.texture.frag.out create mode 100644 Test/baseResults/spv.texture.vert.out create mode 100644 Test/baseResults/spv.types.frag.out create mode 100644 Test/baseResults/spv.uint.frag.out create mode 100644 Test/baseResults/spv.uniformArray.frag.out create mode 100644 Test/baseResults/spv.variableArrayIndex.frag.out create mode 100644 Test/baseResults/spv.varyingArray.frag.out create mode 100644 Test/baseResults/spv.varyingArrayIndirect.frag.out create mode 100644 Test/baseResults/spv.voidFunction.frag.out create mode 100644 Test/baseResults/spv.whileLoop.frag.out create mode 100644 Test/spv.100ops.frag create mode 100644 Test/spv.130.frag create mode 100644 Test/spv.140.frag create mode 100644 Test/spv.150.geom create mode 100644 Test/spv.150.vert create mode 100644 Test/spv.300BuiltIns.vert create mode 100644 Test/spv.300layout.frag create mode 100644 Test/spv.300layout.vert create mode 100644 Test/spv.300layoutp.vert create mode 100644 Test/spv.310.comp create mode 100644 Test/spv.330.geom create mode 100644 Test/spv.400.frag create mode 100644 Test/spv.400.tesc create mode 100644 Test/spv.400.tese create mode 100644 Test/spv.420.geom create mode 100644 Test/spv.430.vert create mode 100644 Test/spv.Operations.frag create mode 100644 Test/spv.aggOps.frag create mode 100644 Test/spv.always-discard.frag create mode 100644 Test/spv.always-discard2.frag create mode 100644 Test/spv.conditionalDiscard.frag create mode 100644 Test/spv.conversion.frag create mode 100644 Test/spv.dataOut.frag create mode 100644 Test/spv.dataOutIndirect.frag create mode 100644 Test/spv.dataOutIndirect.vert create mode 100644 Test/spv.deepRvalue.frag create mode 100644 Test/spv.depthOut.frag create mode 100644 Test/spv.discard-dce.frag create mode 100644 Test/spv.doWhileLoop.frag create mode 100644 Test/spv.earlyReturnDiscard.frag create mode 100644 Test/spv.flowControl.frag create mode 100644 Test/spv.forLoop.frag create mode 100644 Test/spv.forwardFun.frag create mode 100644 Test/spv.functionCall.frag create mode 100644 Test/spv.functionSemantics.frag create mode 100644 Test/spv.length.frag create mode 100644 Test/spv.localAggregates.frag create mode 100644 Test/spv.loops.frag create mode 100644 Test/spv.loopsArtificial.frag create mode 100644 Test/spv.matFun.vert create mode 100644 Test/spv.matrix.frag create mode 100644 Test/spv.matrix2.frag create mode 100644 Test/spv.newTexture.frag create mode 100644 Test/spv.nonSquare.vert create mode 100644 Test/spv.precision.frag create mode 100644 Test/spv.prepost.frag create mode 100644 Test/spv.qualifiers.vert create mode 100644 Test/spv.simpleFunctionCall.frag create mode 100644 Test/spv.simpleMat.vert create mode 100644 Test/spv.structAssignment.frag create mode 100644 Test/spv.structDeref.frag create mode 100644 Test/spv.structure.frag create mode 100644 Test/spv.switch.frag create mode 100644 Test/spv.swizzle.frag create mode 100644 Test/spv.test.frag create mode 100644 Test/spv.test.vert create mode 100644 Test/spv.texture.frag create mode 100644 Test/spv.texture.vert create mode 100644 Test/spv.types.frag create mode 100644 Test/spv.uint.frag create mode 100644 Test/spv.uniformArray.frag create mode 100644 Test/spv.variableArrayIndex.frag create mode 100644 Test/spv.varyingArray.frag create mode 100644 Test/spv.varyingArrayIndirect.frag create mode 100644 Test/spv.voidFunction.frag create mode 100644 Test/spv.whileLoop.frag diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out new file mode 100644 index 000000000..d000faab6 --- /dev/null +++ b/Test/baseResults/spv.100ops.frag.out @@ -0,0 +1,89 @@ +spv.100ops.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 48 + + Source GLSL 100 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "foo(" + Name 12 "face1" + Name 14 "face2" + Name 18 "z" + Name 22 "low" + Name 27 "high" + Name 37 "gl_FragColor" + Decorate 12(face1) PrecisionLow + Decorate 14(face2) PrecisionLow + Decorate 18(z) PrecisionMedium + Decorate 22(low) PrecisionMedium + Decorate 27(high) PrecisionMedium + Decorate 37(gl_FragColor) PrecisionMedium + Decorate 37(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeFunction 7(float) + 11: TypePointer PrivateGlobal 7(float) + 12(face1): 11(ptr) Variable PrivateGlobal + 13: 7(float) Constant 1093664768 + 14(face2): 11(ptr) Variable PrivateGlobal + 15: 7(float) Constant 3221225472 + 16: TypeInt 32 1 + 17: TypePointer Function 16(int) + 19: 16(int) Constant 3 + 20: 16(int) Constant 2 + 21: TypePointer UniformConstant 16(int) + 22(low): 21(ptr) Variable UniformConstant + 25: 16(int) Constant 1 + 27(high): 21(ptr) Variable UniformConstant + 29: TypeBool + 35: TypeVector 7(float) 4 + 36: TypePointer Output 35(fvec4) +37(gl_FragColor): 36(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 18(z): 17(ptr) Variable Function + Store 12(face1) 13 + Store 14(face2) 15 + Store 18(z) 19 + 23: 16(int) Load 22(low) + 24: 16(int) IMul 20 23 + 26: 16(int) IAdd 24 25 + 28: 16(int) Load 27(high) + 30: 29(bool) SLessThan 26 28 + SelectionMerge 32 None + BranchConditional 30 31 32 + 31: Label + 33: 16(int) Load 18(z) + 34: 16(int) IAdd 33 25 + Store 18(z) 34 + Branch 32 + 32: Label + 38: 7(float) Load 12(face1) + 39: 16(int) Load 18(z) + 40: 7(float) ConvertSToF 39 + 41: 35(fvec4) CompositeConstruct 40 40 40 40 + 42: 35(fvec4) VectorTimesScalar 38 41 + 43: 7(float) FunctionCall 9(foo() + 44: 35(fvec4) CompositeConstruct 43 43 43 43 + 45: 35(fvec4) FAdd 42 44 + Store 37(gl_FragColor) 45 + Branch 6 + 6: Label + Return + FunctionEnd + 9(foo(): 7(float) Function None 8 + 10: Label + 46: 7(float) Load 14(face2) + ReturnValue 46 + FunctionEnd diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out new file mode 100644 index 000000000..123a45b53 --- /dev/null +++ b/Test/baseResults/spv.130.frag.out @@ -0,0 +1,10 @@ +spv.130.frag +WARNING: 0:34: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5 + + + +Linked fragment stage: + + + +Missing functionality: texture gather diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out new file mode 100644 index 000000000..3c43631d6 --- /dev/null +++ b/Test/baseResults/spv.140.frag.out @@ -0,0 +1,151 @@ +spv.140.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 90 + + Source GLSL 140 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "foo(" + Name 12 "i1" + Name 17 "gl_FrontFacing" + Name 25 "i2" + Name 29 "o" + Name 34 "gl_ClipDistance" + Name 43 "k" + Name 54 "sampR" + Name 60 "sampB" + Name 83 "samp2Da" + Name 87 "bn" + MemberName 87(bn) 0 "matra" + MemberName 87(bn) 1 "matca" + MemberName 87(bn) 2 "matr" + MemberName 87(bn) 3 "matc" + MemberName 87(bn) 4 "matrdef" + Name 89 "" + Decorate 17(gl_FrontFacing) BuiltIn FrontFacing + Decorate 34(gl_ClipDistance) Smooth + Decorate 34(gl_ClipDistance) BuiltIn ClipDistance + Decorate 43(k) Smooth + Decorate 83(samp2Da) NoStaticUse + MemberDecorate 87(bn) 0 RowMajor + MemberDecorate 87(bn) 1 ColMajor + MemberDecorate 87(bn) 2 RowMajor + MemberDecorate 87(bn) 3 ColMajor + MemberDecorate 87(bn) 4 RowMajor + Decorate 87(bn) GLSLStd140 + Decorate 87(bn) Block + Decorate 89 NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeFunction 7(float) + 11: TypePointer PrivateGlobal 7(float) + 12(i1): 11(ptr) Variable PrivateGlobal + 13: TypePointer Function 7(float) + 15: TypeBool + 16: TypePointer Input 15(bool) +17(gl_FrontFacing): 16(ptr) Variable Input + 21: 7(float) Constant 3221225472 + 23: 7(float) Constant 1073741824 + 25(i2): 11(ptr) Variable PrivateGlobal + 26: 7(float) Constant 1120665600 + 27: TypeVector 7(float) 4 + 28: TypePointer Output 27(fvec4) + 29(o): 28(ptr) Variable Output + 30: TypeInt 32 0 + 31: 30(int) Constant 5 + 32: TypeArray 7(float) 31 + 33: TypePointer Input 32 +34(gl_ClipDistance): 33(ptr) Variable Input + 35: TypeInt 32 1 + 36: 35(int) Constant 2 + 37: TypePointer Input 7(float) + 42: TypePointer Input 27(fvec4) + 43(k): 42(ptr) Variable Input + 45: TypeVector 35(int) 4 + 52: TypeSampler7(float) Rect filter+texture + 53: TypePointer UniformConstant 52 + 54(sampR): 53(ptr) Variable UniformConstant + 56: TypeVector 35(int) 2 + 58: TypeSampler35(int) Buffer filter+texture + 59: TypePointer UniformConstant 58 + 60(sampB): 59(ptr) Variable UniformConstant + 65: TypeVector 7(float) 2 + 68: 7(float) Constant 1120403456 + 79: TypeSampler7(float) 2D filter+texture + 80: 30(int) Constant 3 + 81: TypeArray 79 80 + 82: TypePointer UniformConstant 81 + 83(samp2Da): 82(ptr) Variable UniformConstant + 84: TypeMatrix 27(fvec4) 4 + 85: 30(int) Constant 4 + 86: TypeArray 84 85 + 87(bn): TypeStruct 86 86 84 84 84 + 88: TypePointer Uniform 87(bn) + 89: 88(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 14: 13(ptr) Variable Function + 18: 15(bool) Load 17(gl_FrontFacing) + SelectionMerge 20 None + BranchConditional 18 19 22 + 19: Label + Store 14 21 + Branch 20 + 22: Label + Store 14 23 + Branch 20 + 20: Label + 24: 7(float) Load 14 + Store 12(i1) 24 + Store 25(i2) 26 + 38: 37(ptr) AccessChain 34(gl_ClipDistance) 36 + 39: 7(float) Load 38 + 40: 27(fvec4) Load 29(o) + 41: 27(fvec4) CompositeInsert 39 40 1 + Store 29(o) 41 + 44: 27(fvec4) Load 43(k) + 46: 45(ivec4) ConvertFToS 44 + 47: 35(int) CompositeExtract 46 0 + 48: 37(ptr) AccessChain 34(gl_ClipDistance) 47 + 49: 7(float) Load 48 + 50: 27(fvec4) Load 29(o) + 51: 27(fvec4) CompositeInsert 49 50 2 + Store 29(o) 51 + 55: 52 Load 54(sampR) + 57: 56(ivec2) TextureQuerySize 55 + 61: 58 Load 60(sampB) + 62: 35(int) TextureQuerySize 61 + 63: 56(ivec2) CompositeConstruct 62 62 + 64: 56(ivec2) IAdd 57 63 + 66: 65(fvec2) ConvertSToF 64 + 67: 7(float) CompositeExtract 66 0 + 69: 7(float) FDiv 67 68 + 70: 27(fvec4) Load 29(o) + 71: 27(fvec4) CompositeInsert 69 70 3 + Store 29(o) 71 + 72: 7(float) FunctionCall 9(foo() + 73: 27(fvec4) Load 29(o) + 74: 27(fvec4) CompositeInsert 72 73 2 + Store 29(o) 74 + Branch 6 + 6: Label + Return + FunctionEnd + 9(foo(): 7(float) Function None 8 + 10: Label + 75: 7(float) Load 12(i1) + 76: 7(float) Load 25(i2) + 77: 7(float) FAdd 75 76 + ReturnValue 77 + FunctionEnd diff --git a/Test/baseResults/spv.140.vert.out b/Test/baseResults/spv.140.vert.out new file mode 100644 index 000000000..35470ddc5 --- /dev/null +++ b/Test/baseResults/spv.140.vert.out @@ -0,0 +1,30 @@ +Error: unable to open input file: spv.140.vert +Usage: glslangValidator [option]... [file]... + +Where: each 'file' ends in .<stage>, where <stage> is one of + .conf to provide an optional config file that replaces the default configuration + (see -c option below for generating a template) + .vert for a vertex shader + .tesc for a tessellation control shader + .tese for a tessellation evaluation shader + .geom for a geometry shader + .frag for a fragment shader + .comp for a compute shader + +Compilation warnings and errors will be printed to stdout. + +To get other information, use one of the following options: +(Each option must be specified separately, but can go anywhere in the command line.) + -V create SPIR-V in file <stage>.spv + -H print human readable form of SPIR-V; turns on -V + -c configuration dump; use to create default configuration file (redirect to a .conf file) + -d default to desktop (#version 110) when there is no version in the shader (default is ES version 100) + -i intermediate tree (glslang AST) is printed out + -l link validation of all input files + -m memory leak mode + -q dump reflection query database + -r relaxed semantic error-checking mode + -s silent mode + -t multi-threaded mode + -v print version strings + -w suppress warnings (except as required by #extension : warn) diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out new file mode 100644 index 000000000..d32c8da5a --- /dev/null +++ b/Test/baseResults/spv.150.geom.out @@ -0,0 +1,146 @@ +spv.150.geom + + + +Linked geometry stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 72 + + Source GLSL 150 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 + ExecutionMode 4 InputTrianglesAdjacency + ExecutionMode 4 Invocations 0 + ExecutionMode 4 OutputTriangleStrip + ExecutionMode 4 OutputVertices 30 + Name 4 "main" + Name 9 "fromVertex" + MemberName 9(fromVertex) 0 "color" + Name 11 "" + Name 14 "fromVertex" + MemberName 14(fromVertex) 0 "color" + Name 19 "fromV" + Name 28 "gl_PerVertex" + MemberName 28(gl_PerVertex) 0 "gl_Position" + MemberName 28(gl_PerVertex) 1 "gl_PointSize" + MemberName 28(gl_PerVertex) 2 "gl_ClipDistance" + Name 30 "" + Name 31 "gl_PerVertex" + MemberName 31(gl_PerVertex) 0 "gl_Position" + MemberName 31(gl_PerVertex) 1 "gl_PointSize" + MemberName 31(gl_PerVertex) 2 "gl_ClipDistance" + Name 34 "gl_in" + Name 48 "gl_PrimitiveID" + Name 50 "gl_PrimitiveIDIn" + Name 52 "gl_Layer" + Name 69 "toFragment" + MemberName 69(toFragment) 0 "color" + Name 71 "toF" + Decorate 9(fromVertex) Block + Decorate 9(fromVertex) Stream 3 + Decorate 11 Stream 3 + Decorate 14(fromVertex) Block + Decorate 28(gl_PerVertex) Block + Decorate 28(gl_PerVertex) Stream 0 + Decorate 30 Stream 0 + Decorate 31(gl_PerVertex) Block + Decorate 48(gl_PrimitiveID) Stream 0 + Decorate 48(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 50(gl_PrimitiveIDIn) BuiltIn PrimitiveId + Decorate 52(gl_Layer) Stream 0 + Decorate 52(gl_Layer) BuiltIn Layer + Decorate 69(toFragment) Block + Decorate 69(toFragment) Stream 3 + Decorate 71(toF) Stream 3 + Decorate 71(toF) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 3 + 9(fromVertex): TypeStruct 8(fvec3) + 10: TypePointer Output 9(fromVertex) + 11: 10(ptr) Variable Output + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14(fromVertex): TypeStruct 8(fvec3) + 15: TypeInt 32 0 + 16: 15(int) Constant 6 + 17: TypeArray 14(fromVertex) 16 + 18: TypePointer Input 17 + 19(fromV): 18(ptr) Variable Input + 20: TypePointer Input 8(fvec3) + 23: TypePointer Output 8(fvec3) + 25: TypeVector 7(float) 4 + 26: 15(int) Constant 1 + 27: TypeArray 7(float) 26 +28(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27 + 29: TypePointer Output 28(gl_PerVertex) + 30: 29(ptr) Variable Output +31(gl_PerVertex): TypeStruct 25(fvec4) 7(float) 27 + 32: TypeArray 31(gl_PerVertex) 16 + 33: TypePointer Input 32 + 34(gl_in): 33(ptr) Variable Input + 35: TypePointer Input 25(fvec4) + 38: TypePointer Output 25(fvec4) + 40: 12(int) Constant 1 + 41: 12(int) Constant 3 + 42: TypePointer Input 7(float) + 45: TypePointer Output 7(float) + 47: TypePointer Output 12(int) +48(gl_PrimitiveID): 47(ptr) Variable Output + 49: TypePointer Input 12(int) +50(gl_PrimitiveIDIn): 49(ptr) Variable Input + 52(gl_Layer): 47(ptr) Variable Output + 53: 12(int) Constant 2 + 54: 7(float) Constant 1073741824 + 69(toFragment): TypeStruct 8(fvec3) + 70: TypePointer Output 69(toFragment) + 71(toF): 70(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 21: 20(ptr) AccessChain 19(fromV) 13 13 + 22: 8(fvec3) Load 21 + 24: 23(ptr) AccessChain 11 13 + Store 24 22 + 36: 35(ptr) AccessChain 34(gl_in) 13 13 + 37: 25(fvec4) Load 36 + 39: 38(ptr) AccessChain 30 13 + Store 39 37 + 43: 42(ptr) AccessChain 34(gl_in) 41 40 + 44: 7(float) Load 43 + 46: 45(ptr) AccessChain 30 40 + Store 46 44 + 51: 12(int) Load 50(gl_PrimitiveIDIn) + Store 48(gl_PrimitiveID) 51 + Store 52(gl_Layer) 53 + EmitVertex + 55: 20(ptr) AccessChain 19(fromV) 13 13 + 56: 8(fvec3) Load 55 + 57: 8(fvec3) VectorTimesScalar 54 56 + 58: 23(ptr) AccessChain 11 13 + Store 58 57 + 59: 35(ptr) AccessChain 34(gl_in) 13 13 + 60: 25(fvec4) Load 59 + 61: 25(fvec4) VectorTimesScalar 54 60 + 62: 38(ptr) AccessChain 30 13 + Store 62 61 + 63: 42(ptr) AccessChain 34(gl_in) 41 40 + 64: 7(float) Load 63 + 65: 7(float) FMul 54 64 + 66: 45(ptr) AccessChain 30 40 + Store 66 65 + 67: 12(int) Load 50(gl_PrimitiveIDIn) + 68: 12(int) IAdd 67 40 + Store 48(gl_PrimitiveID) 68 + Store 52(gl_Layer) 41 + EmitVertex + EndPrimitive + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out new file mode 100644 index 000000000..c2d8bdf55 --- /dev/null +++ b/Test/baseResults/spv.150.vert.out @@ -0,0 +1,108 @@ +spv.150.vert + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 53 + + Source GLSL 150 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 14 "gl_PerVertex" + MemberName 14(gl_PerVertex) 0 "gl_Position" + MemberName 14(gl_PerVertex) 1 "gl_PointSize" + MemberName 14(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 14(gl_PerVertex) 3 "gl_ClipVertex" + MemberName 14(gl_PerVertex) 4 "gl_FrontColor" + MemberName 14(gl_PerVertex) 5 "gl_BackColor" + MemberName 14(gl_PerVertex) 6 "gl_FrontSecondaryColor" + MemberName 14(gl_PerVertex) 7 "gl_BackSecondaryColor" + MemberName 14(gl_PerVertex) 8 "gl_TexCoord" + MemberName 14(gl_PerVertex) 9 "gl_FogFragCoord" + Name 16 "" + Name 20 "iv4" + Name 26 "ps" + Name 36 "s1" + MemberName 36(s1) 0 "a" + MemberName 36(s1) 1 "a2" + MemberName 36(s1) 2 "b" + Name 38 "s2" + MemberName 38(s2) 0 "c" + MemberName 38(s2) 1 "d" + Name 40 "s2out" + Name 42 "i" + Name 49 "ui" + Name 51 "gl_VertexID" + Name 52 "gl_InstanceID" + MemberDecorate 14(gl_PerVertex) 0 Invariant + Decorate 14(gl_PerVertex) Block + Decorate 49(ui) NoStaticUse + Decorate 51(gl_VertexID) BuiltIn VertexId + Decorate 51(gl_VertexID) NoStaticUse + Decorate 52(gl_InstanceID) BuiltIn InstanceId + Decorate 52(gl_InstanceID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypeInt 32 0 + 10: 9(int) Constant 4 + 11: TypeArray 7(float) 10 + 12: 9(int) Constant 1 + 13: TypeArray 8(fvec4) 12 +14(gl_PerVertex): TypeStruct 8(fvec4) 7(float) 11 8(fvec4) 8(fvec4) 8(fvec4) 8(fvec4) 8(fvec4) 13 7(float) + 15: TypePointer Output 14(gl_PerVertex) + 16: 15(ptr) Variable Output + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 19: TypePointer Input 8(fvec4) + 20(iv4): 19(ptr) Variable Input + 22: TypePointer Output 8(fvec4) + 24: 17(int) Constant 1 + 25: TypePointer UniformConstant 7(float) + 26(ps): 25(ptr) Variable UniformConstant + 28: TypePointer Output 7(float) + 30: 17(int) Constant 2 + 34: 9(int) Constant 3 + 35: TypeArray 8(fvec4) 34 + 36(s1): TypeStruct 17(int) 17(int) 35 + 37: TypeArray 36(s1) 10 + 38(s2): TypeStruct 17(int) 37 + 39: TypePointer Output 38(s2) + 40(s2out): 39(ptr) Variable Output + 41: TypePointer Function 17(int) + 48: TypePointer UniformConstant 17(int) + 49(ui): 48(ptr) Variable UniformConstant + 50: TypePointer Input 17(int) + 51(gl_VertexID): 50(ptr) Variable Input +52(gl_InstanceID): 50(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 42(i): 41(ptr) Variable Function + 21: 8(fvec4) Load 20(iv4) + 23: 22(ptr) AccessChain 16 18 + Store 23 21 + 27: 7(float) Load 26(ps) + 29: 28(ptr) AccessChain 16 24 + Store 29 27 + 31: 8(fvec4) Load 20(iv4) + 32: 7(float) CompositeExtract 31 0 + 33: 28(ptr) AccessChain 16 30 30 + Store 33 32 + 43: 17(int) Load 42(i) + 44: 7(float) Load 26(ps) + 45: 22(ptr) AccessChain 40(s2out) 24 43 30 30 + 46: 8(fvec4) Load 45 + 47: 8(fvec4) CompositeInsert 44 46 3 + Store 45 47 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out new file mode 100644 index 000000000..9ec134f3c --- /dev/null +++ b/Test/baseResults/spv.300BuiltIns.vert.out @@ -0,0 +1,85 @@ +spv.300BuiltIns.vert + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 41 + + Source GLSL 300 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 9 "i" + Name 12 "gl_VertexID" + Name 17 "j" + Name 24 "gl_Position" + Name 26 "ps" + Name 34 "gl_PointSize" + Name 40 "gl_InstanceID" + Decorate 9(i) PrecisionMedium + Decorate 12(gl_VertexID) PrecisionHigh + Decorate 12(gl_VertexID) BuiltIn VertexId + Decorate 17(j) PrecisionMedium + Decorate 24(gl_Position) PrecisionHigh + Decorate 24(gl_Position) Invariant + Decorate 24(gl_Position) BuiltIn Position + Decorate 26(ps) PrecisionMedium + Decorate 34(gl_PointSize) PrecisionHigh + Decorate 34(gl_PointSize) BuiltIn PointSize + Decorate 40(gl_InstanceID) PrecisionHigh + Decorate 40(gl_InstanceID) BuiltIn InstanceId + Decorate 40(gl_InstanceID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 10: 7(int) Constant 4 + 11: TypePointer Input 7(int) + 12(gl_VertexID): 11(ptr) Variable Input + 15: 7(int) Constant 10 + 21: TypeFloat 32 + 22: TypeVector 21(float) 4 + 23: TypePointer Output 22(fvec4) + 24(gl_Position): 23(ptr) Variable Output + 25: TypePointer Input 21(float) + 26(ps): 25(ptr) Variable Input + 33: TypePointer Output 21(float) +34(gl_PointSize): 33(ptr) Variable Output +40(gl_InstanceID): 11(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 9(i): 8(ptr) Variable Function + 17(j): 8(ptr) Variable Function + 13: 7(int) Load 12(gl_VertexID) + 14: 7(int) IMul 10 13 + 16: 7(int) ISub 14 15 + Store 9(i) 16 + 18: 7(int) Load 12(gl_VertexID) + 19: 7(int) IMul 10 18 + 20: 7(int) ISub 19 15 + Store 17(j) 20 + 27: 21(float) Load 26(ps) + 28: 22(fvec4) CompositeConstruct 27 27 27 27 + Store 24(gl_Position) 28 + 29: 7(int) Load 9(i) + 30: 21(float) ConvertSToF 29 + 31: 22(fvec4) Load 24(gl_Position) + 32: 22(fvec4) VectorTimesScalar 31 30 + Store 24(gl_Position) 32 + 35: 21(float) Load 26(ps) + Store 34(gl_PointSize) 35 + 36: 7(int) Load 17(j) + 37: 21(float) ConvertSToF 36 + 38: 21(float) Load 34(gl_PointSize) + 39: 21(float) FMul 38 37 + Store 34(gl_PointSize) 39 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out new file mode 100644 index 000000000..d81baf1be --- /dev/null +++ b/Test/baseResults/spv.300layout.frag.out @@ -0,0 +1,76 @@ +spv.300layout.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 38 + + Source GLSL 300 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "c" + Name 12 "color" + Name 14 "S" + MemberName 14(S) 0 "c" + MemberName 14(S) 1 "f" + Name 16 "s" + Name 27 "p" + Name 30 "pos" + Decorate 10(c) PrecisionMedium + Decorate 10(c) Location 7 + Decorate 12(color) PrecisionMedium + Decorate 12(color) Smooth + MemberDecorate 14(S) 0 PrecisionMedium + MemberDecorate 14(S) 1 PrecisionMedium + Decorate 27(p) PrecisionMedium + Decorate 27(p) Location 3 + Decorate 30(pos) PrecisionMedium + Decorate 30(pos) Smooth + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 3 + 9: TypePointer Output 8(fvec3) + 10(c): 9(ptr) Variable Output + 11: TypePointer Input 8(fvec3) + 12(color): 11(ptr) Variable Input + 14(S): TypeStruct 8(fvec3) 7(float) + 15: TypePointer Input 14(S) + 16(s): 15(ptr) Variable Input + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 22: TypeVector 7(float) 4 + 23: TypeInt 32 0 + 24: 23(int) Constant 2 + 25: TypeArray 22(fvec4) 24 + 26: TypePointer Output 25 + 27(p): 26(ptr) Variable Output + 28: 17(int) Constant 1 + 29: TypePointer Input 22(fvec4) + 30(pos): 29(ptr) Variable Input + 32: TypePointer Input 7(float) + 36: TypePointer Output 22(fvec4) + 4(main): 2 Function None 3 + 5: Label + 13: 8(fvec3) Load 12(color) + 19: 11(ptr) AccessChain 16(s) 18 + 20: 8(fvec3) Load 19 + 21: 8(fvec3) FAdd 13 20 + Store 10(c) 21 + 31: 22(fvec4) Load 30(pos) + 33: 32(ptr) AccessChain 16(s) 28 + 34: 7(float) Load 33 + 35: 22(fvec4) VectorTimesScalar 31 34 + 37: 36(ptr) AccessChain 27(p) 28 + Store 37 35 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out new file mode 100644 index 000000000..348ee7079 --- /dev/null +++ b/Test/baseResults/spv.300layout.vert.out @@ -0,0 +1,9 @@ +spv.300layout.vert + + + +Linked vertex stage: + + + +Missing functionality: binary operation on matrix diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out new file mode 100644 index 000000000..6c8697b88 --- /dev/null +++ b/Test/baseResults/spv.300layoutp.vert.out @@ -0,0 +1,211 @@ +spv.300layoutp.vert + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 112 + + Source GLSL 300 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 10 "pos" + Name 12 "p" + Name 18 "Transform" + MemberName 18(Transform) 0 "M1" + MemberName 18(Transform) 1 "M2" + MemberName 18(Transform) 2 "N1" + MemberName 18(Transform) 3 "iuin" + Name 20 "tblock" + Name 34 "T3" + MemberName 34(T3) 0 "M3" + MemberName 34(T3) 1 "M4" + MemberName 34(T3) 2 "N2" + MemberName 34(T3) 3 "uv3a" + Name 36 "" + Name 44 "T2" + MemberName 44(T2) 0 "b" + MemberName 44(T2) 1 "t2m" + Name 46 "" + Name 52 "color" + Name 54 "c" + Name 62 "iout" + Name 68 "uiuin" + Name 74 "aiv2" + Name 78 "S" + MemberName 78(S) 0 "c" + MemberName 78(S) 1 "f" + Name 80 "s" + Name 110 "gl_VertexID" + Name 111 "gl_InstanceID" + Decorate 10(pos) PrecisionHigh + Decorate 10(pos) Smooth + Decorate 12(p) PrecisionHigh + Decorate 12(p) Location 3 + MemberDecorate 18(Transform) 0 RowMajor + MemberDecorate 18(Transform) 0 PrecisionHigh + MemberDecorate 18(Transform) 1 ColMajor + MemberDecorate 18(Transform) 1 PrecisionHigh + MemberDecorate 18(Transform) 2 RowMajor + MemberDecorate 18(Transform) 2 PrecisionHigh + MemberDecorate 18(Transform) 3 PrecisionHigh + Decorate 18(Transform) GLSLStd140 + Decorate 18(Transform) Block + MemberDecorate 34(T3) 0 ColMajor + MemberDecorate 34(T3) 0 PrecisionHigh + MemberDecorate 34(T3) 1 RowMajor + MemberDecorate 34(T3) 1 PrecisionHigh + MemberDecorate 34(T3) 2 ColMajor + MemberDecorate 34(T3) 2 PrecisionHigh + MemberDecorate 34(T3) 3 PrecisionHigh + Decorate 34(T3) GLSLShared + Decorate 34(T3) Block + MemberDecorate 44(T2) 1 RowMajor + MemberDecorate 44(T2) 1 PrecisionHigh + Decorate 44(T2) GLSLShared + Decorate 44(T2) Block + Decorate 52(color) PrecisionHigh + Decorate 52(color) Smooth + Decorate 54(c) PrecisionHigh + Decorate 54(c) Location 7 + Decorate 62(iout) PrecisionHigh + Decorate 62(iout) Flat + Decorate 68(uiuin) PrecisionHigh + Decorate 74(aiv2) PrecisionHigh + Decorate 74(aiv2) Location 9 + MemberDecorate 78(S) 0 PrecisionHigh + MemberDecorate 78(S) 1 PrecisionHigh + Decorate 110(gl_VertexID) PrecisionHigh + Decorate 110(gl_VertexID) BuiltIn VertexId + Decorate 110(gl_VertexID) NoStaticUse + Decorate 111(gl_InstanceID) PrecisionHigh + Decorate 111(gl_InstanceID) BuiltIn InstanceId + Decorate 111(gl_InstanceID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Output 8(fvec4) + 10(pos): 9(ptr) Variable Output + 11: TypePointer Input 8(fvec4) + 12(p): 11(ptr) Variable Input + 14: TypeMatrix 8(fvec4) 4 + 15: TypeVector 7(float) 3 + 16: TypeMatrix 15(fvec3) 3 + 17: TypeInt 32 1 + 18(Transform): TypeStruct 14 14 16 17(int) + 19: TypePointer Uniform 18(Transform) + 20(tblock): 19(ptr) Variable Uniform + 21: 17(int) Constant 0 + 22: TypePointer Uniform 14 + 25: 17(int) Constant 1 + 29: TypeMatrix 15(fvec3) 2 + 30: TypeInt 32 0 + 31: TypeVector 30(int) 3 + 32: 30(int) Constant 4 + 33: TypeArray 31(ivec3) 32 + 34(T3): TypeStruct 14 14 29 33 + 35: TypePointer Uniform 34(T3) + 36: 35(ptr) Variable Uniform + 43: TypeBool + 44(T2): TypeStruct 43(bool) 14 + 45: TypePointer Uniform 44(T2) + 46: 45(ptr) Variable Uniform + 51: TypePointer Output 15(fvec3) + 52(color): 51(ptr) Variable Output + 53: TypePointer Input 15(fvec3) + 54(c): 53(ptr) Variable Input + 56: 17(int) Constant 2 + 57: TypePointer Uniform 16 + 61: TypePointer Output 17(int) + 62(iout): 61(ptr) Variable Output + 63: 17(int) Constant 3 + 64: TypePointer Uniform 17(int) + 67: TypePointer UniformConstant 30(int) + 68(uiuin): 67(ptr) Variable UniformConstant + 72: TypeVector 17(int) 2 + 73: TypePointer Input 72(ivec2) + 74(aiv2): 73(ptr) Variable Input + 78(S): TypeStruct 15(fvec3) 7(float) + 79: TypePointer Output 78(S) + 80(s): 79(ptr) Variable Output + 85: TypePointer Output 7(float) + 87: TypePointer Uniform 15(fvec3) + 90: 7(float) Constant 1065353216 + 91: 15(fvec3) ConstantComposite 90 90 90 + 92: TypeVector 43(bool) 3 + 95: TypePointer Uniform 31(ivec3) + 98: 30(int) Constant 5 + 99: 31(ivec3) ConstantComposite 98 98 98 + 109: TypePointer Input 17(int) +110(gl_VertexID): 109(ptr) Variable Input +111(gl_InstanceID): 109(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 13: 8(fvec4) Load 12(p) + 23: 22(ptr) AccessChain 20(tblock) 21 + 24: 14 Load 23 + 26: 22(ptr) AccessChain 20(tblock) 25 + 27: 14 Load 26 + 28: 14 MatrixTimesMatrix 24 27 + 37: 22(ptr) AccessChain 36 25 + 38: 14 Load 37 + 39: 14 MatrixTimesMatrix 28 38 + 40: 22(ptr) AccessChain 36 21 + 41: 14 Load 40 + 42: 14 MatrixTimesMatrix 39 41 + 47: 22(ptr) AccessChain 46 25 + 48: 14 Load 47 + 49: 14 MatrixTimesMatrix 42 48 + 50: 8(fvec4) VectorTimesMatrix 13 49 + Store 10(pos) 50 + 55: 15(fvec3) Load 54(c) + 58: 57(ptr) AccessChain 20(tblock) 56 + 59: 16 Load 58 + 60: 15(fvec3) VectorTimesMatrix 55 59 + Store 52(color) 60 + 65: 64(ptr) AccessChain 20(tblock) 63 + 66: 17(int) Load 65 + 69: 30(int) Load 68(uiuin) + 70: 17(int) Bitcast 69 + 71: 17(int) IAdd 66 70 + 75: 72(ivec2) Load 74(aiv2) + 76: 17(int) CompositeExtract 75 1 + 77: 17(int) IAdd 71 76 + Store 62(iout) 77 + 81: 15(fvec3) Load 54(c) + 82: 51(ptr) AccessChain 80(s) 21 + Store 82 81 + 83: 8(fvec4) Load 12(p) + 84: 7(float) CompositeExtract 83 0 + 86: 85(ptr) AccessChain 80(s) 25 + Store 86 84 + 88: 87(ptr) AccessChain 36 56 25 + 89: 15(fvec3) Load 88 + 93: 92(bvec3) FOrdNotEqual 89 91 + 94: 43(bool) Any 93 + 96: 95(ptr) AccessChain 36 63 56 + 97: 31(ivec3) Load 96 + 100: 92(bvec3) INotEqual 97 99 + 101: 43(bool) Any 100 + 102: 43(bool) LogicalOr 94 101 + SelectionMerge 104 None + BranchConditional 102 103 104 + 103: Label + 105: 51(ptr) AccessChain 80(s) 21 + 106: 15(fvec3) Load 105 + 107: 15(fvec3) CompositeConstruct 90 90 90 + 108: 15(fvec3) FAdd 106 107 + Store 105 108 + Branch 104 + 104: Label + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out new file mode 100644 index 000000000..b12580b05 --- /dev/null +++ b/Test/baseResults/spv.310.comp.out @@ -0,0 +1,10 @@ +spv.310.comp +Warning, version 310 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked compute stage: + + + +Missing functionality: Unsized array diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out new file mode 100644 index 000000000..b9923e6f0 --- /dev/null +++ b/Test/baseResults/spv.330.geom.out @@ -0,0 +1,72 @@ +spv.330.geom + + + +Linked geometry stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 33 + + Source GLSL 330 + SourceExtension "GL_ARB_separate_shader_objects" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 + ExecutionMode 4 InputTriangles + ExecutionMode 4 Invocations 0 + ExecutionMode 4 OutputTriangleStrip + ExecutionMode 4 OutputVertices 3 + Name 4 "main" + Name 12 "gl_PerVertex" + MemberName 12(gl_PerVertex) 0 "gl_Position" + MemberName 12(gl_PerVertex) 1 "gl_ClipDistance" + Name 14 "" + Name 17 "gl_PerVertex" + MemberName 17(gl_PerVertex) 0 "gl_Position" + MemberName 17(gl_PerVertex) 1 "gl_ClipDistance" + Name 21 "gl_in" + Decorate 12(gl_PerVertex) Block + Decorate 12(gl_PerVertex) Stream 0 + Decorate 14 Stream 0 + Decorate 17(gl_PerVertex) Block + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypeInt 32 0 + 10: 9(int) Constant 1 + 11: TypeArray 7(float) 10 +12(gl_PerVertex): TypeStruct 8(fvec4) 11 + 13: TypePointer Output 12(gl_PerVertex) + 14: 13(ptr) Variable Output + 15: TypeInt 32 1 + 16: 15(int) Constant 0 +17(gl_PerVertex): TypeStruct 8(fvec4) 11 + 18: 9(int) Constant 3 + 19: TypeArray 17(gl_PerVertex) 18 + 20: TypePointer Input 19 + 21(gl_in): 20(ptr) Variable Input + 22: 15(int) Constant 1 + 23: TypePointer Input 8(fvec4) + 26: TypePointer Output 8(fvec4) + 28: TypePointer Input 7(float) + 31: TypePointer Output 7(float) + 4(main): 2 Function None 3 + 5: Label + 24: 23(ptr) AccessChain 21(gl_in) 22 16 + 25: 8(fvec4) Load 24 + 27: 26(ptr) AccessChain 14 16 + Store 27 25 + 29: 28(ptr) AccessChain 21(gl_in) 22 22 16 + 30: 7(float) Load 29 + 32: 31(ptr) AccessChain 14 22 16 + Store 32 30 + EmitVertex + EndPrimitive + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out new file mode 100644 index 000000000..9e98d2ced --- /dev/null +++ b/Test/baseResults/spv.400.frag.out @@ -0,0 +1,10 @@ +spv.400.frag +Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked fragment stage: + + + +Missing functionality: texture gather diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out new file mode 100644 index 000000000..edfae88c7 --- /dev/null +++ b/Test/baseResults/spv.400.tesc.out @@ -0,0 +1,176 @@ +spv.400.tesc +Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked tessellation control stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 89 + + Source GLSL 400 + SourceExtension "GL_ARB_separate_shader_objects" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationControl 4 + ExecutionMode 4 OutputVertices 4 + Name 4 "main" + Name 9 "a" + Name 14 "p" + Name 18 "gl_PerVertex" + MemberName 18(gl_PerVertex) 0 "gl_Position" + MemberName 18(gl_PerVertex) 1 "gl_PointSize" + MemberName 18(gl_PerVertex) 2 "gl_ClipDistance" + Name 22 "gl_in" + Name 29 "ps" + Name 33 "cd" + Name 37 "pvi" + Name 39 "gl_PatchVerticesIn" + Name 41 "pid" + Name 42 "gl_PrimitiveID" + Name 44 "iid" + Name 45 "gl_InvocationID" + Name 47 "gl_PerVertex" + MemberName 47(gl_PerVertex) 0 "gl_Position" + MemberName 47(gl_PerVertex) 1 "gl_PointSize" + MemberName 47(gl_PerVertex) 2 "gl_ClipDistance" + Name 51 "gl_out" + Name 62 "gl_TessLevelOuter" + Name 69 "gl_TessLevelInner" + Name 74 "outa" + Name 75 "patchOut" + Name 79 "inb" + Name 80 "ind" + Name 83 "ivla" + Name 84 "ivlb" + Name 87 "ovla" + Name 88 "ovlb" + Decorate 18(gl_PerVertex) Block + Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices + Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 45(gl_InvocationID) BuiltIn InvocationId + Decorate 47(gl_PerVertex) Block + Decorate 62(gl_TessLevelOuter) Patch + Decorate 62(gl_TessLevelOuter) BuiltIn TessLevelOuter + Decorate 69(gl_TessLevelInner) Patch + Decorate 69(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 74(outa) NoStaticUse + Decorate 75(patchOut) Patch + Decorate 75(patchOut) NoStaticUse + Decorate 79(inb) NoStaticUse + Decorate 80(ind) NoStaticUse + Decorate 83(ivla) Location 3 + Decorate 83(ivla) NoStaticUse + Decorate 84(ivlb) Location 4 + Decorate 84(ivlb) NoStaticUse + Decorate 87(ovla) Location 3 + Decorate 87(ovla) NoStaticUse + Decorate 88(ovlb) Location 4 + Decorate 88(ovlb) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 10: 7(int) Constant 5392 + 11: TypeFloat 32 + 12: TypeVector 11(float) 4 + 13: TypePointer Function 12(fvec4) + 15: TypeInt 32 0 + 16: 15(int) Constant 1 + 17: TypeArray 11(float) 16 +18(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 17 + 19: 15(int) Constant 32 + 20: TypeArray 18(gl_PerVertex) 19 + 21: TypePointer Input 20 + 22(gl_in): 21(ptr) Variable Input + 23: 7(int) Constant 1 + 24: 7(int) Constant 0 + 25: TypePointer Input 12(fvec4) + 28: TypePointer Function 11(float) + 30: TypePointer Input 11(float) + 34: 7(int) Constant 2 + 38: TypePointer Input 7(int) +39(gl_PatchVerticesIn): 38(ptr) Variable Input +42(gl_PrimitiveID): 38(ptr) Variable Input +45(gl_InvocationID): 38(ptr) Variable Input +47(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 17 + 48: 15(int) Constant 4 + 49: TypeArray 47(gl_PerVertex) 48 + 50: TypePointer Output 49 + 51(gl_out): 50(ptr) Variable Output + 53: TypePointer Output 12(fvec4) + 56: TypePointer Output 11(float) + 60: TypeArray 11(float) 48 + 61: TypePointer Output 60 +62(gl_TessLevelOuter): 61(ptr) Variable Output + 63: 7(int) Constant 3 + 64: 11(float) Constant 1078774989 + 66: 15(int) Constant 2 + 67: TypeArray 11(float) 66 + 68: TypePointer Output 67 +69(gl_TessLevelInner): 68(ptr) Variable Output + 70: 11(float) Constant 1067869798 + 72: TypeArray 7(int) 48 + 73: TypePointer PrivateGlobal 72 + 74(outa): 73(ptr) Variable PrivateGlobal + 75(patchOut): 53(ptr) Variable Output + 76: TypeVector 11(float) 2 + 77: TypeArray 76(fvec2) 19 + 78: TypePointer Input 77 + 79(inb): 78(ptr) Variable Input + 80(ind): 78(ptr) Variable Input + 81: TypeArray 12(fvec4) 19 + 82: TypePointer Input 81 + 83(ivla): 82(ptr) Variable Input + 84(ivlb): 82(ptr) Variable Input + 85: TypeArray 12(fvec4) 48 + 86: TypePointer Output 85 + 87(ovla): 86(ptr) Variable Output + 88(ovlb): 86(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(a): 8(ptr) Variable Function + 14(p): 13(ptr) Variable Function + 29(ps): 28(ptr) Variable Function + 33(cd): 28(ptr) Variable Function + 37(pvi): 8(ptr) Variable Function + 41(pid): 8(ptr) Variable Function + 44(iid): 8(ptr) Variable Function + MemoryBarrier Device Relaxed SequentiallyConsistent Acquire Release UniformMemory SubgroupMemory WorkgroupLocalMemory WorkgroupGlobalMemory AtomicCounterMemory ImageMemory + ControlBarrier Device + Store 9(a) 10 + 26: 25(ptr) AccessChain 22(gl_in) 23 24 + 27: 12(fvec4) Load 26 + Store 14(p) 27 + 31: 30(ptr) AccessChain 22(gl_in) 23 23 + 32: 11(float) Load 31 + Store 29(ps) 32 + 35: 30(ptr) AccessChain 22(gl_in) 23 34 34 + 36: 11(float) Load 35 + Store 33(cd) 36 + 40: 7(int) Load 39(gl_PatchVerticesIn) + Store 37(pvi) 40 + 43: 7(int) Load 42(gl_PrimitiveID) + Store 41(pid) 43 + 46: 7(int) Load 45(gl_InvocationID) + Store 44(iid) 46 + 52: 12(fvec4) Load 14(p) + 54: 53(ptr) AccessChain 51(gl_out) 23 24 + Store 54 52 + 55: 11(float) Load 29(ps) + 57: 56(ptr) AccessChain 51(gl_out) 23 23 + Store 57 55 + 58: 11(float) Load 33(cd) + 59: 56(ptr) AccessChain 51(gl_out) 23 34 23 + Store 59 58 + 65: 56(ptr) AccessChain 62(gl_TessLevelOuter) 63 + Store 65 64 + 71: 56(ptr) AccessChain 69(gl_TessLevelInner) 23 + Store 71 70 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out new file mode 100644 index 000000000..4d141ae2b --- /dev/null +++ b/Test/baseResults/spv.400.tese.out @@ -0,0 +1,191 @@ +spv.400.tese +Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked tessellation evaluation stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 99 + + Source GLSL 400 + SourceExtension "GL_ARB_separate_shader_objects" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationEvaluation 4 + ExecutionMode 4 InputTriangles + Name 4 "main" + Name 9 "a" + Name 14 "p" + Name 18 "gl_PerVertex" + MemberName 18(gl_PerVertex) 0 "gl_Position" + MemberName 18(gl_PerVertex) 1 "gl_PointSize" + MemberName 18(gl_PerVertex) 2 "gl_ClipDistance" + Name 22 "gl_in" + Name 29 "ps" + Name 33 "cd" + Name 37 "pvi" + Name 39 "gl_PatchVerticesIn" + Name 41 "pid" + Name 42 "gl_PrimitiveID" + Name 46 "tc" + Name 48 "gl_TessCoord" + Name 50 "tlo" + Name 54 "gl_TessLevelOuter" + Name 58 "tli" + Name 62 "gl_TessLevelInner" + Name 67 "gl_PerVertex" + MemberName 67(gl_PerVertex) 0 "gl_Position" + MemberName 67(gl_PerVertex) 1 "gl_PointSize" + MemberName 67(gl_PerVertex) 2 "gl_ClipDistance" + Name 69 "" + Name 78 "patchIn" + Name 82 "inb" + Name 83 "ind" + Name 84 "testblb" + MemberName 84(testblb) 0 "f" + Name 87 "blb" + Name 88 "testbld" + MemberName 88(testbld) 0 "f" + Name 91 "bld" + Name 94 "ivla" + Name 95 "ivlb" + Name 98 "ovla" + Decorate 18(gl_PerVertex) Block + Decorate 39(gl_PatchVerticesIn) BuiltIn PatchVertices + Decorate 42(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 48(gl_TessCoord) BuiltIn TessCoord + Decorate 54(gl_TessLevelOuter) Patch + Decorate 54(gl_TessLevelOuter) BuiltIn TessLevelOuter + Decorate 62(gl_TessLevelInner) Patch + Decorate 62(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 67(gl_PerVertex) Block + Decorate 78(patchIn) Patch + Decorate 78(patchIn) NoStaticUse + Decorate 82(inb) NoStaticUse + Decorate 83(ind) NoStaticUse + Decorate 84(testblb) Block + Decorate 87(blb) NoStaticUse + Decorate 88(testbld) Block + Decorate 91(bld) NoStaticUse + Decorate 94(ivla) Location 23 + Decorate 94(ivla) NoStaticUse + Decorate 95(ivlb) Location 24 + Decorate 95(ivlb) NoStaticUse + Decorate 98(ovla) Location 23 + Decorate 98(ovla) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 10: 7(int) Constant 1512 + 11: TypeFloat 32 + 12: TypeVector 11(float) 4 + 13: TypePointer Function 12(fvec4) + 15: TypeInt 32 0 + 16: 15(int) Constant 1 + 17: TypeArray 11(float) 16 +18(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 17 + 19: 15(int) Constant 32 + 20: TypeArray 18(gl_PerVertex) 19 + 21: TypePointer Input 20 + 22(gl_in): 21(ptr) Variable Input + 23: 7(int) Constant 1 + 24: 7(int) Constant 0 + 25: TypePointer Input 12(fvec4) + 28: TypePointer Function 11(float) + 30: TypePointer Input 11(float) + 34: 7(int) Constant 2 + 38: TypePointer Input 7(int) +39(gl_PatchVerticesIn): 38(ptr) Variable Input +42(gl_PrimitiveID): 38(ptr) Variable Input + 44: TypeVector 11(float) 3 + 45: TypePointer Function 44(fvec3) + 47: TypePointer Input 44(fvec3) +48(gl_TessCoord): 47(ptr) Variable Input + 51: 15(int) Constant 4 + 52: TypeArray 11(float) 51 + 53: TypePointer Input 52 +54(gl_TessLevelOuter): 53(ptr) Variable Input + 55: 7(int) Constant 3 + 59: 15(int) Constant 2 + 60: TypeArray 11(float) 59 + 61: TypePointer Input 60 +62(gl_TessLevelInner): 61(ptr) Variable Input + 65: 15(int) Constant 3 + 66: TypeArray 11(float) 65 +67(gl_PerVertex): TypeStruct 12(fvec4) 11(float) 66 + 68: TypePointer Output 67(gl_PerVertex) + 69: 68(ptr) Variable Output + 71: TypePointer Output 12(fvec4) + 74: TypePointer Output 11(float) + 78(patchIn): 25(ptr) Variable Input + 79: TypeVector 11(float) 2 + 80: TypeArray 79(fvec2) 19 + 81: TypePointer Input 80 + 82(inb): 81(ptr) Variable Input + 83(ind): 81(ptr) Variable Input + 84(testblb): TypeStruct 7(int) + 85: TypeArray 84(testblb) 19 + 86: TypePointer Input 85 + 87(blb): 86(ptr) Variable Input + 88(testbld): TypeStruct 7(int) + 89: TypeArray 88(testbld) 19 + 90: TypePointer Input 89 + 91(bld): 90(ptr) Variable Input + 92: TypeArray 12(fvec4) 19 + 93: TypePointer Input 92 + 94(ivla): 93(ptr) Variable Input + 95(ivlb): 93(ptr) Variable Input + 96: TypeArray 12(fvec4) 59 + 97: TypePointer Output 96 + 98(ovla): 97(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(a): 8(ptr) Variable Function + 14(p): 13(ptr) Variable Function + 29(ps): 28(ptr) Variable Function + 33(cd): 28(ptr) Variable Function + 37(pvi): 8(ptr) Variable Function + 41(pid): 8(ptr) Variable Function + 46(tc): 45(ptr) Variable Function + 50(tlo): 28(ptr) Variable Function + 58(tli): 28(ptr) Variable Function + Store 9(a) 10 + 26: 25(ptr) AccessChain 22(gl_in) 23 24 + 27: 12(fvec4) Load 26 + Store 14(p) 27 + 31: 30(ptr) AccessChain 22(gl_in) 23 23 + 32: 11(float) Load 31 + Store 29(ps) 32 + 35: 30(ptr) AccessChain 22(gl_in) 23 34 34 + 36: 11(float) Load 35 + Store 33(cd) 36 + 40: 7(int) Load 39(gl_PatchVerticesIn) + Store 37(pvi) 40 + 43: 7(int) Load 42(gl_PrimitiveID) + Store 41(pid) 43 + 49: 44(fvec3) Load 48(gl_TessCoord) + Store 46(tc) 49 + 56: 30(ptr) AccessChain 54(gl_TessLevelOuter) 55 + 57: 11(float) Load 56 + Store 50(tlo) 57 + 63: 30(ptr) AccessChain 62(gl_TessLevelInner) 23 + 64: 11(float) Load 63 + Store 58(tli) 64 + 70: 12(fvec4) Load 14(p) + 72: 71(ptr) AccessChain 69 24 + Store 72 70 + 73: 11(float) Load 29(ps) + 75: 74(ptr) AccessChain 69 23 + Store 75 73 + 76: 11(float) Load 33(cd) + 77: 74(ptr) AccessChain 69 34 34 + Store 77 76 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out new file mode 100644 index 000000000..ba12e9ebd --- /dev/null +++ b/Test/baseResults/spv.420.geom.out @@ -0,0 +1,10 @@ +spv.420.geom +Warning, version 420 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked geometry stage: + + + +Missing functionality: texture gather diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out new file mode 100644 index 000000000..b1cf837f7 --- /dev/null +++ b/Test/baseResults/spv.430.vert.out @@ -0,0 +1,135 @@ +spv.430.vert +Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 62 + + Source GLSL 430 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 11 "gl_PerVertex" + MemberName 11(gl_PerVertex) 0 "gl_ClipDistance" + Name 13 "" + Name 24 "bad" + Name 35 "badorder3" + Name 39 "f" + Name 43 "uv4" + Name 44 "badorder" + Name 45 "badorder2" + Name 46 "boundblock" + MemberName 46(boundblock) 0 "aoeu" + Name 48 "boundInst" + Name 49 "anonblock" + MemberName 49(anonblock) 0 "aoeu" + Name 51 "" + Name 54 "sampb1" + Name 57 "sampb2" + Name 58 "sampb4" + Name 60 "gl_VertexID" + Name 61 "gl_InstanceID" + Decorate 11(gl_PerVertex) Block + Decorate 35(badorder3) Flat + Decorate 43(uv4) Location 4 + Decorate 43(uv4) NoStaticUse + Decorate 29 NoStaticUse + Decorate 29 NoStaticUse + Decorate 44(badorder) NoStaticUse + Decorate 45(badorder2) Smooth + Decorate 45(badorder2) Invariant + Decorate 45(badorder2) NoStaticUse + Decorate 46(boundblock) GLSLShared + Decorate 46(boundblock) Block + Decorate 48(boundInst) Binding 3 + Decorate 48(boundInst) NoStaticUse + Decorate 49(anonblock) GLSLShared + Decorate 49(anonblock) Block + Decorate 51 Binding 7 + Decorate 51 NoStaticUse + Decorate 54(sampb1) Binding 4 + Decorate 54(sampb1) NoStaticUse + Decorate 57(sampb2) Binding 5 + Decorate 57(sampb2) NoStaticUse + Decorate 58(sampb4) Binding 31 + Decorate 58(sampb4) NoStaticUse + Decorate 60(gl_VertexID) BuiltIn VertexId + Decorate 60(gl_VertexID) NoStaticUse + Decorate 61(gl_InstanceID) BuiltIn InstanceId + Decorate 61(gl_InstanceID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeInt 32 0 + 9: 8(int) Constant 3 + 10: TypeArray 7(float) 9 +11(gl_PerVertex): TypeStruct 10 + 12: TypePointer Output 11(gl_PerVertex) + 13: 12(ptr) Variable Output + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: 14(int) Constant 2 + 17: 7(float) Constant 1080872141 + 18: TypePointer Output 7(float) + 20: TypeVector 7(float) 4 + 21: 8(int) Constant 10 + 22: TypeArray 20(fvec4) 21 + 23: TypePointer Input 22 + 24(bad): 23(ptr) Variable Input + 25: TypePointer Input 20(fvec4) + 29: 7(float) Constant 1082549862 + 30: TypeBool + 34: TypePointer Output 20(fvec4) + 35(badorder3): 34(ptr) Variable Output + 38: TypePointer UniformConstant 7(float) + 39(f): 38(ptr) Variable UniformConstant + 42: TypePointer UniformConstant 20(fvec4) + 43(uv4): 42(ptr) Variable UniformConstant + 44(badorder): 25(ptr) Variable Input + 45(badorder2): 34(ptr) Variable Output + 46(boundblock): TypeStruct 14(int) + 47: TypePointer Uniform 46(boundblock) + 48(boundInst): 47(ptr) Variable Uniform + 49(anonblock): TypeStruct 14(int) + 50: TypePointer Uniform 49(anonblock) + 51: 50(ptr) Variable Uniform + 52: TypeSampler7(float) 2D filter+texture + 53: TypePointer UniformConstant 52 + 54(sampb1): 53(ptr) Variable UniformConstant + 55: TypeArray 52 21 + 56: TypePointer UniformConstant 55 + 57(sampb2): 56(ptr) Variable UniformConstant + 58(sampb4): 53(ptr) Variable UniformConstant + 59: TypePointer Input 14(int) + 60(gl_VertexID): 59(ptr) Variable Input +61(gl_InstanceID): 59(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 19: 18(ptr) AccessChain 13 15 16 + Store 19 17 + 26: 25(ptr) AccessChain 24(bad) 15 + 27: 20(fvec4) Load 26 + 28: 7(float) CompositeExtract 27 0 + 31: 30(bool) FOrdEqual 28 29 + SelectionMerge 33 None + BranchConditional 31 32 33 + 32: Label + 36: 25(ptr) AccessChain 24(bad) 15 + 37: 20(fvec4) Load 36 + Store 35(badorder3) 37 + Branch 33 + 33: Label + 40: 7(float) Load 39(f) + 41: 18(ptr) AccessChain 13 15 15 + Store 41 40 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out new file mode 100644 index 000000000..f38492467 --- /dev/null +++ b/Test/baseResults/spv.Operations.frag.out @@ -0,0 +1,516 @@ +spv.Operations.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 399 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "v" + Name 12 "uv4" + Name 21 "i" + Name 23 "ui" + Name 170 "uf" + Name 217 "b" + Name 243 "ub41" + Name 245 "ub42" + Name 302 "f" + Name 378 "gl_FragColor" + Name 396 "uiv4" + Name 398 "ub" + Decorate 378(gl_FragColor) BuiltIn FragColor + Decorate 396(uiv4) NoStaticUse + Decorate 398(ub) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer UniformConstant 8(fvec4) + 12(uv4): 11(ptr) Variable UniformConstant + 19: TypeInt 32 1 + 20: TypePointer Function 19(int) + 22: TypePointer UniformConstant 19(int) + 23(ui): 22(ptr) Variable UniformConstant + 169: TypePointer UniformConstant 7(float) + 170(uf): 169(ptr) Variable UniformConstant + 215: TypeBool + 216: TypePointer Function 215(bool) + 220: TypeVector 215(bool) 4 + 242: TypePointer UniformConstant 220(bvec4) + 243(ub41): 242(ptr) Variable UniformConstant + 245(ub42): 242(ptr) Variable UniformConstant + 292: 19(int) Constant 2 + 299: 19(int) Constant 1 + 301: TypePointer Function 7(float) + 331: TypeVector 7(float) 3 + 347: 7(float) Constant 1073741824 + 354: 7(float) Constant 1065353216 + 359: 19(int) Constant 66 + 365: 19(int) Constant 17 + 377: TypePointer Output 8(fvec4) +378(gl_FragColor): 377(ptr) Variable Output + 394: TypeVector 19(int) 4 + 395: TypePointer UniformConstant 394(ivec4) + 396(uiv4): 395(ptr) Variable UniformConstant + 397: TypePointer UniformConstant 215(bool) + 398(ub): 397(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 10(v): 9(ptr) Variable Function + 21(i): 20(ptr) Variable Function + 217(b): 216(ptr) Variable Function + 302(f): 301(ptr) Variable Function + 379: 9(ptr) Variable Function + 13: 8(fvec4) Load 12(uv4) + 14: 8(fvec4) ExtInst 1(GLSL.std.450) 8(radians) 13 + Store 10(v) 14 + 15: 8(fvec4) Load 10(v) + 16: 8(fvec4) ExtInst 1(GLSL.std.450) 9(degrees) 15 + 17: 8(fvec4) Load 10(v) + 18: 8(fvec4) FAdd 17 16 + Store 10(v) 18 + 24: 19(int) Load 23(ui) + 25: 19(int) Load 23(ui) + 26: 19(int) IMul 24 25 + Store 21(i) 26 + 27: 8(fvec4) Load 10(v) + 28: 8(fvec4) ExtInst 1(GLSL.std.450) 10(sin) 27 + 29: 8(fvec4) Load 10(v) + 30: 8(fvec4) FAdd 29 28 + Store 10(v) 30 + 31: 8(fvec4) Load 10(v) + 32: 8(fvec4) ExtInst 1(GLSL.std.450) 11(cos) 31 + 33: 8(fvec4) Load 10(v) + 34: 8(fvec4) FAdd 33 32 + Store 10(v) 34 + 35: 8(fvec4) Load 10(v) + 36: 8(fvec4) ExtInst 1(GLSL.std.450) 12(tan) 35 + 37: 8(fvec4) Load 10(v) + 38: 8(fvec4) FAdd 37 36 + Store 10(v) 38 + 39: 8(fvec4) Load 10(v) + 40: 8(fvec4) ExtInst 1(GLSL.std.450) 13(asin) 39 + 41: 8(fvec4) Load 10(v) + 42: 8(fvec4) FAdd 41 40 + Store 10(v) 42 + 43: 8(fvec4) Load 10(v) + 44: 8(fvec4) ExtInst 1(GLSL.std.450) 14(acos) 43 + 45: 8(fvec4) Load 10(v) + 46: 8(fvec4) FAdd 45 44 + Store 10(v) 46 + 47: 8(fvec4) Load 10(v) + 48: 8(fvec4) ExtInst 1(GLSL.std.450) 15(atan) 47 + 49: 8(fvec4) Load 10(v) + 50: 8(fvec4) FAdd 49 48 + Store 10(v) 50 + 51: 8(fvec4) Load 10(v) + 52: 8(fvec4) ExtInst 1(GLSL.std.450) 16(sinh) 51 + 53: 8(fvec4) Load 10(v) + 54: 8(fvec4) FAdd 53 52 + Store 10(v) 54 + 55: 8(fvec4) Load 10(v) + 56: 8(fvec4) ExtInst 1(GLSL.std.450) 17(cosh) 55 + 57: 8(fvec4) Load 10(v) + 58: 8(fvec4) FAdd 57 56 + Store 10(v) 58 + 59: 8(fvec4) Load 10(v) + 60: 8(fvec4) ExtInst 1(GLSL.std.450) 18(tanh) 59 + 61: 8(fvec4) Load 10(v) + 62: 8(fvec4) FAdd 61 60 + Store 10(v) 62 + 63: 8(fvec4) Load 10(v) + 64: 8(fvec4) ExtInst 1(GLSL.std.450) 19(asinh) 63 + 65: 8(fvec4) Load 10(v) + 66: 8(fvec4) FAdd 65 64 + Store 10(v) 66 + 67: 8(fvec4) Load 10(v) + 68: 8(fvec4) ExtInst 1(GLSL.std.450) 20(acosh) 67 + 69: 8(fvec4) Load 10(v) + 70: 8(fvec4) FAdd 69 68 + Store 10(v) 70 + 71: 8(fvec4) Load 10(v) + 72: 8(fvec4) ExtInst 1(GLSL.std.450) 21(atanh) 71 + 73: 8(fvec4) Load 10(v) + 74: 8(fvec4) FAdd 73 72 + Store 10(v) 74 + 75: 8(fvec4) Load 10(v) + 76: 8(fvec4) Load 10(v) + 77: 8(fvec4) ExtInst 1(GLSL.std.450) 23(pow) 75 76 + 78: 8(fvec4) Load 10(v) + 79: 8(fvec4) FAdd 78 77 + Store 10(v) 79 + 80: 8(fvec4) Load 10(v) + 81: 8(fvec4) ExtInst 1(GLSL.std.450) 24(exp) 80 + 82: 8(fvec4) Load 10(v) + 83: 8(fvec4) FAdd 82 81 + Store 10(v) 83 + 84: 8(fvec4) Load 10(v) + 85: 8(fvec4) ExtInst 1(GLSL.std.450) 25(log) 84 + 86: 8(fvec4) Load 10(v) + 87: 8(fvec4) FAdd 86 85 + Store 10(v) 87 + 88: 8(fvec4) Load 10(v) + 89: 8(fvec4) ExtInst 1(GLSL.std.450) 26(exp2) 88 + 90: 8(fvec4) Load 10(v) + 91: 8(fvec4) FAdd 90 89 + Store 10(v) 91 + 92: 8(fvec4) Load 10(v) + 93: 8(fvec4) ExtInst 1(GLSL.std.450) 27(log2) 92 + 94: 8(fvec4) Load 10(v) + 95: 8(fvec4) FAdd 94 93 + Store 10(v) 95 + 96: 8(fvec4) Load 10(v) + 97: 8(fvec4) ExtInst 1(GLSL.std.450) 28(sqrt) 96 + 98: 8(fvec4) Load 10(v) + 99: 8(fvec4) FAdd 98 97 + Store 10(v) 99 + 100: 8(fvec4) Load 10(v) + 101: 8(fvec4) ExtInst 1(GLSL.std.450) 29(inverseSqrt) 100 + 102: 8(fvec4) Load 10(v) + 103: 8(fvec4) FAdd 102 101 + Store 10(v) 103 + 104: 8(fvec4) Load 10(v) + 105: 8(fvec4) ExtInst 1(GLSL.std.450) 3(abs) 104 + 106: 8(fvec4) Load 10(v) + 107: 8(fvec4) FAdd 106 105 + Store 10(v) 107 + 108: 8(fvec4) Load 10(v) + 109: 8(fvec4) ExtInst 1(GLSL.std.450) 4(sign) 108 + 110: 8(fvec4) Load 10(v) + 111: 8(fvec4) FAdd 110 109 + Store 10(v) 111 + 112: 8(fvec4) Load 10(v) + 113: 8(fvec4) ExtInst 1(GLSL.std.450) 5(floor) 112 + 114: 8(fvec4) Load 10(v) + 115: 8(fvec4) FAdd 114 113 + Store 10(v) 115 + 116: 8(fvec4) Load 10(v) + 117: 8(fvec4) ExtInst 1(GLSL.std.450) 6(ceil) 116 + 118: 8(fvec4) Load 10(v) + 119: 8(fvec4) FAdd 118 117 + Store 10(v) 119 + 120: 8(fvec4) Load 10(v) + 121: 8(fvec4) ExtInst 1(GLSL.std.450) 7(fract) 120 + 122: 8(fvec4) Load 10(v) + 123: 8(fvec4) FAdd 122 121 + Store 10(v) 123 + 124: 8(fvec4) Load 10(v) + 125: 8(fvec4) Load 10(v) + 126: 8(fvec4) FMod 124 125 + 127: 8(fvec4) Load 10(v) + 128: 8(fvec4) FAdd 127 126 + Store 10(v) 128 + 129: 8(fvec4) Load 10(v) + 130: 8(fvec4) Load 10(v) + 131: 7(float) CompositeExtract 130 0 + 132: 8(fvec4) CompositeConstruct 131 131 131 131 + 133: 8(fvec4) FMod 129 132 + 134: 8(fvec4) Load 10(v) + 135: 8(fvec4) FAdd 134 133 + Store 10(v) 135 + 136: 8(fvec4) Load 10(v) + 137: 8(fvec4) Load 12(uv4) + 138: 8(fvec4) ExtInst 1(GLSL.std.450) 33(min) 136 137 + 139: 8(fvec4) Load 10(v) + 140: 8(fvec4) FAdd 139 138 + Store 10(v) 140 + 141: 8(fvec4) Load 10(v) + 142: 8(fvec4) Load 12(uv4) + 143: 8(fvec4) ExtInst 1(GLSL.std.450) 34(max) 141 142 + 144: 8(fvec4) Load 10(v) + 145: 8(fvec4) FAdd 144 143 + Store 10(v) 145 + 146: 8(fvec4) Load 10(v) + 147: 8(fvec4) Load 12(uv4) + 148: 8(fvec4) Load 12(uv4) + 149: 8(fvec4) ExtInst 1(GLSL.std.450) 35(clamp) 146 147 148 + 150: 8(fvec4) Load 10(v) + 151: 8(fvec4) FAdd 150 149 + Store 10(v) 151 + 152: 8(fvec4) Load 10(v) + 153: 8(fvec4) Load 10(v) + 154: 8(fvec4) Load 10(v) + 155: 8(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 152 153 154 + 156: 8(fvec4) Load 10(v) + 157: 8(fvec4) FAdd 156 155 + Store 10(v) 157 + 158: 8(fvec4) Load 10(v) + 159: 8(fvec4) Load 10(v) + 160: 8(fvec4) ExtInst 1(GLSL.std.450) 37(step) 158 159 + 161: 8(fvec4) Load 10(v) + 162: 8(fvec4) FAdd 161 160 + Store 10(v) 162 + 163: 8(fvec4) Load 10(v) + 164: 8(fvec4) Load 10(v) + 165: 8(fvec4) Load 10(v) + 166: 8(fvec4) ExtInst 1(GLSL.std.450) 38(smoothStep) 163 164 165 + 167: 8(fvec4) Load 10(v) + 168: 8(fvec4) FAdd 167 166 + Store 10(v) 168 + 171: 7(float) Load 170(uf) + 172: 8(fvec4) Load 10(v) + 173: 8(fvec4) ExtInst 1(GLSL.std.450) 37(step) 171 172 + 174: 8(fvec4) Load 10(v) + 175: 8(fvec4) FAdd 174 173 + Store 10(v) 175 + 176: 7(float) Load 170(uf) + 177: 7(float) Load 170(uf) + 178: 8(fvec4) Load 10(v) + 179: 8(fvec4) ExtInst 1(GLSL.std.450) 38(smoothStep) 176 177 178 + 180: 8(fvec4) Load 10(v) + 181: 8(fvec4) FAdd 180 179 + Store 10(v) 181 + 182: 8(fvec4) Load 10(v) + 183: 8(fvec4) ExtInst 1(GLSL.std.450) 61(normalize) 182 + 184: 8(fvec4) Load 10(v) + 185: 8(fvec4) FAdd 184 183 + Store 10(v) 185 + 186: 8(fvec4) Load 10(v) + 187: 8(fvec4) Load 10(v) + 188: 8(fvec4) Load 10(v) + 189: 8(fvec4) ExtInst 1(GLSL.std.450) 63(faceForward) 186 187 188 + 190: 8(fvec4) Load 10(v) + 191: 8(fvec4) FAdd 190 189 + Store 10(v) 191 + 192: 8(fvec4) Load 10(v) + 193: 8(fvec4) Load 10(v) + 194: 8(fvec4) ExtInst 1(GLSL.std.450) 64(reflect) 192 193 + 195: 8(fvec4) Load 10(v) + 196: 8(fvec4) FAdd 195 194 + Store 10(v) 196 + 197: 8(fvec4) Load 10(v) + 198: 8(fvec4) Load 10(v) + 199: 7(float) Load 170(uf) + 200: 8(fvec4) ExtInst 1(GLSL.std.450) 65(refract) 197 198 199 + 201: 8(fvec4) Load 10(v) + 202: 8(fvec4) FAdd 201 200 + Store 10(v) 202 + 203: 8(fvec4) Load 10(v) + 204: 8(fvec4) DPdx 203 + 205: 8(fvec4) Load 10(v) + 206: 8(fvec4) FAdd 205 204 + Store 10(v) 206 + 207: 8(fvec4) Load 10(v) + 208: 8(fvec4) DPdy 207 + 209: 8(fvec4) Load 10(v) + 210: 8(fvec4) FAdd 209 208 + Store 10(v) 210 + 211: 8(fvec4) Load 10(v) + 212: 8(fvec4) Fwidth 211 + 213: 8(fvec4) Load 10(v) + 214: 8(fvec4) FAdd 213 212 + Store 10(v) 214 + 218: 8(fvec4) Load 10(v) + 219: 8(fvec4) Load 12(uv4) + 221: 220(bvec4) FOrdLessThan 218 219 + 222: 215(bool) Any 221 + Store 217(b) 222 + 223: 215(bool) Load 217(b) + 224: 8(fvec4) Load 10(v) + 225: 8(fvec4) Load 12(uv4) + 226: 220(bvec4) FOrdLessThanEqual 224 225 + 227: 215(bool) Any 226 + 228: 215(bool) LogicalAnd 223 227 + Store 217(b) 228 + 229: 215(bool) Load 217(b) + 230: 8(fvec4) Load 10(v) + 231: 8(fvec4) Load 12(uv4) + 232: 220(bvec4) FOrdGreaterThan 230 231 + 233: 215(bool) Any 232 + 234: 215(bool) LogicalAnd 229 233 + Store 217(b) 234 + 235: 215(bool) Load 217(b) + 236: 8(fvec4) Load 10(v) + 237: 8(fvec4) Load 12(uv4) + 238: 220(bvec4) FOrdGreaterThanEqual 236 237 + 239: 215(bool) Any 238 + 240: 215(bool) LogicalAnd 235 239 + Store 217(b) 240 + 241: 215(bool) Load 217(b) + 244: 220(bvec4) Load 243(ub41) + 246: 220(bvec4) Load 245(ub42) + 247: 220(bvec4) IEqual 244 246 + 248: 215(bool) Any 247 + 249: 215(bool) LogicalAnd 241 248 + Store 217(b) 249 + 250: 215(bool) Load 217(b) + 251: 220(bvec4) Load 243(ub41) + 252: 220(bvec4) Load 245(ub42) + 253: 220(bvec4) INotEqual 251 252 + 254: 215(bool) Any 253 + 255: 215(bool) LogicalAnd 250 254 + Store 217(b) 255 + 256: 215(bool) Load 217(b) + 257: 220(bvec4) Load 243(ub41) + 258: 215(bool) Any 257 + 259: 215(bool) LogicalAnd 256 258 + Store 217(b) 259 + 260: 215(bool) Load 217(b) + 261: 220(bvec4) Load 243(ub41) + 262: 215(bool) All 261 + 263: 215(bool) LogicalAnd 260 262 + Store 217(b) 263 + 264: 215(bool) Load 217(b) + 265: 220(bvec4) Load 243(ub41) + 266: 220(bvec4) Not 265 + 267: 215(bool) Any 266 + 268: 215(bool) LogicalAnd 264 267 + Store 217(b) 268 + 269: 19(int) Load 21(i) + 270: 19(int) Load 23(ui) + 271: 19(int) IAdd 269 270 + 272: 19(int) Load 21(i) + 273: 19(int) IMul 271 272 + 274: 19(int) Load 23(ui) + 275: 19(int) ISub 273 274 + 276: 19(int) Load 21(i) + 277: 19(int) SDiv 275 276 + Store 21(i) 277 + 278: 19(int) Load 21(i) + 279: 19(int) Load 23(ui) + 280: 19(int) SMod 278 279 + Store 21(i) 280 + 281: 19(int) Load 21(i) + 282: 19(int) Load 23(ui) + 283: 215(bool) IEqual 281 282 + 284: 19(int) Load 21(i) + 285: 19(int) Load 23(ui) + 286: 215(bool) INotEqual 284 285 + 287: 19(int) Load 21(i) + 288: 19(int) Load 23(ui) + 289: 215(bool) IEqual 287 288 + 290: 215(bool) LogicalAnd 286 289 + 291: 19(int) Load 21(i) + 293: 215(bool) INotEqual 291 292 + 294: 215(bool) LogicalXor 290 293 + 295: 215(bool) LogicalOr 283 294 + SelectionMerge 297 None + BranchConditional 295 296 297 + 296: Label + 298: 19(int) Load 21(i) + 300: 19(int) IAdd 298 299 + Store 21(i) 300 + Branch 297 + 297: Label + 303: 7(float) Load 170(uf) + 304: 7(float) Load 170(uf) + 305: 7(float) FAdd 303 304 + 306: 7(float) Load 170(uf) + 307: 7(float) FMul 305 306 + 308: 7(float) Load 170(uf) + 309: 7(float) FSub 307 308 + 310: 7(float) Load 170(uf) + 311: 7(float) FDiv 309 310 + Store 302(f) 311 + 312: 8(fvec4) Load 10(v) + 313: 7(float) ExtInst 1(GLSL.std.450) 58(length) 312 + 314: 7(float) Load 302(f) + 315: 7(float) FAdd 314 313 + Store 302(f) 315 + 316: 8(fvec4) Load 10(v) + 317: 8(fvec4) Load 10(v) + 318: 7(float) ExtInst 1(GLSL.std.450) 59(distance) 316 317 + 319: 7(float) Load 302(f) + 320: 7(float) FAdd 319 318 + Store 302(f) 320 + 321: 8(fvec4) Load 10(v) + 322: 8(fvec4) Load 10(v) + 323: 7(float) Dot 321 322 + 324: 7(float) Load 302(f) + 325: 7(float) FAdd 324 323 + Store 302(f) 325 + 326: 7(float) Load 302(f) + 327: 7(float) Load 170(uf) + 328: 7(float) FMul 326 327 + 329: 7(float) Load 302(f) + 330: 7(float) FAdd 329 328 + Store 302(f) 330 + 332: 8(fvec4) Load 10(v) + 333: 331(fvec3) VectorShuffle 332 332 0 1 2 + 334: 8(fvec4) Load 10(v) + 335: 331(fvec3) VectorShuffle 334 334 0 1 2 + 336: 331(fvec3) ExtInst 1(GLSL.std.450) 60(cross) 333 335 + 337: 7(float) CompositeExtract 336 0 + 338: 7(float) Load 302(f) + 339: 7(float) FAdd 338 337 + Store 302(f) 339 + 340: 7(float) Load 302(f) + 341: 7(float) Load 170(uf) + 342: 215(bool) FOrdEqual 340 341 + 343: 7(float) Load 302(f) + 344: 7(float) Load 170(uf) + 345: 215(bool) FOrdNotEqual 343 344 + 346: 7(float) Load 302(f) + 348: 215(bool) FOrdNotEqual 346 347 + 349: 215(bool) LogicalAnd 345 348 + 350: 215(bool) LogicalOr 342 349 + SelectionMerge 352 None + BranchConditional 350 351 352 + 351: Label + 353: 7(float) Load 302(f) + 355: 7(float) FAdd 353 354 + Store 302(f) 355 + Branch 352 + 352: Label + 356: 19(int) Load 23(ui) + 357: 19(int) Load 21(i) + 358: 19(int) BitwiseAnd 357 356 + Store 21(i) 358 + 360: 19(int) Load 21(i) + 361: 19(int) BitwiseOr 360 359 + Store 21(i) 361 + 362: 19(int) Load 23(ui) + 363: 19(int) Load 21(i) + 364: 19(int) BitwiseXor 363 362 + Store 21(i) 364 + 366: 19(int) Load 21(i) + 367: 19(int) SMod 366 365 + Store 21(i) 367 + 368: 19(int) Load 21(i) + 369: 19(int) ShiftRightArithmetic 368 292 + Store 21(i) 369 + 370: 19(int) Load 23(ui) + 371: 19(int) Load 21(i) + 372: 19(int) ShiftLeftLogical 371 370 + Store 21(i) 372 + 373: 19(int) Load 21(i) + 374: 19(int) Not 373 + Store 21(i) 374 + 375: 215(bool) Load 217(b) + 376: 215(bool) Not 375 + Store 217(b) 376 + 380: 215(bool) Load 217(b) + SelectionMerge 382 None + BranchConditional 380 381 391 + 381: Label + 383: 19(int) Load 21(i) + 384: 7(float) ConvertSToF 383 + 385: 8(fvec4) CompositeConstruct 384 384 384 384 + 386: 7(float) Load 302(f) + 387: 8(fvec4) CompositeConstruct 386 386 386 386 + 388: 8(fvec4) FAdd 385 387 + 389: 8(fvec4) Load 10(v) + 390: 8(fvec4) FAdd 388 389 + Store 379 390 + Branch 382 + 391: Label + 392: 8(fvec4) Load 10(v) + Store 379 392 + Branch 382 + 382: Label + 393: 8(fvec4) Load 379 + Store 378(gl_FragColor) 393 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out new file mode 100644 index 000000000..51d4d608d --- /dev/null +++ b/Test/baseResults/spv.aggOps.frag.out @@ -0,0 +1,11 @@ +spv.aggOps.frag +WARNING: 0:4: varying deprecated in version 130; may be removed in future release +WARNING: 0:6: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +Missing functionality: Composite comparison of non-vectors diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out new file mode 100644 index 000000000..01a2239fb --- /dev/null +++ b/Test/baseResults/spv.always-discard.frag.out @@ -0,0 +1,133 @@ +spv.always-discard.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 81 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "white" + Name 13 "black" + Name 16 "color" + Name 19 "x" + Name 22 "tex_coord" + Name 28 "y" + Name 33 "radius" + Name 56 "gl_FragColor" + Decorate 22(tex_coord) Smooth + Decorate 56(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: 7(float) Constant 1065353216 + 12: 8(fvec4) ConstantComposite 11 11 11 11 + 14: 7(float) Constant 1045220557 + 15: 8(fvec4) ConstantComposite 14 14 14 14 + 18: TypePointer Function 7(float) + 20: TypeVector 7(float) 2 + 21: TypePointer Input 20(fvec2) + 22(tex_coord): 21(ptr) Variable Input + 25: 7(float) Constant 1073741824 + 43: TypeBool + 48: 7(float) Constant 1066192077 + 55: TypePointer Output 8(fvec4) +56(gl_FragColor): 55(ptr) Variable Output + 59: 7(float) Constant 1067030938 + 68: 7(float) Constant 1061158912 + 73: 7(float) Constant 1098907648 + 4(main): 2 Function None 3 + 5: Label + 10(white): 9(ptr) Variable Function + 13(black): 9(ptr) Variable Function + 16(color): 9(ptr) Variable Function + 19(x): 18(ptr) Variable Function + 28(y): 18(ptr) Variable Function + 33(radius): 18(ptr) Variable Function + Store 10(white) 12 + Store 13(black) 15 + 17: 8(fvec4) Load 10(white) + Store 16(color) 17 + 23: 20(fvec2) Load 22(tex_coord) + 24: 7(float) CompositeExtract 23 0 + 26: 7(float) FMul 24 25 + 27: 7(float) FSub 26 11 + Store 19(x) 27 + 29: 20(fvec2) Load 22(tex_coord) + 30: 7(float) CompositeExtract 29 1 + 31: 7(float) FMul 30 25 + 32: 7(float) FSub 31 11 + Store 28(y) 32 + 34: 7(float) Load 19(x) + 35: 7(float) Load 19(x) + 36: 7(float) FMul 34 35 + 37: 7(float) Load 28(y) + 38: 7(float) Load 28(y) + 39: 7(float) FMul 37 38 + 40: 7(float) FAdd 36 39 + 41: 7(float) ExtInst 1(GLSL.std.450) 28(sqrt) 40 + Store 33(radius) 41 + 42: 7(float) Load 33(radius) + 44: 43(bool) FOrdGreaterThan 42 11 + SelectionMerge 46 None + BranchConditional 44 45 46 + 45: Label + 47: 7(float) Load 33(radius) + 49: 43(bool) FOrdGreaterThan 47 48 + SelectionMerge 51 None + BranchConditional 49 50 51 + 50: Label + 52: 8(fvec4) Load 16(color) + 53: 8(fvec4) CompositeConstruct 11 11 11 11 + 54: 8(fvec4) FAdd 52 53 + Store 16(color) 54 + Branch 51 + 51: Label + 57: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 57 + 58: 7(float) Load 33(radius) + 60: 43(bool) FOrdGreaterThan 58 59 + SelectionMerge 62 None + BranchConditional 60 61 62 + 61: Label + 63: 8(fvec4) Load 16(color) + 64: 8(fvec4) CompositeConstruct 11 11 11 11 + 65: 8(fvec4) FAdd 63 64 + Store 16(color) 65 + Branch 62 + 62: Label + Branch 46 + 46: Label + Kill + 66: Label + 67: 7(float) Load 33(radius) + 69: 43(bool) FOrdGreaterThanEqual 67 68 + SelectionMerge 71 None + BranchConditional 69 70 71 + 70: Label + 72: 7(float) Load 33(radius) + 74: 7(float) ExtInst 1(GLSL.std.450) 23(pow) 72 73 + 75: 7(float) FDiv 74 25 + 76: 7(float) ExtInst 1(GLSL.std.450) 3(abs) 75 + 77: 8(fvec4) Load 16(color) + 78: 8(fvec4) CompositeConstruct 76 76 76 76 + 79: 8(fvec4) FSub 77 78 + Store 16(color) 79 + Branch 71 + 71: Label + 80: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 80 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out new file mode 100644 index 000000000..c4096b0aa --- /dev/null +++ b/Test/baseResults/spv.always-discard2.frag.out @@ -0,0 +1,67 @@ +spv.always-discard2.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 37 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "white" + Name 13 "black" + Name 16 "color" + Name 19 "x" + Name 22 "tex_coord" + Name 28 "y" + Name 35 "gl_FragColor" + Decorate 22(tex_coord) Smooth + Decorate 35(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: 7(float) Constant 1065353216 + 12: 8(fvec4) ConstantComposite 11 11 11 11 + 14: 7(float) Constant 1045220557 + 15: 8(fvec4) ConstantComposite 14 14 14 14 + 18: TypePointer Function 7(float) + 20: TypeVector 7(float) 2 + 21: TypePointer Input 20(fvec2) + 22(tex_coord): 21(ptr) Variable Input + 25: 7(float) Constant 1073741824 + 34: TypePointer Output 8(fvec4) +35(gl_FragColor): 34(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(white): 9(ptr) Variable Function + 13(black): 9(ptr) Variable Function + 16(color): 9(ptr) Variable Function + 19(x): 18(ptr) Variable Function + 28(y): 18(ptr) Variable Function + Store 10(white) 12 + Store 13(black) 15 + 17: 8(fvec4) Load 10(white) + Store 16(color) 17 + 23: 20(fvec2) Load 22(tex_coord) + 24: 7(float) CompositeExtract 23 0 + 26: 7(float) FMul 24 25 + 27: 7(float) FSub 26 11 + Store 19(x) 27 + 29: 20(fvec2) Load 22(tex_coord) + 30: 7(float) CompositeExtract 29 1 + 31: 7(float) FMul 30 25 + 32: 7(float) FSub 31 11 + Store 28(y) 32 + Kill + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out new file mode 100644 index 000000000..f66685f21 --- /dev/null +++ b/Test/baseResults/spv.conditionalDiscard.frag.out @@ -0,0 +1,64 @@ +spv.conditionalDiscard.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 36 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "v" + Name 13 "tex" + Name 17 "coord" + Name 34 "gl_FragColor" + Decorate 17(coord) Smooth + Decorate 34(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypeSampler7(float) 2D filter+texture + 12: TypePointer UniformConstant 11 + 13(tex): 12(ptr) Variable UniformConstant + 15: TypeVector 7(float) 2 + 16: TypePointer Input 15(fvec2) + 17(coord): 16(ptr) Variable Input + 21: 7(float) Constant 1036831949 + 22: 7(float) Constant 1045220557 + 23: 7(float) Constant 1050253722 + 24: 7(float) Constant 1053609165 + 25: 8(fvec4) ConstantComposite 21 22 23 24 + 26: TypeBool + 27: TypeVector 26(bool) 4 + 33: TypePointer Output 8(fvec4) +34(gl_FragColor): 33(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(v): 9(ptr) Variable Function + 14: 11 Load 13(tex) + 18: 15(fvec2) Load 17(coord) + 19: 8(fvec4) TextureSample 14 18 + Store 10(v) 19 + 20: 8(fvec4) Load 10(v) + 28: 27(bvec4) FOrdEqual 20 25 + 29: 26(bool) All 28 + SelectionMerge 31 None + BranchConditional 29 30 31 + 30: Label + Kill + 31: Label + 35: 8(fvec4) Load 10(v) + Store 34(gl_FragColor) 35 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out new file mode 100644 index 000000000..dd1679afc --- /dev/null +++ b/Test/baseResults/spv.conversion.frag.out @@ -0,0 +1,580 @@ +spv.conversion.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 444 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "b" + Name 12 "u_i" + Name 19 "u_f" + Name 26 "b2" + Name 34 "b3" + Name 40 "i_i" + Name 46 "b4" + Name 54 "i_f" + Name 59 "i" + Name 69 "i2" + Name 72 "u_f2" + Name 82 "i3" + Name 85 "u_f3" + Name 95 "i4" + Name 98 "u_f4" + Name 107 "f" + Name 111 "f2" + Name 115 "f3" + Name 119 "f4" + Name 158 "i_i4" + Name 313 "gl_FragColor" + Name 406 "cv2" + Name 407 "cv5" + Name 417 "u_b" + Name 419 "u_b2" + Name 421 "u_b3" + Name 423 "u_b4" + Name 425 "u_i2" + Name 427 "u_i3" + Name 429 "u_i4" + Name 430 "i_b" + Name 431 "i_b2" + Name 432 "i_b3" + Name 433 "i_b4" + Name 435 "i_i2" + Name 437 "i_i3" + Name 439 "i_f2" + Name 441 "i_f3" + Name 443 "i_f4" + Decorate 40(i_i) Flat + Decorate 54(i_f) Smooth + Decorate 158(i_i4) Flat + Decorate 313(gl_FragColor) BuiltIn FragColor + Decorate 417(u_b) NoStaticUse + Decorate 419(u_b2) NoStaticUse + Decorate 421(u_b3) NoStaticUse + Decorate 423(u_b4) NoStaticUse + Decorate 425(u_i2) NoStaticUse + Decorate 427(u_i3) NoStaticUse + Decorate 429(u_i4) NoStaticUse + Decorate 430(i_b) NoStaticUse + Decorate 431(i_b2) NoStaticUse + Decorate 432(i_b3) NoStaticUse + Decorate 433(i_b4) NoStaticUse + Decorate 435(i_i2) Flat + Decorate 435(i_i2) NoStaticUse + Decorate 437(i_i3) Flat + Decorate 437(i_i3) NoStaticUse + Decorate 439(i_f2) Smooth + Decorate 439(i_f2) NoStaticUse + Decorate 441(i_f3) Smooth + Decorate 441(i_f3) NoStaticUse + Decorate 443(i_f4) Smooth + Decorate 443(i_f4) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeBool + 8: TypePointer Function 7(bool) + 10: TypeInt 32 1 + 11: TypePointer UniformConstant 10(int) + 12(u_i): 11(ptr) Variable UniformConstant + 14: TypeInt 32 0 + 15: 14(int) Constant 0 + 17: TypeFloat 32 + 18: TypePointer UniformConstant 17(float) + 19(u_f): 18(ptr) Variable UniformConstant + 21: 17(float) Constant 0 + 24: TypeVector 7(bool) 2 + 25: TypePointer Function 24(bvec2) + 32: TypeVector 7(bool) 3 + 33: TypePointer Function 32(bvec3) + 39: TypePointer Input 10(int) + 40(i_i): 39(ptr) Variable Input + 44: TypeVector 7(bool) 4 + 45: TypePointer Function 44(bvec4) + 53: TypePointer Input 17(float) + 54(i_f): 53(ptr) Variable Input + 58: TypePointer Function 10(int) + 63: 10(int) Constant 0 + 64: 10(int) Constant 1 + 67: TypeVector 10(int) 2 + 68: TypePointer Function 67(ivec2) + 70: TypeVector 17(float) 2 + 71: TypePointer UniformConstant 70(fvec2) + 72(u_f2): 71(ptr) Variable UniformConstant + 76: 67(ivec2) ConstantComposite 63 63 + 77: 67(ivec2) ConstantComposite 64 64 + 80: TypeVector 10(int) 3 + 81: TypePointer Function 80(ivec3) + 83: TypeVector 17(float) 3 + 84: TypePointer UniformConstant 83(fvec3) + 85(u_f3): 84(ptr) Variable UniformConstant + 89: 80(ivec3) ConstantComposite 63 63 63 + 90: 80(ivec3) ConstantComposite 64 64 64 + 93: TypeVector 10(int) 4 + 94: TypePointer Function 93(ivec4) + 96: TypeVector 17(float) 4 + 97: TypePointer UniformConstant 96(fvec4) + 98(u_f4): 97(ptr) Variable UniformConstant + 102: 93(ivec4) ConstantComposite 63 63 63 63 + 103: 93(ivec4) ConstantComposite 64 64 64 64 + 106: TypePointer Function 17(float) + 110: TypePointer Function 70(fvec2) + 114: TypePointer Function 83(fvec3) + 118: TypePointer Function 96(fvec4) + 125: 17(float) Constant 1065353216 + 133: 70(fvec2) ConstantComposite 21 21 + 134: 70(fvec2) ConstantComposite 125 125 + 142: 83(fvec3) ConstantComposite 21 21 21 + 143: 83(fvec3) ConstantComposite 125 125 125 + 151: 96(fvec4) ConstantComposite 21 21 21 21 + 152: 96(fvec4) ConstantComposite 125 125 125 125 + 157: TypePointer Input 93(ivec4) + 158(i_i4): 157(ptr) Variable Input + 160: TypeVector 14(int) 4 + 161: 160(ivec4) ConstantComposite 15 15 15 15 + 312: TypePointer Output 96(fvec4) +313(gl_FragColor): 312(ptr) Variable Output + 416: TypePointer UniformConstant 7(bool) + 417(u_b): 416(ptr) Variable UniformConstant + 418: TypePointer UniformConstant 24(bvec2) + 419(u_b2): 418(ptr) Variable UniformConstant + 420: TypePointer UniformConstant 32(bvec3) + 421(u_b3): 420(ptr) Variable UniformConstant + 422: TypePointer UniformConstant 44(bvec4) + 423(u_b4): 422(ptr) Variable UniformConstant + 424: TypePointer UniformConstant 67(ivec2) + 425(u_i2): 424(ptr) Variable UniformConstant + 426: TypePointer UniformConstant 80(ivec3) + 427(u_i3): 426(ptr) Variable UniformConstant + 428: TypePointer UniformConstant 93(ivec4) + 429(u_i4): 428(ptr) Variable UniformConstant + 430(i_b): 416(ptr) Variable UniformConstant + 431(i_b2): 418(ptr) Variable UniformConstant + 432(i_b3): 420(ptr) Variable UniformConstant + 433(i_b4): 422(ptr) Variable UniformConstant + 434: TypePointer Input 67(ivec2) + 435(i_i2): 434(ptr) Variable Input + 436: TypePointer Input 80(ivec3) + 437(i_i3): 436(ptr) Variable Input + 438: TypePointer Input 70(fvec2) + 439(i_f2): 438(ptr) Variable Input + 440: TypePointer Input 83(fvec3) + 441(i_f3): 440(ptr) Variable Input + 442: TypePointer Input 96(fvec4) + 443(i_f4): 442(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 9(b): 8(ptr) Variable Function + 26(b2): 25(ptr) Variable Function + 34(b3): 33(ptr) Variable Function + 46(b4): 45(ptr) Variable Function + 59(i): 58(ptr) Variable Function + 69(i2): 68(ptr) Variable Function + 82(i3): 81(ptr) Variable Function + 95(i4): 94(ptr) Variable Function + 107(f): 106(ptr) Variable Function + 111(f2): 110(ptr) Variable Function + 115(f3): 114(ptr) Variable Function + 119(f4): 118(ptr) Variable Function + 289: 106(ptr) Variable Function + 299: 106(ptr) Variable Function + 314: 118(ptr) Variable Function + 406(cv2): 94(ptr) Variable Function + 407(cv5): 45(ptr) Variable Function + 13: 10(int) Load 12(u_i) + 16: 7(bool) INotEqual 13 15 + 20: 17(float) Load 19(u_f) + 22: 7(bool) FOrdNotEqual 20 21 + 23: 7(bool) LogicalXor 16 22 + Store 9(b) 23 + 27: 10(int) Load 12(u_i) + 28: 7(bool) INotEqual 27 15 + 29: 17(float) Load 19(u_f) + 30: 7(bool) FOrdNotEqual 29 21 + 31: 24(bvec2) CompositeConstruct 28 30 + Store 26(b2) 31 + 35: 10(int) Load 12(u_i) + 36: 7(bool) INotEqual 35 15 + 37: 17(float) Load 19(u_f) + 38: 7(bool) FOrdNotEqual 37 21 + 41: 10(int) Load 40(i_i) + 42: 7(bool) INotEqual 41 15 + 43: 32(bvec3) CompositeConstruct 36 38 42 + Store 34(b3) 43 + 47: 10(int) Load 12(u_i) + 48: 7(bool) INotEqual 47 15 + 49: 17(float) Load 19(u_f) + 50: 7(bool) FOrdNotEqual 49 21 + 51: 10(int) Load 40(i_i) + 52: 7(bool) INotEqual 51 15 + 55: 17(float) Load 54(i_f) + 56: 7(bool) FOrdNotEqual 55 21 + 57: 44(bvec4) CompositeConstruct 48 50 52 56 + Store 46(b4) 57 + 60: 17(float) Load 19(u_f) + 61: 10(int) ConvertFToS 60 + 62: 7(bool) Load 9(b) + 65: 10(int) Select 62 64 63 + 66: 10(int) IAdd 61 65 + Store 59(i) 66 + 73: 70(fvec2) Load 72(u_f2) + 74: 67(ivec2) ConvertFToS 73 + 75: 24(bvec2) Load 26(b2) + 78: 67(ivec2) Select 75 77 76 + 79: 67(ivec2) IAdd 74 78 + Store 69(i2) 79 + 86: 83(fvec3) Load 85(u_f3) + 87: 80(ivec3) ConvertFToS 86 + 88: 32(bvec3) Load 34(b3) + 91: 80(ivec3) Select 88 90 89 + 92: 80(ivec3) IAdd 87 91 + Store 82(i3) 92 + 99: 96(fvec4) Load 98(u_f4) + 100: 93(ivec4) ConvertFToS 99 + 101: 44(bvec4) Load 46(b4) + 104: 93(ivec4) Select 101 103 102 + 105: 93(ivec4) IAdd 100 104 + Store 95(i4) 105 + 108: 10(int) Load 59(i) + 109: 17(float) ConvertSToF 108 + Store 107(f) 109 + 112: 67(ivec2) Load 69(i2) + 113: 70(fvec2) ConvertSToF 112 + Store 111(f2) 113 + 116: 80(ivec3) Load 82(i3) + 117: 83(fvec3) ConvertSToF 116 + Store 115(f3) 117 + 120: 93(ivec4) Load 95(i4) + 121: 96(fvec4) ConvertSToF 120 + Store 119(f4) 121 + 122: 10(int) Load 59(i) + 123: 17(float) ConvertSToF 122 + 124: 7(bool) Load 9(b) + 126: 17(float) Select 124 125 21 + 127: 17(float) FAdd 123 126 + 128: 17(float) Load 107(f) + 129: 17(float) FAdd 128 127 + Store 107(f) 129 + 130: 67(ivec2) Load 69(i2) + 131: 70(fvec2) ConvertSToF 130 + 132: 24(bvec2) Load 26(b2) + 135: 70(fvec2) Select 132 134 133 + 136: 70(fvec2) FAdd 131 135 + 137: 70(fvec2) Load 111(f2) + 138: 70(fvec2) FSub 137 136 + Store 111(f2) 138 + 139: 80(ivec3) Load 82(i3) + 140: 83(fvec3) ConvertSToF 139 + 141: 32(bvec3) Load 34(b3) + 144: 83(fvec3) Select 141 143 142 + 145: 83(fvec3) FAdd 140 144 + 146: 83(fvec3) Load 115(f3) + 147: 83(fvec3) FDiv 146 145 + Store 115(f3) 147 + 148: 93(ivec4) Load 95(i4) + 149: 96(fvec4) ConvertSToF 148 + 150: 44(bvec4) Load 46(b4) + 153: 96(fvec4) Select 150 152 151 + 154: 96(fvec4) FAdd 149 153 + 155: 96(fvec4) Load 119(f4) + 156: 96(fvec4) FAdd 155 154 + Store 119(f4) 156 + 159: 93(ivec4) Load 158(i_i4) + 162: 44(bvec4) INotEqual 159 161 + 163: 96(fvec4) Select 162 152 151 + 164: 96(fvec4) Load 119(f4) + 165: 96(fvec4) FAdd 164 163 + Store 119(f4) 165 + 166: 96(fvec4) Load 98(u_f4) + 167: 44(bvec4) FOrdNotEqual 166 151 + 168: 96(fvec4) Select 167 152 151 + 169: 96(fvec4) Load 119(f4) + 170: 96(fvec4) FAdd 169 168 + Store 119(f4) 170 + 171: 17(float) Load 107(f) + 172: 10(int) Load 59(i) + 173: 17(float) ConvertSToF 172 + 174: 17(float) FSub 171 173 + 175: 17(float) Load 107(f) + 176: 17(float) FAdd 175 174 + Store 107(f) 176 + 177: 17(float) Load 107(f) + 178: 10(int) Load 59(i) + 179: 17(float) ConvertSToF 178 + 180: 70(fvec2) CompositeConstruct 177 179 + 181: 67(ivec2) Load 69(i2) + 182: 70(fvec2) ConvertSToF 181 + 183: 70(fvec2) FAdd 180 182 + 184: 70(fvec2) Load 111(f2) + 185: 70(fvec2) FAdd 184 183 + Store 111(f2) 185 + 186: 80(ivec3) Load 82(i3) + 187: 83(fvec3) ConvertSToF 186 + 188: 17(float) Load 107(f) + 189: 10(int) Load 59(i) + 190: 17(float) ConvertSToF 189 + 191: 17(float) Load 107(f) + 192: 83(fvec3) CompositeConstruct 188 190 191 + 193: 83(fvec3) FAdd 187 192 + 194: 83(fvec3) Load 115(f3) + 195: 83(fvec3) FAdd 194 193 + Store 115(f3) 195 + 196: 7(bool) Load 9(b) + 197: 17(float) Select 196 125 21 + 198: 10(int) Load 59(i) + 199: 17(float) ConvertSToF 198 + 200: 17(float) Load 107(f) + 201: 10(int) Load 59(i) + 202: 17(float) ConvertSToF 201 + 203: 96(fvec4) CompositeConstruct 197 199 200 202 + 204: 93(ivec4) Load 95(i4) + 205: 96(fvec4) ConvertSToF 204 + 206: 96(fvec4) FAdd 203 205 + 207: 96(fvec4) Load 119(f4) + 208: 96(fvec4) FAdd 207 206 + Store 119(f4) 208 + 209: 17(float) Load 107(f) + 210: 10(int) Load 59(i) + 211: 17(float) ConvertSToF 210 + 212: 70(fvec2) CompositeConstruct 209 211 + 213: 10(int) Load 59(i) + 214: 17(float) ConvertSToF 213 + 215: 70(fvec2) VectorTimesScalar 212 214 + 216: 70(fvec2) Load 111(f2) + 217: 70(fvec2) FAdd 216 215 + Store 111(f2) 217 + 218: 17(float) Load 107(f) + 219: 10(int) Load 59(i) + 220: 17(float) ConvertSToF 219 + 221: 17(float) Load 107(f) + 222: 83(fvec3) CompositeConstruct 218 220 221 + 223: 10(int) Load 59(i) + 224: 17(float) ConvertSToF 223 + 225: 83(fvec3) CompositeConstruct 224 224 224 + 226: 83(fvec3) FAdd 222 225 + 227: 83(fvec3) Load 115(f3) + 228: 83(fvec3) FAdd 227 226 + Store 115(f3) 228 + 229: 10(int) Load 59(i) + 230: 17(float) ConvertSToF 229 + 231: 7(bool) Load 9(b) + 232: 17(float) Select 231 125 21 + 233: 10(int) Load 59(i) + 234: 17(float) ConvertSToF 233 + 235: 17(float) Load 107(f) + 236: 10(int) Load 59(i) + 237: 17(float) ConvertSToF 236 + 238: 96(fvec4) CompositeConstruct 232 234 235 237 + 239: 96(fvec4) CompositeConstruct 230 230 230 230 + 240: 96(fvec4) FSub 239 238 + 241: 96(fvec4) Load 119(f4) + 242: 96(fvec4) FAdd 241 240 + Store 119(f4) 242 + 243: 17(float) Load 107(f) + 244: 10(int) ConvertFToS 243 + 245: 10(int) Load 59(i) + 246: 67(ivec2) CompositeConstruct 244 245 + 247: 67(ivec2) Load 69(i2) + 248: 67(ivec2) IAdd 247 246 + Store 69(i2) 248 + 249: 17(float) Load 107(f) + 250: 10(int) ConvertFToS 249 + 251: 10(int) Load 59(i) + 252: 17(float) Load 107(f) + 253: 10(int) ConvertFToS 252 + 254: 80(ivec3) CompositeConstruct 250 251 253 + 255: 80(ivec3) Load 82(i3) + 256: 80(ivec3) IAdd 255 254 + Store 82(i3) 256 + 257: 7(bool) Load 9(b) + 258: 10(int) Select 257 64 63 + 259: 10(int) Load 59(i) + 260: 17(float) Load 107(f) + 261: 10(int) ConvertFToS 260 + 262: 10(int) Load 59(i) + 263: 93(ivec4) CompositeConstruct 258 259 261 262 + 264: 93(ivec4) Load 95(i4) + 265: 93(ivec4) IAdd 264 263 + Store 95(i4) 265 + 266: 17(float) Load 107(f) + 267: 10(int) Load 59(i) + 268: 17(float) ConvertSToF 267 + 269: 7(bool) FOrdLessThan 266 268 + 270: 10(int) Load 59(i) + 271: 17(float) ConvertSToF 270 + 272: 17(float) Load 107(f) + 273: 7(bool) FOrdLessThan 271 272 + 274: 7(bool) LogicalOr 269 273 + 275: 70(fvec2) Load 111(f2) + 276: 67(ivec2) Load 69(i2) + 277: 70(fvec2) ConvertSToF 276 + 278: 24(bvec2) FOrdEqual 275 277 + 279: 7(bool) All 278 + 280: 7(bool) LogicalOr 274 279 + 281: 80(ivec3) Load 82(i3) + 282: 83(fvec3) ConvertSToF 281 + 283: 83(fvec3) Load 115(f3) + 284: 32(bvec3) FOrdNotEqual 282 283 + 285: 7(bool) Any 284 + 286: 7(bool) LogicalOr 280 285 + SelectionMerge 288 None + BranchConditional 286 287 288 + 287: Label + 290: 7(bool) Load 9(b) + SelectionMerge 292 None + BranchConditional 290 291 295 + 291: Label + 293: 10(int) Load 59(i) + 294: 17(float) ConvertSToF 293 + Store 289 294 + Branch 292 + 295: Label + 296: 70(fvec2) Load 111(f2) + 297: 17(float) CompositeExtract 296 0 + Store 289 297 + Branch 292 + 292: Label + 298: 17(float) Load 289 + 300: 24(bvec2) Load 26(b2) + 301: 7(bool) CompositeExtract 300 0 + SelectionMerge 303 None + BranchConditional 301 302 306 + 302: Label + 304: 83(fvec3) Load 115(f3) + 305: 17(float) CompositeExtract 304 0 + Store 299 305 + Branch 303 + 306: Label + 307: 67(ivec2) Load 69(i2) + 308: 10(int) CompositeExtract 307 1 + 309: 17(float) ConvertSToF 308 + Store 299 309 + Branch 303 + 303: Label + 310: 17(float) Load 299 + 311: 17(float) FAdd 298 310 + Store 107(f) 311 + Branch 288 + 288: Label + 315: 7(bool) Load 9(b) + 316: 24(bvec2) Load 26(b2) + 317: 7(bool) CompositeExtract 316 0 + 318: 7(bool) LogicalOr 315 317 + 319: 24(bvec2) Load 26(b2) + 320: 7(bool) CompositeExtract 319 1 + 321: 7(bool) LogicalOr 318 320 + 322: 32(bvec3) Load 34(b3) + 323: 7(bool) CompositeExtract 322 0 + 324: 7(bool) LogicalOr 321 323 + 325: 32(bvec3) Load 34(b3) + 326: 7(bool) CompositeExtract 325 1 + 327: 7(bool) LogicalOr 324 326 + 328: 32(bvec3) Load 34(b3) + 329: 7(bool) CompositeExtract 328 2 + 330: 7(bool) LogicalOr 327 329 + 331: 44(bvec4) Load 46(b4) + 332: 7(bool) CompositeExtract 331 0 + 333: 7(bool) LogicalOr 330 332 + 334: 44(bvec4) Load 46(b4) + 335: 7(bool) CompositeExtract 334 1 + 336: 7(bool) LogicalOr 333 335 + 337: 44(bvec4) Load 46(b4) + 338: 7(bool) CompositeExtract 337 2 + 339: 7(bool) LogicalOr 336 338 + 340: 44(bvec4) Load 46(b4) + 341: 7(bool) CompositeExtract 340 3 + 342: 7(bool) LogicalOr 339 341 + SelectionMerge 344 None + BranchConditional 342 343 404 + 343: Label + 345: 10(int) Load 59(i) + 346: 67(ivec2) Load 69(i2) + 347: 10(int) CompositeExtract 346 0 + 348: 10(int) IAdd 345 347 + 349: 67(ivec2) Load 69(i2) + 350: 10(int) CompositeExtract 349 1 + 351: 10(int) IAdd 348 350 + 352: 80(ivec3) Load 82(i3) + 353: 10(int) CompositeExtract 352 0 + 354: 10(int) IAdd 351 353 + 355: 80(ivec3) Load 82(i3) + 356: 10(int) CompositeExtract 355 1 + 357: 10(int) IAdd 354 356 + 358: 80(ivec3) Load 82(i3) + 359: 10(int) CompositeExtract 358 2 + 360: 10(int) IAdd 357 359 + 361: 93(ivec4) Load 95(i4) + 362: 10(int) CompositeExtract 361 0 + 363: 10(int) IAdd 360 362 + 364: 93(ivec4) Load 95(i4) + 365: 10(int) CompositeExtract 364 1 + 366: 10(int) IAdd 363 365 + 367: 93(ivec4) Load 95(i4) + 368: 10(int) CompositeExtract 367 2 + 369: 10(int) IAdd 366 368 + 370: 93(ivec4) Load 95(i4) + 371: 10(int) CompositeExtract 370 3 + 372: 10(int) IAdd 369 371 + 373: 17(float) ConvertSToF 372 + 374: 17(float) Load 107(f) + 375: 17(float) FAdd 373 374 + 376: 70(fvec2) Load 111(f2) + 377: 17(float) CompositeExtract 376 0 + 378: 17(float) FAdd 375 377 + 379: 70(fvec2) Load 111(f2) + 380: 17(float) CompositeExtract 379 1 + 381: 17(float) FAdd 378 380 + 382: 83(fvec3) Load 115(f3) + 383: 17(float) CompositeExtract 382 0 + 384: 17(float) FAdd 381 383 + 385: 83(fvec3) Load 115(f3) + 386: 17(float) CompositeExtract 385 1 + 387: 17(float) FAdd 384 386 + 388: 83(fvec3) Load 115(f3) + 389: 17(float) CompositeExtract 388 2 + 390: 17(float) FAdd 387 389 + 391: 96(fvec4) Load 119(f4) + 392: 17(float) CompositeExtract 391 0 + 393: 17(float) FAdd 390 392 + 394: 96(fvec4) Load 119(f4) + 395: 17(float) CompositeExtract 394 1 + 396: 17(float) FAdd 393 395 + 397: 96(fvec4) Load 119(f4) + 398: 17(float) CompositeExtract 397 2 + 399: 17(float) FAdd 396 398 + 400: 96(fvec4) Load 119(f4) + 401: 17(float) CompositeExtract 400 3 + 402: 17(float) FAdd 399 401 + 403: 96(fvec4) CompositeConstruct 402 402 402 402 + Store 314 403 + Branch 344 + 404: Label + Store 314 152 + Branch 344 + 344: Label + 405: 96(fvec4) Load 314 + Store 313(gl_FragColor) 405 + Store 406(cv2) 103 + 408: 93(ivec4) Load 406(cv2) + 409: 44(bvec4) INotEqual 408 161 + Store 407(cv5) 409 + 410: 44(bvec4) Load 407(cv5) + 411: 96(fvec4) Select 410 152 151 + 412: 17(float) CompositeExtract 411 0 + 413: 96(fvec4) Load 313(gl_FragColor) + 414: 96(fvec4) CompositeConstruct 412 412 412 412 + 415: 96(fvec4) FAdd 413 414 + Store 313(gl_FragColor) 415 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out new file mode 100644 index 000000000..f33acd743 --- /dev/null +++ b/Test/baseResults/spv.dataOut.frag.out @@ -0,0 +1,45 @@ +spv.dataOut.frag +WARNING: 0:3: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 21 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 13 "gl_FragData" + Name 17 "Color" + Decorate 13(gl_FragData) BuiltIn FragColor + Decorate 17(Color) Smooth + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypeInt 32 0 + 10: 9(int) Constant 32 + 11: TypeArray 8(fvec4) 10 + 12: TypePointer Output 11 + 13(gl_FragData): 12(ptr) Variable Output + 14: TypeInt 32 1 + 15: 14(int) Constant 1 + 16: TypePointer Input 8(fvec4) + 17(Color): 16(ptr) Variable Input + 19: TypePointer Output 8(fvec4) + 4(main): 2 Function None 3 + 5: Label + 18: 8(fvec4) Load 17(Color) + 20: 19(ptr) AccessChain 13(gl_FragData) 15 + Store 20 18 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out new file mode 100644 index 000000000..62b9d549f --- /dev/null +++ b/Test/baseResults/spv.dataOutIndirect.frag.out @@ -0,0 +1,48 @@ +spv.dataOutIndirect.frag +WARNING: 0:3: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 23 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 13 "gl_FragData" + Name 16 "i" + Name 19 "Color" + Decorate 13(gl_FragData) BuiltIn FragColor + Decorate 19(Color) Smooth + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypeInt 32 0 + 10: 9(int) Constant 32 + 11: TypeArray 8(fvec4) 10 + 12: TypePointer Output 11 + 13(gl_FragData): 12(ptr) Variable Output + 14: TypeInt 32 1 + 15: TypePointer UniformConstant 14(int) + 16(i): 15(ptr) Variable UniformConstant + 18: TypePointer Input 8(fvec4) + 19(Color): 18(ptr) Variable Input + 21: TypePointer Output 8(fvec4) + 4(main): 2 Function None 3 + 5: Label + 17: 14(int) Load 16(i) + 20: 8(fvec4) Load 19(Color) + 22: 21(ptr) AccessChain 13(gl_FragData) 17 + Store 22 20 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out new file mode 100644 index 000000000..8c39498bf --- /dev/null +++ b/Test/baseResults/spv.dataOutIndirect.vert.out @@ -0,0 +1,76 @@ +spv.dataOutIndirect.vert +WARNING: 0:3: attribute deprecated in version 130; may be removed in future release +WARNING: 0:4: varying deprecated in version 130; may be removed in future release + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 39 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 9 "i" + Name 24 "colorOut" + Name 27 "color" + Name 33 "gl_Position" + Name 38 "gl_VertexID" + Decorate 24(colorOut) Smooth + Decorate 33(gl_Position) BuiltIn Position + Decorate 38(gl_VertexID) BuiltIn VertexId + Decorate 38(gl_VertexID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 10: 7(int) Constant 1 + 14: 7(int) Constant 5 + 15: TypeBool + 18: TypeFloat 32 + 19: TypeVector 18(float) 4 + 20: TypeInt 32 0 + 21: 20(int) Constant 6 + 22: TypeArray 19(fvec4) 21 + 23: TypePointer Output 22 + 24(colorOut): 23(ptr) Variable Output + 26: TypePointer Input 19(fvec4) + 27(color): 26(ptr) Variable Input + 29: TypePointer Output 19(fvec4) + 33(gl_Position): 29(ptr) Variable Output + 34: 7(int) Constant 2 + 37: TypePointer Input 7(int) + 38(gl_VertexID): 37(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 9(i): 8(ptr) Variable Function + Store 9(i) 10 + Branch 11 + 11: Label + 13: 7(int) Load 9(i) + 16: 15(bool) SLessThan 13 14 + LoopMerge 12 None + BranchConditional 16 17 12 + 17: Label + 25: 7(int) Load 9(i) + 28: 19(fvec4) Load 27(color) + 30: 29(ptr) AccessChain 24(colorOut) 25 + Store 30 28 + 31: 7(int) Load 9(i) + 32: 7(int) IAdd 31 10 + Store 9(i) 32 + Branch 11 + 12: Label + 35: 29(ptr) AccessChain 24(colorOut) 34 + 36: 19(fvec4) Load 35 + Store 33(gl_Position) 36 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out new file mode 100644 index 000000000..5d6d13183 --- /dev/null +++ b/Test/baseResults/spv.deepRvalue.frag.out @@ -0,0 +1,9 @@ +spv.deepRvalue.frag + + + +Linked fragment stage: + + + +Missing functionality: binary operation on matrix diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out new file mode 100644 index 000000000..f8e09ce53 --- /dev/null +++ b/Test/baseResults/spv.depthOut.frag.out @@ -0,0 +1,49 @@ +spv.depthOut.frag +WARNING: 0:3: varying deprecated in version 130; may be removed in future release +WARNING: 0:4: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 19 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "gl_FragDepth" + Name 11 "Depth" + Name 15 "gl_FragColor" + Name 17 "Color" + Decorate 9(gl_FragDepth) BuiltIn FragDepth + Decorate 11(Depth) Smooth + Decorate 15(gl_FragColor) BuiltIn FragColor + Decorate 17(Color) Smooth + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypePointer Output 7(float) + 9(gl_FragDepth): 8(ptr) Variable Output + 10: TypePointer Input 7(float) + 11(Depth): 10(ptr) Variable Input + 13: TypeVector 7(float) 4 + 14: TypePointer Output 13(fvec4) +15(gl_FragColor): 14(ptr) Variable Output + 16: TypePointer Input 13(fvec4) + 17(Color): 16(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 12: 7(float) Load 11(Depth) + Store 9(gl_FragDepth) 12 + 18: 13(fvec4) Load 17(Color) + Store 15(gl_FragColor) 18 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out new file mode 100644 index 000000000..d90eb115b --- /dev/null +++ b/Test/baseResults/spv.discard-dce.frag.out @@ -0,0 +1,131 @@ +spv.discard-dce.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 81 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "white" + Name 13 "black" + Name 16 "color" + Name 19 "x" + Name 22 "tex_coord" + Name 28 "y" + Name 33 "radius" + Name 56 "gl_FragColor" + Decorate 22(tex_coord) Smooth + Decorate 56(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: 7(float) Constant 1065353216 + 12: 8(fvec4) ConstantComposite 11 11 11 11 + 14: 7(float) Constant 1045220557 + 15: 8(fvec4) ConstantComposite 14 14 14 14 + 18: TypePointer Function 7(float) + 20: TypeVector 7(float) 2 + 21: TypePointer Input 20(fvec2) + 22(tex_coord): 21(ptr) Variable Input + 25: 7(float) Constant 1073741824 + 43: TypeBool + 48: 7(float) Constant 1066192077 + 55: TypePointer Output 8(fvec4) +56(gl_FragColor): 55(ptr) Variable Output + 59: 7(float) Constant 1067030938 + 68: 7(float) Constant 1061158912 + 73: 7(float) Constant 1098907648 + 4(main): 2 Function None 3 + 5: Label + 10(white): 9(ptr) Variable Function + 13(black): 9(ptr) Variable Function + 16(color): 9(ptr) Variable Function + 19(x): 18(ptr) Variable Function + 28(y): 18(ptr) Variable Function + 33(radius): 18(ptr) Variable Function + Store 10(white) 12 + Store 13(black) 15 + 17: 8(fvec4) Load 10(white) + Store 16(color) 17 + 23: 20(fvec2) Load 22(tex_coord) + 24: 7(float) CompositeExtract 23 0 + 26: 7(float) FMul 24 25 + 27: 7(float) FSub 26 11 + Store 19(x) 27 + 29: 20(fvec2) Load 22(tex_coord) + 30: 7(float) CompositeExtract 29 1 + 31: 7(float) FMul 30 25 + 32: 7(float) FSub 31 11 + Store 28(y) 32 + 34: 7(float) Load 19(x) + 35: 7(float) Load 19(x) + 36: 7(float) FMul 34 35 + 37: 7(float) Load 28(y) + 38: 7(float) Load 28(y) + 39: 7(float) FMul 37 38 + 40: 7(float) FAdd 36 39 + 41: 7(float) ExtInst 1(GLSL.std.450) 28(sqrt) 40 + Store 33(radius) 41 + 42: 7(float) Load 33(radius) + 44: 43(bool) FOrdGreaterThan 42 11 + SelectionMerge 46 None + BranchConditional 44 45 46 + 45: Label + 47: 7(float) Load 33(radius) + 49: 43(bool) FOrdGreaterThan 47 48 + SelectionMerge 51 None + BranchConditional 49 50 51 + 50: Label + 52: 8(fvec4) Load 16(color) + 53: 8(fvec4) CompositeConstruct 11 11 11 11 + 54: 8(fvec4) FAdd 52 53 + Store 16(color) 54 + Branch 51 + 51: Label + 57: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 57 + 58: 7(float) Load 33(radius) + 60: 43(bool) FOrdGreaterThan 58 59 + SelectionMerge 62 None + BranchConditional 60 61 62 + 61: Label + 63: 8(fvec4) Load 16(color) + 64: 8(fvec4) CompositeConstruct 11 11 11 11 + 65: 8(fvec4) FAdd 63 64 + Store 16(color) 65 + Branch 62 + 62: Label + Kill + 46: Label + 67: 7(float) Load 33(radius) + 69: 43(bool) FOrdGreaterThanEqual 67 68 + SelectionMerge 71 None + BranchConditional 69 70 71 + 70: Label + 72: 7(float) Load 33(radius) + 74: 7(float) ExtInst 1(GLSL.std.450) 23(pow) 72 73 + 75: 7(float) FDiv 74 25 + 76: 7(float) ExtInst 1(GLSL.std.450) 3(abs) 75 + 77: 8(fvec4) Load 16(color) + 78: 8(fvec4) CompositeConstruct 76 76 76 76 + 79: 8(fvec4) FSub 77 78 + Store 16(color) 79 + Branch 71 + 71: Label + 80: 8(fvec4) Load 16(color) + Store 56(gl_FragColor) 80 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out new file mode 100644 index 000000000..62bf5b1b9 --- /dev/null +++ b/Test/baseResults/spv.doWhileLoop.frag.out @@ -0,0 +1,68 @@ +spv.doWhileLoop.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 34 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "color" + Name 12 "BaseColor" + Name 19 "bigColor" + Name 26 "d" + Name 32 "gl_FragColor" + Decorate 12(BaseColor) Smooth + Decorate 32(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer Input 8(fvec4) + 12(BaseColor): 11(ptr) Variable Input + 18: TypePointer UniformConstant 8(fvec4) + 19(bigColor): 18(ptr) Variable UniformConstant + 25: TypePointer UniformConstant 7(float) + 26(d): 25(ptr) Variable UniformConstant + 28: TypeBool + 31: TypePointer Output 8(fvec4) +32(gl_FragColor): 31(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(color): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + Branch 14 + 14: Label + LoopMerge 15 None + Branch 16 + 16: Label + 20: 8(fvec4) Load 19(bigColor) + 21: 8(fvec4) Load 10(color) + 22: 8(fvec4) FAdd 21 20 + Store 10(color) 22 + Branch 17 + 17: Label + 23: 8(fvec4) Load 10(color) + 24: 7(float) CompositeExtract 23 0 + 27: 7(float) Load 26(d) + 29: 28(bool) FOrdLessThan 24 27 + BranchConditional 29 30 15 + 30: Label + Branch 14 + 15: Label + 33: 8(fvec4) Load 10(color) + Store 32(gl_FragColor) 33 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out new file mode 100644 index 000000000..5eab42021 --- /dev/null +++ b/Test/baseResults/spv.double.comp.out @@ -0,0 +1,110 @@ +spv.double.comp +Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked compute stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 63 + + Source GLSL 430 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 + Name 4 "main" + Name 9 "bufName" + MemberName 9(bufName) 0 "f" + MemberName 9(bufName) 1 "d" + Name 11 "bufInst" + Name 23 "storePos" + Name 27 "gl_GlobalInvocationID" + Name 33 "localCoef" + Name 34 "gl_LocalInvocationID" + Name 50 "aa" + Name 55 "globalCoef" + Name 59 "roll" + Name 62 "destTex" + Decorate 9(bufName) GLSLShared + Decorate 9(bufName) BufferBlock + Decorate 27(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + Decorate 34(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 14 NoStaticUse + Decorate 57 NoStaticUse + Decorate 14 NoStaticUse + Decorate 14 NoStaticUse + Decorate 59(roll) NoStaticUse + Decorate 62(destTex) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeFloat 64 + 9(bufName): TypeStruct 7(float) 8(float) + 10: TypePointer Uniform 9(bufName) + 11(bufInst): 10(ptr) Variable Uniform + 12: TypeInt 32 1 + 13: 12(int) Constant 1 + 14: 8(float) Constant 1413754136 1074340347 + 15: TypePointer Uniform 8(float) + 17: 12(int) Constant 0 + 18: 7(float) Constant 1095307129 + 19: TypePointer Uniform 7(float) + 21: TypeVector 12(int) 2 + 22: TypePointer Function 21(ivec2) + 24: TypeInt 32 0 + 25: TypeVector 24(int) 3 + 26: TypePointer Input 25(ivec3) +27(gl_GlobalInvocationID): 26(ptr) Variable Input + 28: TypeVector 24(int) 2 + 32: TypePointer Function 8(float) +34(gl_LocalInvocationID): 26(ptr) Variable Input + 38: 12(int) Constant 8 + 41: TypeVector 7(float) 2 + 43: 7(float) Constant 1090519040 + 48: TypeVector 8(float) 4 + 49: TypePointer Function 48(fvec4) + 51: 8(float) Constant 2576980378 1071225241 + 52: 8(float) Constant 2576980378 1070176665 + 53: 8(float) Constant 858993459 1070805811 + 54: 48(fvec4) ConstantComposite 51 52 53 51 + 56: 8(float) Constant 0 1072693248 + 57: 8(float) Constant 3229815407 1074340298 + 58: TypePointer UniformConstant 8(float) + 59(roll): 58(ptr) Variable UniformConstant + 60: TypeSampler7(float) 2D image + 61: TypePointer UniformConstant 60 + 62(destTex): 61(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 23(storePos): 22(ptr) Variable Function + 33(localCoef): 32(ptr) Variable Function + 50(aa): 49(ptr) Variable Function + 55(globalCoef): 32(ptr) Variable Function + 16: 15(ptr) AccessChain 11(bufInst) 13 + Store 16 14 + 20: 19(ptr) AccessChain 11(bufInst) 17 + Store 20 18 + 29: 25(ivec3) Load 27(gl_GlobalInvocationID) + 30: 28(ivec2) VectorShuffle 29 29 0 1 + 31: 21(ivec2) Bitcast 30 + Store 23(storePos) 31 + 35: 25(ivec3) Load 34(gl_LocalInvocationID) + 36: 28(ivec2) VectorShuffle 35 35 0 1 + 37: 21(ivec2) Bitcast 36 + 39: 21(ivec2) CompositeConstruct 38 38 + 40: 21(ivec2) ISub 37 39 + 42: 41(fvec2) ConvertSToF 40 + 44: 41(fvec2) CompositeConstruct 43 43 + 45: 41(fvec2) FDiv 42 44 + 46: 7(float) ExtInst 1(GLSL.std.450) 58(length) 45 + 47: 8(float) FConvert 46 + Store 33(localCoef) 47 + Store 50(aa) 54 + Store 55(globalCoef) 56 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out new file mode 100644 index 000000000..9669e10fa --- /dev/null +++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out @@ -0,0 +1,181 @@ +spv.earlyReturnDiscard.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 112 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "color" + Name 12 "BaseColor" + Name 14 "color2" + Name 16 "otherColor" + Name 19 "c" + Name 22 "d" + Name 28 "bigColor" + Name 33 "smallColor" + Name 39 "minimum" + Name 53 "threshhold" + Name 64 "threshhold2" + Name 78 "b" + Name 107 "gl_FragColor" + Name 111 "threshhold3" + Decorate 12(BaseColor) Smooth + Decorate 19(c) Smooth + Decorate 107(gl_FragColor) BuiltIn FragColor + Decorate 111(threshhold3) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer Input 8(fvec4) + 12(BaseColor): 11(ptr) Variable Input + 15: TypePointer UniformConstant 8(fvec4) + 16(otherColor): 15(ptr) Variable UniformConstant + 18: TypePointer Input 7(float) + 19(c): 18(ptr) Variable Input + 21: TypePointer UniformConstant 7(float) + 22(d): 21(ptr) Variable UniformConstant + 24: TypeBool + 28(bigColor): 15(ptr) Variable UniformConstant + 33(smallColor): 15(ptr) Variable UniformConstant + 39(minimum): 21(ptr) Variable UniformConstant + 47: 7(float) Constant 1065353216 + 53(threshhold): 21(ptr) Variable UniformConstant + 64(threshhold2): 21(ptr) Variable UniformConstant + 77: TypePointer UniformConstant 24(bool) + 78(b): 77(ptr) Variable UniformConstant + 106: TypePointer Output 8(fvec4) +107(gl_FragColor): 106(ptr) Variable Output +111(threshhold3): 21(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 10(color): 9(ptr) Variable Function + 14(color2): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + 17: 8(fvec4) Load 16(otherColor) + Store 14(color2) 17 + 20: 7(float) Load 19(c) + 23: 7(float) Load 22(d) + 25: 24(bool) FOrdGreaterThan 20 23 + SelectionMerge 27 None + BranchConditional 25 26 32 + 26: Label + 29: 8(fvec4) Load 28(bigColor) + 30: 8(fvec4) Load 10(color) + 31: 8(fvec4) FAdd 30 29 + Store 10(color) 31 + Branch 27 + 32: Label + 34: 8(fvec4) Load 33(smallColor) + 35: 8(fvec4) Load 10(color) + 36: 8(fvec4) FAdd 35 34 + Store 10(color) 36 + Branch 27 + 27: Label + 37: 8(fvec4) Load 10(color) + 38: 7(float) CompositeExtract 37 2 + 40: 7(float) Load 39(minimum) + 41: 24(bool) FOrdLessThan 38 40 + SelectionMerge 43 None + BranchConditional 41 42 43 + 42: Label + Branch 6 + 43: Label + 45: 8(fvec4) Load 10(color) + 46: 7(float) CompositeExtract 45 2 + 48: 7(float) FAdd 46 47 + 49: 8(fvec4) Load 10(color) + 50: 8(fvec4) CompositeInsert 48 49 2 + Store 10(color) 50 + 51: 8(fvec4) Load 10(color) + 52: 7(float) CompositeExtract 51 2 + 54: 7(float) Load 53(threshhold) + 55: 24(bool) FOrdGreaterThan 52 54 + SelectionMerge 57 None + BranchConditional 55 56 57 + 56: Label + Kill + 57: Label + 59: 8(fvec4) Load 10(color) + 60: 8(fvec4) CompositeConstruct 47 47 47 47 + 61: 8(fvec4) FAdd 59 60 + Store 10(color) 61 + 62: 8(fvec4) Load 10(color) + 63: 7(float) CompositeExtract 62 3 + 65: 7(float) Load 64(threshhold2) + 66: 24(bool) FOrdGreaterThan 63 65 + SelectionMerge 68 None + BranchConditional 66 67 99 + 67: Label + 69: 8(fvec4) Load 10(color) + 70: 7(float) CompositeExtract 69 2 + 71: 7(float) Load 64(threshhold2) + 72: 24(bool) FOrdGreaterThan 70 71 + SelectionMerge 74 None + BranchConditional 72 73 76 + 73: Label + Branch 6 + 76: Label + 79: 24(bool) Load 78(b) + SelectionMerge 81 None + BranchConditional 79 80 87 + 80: Label + 82: 8(fvec4) Load 10(color) + 83: 7(float) CompositeExtract 82 2 + 84: 7(float) FAdd 83 47 + 85: 8(fvec4) Load 10(color) + 86: 8(fvec4) CompositeInsert 84 85 2 + Store 10(color) 86 + Branch 81 + 87: Label + 88: 8(fvec4) Load 10(color) + 89: 7(float) CompositeExtract 88 0 + 90: 7(float) Load 39(minimum) + 91: 24(bool) FOrdLessThan 89 90 + SelectionMerge 93 None + BranchConditional 91 92 95 + 92: Label + Kill + 95: Label + 96: 8(fvec4) Load 10(color) + 97: 8(fvec4) CompositeConstruct 47 47 47 47 + 98: 8(fvec4) FAdd 96 97 + Store 10(color) 98 + Branch 93 + 93: Label + Branch 81 + 81: Label + Branch 74 + 74: Label + Branch 68 + 99: Label + 100: 24(bool) Load 78(b) + SelectionMerge 102 None + BranchConditional 100 101 104 + 101: Label + Kill + 104: Label + Branch 6 + 102: Label + Branch 68 + 68: Label + 108: 8(fvec4) Load 10(color) + 109: 8(fvec4) Load 14(color2) + 110: 8(fvec4) FMul 108 109 + Store 107(gl_FragColor) 110 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out new file mode 100644 index 000000000..e8d0395a5 --- /dev/null +++ b/Test/baseResults/spv.flowControl.frag.out @@ -0,0 +1,81 @@ +spv.flowControl.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 42 + + Source GLSL 120 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "color" + Name 12 "BaseColor" + Name 14 "color2" + Name 16 "otherColor" + Name 19 "c" + Name 22 "d" + Name 28 "bigColor" + Name 33 "smallColor" + Name 38 "gl_FragColor" + Decorate 12(BaseColor) Smooth + Decorate 19(c) Smooth + Decorate 38(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer Input 8(fvec4) + 12(BaseColor): 11(ptr) Variable Input + 15: TypePointer UniformConstant 8(fvec4) + 16(otherColor): 15(ptr) Variable UniformConstant + 18: TypePointer Input 7(float) + 19(c): 18(ptr) Variable Input + 21: TypePointer UniformConstant 7(float) + 22(d): 21(ptr) Variable UniformConstant + 24: TypeBool + 28(bigColor): 15(ptr) Variable UniformConstant + 33(smallColor): 15(ptr) Variable UniformConstant + 37: TypePointer Output 8(fvec4) +38(gl_FragColor): 37(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(color): 9(ptr) Variable Function + 14(color2): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + 17: 8(fvec4) Load 16(otherColor) + Store 14(color2) 17 + 20: 7(float) Load 19(c) + 23: 7(float) Load 22(d) + 25: 24(bool) FOrdGreaterThan 20 23 + SelectionMerge 27 None + BranchConditional 25 26 32 + 26: Label + 29: 8(fvec4) Load 28(bigColor) + 30: 8(fvec4) Load 10(color) + 31: 8(fvec4) FAdd 30 29 + Store 10(color) 31 + Branch 27 + 32: Label + 34: 8(fvec4) Load 33(smallColor) + 35: 8(fvec4) Load 10(color) + 36: 8(fvec4) FAdd 35 34 + Store 10(color) 36 + Branch 27 + 27: Label + 39: 8(fvec4) Load 10(color) + 40: 8(fvec4) Load 14(color2) + 41: 8(fvec4) FMul 39 40 + Store 38(gl_FragColor) 41 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out new file mode 100644 index 000000000..13cbe6311 --- /dev/null +++ b/Test/baseResults/spv.forLoop.frag.out @@ -0,0 +1,200 @@ +spv.forLoop.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 123 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "color" + Name 12 "BaseColor" + Name 16 "i" + Name 22 "Count" + Name 28 "bigColor" + Name 36 "gl_FragColor" + Name 39 "sum" + Name 41 "i" + Name 51 "v4" + Name 60 "i" + Name 66 "tv4" + Name 84 "r" + Name 90 "i" + Name 98 "f" + Name 111 "i" + Decorate 12(BaseColor) Smooth + Decorate 36(gl_FragColor) BuiltIn FragColor + Decorate 98(f) Smooth + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer Input 8(fvec4) + 12(BaseColor): 11(ptr) Variable Input + 14: TypeInt 32 1 + 15: TypePointer Function 14(int) + 17: 14(int) Constant 0 + 21: TypePointer UniformConstant 14(int) + 22(Count): 21(ptr) Variable UniformConstant + 24: TypeBool + 27: TypePointer UniformConstant 8(fvec4) + 28(bigColor): 27(ptr) Variable UniformConstant + 33: 14(int) Constant 1 + 35: TypePointer Output 8(fvec4) +36(gl_FragColor): 35(ptr) Variable Output + 38: TypePointer Function 7(float) + 40: 7(float) Constant 0 + 45: 14(int) Constant 4 + 48: TypeInt 32 0 + 49: TypeVector 48(int) 4 + 50: TypePointer UniformConstant 49(ivec4) + 51(v4): 50(ptr) Variable UniformConstant + 71: 48(int) Constant 4 + 85: TypeVector 7(float) 3 + 97: TypePointer Input 7(float) + 98(f): 97(ptr) Variable Input + 115: 14(int) Constant 16 + 4(main): 2 Function None 3 + 5: Label + 10(color): 9(ptr) Variable Function + 16(i): 15(ptr) Variable Function + 39(sum): 38(ptr) Variable Function + 41(i): 15(ptr) Variable Function + 60(i): 15(ptr) Variable Function + 66(tv4): 9(ptr) Variable Function + 84(r): 9(ptr) Variable Function + 90(i): 15(ptr) Variable Function + 111(i): 15(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + Store 16(i) 17 + Branch 18 + 18: Label + 20: 14(int) Load 16(i) + 23: 14(int) Load 22(Count) + 25: 24(bool) SLessThan 20 23 + LoopMerge 19 None + BranchConditional 25 26 19 + 26: Label + 29: 8(fvec4) Load 28(bigColor) + 30: 8(fvec4) Load 10(color) + 31: 8(fvec4) FAdd 30 29 + Store 10(color) 31 + 32: 14(int) Load 16(i) + 34: 14(int) IAdd 32 33 + Store 16(i) 34 + Branch 18 + 19: Label + 37: 8(fvec4) Load 10(color) + Store 36(gl_FragColor) 37 + Store 39(sum) 40 + Store 41(i) 17 + Branch 42 + 42: Label + 44: 14(int) Load 41(i) + 46: 24(bool) SLessThan 44 45 + LoopMerge 43 None + BranchConditional 46 47 43 + 47: Label + 52: 14(int) Load 41(i) + 53: 49(ivec4) Load 51(v4) + 54: 48(int) VectorExtractDynamic 53 52 + 55: 7(float) ConvertUToF 54 + 56: 7(float) Load 39(sum) + 57: 7(float) FAdd 56 55 + Store 39(sum) 57 + 58: 14(int) Load 41(i) + 59: 14(int) IAdd 58 33 + Store 41(i) 59 + Branch 42 + 43: Label + Store 60(i) 17 + Branch 61 + 61: Label + 63: 14(int) Load 60(i) + 64: 24(bool) SLessThan 63 45 + LoopMerge 62 None + BranchConditional 64 65 62 + 65: Label + 67: 14(int) Load 60(i) + 68: 14(int) Load 60(i) + 69: 49(ivec4) Load 51(v4) + 70: 48(int) VectorExtractDynamic 69 68 + 72: 48(int) IMul 70 71 + 73: 7(float) ConvertUToF 72 + 75: 8(fvec4) Load 66(tv4) + 74: 7(float) VectorInsertDynamic 75 73 67 + Store 66(tv4) 74 + 76: 14(int) Load 60(i) + 77: 14(int) IAdd 76 33 + Store 60(i) 77 + Branch 61 + 62: Label + 78: 7(float) Load 39(sum) + 79: 8(fvec4) CompositeConstruct 78 78 78 78 + 80: 8(fvec4) Load 66(tv4) + 81: 8(fvec4) FAdd 79 80 + 82: 8(fvec4) Load 36(gl_FragColor) + 83: 8(fvec4) FAdd 82 81 + Store 36(gl_FragColor) 83 + 86: 8(fvec4) Load 12(BaseColor) + 87: 85(fvec3) VectorShuffle 86 86 0 1 2 + 88: 8(fvec4) Load 84(r) + 89: 8(fvec4) VectorShuffle 88 87 4 5 6 3 + Store 84(r) 89 + Store 90(i) 17 + Branch 91 + 91: Label + 93: 14(int) Load 90(i) + 94: 14(int) Load 22(Count) + 95: 24(bool) SLessThan 93 94 + LoopMerge 92 None + BranchConditional 95 96 92 + 96: Label + 99: 7(float) Load 98(f) + 100: 8(fvec4) Load 84(r) + 101: 8(fvec4) CompositeInsert 99 100 3 + Store 84(r) 101 + 102: 14(int) Load 90(i) + 103: 14(int) IAdd 102 33 + Store 90(i) 103 + Branch 91 + 92: Label + 104: 8(fvec4) Load 84(r) + 105: 85(fvec3) VectorShuffle 104 104 0 1 2 + 106: 8(fvec4) Load 36(gl_FragColor) + 107: 85(fvec3) VectorShuffle 106 106 0 1 2 + 108: 85(fvec3) FAdd 107 105 + 109: 8(fvec4) Load 36(gl_FragColor) + 110: 8(fvec4) VectorShuffle 109 108 4 5 6 3 + Store 36(gl_FragColor) 110 + Store 111(i) 17 + Branch 112 + 112: Label + 114: 14(int) Load 111(i) + 116: 24(bool) SLessThan 114 115 + LoopMerge 113 None + BranchConditional 116 117 113 + 117: Label + 118: 7(float) Load 98(f) + 119: 8(fvec4) Load 36(gl_FragColor) + 120: 8(fvec4) VectorTimesScalar 119 118 + Store 36(gl_FragColor) 120 + 121: 14(int) Load 111(i) + 122: 14(int) IAdd 121 45 + Store 111(i) 122 + Branch 112 + 113: Label + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out new file mode 100644 index 000000000..23f8e53ba --- /dev/null +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -0,0 +1,109 @@ +spv.forwardFun.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 59 + + Source GLSL 100 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 7 "bar(" + Name 11 "unreachableReturn(" + Name 17 "foo(vf4;" + Name 16 "bar" + Name 19 "color" + Name 21 "BaseColor" + Name 22 "param" + Name 28 "f" + Name 31 "gl_FragColor" + Name 37 "d" + Name 49 "dummyReturn" + Name 58 "bigColor" + Decorate 19(color) PrecisionMedium + Decorate 21(BaseColor) PrecisionMedium + Decorate 21(BaseColor) Smooth + Decorate 28(f) PrecisionMedium + Decorate 31(gl_FragColor) PrecisionMedium + Decorate 31(gl_FragColor) BuiltIn FragColor + Decorate 37(d) PrecisionMedium + Decorate 58(bigColor) PrecisionMedium + Decorate 58(bigColor) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 9: TypeFloat 32 + 10: TypeFunction 9(float) + 13: TypeVector 9(float) 4 + 14: TypePointer Function 13(fvec4) + 15: TypeFunction 9(float) 14(ptr) + 20: TypePointer Input 13(fvec4) + 21(BaseColor): 20(ptr) Variable Input + 27: TypePointer Function 9(float) + 30: TypePointer Output 13(fvec4) +31(gl_FragColor): 30(ptr) Variable Output + 36: TypePointer UniformConstant 9(float) + 37(d): 36(ptr) Variable UniformConstant + 39: 9(float) Constant 1082549862 + 40: TypeBool + 44: 9(float) Constant 1067030938 + 47: 9(float) Constant 1083179008 + 57: TypePointer UniformConstant 13(fvec4) + 58(bigColor): 57(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 19(color): 14(ptr) Variable Function + 22(param): 14(ptr) Variable Function + 28(f): 27(ptr) Variable Function + 23: 13(fvec4) Load 21(BaseColor) + Store 22(param) 23 + 24: 9(float) FunctionCall 17(foo(vf4;) 22(param) + 25: 13(fvec4) CompositeConstruct 24 24 24 24 + Store 19(color) 25 + 26: 2 FunctionCall 7(bar() + 29: 9(float) FunctionCall 11(unreachableReturn() + Store 28(f) 29 + 32: 13(fvec4) Load 19(color) + 33: 9(float) Load 28(f) + 34: 13(fvec4) VectorTimesScalar 32 33 + Store 31(gl_FragColor) 34 + Branch 6 + 6: Label + Return + FunctionEnd + 7(bar(): 2 Function None 3 + 8: Label + Return + FunctionEnd +11(unreachableReturn(): 9(float) Function None 10 + 12: Label + 49(dummyReturn): 27(ptr) Variable Function + 35: 2 FunctionCall 7(bar() + 38: 9(float) Load 37(d) + 41: 40(bool) FOrdLessThan 38 39 + SelectionMerge 43 None + BranchConditional 41 42 46 + 42: Label + ReturnValue 44 + 46: Label + ReturnValue 47 + 43: Label + 50: 9(float) Load 49(dummyReturn) + ReturnValue 50 + FunctionEnd + 17(foo(vf4;): 9(float) Function None 15 + 16(bar): 14(ptr) FunctionParameter + 18: Label + 51: 13(fvec4) Load 16(bar) + 52: 9(float) CompositeExtract 51 0 + 53: 13(fvec4) Load 16(bar) + 54: 9(float) CompositeExtract 53 1 + 55: 9(float) FAdd 52 54 + ReturnValue 55 + FunctionEnd diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out new file mode 100644 index 000000000..a8bb6c2ef --- /dev/null +++ b/Test/baseResults/spv.functionCall.frag.out @@ -0,0 +1,132 @@ +spv.functionCall.frag +WARNING: 0:4: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 76 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 12 "foo(vf4;" + Name 11 "bar" + Name 14 "bar(" + Name 17 "unreachableReturn(" + Name 19 "missingReturn(" + Name 22 "h" + Name 31 "d" + Name 44 "dummyReturn" + Name 53 "dummyReturn" + Name 55 "color" + Name 57 "BaseColor" + Name 58 "param" + Name 63 "f" + Name 65 "g" + Name 68 "gl_FragColor" + Name 75 "bigColor" + Decorate 57(BaseColor) Smooth + Decorate 68(gl_FragColor) BuiltIn FragColor + Decorate 75(bigColor) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 10: TypeFunction 7(float) 9(ptr) + 16: TypeFunction 7(float) + 21: TypePointer PrivateGlobal 7(float) + 22(h): 21(ptr) Variable PrivateGlobal + 23: 7(float) Constant 0 + 30: TypePointer UniformConstant 7(float) + 31(d): 30(ptr) Variable UniformConstant + 33: 7(float) Constant 1082549862 + 34: TypeBool + 38: 7(float) Constant 1067030938 + 41: 7(float) Constant 1083179008 + 43: TypePointer Function 7(float) + 51: 7(float) Constant 1081711002 + 56: TypePointer Input 8(fvec4) + 57(BaseColor): 56(ptr) Variable Input + 67: TypePointer Output 8(fvec4) +68(gl_FragColor): 67(ptr) Variable Output + 74: TypePointer UniformConstant 8(fvec4) + 75(bigColor): 74(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 55(color): 9(ptr) Variable Function + 58(param): 9(ptr) Variable Function + 63(f): 43(ptr) Variable Function + 65(g): 43(ptr) Variable Function + Store 22(h) 23 + 59: 8(fvec4) Load 57(BaseColor) + Store 58(param) 59 + 60: 7(float) FunctionCall 12(foo(vf4;) 58(param) + 61: 8(fvec4) CompositeConstruct 60 60 60 60 + Store 55(color) 61 + 62: 2 FunctionCall 14(bar() + 64: 7(float) FunctionCall 17(unreachableReturn() + Store 63(f) 64 + 66: 7(float) FunctionCall 19(missingReturn() + Store 65(g) 66 + 69: 8(fvec4) Load 55(color) + 70: 7(float) Load 63(f) + 71: 8(fvec4) VectorTimesScalar 69 70 + 72: 7(float) Load 22(h) + 73: 8(fvec4) VectorTimesScalar 71 72 + Store 68(gl_FragColor) 73 + Branch 6 + 6: Label + Return + FunctionEnd + 12(foo(vf4;): 7(float) Function None 10 + 11(bar): 9(ptr) FunctionParameter + 13: Label + 24: 8(fvec4) Load 11(bar) + 25: 7(float) CompositeExtract 24 0 + 26: 8(fvec4) Load 11(bar) + 27: 7(float) CompositeExtract 26 1 + 28: 7(float) FAdd 25 27 + ReturnValue 28 + FunctionEnd + 14(bar(): 2 Function None 3 + 15: Label + Return + FunctionEnd +17(unreachableReturn(): 7(float) Function None 16 + 18: Label + 44(dummyReturn): 43(ptr) Variable Function + 32: 7(float) Load 31(d) + 35: 34(bool) FOrdLessThan 32 33 + SelectionMerge 37 None + BranchConditional 35 36 40 + 36: Label + ReturnValue 38 + 40: Label + ReturnValue 41 + 37: Label + 45: 7(float) Load 44(dummyReturn) + ReturnValue 45 + FunctionEnd +19(missingReturn(): 7(float) Function None 16 + 20: Label + 53(dummyReturn): 43(ptr) Variable Function + 46: 7(float) Load 31(d) + 47: 34(bool) FOrdLessThan 46 41 + SelectionMerge 49 None + BranchConditional 47 48 49 + 48: Label + 50: 7(float) Load 31(d) + Store 22(h) 50 + ReturnValue 51 + 49: Label + 54: 7(float) Load 53(dummyReturn) + ReturnValue 54 + FunctionEnd diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out new file mode 100644 index 000000000..c86bb8e85 --- /dev/null +++ b/Test/baseResults/spv.functionSemantics.frag.out @@ -0,0 +1,240 @@ +spv.functionSemantics.frag +Warning, version 400 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 159 + + Source GLSL 400 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 16 "foo(i1;i1;i1;i1;i1;i1;" + Name 10 "a" + Name 11 "b" + Name 12 "c" + Name 13 "d" + Name 14 "e" + Name 15 "f" + Name 26 "foo2(f1;vf3;i1;" + Name 23 "a" + Name 24 "b" + Name 25 "r" + Name 29 "foo3(" + Name 31 "sum" + Name 73 "u" + Name 85 "t" + Name 88 "s" + MemberName 88(s) 0 "t" + Name 90 "f" + Name 97 "color" + Name 103 "e" + Name 104 "param" + Name 105 "param" + Name 106 "param" + Name 107 "param" + Name 126 "ret" + Name 128 "tempReturn" + Name 133 "tempArg" + Name 134 "param" + Name 135 "param" + Name 136 "param" + Name 139 "arg" + Name 155 "gl_FragColor" + Decorate 155(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 9: TypeFunction 7(int) 8(ptr) 7(int) 8(ptr) 7(int) 8(ptr) 8(ptr) + 18: TypeFloat 32 + 19: TypePointer Function 18(float) + 20: TypeVector 18(float) 3 + 21: TypePointer Function 20(fvec3) + 22: TypeFunction 7(int) 19(ptr) 21(ptr) 8(ptr) + 28: TypeFunction 7(int) + 39: 7(int) Constant 64 + 44: 7(int) Constant 1024 + 62: 18(float) Constant 1077936128 + 66: 18(float) Constant 1084227584 + 72: TypePointer UniformConstant 18(float) + 73(u): 72(ptr) Variable UniformConstant + 75: 18(float) Constant 1078774989 + 76: TypeBool + 81: 7(int) Constant 1000000 + 83: 7(int) Constant 2000000 + 86: 7(int) Constant 2 + 87: TypeVector 7(int) 4 + 88(s): TypeStruct 87(ivec4) + 89: TypePointer Function 88(s) + 91: 7(int) Constant 0 + 92: 7(int) Constant 32 + 93: TypePointer Function 87(ivec4) + 98: 7(int) Constant 1 + 102: 7(int) Constant 8 + 117: 7(int) Constant 128 + 127: TypePointer PrivateGlobal 7(int) + 128(tempReturn): 127(ptr) Variable PrivateGlobal + 129: 18(float) Constant 1082130432 + 130: 18(float) Constant 1065353216 + 131: 18(float) Constant 1073741824 + 132: 20(fvec3) ConstantComposite 130 131 62 + 153: TypeVector 18(float) 4 + 154: TypePointer Output 153(fvec4) +155(gl_FragColor): 154(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 85(t): 8(ptr) Variable Function + 90(f): 89(ptr) Variable Function + 97(color): 8(ptr) Variable Function + 103(e): 8(ptr) Variable Function + 104(param): 8(ptr) Variable Function + 105(param): 8(ptr) Variable Function + 106(param): 8(ptr) Variable Function + 107(param): 8(ptr) Variable Function + 126(ret): 19(ptr) Variable Function + 133(tempArg): 8(ptr) Variable Function + 134(param): 19(ptr) Variable Function + 135(param): 21(ptr) Variable Function + 136(param): 8(ptr) Variable Function + 139(arg): 19(ptr) Variable Function + Store 85(t) 86 + 94: 93(ptr) AccessChain 90(f) 91 + 95: 87(ivec4) Load 94 + 96: 87(ivec4) CompositeInsert 92 95 1 + Store 94 96 + 99: 7(int) Load 85(t) + 100: 7(int) Load 85(t) + 101: 7(int) IAdd 99 100 + Store 104(param) 98 + Store 105(param) 101 + 108: 93(ptr) AccessChain 90(f) 91 + 109: 87(ivec4) Load 108 + 110: 7(int) CompositeExtract 109 1 + Store 107(param) 110 + 111: 7(int) FunctionCall 16(foo(i1;i1;i1;i1;i1;i1;) 104(param) 86 105(param) 102 106(param) 107(param) + 112: 7(int) Load 106(param) + Store 103(e) 112 + 113: 7(int) Load 107(param) + 114: 93(ptr) AccessChain 90(f) 91 + 115: 87(ivec4) Load 114 + 116: 87(ivec4) CompositeInsert 113 115 1 + Store 114 116 + Store 97(color) 111 + 118: 7(int) Load 103(e) + 119: 93(ptr) AccessChain 90(f) 91 + 120: 87(ivec4) Load 119 + 121: 7(int) CompositeExtract 120 1 + 122: 7(int) IAdd 118 121 + 123: 7(int) IMul 117 122 + 124: 7(int) Load 97(color) + 125: 7(int) IAdd 124 123 + Store 97(color) 125 + Store 134(param) 129 + Store 135(param) 132 + 137: 7(int) FunctionCall 26(foo2(f1;vf3;i1;) 134(param) 135(param) 136(param) + 138: 7(int) Load 136(param) + Store 133(tempArg) 138 + Store 128(tempReturn) 137 + 140: 7(int) Load 133(tempArg) + 141: 18(float) ConvertSToF 140 + Store 139(arg) 141 + 142: 7(int) Load 128(tempReturn) + 143: 18(float) ConvertSToF 142 + Store 126(ret) 143 + 144: 18(float) Load 126(ret) + 145: 18(float) Load 139(arg) + 146: 18(float) FAdd 144 145 + 147: 7(int) ConvertFToS 146 + 148: 7(int) Load 97(color) + 149: 7(int) IAdd 148 147 + Store 97(color) 149 + 150: 7(int) FunctionCall 29(foo3() + 151: 7(int) Load 97(color) + 152: 7(int) IAdd 151 150 + Store 97(color) 152 + 156: 7(int) Load 97(color) + 157: 18(float) ConvertSToF 156 + 158: 153(fvec4) CompositeConstruct 157 157 157 157 + Store 155(gl_FragColor) 158 + Branch 6 + 6: Label + Return + FunctionEnd +16(foo(i1;i1;i1;i1;i1;i1;): 7(int) Function None 9 + 10(a): 8(ptr) FunctionParameter + 11(b): 7(int) FunctionParameter + 12(c): 8(ptr) FunctionParameter + 13(d): 7(int) FunctionParameter + 14(e): 8(ptr) FunctionParameter + 15(f): 8(ptr) FunctionParameter + 17: Label + 31(sum): 8(ptr) Variable Function + 32: 7(int) Load 10(a) + 33: 7(int) IAdd 32 11(b) + 34: 7(int) Load 12(c) + 35: 7(int) IAdd 33 34 + 36: 7(int) IAdd 35 13(d) + 37: 7(int) Load 15(f) + 38: 7(int) IAdd 36 37 + Store 31(sum) 38 + 40: 7(int) Load 10(a) + 41: 7(int) IMul 40 39 + Store 10(a) 41 + 42: 7(int) Load 12(c) + 43: 7(int) IMul 42 39 + Store 12(c) 43 + Store 14(e) 44 + 45: 7(int) Load 15(f) + 46: 7(int) IMul 45 39 + Store 15(f) 46 + 47: 7(int) Load 10(a) + 48: 7(int) IMul 39 11(b) + 49: 7(int) IAdd 47 48 + 50: 7(int) Load 12(c) + 51: 7(int) IAdd 49 50 + 52: 7(int) IMul 39 13(d) + 53: 7(int) IAdd 51 52 + 54: 7(int) Load 14(e) + 55: 7(int) IAdd 53 54 + 56: 7(int) Load 15(f) + 57: 7(int) IAdd 55 56 + 58: 7(int) Load 31(sum) + 59: 7(int) IAdd 58 57 + Store 31(sum) 59 + 60: 7(int) Load 31(sum) + ReturnValue 60 + FunctionEnd +26(foo2(f1;vf3;i1;): 7(int) Function None 22 + 23(a): 19(ptr) FunctionParameter + 24(b): 21(ptr) FunctionParameter + 25(r): 8(ptr) FunctionParameter + 27: Label + 63: 18(float) Load 23(a) + 64: 18(float) FMul 62 63 + 65: 7(int) ConvertFToS 64 + Store 25(r) 65 + 67: 20(fvec3) Load 24(b) + 68: 18(float) CompositeExtract 67 1 + 69: 18(float) FMul 66 68 + 70: 7(int) ConvertFToS 69 + ReturnValue 70 + FunctionEnd + 29(foo3(): 7(int) Function None 28 + 30: Label + 74: 18(float) Load 73(u) + 77: 76(bool) FOrdGreaterThan 74 75 + SelectionMerge 79 None + BranchConditional 77 78 79 + 78: Label + Kill + 79: Label + ReturnValue 83 + FunctionEnd diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out new file mode 100644 index 000000000..2f4db5567 --- /dev/null +++ b/Test/baseResults/spv.length.frag.out @@ -0,0 +1,61 @@ +spv.length.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 34 + + Source GLSL 120 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "t" + Name 15 "v" + Name 27 "gl_FragColor" + Name 33 "u" + Decorate 15(v) Smooth + Decorate 27(gl_FragColor) BuiltIn FragColor + Decorate 33(u) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 2 + 9: TypePointer Function 8(fvec2) + 11: TypeInt 32 0 + 12: 11(int) Constant 2 + 13: TypeArray 8(fvec2) 12 + 14: TypePointer Input 13 + 15(v): 14(ptr) Variable Input + 16: TypeInt 32 1 + 17: 16(int) Constant 0 + 18: TypePointer Input 8(fvec2) + 21: 16(int) Constant 1 + 25: TypeVector 7(float) 4 + 26: TypePointer Output 25(fvec4) +27(gl_FragColor): 26(ptr) Variable Output + 28: 7(float) Constant 1106247680 + 29: 25(fvec4) ConstantComposite 28 28 28 28 + 30: 11(int) Constant 3 + 31: TypeArray 25(fvec4) 30 + 32: TypePointer UniformConstant 31 + 33(u): 32(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 10(t): 9(ptr) Variable Function + 19: 18(ptr) AccessChain 15(v) 17 + 20: 8(fvec2) Load 19 + 22: 18(ptr) AccessChain 15(v) 21 + 23: 8(fvec2) Load 22 + 24: 8(fvec2) FAdd 20 23 + Store 10(t) 24 + Store 27(gl_FragColor) 29 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out new file mode 100644 index 000000000..184b24ce4 --- /dev/null +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -0,0 +1,220 @@ +spv.localAggregates.frag +WARNING: 0:4: varying deprecated in version 130; may be removed in future release +WARNING: 0:5: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 134 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "s1" + MemberName 9(s1) 0 "i" + MemberName 9(s1) 1 "f" + Name 11 "s2" + MemberName 11(s2) 0 "i" + MemberName 11(s2) 1 "f" + MemberName 11(s2) 2 "s1_1" + MemberName 11(s2) 3 "bleh" + Name 13 "locals2" + Name 14 "s3" + MemberName 14(s3) 0 "s2_1" + MemberName 14(s3) 1 "i" + MemberName 14(s3) 2 "f" + MemberName 14(s3) 3 "s1_1" + Name 16 "foo3" + Name 37 "localFArray" + Name 41 "coord" + Name 48 "localIArray" + Name 67 "x" + Name 69 "localArray" + Name 74 "i" + Name 81 "a" + Name 87 "condition" + Name 95 "color" + Name 105 "gl_FragColor" + Name 124 "sampler" + Name 130 "foo" + Name 131 "foo2" + Name 133 "uFloatArray" + Decorate 41(coord) Smooth + Decorate 95(color) Smooth + Decorate 105(gl_FragColor) BuiltIn FragColor + Decorate 130(foo) NoStaticUse + Decorate 131(foo2) NoStaticUse + Decorate 133(uFloatArray) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypeFloat 32 + 9(s1): TypeStruct 7(int) 8(float) + 10: TypeVector 8(float) 4 + 11(s2): TypeStruct 7(int) 8(float) 9(s1) 10(fvec4) + 12: TypePointer Function 11(s2) + 14(s3): TypeStruct 11(s2) 7(int) 8(float) 9(s1) + 15: TypePointer UniformConstant 14(s3) + 16(foo3): 15(ptr) Variable UniformConstant + 17: 7(int) Constant 0 + 18: TypePointer UniformConstant 11(s2) + 21: TypePointer UniformConstant 7(int) + 24: TypeBool + 28: 7(int) Constant 2 + 29: 7(int) Constant 1 + 30: 8(float) Constant 1065353216 + 31: TypePointer Function 8(float) + 33: TypeInt 32 0 + 34: 33(int) Constant 16 + 35: TypeArray 8(float) 34 + 36: TypePointer Function 35 + 38: 7(int) Constant 4 + 39: TypeVector 8(float) 2 + 40: TypePointer Input 39(fvec2) + 41(coord): 40(ptr) Variable Input + 45: 33(int) Constant 8 + 46: TypeArray 7(int) 45 + 47: TypePointer Function 46 + 51: TypePointer Function 7(int) + 68: 7(int) Constant 5 + 78: 7(int) Constant 16 + 83: 8(float) Constant 0 + 87(condition): 21(ptr) Variable UniformConstant + 93: 7(int) Constant 3 + 94: TypePointer Input 10(fvec4) + 95(color): 94(ptr) Variable Input + 97: TypePointer Function 10(fvec4) + 104: TypePointer Output 10(fvec4) +105(gl_FragColor): 104(ptr) Variable Output + 122: TypeSampler8(float) 2D filter+texture + 123: TypePointer UniformConstant 122 + 124(sampler): 123(ptr) Variable UniformConstant + 129: TypePointer UniformConstant 9(s1) + 130(foo): 129(ptr) Variable UniformConstant + 131(foo2): 18(ptr) Variable UniformConstant + 132: TypePointer UniformConstant 35 +133(uFloatArray): 132(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 13(locals2): 12(ptr) Variable Function + 37(localFArray): 36(ptr) Variable Function + 48(localIArray): 47(ptr) Variable Function + 67(x): 51(ptr) Variable Function + 69(localArray): 36(ptr) Variable Function + 74(i): 51(ptr) Variable Function + 81(a): 36(ptr) Variable Function + 19: 18(ptr) AccessChain 16(foo3) 17 + 20: 11(s2) Load 19 + Store 13(locals2) 20 + 22: 21(ptr) AccessChain 16(foo3) 17 17 + 23: 7(int) Load 22 + 25: 24(bool) SGreaterThan 23 17 + SelectionMerge 27 None + BranchConditional 25 26 53 + 26: Label + 32: 31(ptr) AccessChain 13(locals2) 28 29 + Store 32 30 + 42: 39(fvec2) Load 41(coord) + 43: 8(float) CompositeExtract 42 0 + 44: 31(ptr) AccessChain 37(localFArray) 38 + Store 44 43 + 49: 21(ptr) AccessChain 16(foo3) 17 17 + 50: 7(int) Load 49 + 52: 51(ptr) AccessChain 48(localIArray) 28 + Store 52 50 + Branch 27 + 53: Label + 54: 39(fvec2) Load 41(coord) + 55: 8(float) CompositeExtract 54 0 + 56: 31(ptr) AccessChain 13(locals2) 28 29 + Store 56 55 + 57: 31(ptr) AccessChain 37(localFArray) 38 + Store 57 30 + 58: 51(ptr) AccessChain 48(localIArray) 28 + Store 58 17 + Branch 27 + 27: Label + 59: 51(ptr) AccessChain 48(localIArray) 28 + 60: 7(int) Load 59 + 61: 24(bool) IEqual 60 17 + SelectionMerge 63 None + BranchConditional 61 62 63 + 62: Label + 64: 31(ptr) AccessChain 37(localFArray) 38 + 65: 8(float) Load 64 + 66: 8(float) FAdd 65 30 + Store 64 66 + Branch 63 + 63: Label + Store 67(x) 68 + 70: 7(int) Load 67(x) + 71: 39(fvec2) Load 41(coord) + 72: 8(float) CompositeExtract 71 0 + 73: 31(ptr) AccessChain 69(localArray) 70 + Store 73 72 + Store 74(i) 17 + Branch 75 + 75: Label + 77: 7(int) Load 74(i) + 79: 24(bool) SLessThan 77 78 + LoopMerge 76 None + BranchConditional 79 80 76 + 80: Label + 82: 7(int) Load 74(i) + 84: 31(ptr) AccessChain 81(a) 82 + Store 84 83 + 85: 7(int) Load 74(i) + 86: 7(int) IAdd 85 29 + Store 74(i) 86 + Branch 75 + 76: Label + 88: 7(int) Load 87(condition) + 89: 24(bool) IEqual 88 29 + SelectionMerge 91 None + BranchConditional 89 90 91 + 90: Label + 92: 35 Load 69(localArray) + Store 81(a) 92 + Branch 91 + 91: Label + 96: 10(fvec4) Load 95(color) + 98: 97(ptr) AccessChain 13(locals2) 93 + Store 98 96 + 99: 39(fvec2) Load 41(coord) + 100: 8(float) CompositeExtract 99 1 + 101: 97(ptr) AccessChain 13(locals2) 93 + 102: 10(fvec4) Load 101 + 103: 10(fvec4) CompositeInsert 100 102 2 + Store 101 103 + 106: 97(ptr) AccessChain 13(locals2) 93 + 107: 10(fvec4) Load 106 + 108: 31(ptr) AccessChain 37(localFArray) 38 + 109: 8(float) Load 108 + 110: 31(ptr) AccessChain 13(locals2) 28 29 + 111: 8(float) Load 110 + 112: 8(float) FAdd 109 111 + 113: 7(int) Load 67(x) + 114: 31(ptr) AccessChain 69(localArray) 113 + 115: 8(float) Load 114 + 116: 8(float) FAdd 112 115 + 117: 7(int) Load 67(x) + 118: 31(ptr) AccessChain 81(a) 117 + 119: 8(float) Load 118 + 120: 8(float) FAdd 116 119 + 121: 10(fvec4) VectorTimesScalar 107 120 + 125: 122 Load 124(sampler) + 126: 39(fvec2) Load 41(coord) + 127: 10(fvec4) TextureSample 125 126 + 128: 10(fvec4) FMul 121 127 + Store 105(gl_FragColor) 128 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out new file mode 100644 index 000000000..a0cfef783 --- /dev/null +++ b/Test/baseResults/spv.loops.frag.out @@ -0,0 +1,1113 @@ +spv.loops.frag +WARNING: 0:14: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 737 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "color" + Name 12 "BaseColor" + Name 47 "d" + Name 52 "bigColor" + Name 63 "bigColor1_1" + Name 92 "d2" + Name 97 "d3" + Name 102 "bigColor1_2" + Name 113 "bigColor1_3" + Name 119 "d4" + Name 130 "i" + Name 136 "Count" + Name 140 "bigColor2" + Name 151 "bigColor3" + Name 160 "i" + Name 175 "i" + Name 213 "i" + Name 238 "i" + Name 266 "i" + Name 296 "bigColor4" + Name 335 "bigColor5" + Name 341 "d5" + Name 359 "d6" + Name 371 "bigColor6" + Name 406 "d7" + Name 437 "bigColor7" + Name 459 "d8" + Name 506 "d9" + Name 538 "d10" + Name 549 "d11" + Name 561 "d12" + Name 589 "bigColor8" + Name 617 "gl_FragColor" + Name 623 "d14" + Name 629 "d15" + Name 646 "d16" + Name 683 "d18" + Name 694 "d17" + Name 720 "d13" + Name 721 "d19" + Name 722 "d20" + Name 723 "d21" + Name 724 "d22" + Name 725 "d23" + Name 726 "d24" + Name 727 "d25" + Name 728 "d26" + Name 729 "d27" + Name 730 "d28" + Name 731 "d29" + Name 732 "d30" + Name 733 "d31" + Name 734 "d32" + Name 735 "d33" + Name 736 "d34" + Decorate 12(BaseColor) Smooth + Decorate 617(gl_FragColor) BuiltIn FragColor + Decorate 720(d13) NoStaticUse + Decorate 721(d19) NoStaticUse + Decorate 722(d20) NoStaticUse + Decorate 723(d21) NoStaticUse + Decorate 724(d22) NoStaticUse + Decorate 725(d23) NoStaticUse + Decorate 726(d24) NoStaticUse + Decorate 727(d25) NoStaticUse + Decorate 728(d26) NoStaticUse + Decorate 729(d27) NoStaticUse + Decorate 730(d28) NoStaticUse + Decorate 731(d29) NoStaticUse + Decorate 732(d30) NoStaticUse + Decorate 733(d31) NoStaticUse + Decorate 734(d32) NoStaticUse + Decorate 735(d33) NoStaticUse + Decorate 736(d34) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer Input 8(fvec4) + 12(BaseColor): 11(ptr) Variable Input + 16: TypeBool + 17: 16(bool) ConstantTrue + 21: 7(float) Constant 1051260355 + 25: 8(fvec4) ConstantComposite 21 21 21 21 + 31: 7(float) Constant 1059648963 + 35: 8(fvec4) ConstantComposite 31 31 31 31 + 46: TypePointer UniformConstant 7(float) + 47(d): 46(ptr) Variable UniformConstant + 51: TypePointer UniformConstant 8(fvec4) + 52(bigColor): 51(ptr) Variable UniformConstant + 63(bigColor1_1): 51(ptr) Variable UniformConstant + 81: 7(float) Constant 1109917696 + 85: 7(float) Constant 1065353216 + 92(d2): 46(ptr) Variable UniformConstant + 97(d3): 46(ptr) Variable UniformConstant +102(bigColor1_2): 51(ptr) Variable UniformConstant +113(bigColor1_3): 51(ptr) Variable UniformConstant + 119(d4): 46(ptr) Variable UniformConstant + 128: TypeInt 32 1 + 129: TypePointer Function 128(int) + 131: 128(int) Constant 0 + 135: TypePointer UniformConstant 128(int) + 136(Count): 135(ptr) Variable UniformConstant + 140(bigColor2): 51(ptr) Variable UniformConstant + 145: 128(int) Constant 1 + 151(bigColor3): 51(ptr) Variable UniformConstant + 164: 128(int) Constant 42 + 179: 128(int) Constant 100 + 184: 7(float) Constant 1101004800 + 217: 128(int) Constant 120 + 296(bigColor4): 51(ptr) Variable UniformConstant + 335(bigColor5): 51(ptr) Variable UniformConstant + 341(d5): 46(ptr) Variable UniformConstant + 359(d6): 46(ptr) Variable UniformConstant + 371(bigColor6): 51(ptr) Variable UniformConstant + 406(d7): 46(ptr) Variable UniformConstant + 432: 7(float) Constant 0 + 437(bigColor7): 51(ptr) Variable UniformConstant + 459(d8): 46(ptr) Variable UniformConstant + 478: 7(float) Constant 1073741824 + 506(d9): 46(ptr) Variable UniformConstant + 523: 7(float) Constant 1084227584 + 538(d10): 46(ptr) Variable UniformConstant + 549(d11): 46(ptr) Variable UniformConstant + 561(d12): 46(ptr) Variable UniformConstant + 586: 7(float) Constant 1092616192 + 589(bigColor8): 51(ptr) Variable UniformConstant + 616: TypePointer Output 8(fvec4) +617(gl_FragColor): 616(ptr) Variable Output + 623(d14): 46(ptr) Variable UniformConstant + 629(d15): 46(ptr) Variable UniformConstant + 646(d16): 46(ptr) Variable UniformConstant + 683(d18): 46(ptr) Variable UniformConstant + 694(d17): 46(ptr) Variable UniformConstant + 720(d13): 46(ptr) Variable UniformConstant + 721(d19): 46(ptr) Variable UniformConstant + 722(d20): 46(ptr) Variable UniformConstant + 723(d21): 46(ptr) Variable UniformConstant + 724(d22): 46(ptr) Variable UniformConstant + 725(d23): 46(ptr) Variable UniformConstant + 726(d24): 46(ptr) Variable UniformConstant + 727(d25): 46(ptr) Variable UniformConstant + 728(d26): 46(ptr) Variable UniformConstant + 729(d27): 46(ptr) Variable UniformConstant + 730(d28): 46(ptr) Variable UniformConstant + 731(d29): 46(ptr) Variable UniformConstant + 732(d30): 46(ptr) Variable UniformConstant + 733(d31): 46(ptr) Variable UniformConstant + 734(d32): 46(ptr) Variable UniformConstant + 735(d33): 46(ptr) Variable UniformConstant + 736(d34): 46(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 10(color): 9(ptr) Variable Function + 130(i): 129(ptr) Variable Function + 160(i): 129(ptr) Variable Function + 175(i): 129(ptr) Variable Function + 213(i): 129(ptr) Variable Function + 238(i): 129(ptr) Variable Function + 266(i): 129(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + Branch 14 + 14: Label + LoopMerge 15 None + BranchConditional 17 18 15 + 18: Label + 19: 8(fvec4) Load 10(color) + 20: 7(float) CompositeExtract 19 0 + 22: 16(bool) FOrdLessThan 20 21 + SelectionMerge 24 None + BranchConditional 22 23 24 + 23: Label + 26: 8(fvec4) Load 10(color) + 27: 8(fvec4) FAdd 26 25 + Store 10(color) 27 + Branch 15 + 24: Label + 29: 8(fvec4) Load 10(color) + 30: 7(float) CompositeExtract 29 0 + 32: 16(bool) FOrdLessThan 30 31 + SelectionMerge 34 None + BranchConditional 32 33 34 + 33: Label + 36: 8(fvec4) Load 10(color) + 37: 8(fvec4) FAdd 36 35 + Store 10(color) 37 + Branch 15 + 34: Label + 39: 8(fvec4) Load 10(color) + 40: 8(fvec4) FAdd 39 25 + Store 10(color) 40 + Branch 15 + 15: Label + Branch 42 + 42: Label + 44: 8(fvec4) Load 10(color) + 45: 7(float) CompositeExtract 44 0 + 48: 7(float) Load 47(d) + 49: 16(bool) FOrdLessThan 45 48 + LoopMerge 43 None + BranchConditional 49 50 43 + 50: Label + 53: 8(fvec4) Load 52(bigColor) + 54: 8(fvec4) Load 10(color) + 55: 8(fvec4) FAdd 54 53 + Store 10(color) 55 + Branch 42 + 43: Label + Branch 56 + 56: Label + 58: 8(fvec4) Load 10(color) + 59: 7(float) CompositeExtract 58 2 + 60: 7(float) Load 47(d) + 61: 16(bool) FOrdLessThan 59 60 + LoopMerge 57 None + BranchConditional 61 62 57 + 62: Label + 64: 8(fvec4) Load 63(bigColor1_1) + 65: 8(fvec4) Load 10(color) + 66: 8(fvec4) FAdd 65 64 + Store 10(color) 66 + 67: 8(fvec4) Load 10(color) + 68: 7(float) CompositeExtract 67 3 + 69: 7(float) Load 47(d) + 70: 16(bool) FOrdLessThan 68 69 + SelectionMerge 72 None + BranchConditional 70 71 72 + 71: Label + Branch 56 + 72: Label + 74: 8(fvec4) Load 63(bigColor1_1) + 75: 8(fvec4) Load 10(color) + 76: 8(fvec4) FAdd 75 74 + Store 10(color) 76 + Branch 56 + 57: Label + Branch 77 + 77: Label + 79: 8(fvec4) Load 10(color) + 80: 7(float) CompositeExtract 79 0 + 82: 16(bool) FOrdLessThan 80 81 + LoopMerge 78 None + BranchConditional 82 83 78 + 83: Label + 84: 8(fvec4) Load 10(color) + 86: 8(fvec4) CompositeConstruct 85 85 85 85 + 87: 8(fvec4) FAdd 84 86 + Store 10(color) 87 + Branch 77 + 78: Label + Branch 88 + 88: Label + 90: 8(fvec4) Load 10(color) + 91: 7(float) CompositeExtract 90 3 + 93: 7(float) Load 92(d2) + 94: 16(bool) FOrdLessThan 91 93 + 95: 8(fvec4) Load 10(color) + 96: 7(float) CompositeExtract 95 1 + 98: 7(float) Load 97(d3) + 99: 16(bool) FOrdLessThan 96 98 + 100: 16(bool) LogicalAnd 94 99 + LoopMerge 89 None + BranchConditional 100 101 89 + 101: Label + 103: 8(fvec4) Load 102(bigColor1_2) + 104: 8(fvec4) Load 10(color) + 105: 8(fvec4) FAdd 104 103 + Store 10(color) 105 + Branch 88 + 89: Label + Branch 106 + 106: Label + 108: 8(fvec4) Load 10(color) + 109: 7(float) CompositeExtract 108 2 + 110: 7(float) Load 97(d3) + 111: 16(bool) FOrdLessThan 109 110 + LoopMerge 107 None + BranchConditional 111 112 107 + 112: Label + 114: 8(fvec4) Load 113(bigColor1_3) + 115: 8(fvec4) Load 10(color) + 116: 8(fvec4) FAdd 115 114 + Store 10(color) 116 + 117: 8(fvec4) Load 10(color) + 118: 7(float) CompositeExtract 117 1 + 120: 7(float) Load 119(d4) + 121: 16(bool) FOrdLessThan 118 120 + SelectionMerge 123 None + BranchConditional 121 122 123 + 122: Label + Branch 107 + 123: Label + 125: 8(fvec4) Load 113(bigColor1_3) + 126: 8(fvec4) Load 10(color) + 127: 8(fvec4) FAdd 126 125 + Store 10(color) 127 + Branch 106 + 107: Label + Store 130(i) 131 + Branch 132 + 132: Label + 134: 128(int) Load 130(i) + 137: 128(int) Load 136(Count) + 138: 16(bool) SLessThan 134 137 + LoopMerge 133 None + BranchConditional 138 139 133 + 139: Label + 141: 8(fvec4) Load 140(bigColor2) + 142: 8(fvec4) Load 10(color) + 143: 8(fvec4) FAdd 142 141 + Store 10(color) 143 + 144: 128(int) Load 130(i) + 146: 128(int) IAdd 144 145 + Store 130(i) 146 + Branch 132 + 133: Label + Branch 147 + 147: Label + LoopMerge 148 None + Branch 149 + 149: Label + 152: 8(fvec4) Load 151(bigColor3) + 153: 8(fvec4) Load 10(color) + 154: 8(fvec4) FAdd 153 152 + Store 10(color) 154 + Branch 150 + 150: Label + 155: 8(fvec4) Load 10(color) + 156: 7(float) CompositeExtract 155 0 + 157: 7(float) Load 92(d2) + 158: 16(bool) FOrdLessThan 156 157 + BranchConditional 158 159 148 + 159: Label + Branch 147 + 148: Label + Store 160(i) 131 + Branch 161 + 161: Label + 163: 128(int) Load 160(i) + 165: 16(bool) SLessThan 163 164 + LoopMerge 162 None + BranchConditional 165 166 162 + 166: Label + 167: 7(float) Load 97(d3) + 168: 8(fvec4) Load 10(color) + 169: 7(float) CompositeExtract 168 2 + 170: 7(float) FAdd 169 167 + 171: 8(fvec4) Load 10(color) + 172: 8(fvec4) CompositeInsert 170 171 2 + Store 10(color) 172 + 173: 128(int) Load 160(i) + 174: 128(int) IAdd 173 145 + Store 160(i) 174 + Branch 161 + 162: Label + Store 175(i) 131 + Branch 176 + 176: Label + 178: 128(int) Load 175(i) + 180: 16(bool) SLessThan 178 179 + LoopMerge 177 None + BranchConditional 180 181 177 + 181: Label + 182: 8(fvec4) Load 10(color) + 183: 7(float) CompositeExtract 182 2 + 185: 16(bool) FOrdLessThan 183 184 + SelectionMerge 187 None + BranchConditional 185 186 193 + 186: Label + 188: 8(fvec4) Load 10(color) + 189: 7(float) CompositeExtract 188 0 + 190: 7(float) FAdd 189 85 + 191: 8(fvec4) Load 10(color) + 192: 8(fvec4) CompositeInsert 190 191 0 + Store 10(color) 192 + Branch 187 + 193: Label + 194: 8(fvec4) Load 10(color) + 195: 7(float) CompositeExtract 194 1 + 196: 7(float) FAdd 195 85 + 197: 8(fvec4) Load 10(color) + 198: 8(fvec4) CompositeInsert 196 197 1 + Store 10(color) 198 + Branch 187 + 187: Label + 199: 8(fvec4) Load 10(color) + 200: 7(float) CompositeExtract 199 3 + 201: 16(bool) FOrdLessThan 200 184 + SelectionMerge 203 None + BranchConditional 201 202 203 + 202: Label + 204: 8(fvec4) Load 10(color) + 205: 7(float) CompositeExtract 204 2 + 206: 8(fvec4) Load 10(color) + 207: 7(float) CompositeExtract 206 1 + 208: 16(bool) FOrdGreaterThan 205 207 + SelectionMerge 210 None + BranchConditional 208 209 210 + 209: Label + Branch 210 + 210: Label + Branch 203 + 203: Label + 211: 128(int) Load 175(i) + 212: 128(int) IAdd 211 145 + Store 175(i) 212 + Branch 176 + 177: Label + Store 213(i) 131 + Branch 214 + 214: Label + 216: 128(int) Load 213(i) + 218: 16(bool) SLessThan 216 217 + LoopMerge 215 None + BranchConditional 218 219 215 + 219: Label + 220: 8(fvec4) Load 10(color) + 221: 7(float) CompositeExtract 220 2 + 222: 16(bool) FOrdLessThan 221 184 + SelectionMerge 224 None + BranchConditional 222 223 230 + 223: Label + 225: 8(fvec4) Load 10(color) + 226: 7(float) CompositeExtract 225 0 + 227: 7(float) FAdd 226 85 + 228: 8(fvec4) Load 10(color) + 229: 8(fvec4) CompositeInsert 227 228 0 + Store 10(color) 229 + Branch 224 + 230: Label + 231: 8(fvec4) Load 10(color) + 232: 7(float) CompositeExtract 231 1 + 233: 7(float) FAdd 232 85 + 234: 8(fvec4) Load 10(color) + 235: 8(fvec4) CompositeInsert 233 234 1 + Store 10(color) 235 + Branch 224 + 224: Label + 236: 128(int) Load 213(i) + 237: 128(int) IAdd 236 145 + Store 213(i) 237 + Branch 214 + 215: Label + Store 238(i) 131 + Branch 239 + 239: Label + 241: 128(int) Load 238(i) + 242: 16(bool) SLessThan 241 164 + LoopMerge 240 None + BranchConditional 242 243 240 + 243: Label + 244: 7(float) Load 97(d3) + 245: 8(fvec4) Load 10(color) + 246: 7(float) CompositeExtract 245 2 + 247: 7(float) FAdd 246 244 + 248: 8(fvec4) Load 10(color) + 249: 8(fvec4) CompositeInsert 247 248 2 + Store 10(color) 249 + 250: 8(fvec4) Load 10(color) + 251: 7(float) CompositeExtract 250 0 + 252: 7(float) Load 119(d4) + 253: 16(bool) FOrdLessThan 251 252 + SelectionMerge 255 None + BranchConditional 253 254 255 + 254: Label + 256: 128(int) Load 238(i) + 257: 128(int) IAdd 256 145 + Store 238(i) 257 + Branch 239 + 255: Label + 259: 8(fvec4) Load 10(color) + 260: 7(float) CompositeExtract 259 3 + 261: 7(float) FAdd 260 85 + 262: 8(fvec4) Load 10(color) + 263: 8(fvec4) CompositeInsert 261 262 3 + Store 10(color) 263 + 264: 128(int) Load 238(i) + 265: 128(int) IAdd 264 145 + Store 238(i) 265 + Branch 239 + 240: Label + Store 266(i) 131 + Branch 267 + 267: Label + 269: 128(int) Load 266(i) + 270: 16(bool) SLessThan 269 164 + LoopMerge 268 None + BranchConditional 270 271 268 + 271: Label + 272: 7(float) Load 97(d3) + 273: 8(fvec4) Load 10(color) + 274: 7(float) CompositeExtract 273 2 + 275: 7(float) FAdd 274 272 + 276: 8(fvec4) Load 10(color) + 277: 8(fvec4) CompositeInsert 275 276 2 + Store 10(color) 277 + 278: 8(fvec4) Load 10(color) + 279: 7(float) CompositeExtract 278 0 + 280: 7(float) Load 119(d4) + 281: 16(bool) FOrdLessThan 279 280 + SelectionMerge 283 None + BranchConditional 281 282 283 + 282: Label + Branch 268 + 283: Label + 285: 8(fvec4) Load 10(color) + 286: 7(float) CompositeExtract 285 3 + 287: 7(float) FAdd 286 85 + 288: 8(fvec4) Load 10(color) + 289: 8(fvec4) CompositeInsert 287 288 3 + Store 10(color) 289 + 290: 128(int) Load 266(i) + 291: 128(int) IAdd 290 145 + Store 266(i) 291 + Branch 267 + 268: Label + Branch 292 + 292: Label + LoopMerge 293 None + Branch 294 + 294: Label + 297: 8(fvec4) Load 296(bigColor4) + 298: 8(fvec4) Load 10(color) + 299: 8(fvec4) FAdd 298 297 + Store 10(color) 299 + 300: 8(fvec4) Load 10(color) + 301: 7(float) CompositeExtract 300 0 + 302: 7(float) Load 119(d4) + 303: 16(bool) FOrdLessThan 301 302 + SelectionMerge 305 None + BranchConditional 303 304 305 + 304: Label + Branch 295 + 305: Label + 307: 8(fvec4) Load 10(color) + 308: 7(float) CompositeExtract 307 1 + 309: 7(float) Load 119(d4) + 310: 16(bool) FOrdLessThan 308 309 + SelectionMerge 312 None + BranchConditional 310 311 319 + 311: Label + 313: 7(float) Load 119(d4) + 314: 8(fvec4) Load 10(color) + 315: 7(float) CompositeExtract 314 1 + 316: 7(float) FAdd 315 313 + 317: 8(fvec4) Load 10(color) + 318: 8(fvec4) CompositeInsert 316 317 1 + Store 10(color) 318 + Branch 312 + 319: Label + 320: 7(float) Load 119(d4) + 321: 8(fvec4) Load 10(color) + 322: 7(float) CompositeExtract 321 0 + 323: 7(float) FAdd 322 320 + 324: 8(fvec4) Load 10(color) + 325: 8(fvec4) CompositeInsert 323 324 0 + Store 10(color) 325 + Branch 312 + 312: Label + Branch 295 + 295: Label + 326: 8(fvec4) Load 10(color) + 327: 7(float) CompositeExtract 326 2 + 328: 7(float) Load 119(d4) + 329: 16(bool) FOrdLessThan 327 328 + BranchConditional 329 330 293 + 330: Label + Branch 292 + 293: Label + Branch 331 + 331: Label + LoopMerge 332 None + Branch 333 + 333: Label + 336: 8(fvec4) Load 335(bigColor5) + 337: 8(fvec4) Load 10(color) + 338: 8(fvec4) FAdd 337 336 + Store 10(color) 338 + 339: 8(fvec4) Load 10(color) + 340: 7(float) CompositeExtract 339 1 + 342: 7(float) Load 341(d5) + 343: 16(bool) FOrdLessThan 340 342 + SelectionMerge 345 None + BranchConditional 343 344 345 + 344: Label + 346: 7(float) Load 341(d5) + 347: 8(fvec4) Load 10(color) + 348: 7(float) CompositeExtract 347 1 + 349: 7(float) FAdd 348 346 + 350: 8(fvec4) Load 10(color) + 351: 8(fvec4) CompositeInsert 349 350 1 + Store 10(color) 351 + Branch 345 + 345: Label + Branch 334 + 334: Label + 352: 8(fvec4) Load 10(color) + 353: 7(float) CompositeExtract 352 0 + 354: 7(float) Load 341(d5) + 355: 16(bool) FOrdLessThan 353 354 + BranchConditional 355 356 332 + 356: Label + Branch 331 + 332: Label + 357: 8(fvec4) Load 10(color) + 358: 7(float) CompositeExtract 357 0 + 360: 7(float) Load 359(d6) + 361: 16(bool) FOrdLessThan 358 360 + SelectionMerge 363 None + BranchConditional 361 362 375 + 362: Label + Branch 364 + 364: Label + 366: 8(fvec4) Load 10(color) + 367: 7(float) CompositeExtract 366 1 + 368: 7(float) Load 359(d6) + 369: 16(bool) FOrdLessThan 367 368 + LoopMerge 365 None + BranchConditional 369 370 365 + 370: Label + 372: 8(fvec4) Load 371(bigColor6) + 373: 8(fvec4) Load 10(color) + 374: 8(fvec4) FAdd 373 372 + Store 10(color) 374 + Branch 364 + 365: Label + Branch 363 + 375: Label + Branch 376 + 376: Label + 378: 8(fvec4) Load 10(color) + 379: 7(float) CompositeExtract 378 2 + 380: 7(float) Load 359(d6) + 381: 16(bool) FOrdLessThan 379 380 + LoopMerge 377 None + BranchConditional 381 382 377 + 382: Label + 383: 8(fvec4) Load 371(bigColor6) + 384: 7(float) CompositeExtract 383 2 + 385: 8(fvec4) Load 10(color) + 386: 7(float) CompositeExtract 385 2 + 387: 7(float) FAdd 386 384 + 388: 8(fvec4) Load 10(color) + 389: 8(fvec4) CompositeInsert 387 388 2 + Store 10(color) 389 + Branch 376 + 377: Label + Branch 363 + 363: Label + 390: 8(fvec4) Load 10(color) + 391: 7(float) CompositeExtract 390 0 + 392: 7(float) Load 359(d6) + 393: 16(bool) FOrdLessThan 391 392 + SelectionMerge 395 None + BranchConditional 393 394 412 + 394: Label + Branch 396 + 396: Label + 398: 8(fvec4) Load 10(color) + 399: 7(float) CompositeExtract 398 1 + 400: 7(float) Load 359(d6) + 401: 16(bool) FOrdLessThan 399 400 + LoopMerge 397 None + BranchConditional 401 402 397 + 402: Label + 403: 8(fvec4) Load 371(bigColor6) + 404: 8(fvec4) Load 10(color) + 405: 8(fvec4) FAdd 404 403 + Store 10(color) 405 + 407: 7(float) Load 406(d7) + 408: 16(bool) FOrdLessThan 407 85 + SelectionMerge 410 None + BranchConditional 408 409 410 + 409: Label + Branch 397 + 410: Label + Branch 396 + 397: Label + Branch 395 + 412: Label + Branch 413 + 413: Label + 415: 8(fvec4) Load 10(color) + 416: 7(float) CompositeExtract 415 2 + 417: 7(float) Load 359(d6) + 418: 16(bool) FOrdLessThan 416 417 + LoopMerge 414 None + BranchConditional 418 419 414 + 419: Label + 420: 8(fvec4) Load 371(bigColor6) + 421: 7(float) CompositeExtract 420 2 + 422: 8(fvec4) Load 10(color) + 423: 7(float) CompositeExtract 422 2 + 424: 7(float) FAdd 423 421 + 425: 8(fvec4) Load 10(color) + 426: 8(fvec4) CompositeInsert 424 425 2 + Store 10(color) 426 + Branch 413 + 414: Label + Branch 395 + 395: Label + Branch 427 + 427: Label + LoopMerge 428 None + Branch 429 + 429: Label + 431: 7(float) Load 406(d7) + 433: 16(bool) FOrdLessThan 431 432 + SelectionMerge 435 None + BranchConditional 433 434 435 + 434: Label + Branch 428 + 435: Label + 438: 8(fvec4) Load 437(bigColor7) + 439: 8(fvec4) Load 10(color) + 440: 8(fvec4) FAdd 439 438 + Store 10(color) 440 + 441: 7(float) Load 406(d7) + 442: 16(bool) FOrdLessThan 441 85 + SelectionMerge 444 None + BranchConditional 442 443 444 + 443: Label + 445: 8(fvec4) Load 10(color) + 446: 7(float) CompositeExtract 445 2 + 447: 7(float) FAdd 446 85 + 448: 8(fvec4) Load 10(color) + 449: 8(fvec4) CompositeInsert 447 448 2 + Store 10(color) 449 + Branch 428 + 444: Label + 451: 8(fvec4) Load 12(BaseColor) + 452: 8(fvec4) Load 10(color) + 453: 8(fvec4) FAdd 452 451 + Store 10(color) 453 + Branch 430 + 430: Label + BranchConditional 17 454 428 + 454: Label + Branch 427 + 428: Label + Branch 455 + 455: Label + LoopMerge 456 None + Branch 457 + 457: Label + 460: 7(float) Load 459(d8) + 461: 16(bool) FOrdLessThan 460 432 + SelectionMerge 463 None + BranchConditional 461 462 463 + 462: Label + Branch 456 + 463: Label + 465: 8(fvec4) Load 437(bigColor7) + 466: 8(fvec4) Load 10(color) + 467: 8(fvec4) FAdd 466 465 + Store 10(color) 467 + 468: 7(float) Load 459(d8) + 469: 16(bool) FOrdLessThan 468 85 + SelectionMerge 471 None + BranchConditional 469 470 471 + 470: Label + 472: 8(fvec4) Load 10(color) + 473: 7(float) CompositeExtract 472 2 + 474: 7(float) FAdd 473 85 + 475: 8(fvec4) Load 10(color) + 476: 8(fvec4) CompositeInsert 474 475 2 + Store 10(color) 476 + 477: 7(float) Load 459(d8) + 479: 16(bool) FOrdLessThan 477 478 + SelectionMerge 481 None + BranchConditional 479 480 487 + 480: Label + 482: 8(fvec4) Load 10(color) + 483: 7(float) CompositeExtract 482 1 + 484: 7(float) FAdd 483 85 + 485: 8(fvec4) Load 10(color) + 486: 8(fvec4) CompositeInsert 484 485 1 + Store 10(color) 486 + Branch 481 + 487: Label + 488: 8(fvec4) Load 10(color) + 489: 7(float) CompositeExtract 488 0 + 490: 7(float) FAdd 489 85 + 491: 8(fvec4) Load 10(color) + 492: 8(fvec4) CompositeInsert 490 491 0 + Store 10(color) 492 + Branch 481 + 481: Label + Branch 456 + 471: Label + 494: 8(fvec4) Load 12(BaseColor) + 495: 8(fvec4) Load 10(color) + 496: 8(fvec4) FAdd 495 494 + Store 10(color) 496 + Branch 458 + 458: Label + 497: 8(fvec4) Load 10(color) + 498: 7(float) CompositeExtract 497 2 + 499: 7(float) Load 459(d8) + 500: 16(bool) FOrdLessThan 498 499 + BranchConditional 500 501 456 + 501: Label + Branch 455 + 456: Label + Branch 502 + 502: Label + 504: 8(fvec4) Load 10(color) + 505: 7(float) CompositeExtract 504 3 + 507: 7(float) Load 506(d9) + 508: 16(bool) FOrdLessThan 505 507 + LoopMerge 503 None + BranchConditional 508 509 503 + 509: Label + 510: 7(float) Load 506(d9) + 511: 7(float) Load 459(d8) + 512: 16(bool) FOrdGreaterThan 510 511 + SelectionMerge 514 None + BranchConditional 512 513 514 + 513: Label + 515: 8(fvec4) Load 10(color) + 516: 7(float) CompositeExtract 515 0 + 517: 7(float) Load 406(d7) + 518: 16(bool) FOrdLessThanEqual 516 517 + SelectionMerge 520 None + BranchConditional 518 519 520 + 519: Label + 521: 8(fvec4) Load 10(color) + 522: 7(float) CompositeExtract 521 2 + 524: 16(bool) FOrdEqual 522 523 + SelectionMerge 526 None + BranchConditional 524 525 532 + 525: Label + 527: 8(fvec4) Load 10(color) + 528: 7(float) CompositeExtract 527 3 + 529: 7(float) FAdd 528 85 + 530: 8(fvec4) Load 10(color) + 531: 8(fvec4) CompositeInsert 529 530 3 + Store 10(color) 531 + Branch 526 + 532: Label + Branch 503 + 526: Label + Branch 520 + 520: Label + Branch 514 + 514: Label + Branch 502 + 503: Label + Branch 534 + 534: Label + 536: 8(fvec4) Load 10(color) + 537: 7(float) CompositeExtract 536 2 + 539: 7(float) Load 538(d10) + 540: 16(bool) FOrdLessThan 537 539 + LoopMerge 535 None + BranchConditional 540 541 535 + 541: Label + 542: 8(fvec4) Load 10(color) + 543: 7(float) CompositeExtract 542 1 + 544: 7(float) FAdd 543 85 + 545: 8(fvec4) Load 10(color) + 546: 8(fvec4) CompositeInsert 544 545 1 + Store 10(color) 546 + 547: 8(fvec4) Load 10(color) + 548: 7(float) CompositeExtract 547 1 + 550: 7(float) Load 549(d11) + 551: 16(bool) FOrdLessThan 548 550 + SelectionMerge 553 None + BranchConditional 551 552 553 + 552: Label + 554: 8(fvec4) Load 10(color) + 555: 7(float) CompositeExtract 554 2 + 556: 7(float) FAdd 555 85 + 557: 8(fvec4) Load 10(color) + 558: 8(fvec4) CompositeInsert 556 557 2 + Store 10(color) 558 + 559: 8(fvec4) Load 10(color) + 560: 7(float) CompositeExtract 559 3 + 562: 7(float) Load 561(d12) + 563: 16(bool) FOrdLessThan 560 562 + SelectionMerge 565 None + BranchConditional 563 564 571 + 564: Label + 566: 8(fvec4) Load 10(color) + 567: 7(float) CompositeExtract 566 3 + 568: 7(float) FAdd 567 85 + 569: 8(fvec4) Load 10(color) + 570: 8(fvec4) CompositeInsert 568 569 3 + Store 10(color) 570 + Branch 565 + 571: Label + 572: 8(fvec4) Load 10(color) + 573: 7(float) CompositeExtract 572 0 + 574: 7(float) FAdd 573 85 + 575: 8(fvec4) Load 10(color) + 576: 8(fvec4) CompositeInsert 574 575 0 + Store 10(color) 576 + Branch 565 + 565: Label + Branch 534 + 553: Label + 578: 8(fvec4) Load 10(color) + 579: 8(fvec4) CompositeConstruct 85 85 85 85 + 580: 8(fvec4) FAdd 578 579 + Store 10(color) 580 + Branch 535 + 535: Label + Branch 582 + 582: Label + 584: 8(fvec4) Load 10(color) + 585: 7(float) CompositeExtract 584 0 + 587: 16(bool) FOrdLessThan 585 586 + LoopMerge 583 None + BranchConditional 587 588 583 + 588: Label + 590: 8(fvec4) Load 589(bigColor8) + 591: 8(fvec4) Load 10(color) + 592: 8(fvec4) FAdd 591 590 + Store 10(color) 592 + 593: 8(fvec4) Load 10(color) + 594: 7(float) CompositeExtract 593 2 + 595: 7(float) Load 459(d8) + 596: 16(bool) FOrdLessThan 594 595 + SelectionMerge 598 None + BranchConditional 596 597 598 + 597: Label + 599: 8(fvec4) Load 10(color) + 600: 7(float) CompositeExtract 599 3 + 601: 7(float) Load 359(d6) + 602: 16(bool) FOrdLessThan 600 601 + SelectionMerge 604 None + BranchConditional 602 603 604 + 603: Label + Branch 582 + 604: Label + Branch 598 + 598: Label + 606: 8(fvec4) Load 589(bigColor8) + 607: 7(float) CompositeExtract 606 0 + 608: 8(fvec4) Load 10(color) + 609: 7(float) CompositeExtract 608 1 + 610: 7(float) FAdd 609 607 + 611: 8(fvec4) Load 10(color) + 612: 8(fvec4) CompositeInsert 610 611 1 + Store 10(color) 612 + Branch 582 + 583: Label + 613: 8(fvec4) Load 10(color) + 614: 8(fvec4) CompositeConstruct 85 85 85 85 + 615: 8(fvec4) FAdd 613 614 + Store 10(color) 615 + 618: 8(fvec4) Load 10(color) + Store 617(gl_FragColor) 618 + Branch 619 + 619: Label + 621: 8(fvec4) Load 10(color) + 622: 7(float) CompositeExtract 621 0 + 624: 7(float) Load 623(d14) + 625: 16(bool) FOrdLessThan 622 624 + LoopMerge 620 None + BranchConditional 625 626 620 + 626: Label + 627: 8(fvec4) Load 10(color) + 628: 7(float) CompositeExtract 627 1 + 630: 7(float) Load 629(d15) + 631: 16(bool) FOrdLessThan 628 630 + SelectionMerge 633 None + BranchConditional 631 632 635 + 632: Label + Branch 6 + 635: Label + 636: 8(fvec4) Load 10(color) + 637: 8(fvec4) CompositeConstruct 85 85 85 85 + 638: 8(fvec4) FAdd 636 637 + Store 10(color) 638 + Branch 633 + 633: Label + Branch 619 + 620: Label + 639: 8(fvec4) Load 10(color) + 640: 8(fvec4) CompositeConstruct 85 85 85 85 + 641: 8(fvec4) FAdd 639 640 + Store 10(color) 641 + Branch 642 + 642: Label + 644: 8(fvec4) Load 10(color) + 645: 7(float) CompositeExtract 644 3 + 647: 7(float) Load 646(d16) + 648: 16(bool) FOrdLessThan 645 647 + LoopMerge 643 None + BranchConditional 648 649 643 + 649: Label + 650: 8(fvec4) Load 10(color) + 651: 7(float) CompositeExtract 650 3 + 652: 7(float) FAdd 651 85 + 653: 8(fvec4) Load 10(color) + 654: 8(fvec4) CompositeInsert 652 653 3 + Store 10(color) 654 + Branch 642 + 643: Label + Branch 655 + 655: Label + 657: 8(fvec4) Load 10(color) + 658: 7(float) CompositeExtract 657 3 + 659: 7(float) Load 92(d2) + 660: 16(bool) FOrdLessThan 658 659 + 661: 8(fvec4) Load 10(color) + 662: 7(float) CompositeExtract 661 1 + 663: 7(float) Load 97(d3) + 664: 16(bool) FOrdLessThan 662 663 + 665: 16(bool) LogicalAnd 660 664 + LoopMerge 656 None + BranchConditional 665 666 656 + 666: Label + 667: 8(fvec4) Load 102(bigColor1_2) + 668: 8(fvec4) Load 10(color) + 669: 8(fvec4) FAdd 668 667 + Store 10(color) 669 + 670: 8(fvec4) Load 10(color) + 671: 7(float) CompositeExtract 670 2 + 672: 7(float) Load 97(d3) + 673: 16(bool) FOrdLessThan 671 672 + SelectionMerge 675 None + BranchConditional 673 674 675 + 674: Label + Branch 6 + 675: Label + Branch 655 + 656: Label + Branch 677 + 677: Label + LoopMerge 678 None + Branch 679 + 679: Label + 681: 8(fvec4) Load 10(color) + 682: 7(float) CompositeExtract 681 1 + 684: 7(float) Load 683(d18) + 685: 16(bool) FOrdLessThan 682 684 + SelectionMerge 687 None + BranchConditional 685 686 687 + 686: Label + Branch 6 + 687: Label + 689: 8(fvec4) Load 10(color) + 690: 8(fvec4) CompositeConstruct 85 85 85 85 + 691: 8(fvec4) FAdd 689 690 + Store 10(color) 691 + Branch 680 + 680: Label + 692: 8(fvec4) Load 10(color) + 693: 7(float) CompositeExtract 692 0 + 695: 7(float) Load 694(d17) + 696: 16(bool) FOrdLessThan 693 695 + BranchConditional 696 697 678 + 697: Label + Branch 677 + 678: Label + Branch 698 + 698: Label + 700: 8(fvec4) Load 10(color) + 701: 7(float) CompositeExtract 700 1 + 702: 7(float) Load 646(d16) + 703: 16(bool) FOrdLessThan 701 702 + LoopMerge 699 None + BranchConditional 703 704 699 + 704: Label + 705: 8(fvec4) Load 10(color) + 706: 7(float) CompositeExtract 705 3 + 707: 7(float) Load 646(d16) + 708: 16(bool) FOrdLessThan 706 707 + SelectionMerge 710 None + BranchConditional 708 709 712 + 709: Label + Kill + 712: Label + 713: 8(fvec4) Load 10(color) + 714: 8(fvec4) CompositeConstruct 85 85 85 85 + 715: 8(fvec4) FAdd 713 714 + Store 10(color) 715 + Branch 710 + 710: Label + Branch 698 + 699: Label + 716: 8(fvec4) Load 10(color) + 717: 8(fvec4) CompositeConstruct 85 85 85 85 + 718: 8(fvec4) FAdd 716 717 + Store 10(color) 718 + 719: 8(fvec4) Load 10(color) + Store 617(gl_FragColor) 719 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out new file mode 100644 index 000000000..7aef1ae8f --- /dev/null +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -0,0 +1,352 @@ +spv.loopsArtificial.frag +WARNING: 0:14: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 192 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "color" + Name 12 "BaseColor" + Name 19 "bigColor4" + Name 26 "d4" + Name 79 "d13" + Name 145 "gl_FragColor" + Name 147 "bigColor" + Name 148 "bigColor1_1" + Name 149 "bigColor1_2" + Name 150 "bigColor1_3" + Name 151 "bigColor2" + Name 152 "bigColor3" + Name 153 "bigColor5" + Name 154 "bigColor6" + Name 155 "bigColor7" + Name 156 "bigColor8" + Name 157 "d" + Name 158 "d2" + Name 159 "d3" + Name 160 "d5" + Name 161 "d6" + Name 162 "d7" + Name 163 "d8" + Name 164 "d9" + Name 165 "d10" + Name 166 "d11" + Name 167 "d12" + Name 168 "d14" + Name 169 "d15" + Name 170 "d16" + Name 171 "d17" + Name 172 "d18" + Name 173 "d19" + Name 174 "d20" + Name 175 "d21" + Name 176 "d22" + Name 177 "d23" + Name 178 "d24" + Name 179 "d25" + Name 180 "d26" + Name 181 "d27" + Name 182 "d28" + Name 183 "d29" + Name 184 "d30" + Name 185 "d31" + Name 186 "d32" + Name 187 "d33" + Name 188 "d34" + Name 191 "Count" + Decorate 12(BaseColor) Smooth + Decorate 145(gl_FragColor) BuiltIn FragColor + Decorate 147(bigColor) NoStaticUse + Decorate 148(bigColor1_1) NoStaticUse + Decorate 149(bigColor1_2) NoStaticUse + Decorate 150(bigColor1_3) NoStaticUse + Decorate 151(bigColor2) NoStaticUse + Decorate 152(bigColor3) NoStaticUse + Decorate 153(bigColor5) NoStaticUse + Decorate 154(bigColor6) NoStaticUse + Decorate 155(bigColor7) NoStaticUse + Decorate 156(bigColor8) NoStaticUse + Decorate 157(d) NoStaticUse + Decorate 158(d2) NoStaticUse + Decorate 159(d3) NoStaticUse + Decorate 160(d5) NoStaticUse + Decorate 161(d6) NoStaticUse + Decorate 162(d7) NoStaticUse + Decorate 163(d8) NoStaticUse + Decorate 164(d9) NoStaticUse + Decorate 165(d10) NoStaticUse + Decorate 166(d11) NoStaticUse + Decorate 167(d12) NoStaticUse + Decorate 168(d14) NoStaticUse + Decorate 169(d15) NoStaticUse + Decorate 170(d16) NoStaticUse + Decorate 171(d17) NoStaticUse + Decorate 172(d18) NoStaticUse + Decorate 173(d19) NoStaticUse + Decorate 174(d20) NoStaticUse + Decorate 175(d21) NoStaticUse + Decorate 176(d22) NoStaticUse + Decorate 177(d23) NoStaticUse + Decorate 178(d24) NoStaticUse + Decorate 179(d25) NoStaticUse + Decorate 180(d26) NoStaticUse + Decorate 181(d27) NoStaticUse + Decorate 182(d28) NoStaticUse + Decorate 183(d29) NoStaticUse + Decorate 184(d30) NoStaticUse + Decorate 185(d31) NoStaticUse + Decorate 186(d32) NoStaticUse + Decorate 187(d33) NoStaticUse + Decorate 188(d34) NoStaticUse + Decorate 191(Count) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer Input 8(fvec4) + 12(BaseColor): 11(ptr) Variable Input + 18: TypePointer UniformConstant 8(fvec4) + 19(bigColor4): 18(ptr) Variable UniformConstant + 25: TypePointer UniformConstant 7(float) + 26(d4): 25(ptr) Variable UniformConstant + 28: TypeBool + 32: 7(float) Constant 1073741824 + 46: 7(float) Constant 1065353216 + 79(d13): 25(ptr) Variable UniformConstant + 144: TypePointer Output 8(fvec4) +145(gl_FragColor): 144(ptr) Variable Output + 147(bigColor): 18(ptr) Variable UniformConstant +148(bigColor1_1): 18(ptr) Variable UniformConstant +149(bigColor1_2): 18(ptr) Variable UniformConstant +150(bigColor1_3): 18(ptr) Variable UniformConstant + 151(bigColor2): 18(ptr) Variable UniformConstant + 152(bigColor3): 18(ptr) Variable UniformConstant + 153(bigColor5): 18(ptr) Variable UniformConstant + 154(bigColor6): 18(ptr) Variable UniformConstant + 155(bigColor7): 18(ptr) Variable UniformConstant + 156(bigColor8): 18(ptr) Variable UniformConstant + 157(d): 25(ptr) Variable UniformConstant + 158(d2): 25(ptr) Variable UniformConstant + 159(d3): 25(ptr) Variable UniformConstant + 160(d5): 25(ptr) Variable UniformConstant + 161(d6): 25(ptr) Variable UniformConstant + 162(d7): 25(ptr) Variable UniformConstant + 163(d8): 25(ptr) Variable UniformConstant + 164(d9): 25(ptr) Variable UniformConstant + 165(d10): 25(ptr) Variable UniformConstant + 166(d11): 25(ptr) Variable UniformConstant + 167(d12): 25(ptr) Variable UniformConstant + 168(d14): 25(ptr) Variable UniformConstant + 169(d15): 25(ptr) Variable UniformConstant + 170(d16): 25(ptr) Variable UniformConstant + 171(d17): 25(ptr) Variable UniformConstant + 172(d18): 25(ptr) Variable UniformConstant + 173(d19): 25(ptr) Variable UniformConstant + 174(d20): 25(ptr) Variable UniformConstant + 175(d21): 25(ptr) Variable UniformConstant + 176(d22): 25(ptr) Variable UniformConstant + 177(d23): 25(ptr) Variable UniformConstant + 178(d24): 25(ptr) Variable UniformConstant + 179(d25): 25(ptr) Variable UniformConstant + 180(d26): 25(ptr) Variable UniformConstant + 181(d27): 25(ptr) Variable UniformConstant + 182(d28): 25(ptr) Variable UniformConstant + 183(d29): 25(ptr) Variable UniformConstant + 184(d30): 25(ptr) Variable UniformConstant + 185(d31): 25(ptr) Variable UniformConstant + 186(d32): 25(ptr) Variable UniformConstant + 187(d33): 25(ptr) Variable UniformConstant + 188(d34): 25(ptr) Variable UniformConstant + 189: TypeInt 32 1 + 190: TypePointer UniformConstant 189(int) + 191(Count): 190(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 10(color): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + Branch 14 + 14: Label + LoopMerge 15 None + Branch 16 + 16: Label + 20: 8(fvec4) Load 19(bigColor4) + 21: 8(fvec4) Load 10(color) + 22: 8(fvec4) FAdd 21 20 + Store 10(color) 22 + 23: 8(fvec4) Load 10(color) + 24: 7(float) CompositeExtract 23 0 + 27: 7(float) Load 26(d4) + 29: 28(bool) FOrdLessThan 24 27 + SelectionMerge 31 None + BranchConditional 29 30 31 + 30: Label + 33: 8(fvec4) Load 10(color) + 34: 7(float) CompositeExtract 33 2 + 35: 7(float) FAdd 34 32 + 36: 8(fvec4) Load 10(color) + 37: 8(fvec4) CompositeInsert 35 36 2 + Store 10(color) 37 + 38: 8(fvec4) Load 10(color) + 39: 7(float) CompositeExtract 38 2 + 40: 7(float) Load 26(d4) + 41: 28(bool) FOrdLessThan 39 40 + SelectionMerge 43 None + BranchConditional 41 42 43 + 42: Label + 44: 8(fvec4) Load 10(color) + 45: 7(float) CompositeExtract 44 0 + 47: 7(float) FAdd 45 46 + 48: 8(fvec4) Load 10(color) + 49: 8(fvec4) CompositeInsert 47 48 0 + Store 10(color) 49 + Branch 17 + 43: Label + Branch 31 + 31: Label + 51: 8(fvec4) Load 10(color) + 52: 7(float) CompositeExtract 51 1 + 53: 7(float) Load 26(d4) + 54: 28(bool) FOrdLessThan 52 53 + SelectionMerge 56 None + BranchConditional 54 55 63 + 55: Label + 57: 7(float) Load 26(d4) + 58: 8(fvec4) Load 10(color) + 59: 7(float) CompositeExtract 58 1 + 60: 7(float) FAdd 59 57 + 61: 8(fvec4) Load 10(color) + 62: 8(fvec4) CompositeInsert 60 61 1 + Store 10(color) 62 + Branch 56 + 63: Label + 64: 7(float) Load 26(d4) + 65: 8(fvec4) Load 10(color) + 66: 7(float) CompositeExtract 65 0 + 67: 7(float) FAdd 66 64 + 68: 8(fvec4) Load 10(color) + 69: 8(fvec4) CompositeInsert 67 68 0 + Store 10(color) 69 + Branch 56 + 56: Label + Branch 17 + 17: Label + 70: 8(fvec4) Load 10(color) + 71: 7(float) CompositeExtract 70 2 + 72: 7(float) Load 26(d4) + 73: 28(bool) FOrdLessThan 71 72 + BranchConditional 73 74 15 + 74: Label + Branch 14 + 15: Label + Branch 75 + 75: Label + 77: 8(fvec4) Load 10(color) + 78: 7(float) CompositeExtract 77 3 + 80: 7(float) Load 79(d13) + 81: 28(bool) FOrdLessThan 78 80 + LoopMerge 76 None + BranchConditional 81 82 76 + 82: Label + 83: 8(fvec4) Load 10(color) + 84: 7(float) CompositeExtract 83 2 + 85: 7(float) Load 79(d13) + 86: 28(bool) FOrdLessThan 84 85 + SelectionMerge 88 None + BranchConditional 86 87 92 + 87: Label + 89: 8(fvec4) Load 10(color) + 90: 8(fvec4) CompositeConstruct 46 46 46 46 + 91: 8(fvec4) FAdd 89 90 + Store 10(color) 91 + Branch 88 + 92: Label + 93: 8(fvec4) Load 10(color) + 94: 8(fvec4) CompositeConstruct 46 46 46 46 + 95: 8(fvec4) FSub 93 94 + Store 10(color) 95 + Branch 88 + 88: Label + 96: 8(fvec4) Load 19(bigColor4) + 97: 8(fvec4) Load 10(color) + 98: 8(fvec4) FAdd 97 96 + Store 10(color) 98 + 99: 8(fvec4) Load 10(color) + 100: 7(float) CompositeExtract 99 0 + 101: 7(float) Load 26(d4) + 102: 28(bool) FOrdLessThan 100 101 + SelectionMerge 104 None + BranchConditional 102 103 104 + 103: Label + 105: 8(fvec4) Load 10(color) + 106: 7(float) CompositeExtract 105 2 + 107: 7(float) FAdd 106 32 + 108: 8(fvec4) Load 10(color) + 109: 8(fvec4) CompositeInsert 107 108 2 + Store 10(color) 109 + 110: 8(fvec4) Load 10(color) + 111: 7(float) CompositeExtract 110 2 + 112: 7(float) Load 26(d4) + 113: 28(bool) FOrdLessThan 111 112 + SelectionMerge 115 None + BranchConditional 113 114 115 + 114: Label + 116: 8(fvec4) Load 10(color) + 117: 7(float) CompositeExtract 116 0 + 118: 7(float) FAdd 117 46 + 119: 8(fvec4) Load 10(color) + 120: 8(fvec4) CompositeInsert 118 119 0 + Store 10(color) 120 + Branch 75 + 115: Label + Branch 104 + 104: Label + 122: 8(fvec4) Load 10(color) + 123: 7(float) CompositeExtract 122 1 + 124: 7(float) Load 26(d4) + 125: 28(bool) FOrdLessThan 123 124 + SelectionMerge 127 None + BranchConditional 125 126 134 + 126: Label + 128: 7(float) Load 26(d4) + 129: 8(fvec4) Load 10(color) + 130: 7(float) CompositeExtract 129 1 + 131: 7(float) FAdd 130 128 + 132: 8(fvec4) Load 10(color) + 133: 8(fvec4) CompositeInsert 131 132 1 + Store 10(color) 133 + Branch 127 + 134: Label + 135: 7(float) Load 26(d4) + 136: 8(fvec4) Load 10(color) + 137: 7(float) CompositeExtract 136 0 + 138: 7(float) FAdd 137 135 + 139: 8(fvec4) Load 10(color) + 140: 8(fvec4) CompositeInsert 138 139 0 + Store 10(color) 140 + Branch 127 + 127: Label + Branch 75 + 76: Label + 141: 8(fvec4) Load 10(color) + 142: 8(fvec4) CompositeConstruct 46 46 46 46 + 143: 8(fvec4) FAdd 141 142 + Store 10(color) 143 + 146: 8(fvec4) Load 10(color) + Store 145(gl_FragColor) 146 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out new file mode 100644 index 000000000..2a0a0fc99 --- /dev/null +++ b/Test/baseResults/spv.matFun.vert.out @@ -0,0 +1,142 @@ +spv.matFun.vert + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 94 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 15 "xf(mf33;vf3;" + Name 13 "m" + Name 14 "v" + Name 22 "Mat3(mf44;" + Name 21 "m" + Name 27 "mxv(mf44;vf3;" + Name 25 "m4" + Name 26 "v" + Name 64 "param" + Name 70 "gl_Position" + Name 72 "m4" + Name 74 "v3" + Name 75 "param" + Name 77 "param" + Name 81 "m3" + Name 82 "param" + Name 84 "param" + Name 93 "gl_VertexID" + Decorate 70(gl_Position) BuiltIn Position + Decorate 93(gl_VertexID) BuiltIn VertexId + Decorate 93(gl_VertexID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 3 + 9: TypeMatrix 8(fvec3) 3 + 10: TypePointer Function 9 + 11: TypePointer Function 8(fvec3) + 12: TypeFunction 8(fvec3) 10(ptr) 11(ptr) + 17: TypeVector 7(float) 4 + 18: TypeMatrix 17(fvec4) 4 + 19: TypePointer Function 18 + 20: TypeFunction 9 19(ptr) + 24: TypeFunction 8(fvec3) 19(ptr) 11(ptr) + 33: TypeInt 32 1 + 34: 33(int) Constant 0 + 35: TypePointer Function 17(fvec4) + 39: 33(int) Constant 1 + 43: 33(int) Constant 2 + 47: 7(float) Constant 1065353216 + 48: 7(float) Constant 0 + 69: TypePointer Output 17(fvec4) + 70(gl_Position): 69(ptr) Variable Output + 71: TypePointer UniformConstant 18 + 72(m4): 71(ptr) Variable UniformConstant + 73: TypePointer Input 8(fvec3) + 74(v3): 73(ptr) Variable Input + 80: TypePointer UniformConstant 9 + 81(m3): 80(ptr) Variable UniformConstant + 92: TypePointer Input 33(int) + 93(gl_VertexID): 92(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 75(param): 19(ptr) Variable Function + 77(param): 11(ptr) Variable Function + 82(param): 10(ptr) Variable Function + 84(param): 11(ptr) Variable Function + 76: 18 Load 72(m4) + Store 75(param) 76 + 78: 8(fvec3) Load 74(v3) + Store 77(param) 78 + 79: 8(fvec3) FunctionCall 27(mxv(mf44;vf3;) 75(param) 77(param) + 83: 9 Load 81(m3) + Store 82(param) 83 + 85: 8(fvec3) Load 74(v3) + Store 84(param) 85 + 86: 8(fvec3) FunctionCall 15(xf(mf33;vf3;) 82(param) 84(param) + 87: 8(fvec3) FAdd 79 86 + 88: 7(float) CompositeExtract 87 0 + 89: 7(float) CompositeExtract 87 1 + 90: 7(float) CompositeExtract 87 2 + 91: 17(fvec4) CompositeConstruct 88 89 90 47 + Store 70(gl_Position) 91 + Branch 6 + 6: Label + Return + FunctionEnd +15(xf(mf33;vf3;): 8(fvec3) Function None 12 + 13(m): 10(ptr) FunctionParameter + 14(v): 11(ptr) FunctionParameter + 16: Label + 29: 8(fvec3) Load 14(v) + 30: 9 Load 13(m) + 31: 8(fvec3) VectorTimesMatrix 29 30 + ReturnValue 31 + FunctionEnd + 22(Mat3(mf44;): 9 Function None 20 + 21(m): 19(ptr) FunctionParameter + 23: Label + 36: 35(ptr) AccessChain 21(m) 34 + 37: 17(fvec4) Load 36 + 38: 8(fvec3) VectorShuffle 37 37 0 1 2 + 40: 35(ptr) AccessChain 21(m) 39 + 41: 17(fvec4) Load 40 + 42: 8(fvec3) VectorShuffle 41 41 0 1 2 + 44: 35(ptr) AccessChain 21(m) 43 + 45: 17(fvec4) Load 44 + 46: 8(fvec3) VectorShuffle 45 45 0 1 2 + 49: 7(float) CompositeExtract 38 0 + 50: 7(float) CompositeExtract 38 1 + 51: 7(float) CompositeExtract 38 2 + 52: 7(float) CompositeExtract 42 0 + 53: 7(float) CompositeExtract 42 1 + 54: 7(float) CompositeExtract 42 2 + 55: 7(float) CompositeExtract 46 0 + 56: 7(float) CompositeExtract 46 1 + 57: 7(float) CompositeExtract 46 2 + 58: 8(fvec3) CompositeConstruct 49 50 51 + 59: 8(fvec3) CompositeConstruct 52 53 54 + 60: 8(fvec3) CompositeConstruct 55 56 57 + 61: 9 CompositeConstruct 58 59 60 + ReturnValue 61 + FunctionEnd +27(mxv(mf44;vf3;): 8(fvec3) Function None 24 + 25(m4): 19(ptr) FunctionParameter + 26(v): 11(ptr) FunctionParameter + 28: Label + 64(param): 19(ptr) Variable Function + 63: 8(fvec3) Load 26(v) + 65: 18 Load 25(m4) + Store 64(param) 65 + 66: 9 FunctionCall 22(Mat3(mf44;) 64(param) + 67: 8(fvec3) VectorTimesMatrix 63 66 + ReturnValue 67 + FunctionEnd diff --git a/Test/baseResults/spv.matrix.frag.out b/Test/baseResults/spv.matrix.frag.out new file mode 100644 index 000000000..cec418da0 --- /dev/null +++ b/Test/baseResults/spv.matrix.frag.out @@ -0,0 +1,12 @@ +spv.matrix.frag +WARNING: 0:6: varying deprecated in version 130; may be removed in future release +WARNING: 0:17: varying deprecated in version 130; may be removed in future release +WARNING: 0:22: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +Missing functionality: Composite comparison of non-vectors diff --git a/Test/baseResults/spv.matrix2.frag.out b/Test/baseResults/spv.matrix2.frag.out new file mode 100644 index 000000000..c40b01ccf --- /dev/null +++ b/Test/baseResults/spv.matrix2.frag.out @@ -0,0 +1,12 @@ +spv.matrix2.frag +WARNING: 0:4: varying deprecated in version 130; may be removed in future release +WARNING: 0:13: varying deprecated in version 130; may be removed in future release +WARNING: 0:15: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +Missing functionality: binary operation on matrix diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out new file mode 100644 index 000000000..1962e1a08 --- /dev/null +++ b/Test/baseResults/spv.newTexture.frag.out @@ -0,0 +1,10 @@ +spv.newTexture.frag +Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked fragment stage: + + + +Missing functionality: texel fetch diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out new file mode 100644 index 000000000..969e63a3e --- /dev/null +++ b/Test/baseResults/spv.nonSquare.vert.out @@ -0,0 +1,123 @@ +spv.nonSquare.vert + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 91 + + Source GLSL 120 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 10 "a" + Name 13 "v3" + Name 17 "m23" + Name 20 "b" + Name 23 "m32" + Name 29 "gl_Position" + Name 56 "v4" + Decorate 29(gl_Position) BuiltIn Position + Decorate 75 NoStaticUse + Decorate 79 NoStaticUse + Decorate 90 NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 2 + 9: TypePointer Function 8(fvec2) + 11: TypeVector 7(float) 3 + 12: TypePointer Input 11(fvec3) + 13(v3): 12(ptr) Variable Input + 15: TypeMatrix 11(fvec3) 2 + 16: TypePointer Function 15 + 21: TypeMatrix 8(fvec2) 3 + 22: TypePointer UniformConstant 21 + 23(m32): 22(ptr) Variable UniformConstant + 27: TypeVector 7(float) 4 + 28: TypePointer Output 27(fvec4) + 29(gl_Position): 28(ptr) Variable Output + 32: TypeMatrix 11(fvec3) 3 + 36: 7(float) Constant 0 + 41: TypeMatrix 27(fvec4) 4 + 42: 7(float) Constant 1077936128 + 43: 7(float) Constant 1086324736 + 44: 27(fvec4) ConstantComposite 42 43 36 36 + 45: 7(float) Constant 1091567616 + 46: 7(float) Constant 1094713344 + 47: 27(fvec4) ConstantComposite 45 46 36 36 + 48: 7(float) Constant 1097859072 + 49: 7(float) Constant 1099956224 + 50: 27(fvec4) ConstantComposite 48 49 36 36 + 51: 7(float) Constant 1101529088 + 52: 7(float) Constant 1103101952 + 53: 27(fvec4) ConstantComposite 51 52 36 36 + 54: 41 ConstantComposite 44 47 50 53 + 55: TypePointer Input 27(fvec4) + 56(v4): 55(ptr) Variable Input + 60: 7(float) Constant 1112014848 + 61: 7(float) Constant 1121714176 + 62: 7(float) Constant 1126825984 + 63: 7(float) Constant 1130758144 + 64: 27(fvec4) ConstantComposite 60 61 62 63 + 66: 7(float) Constant 1106247680 + 67: 7(float) Constant 1114636288 + 68: 27(fvec4) ConstantComposite 66 67 36 36 + 70: 7(float) Constant 1101004800 + 71: 7(float) Constant 1092616192 + 72: 7(float) Constant 1084227584 + 73: 27(fvec4) ConstantComposite 70 71 43 72 + 75: 8(fvec2) ConstantComposite 71 70 + 76: TypeMatrix 27(fvec4) 2 + 77: 27(fvec4) ConstantComposite 42 36 36 36 + 78: 27(fvec4) ConstantComposite 36 42 36 36 + 79: 76 ConstantComposite 77 78 + 80: TypeMatrix 8(fvec2) 4 + 81: 7(float) Constant 1065353216 + 82: 7(float) Constant 1073741824 + 83: 8(fvec2) ConstantComposite 81 82 + 84: 7(float) Constant 1082130432 + 85: 8(fvec2) ConstantComposite 42 84 + 86: 8(fvec2) ConstantComposite 72 43 + 87: 7(float) Constant 1088421888 + 88: 7(float) Constant 1090519040 + 89: 8(fvec2) ConstantComposite 87 88 + 90: 80 ConstantComposite 83 85 86 89 + 4(main): 2 Function None 3 + 5: Label + 10(a): 9(ptr) Variable Function + 17(m23): 16(ptr) Variable Function + 20(b): 9(ptr) Variable Function + 14: 11(fvec3) Load 13(v3) + 18: 15 Load 17(m23) + 19: 8(fvec2) VectorTimesMatrix 14 18 + Store 10(a) 19 + 24: 21 Load 23(m32) + 25: 11(fvec3) Load 13(v3) + 26: 8(fvec2) MatrixTimesVector 24 25 + Store 20(b) 26 + 30: 15 Load 17(m23) + 31: 21 Load 23(m32) + 33: 32 MatrixTimesMatrix 30 31 + 34: 11(fvec3) Load 13(v3) + 35: 11(fvec3) MatrixTimesVector 33 34 + 37: 7(float) CompositeExtract 35 0 + 38: 7(float) CompositeExtract 35 1 + 39: 7(float) CompositeExtract 35 2 + 40: 27(fvec4) CompositeConstruct 37 38 39 36 + 57: 27(fvec4) Load 56(v4) + 58: 27(fvec4) MatrixTimesVector 54 57 + 59: 27(fvec4) FAdd 40 58 + 65: 27(fvec4) FAdd 59 64 + 69: 27(fvec4) FAdd 65 68 + 74: 27(fvec4) FAdd 69 73 + Store 29(gl_Position) 74 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out new file mode 100644 index 000000000..71abeeb1b --- /dev/null +++ b/Test/baseResults/spv.precision.frag.out @@ -0,0 +1,182 @@ +spv.precision.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 111 + + Source GLSL 300 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 13 "foo(vf3;" + Name 12 "mv3" + Name 20 "boolfun(vb2;" + Name 19 "bv2" + Name 24 "highfin" + Name 37 "sum" + Name 39 "uniform_medium" + Name 41 "uniform_high" + Name 47 "uniform_low" + Name 52 "arg1" + Name 54 "arg2" + Name 56 "d" + Name 58 "lowfin" + Name 60 "mediumfin" + Name 64 "global_highp" + Name 68 "local_highp" + Name 72 "mediumfout" + Name 101 "ub2" + Name 102 "param" + Decorate 24(highfin) PrecisionHigh + Decorate 24(highfin) Smooth + Decorate 37(sum) PrecisionLow + Decorate 39(uniform_medium) PrecisionMedium + Decorate 41(uniform_high) PrecisionHigh + Decorate 47(uniform_low) PrecisionLow + Decorate 52(arg1) PrecisionLow + Decorate 54(arg2) PrecisionMedium + Decorate 56(d) PrecisionLow + Decorate 58(lowfin) PrecisionLow + Decorate 58(lowfin) Smooth + Decorate 60(mediumfin) PrecisionMedium + Decorate 60(mediumfin) Smooth + Decorate 64(global_highp) PrecisionHigh + Decorate 68(local_highp) PrecisionHigh + Decorate 72(mediumfout) PrecisionMedium + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 3 + 9: TypePointer Function 8(fvec3) + 10: TypeVector 7(float) 2 + 11: TypeFunction 10(fvec2) 9(ptr) + 15: TypeBool + 16: TypeVector 15(bool) 2 + 17: TypePointer Function 16(bvec2) + 18: TypeFunction 15(bool) 17(ptr) + 22: TypeVector 7(float) 4 + 23: TypePointer Input 22(fvec4) + 24(highfin): 23(ptr) Variable Input + 29: 15(bool) ConstantFalse + 30: 15(bool) ConstantTrue + 31: 16(bvec2) ConstantComposite 29 30 + 35: TypeInt 32 1 + 36: TypePointer Function 35(int) + 38: TypePointer UniformConstant 35(int) +39(uniform_medium): 38(ptr) Variable UniformConstant +41(uniform_high): 38(ptr) Variable UniformConstant + 47(uniform_low): 38(ptr) Variable UniformConstant + 51: TypePointer Function 7(float) + 53: 7(float) Constant 1078774989 + 55: 7(float) Constant 1232730691 + 57: TypePointer Input 7(float) + 58(lowfin): 57(ptr) Variable Input + 60(mediumfin): 57(ptr) Variable Input + 63: TypePointer PrivateGlobal 7(float) +64(global_highp): 63(ptr) Variable PrivateGlobal + 67: TypePointer Function 22(fvec4) + 71: TypePointer Output 22(fvec4) + 72(mediumfout): 71(ptr) Variable Output + 81: 35(int) Constant 4 + 83: TypeVector 35(int) 2 + 100: TypePointer UniformConstant 16(bvec2) + 101(ub2): 100(ptr) Variable UniformConstant + 108: 7(float) Constant 1065353216 + 4(main): 2 Function None 3 + 5: Label + 37(sum): 36(ptr) Variable Function + 52(arg1): 51(ptr) Variable Function + 54(arg2): 51(ptr) Variable Function + 56(d): 51(ptr) Variable Function + 68(local_highp): 67(ptr) Variable Function + 102(param): 17(ptr) Variable Function + 40: 35(int) Load 39(uniform_medium) + 42: 35(int) Load 41(uniform_high) + 43: 35(int) IAdd 40 42 + Store 37(sum) 43 + 44: 35(int) Load 41(uniform_high) + 45: 35(int) Load 37(sum) + 46: 35(int) IAdd 45 44 + Store 37(sum) 46 + 48: 35(int) Load 47(uniform_low) + 49: 35(int) Load 37(sum) + 50: 35(int) IAdd 49 48 + Store 37(sum) 50 + Store 52(arg1) 53 + Store 54(arg2) 55 + 59: 7(float) Load 58(lowfin) + 61: 7(float) Load 60(mediumfin) + 62: 7(float) ExtInst 1(GLSL.std.450) 59(distance) 59 61 + Store 56(d) 62 + 65: 22(fvec4) Load 24(highfin) + 66: 7(float) ExtInst 1(GLSL.std.450) 58(length) 65 + Store 64(global_highp) 66 + 69: 7(float) Load 64(global_highp) + 70: 22(fvec4) CompositeConstruct 69 69 69 69 + Store 68(local_highp) 70 + 73: 7(float) Load 56(d) + 74: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 73 + 75: 22(fvec4) CompositeConstruct 74 74 74 74 + 76: 7(float) Load 54(arg2) + 77: 22(fvec4) CompositeConstruct 76 76 76 76 + 78: 22(fvec4) FAdd 75 77 + 79: 22(fvec4) Load 68(local_highp) + 80: 22(fvec4) FAdd 78 79 + Store 72(mediumfout) 80 + 82: 35(int) Load 47(uniform_low) + 84: 83(ivec2) CompositeConstruct 82 82 + 85: 35(int) Load 41(uniform_high) + 86: 83(ivec2) CompositeConstruct 85 85 + 87: 83(ivec2) IMul 84 86 + 88: 35(int) Load 41(uniform_high) + 89: 83(ivec2) CompositeConstruct 88 88 + 90: 83(ivec2) IAdd 87 89 + 91: 35(int) CompositeExtract 90 0 + 92: 35(int) IAdd 81 91 + 93: 35(int) Load 37(sum) + 94: 35(int) IAdd 93 92 + Store 37(sum) 94 + 95: 35(int) Load 37(sum) + 96: 7(float) ConvertSToF 95 + 97: 22(fvec4) CompositeConstruct 96 96 96 96 + 98: 22(fvec4) Load 72(mediumfout) + 99: 22(fvec4) FAdd 98 97 + Store 72(mediumfout) 99 + 103: 16(bvec2) Load 101(ub2) + Store 102(param) 103 + 104: 15(bool) FunctionCall 20(boolfun(vb2;) 102(param) + SelectionMerge 106 None + BranchConditional 104 105 106 + 105: Label + 107: 22(fvec4) Load 72(mediumfout) + 109: 22(fvec4) CompositeConstruct 108 108 108 108 + 110: 22(fvec4) FAdd 107 109 + Store 72(mediumfout) 110 + Branch 106 + 106: Label + Branch 6 + 6: Label + Return + FunctionEnd + 13(foo(vf3;): 10(fvec2) Function None 11 + 12(mv3): 9(ptr) FunctionParameter + 14: Label + 25: 22(fvec4) Load 24(highfin) + 26: 10(fvec2) VectorShuffle 25 25 0 1 + ReturnValue 26 + FunctionEnd +20(boolfun(vb2;): 15(bool) Function None 18 + 19(bv2): 17(ptr) FunctionParameter + 21: Label + 28: 16(bvec2) Load 19(bv2) + 32: 16(bvec2) IEqual 28 31 + 33: 15(bool) All 32 + ReturnValue 33 + FunctionEnd diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out new file mode 100644 index 000000000..5064d5a4e --- /dev/null +++ b/Test/baseResults/spv.prepost.frag.out @@ -0,0 +1,153 @@ +spv.prepost.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 97 + + Source GLSL 140 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "index" + Name 15 "s" + MemberName 15(s) 0 "y" + Name 17 "str" + Name 23 "t" + Name 51 "x" + Name 62 "y" + Name 67 "z" + Name 74 "v" + Name 93 "gl_FragColor" + Decorate 93(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 10: 7(int) Constant 5 + 11: TypeFloat 32 + 12: TypeInt 32 0 + 13: 12(int) Constant 5 + 14: TypeArray 11(float) 13 + 15(s): TypeStruct 14 + 16: TypePointer Function 15(s) + 18: 7(int) Constant 0 + 19: 7(int) Constant 4 + 20: 11(float) Constant 1073741824 + 21: TypePointer Function 11(float) + 25: 7(int) Constant 1 + 29: 11(float) Constant 1065353216 + 72: TypeVector 11(float) 4 + 73: TypePointer Function 72(fvec4) + 75: 11(float) Constant 1077936128 + 76: 11(float) Constant 1082130432 + 77: 72(fvec4) ConstantComposite 29 20 75 76 + 92: TypePointer Output 72(fvec4) +93(gl_FragColor): 92(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 9(index): 8(ptr) Variable Function + 17(str): 16(ptr) Variable Function + 23(t): 21(ptr) Variable Function + 51(x): 21(ptr) Variable Function + 62(y): 21(ptr) Variable Function + 67(z): 21(ptr) Variable Function + 74(v): 73(ptr) Variable Function + Store 9(index) 10 + 22: 21(ptr) AccessChain 17(str) 18 19 + Store 22 20 + 24: 7(int) Load 9(index) + 26: 7(int) ISub 24 25 + Store 9(index) 26 + 27: 21(ptr) AccessChain 17(str) 18 26 + 28: 11(float) Load 27 + 30: 11(float) FAdd 28 29 + Store 27 30 + Store 23(t) 30 + 31: 11(float) Load 23(t) + 32: 21(ptr) AccessChain 17(str) 18 19 + 33: 11(float) Load 32 + 34: 11(float) FAdd 33 31 + 35: 21(ptr) AccessChain 17(str) 18 19 + Store 35 34 + 36: 21(ptr) AccessChain 17(str) 18 19 + 37: 11(float) Load 36 + 38: 11(float) FSub 37 29 + Store 36 38 + Store 23(t) 37 + 39: 7(int) Load 9(index) + 40: 7(int) IAdd 39 25 + Store 9(index) 40 + 41: 11(float) Load 23(t) + 42: 21(ptr) AccessChain 17(str) 18 39 + 43: 11(float) Load 42 + 44: 11(float) FAdd 43 41 + 45: 21(ptr) AccessChain 17(str) 18 39 + Store 45 44 + 46: 7(int) Load 9(index) + 47: 7(int) ISub 46 25 + Store 9(index) 47 + 48: 21(ptr) AccessChain 17(str) 18 47 + 49: 11(float) Load 48 + 50: 11(float) FSub 49 29 + Store 48 50 + 52: 21(ptr) AccessChain 17(str) 18 19 + 53: 11(float) Load 52 + Store 51(x) 53 + 54: 11(float) Load 51(x) + 55: 11(float) FAdd 54 29 + Store 51(x) 55 + 56: 11(float) Load 51(x) + 57: 11(float) FSub 56 29 + Store 51(x) 57 + 58: 11(float) Load 51(x) + 59: 11(float) FAdd 58 29 + Store 51(x) 59 + 60: 11(float) Load 51(x) + 61: 11(float) FSub 60 29 + Store 51(x) 61 + 63: 11(float) Load 51(x) + 64: 11(float) Load 51(x) + 65: 11(float) FAdd 64 29 + Store 51(x) 65 + 66: 11(float) FMul 63 65 + Store 62(y) 66 + 68: 11(float) Load 62(y) + 69: 11(float) Load 51(x) + 70: 11(float) FSub 69 29 + Store 51(x) 70 + 71: 11(float) FMul 68 69 + Store 67(z) 71 + Store 74(v) 77 + 78: 72(fvec4) Load 74(v) + 79: 11(float) CompositeExtract 78 2 + 80: 11(float) FSub 79 29 + 81: 72(fvec4) Load 74(v) + 82: 72(fvec4) CompositeInsert 80 81 2 + Store 74(v) 82 + 83: 72(fvec4) Load 74(v) + 84: 72(fvec4) CompositeInsert 79 83 1 + Store 74(v) 84 + 85: 72(fvec4) Load 74(v) + 86: 11(float) CompositeExtract 85 3 + 87: 11(float) FSub 86 29 + 88: 72(fvec4) Load 74(v) + 89: 72(fvec4) CompositeInsert 87 88 3 + Store 74(v) 89 + 90: 72(fvec4) Load 74(v) + 91: 72(fvec4) CompositeInsert 87 90 0 + Store 74(v) 91 + 94: 11(float) Load 67(z) + 95: 72(fvec4) Load 74(v) + 96: 72(fvec4) VectorTimesScalar 94 95 + Store 93(gl_FragColor) 96 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out new file mode 100644 index 000000000..1df120fb6 --- /dev/null +++ b/Test/baseResults/spv.qualifiers.vert.out @@ -0,0 +1,67 @@ +spv.qualifiers.vert +Warning, version 430 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 26 + + Source GLSL 430 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 10 "outVc" + Name 12 "inV" + Name 14 "outVs" + Name 16 "outVf" + Name 18 "outVn" + Name 20 "outVcn" + Name 24 "gl_VertexID" + Name 25 "gl_InstanceID" + Decorate 10(outVc) Smooth + Decorate 14(outVs) Smooth + Decorate 16(outVf) Flat + Decorate 18(outVn) Noperspective + Decorate 20(outVcn) Noperspective + Decorate 24(gl_VertexID) BuiltIn VertexId + Decorate 24(gl_VertexID) NoStaticUse + Decorate 25(gl_InstanceID) BuiltIn InstanceId + Decorate 25(gl_InstanceID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Output 8(fvec4) + 10(outVc): 9(ptr) Variable Output + 11: TypePointer Input 8(fvec4) + 12(inV): 11(ptr) Variable Input + 14(outVs): 9(ptr) Variable Output + 16(outVf): 9(ptr) Variable Output + 18(outVn): 9(ptr) Variable Output + 20(outVcn): 9(ptr) Variable Output + 22: TypeInt 32 1 + 23: TypePointer Input 22(int) + 24(gl_VertexID): 23(ptr) Variable Input +25(gl_InstanceID): 23(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 13: 8(fvec4) Load 12(inV) + Store 10(outVc) 13 + 15: 8(fvec4) Load 12(inV) + Store 14(outVs) 15 + 17: 8(fvec4) Load 12(inV) + Store 16(outVf) 17 + 19: 8(fvec4) Load 12(inV) + Store 18(outVn) 19 + 21: 8(fvec4) Load 12(inV) + Store 20(outVcn) 21 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out new file mode 100644 index 000000000..7a18683d2 --- /dev/null +++ b/Test/baseResults/spv.set.vert.out @@ -0,0 +1,64 @@ +spv.set.vert +Warning, version 450 is not yet complete; most version-specific features are present, but some are missing. + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 25 + + Source GLSL 450 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 10 "color" + Name 11 "setBuf" + MemberName 11(setBuf) 0 "color" + Name 13 "setBufInst" + Name 21 "sampler" + Name 23 "gl_VertexID" + Name 24 "gl_InstanceID" + Decorate 10(color) Smooth + Decorate 11(setBuf) GLSLShared + Decorate 11(setBuf) BufferBlock + Decorate 13(setBufInst) DescriptorSet 0 + Decorate 13(setBufInst) Binding 8 + Decorate 21(sampler) DescriptorSet 4 + Decorate 21(sampler) Binding 7 + Decorate 21(sampler) NoStaticUse + Decorate 23(gl_VertexID) BuiltIn VertexId + Decorate 23(gl_VertexID) NoStaticUse + Decorate 24(gl_InstanceID) BuiltIn InstanceId + Decorate 24(gl_InstanceID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Output 8(fvec4) + 10(color): 9(ptr) Variable Output + 11(setBuf): TypeStruct 8(fvec4) + 12: TypePointer Uniform 11(setBuf) + 13(setBufInst): 12(ptr) Variable Uniform + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: TypePointer Uniform 8(fvec4) + 19: TypeSampler7(float) 2D filter+texture + 20: TypePointer UniformConstant 19 + 21(sampler): 20(ptr) Variable UniformConstant + 22: TypePointer Input 14(int) + 23(gl_VertexID): 22(ptr) Variable Input +24(gl_InstanceID): 22(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 13(setBufInst) 15 + 18: 8(fvec4) Load 17 + Store 10(color) 18 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out new file mode 100644 index 000000000..82a250233 --- /dev/null +++ b/Test/baseResults/spv.simpleFunctionCall.frag.out @@ -0,0 +1,53 @@ +spv.simpleFunctionCall.frag +WARNING: 0:4: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 23 + + Source GLSL 150 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "foo(" + Name 13 "BaseColor" + Name 17 "gl_FragColor" + Name 20 "bigColor" + Name 22 "d" + Decorate 13(BaseColor) Smooth + Decorate 17(gl_FragColor) BuiltIn FragColor + Decorate 20(bigColor) NoStaticUse + Decorate 22(d) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypeFunction 8(fvec4) + 12: TypePointer Input 8(fvec4) + 13(BaseColor): 12(ptr) Variable Input + 16: TypePointer Output 8(fvec4) +17(gl_FragColor): 16(ptr) Variable Output + 19: TypePointer UniformConstant 8(fvec4) + 20(bigColor): 19(ptr) Variable UniformConstant + 21: TypePointer UniformConstant 7(float) + 22(d): 21(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 18: 8(fvec4) FunctionCall 10(foo() + Store 17(gl_FragColor) 18 + Branch 6 + 6: Label + Return + FunctionEnd + 10(foo(): 8(fvec4) Function None 9 + 11: Label + 14: 8(fvec4) Load 13(BaseColor) + ReturnValue 14 + FunctionEnd diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out new file mode 100644 index 000000000..3dcf879d7 --- /dev/null +++ b/Test/baseResults/spv.simpleMat.vert.out @@ -0,0 +1,78 @@ +spv.simpleMat.vert + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 44 + + Source GLSL 330 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 10 "glPos" + Name 13 "mvp" + Name 16 "v" + Name 20 "f" + Name 24 "am3" + Name 35 "arraym" + Name 42 "gl_VertexID" + Name 43 "gl_InstanceID" + Decorate 10(glPos) Smooth + Decorate 20(f) Smooth + Decorate 42(gl_VertexID) BuiltIn VertexId + Decorate 42(gl_VertexID) NoStaticUse + Decorate 43(gl_InstanceID) BuiltIn InstanceId + Decorate 43(gl_InstanceID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Output 8(fvec4) + 10(glPos): 9(ptr) Variable Output + 11: TypeMatrix 8(fvec4) 4 + 12: TypePointer UniformConstant 11 + 13(mvp): 12(ptr) Variable UniformConstant + 15: TypePointer Input 8(fvec4) + 16(v): 15(ptr) Variable Input + 19: TypePointer Output 7(float) + 20(f): 19(ptr) Variable Output + 21: TypeVector 7(float) 3 + 22: TypeMatrix 21(fvec3) 3 + 23: TypePointer Input 22 + 24(am3): 23(ptr) Variable Input + 25: TypeInt 32 1 + 26: 25(int) Constant 2 + 27: TypePointer Input 21(fvec3) + 31: TypeInt 32 0 + 32: 31(int) Constant 3 + 33: TypeArray 11 32 + 34: TypePointer Input 33 + 35(arraym): 34(ptr) Variable Input + 36: 25(int) Constant 1 + 41: TypePointer Input 25(int) + 42(gl_VertexID): 41(ptr) Variable Input +43(gl_InstanceID): 41(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 14: 11 Load 13(mvp) + 17: 8(fvec4) Load 16(v) + 18: 8(fvec4) MatrixTimesVector 14 17 + Store 10(glPos) 18 + 28: 27(ptr) AccessChain 24(am3) 26 + 29: 21(fvec3) Load 28 + 30: 7(float) CompositeExtract 29 1 + 37: 15(ptr) AccessChain 35(arraym) 36 26 + 38: 8(fvec4) Load 37 + 39: 7(float) CompositeExtract 38 3 + 40: 7(float) FAdd 30 39 + Store 20(f) 40 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out new file mode 100644 index 000000000..cc4f3bf49 --- /dev/null +++ b/Test/baseResults/spv.structAssignment.frag.out @@ -0,0 +1,98 @@ +spv.structAssignment.frag +WARNING: 0:4: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 50 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "lunarStruct1" + MemberName 9(lunarStruct1) 0 "i" + MemberName 9(lunarStruct1) 1 "f" + Name 10 "lunarStruct2" + MemberName 10(lunarStruct2) 0 "i" + MemberName 10(lunarStruct2) 1 "f" + MemberName 10(lunarStruct2) 2 "s1_1" + Name 11 "lunarStruct3" + MemberName 11(lunarStruct3) 0 "s2_1" + MemberName 11(lunarStruct3) 1 "i" + MemberName 11(lunarStruct3) 2 "f" + MemberName 11(lunarStruct3) 3 "s1_1" + Name 13 "foo3" + Name 23 "locals2" + Name 28 "foo2" + Name 32 "gl_FragColor" + Name 40 "sampler" + Name 44 "coord" + Name 49 "foo" + Decorate 32(gl_FragColor) BuiltIn FragColor + Decorate 44(coord) Smooth + Decorate 49(foo) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypeFloat 32 + 9(lunarStruct1): TypeStruct 7(int) 8(float) +10(lunarStruct2): TypeStruct 7(int) 8(float) 9(lunarStruct1) +11(lunarStruct3): TypeStruct 10(lunarStruct2) 7(int) 8(float) 9(lunarStruct1) + 12: TypePointer UniformConstant 11(lunarStruct3) + 13(foo3): 12(ptr) Variable UniformConstant + 14: 7(int) Constant 0 + 15: TypePointer UniformConstant 7(int) + 18: TypeBool + 22: TypePointer Function 10(lunarStruct2) + 24: TypePointer UniformConstant 10(lunarStruct2) + 28(foo2): 24(ptr) Variable UniformConstant + 30: TypeVector 8(float) 4 + 31: TypePointer Output 30(fvec4) +32(gl_FragColor): 31(ptr) Variable Output + 33: 7(int) Constant 2 + 34: 7(int) Constant 1 + 35: TypePointer Function 8(float) + 38: TypeSampler8(float) 2D filter+texture + 39: TypePointer UniformConstant 38 + 40(sampler): 39(ptr) Variable UniformConstant + 42: TypeVector 8(float) 2 + 43: TypePointer Input 42(fvec2) + 44(coord): 43(ptr) Variable Input + 48: TypePointer UniformConstant 9(lunarStruct1) + 49(foo): 48(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 23(locals2): 22(ptr) Variable Function + 16: 15(ptr) AccessChain 13(foo3) 14 14 + 17: 7(int) Load 16 + 19: 18(bool) SGreaterThan 17 14 + SelectionMerge 21 None + BranchConditional 19 20 27 + 20: Label + 25: 24(ptr) AccessChain 13(foo3) 14 + 26:10(lunarStruct2) Load 25 + Store 23(locals2) 26 + Branch 21 + 27: Label + 29:10(lunarStruct2) Load 28(foo2) + Store 23(locals2) 29 + Branch 21 + 21: Label + 36: 35(ptr) AccessChain 23(locals2) 33 34 + 37: 8(float) Load 36 + 41: 38 Load 40(sampler) + 45: 42(fvec2) Load 44(coord) + 46: 30(fvec4) TextureSample 41 45 + 47: 30(fvec4) VectorTimesScalar 37 46 + Store 32(gl_FragColor) 47 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out new file mode 100644 index 000000000..6a9146935 --- /dev/null +++ b/Test/baseResults/spv.structDeref.frag.out @@ -0,0 +1,193 @@ +spv.structDeref.frag +WARNING: 0:4: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 120 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "s0" + MemberName 9(s0) 0 "i" + Name 10 "s1" + MemberName 10(s1) 0 "i" + MemberName 10(s1) 1 "f" + MemberName 10(s1) 2 "s0_1" + Name 11 "s2" + MemberName 11(s2) 0 "i" + MemberName 11(s2) 1 "f" + MemberName 11(s2) 2 "s1_1" + Name 15 "s3" + MemberName 15(s3) 0 "s2_1" + MemberName 15(s3) 1 "i" + MemberName 15(s3) 2 "f" + MemberName 15(s3) 3 "s1_1" + Name 17 "foo3" + Name 28 "locals2" + Name 41 "fArray" + Name 47 "locals1Array" + Name 50 "foo1" + Name 54 "locals0" + Name 55 "s00" + MemberName 55(s00) 0 "s0_0" + Name 57 "locals00" + Name 62 "coord" + Name 69 "foo0" + Name 84 "foo00" + Name 97 "gl_FragColor" + Name 113 "sampler" + Name 119 "foo2" + Decorate 62(coord) Smooth + Decorate 97(gl_FragColor) BuiltIn FragColor + Decorate 119(foo2) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypeFloat 32 + 9(s0): TypeStruct 7(int) + 10(s1): TypeStruct 7(int) 8(float) 9(s0) + 11(s2): TypeStruct 7(int) 8(float) 10(s1) + 12: TypeInt 32 0 + 13: 12(int) Constant 12 + 14: TypeArray 11(s2) 13 + 15(s3): TypeStruct 14 7(int) 8(float) 10(s1) + 16: TypePointer UniformConstant 15(s3) + 17(foo3): 16(ptr) Variable UniformConstant + 18: 7(int) Constant 0 + 19: 7(int) Constant 9 + 20: TypePointer UniformConstant 7(int) + 23: TypeBool + 27: TypePointer Function 11(s2) + 29: 7(int) Constant 1 + 30: 8(float) Constant 1065353216 + 31: TypePointer Function 8(float) + 33: 7(int) Constant 2 + 34: 9(s0) ConstantComposite 18 + 35: 10(s1) ConstantComposite 18 30 34 + 36: TypePointer Function 10(s1) + 38: 12(int) Constant 6 + 39: TypeArray 8(float) 38 + 40: TypePointer Function 39 + 42: 8(float) Constant 0 + 43: 39 ConstantComposite 42 42 42 42 42 42 + 44: 12(int) Constant 10 + 45: TypeArray 10(s1) 44 + 46: TypePointer Function 45 + 48: 7(int) Constant 6 + 49: TypePointer UniformConstant 10(s1) + 50(foo1): 49(ptr) Variable UniformConstant + 53: TypePointer Function 9(s0) + 55(s00): TypeStruct 9(s0) + 56: TypePointer Function 55(s00) + 58: 55(s00) ConstantComposite 34 + 60: TypeVector 8(float) 2 + 61: TypePointer Input 60(fvec2) + 62(coord): 61(ptr) Variable Input + 68: TypePointer UniformConstant 9(s0) + 69(foo0): 68(ptr) Variable UniformConstant + 73: 8(float) Constant 1073741824 + 74: 8(float) Constant 1077936128 + 75: 8(float) Constant 1082130432 + 76: 8(float) Constant 1084227584 + 77: 39 ConstantComposite 42 30 73 74 75 76 + 83: TypePointer UniformConstant 55(s00) + 84(foo00): 83(ptr) Variable UniformConstant + 86: TypePointer Function 7(int) + 89: 7(int) Constant 5 + 95: TypeVector 8(float) 4 + 96: TypePointer Output 95(fvec4) +97(gl_FragColor): 96(ptr) Variable Output + 104: 7(int) Constant 3 + 111: TypeSampler8(float) 2D filter+texture + 112: TypePointer UniformConstant 111 + 113(sampler): 112(ptr) Variable UniformConstant + 118: TypePointer UniformConstant 11(s2) + 119(foo2): 118(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 28(locals2): 27(ptr) Variable Function + 41(fArray): 40(ptr) Variable Function +47(locals1Array): 46(ptr) Variable Function + 54(locals0): 53(ptr) Variable Function + 57(locals00): 56(ptr) Variable Function + 21: 20(ptr) AccessChain 17(foo3) 18 19 18 + 22: 7(int) Load 21 + 24: 23(bool) SGreaterThan 22 18 + SelectionMerge 26 None + BranchConditional 24 25 59 + 25: Label + 32: 31(ptr) AccessChain 28(locals2) 29 + Store 32 30 + 37: 36(ptr) AccessChain 28(locals2) 33 + Store 37 35 + Store 41(fArray) 43 + 51: 10(s1) Load 50(foo1) + 52: 36(ptr) AccessChain 47(locals1Array) 48 + Store 52 51 + Store 54(locals0) 34 + Store 57(locals00) 58 + Branch 26 + 59: Label + 63: 60(fvec2) Load 62(coord) + 64: 8(float) CompositeExtract 63 0 + 65: 31(ptr) AccessChain 28(locals2) 29 + Store 65 64 + 66: 60(fvec2) Load 62(coord) + 67: 8(float) CompositeExtract 66 1 + 70: 9(s0) Load 69(foo0) + 71: 10(s1) CompositeConstruct 29 67 70 + 72: 36(ptr) AccessChain 28(locals2) 33 + Store 72 71 + Store 41(fArray) 77 + 78: 36(ptr) AccessChain 28(locals2) 33 + 79: 10(s1) Load 78 + 80: 36(ptr) AccessChain 47(locals1Array) 48 + Store 80 79 + 81: 68(ptr) AccessChain 50(foo1) 33 + 82: 9(s0) Load 81 + Store 54(locals0) 82 + 85: 55(s00) Load 84(foo00) + Store 57(locals00) 85 + Branch 26 + 26: Label + 87: 86(ptr) AccessChain 54(locals0) 18 + 88: 7(int) Load 87 + 90: 23(bool) SGreaterThan 88 89 + SelectionMerge 92 None + BranchConditional 90 91 92 + 91: Label + 93: 53(ptr) AccessChain 57(locals00) 18 + 94: 9(s0) Load 93 + Store 54(locals0) 94 + Branch 92 + 92: Label + 98: 86(ptr) AccessChain 54(locals0) 18 + 99: 7(int) Load 98 + 100: 8(float) ConvertSToF 99 + 101: 31(ptr) AccessChain 47(locals1Array) 48 29 + 102: 8(float) Load 101 + 103: 8(float) FAdd 100 102 + 105: 31(ptr) AccessChain 41(fArray) 104 + 106: 8(float) Load 105 + 107: 8(float) FAdd 103 106 + 108: 31(ptr) AccessChain 28(locals2) 33 29 + 109: 8(float) Load 108 + 110: 8(float) FAdd 107 109 + 114: 111 Load 113(sampler) + 115: 60(fvec2) Load 62(coord) + 116: 95(fvec4) TextureSample 114 115 + 117: 95(fvec4) VectorTimesScalar 110 116 + Store 97(gl_FragColor) 117 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out new file mode 100644 index 000000000..4cfdd002a --- /dev/null +++ b/Test/baseResults/spv.structure.frag.out @@ -0,0 +1,105 @@ +spv.structure.frag +WARNING: 0:3: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 61 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "scale" + Name 19 "lunarStruct1" + MemberName 19(lunarStruct1) 0 "i" + MemberName 19(lunarStruct1) 1 "f" + MemberName 19(lunarStruct1) 2 "color" + Name 22 "lunarStruct2" + MemberName 22(lunarStruct2) 0 "i" + MemberName 22(lunarStruct2) 1 "f" + MemberName 22(lunarStruct2) 2 "s1_1" + Name 25 "foo2" + Name 47 "gl_FragColor" + Name 51 "sampler" + Name 55 "coord" + Name 60 "foo" + Decorate 47(gl_FragColor) BuiltIn FragColor + Decorate 55(coord) Smooth + Decorate 60(foo) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypePointer Function 7(float) + 10: 7(float) Constant 0 + 11: TypeInt 32 1 + 12: TypeInt 32 0 + 13: 12(int) Constant 5 + 14: TypeArray 11(int) 13 + 15: 12(int) Constant 4 + 16: TypeArray 7(float) 15 + 17: TypeVector 7(float) 4 + 18: TypeArray 17(fvec4) 13 +19(lunarStruct1): TypeStruct 11(int) 16 18 + 20: 12(int) Constant 7 + 21: TypeArray 19(lunarStruct1) 20 +22(lunarStruct2): TypeStruct 14 7(float) 21 + 23: TypeArray 22(lunarStruct2) 13 + 24: TypePointer UniformConstant 23 + 25(foo2): 24(ptr) Variable UniformConstant + 26: 11(int) Constant 3 + 27: 11(int) Constant 0 + 28: 11(int) Constant 4 + 29: TypePointer UniformConstant 11(int) + 32: TypeBool + 36: 11(int) Constant 2 + 37: TypePointer UniformConstant 17(fvec4) + 42: 11(int) Constant 1 + 43: TypePointer UniformConstant 7(float) + 46: TypePointer Output 17(fvec4) +47(gl_FragColor): 46(ptr) Variable Output + 49: TypeSampler7(float) 2D filter+texture + 50: TypePointer UniformConstant 49 + 51(sampler): 50(ptr) Variable UniformConstant + 53: TypeVector 7(float) 2 + 54: TypePointer Input 53(fvec2) + 55(coord): 54(ptr) Variable Input + 59: TypePointer UniformConstant 19(lunarStruct1) + 60(foo): 59(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(scale): 8(ptr) Variable Function + Store 9(scale) 10 + 30: 29(ptr) AccessChain 25(foo2) 26 27 28 + 31: 11(int) Load 30 + 33: 32(bool) SGreaterThan 31 27 + SelectionMerge 35 None + BranchConditional 33 34 41 + 34: Label + 38: 37(ptr) AccessChain 25(foo2) 26 36 36 36 26 + 39: 17(fvec4) Load 38 + 40: 7(float) CompositeExtract 39 0 + Store 9(scale) 40 + Branch 35 + 41: Label + 44: 43(ptr) AccessChain 25(foo2) 26 36 36 42 26 + 45: 7(float) Load 44 + Store 9(scale) 45 + Branch 35 + 35: Label + 48: 7(float) Load 9(scale) + 52: 49 Load 51(sampler) + 56: 53(fvec2) Load 55(coord) + 57: 17(fvec4) TextureSample 52 56 + 58: 17(fvec4) VectorTimesScalar 48 57 + Store 47(gl_FragColor) 58 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out new file mode 100644 index 000000000..68a102fe1 --- /dev/null +++ b/Test/baseResults/spv.switch.frag.out @@ -0,0 +1,382 @@ +spv.switch.frag +WARNING: 0:121: 'switch' : last case/default label not followed by statements + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 249 + + Source GLSL 300 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 16 "foo1(vf4;vf4;i1;" + Name 13 "v1" + Name 14 "v2" + Name 15 "i1" + Name 21 "foo2(vf4;vf4;i1;" + Name 18 "v1" + Name 19 "v2" + Name 20 "i1" + Name 59 "local" + Name 61 "c" + Name 72 "f" + Name 74 "x" + Name 128 "d" + Name 154 "i" + Name 172 "j" + Name 222 "color" + Name 228 "v" + Name 229 "param" + Name 231 "param" + Name 233 "param" + Name 239 "param" + Name 241 "param" + Name 243 "param" + Decorate 59(local) PrecisionMedium + Decorate 61(c) PrecisionMedium + Decorate 72(f) PrecisionMedium + Decorate 74(x) PrecisionMedium + Decorate 74(x) Smooth + Decorate 128(d) PrecisionMedium + Decorate 154(i) PrecisionMedium + Decorate 172(j) PrecisionMedium + Decorate 222(color) PrecisionMedium + Decorate 228(v) PrecisionMedium + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 10: TypeInt 32 1 + 11: TypePointer Function 10(int) + 12: TypeFunction 8(fvec4) 9(ptr) 9(ptr) 11(ptr) + 37: 7(float) Constant 0 + 38: 8(fvec4) ConstantComposite 37 37 37 37 + 48: 7(float) Constant 1065353216 + 49: 8(fvec4) ConstantComposite 48 48 48 48 + 60: TypePointer UniformConstant 10(int) + 61(c): 60(ptr) Variable UniformConstant + 64: 10(int) Constant 1 + 71: TypePointer Function 7(float) + 73: TypePointer Input 7(float) + 74(x): 73(ptr) Variable Input + 128(d): 60(ptr) Variable UniformConstant + 155: 10(int) Constant 0 + 159: 10(int) Constant 10 + 160: TypeBool + 173: 10(int) Constant 20 + 177: 10(int) Constant 30 + 183: 7(float) Constant 1120429670 + 203: 7(float) Constant 1079739679 + 221: TypePointer Output 7(float) + 222(color): 221(ptr) Variable Output + 227: TypePointer UniformConstant 8(fvec4) + 228(v): 227(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 59(local): 11(ptr) Variable Function + 72(f): 71(ptr) Variable Function + 154(i): 11(ptr) Variable Function + 172(j): 11(ptr) Variable Function + 229(param): 9(ptr) Variable Function + 231(param): 9(ptr) Variable Function + 233(param): 11(ptr) Variable Function + 239(param): 9(ptr) Variable Function + 241(param): 9(ptr) Variable Function + 243(param): 11(ptr) Variable Function + 62: 10(int) Load 61(c) + Store 59(local) 62 + 63: 10(int) Load 59(local) + 65: 10(int) IAdd 63 64 + Store 59(local) 65 + 66: 10(int) Load 61(c) + SelectionMerge 70 None + Switch 66 69 + case 1: 67 + case 2: 68 + 67: Label + 75: 7(float) Load 74(x) + 76: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 75 + Store 72(f) 76 + Branch 70 + 68: Label + 78: 7(float) Load 74(x) + 79: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 78 + Store 72(f) 79 + Branch 70 + 69: Label + 81: 7(float) Load 74(x) + 82: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 81 + Store 72(f) 82 + Branch 70 + 70: Label + 84: 10(int) Load 61(c) + SelectionMerge 88 None + Switch 84 87 + case 1: 85 + case 2: 86 + 85: Label + 89: 7(float) Load 74(x) + 90: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 89 + 91: 7(float) Load 72(f) + 92: 7(float) FAdd 91 90 + Store 72(f) 92 + Branch 86 + 86: Label + 93: 7(float) Load 74(x) + 94: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 93 + 95: 7(float) Load 72(f) + 96: 7(float) FAdd 95 94 + Store 72(f) 96 + Branch 88 + 87: Label + 98: 7(float) Load 74(x) + 99: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 98 + 100: 7(float) Load 72(f) + 101: 7(float) FAdd 100 99 + Store 72(f) 101 + Branch 88 + 88: Label + 103: 10(int) Load 61(c) + SelectionMerge 106 None + Switch 103 106 + case 1: 104 + case 2: 105 + 104: Label + 107: 7(float) Load 74(x) + 108: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 107 + 109: 7(float) Load 72(f) + 110: 7(float) FAdd 109 108 + Store 72(f) 110 + Branch 106 + 105: Label + 112: 7(float) Load 74(x) + 113: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 112 + 114: 7(float) Load 72(f) + 115: 7(float) FAdd 114 113 + Store 72(f) 115 + Branch 106 + 106: Label + 118: 10(int) Load 61(c) + SelectionMerge 122 None + Switch 118 121 + case 1: 119 + case 2: 120 + 119: Label + 123: 7(float) Load 74(x) + 124: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 123 + 125: 7(float) Load 72(f) + 126: 7(float) FAdd 125 124 + Store 72(f) 126 + Branch 122 + 120: Label + 129: 10(int) Load 128(d) + SelectionMerge 132 None + Switch 129 132 + case 1: 130 + case 2: 131 + 130: Label + 133: 7(float) Load 74(x) + 134: 7(float) Load 74(x) + 135: 7(float) FMul 133 134 + 136: 7(float) Load 74(x) + 137: 7(float) FMul 135 136 + 138: 7(float) Load 72(f) + 139: 7(float) FAdd 138 137 + Store 72(f) 139 + Branch 132 + 131: Label + 141: 7(float) Load 74(x) + 142: 7(float) Load 74(x) + 143: 7(float) FMul 141 142 + 144: 7(float) Load 72(f) + 145: 7(float) FAdd 144 143 + Store 72(f) 145 + Branch 132 + 132: Label + Branch 122 + 121: Label + 149: 7(float) Load 74(x) + 150: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 149 + 151: 7(float) Load 72(f) + 152: 7(float) FAdd 151 150 + Store 72(f) 152 + Branch 122 + 122: Label + Store 154(i) 155 + Branch 156 + 156: Label + 158: 10(int) Load 154(i) + 161: 160(bool) SLessThan 158 159 + LoopMerge 157 None + BranchConditional 161 162 157 + 162: Label + 163: 10(int) Load 61(c) + SelectionMerge 167 None + Switch 163 166 + case 1: 164 + case 2: 165 + 164: Label + 168: 7(float) Load 74(x) + 169: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 168 + 170: 7(float) Load 72(f) + 171: 7(float) FAdd 170 169 + Store 72(f) 171 + Store 172(j) 173 + Branch 174 + 174: Label + 176: 10(int) Load 172(j) + 178: 160(bool) SLessThan 176 177 + LoopMerge 175 None + BranchConditional 178 179 175 + 179: Label + 180: 7(float) Load 72(f) + 181: 7(float) FAdd 180 48 + Store 72(f) 181 + 182: 7(float) Load 72(f) + 184: 160(bool) FOrdLessThan 182 183 + SelectionMerge 186 None + BranchConditional 184 185 186 + 185: Label + Branch 175 + 186: Label + 188: 10(int) Load 172(j) + 189: 10(int) IAdd 188 64 + Store 172(j) 189 + Branch 174 + 175: Label + Branch 167 + 165: Label + 191: 7(float) Load 74(x) + 192: 7(float) ExtInst 1(GLSL.std.450) 11(cos) 191 + 193: 7(float) Load 72(f) + 194: 7(float) FAdd 193 192 + Store 72(f) 194 + Branch 167 + 166: Label + 197: 7(float) Load 74(x) + 198: 7(float) ExtInst 1(GLSL.std.450) 12(tan) 197 + 199: 7(float) Load 72(f) + 200: 7(float) FAdd 199 198 + Store 72(f) 200 + Branch 167 + 167: Label + 202: 7(float) Load 72(f) + 204: 160(bool) FOrdLessThan 202 203 + SelectionMerge 206 None + BranchConditional 204 205 206 + 205: Label + Branch 157 + 206: Label + 208: 10(int) Load 154(i) + 209: 10(int) IAdd 208 64 + Store 154(i) 209 + Branch 156 + 157: Label + 210: 10(int) Load 61(c) + SelectionMerge 213 None + Switch 210 213 + case 1: 211 + case 2: 212 + 211: Label + 214: 7(float) Load 74(x) + 215: 7(float) ExtInst 1(GLSL.std.450) 10(sin) 214 + 216: 7(float) Load 72(f) + 217: 7(float) FAdd 216 215 + Store 72(f) 217 + Branch 213 + 212: Label + Branch 213 + 213: Label + 223: 7(float) Load 72(f) + 224: 10(int) Load 59(local) + 225: 7(float) ConvertSToF 224 + 226: 7(float) FAdd 223 225 + Store 222(color) 226 + 230: 8(fvec4) Load 228(v) + Store 229(param) 230 + 232: 8(fvec4) Load 228(v) + Store 231(param) 232 + 234: 10(int) Load 61(c) + Store 233(param) 234 + 235: 8(fvec4) FunctionCall 16(foo1(vf4;vf4;i1;) 229(param) 231(param) 233(param) + 236: 7(float) CompositeExtract 235 1 + 237: 7(float) Load 222(color) + 238: 7(float) FAdd 237 236 + Store 222(color) 238 + 240: 8(fvec4) Load 228(v) + Store 239(param) 240 + 242: 8(fvec4) Load 228(v) + Store 241(param) 242 + 244: 10(int) Load 61(c) + Store 243(param) 244 + 245: 8(fvec4) FunctionCall 21(foo2(vf4;vf4;i1;) 239(param) 241(param) 243(param) + 246: 7(float) CompositeExtract 245 2 + 247: 7(float) Load 222(color) + 248: 7(float) FAdd 247 246 + Store 222(color) 248 + Branch 6 + 6: Label + Return + FunctionEnd +16(foo1(vf4;vf4;i1;): 8(fvec4) Function None 12 + 13(v1): 9(ptr) FunctionParameter + 14(v2): 9(ptr) FunctionParameter + 15(i1): 11(ptr) FunctionParameter + 17: Label + 23: 10(int) Load 15(i1) + SelectionMerge 27 None + Switch 23 27 + case 0: 24 + case 2: 25 + case 1: 25 + case 3: 26 + 24: Label + 28: 8(fvec4) Load 13(v1) + ReturnValue 28 + 25: Label + 30: 8(fvec4) Load 14(v2) + ReturnValue 30 + 26: Label + 32: 8(fvec4) Load 13(v1) + 33: 8(fvec4) Load 14(v2) + 34: 8(fvec4) FMul 32 33 + ReturnValue 34 + 27: Label + ReturnValue 38 + FunctionEnd +21(foo2(vf4;vf4;i1;): 8(fvec4) Function None 12 + 18(v1): 9(ptr) FunctionParameter + 19(v2): 9(ptr) FunctionParameter + 20(i1): 11(ptr) FunctionParameter + 22: Label + 40: 10(int) Load 20(i1) + SelectionMerge 45 None + Switch 40 45 + case 0: 41 + case 2: 42 + case 1: 43 + case 3: 44 + 41: Label + 46: 8(fvec4) Load 18(v1) + ReturnValue 46 + 42: Label + ReturnValue 49 + 43: Label + 51: 8(fvec4) Load 19(v2) + ReturnValue 51 + 44: Label + 53: 8(fvec4) Load 18(v1) + 54: 8(fvec4) Load 19(v2) + 55: 8(fvec4) FMul 53 54 + ReturnValue 55 + 45: Label + ReturnValue 38 + FunctionEnd diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out new file mode 100644 index 000000000..c9a6a2c86 --- /dev/null +++ b/Test/baseResults/spv.swizzle.frag.out @@ -0,0 +1,179 @@ +spv.swizzle.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 112 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "blendscale" + Name 13 "w" + Name 15 "u" + Name 17 "w_dep" + Name 19 "w_reorder" + Name 21 "w2" + Name 23 "w_flow" + Name 30 "t" + Name 49 "w_undef" + Name 56 "p" + Name 70 "gl_FragColor" + Name 82 "c" + Name 84 "rep" + Name 111 "blend" + Decorate 30(t) Smooth + Decorate 70(gl_FragColor) BuiltIn FragColor + Decorate 111(blend) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypePointer Function 7(float) + 10: 7(float) Constant 1071971828 + 11: TypeVector 7(float) 4 + 12: TypePointer Function 11(fvec4) + 14: TypePointer UniformConstant 11(fvec4) + 15(u): 14(ptr) Variable UniformConstant + 28: TypeVector 7(float) 2 + 29: TypePointer Input 28(fvec2) + 30(t): 29(ptr) Variable Input + 54: TypeBool + 55: TypePointer UniformConstant 54(bool) + 56(p): 55(ptr) Variable UniformConstant + 69: TypePointer Output 11(fvec4) +70(gl_FragColor): 69(ptr) Variable Output + 81: TypePointer Function 28(fvec2) + 85: 7(float) Constant 0 + 86: 7(float) Constant 1065353216 + 87: 11(fvec4) ConstantComposite 85 85 85 86 + 93: 7(float) Constant 3212836864 + 104: 7(float) Constant 1079613850 + 110: TypePointer UniformConstant 7(float) + 111(blend): 110(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(blendscale): 8(ptr) Variable Function + 13(w): 12(ptr) Variable Function + 17(w_dep): 12(ptr) Variable Function + 19(w_reorder): 12(ptr) Variable Function + 21(w2): 12(ptr) Variable Function + 23(w_flow): 12(ptr) Variable Function + 49(w_undef): 12(ptr) Variable Function + 82(c): 81(ptr) Variable Function + 84(rep): 12(ptr) Variable Function + Store 9(blendscale) 10 + 16: 11(fvec4) Load 15(u) + Store 13(w) 16 + 18: 11(fvec4) Load 15(u) + Store 17(w_dep) 18 + 20: 11(fvec4) Load 15(u) + Store 19(w_reorder) 20 + 22: 11(fvec4) Load 15(u) + Store 21(w2) 22 + 24: 11(fvec4) Load 15(u) + Store 23(w_flow) 24 + 25: 7(float) Load 9(blendscale) + 26: 11(fvec4) Load 19(w_reorder) + 27: 11(fvec4) CompositeInsert 25 26 2 + Store 19(w_reorder) 27 + 31: 28(fvec2) Load 30(t) + 32: 11(fvec4) Load 13(w) + 33: 11(fvec4) VectorShuffle 32 31 0 5 2 4 + Store 13(w) 33 + 34: 7(float) Load 9(blendscale) + 35: 11(fvec4) Load 19(w_reorder) + 36: 11(fvec4) CompositeInsert 34 35 0 + Store 19(w_reorder) 36 + 37: 11(fvec4) Load 15(u) + 38: 11(fvec4) VectorShuffle 37 37 2 3 0 1 + Store 21(w2) 38 + 39: 7(float) Load 9(blendscale) + 40: 11(fvec4) Load 19(w_reorder) + 41: 11(fvec4) CompositeInsert 39 40 1 + Store 19(w_reorder) 41 + 42: 11(fvec4) Load 21(w2) + 43: 28(fvec2) VectorShuffle 42 42 0 2 + 44: 11(fvec4) Load 17(w_dep) + 45: 11(fvec4) VectorShuffle 44 43 4 5 2 3 + Store 17(w_dep) 45 + 46: 28(fvec2) Load 30(t) + 47: 11(fvec4) Load 17(w_dep) + 48: 11(fvec4) VectorShuffle 47 46 0 1 4 5 + Store 17(w_dep) 48 + 50: 11(fvec4) Load 15(u) + 51: 28(fvec2) VectorShuffle 50 50 2 3 + 52: 11(fvec4) Load 49(w_undef) + 53: 11(fvec4) VectorShuffle 52 51 4 5 2 3 + Store 49(w_undef) 53 + 57: 54(bool) Load 56(p) + SelectionMerge 59 None + BranchConditional 57 58 64 + 58: Label + 60: 28(fvec2) Load 30(t) + 61: 7(float) CompositeExtract 60 0 + 62: 11(fvec4) Load 23(w_flow) + 63: 11(fvec4) CompositeInsert 61 62 0 + Store 23(w_flow) 63 + Branch 59 + 64: Label + 65: 28(fvec2) Load 30(t) + 66: 7(float) CompositeExtract 65 1 + 67: 11(fvec4) Load 23(w_flow) + 68: 11(fvec4) CompositeInsert 66 67 0 + Store 23(w_flow) 68 + Branch 59 + 59: Label + 71: 11(fvec4) Load 19(w_reorder) + 72: 11(fvec4) Load 49(w_undef) + 73: 11(fvec4) Load 13(w) + 74: 11(fvec4) Load 21(w2) + 75: 11(fvec4) FMul 73 74 + 76: 11(fvec4) Load 17(w_dep) + 77: 11(fvec4) FMul 75 76 + 78: 11(fvec4) Load 23(w_flow) + 79: 11(fvec4) FMul 77 78 + 80: 11(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 71 72 79 + Store 70(gl_FragColor) 80 + 83: 28(fvec2) Load 30(t) + Store 82(c) 83 + Store 84(rep) 87 + 88: 28(fvec2) Load 82(c) + 89: 7(float) CompositeExtract 88 0 + 90: 54(bool) FOrdLessThan 89 85 + SelectionMerge 92 None + BranchConditional 90 91 92 + 91: Label + 94: 28(fvec2) Load 82(c) + 95: 7(float) CompositeExtract 94 0 + 96: 7(float) FMul 95 93 + 97: 28(fvec2) Load 82(c) + 98: 28(fvec2) CompositeInsert 96 97 0 + Store 82(c) 98 + Branch 92 + 92: Label + 99: 28(fvec2) Load 82(c) + 100: 7(float) CompositeExtract 99 0 + 101: 54(bool) FOrdLessThanEqual 100 86 + SelectionMerge 103 None + BranchConditional 101 102 103 + 102: Label + 105: 11(fvec4) Load 84(rep) + 106: 11(fvec4) CompositeInsert 104 105 0 + Store 84(rep) 106 + Branch 103 + 103: Label + 107: 11(fvec4) Load 84(rep) + 108: 11(fvec4) Load 70(gl_FragColor) + 109: 11(fvec4) FAdd 108 107 + Store 70(gl_FragColor) 109 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out new file mode 100644 index 000000000..8ebb946d5 --- /dev/null +++ b/Test/baseResults/spv.test.frag.out @@ -0,0 +1,90 @@ +spv.test.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 54 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "blendscale" + Name 13 "v" + Name 16 "texSampler2D" + Name 20 "t" + Name 23 "scale" + Name 30 "w" + Name 33 "texSampler3D" + Name 37 "coords" + Name 43 "gl_FragColor" + Name 46 "u" + Name 49 "blend" + Decorate 20(t) Smooth + Decorate 37(coords) Smooth + Decorate 43(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypePointer Function 7(float) + 10: 7(float) Constant 1071971828 + 11: TypeVector 7(float) 4 + 12: TypePointer Function 11(fvec4) + 14: TypeSampler7(float) 2D filter+texture + 15: TypePointer UniformConstant 14 +16(texSampler2D): 15(ptr) Variable UniformConstant + 18: TypeVector 7(float) 2 + 19: TypePointer Input 18(fvec2) + 20(t): 19(ptr) Variable Input + 22: TypePointer UniformConstant 18(fvec2) + 23(scale): 22(ptr) Variable UniformConstant + 31: TypeSampler7(float) 3D filter+texture + 32: TypePointer UniformConstant 31 +33(texSampler3D): 32(ptr) Variable UniformConstant + 35: TypeVector 7(float) 3 + 36: TypePointer Input 35(fvec3) + 37(coords): 36(ptr) Variable Input + 42: TypePointer Output 11(fvec4) +43(gl_FragColor): 42(ptr) Variable Output + 45: TypePointer UniformConstant 11(fvec4) + 46(u): 45(ptr) Variable UniformConstant + 48: TypePointer UniformConstant 7(float) + 49(blend): 48(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(blendscale): 8(ptr) Variable Function + 13(v): 12(ptr) Variable Function + 30(w): 12(ptr) Variable Function + Store 9(blendscale) 10 + 17: 14 Load 16(texSampler2D) + 21: 18(fvec2) Load 20(t) + 24: 18(fvec2) Load 23(scale) + 25: 18(fvec2) FAdd 21 24 + 26: 18(fvec2) Load 23(scale) + 27: 18(fvec2) FDiv 25 26 + 28: 11(fvec4) TextureSample 17 27 + 29: 11(fvec4) VectorShuffle 28 28 3 2 1 0 + Store 13(v) 29 + 34: 31 Load 33(texSampler3D) + 38: 35(fvec3) Load 37(coords) + 39: 11(fvec4) TextureSample 34 38 + 40: 11(fvec4) Load 13(v) + 41: 11(fvec4) FAdd 39 40 + Store 30(w) 41 + 44: 11(fvec4) Load 30(w) + 47: 11(fvec4) Load 46(u) + 50: 7(float) Load 49(blend) + 51: 7(float) Load 9(blendscale) + 52: 7(float) FMul 50 51 + 53: 11(fvec4) ExtInst 1(GLSL.std.450) 36(mix) 44 47 52 + Store 43(gl_FragColor) 53 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out new file mode 100644 index 000000000..efd30d70e --- /dev/null +++ b/Test/baseResults/spv.test.vert.out @@ -0,0 +1,10 @@ +spv.test.vert +WARNING: 0:5: attribute deprecated in version 130; may be removed in future release + + + +Linked vertex stage: + + + +Missing functionality: ftransform() diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out new file mode 100644 index 000000000..f3f6da359 --- /dev/null +++ b/Test/baseResults/spv.texture.frag.out @@ -0,0 +1,11 @@ +spv.texture.frag +WARNING: 0:14: varying deprecated in version 130; may be removed in future release +WARNING: 0:15: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +Missing functionality: texel fetch diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out new file mode 100644 index 000000000..ed87334bc --- /dev/null +++ b/Test/baseResults/spv.texture.vert.out @@ -0,0 +1,186 @@ +spv.texture.vert + + + +Linked vertex stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 132 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 + Name 4 "main" + Name 9 "lod" + Name 11 "coords1D" + Name 15 "coords3D" + Name 21 "coords4D" + Name 24 "color" + Name 29 "texSampler1D" + Name 39 "coords2D" + Name 53 "texSampler2D" + Name 74 "texSampler3D" + Name 89 "texSamplerCube" + Name 98 "shadowSampler1D" + Name 107 "shadowSampler2D" + Name 127 "gl_Position" + Name 131 "gl_VertexID" + Decorate 127(gl_Position) BuiltIn Position + Decorate 131(gl_VertexID) BuiltIn VertexId + Decorate 131(gl_VertexID) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypePointer Function 7(float) + 10: 7(float) Constant 1077936128 + 12: 7(float) Constant 1071971828 + 13: TypeVector 7(float) 3 + 14: TypePointer Function 13(fvec3) + 16: 7(float) Constant 1076753334 + 17: 7(float) Constant 1079836148 + 18: 13(fvec3) ConstantComposite 12 16 17 + 19: TypeVector 7(float) 4 + 20: TypePointer Function 19(fvec4) + 22: 7(float) Constant 1073741824 + 23: 19(fvec4) ConstantComposite 12 16 17 22 + 25: 7(float) Constant 0 + 26: 19(fvec4) ConstantComposite 25 25 25 25 + 27: TypeSampler7(float) 1D filter+texture + 28: TypePointer UniformConstant 27 +29(texSampler1D): 28(ptr) Variable UniformConstant + 37: TypeVector 7(float) 2 + 38: TypePointer Input 37(fvec2) + 39(coords2D): 38(ptr) Variable Input + 51: TypeSampler7(float) 2D filter+texture + 52: TypePointer UniformConstant 51 +53(texSampler2D): 52(ptr) Variable UniformConstant + 72: TypeSampler7(float) 3D filter+texture + 73: TypePointer UniformConstant 72 +74(texSampler3D): 73(ptr) Variable UniformConstant + 87: TypeSampler7(float) Cube filter+texture + 88: TypePointer UniformConstant 87 +89(texSamplerCube): 88(ptr) Variable UniformConstant + 96: TypeSampler7(float) 1D filter+texture depth + 97: TypePointer UniformConstant 96 +98(shadowSampler1D): 97(ptr) Variable UniformConstant + 105: TypeSampler7(float) 2D filter+texture depth + 106: TypePointer UniformConstant 105 +107(shadowSampler2D): 106(ptr) Variable UniformConstant + 126: TypePointer Output 19(fvec4) +127(gl_Position): 126(ptr) Variable Output + 129: TypeInt 32 1 + 130: TypePointer Input 129(int) +131(gl_VertexID): 130(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 9(lod): 8(ptr) Variable Function + 11(coords1D): 8(ptr) Variable Function + 15(coords3D): 14(ptr) Variable Function + 21(coords4D): 20(ptr) Variable Function + 24(color): 20(ptr) Variable Function + Store 9(lod) 10 + Store 11(coords1D) 12 + Store 15(coords3D) 18 + Store 21(coords4D) 23 + Store 24(color) 26 + 30: 27 Load 29(texSampler1D) + 31: 7(float) Load 11(coords1D) + 32: 7(float) Load 9(lod) + 33: 19(fvec4) TextureSampleLod 30 31 32 + 34: 19(fvec4) Load 24(color) + 35: 19(fvec4) FAdd 34 33 + Store 24(color) 35 + 36: 27 Load 29(texSampler1D) + 40: 37(fvec2) Load 39(coords2D) + 41: 7(float) Load 9(lod) + 42: 19(fvec4) TextureSampleProjLod 36 40 41 + 43: 19(fvec4) Load 24(color) + 44: 19(fvec4) FAdd 43 42 + Store 24(color) 44 + 45: 27 Load 29(texSampler1D) + 46: 19(fvec4) Load 21(coords4D) + 47: 7(float) Load 9(lod) + 48: 19(fvec4) TextureSampleProjLod 45 46 47 + 49: 19(fvec4) Load 24(color) + 50: 19(fvec4) FAdd 49 48 + Store 24(color) 50 + 54: 51 Load 53(texSampler2D) + 55: 37(fvec2) Load 39(coords2D) + 56: 7(float) Load 9(lod) + 57: 19(fvec4) TextureSampleLod 54 55 56 + 58: 19(fvec4) Load 24(color) + 59: 19(fvec4) FAdd 58 57 + Store 24(color) 59 + 60: 51 Load 53(texSampler2D) + 61: 13(fvec3) Load 15(coords3D) + 62: 7(float) Load 9(lod) + 63: 19(fvec4) TextureSampleProjLod 60 61 62 + 64: 19(fvec4) Load 24(color) + 65: 19(fvec4) FAdd 64 63 + Store 24(color) 65 + 66: 51 Load 53(texSampler2D) + 67: 19(fvec4) Load 21(coords4D) + 68: 7(float) Load 9(lod) + 69: 19(fvec4) TextureSampleProjLod 66 67 68 + 70: 19(fvec4) Load 24(color) + 71: 19(fvec4) FAdd 70 69 + Store 24(color) 71 + 75: 72 Load 74(texSampler3D) + 76: 13(fvec3) Load 15(coords3D) + 77: 7(float) Load 9(lod) + 78: 19(fvec4) TextureSampleLod 75 76 77 + 79: 19(fvec4) Load 24(color) + 80: 19(fvec4) FAdd 79 78 + Store 24(color) 80 + 81: 72 Load 74(texSampler3D) + 82: 19(fvec4) Load 21(coords4D) + 83: 7(float) Load 9(lod) + 84: 19(fvec4) TextureSampleProjLod 81 82 83 + 85: 19(fvec4) Load 24(color) + 86: 19(fvec4) FAdd 85 84 + Store 24(color) 86 + 90: 87 Load 89(texSamplerCube) + 91: 13(fvec3) Load 15(coords3D) + 92: 7(float) Load 9(lod) + 93: 19(fvec4) TextureSampleLod 90 91 92 + 94: 19(fvec4) Load 24(color) + 95: 19(fvec4) FAdd 94 93 + Store 24(color) 95 + 99: 96 Load 98(shadowSampler1D) + 100: 13(fvec3) Load 15(coords3D) + 101: 7(float) Load 9(lod) + 102: 19(fvec4) TextureSampleLod 99 100 101 + 103: 19(fvec4) Load 24(color) + 104: 19(fvec4) FAdd 103 102 + Store 24(color) 104 + 108: 105 Load 107(shadowSampler2D) + 109: 13(fvec3) Load 15(coords3D) + 110: 7(float) Load 9(lod) + 111: 19(fvec4) TextureSampleLod 108 109 110 + 112: 19(fvec4) Load 24(color) + 113: 19(fvec4) FAdd 112 111 + Store 24(color) 113 + 114: 96 Load 98(shadowSampler1D) + 115: 19(fvec4) Load 21(coords4D) + 116: 7(float) Load 9(lod) + 117: 19(fvec4) TextureSampleProjLod 114 115 116 + 118: 19(fvec4) Load 24(color) + 119: 19(fvec4) FAdd 118 117 + Store 24(color) 119 + 120: 105 Load 107(shadowSampler2D) + 121: 19(fvec4) Load 21(coords4D) + 122: 7(float) Load 9(lod) + 123: 19(fvec4) TextureSampleProjLod 120 121 122 + 124: 19(fvec4) Load 24(color) + 125: 19(fvec4) FAdd 124 123 + Store 24(color) 125 + 128: 19(fvec4) Load 24(color) + Store 127(gl_Position) 128 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out new file mode 100644 index 000000000..b33a37bde --- /dev/null +++ b/Test/baseResults/spv.types.frag.out @@ -0,0 +1,347 @@ +spv.types.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 264 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "b" + Name 11 "u_b" + Name 13 "i_b" + Name 18 "b2" + Name 20 "u_b2" + Name 23 "i_b2" + Name 36 "b3" + Name 38 "u_b3" + Name 41 "i_b3" + Name 60 "b4" + Name 62 "u_b4" + Name 65 "i_b4" + Name 90 "i" + Name 92 "u_i" + Name 95 "i_i" + Name 100 "i2" + Name 102 "u_i2" + Name 105 "i_i2" + Name 110 "i3" + Name 112 "u_i3" + Name 115 "i_i3" + Name 120 "i4" + Name 122 "u_i4" + Name 125 "i_i4" + Name 130 "f" + Name 132 "u_f" + Name 135 "i_f" + Name 140 "f2" + Name 142 "u_f2" + Name 145 "i_f2" + Name 150 "f3" + Name 152 "u_f3" + Name 155 "i_f3" + Name 160 "f4" + Name 162 "u_f4" + Name 165 "i_f4" + Name 169 "gl_FragColor" + Decorate 95(i_i) Flat + Decorate 105(i_i2) Flat + Decorate 115(i_i3) Flat + Decorate 125(i_i4) Flat + Decorate 135(i_f) Smooth + Decorate 145(i_f2) Smooth + Decorate 155(i_f3) Smooth + Decorate 165(i_f4) Smooth + Decorate 169(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeBool + 8: TypePointer Function 7(bool) + 10: TypePointer UniformConstant 7(bool) + 11(u_b): 10(ptr) Variable UniformConstant + 13(i_b): 10(ptr) Variable UniformConstant + 16: TypeVector 7(bool) 2 + 17: TypePointer Function 16(bvec2) + 19: TypePointer UniformConstant 16(bvec2) + 20(u_b2): 19(ptr) Variable UniformConstant + 23(i_b2): 19(ptr) Variable UniformConstant + 34: TypeVector 7(bool) 3 + 35: TypePointer Function 34(bvec3) + 37: TypePointer UniformConstant 34(bvec3) + 38(u_b3): 37(ptr) Variable UniformConstant + 41(i_b3): 37(ptr) Variable UniformConstant + 58: TypeVector 7(bool) 4 + 59: TypePointer Function 58(bvec4) + 61: TypePointer UniformConstant 58(bvec4) + 62(u_b4): 61(ptr) Variable UniformConstant + 65(i_b4): 61(ptr) Variable UniformConstant + 88: TypeInt 32 1 + 89: TypePointer Function 88(int) + 91: TypePointer UniformConstant 88(int) + 92(u_i): 91(ptr) Variable UniformConstant + 94: TypePointer Input 88(int) + 95(i_i): 94(ptr) Variable Input + 98: TypeVector 88(int) 2 + 99: TypePointer Function 98(ivec2) + 101: TypePointer UniformConstant 98(ivec2) + 102(u_i2): 101(ptr) Variable UniformConstant + 104: TypePointer Input 98(ivec2) + 105(i_i2): 104(ptr) Variable Input + 108: TypeVector 88(int) 3 + 109: TypePointer Function 108(ivec3) + 111: TypePointer UniformConstant 108(ivec3) + 112(u_i3): 111(ptr) Variable UniformConstant + 114: TypePointer Input 108(ivec3) + 115(i_i3): 114(ptr) Variable Input + 118: TypeVector 88(int) 4 + 119: TypePointer Function 118(ivec4) + 121: TypePointer UniformConstant 118(ivec4) + 122(u_i4): 121(ptr) Variable UniformConstant + 124: TypePointer Input 118(ivec4) + 125(i_i4): 124(ptr) Variable Input + 128: TypeFloat 32 + 129: TypePointer Function 128(float) + 131: TypePointer UniformConstant 128(float) + 132(u_f): 131(ptr) Variable UniformConstant + 134: TypePointer Input 128(float) + 135(i_f): 134(ptr) Variable Input + 138: TypeVector 128(float) 2 + 139: TypePointer Function 138(fvec2) + 141: TypePointer UniformConstant 138(fvec2) + 142(u_f2): 141(ptr) Variable UniformConstant + 144: TypePointer Input 138(fvec2) + 145(i_f2): 144(ptr) Variable Input + 148: TypeVector 128(float) 3 + 149: TypePointer Function 148(fvec3) + 151: TypePointer UniformConstant 148(fvec3) + 152(u_f3): 151(ptr) Variable UniformConstant + 154: TypePointer Input 148(fvec3) + 155(i_f3): 154(ptr) Variable Input + 158: TypeVector 128(float) 4 + 159: TypePointer Function 158(fvec4) + 161: TypePointer UniformConstant 158(fvec4) + 162(u_f4): 161(ptr) Variable UniformConstant + 164: TypePointer Input 158(fvec4) + 165(i_f4): 164(ptr) Variable Input + 168: TypePointer Output 158(fvec4) +169(gl_FragColor): 168(ptr) Variable Output + 261: 128(float) Constant 1065353216 + 262: 158(fvec4) ConstantComposite 261 261 261 261 + 4(main): 2 Function None 3 + 5: Label + 9(b): 8(ptr) Variable Function + 18(b2): 17(ptr) Variable Function + 36(b3): 35(ptr) Variable Function + 60(b4): 59(ptr) Variable Function + 90(i): 89(ptr) Variable Function + 100(i2): 99(ptr) Variable Function + 110(i3): 109(ptr) Variable Function + 120(i4): 119(ptr) Variable Function + 130(f): 129(ptr) Variable Function + 140(f2): 139(ptr) Variable Function + 150(f3): 149(ptr) Variable Function + 160(f4): 159(ptr) Variable Function + 170: 159(ptr) Variable Function + 12: 7(bool) Load 11(u_b) + 14: 7(bool) Load 13(i_b) + 15: 7(bool) LogicalAnd 12 14 + Store 9(b) 15 + 21: 16(bvec2) Load 20(u_b2) + 22: 7(bool) CompositeExtract 21 0 + 24: 16(bvec2) Load 23(i_b2) + 25: 7(bool) CompositeExtract 24 0 + 26: 7(bool) LogicalAnd 22 25 + 27: 16(bvec2) Load 20(u_b2) + 28: 7(bool) CompositeExtract 27 1 + 29: 7(bool) LogicalAnd 26 28 + 30: 16(bvec2) Load 23(i_b2) + 31: 7(bool) CompositeExtract 30 1 + 32: 7(bool) LogicalAnd 29 31 + 33: 16(bvec2) CompositeConstruct 32 32 + Store 18(b2) 33 + 39: 34(bvec3) Load 38(u_b3) + 40: 7(bool) CompositeExtract 39 0 + 42: 34(bvec3) Load 41(i_b3) + 43: 7(bool) CompositeExtract 42 0 + 44: 7(bool) LogicalAnd 40 43 + 45: 34(bvec3) Load 38(u_b3) + 46: 7(bool) CompositeExtract 45 1 + 47: 7(bool) LogicalAnd 44 46 + 48: 34(bvec3) Load 41(i_b3) + 49: 7(bool) CompositeExtract 48 1 + 50: 7(bool) LogicalAnd 47 49 + 51: 34(bvec3) Load 38(u_b3) + 52: 7(bool) CompositeExtract 51 2 + 53: 7(bool) LogicalAnd 50 52 + 54: 34(bvec3) Load 41(i_b3) + 55: 7(bool) CompositeExtract 54 2 + 56: 7(bool) LogicalAnd 53 55 + 57: 34(bvec3) CompositeConstruct 56 56 56 + Store 36(b3) 57 + 63: 58(bvec4) Load 62(u_b4) + 64: 7(bool) CompositeExtract 63 0 + 66: 58(bvec4) Load 65(i_b4) + 67: 7(bool) CompositeExtract 66 0 + 68: 7(bool) LogicalAnd 64 67 + 69: 58(bvec4) Load 62(u_b4) + 70: 7(bool) CompositeExtract 69 1 + 71: 7(bool) LogicalAnd 68 70 + 72: 58(bvec4) Load 65(i_b4) + 73: 7(bool) CompositeExtract 72 1 + 74: 7(bool) LogicalAnd 71 73 + 75: 58(bvec4) Load 62(u_b4) + 76: 7(bool) CompositeExtract 75 2 + 77: 7(bool) LogicalAnd 74 76 + 78: 58(bvec4) Load 65(i_b4) + 79: 7(bool) CompositeExtract 78 2 + 80: 7(bool) LogicalAnd 77 79 + 81: 58(bvec4) Load 62(u_b4) + 82: 7(bool) CompositeExtract 81 3 + 83: 7(bool) LogicalAnd 80 82 + 84: 58(bvec4) Load 65(i_b4) + 85: 7(bool) CompositeExtract 84 3 + 86: 7(bool) LogicalAnd 83 85 + 87: 58(bvec4) CompositeConstruct 86 86 86 86 + Store 60(b4) 87 + 93: 88(int) Load 92(u_i) + 96: 88(int) Load 95(i_i) + 97: 88(int) IAdd 93 96 + Store 90(i) 97 + 103: 98(ivec2) Load 102(u_i2) + 106: 98(ivec2) Load 105(i_i2) + 107: 98(ivec2) IAdd 103 106 + Store 100(i2) 107 + 113: 108(ivec3) Load 112(u_i3) + 116: 108(ivec3) Load 115(i_i3) + 117: 108(ivec3) IAdd 113 116 + Store 110(i3) 117 + 123: 118(ivec4) Load 122(u_i4) + 126: 118(ivec4) Load 125(i_i4) + 127: 118(ivec4) IAdd 123 126 + Store 120(i4) 127 + 133: 128(float) Load 132(u_f) + 136: 128(float) Load 135(i_f) + 137: 128(float) FAdd 133 136 + Store 130(f) 137 + 143: 138(fvec2) Load 142(u_f2) + 146: 138(fvec2) Load 145(i_f2) + 147: 138(fvec2) FAdd 143 146 + Store 140(f2) 147 + 153: 148(fvec3) Load 152(u_f3) + 156: 148(fvec3) Load 155(i_f3) + 157: 148(fvec3) FAdd 153 156 + Store 150(f3) 157 + 163: 158(fvec4) Load 162(u_f4) + 166: 158(fvec4) Load 165(i_f4) + 167: 158(fvec4) FAdd 163 166 + Store 160(f4) 167 + 171: 7(bool) Load 9(b) + 172: 16(bvec2) Load 18(b2) + 173: 7(bool) CompositeExtract 172 0 + 174: 7(bool) LogicalOr 171 173 + 175: 16(bvec2) Load 18(b2) + 176: 7(bool) CompositeExtract 175 1 + 177: 7(bool) LogicalOr 174 176 + 178: 34(bvec3) Load 36(b3) + 179: 7(bool) CompositeExtract 178 0 + 180: 7(bool) LogicalOr 177 179 + 181: 34(bvec3) Load 36(b3) + 182: 7(bool) CompositeExtract 181 1 + 183: 7(bool) LogicalOr 180 182 + 184: 34(bvec3) Load 36(b3) + 185: 7(bool) CompositeExtract 184 2 + 186: 7(bool) LogicalOr 183 185 + 187: 58(bvec4) Load 60(b4) + 188: 7(bool) CompositeExtract 187 0 + 189: 7(bool) LogicalOr 186 188 + 190: 58(bvec4) Load 60(b4) + 191: 7(bool) CompositeExtract 190 1 + 192: 7(bool) LogicalOr 189 191 + 193: 58(bvec4) Load 60(b4) + 194: 7(bool) CompositeExtract 193 2 + 195: 7(bool) LogicalOr 192 194 + 196: 58(bvec4) Load 60(b4) + 197: 7(bool) CompositeExtract 196 3 + 198: 7(bool) LogicalOr 195 197 + SelectionMerge 200 None + BranchConditional 198 199 260 + 199: Label + 201: 88(int) Load 90(i) + 202: 98(ivec2) Load 100(i2) + 203: 88(int) CompositeExtract 202 0 + 204: 88(int) IAdd 201 203 + 205: 98(ivec2) Load 100(i2) + 206: 88(int) CompositeExtract 205 1 + 207: 88(int) IAdd 204 206 + 208: 108(ivec3) Load 110(i3) + 209: 88(int) CompositeExtract 208 0 + 210: 88(int) IAdd 207 209 + 211: 108(ivec3) Load 110(i3) + 212: 88(int) CompositeExtract 211 1 + 213: 88(int) IAdd 210 212 + 214: 108(ivec3) Load 110(i3) + 215: 88(int) CompositeExtract 214 2 + 216: 88(int) IAdd 213 215 + 217: 118(ivec4) Load 120(i4) + 218: 88(int) CompositeExtract 217 0 + 219: 88(int) IAdd 216 218 + 220: 118(ivec4) Load 120(i4) + 221: 88(int) CompositeExtract 220 1 + 222: 88(int) IAdd 219 221 + 223: 118(ivec4) Load 120(i4) + 224: 88(int) CompositeExtract 223 2 + 225: 88(int) IAdd 222 224 + 226: 118(ivec4) Load 120(i4) + 227: 88(int) CompositeExtract 226 3 + 228: 88(int) IAdd 225 227 + 229: 128(float) ConvertSToF 228 + 230: 128(float) Load 130(f) + 231: 128(float) FAdd 229 230 + 232: 138(fvec2) Load 140(f2) + 233: 128(float) CompositeExtract 232 0 + 234: 128(float) FAdd 231 233 + 235: 138(fvec2) Load 140(f2) + 236: 128(float) CompositeExtract 235 1 + 237: 128(float) FAdd 234 236 + 238: 148(fvec3) Load 150(f3) + 239: 128(float) CompositeExtract 238 0 + 240: 128(float) FAdd 237 239 + 241: 148(fvec3) Load 150(f3) + 242: 128(float) CompositeExtract 241 1 + 243: 128(float) FAdd 240 242 + 244: 148(fvec3) Load 150(f3) + 245: 128(float) CompositeExtract 244 2 + 246: 128(float) FAdd 243 245 + 247: 158(fvec4) Load 160(f4) + 248: 128(float) CompositeExtract 247 0 + 249: 128(float) FAdd 246 248 + 250: 158(fvec4) Load 160(f4) + 251: 128(float) CompositeExtract 250 1 + 252: 128(float) FAdd 249 251 + 253: 158(fvec4) Load 160(f4) + 254: 128(float) CompositeExtract 253 2 + 255: 128(float) FAdd 252 254 + 256: 158(fvec4) Load 160(f4) + 257: 128(float) CompositeExtract 256 3 + 258: 128(float) FAdd 255 257 + 259: 158(fvec4) CompositeConstruct 258 258 258 258 + Store 170 259 + Branch 200 + 260: Label + Store 170 262 + Branch 200 + 200: Label + 263: 158(fvec4) Load 170 + Store 169(gl_FragColor) 263 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out new file mode 100644 index 000000000..751294daa --- /dev/null +++ b/Test/baseResults/spv.uint.frag.out @@ -0,0 +1,357 @@ +spv.uint.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 206 + + Source GLSL 300 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "count" + Name 13 "u" + Name 16 "t" + Name 54 "shiftedii" + Name 56 "shiftedui" + Name 58 "shiftediu" + Name 59 "shifteduu" + Name 67 "c" + Name 70 "usampler" + Name 75 "tc" + Name 108 "af" + Name 112 "ab" + Name 116 "ai" + Name 151 "mask1" + Name 153 "mask2" + Name 155 "mask3" + Name 159 "mask4" + Name 199 "f" + Name 201 "v" + Name 203 "i" + Name 205 "b" + Decorate 9(count) PrecisionMedium + Decorate 13(u) PrecisionMedium + Decorate 16(t) PrecisionMedium + Decorate 16(t) Flat + Decorate 54(shiftedii) PrecisionMedium + Decorate 56(shiftedui) PrecisionMedium + Decorate 58(shiftediu) PrecisionMedium + Decorate 59(shifteduu) PrecisionMedium + Decorate 67(c) PrecisionMedium + Decorate 70(usampler) PrecisionMedium + Decorate 75(tc) PrecisionMedium + Decorate 75(tc) Smooth + Decorate 108(af) PrecisionMedium + Decorate 116(ai) PrecisionMedium + Decorate 151(mask1) PrecisionMedium + Decorate 153(mask2) PrecisionMedium + Decorate 155(mask3) PrecisionMedium + Decorate 159(mask4) PrecisionMedium + Decorate 199(f) PrecisionMedium + Decorate 199(f) Smooth + Decorate 199(f) NoStaticUse + Decorate 201(v) PrecisionMedium + Decorate 201(v) NoStaticUse + Decorate 203(i) PrecisionMedium + Decorate 203(i) NoStaticUse + Decorate 205(b) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 10: 7(int) Constant 1 + 11: TypeInt 32 0 + 12: TypePointer Function 11(int) + 14: TypeVector 11(int) 2 + 15: TypePointer Input 14(ivec2) + 16(t): 15(ptr) Variable Input + 19: 11(int) Constant 3 + 21: TypeBool + 22: 21(bool) ConstantTrue + 25: 7(int) Constant 2 + 30: 7(int) Constant 3 + 33: 21(bool) ConstantFalse + 36: 7(int) Constant 5 + 41: 7(int) Constant 7 + 46: 7(int) Constant 11 + 51: 7(int) Constant 13 + 55: 7(int) Constant 4294967295 + 57: 11(int) Constant 4194303 + 65: TypeVector 11(int) 4 + 66: TypePointer Output 65(ivec4) + 67(c): 66(ptr) Variable Output + 68: TypeSampler11(int) 2D filter+texture + 69: TypePointer UniformConstant 68 + 70(usampler): 69(ptr) Variable UniformConstant + 72: TypeFloat 32 + 73: TypeVector 72(float) 2 + 74: TypePointer Input 73(fvec2) + 75(tc): 74(ptr) Variable Input + 85: 72(float) Constant 1065353216 + 97: 72(float) Constant 1073741824 + 98: 73(fvec2) ConstantComposite 97 97 + 103: 11(int) Constant 4 + 107: TypePointer Function 72(float) + 111: TypePointer Function 21(bool) + 114: 11(int) Constant 0 + 122: 11(int) Constant 1 + 133: 7(int) Constant 17 + 138: 7(int) Constant 19 + 143: 7(int) Constant 23 + 148: 7(int) Constant 27 + 152: 11(int) Constant 161 + 154: 11(int) Constant 2576 + 157: 7(int) Constant 4 + 160: 11(int) Constant 2737 + 198: TypePointer Input 72(float) + 199(f): 198(ptr) Variable Input + 200: TypePointer UniformConstant 65(ivec4) + 201(v): 200(ptr) Variable UniformConstant + 202: TypePointer UniformConstant 7(int) + 203(i): 202(ptr) Variable UniformConstant + 204: TypePointer UniformConstant 21(bool) + 205(b): 204(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(count): 8(ptr) Variable Function + 13(u): 12(ptr) Variable Function + 54(shiftedii): 8(ptr) Variable Function + 56(shiftedui): 12(ptr) Variable Function + 58(shiftediu): 8(ptr) Variable Function + 59(shifteduu): 12(ptr) Variable Function + 108(af): 107(ptr) Variable Function + 112(ab): 111(ptr) Variable Function + 116(ai): 8(ptr) Variable Function + 151(mask1): 12(ptr) Variable Function + 153(mask2): 12(ptr) Variable Function + 155(mask3): 12(ptr) Variable Function + 159(mask4): 12(ptr) Variable Function + Store 9(count) 10 + 17: 14(ivec2) Load 16(t) + 18: 11(int) CompositeExtract 17 1 + 20: 11(int) IAdd 18 19 + Store 13(u) 20 + SelectionMerge 24 None + BranchConditional 22 23 24 + 23: Label + 26: 7(int) Load 9(count) + 27: 7(int) IMul 26 25 + Store 9(count) 27 + Branch 24 + 24: Label + SelectionMerge 29 None + BranchConditional 22 28 29 + 28: Label + 31: 7(int) Load 9(count) + 32: 7(int) IMul 31 30 + Store 9(count) 32 + Branch 29 + 29: Label + SelectionMerge 35 None + BranchConditional 33 34 35 + 34: Label + 37: 7(int) Load 9(count) + 38: 7(int) IMul 37 36 + Store 9(count) 38 + Branch 35 + 35: Label + SelectionMerge 40 None + BranchConditional 22 39 40 + 39: Label + 42: 7(int) Load 9(count) + 43: 7(int) IMul 42 41 + Store 9(count) 43 + Branch 40 + 40: Label + SelectionMerge 45 None + BranchConditional 22 44 45 + 44: Label + 47: 7(int) Load 9(count) + 48: 7(int) IMul 47 46 + Store 9(count) 48 + Branch 45 + 45: Label + SelectionMerge 50 None + BranchConditional 33 49 50 + 49: Label + 52: 7(int) Load 9(count) + 53: 7(int) IMul 52 51 + Store 9(count) 53 + Branch 50 + 50: Label + Store 54(shiftedii) 55 + Store 56(shiftedui) 57 + Store 58(shiftediu) 55 + Store 59(shifteduu) 57 + 60: 7(int) Load 54(shiftedii) + 61: 7(int) Load 58(shiftediu) + 62: 21(bool) IEqual 60 61 + SelectionMerge 64 None + BranchConditional 62 63 64 + 63: Label + 71: 68 Load 70(usampler) + 76: 73(fvec2) Load 75(tc) + 77: 65(ivec4) TextureSample 71 76 + Store 67(c) 77 + Branch 64 + 64: Label + 78: 11(int) Load 56(shiftedui) + 79: 11(int) Load 59(shifteduu) + 80: 21(bool) IEqual 78 79 + SelectionMerge 82 None + BranchConditional 80 81 82 + 81: Label + 83: 68 Load 70(usampler) + 84: 73(fvec2) Load 75(tc) + 86: 73(fvec2) CompositeConstruct 85 85 + 87: 73(fvec2) FAdd 84 86 + 88: 65(ivec4) TextureSample 83 87 + Store 67(c) 88 + Branch 82 + 82: Label + 89: 7(int) Load 54(shiftedii) + 90: 11(int) Load 56(shiftedui) + 91: 7(int) Bitcast 90 + 92: 21(bool) IEqual 89 91 + SelectionMerge 94 None + BranchConditional 92 93 94 + 93: Label + 95: 68 Load 70(usampler) + 96: 73(fvec2) Load 75(tc) + 99: 73(fvec2) FSub 96 98 + 100: 65(ivec4) TextureSample 95 99 + Store 67(c) 100 + Branch 94 + 94: Label + 101: 14(ivec2) Load 16(t) + 102: 11(int) CompositeExtract 101 0 + 104: 21(bool) UGreaterThan 102 103 + SelectionMerge 106 None + BranchConditional 104 105 106 + 105: Label + 109: 11(int) Load 13(u) + 110: 72(float) ConvertUToF 109 + Store 108(af) 110 + 113: 11(int) Load 13(u) + 115: 21(bool) INotEqual 113 114 + Store 112(ab) 115 + 117: 11(int) Load 13(u) + 118: 7(int) Bitcast 117 + Store 116(ai) 118 + 119: 72(float) Load 108(af) + 120: 11(int) ConvertFToU 119 + 121: 21(bool) Load 112(ab) + 123: 11(int) Select 121 122 114 + 124: 7(int) Load 116(ai) + 125: 11(int) Bitcast 124 + 126: 7(int) Load 9(count) + 127: 11(int) Bitcast 126 + 128: 65(ivec4) CompositeConstruct 120 123 125 127 + 129: 65(ivec4) Load 67(c) + 130: 65(ivec4) IAdd 129 128 + Store 67(c) 130 + Branch 106 + 106: Label + SelectionMerge 132 None + BranchConditional 22 131 132 + 131: Label + 134: 7(int) Load 9(count) + 135: 7(int) IMul 134 133 + Store 9(count) 135 + Branch 132 + 132: Label + SelectionMerge 137 None + BranchConditional 33 136 137 + 136: Label + 139: 7(int) Load 9(count) + 140: 7(int) IMul 139 138 + Store 9(count) 140 + Branch 137 + 137: Label + SelectionMerge 142 None + BranchConditional 22 141 142 + 141: Label + 144: 7(int) Load 9(count) + 145: 7(int) IMul 144 143 + Store 9(count) 145 + Branch 142 + 142: Label + SelectionMerge 147 None + BranchConditional 22 146 147 + 146: Label + 149: 7(int) Load 9(count) + 150: 7(int) IMul 149 148 + Store 9(count) 150 + Branch 147 + 147: Label + Store 151(mask1) 152 + Store 153(mask2) 154 + 156: 11(int) Load 151(mask1) + 158: 11(int) ShiftLeftLogical 156 157 + Store 155(mask3) 158 + Store 159(mask4) 160 + 161: 11(int) Load 155(mask3) + 162: 11(int) Load 153(mask2) + 163: 21(bool) IEqual 161 162 + SelectionMerge 165 None + BranchConditional 163 164 165 + 164: Label + 166: 7(int) Load 9(count) + 167: 7(int) IMul 166 25 + Store 9(count) 167 + Branch 165 + 165: Label + 168: 11(int) Load 155(mask3) + 169: 11(int) Load 151(mask1) + 170: 11(int) BitwiseAnd 168 169 + 171: 21(bool) INotEqual 170 114 + SelectionMerge 173 None + BranchConditional 171 172 173 + 172: Label + 174: 7(int) Load 9(count) + 175: 7(int) IMul 174 30 + Store 9(count) 175 + Branch 173 + 173: Label + 176: 11(int) Load 151(mask1) + 177: 11(int) Load 155(mask3) + 178: 11(int) BitwiseOr 176 177 + 179: 11(int) Load 159(mask4) + 180: 21(bool) IEqual 178 179 + SelectionMerge 182 None + BranchConditional 180 181 182 + 181: Label + 183: 7(int) Load 9(count) + 184: 7(int) IMul 183 36 + Store 9(count) 184 + Branch 182 + 182: Label + 185: 11(int) Load 151(mask1) + 186: 11(int) Load 159(mask4) + 187: 11(int) BitwiseXor 185 186 + 188: 21(bool) IEqual 187 154 + SelectionMerge 190 None + BranchConditional 188 189 190 + 189: Label + 191: 7(int) Load 9(count) + 192: 7(int) IMul 191 41 + Store 9(count) 192 + Branch 190 + 190: Label + 193: 7(int) Load 9(count) + 194: 11(int) Bitcast 193 + 195: 65(ivec4) CompositeConstruct 194 194 194 194 + 196: 65(ivec4) Load 67(c) + 197: 65(ivec4) IAdd 196 195 + Store 67(c) 197 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out new file mode 100644 index 000000000..62d88f821 --- /dev/null +++ b/Test/baseResults/spv.uniformArray.frag.out @@ -0,0 +1,82 @@ +spv.uniformArray.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 52 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "texColor" + Name 15 "color" + Name 26 "inColor" + Name 36 "alpha" + Name 47 "gl_FragColor" + Name 51 "texSampler2D" + Decorate 47(gl_FragColor) BuiltIn FragColor + Decorate 51(texSampler2D) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypeInt 32 0 + 12: 11(int) Constant 6 + 13: TypeArray 8(fvec4) 12 + 14: TypePointer UniformConstant 13 + 15(color): 14(ptr) Variable UniformConstant + 16: TypeInt 32 1 + 17: 16(int) Constant 1 + 18: TypePointer UniformConstant 8(fvec4) + 24: TypeVector 7(float) 3 + 25: TypePointer UniformConstant 24(fvec3) + 26(inColor): 25(ptr) Variable UniformConstant + 33: 11(int) Constant 16 + 34: TypeArray 7(float) 33 + 35: TypePointer UniformConstant 34 + 36(alpha): 35(ptr) Variable UniformConstant + 37: 16(int) Constant 12 + 38: TypePointer UniformConstant 7(float) + 46: TypePointer Output 8(fvec4) +47(gl_FragColor): 46(ptr) Variable Output + 49: TypeSampler7(float) 2D filter+texture + 50: TypePointer UniformConstant 49 +51(texSampler2D): 50(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 10(texColor): 9(ptr) Variable Function + 19: 18(ptr) AccessChain 15(color) 17 + 20: 8(fvec4) Load 19 + 21: 18(ptr) AccessChain 15(color) 17 + 22: 8(fvec4) Load 21 + 23: 8(fvec4) FAdd 20 22 + Store 10(texColor) 23 + 27: 24(fvec3) Load 26(inColor) + 28: 8(fvec4) Load 10(texColor) + 29: 24(fvec3) VectorShuffle 28 28 0 1 2 + 30: 24(fvec3) FAdd 29 27 + 31: 8(fvec4) Load 10(texColor) + 32: 8(fvec4) VectorShuffle 31 30 4 5 6 3 + Store 10(texColor) 32 + 39: 38(ptr) AccessChain 36(alpha) 37 + 40: 7(float) Load 39 + 41: 8(fvec4) Load 10(texColor) + 42: 7(float) CompositeExtract 41 3 + 43: 7(float) FAdd 42 40 + 44: 8(fvec4) Load 10(texColor) + 45: 8(fvec4) CompositeInsert 43 44 3 + Store 10(texColor) 45 + 48: 8(fvec4) Load 10(texColor) + Store 47(gl_FragColor) 48 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out new file mode 100644 index 000000000..1b8a8c0e8 --- /dev/null +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -0,0 +1,147 @@ +spv.variableArrayIndex.frag +WARNING: 0:3: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 93 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 9 "iLocal" + Name 11 "Count" + Name 14 "lunarStruct1" + MemberName 14(lunarStruct1) 0 "i" + MemberName 14(lunarStruct1) 1 "f" + Name 15 "lunarStruct2" + MemberName 15(lunarStruct2) 0 "i" + MemberName 15(lunarStruct2) 1 "f" + MemberName 15(lunarStruct2) 2 "s1_1" + Name 19 "lunarStruct3" + MemberName 19(lunarStruct3) 0 "s2_1" + MemberName 19(lunarStruct3) 1 "i" + MemberName 19(lunarStruct3) 2 "f" + MemberName 19(lunarStruct3) 3 "s1_1" + Name 21 "foo3" + Name 31 "scale" + Name 35 "foo2" + Name 37 "foo" + Name 55 "gl_FragColor" + Name 59 "sampler" + Name 63 "coord" + Name 69 "constructed" + Decorate 55(gl_FragColor) BuiltIn FragColor + Decorate 63(coord) Smooth + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeInt 32 1 + 8: TypePointer Function 7(int) + 10: TypePointer UniformConstant 7(int) + 11(Count): 10(ptr) Variable UniformConstant + 13: TypeFloat 32 +14(lunarStruct1): TypeStruct 7(int) 13(float) +15(lunarStruct2): TypeStruct 7(int) 13(float) 14(lunarStruct1) + 16: TypeInt 32 0 + 17: 16(int) Constant 3 + 18: TypeArray 15(lunarStruct2) 17 +19(lunarStruct3): TypeStruct 18 7(int) 13(float) 14(lunarStruct1) + 20: TypePointer UniformConstant 19(lunarStruct3) + 21(foo3): 20(ptr) Variable UniformConstant + 22: 7(int) Constant 0 + 23: 7(int) Constant 1 + 26: TypeBool + 30: TypePointer Function 13(float) + 32: 16(int) Constant 5 + 33: TypeArray 15(lunarStruct2) 32 + 34: TypePointer UniformConstant 33 + 35(foo2): 34(ptr) Variable UniformConstant + 36: TypePointer UniformConstant 14(lunarStruct1) + 37(foo): 36(ptr) Variable UniformConstant + 42: 7(int) Constant 2 + 47: TypePointer UniformConstant 13(float) + 53: TypeVector 13(float) 4 + 54: TypePointer Output 53(fvec4) +55(gl_FragColor): 54(ptr) Variable Output + 57: TypeSampler13(float) 2D filter+texture + 58: TypePointer UniformConstant 57 + 59(sampler): 58(ptr) Variable UniformConstant + 61: TypeVector 13(float) 2 + 62: TypePointer Input 61(fvec2) + 63(coord): 62(ptr) Variable Input + 67: TypeArray 61(fvec2) 17 + 68: TypePointer Function 67 + 73: 13(float) Constant 1065353216 + 74: 13(float) Constant 1073741824 + 75: 61(fvec2) ConstantComposite 73 74 + 79: TypePointer Function 61(fvec2) + 4(main): 2 Function None 3 + 5: Label + 9(iLocal): 8(ptr) Variable Function + 31(scale): 30(ptr) Variable Function + 69(constructed): 68(ptr) Variable Function + 12: 7(int) Load 11(Count) + Store 9(iLocal) 12 + 24: 10(ptr) AccessChain 21(foo3) 22 23 22 + 25: 7(int) Load 24 + 27: 26(bool) SGreaterThan 25 22 + SelectionMerge 29 None + BranchConditional 27 28 50 + 28: Label + 38: 10(ptr) AccessChain 37(foo) 22 + 39: 7(int) Load 38 + 40: 10(ptr) AccessChain 21(foo3) 22 39 22 + 41: 7(int) Load 40 + 43: 7(int) IAdd 41 42 + 44: 7(int) Load 9(iLocal) + 45: 7(int) IAdd 44 23 + Store 9(iLocal) 45 + 46: 7(int) IAdd 43 45 + 48: 47(ptr) AccessChain 35(foo2) 46 42 23 + 49: 13(float) Load 48 + Store 31(scale) 49 + Branch 29 + 50: Label + 51: 47(ptr) AccessChain 21(foo3) 22 22 42 23 + 52: 13(float) Load 51 + Store 31(scale) 52 + Branch 29 + 29: Label + 56: 13(float) Load 31(scale) + 60: 57 Load 59(sampler) + 64: 61(fvec2) Load 63(coord) + 65: 53(fvec4) TextureSample 60 64 + 66: 53(fvec4) VectorTimesScalar 56 65 + Store 55(gl_FragColor) 66 + 70: 61(fvec2) Load 63(coord) + 71: 13(float) Load 31(scale) + 72: 61(fvec2) CompositeConstruct 71 71 + 76: 67 CompositeConstruct 70 72 75 + Store 69(constructed) 76 + 77: 10(ptr) AccessChain 37(foo) 22 + 78: 7(int) Load 77 + 80: 79(ptr) AccessChain 69(constructed) 78 + 81: 61(fvec2) Load 80 + 82: 10(ptr) AccessChain 37(foo) 22 + 83: 7(int) Load 82 + 84: 79(ptr) AccessChain 69(constructed) 83 + 85: 61(fvec2) Load 84 + 86: 13(float) CompositeExtract 81 0 + 87: 13(float) CompositeExtract 81 1 + 88: 13(float) CompositeExtract 85 0 + 89: 13(float) CompositeExtract 85 1 + 90: 53(fvec4) CompositeConstruct 86 87 88 89 + 91: 53(fvec4) Load 55(gl_FragColor) + 92: 53(fvec4) FAdd 91 90 + Store 55(gl_FragColor) 92 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out new file mode 100644 index 000000000..f904a4749 --- /dev/null +++ b/Test/baseResults/spv.varyingArray.frag.out @@ -0,0 +1,99 @@ +spv.varyingArray.frag +WARNING: 0:3: varying deprecated in version 130; may be removed in future release +WARNING: 0:4: varying deprecated in version 130; may be removed in future release +WARNING: 0:6: varying deprecated in version 130; may be removed in future release +WARNING: 0:8: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 61 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "texColor" + Name 13 "texSampler2D" + Name 19 "gl_TexCoord" + Name 34 "color" + Name 39 "alpha" + Name 44 "gl_FragColor" + Name 48 "foo" + Decorate 19(gl_TexCoord) Smooth + Decorate 34(color) Smooth + Decorate 39(alpha) Smooth + Decorate 44(gl_FragColor) BuiltIn FragColor + Decorate 48(foo) Smooth + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypeSampler7(float) 2D filter+texture + 12: TypePointer UniformConstant 11 +13(texSampler2D): 12(ptr) Variable UniformConstant + 15: TypeInt 32 0 + 16: 15(int) Constant 6 + 17: TypeArray 8(fvec4) 16 + 18: TypePointer Input 17 + 19(gl_TexCoord): 18(ptr) Variable Input + 20: TypeInt 32 1 + 21: 20(int) Constant 4 + 22: TypePointer Input 8(fvec4) + 25: 20(int) Constant 5 + 29: TypeVector 7(float) 2 + 34(color): 22(ptr) Variable Input + 38: TypePointer Input 7(float) + 39(alpha): 38(ptr) Variable Input + 43: TypePointer Output 8(fvec4) +44(gl_FragColor): 43(ptr) Variable Output + 45: 15(int) Constant 3 + 46: TypeArray 8(fvec4) 45 + 47: TypePointer Input 46 + 48(foo): 47(ptr) Variable Input + 49: 20(int) Constant 1 + 52: 20(int) Constant 0 + 4(main): 2 Function None 3 + 5: Label + 10(texColor): 9(ptr) Variable Function + 14: 11 Load 13(texSampler2D) + 23: 22(ptr) AccessChain 19(gl_TexCoord) 21 + 24: 8(fvec4) Load 23 + 26: 22(ptr) AccessChain 19(gl_TexCoord) 25 + 27: 8(fvec4) Load 26 + 28: 8(fvec4) FAdd 24 27 + 30: 7(float) CompositeExtract 28 0 + 31: 7(float) CompositeExtract 28 1 + 32: 29(fvec2) CompositeConstruct 30 31 + 33: 8(fvec4) TextureSample 14 32 + Store 10(texColor) 33 + 35: 8(fvec4) Load 34(color) + 36: 8(fvec4) Load 10(texColor) + 37: 8(fvec4) FAdd 36 35 + Store 10(texColor) 37 + 40: 7(float) Load 39(alpha) + 41: 8(fvec4) Load 10(texColor) + 42: 8(fvec4) CompositeInsert 40 41 3 + Store 10(texColor) 42 + 50: 22(ptr) AccessChain 48(foo) 49 + 51: 8(fvec4) Load 50 + 53: 22(ptr) AccessChain 19(gl_TexCoord) 52 + 54: 8(fvec4) Load 53 + 55: 8(fvec4) FAdd 51 54 + 56: 22(ptr) AccessChain 19(gl_TexCoord) 21 + 57: 8(fvec4) Load 56 + 58: 8(fvec4) FAdd 55 57 + 59: 8(fvec4) Load 10(texColor) + 60: 8(fvec4) FAdd 58 59 + Store 44(gl_FragColor) 60 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out new file mode 100644 index 000000000..c147e8658 --- /dev/null +++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out @@ -0,0 +1,109 @@ +spv.varyingArrayIndirect.frag +WARNING: 0:3: varying deprecated in version 130; may be removed in future release +WARNING: 0:4: varying deprecated in version 130; may be removed in future release +WARNING: 0:6: varying deprecated in version 130; may be removed in future release +WARNING: 0:8: varying deprecated in version 130; may be removed in future release + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 69 + + Source GLSL 130 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "texColor" + Name 13 "texSampler2D" + Name 19 "userIn" + Name 22 "b" + Name 30 "gl_TexCoord" + Name 31 "a" + Name 45 "color" + Name 50 "alpha" + Name 55 "gl_FragColor" + Decorate 19(userIn) Smooth + Decorate 30(gl_TexCoord) Smooth + Decorate 45(color) Smooth + Decorate 50(alpha) Smooth + Decorate 55(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypeSampler7(float) 2D filter+texture + 12: TypePointer UniformConstant 11 +13(texSampler2D): 12(ptr) Variable UniformConstant + 15: TypeInt 32 0 + 16: 15(int) Constant 2 + 17: TypeArray 8(fvec4) 16 + 18: TypePointer Input 17 + 19(userIn): 18(ptr) Variable Input + 20: TypeInt 32 1 + 21: TypePointer UniformConstant 20(int) + 22(b): 21(ptr) Variable UniformConstant + 24: TypePointer Input 8(fvec4) + 27: 15(int) Constant 6 + 28: TypeArray 8(fvec4) 27 + 29: TypePointer Input 28 + 30(gl_TexCoord): 29(ptr) Variable Input + 31(a): 21(ptr) Variable UniformConstant + 36: 20(int) Constant 5 + 40: TypeVector 7(float) 2 + 45(color): 24(ptr) Variable Input + 49: TypePointer Input 7(float) + 50(alpha): 49(ptr) Variable Input + 54: TypePointer Output 8(fvec4) +55(gl_FragColor): 54(ptr) Variable Output + 56: 20(int) Constant 0 + 4(main): 2 Function None 3 + 5: Label + 10(texColor): 9(ptr) Variable Function + 14: 11 Load 13(texSampler2D) + 23: 20(int) Load 22(b) + 25: 24(ptr) AccessChain 19(userIn) 23 + 26: 8(fvec4) Load 25 + 32: 20(int) Load 31(a) + 33: 24(ptr) AccessChain 30(gl_TexCoord) 32 + 34: 8(fvec4) Load 33 + 35: 8(fvec4) FAdd 26 34 + 37: 24(ptr) AccessChain 30(gl_TexCoord) 36 + 38: 8(fvec4) Load 37 + 39: 8(fvec4) FAdd 35 38 + 41: 7(float) CompositeExtract 39 0 + 42: 7(float) CompositeExtract 39 1 + 43: 40(fvec2) CompositeConstruct 41 42 + 44: 8(fvec4) TextureSample 14 43 + Store 10(texColor) 44 + 46: 8(fvec4) Load 45(color) + 47: 8(fvec4) Load 10(texColor) + 48: 8(fvec4) FAdd 47 46 + Store 10(texColor) 48 + 51: 7(float) Load 50(alpha) + 52: 8(fvec4) Load 10(texColor) + 53: 8(fvec4) CompositeInsert 51 52 3 + Store 10(texColor) 53 + 57: 24(ptr) AccessChain 30(gl_TexCoord) 56 + 58: 8(fvec4) Load 57 + 59: 20(int) Load 22(b) + 60: 24(ptr) AccessChain 30(gl_TexCoord) 59 + 61: 8(fvec4) Load 60 + 62: 8(fvec4) FAdd 58 61 + 63: 8(fvec4) Load 10(texColor) + 64: 8(fvec4) FAdd 62 63 + 65: 20(int) Load 31(a) + 66: 24(ptr) AccessChain 19(userIn) 65 + 67: 8(fvec4) Load 66 + 68: 8(fvec4) FAdd 64 67 + Store 55(gl_FragColor) 68 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out new file mode 100644 index 000000000..430ba7e64 --- /dev/null +++ b/Test/baseResults/spv.voidFunction.frag.out @@ -0,0 +1,81 @@ +spv.voidFunction.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 43 + + Source GLSL 120 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 7 "foo(" + Name 9 "foo2(" + Name 13 "bar" + Name 23 "outColor" + Name 25 "bigColor" + Name 36 "gl_FragColor" + Name 40 "BaseColor" + Name 42 "d" + Decorate 36(gl_FragColor) BuiltIn FragColor + Decorate 40(BaseColor) Smooth + Decorate 40(BaseColor) NoStaticUse + Decorate 42(d) NoStaticUse + 2: TypeVoid + 3: TypeFunction 2 + 11: TypeFloat 32 + 12: TypePointer PrivateGlobal 11(float) + 13(bar): 12(ptr) Variable PrivateGlobal + 14: 11(float) Constant 1073741824 + 16: 11(float) Constant 1065353216 + 21: TypeVector 11(float) 4 + 22: TypePointer Function 21(fvec4) + 24: TypePointer UniformConstant 21(fvec4) + 25(bigColor): 24(ptr) Variable UniformConstant + 35: TypePointer Output 21(fvec4) +36(gl_FragColor): 35(ptr) Variable Output + 39: TypePointer Input 21(fvec4) + 40(BaseColor): 39(ptr) Variable Input + 41: TypePointer UniformConstant 11(float) + 42(d): 41(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 23(outColor): 22(ptr) Variable Function + Store 13(bar) 14 + 26: 21(fvec4) Load 25(bigColor) + Store 23(outColor) 26 + 27: 2 FunctionCall 7(foo() + 28: 2 FunctionCall 9(foo2() + 29: 11(float) Load 13(bar) + 30: 21(fvec4) Load 23(outColor) + 31: 11(float) CompositeExtract 30 0 + 32: 11(float) FAdd 31 29 + 33: 21(fvec4) Load 23(outColor) + 34: 21(fvec4) CompositeInsert 32 33 0 + Store 23(outColor) 34 + 37: 21(fvec4) Load 23(outColor) + Store 36(gl_FragColor) 37 + Branch 6 + 6: Label + Return + FunctionEnd + 7(foo(): 2 Function None 3 + 8: Label + 15: 11(float) Load 13(bar) + 17: 11(float) FAdd 15 16 + Store 13(bar) 17 + Return + FunctionEnd + 9(foo2(): 2 Function None 3 + 10: Label + 19: 11(float) Load 13(bar) + 20: 11(float) FAdd 19 16 + Store 13(bar) 20 + Return + FunctionEnd diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out new file mode 100644 index 000000000..d448c1581 --- /dev/null +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -0,0 +1,64 @@ +spv.whileLoop.frag + + + +Linked fragment stage: + + + +// Module Version 99 +// Generated by (magic number): 51a00bb +// Id's are bound by 32 + + Source GLSL 110 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 + Name 4 "main" + Name 10 "color" + Name 12 "BaseColor" + Name 19 "d" + Name 25 "bigColor" + Name 30 "gl_FragColor" + Decorate 12(BaseColor) Smooth + Decorate 30(gl_FragColor) BuiltIn FragColor + 2: TypeVoid + 3: TypeFunction 2 + 7: TypeFloat 32 + 8: TypeVector 7(float) 4 + 9: TypePointer Function 8(fvec4) + 11: TypePointer Input 8(fvec4) + 12(BaseColor): 11(ptr) Variable Input + 18: TypePointer UniformConstant 7(float) + 19(d): 18(ptr) Variable UniformConstant + 21: TypeBool + 24: TypePointer UniformConstant 8(fvec4) + 25(bigColor): 24(ptr) Variable UniformConstant + 29: TypePointer Output 8(fvec4) +30(gl_FragColor): 29(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 10(color): 9(ptr) Variable Function + 13: 8(fvec4) Load 12(BaseColor) + Store 10(color) 13 + Branch 14 + 14: Label + 16: 8(fvec4) Load 10(color) + 17: 7(float) CompositeExtract 16 0 + 20: 7(float) Load 19(d) + 22: 21(bool) FOrdLessThan 17 20 + LoopMerge 15 None + BranchConditional 22 23 15 + 23: Label + 26: 8(fvec4) Load 25(bigColor) + 27: 8(fvec4) Load 10(color) + 28: 8(fvec4) FAdd 27 26 + Store 10(color) 28 + Branch 14 + 15: Label + 31: 8(fvec4) Load 10(color) + Store 30(gl_FragColor) 31 + Branch 6 + 6: Label + Return + FunctionEnd diff --git a/Test/spv.100ops.frag b/Test/spv.100ops.frag new file mode 100644 index 000000000..b86d04230 --- /dev/null +++ b/Test/spv.100ops.frag @@ -0,0 +1,25 @@ +#version 100 + +lowp float foo(); + +uniform int low, high; + +lowp float face1 = 11.0; + +void main() +{ + int z = 3; + + if (2 * low + 1 < high) + ++z; + + gl_FragColor = face1 * vec4(z) + foo(); +} + +lowp float face2 = -2.0; + +lowp float foo() +{ + // testing if face2 initializer insert logic is correct in main + return face2; +} diff --git a/Test/spv.130.frag b/Test/spv.130.frag new file mode 100644 index 000000000..5b27e0ccb --- /dev/null +++ b/Test/spv.130.frag @@ -0,0 +1,119 @@ +#version 130 +#extension GL_ARB_texture_gather : enable + +vec3 a; +float b; + +in vec4 i; +out vec4 o; +out ivec3 io; +out uvec4 uo; + +flat in float fflat; +smooth in float fsmooth; +noperspective in float fnop; + +uniform samplerCube sampC; + +in vec4 gl_Color; +flat in vec4 gl_Color; + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2D samp2D; +uniform sampler2DShadow samp2DS; +uniform sampler2DRect samp2DR; +uniform sampler2DArray samp2DA; + +void bar3() +{ + o += textureGatherOffset(samp2D, vec2(0.3), ivec2(1)); + o += textureGatherOffset(samp2DA, vec3(0.3), ivec2(1)); +} + +#extension GL_ARB_gpu_shader5 : enable + +void bar4() +{ + o += textureGatherOffset(samp2DR, vec2(0.3), ivec2(1)); + o += textureGatherOffset(samp2DS, vec2(0.3), 1.3, ivec2(1)); + o += textureGatherOffset(samp2D, vec2(0.3), ivec2(1), 2); +} + +#extension GL_ARB_texture_cube_map_array : enable + +uniform samplerCubeArray Sca; +uniform isamplerCubeArray Isca; +uniform usamplerCubeArray Usca; +uniform samplerCubeArrayShadow Scas; + +void bar5() +{ + io = textureSize(Sca, 3); + o += texture(Sca, i); + io += texture(Isca, i, 0.7).xyz; + uo = texture(Usca, i); + + o += textureLod(Sca, i, 1.7); + a = textureSize(Scas, 3); + float f = texture(Scas, i, i.y); + ivec4 c = textureGrad(Isca, i, vec3(0.1), vec3(0.2)); + o += vec4(a, f + c); +} + +#extension GL_ARB_shading_language_420pack : enable + +const int ai[3] = { 10, 23, 32 }; +uniform layout(binding=0) sampler2D bounds; + +void bar6() +{ + mat4x3 m43; + float a1 = m43[3].y; + //int a2 = m43.length(); // ERROR until shading_language_420pack is fully implemented + const float b = 2 * a1; + //a.x = gl_MinProgramTexelOffset + gl_MaxProgramTexelOffset; // ERROR until shading_language_420pack is fully implemented +} + + +#extension GL_ARB_texture_rectangle : enable +#extension GL_ARB_shader_texture_lod : require + +uniform sampler2D s2D; +uniform sampler2DRect s2DR; +uniform sampler2DRectShadow s2DRS; +uniform sampler1D s1D; +uniform sampler2DShadow s2DS; + +uniform float f; +uniform vec2 v2; +uniform vec3 v3; +uniform vec4 v4; + +void bar7() +{ + vec4 v; + + o += texture2DRect(s2DR, v2); + o += texture2DRectProj(s2DR, v3); + o += texture2DRectProj(s2DR, v4); + o += shadow2DRect(s2DRS, v3); + o += shadow2DRectProj(s2DRS, v4); + + o += texture1DGradARB(s1D, f, f, f); + o += texture2DProjGradARB(s2D, v, v2, v2); + o += shadow2DProjGradARB(s2DS, v, v2, v2); + + o += shadow2DRectProjGradARB(s2DRS, v, v2, v2); +} + +void main() +{ + o = textureGather(sampC, vec3(0.2)); + o.y = gl_ClipDistance[3]; + bar3(); + bar4(); + bar5(); + bar6(); + bar7(); +} \ No newline at end of file diff --git a/Test/spv.140.frag b/Test/spv.140.frag new file mode 100644 index 000000000..4c67d6b16 --- /dev/null +++ b/Test/spv.140.frag @@ -0,0 +1,41 @@ +#version 140 + +in vec4 k; +out vec4 o; + +in float gl_ClipDistance[5]; + +layout(row_major) uniform; + +uniform sampler2D samp2Da[3]; + +layout(std140) uniform bn { + layout(row_major) mat4 matra[4]; + layout(column_major) mat4 matca[4]; + layout(row_major) mat4 matr; + layout(column_major) mat4 matc; + mat4 matrdef; +}; + +uniform sampler2DRect sampR; +uniform isamplerBuffer sampB; + +float foo(); + +void main() +{ + o.y = gl_ClipDistance[2]; + o.z = gl_ClipDistance[int(k)]; + o.w = float(textureSize(sampR) + textureSize(sampB)) / 100.0; + o.z = foo(); +} + +// Test extra-function initializers + +float i1 = gl_FrontFacing ? -2.0 : 2.0; +float i2 = 102; + +float foo() +{ + return i1 + i2; +} diff --git a/Test/spv.150.geom b/Test/spv.150.geom new file mode 100644 index 000000000..0419265dc --- /dev/null +++ b/Test/spv.150.geom @@ -0,0 +1,39 @@ +#version 150 core + +layout(triangles_adjacency) in; +layout(max_vertices = 30) out; +layout(stream = 3, triangle_strip) out; + +in fromVertex { + in vec3 color; +} fromV[]; + +out toFragment { + out vec3 color; +} toF; + +out fromVertex { + vec3 color; +}; + +void main() +{ + color = fromV[0].color; + //?? gl_ClipDistance[3] = gl_in[1].gl_ClipDistance[2]; + gl_Position = gl_in[0].gl_Position; + gl_PointSize = gl_in[3].gl_PointSize; + gl_PrimitiveID = gl_PrimitiveIDIn; + gl_Layer = 2; + + EmitVertex(); + + color = 2 * fromV[0].color; + gl_Position = 2.0 * gl_in[0].gl_Position; + gl_PointSize = 2.0 * gl_in[3].gl_PointSize; + gl_PrimitiveID = gl_PrimitiveIDIn + 1; + gl_Layer = 3; + + EmitVertex(); + + EndPrimitive(); +} diff --git a/Test/spv.150.vert b/Test/spv.150.vert new file mode 100644 index 000000000..065275f87 --- /dev/null +++ b/Test/spv.150.vert @@ -0,0 +1,39 @@ +#version 150 core + +in vec4 iv4; + +uniform float ps; +uniform int ui; + +invariant gl_Position; + +struct s1 { + int a; + int a2; + vec4 b[3]; +}; + +struct s2 { + int c; + s1 d[4]; +}; + +out s2 s2out; + +void main() +{ + gl_Position = iv4; + gl_PointSize = ps; + gl_ClipDistance[2] = iv4.x; + int i; + s2out.d[i].b[2].w = ps; + + // test recovery from nonsupported built-ins + //float n1 = noise1(2.4); + //n1 = noise1(vec4(n1)); + //vec2 n2 = noise2(vec3(n1)); + //vec3 n3 = noise3(n2); + //vec4 n4 = noise4(n3); +} + +out float gl_ClipDistance[4]; diff --git a/Test/spv.300BuiltIns.vert b/Test/spv.300BuiltIns.vert new file mode 100644 index 000000000..c8104de87 --- /dev/null +++ b/Test/spv.300BuiltIns.vert @@ -0,0 +1,17 @@ +#version 300 es + +in mediump float ps; + +invariant gl_Position; + +void main() +{ + mediump int i = (4 * gl_VertexID - 10); + mediump int j = (4 * gl_VertexID - 10); + + gl_Position = vec4(ps); + gl_Position *= float(i); + + gl_PointSize = ps; + gl_PointSize *= float(j); +} diff --git a/Test/spv.300layout.frag b/Test/spv.300layout.frag new file mode 100644 index 000000000..d80de3ab0 --- /dev/null +++ b/Test/spv.300layout.frag @@ -0,0 +1,22 @@ +#version 300 es + +precision mediump float; + +in vec4 pos; +in vec3 color; + +layout(location = 7) out vec3 c; +layout(LocatioN = 3) out vec4 p[2]; + +struct S { + vec3 c; + float f; +}; + +in S s; + +void main() +{ + c = color + s.c; + p[1] = pos * s.f; +} diff --git a/Test/spv.300layout.vert b/Test/spv.300layout.vert new file mode 100644 index 000000000..f5bb587ff --- /dev/null +++ b/Test/spv.300layout.vert @@ -0,0 +1,49 @@ +#version 300 es + +layout(location = 7) in vec3 c; +layout(LocatioN = 3) in vec4 p; +layout(location = 9) in ivec2 aiv2; +out vec4 pos; +out vec3 color; +flat out int iout; + +layout(shared, column_major, row_major) uniform; // default is now shared and row_major + +layout(std140) uniform Transform { // layout of this block is std140 + mat4 M1; // row_major + layout(column_major) mat4 M2; // column major + mat3 N1; // row_major + int iuin; +} tblock; + +uniform T2 { // layout of this block is shared + bool b; + mat4 t2m; +}; + +layout(column_major) uniform T3 { // shared and column_major + mat4 M3; // column_major + layout(row_major) mat4 M4; // row major + mat2x3 N2; // column_major + uvec3 uv3a[4]; +}; + +uniform uint uiuin; + +struct S { + vec3 c; + float f; +}; + +out S s; + +void main() +{ + pos = p * (tblock.M1 + tblock.M2 + M4 + M3 + t2m); + color = c * tblock.N1; + iout = tblock.iuin + int(uiuin) + aiv2.y; + s.c = c; + s.f = p.x; + if (N2[1] != vec3(1.0) || uv3a[2] != uvec3(5)) + ++s.c; +} diff --git a/Test/spv.300layoutp.vert b/Test/spv.300layoutp.vert new file mode 100644 index 000000000..a0986e478 --- /dev/null +++ b/Test/spv.300layoutp.vert @@ -0,0 +1,49 @@ +#version 300 es + +layout(location = 7) in vec3 c; +layout(LocatioN = 3) in vec4 p; +layout(location = 9) in ivec2 aiv2; +out vec4 pos; +out vec3 color; +flat out int iout; + +layout(shared, column_major, row_major) uniform; // default is now shared and row_major + +layout(std140) uniform Transform { // layout of this block is std140 + mat4 M1; // row_major + layout(column_major) mat4 M2; // column major + mat3 N1; // row_major + int iuin; +} tblock; + +uniform T2 { // layout of this block is shared + bool b; + mat4 t2m; +}; + +layout(column_major) uniform T3 { // shared and column_major + mat4 M3; // column_major + layout(row_major) mat4 M4; // row major + mat2x3 N2; // column_major + uvec3 uv3a[4]; +}; + +uniform uint uiuin; + +struct S { + vec3 c; + float f; +}; + +out S s; + +void main() +{ + pos = p * (tblock.M1 * tblock.M2 * M4 * M3 * t2m); + color = c * tblock.N1; + iout = tblock.iuin + int(uiuin) + aiv2.y; + s.c = c; + s.f = p.x; + if (N2[1] != vec3(1.0) || uv3a[2] != uvec3(5)) + ++s.c; +} diff --git a/Test/spv.310.comp b/Test/spv.310.comp new file mode 100644 index 000000000..45116361d --- /dev/null +++ b/Test/spv.310.comp @@ -0,0 +1,37 @@ +#version 310 es + +precision highp float; + +layout (local_size_x = 16, local_size_y = 32, local_size_z = 4) in; + +shared float s; +shared int i; + +buffer outb { + float f; + float g; + float h; + vec3 uns[]; // this makes it look like the "second" set of 3 floats in a struct, which LLVM + // takes advantage of when optimizing, giving confusing results, like thinking + // &outbname.uns[18].x == &outbname[9].uns.x +} outbname; + +buffer outbna { + int k; + vec4 na; +} outbnamena; + +buffer outs { + vec4 va[]; +} outnames; + +void main() +{ + barrier(); + outbname.f = s; + outbnamena.na = vec4(s); + s = outbname.uns[18].x; // TODO: see note above + //outbname.uns[17] = vec3(3.0); // TODO: see note above, this one bitcasts, which isn't handled + outbname.uns[i] = vec3(s); + outnames.va[gl_LocalInvocationID.x] = vec4(s); +} diff --git a/Test/spv.330.geom b/Test/spv.330.geom new file mode 100644 index 000000000..ebd4ac66e --- /dev/null +++ b/Test/spv.330.geom @@ -0,0 +1,26 @@ +#version 330 core +#extension GL_ARB_separate_shader_objects : enable + +in gl_PerVertex +{ + float gl_ClipDistance[1]; + vec4 gl_Position; +} gl_in[]; + +out gl_PerVertex +{ + vec4 gl_Position; + float gl_ClipDistance[1]; +}; + +layout( triangles ) in; +layout( triangle_strip, max_vertices = 3 ) out; + +void main() +{ + vec4 v; + gl_Position = gl_in[1].gl_Position; + gl_ClipDistance[0] = gl_in[1].gl_ClipDistance[0]; + EmitVertex(); + EndPrimitive(); +} diff --git a/Test/spv.400.frag b/Test/spv.400.frag new file mode 100644 index 000000000..f35537c97 --- /dev/null +++ b/Test/spv.400.frag @@ -0,0 +1,42 @@ +#version 400 core + +in vec2 c2D; +flat in int i; +out vec4 outp; +out ivec4 ioutp; +out uvec4 uoutp; +uniform sampler2D arrayedSampler[5]; +uniform usampler2DRect samp2dr; +uniform isampler2DArray isamp2DA; +uniform sampler2DRectShadow u2drs; + +#extension GL_ARB_separate_shader_objects : enable + +layout(location = 6) in vec4 vl2; + +void foo23() +{ + const ivec2[3] offsets = ivec2[3](ivec2(1,2), ivec2(3,4), ivec2(15,16)); + + outp.x += textureProjGradOffset(u2drs, outp, vec2(0.0), vec2(0.0), offsets[1]); +} + +void main() +{ + vec4 v; + v = texture(arrayedSampler[i], c2D); + outp.x = gl_ClipDistance[1]; + outp.yzw = v.yzw; + + ivec2 offsets[4]; + const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); + uoutp = textureGatherOffsets(samp2dr, c2D, constOffsets, 2); + outp += textureGather(arrayedSampler[0], c2D); + ioutp = textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 3); + ioutp += textureGatherOffset(isamp2DA, vec3(0.1), ivec2(1), 1+2); + ioutp += textureGatherOffset(isamp2DA, vec3(0.1), ivec2(i)); + + outp += gl_FragCoord + vl2; + foo23(); +} + diff --git a/Test/spv.400.tesc b/Test/spv.400.tesc new file mode 100644 index 000000000..348e6214f --- /dev/null +++ b/Test/spv.400.tesc @@ -0,0 +1,43 @@ +#version 400 core + +layout(vertices = 4) out; +int outa[gl_out.length()]; + +patch out vec4 patchOut; + +void main() +{ + barrier(); + + int a = gl_MaxTessControlInputComponents + + gl_MaxTessControlOutputComponents + + gl_MaxTessControlTextureImageUnits + + gl_MaxTessControlUniformComponents + + gl_MaxTessControlTotalOutputComponents; + + vec4 p = gl_in[1].gl_Position; + float ps = gl_in[1].gl_PointSize; + float cd = gl_in[1].gl_ClipDistance[2]; + + int pvi = gl_PatchVerticesIn; + int pid = gl_PrimitiveID; + int iid = gl_InvocationID; + + gl_out[1].gl_Position = p; + gl_out[1].gl_PointSize = ps; + gl_out[1].gl_ClipDistance[1] = cd; + + gl_TessLevelOuter[3] = 3.2; + gl_TessLevelInner[1] = 1.3; +} + +in vec2 inb[]; +in vec2 ind[gl_MaxPatchVertices]; + +#extension GL_ARB_separate_shader_objects : enable + +layout(location = 3) in vec4 ivla[]; +layout(location = 4) in vec4 ivlb[]; + +layout(location = 3) out vec4 ovla[]; +layout(location = 4) out vec4 ovlb[]; diff --git a/Test/spv.400.tese b/Test/spv.400.tese new file mode 100644 index 000000000..da33f41ea --- /dev/null +++ b/Test/spv.400.tese @@ -0,0 +1,52 @@ +#version 400 core + +layout(triangles, ccw) in; + +layout(fractional_odd_spacing) in; + +layout(point_mode) in; + +patch in vec4 patchIn; + +void main() +{ + int a = gl_MaxTessEvaluationInputComponents + + gl_MaxTessEvaluationOutputComponents + + gl_MaxTessEvaluationTextureImageUnits + + gl_MaxTessEvaluationUniformComponents + + gl_MaxTessPatchComponents + + gl_MaxPatchVertices + + gl_MaxTessGenLevel; + + vec4 p = gl_in[1].gl_Position; + float ps = gl_in[1].gl_PointSize; + float cd = gl_in[1].gl_ClipDistance[2]; + + int pvi = gl_PatchVerticesIn; + int pid = gl_PrimitiveID; + vec3 tc = gl_TessCoord; + float tlo = gl_TessLevelOuter[3]; + float tli = gl_TessLevelInner[1]; + + gl_Position = p; + gl_PointSize = ps; + gl_ClipDistance[2] = cd; +} + +#extension GL_ARB_separate_shader_objects : enable + +in vec2 inb[]; +in vec2 ind[gl_MaxPatchVertices]; + +in testblb { + int f; +} blb[]; + +in testbld { + int f; +} bld[gl_MaxPatchVertices]; + +layout(location = 23) in vec4 ivla[]; +layout(location = 24) in vec4 ivlb[]; + +layout(location = 23) out vec4 ovla[2]; diff --git a/Test/spv.420.geom b/Test/spv.420.geom new file mode 100644 index 000000000..afb04bc92 --- /dev/null +++ b/Test/spv.420.geom @@ -0,0 +1,43 @@ +#version 420 core + +layout(triangles) in; + +in gl_PerVertex { + float gl_PointSize; +} gl_in[]; + +out gl_PerVertex { + float gl_PointSize; +}; + +layout(line_strip) out; +layout(max_vertices = 127) out; +layout(invocations = 4) in; + +uniform sampler2D s2D; +in vec2 coord[]; +uniform vec4 v4; +uniform int i; + +void main() +{ + float p = gl_in[1].gl_PointSize; + gl_PointSize = p; + gl_ViewportIndex = 7; + + EmitStreamVertex(1); + EndStreamPrimitive(0); + EmitVertex(); + EndPrimitive(); + int id = gl_InvocationID; + + const ivec2 offsets[5] = + { + ivec2(0,1), + ivec2(1,-2), + ivec2(0,3), + ivec2(-3,0), + ivec2(2,1) + }; + vec4 v = textureGatherOffset(s2D, coord[0], offsets[i].xy); +} diff --git a/Test/spv.430.vert b/Test/spv.430.vert new file mode 100644 index 000000000..55cb60b13 --- /dev/null +++ b/Test/spv.430.vert @@ -0,0 +1,32 @@ +#version 430 core + +layout(location = 4) uniform vec4 uv4; + +out gl_PerVertex { + float gl_ClipDistance[]; +}; + +const float cx = 4.20; +const float dx = 4.20; +in vec4 bad[10]; +highp in vec4 badorder; +out invariant vec4 badorder2; +out flat vec4 badorder3; + +uniform float f; + +void main() +{ + gl_ClipDistance[2] = 3.7; + + if (bad[0].x == cx.x) + badorder3 = bad[0]; + + gl_ClipDistance[0] = f.x; +} + +layout(binding = 3) uniform boundblock { int aoeu; } boundInst; +layout(binding = 7) uniform anonblock { int aoeu; } ; +layout(binding = 4) uniform sampler2D sampb1; +layout(binding = 5) uniform sampler2D sampb2[10]; +layout(binding = 31) uniform sampler2D sampb4; diff --git a/Test/spv.Operations.frag b/Test/spv.Operations.frag new file mode 100644 index 000000000..820048f22 --- /dev/null +++ b/Test/spv.Operations.frag @@ -0,0 +1,166 @@ +#version 130 + +uniform ivec4 uiv4; +uniform vec4 uv4; +uniform bool ub; +uniform bvec4 ub41, ub42; +uniform float uf; +uniform int ui; + +#ifdef TEST_POST_110 +uniform uvec4 uuv4; +uniform unsigned int uui; +#endif + +void main() +{ + vec4 v; + float f; + bool b; + bvec4 bv4; + int i; +#ifdef TEST_POST_110 + uint u; +#endif + + // floating point + v = radians(uv4); + v += degrees(v); + v += (i = ui*ui, sin(v)); + v += cos(v); + v += tan(v); + v += asin(v); + v += acos(v); + + v += atan(v); + v += sinh(v); + v += cosh(v); + v += tanh(v); + v += asinh(v); + v += acosh(v); + v += atanh(v); + + v += pow(v, v); + v += exp(v); + v += log(v); + v += exp2(v); + v += log2(v); + v += sqrt(v); + v += inversesqrt(v); + v += abs(v); + v += sign(v); + v += floor(v); + +#ifdef TEST_POST_110 + v += trunc(v); + v += round(v); + v += roundEven(v); +#endif + + v += ceil(v); + v += fract(v); + v += mod(v, v); + v += mod(v, v.x); + +#ifdef TEST_POST_110 + v += modf(v, v); +#endif + + v += min(v, uv4); + v += max(v, uv4); + v += clamp(v, uv4, uv4); + v += mix(v,v,v); + +#ifdef TEST_POST_110 + v += mix(v,v,ub); + v += intBitsToFloat(v); + v += uintBitsToFloat(v); + v += fma(v); + v += frexp(v); + v += ldexp(v); + v += unpackUnorm2x16(v); + v += unpackUnorm4x8(v); + v += unpackSnorm4x8(v); +#endif + + v += step(v,v); + v += smoothstep(v,v,v); + v += step(uf,v); + v += smoothstep(uf,uf,v); + v += normalize(v); + v += faceforward(v, v, v); + v += reflect(v, v); + v += refract(v, v, uf); + v += dFdx(v); + v += dFdy(v); + v += fwidth(v); + //noise*(v); + +#ifdef TEST_POST_110 + // signed integer + i += abs(ui); + i += sign(i); + i += min(i, ui); + i += max(i, ui); + i += clamp(i, ui, ui); + + floatsBitsToInt(v); + packUnorm2x16(v); + packUnorm4x8(v); + packSnorm4x8(v); + + // unsigned integer + u = abs(uui); + u += sign(u); + u += min(u, uui); + u += max(u, uui); + u += clamp(u, uui, uui); + u += floatsBitToInt(v); + u += packUnorm2x16(v); + u += packUnorm4x8(v); + u += packSnorm4x8(v); + u += floatBitsToUInt(v); +#endif + + // bool +#ifdef TEST_POST_110 + b = isnan(uf); + b = isinf(v); +#endif + b = any(lessThan(v, uv4)); + b = (b && any(lessThanEqual(v, uv4))); + b = (b && any(greaterThan(v, uv4))); + b = (b && any(greaterThanEqual(v, uv4))); + b = (b && any(equal(ub41, ub42))); + b = (b && any(notEqual(ub41, ub42))); + b = (b && any(ub41)); + b = (b && all(ub41)); + b = (b && any(not(ub41))); + + i = ((i + ui) * i - ui) / i; + i = i % ui; + if (i == ui || i != ui && i == ui ^^ i != 2) + ++i; + + f = ((uf + uf) * uf - uf) / uf; + + f += length(v); + f += distance(v, v); + f += dot(v, v); + f += dot(f, uf); + f += cross(v.xyz, v.xyz).x; + + if (f == uf || f != uf && f != 2.0) + ++f; + + i &= ui; + i |= 0x42; + i ^= ui; + i %= 17; + i >>= 2; + i <<= ui; + i = ~i; + b = !b; + + gl_FragColor = b ? vec4(i) + vec4(f) + v : v; +} diff --git a/Test/spv.aggOps.frag b/Test/spv.aggOps.frag new file mode 100644 index 000000000..a0450dca9 --- /dev/null +++ b/Test/spv.aggOps.frag @@ -0,0 +1,51 @@ +#version 130 + +uniform sampler2D sampler; +varying mediump vec2 coord; + +varying vec4 u, w; + +struct s1 { + int i; + float f; +}; + +struct s2 { + int i; + float f; + s1 s1_1; +}; + +uniform s1 foo1; +uniform s2 foo2a; +uniform s2 foo2b; + +void main() +{ + vec4 v; + s1 a[3], b[3]; + a = s1[3](s1(int(u.x), u.y), s1(int(u.z), u.w), s1(14, 14.0)); + b = s1[3](s1(17, 17.0), s1(int(w.x), w.y), s1(int(w.z), w.w)); + + if (foo2a == foo2b) + v = texture2D(sampler, coord); + else + v = texture2D(sampler, 2.0*coord); + + if (u == v) + v *= 3.0; + + if (u != v) + v *= 4.0; + + if (coord == v.yw) + v *= 5.0; + + if (a == b) + v *= 6.0; + + if (a != b) + v *= 7.0; + + gl_FragColor = v; +} diff --git a/Test/spv.always-discard.frag b/Test/spv.always-discard.frag new file mode 100644 index 000000000..cea4ceec6 --- /dev/null +++ b/Test/spv.always-discard.frag @@ -0,0 +1,36 @@ +#version 110 +varying vec2 tex_coord; + +void main (void) +{ + vec4 white = vec4(1.0); + vec4 black = vec4(0.2); + vec4 color = white; + + // First, cut out our circle + float x = tex_coord.x*2.0 - 1.0; + float y = tex_coord.y*2.0 - 1.0; + + float radius = sqrt(x*x + y*y); + if (radius > 1.0) { + if (radius > 1.1) { + ++color; + } + + gl_FragColor = color; + + if (radius > 1.2) { + ++color; + } + + } + + discard; + + // If we're near an edge, darken us a tiny bit + if (radius >= 0.75) + color -= abs(pow(radius, 16.0)/2.0); + + gl_FragColor = color; + +} diff --git a/Test/spv.always-discard2.frag b/Test/spv.always-discard2.frag new file mode 100644 index 000000000..a619369d6 --- /dev/null +++ b/Test/spv.always-discard2.frag @@ -0,0 +1,19 @@ +#version 110 +varying vec2 tex_coord; + +void main (void) +{ + vec4 white = vec4(1.0); + vec4 black = vec4(0.2); + vec4 color = white; + + // First, cut out our circle + float x = tex_coord.x*2.0 - 1.0; + float y = tex_coord.y*2.0 - 1.0; + + discard; + + + gl_FragColor = color; + +} diff --git a/Test/spv.conditionalDiscard.frag b/Test/spv.conditionalDiscard.frag new file mode 100644 index 000000000..58e6fa5d5 --- /dev/null +++ b/Test/spv.conditionalDiscard.frag @@ -0,0 +1,14 @@ +#version 110 + +uniform sampler2D tex; +varying vec2 coord; + +void main (void) +{ + vec4 v = texture2D(tex, coord); + + if (v == vec4(0.1,0.2,0.3,0.4)) + discard; + + gl_FragColor = v; +} diff --git a/Test/spv.conversion.frag b/Test/spv.conversion.frag new file mode 100644 index 000000000..f17293b89 --- /dev/null +++ b/Test/spv.conversion.frag @@ -0,0 +1,112 @@ +#version 130 + +uniform bool u_b; +uniform bvec2 u_b2; +uniform bvec3 u_b3; +uniform bvec4 u_b4; + +uniform int u_i; +uniform ivec2 u_i2; +uniform ivec3 u_i3; +uniform ivec4 u_i4; + +uniform float u_f; +uniform vec2 u_f2; +uniform vec3 u_f3; +uniform vec4 u_f4; + +uniform bool i_b; +uniform bvec2 i_b2; +uniform bvec3 i_b3; +uniform bvec4 i_b4; + +flat in int i_i; +flat in ivec2 i_i2; +flat in ivec3 i_i3; +flat in ivec4 i_i4; + +in float i_f; +in vec2 i_f2; +in vec3 i_f3; +in vec4 i_f4; + +void main() +{ + bool b = bool(u_i) ^^ bool(u_f); + bvec2 b2 = bvec2(u_i, u_f); + bvec3 b3 = bvec3(u_i, u_f, i_i); + bvec4 b4 = bvec4(u_i, u_f, i_i, i_f); + + int i = int(u_f) + int(b); + ivec2 i2 = ivec2(u_f2) + ivec2(b2); + ivec3 i3 = ivec3(u_f3) + ivec3(b3); + ivec4 i4 = ivec4(u_f4) + ivec4(b4); + + float f = i; + vec2 f2 = i2; + vec3 f3 = i3; + vec4 f4 = i4; + + f += (float(i) + float(b)); + f2 -= vec2(i2) + vec2(b2); + f3 /= vec3(i3) + vec3(b3); + f4 += vec4(i4) + vec4(b4); + + f4 += vec4(bvec4(i_i4)); + f4 += vec4(bvec4(u_f4)); + + f += f - i; + f2 += vec2(f, i) + i2; + f3 += i3 + vec3(f, i, f); + f4 += vec4(b, i, f, i) + i4; + + f2 += vec2(f, i) * i; + f3 += vec3(f, i, f) + i; + f4 += i - vec4(b, i, f, i); + + i2 += ivec2(f, i); + i3 += ivec3(f, i, f); + i4 += ivec4(b, i, f, i); + + if (f < i || i < f || + f2 == i2 || + i3 != f3) + f = (b ? i : f2.x) + (b2.x ? f3.x : i2.y); + + gl_FragColor = + b || + b2.x || + b2.y || + b3.x || + b3.y || + b3.z || + b4.x || + b4.y || + b4.z || + b4.w ? vec4( + i + + i2.x + + i2.y + + i3.x + + i3.y + + i3.z + + i4.x + + i4.y + + i4.z + + i4.w + + f + + f2.x + + f2.y + + f3.x + + f3.y + + f3.z + + f4.x + + f4.y + + f4.z + + f4.w) : vec4(1.0); + + // with constants... + ivec4 cv2 = ivec4(1.0); + bvec4 cv5 = bvec4(cv2); + gl_FragColor += float(cv5); +} diff --git a/Test/spv.dataOut.frag b/Test/spv.dataOut.frag new file mode 100644 index 000000000..258f534ea --- /dev/null +++ b/Test/spv.dataOut.frag @@ -0,0 +1,8 @@ +#version 130 + +varying vec4 Color; + +void main() +{ + gl_FragData[1] = Color; +} diff --git a/Test/spv.dataOutIndirect.frag b/Test/spv.dataOutIndirect.frag new file mode 100644 index 000000000..d6b8667d7 --- /dev/null +++ b/Test/spv.dataOutIndirect.frag @@ -0,0 +1,10 @@ +#version 130 + +varying vec4 Color; + +uniform int i; + +void main() +{ + gl_FragData[i] = Color; +} diff --git a/Test/spv.dataOutIndirect.vert b/Test/spv.dataOutIndirect.vert new file mode 100644 index 000000000..7c647fc0a --- /dev/null +++ b/Test/spv.dataOutIndirect.vert @@ -0,0 +1,12 @@ +#version 130 + +attribute vec4 color; +varying vec4 colorOut[6]; + +void main() +{ + for (int i = 1; i < 5; ++i) + colorOut[i] = color; + + gl_Position = colorOut[2]; +} diff --git a/Test/spv.deepRvalue.frag b/Test/spv.deepRvalue.frag new file mode 100644 index 000000000..4d8808667 --- /dev/null +++ b/Test/spv.deepRvalue.frag @@ -0,0 +1,36 @@ +#version 120 + +uniform sampler2D sampler; + +vec4 v1 = vec4(2.0, 3.0, 5.0, 7.0); +vec4 v2 = vec4(11.0, 13.0, 17.0, 19.0); +vec4 v3 = vec4(23.0, 29.0, 31.0, 37.0); +vec4 v4 = vec4(41.0, 43.0, 47.0, 53.0); + +struct str { + int a; + vec2 b[3]; + bool c; +}; + +void main() +{ + mat4 m = mat4(v1, v2, v3, v4); + + mat4 mm = matrixCompMult(m, m); + float f = mm[1].w; // should be 19 * 19 = 361 + + // do a deep access to a spontaneous r-value + float g = matrixCompMult(m, m)[2].y; // should be 29 * 29 = 841 + + float h = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true).b[1][1]; // should be 5.0 + + float i = texture2D(sampler, vec2(0.5,0.5)).y; + + i += (i > 0.1 ? v1 : v2)[3]; + + str t; + i += (t = str(1, vec2[3](vec2(2.0, 3.0), vec2(4.0, 5.0), vec2(6.0, 7.0)), true)).b[2].y; // should be 7.0 + + gl_FragColor = vec4(f, g, h, i); +} diff --git a/Test/spv.depthOut.frag b/Test/spv.depthOut.frag new file mode 100644 index 000000000..5a8927101 --- /dev/null +++ b/Test/spv.depthOut.frag @@ -0,0 +1,10 @@ +#version 130 + +varying vec4 Color; +varying float Depth; + +void main() +{ + gl_FragDepth = Depth; + gl_FragColor = Color; +} diff --git a/Test/spv.discard-dce.frag b/Test/spv.discard-dce.frag new file mode 100644 index 000000000..f2fef4d11 --- /dev/null +++ b/Test/spv.discard-dce.frag @@ -0,0 +1,35 @@ +#version 110 +varying vec2 tex_coord; + +void main (void) +{ + vec4 white = vec4(1.0); + vec4 black = vec4(0.2); + vec4 color = white; + + // First, cut out our circle + float x = tex_coord.x*2.0 - 1.0; + float y = tex_coord.y*2.0 - 1.0; + + float radius = sqrt(x*x + y*y); + if (radius > 1.0) { + if (radius > 1.1) { + ++color; + } + + gl_FragColor = color; + + if (radius > 1.2) { + ++color; + } + + discard; + } + + // If we're near an edge, darken us a tiny bit + if (radius >= 0.75) + color -= abs(pow(radius, 16.0)/2.0); + + gl_FragColor = color; + +} diff --git a/Test/spv.doWhileLoop.frag b/Test/spv.doWhileLoop.frag new file mode 100644 index 000000000..3d6f93c51 --- /dev/null +++ b/Test/spv.doWhileLoop.frag @@ -0,0 +1,16 @@ +#version 110 + +uniform vec4 bigColor; +varying vec4 BaseColor; +uniform float d; + +void main() +{ + vec4 color = BaseColor; + + do { + color += bigColor; + } while (color.x < d); + + gl_FragColor = color; +} diff --git a/Test/spv.earlyReturnDiscard.frag b/Test/spv.earlyReturnDiscard.frag new file mode 100644 index 000000000..718ea72f3 --- /dev/null +++ b/Test/spv.earlyReturnDiscard.frag @@ -0,0 +1,102 @@ +#version 110 + +uniform float d; +uniform vec4 bigColor, smallColor; +uniform vec4 otherColor; + +varying float c; + +uniform float threshhold; +uniform float threshhold2; +uniform float threshhold3; + +uniform float minimum; + +varying vec4 BaseColor; + +uniform bool b; + +void main() +{ + vec4 color = BaseColor; + vec4 color2; + + color2 = otherColor; + + if (c > d) + color += bigColor; + else + color += smallColor; + + if (color.z < minimum) + return; + + color.z++; + + if (color.z > threshhold) + discard; + + color++; + + // Two path, different rest + if (color.w > threshhold2) { + if (color.z > threshhold2) + return; + else if (b) + color.z++; + else { + if (color.x < minimum) { + discard; + } else { + color++; + } + } + } else { + if (b) + discard; + else + return; + } + + + // // Two path, shared rest + // if (color.w > threshhold2) { + // if (color.z > threshhold2) + // return; + // else if (b) + // color++; + // else { + // if (color.x < minimum) { + // discard; + // } else { + // color++; + // } + // } + // } else { + // if (b) + // discard; + // else + // return; + // } + + + // // One path + // if (color.w > threshhold2) { + // if (color.z > threshhold2) + // return; + // else { + // if (color.x < minimum) { + // discard; + // } else { + // color++; + // } + // } + // } else { + // if (b) + // discard; + // else + // return; + // } + + gl_FragColor = color * color2; +} diff --git a/Test/spv.flowControl.frag b/Test/spv.flowControl.frag new file mode 100644 index 000000000..eaa6fb1da --- /dev/null +++ b/Test/spv.flowControl.frag @@ -0,0 +1,23 @@ +#version 120 + +uniform float d; +uniform vec4 bigColor, smallColor; +uniform vec4 otherColor; + +varying float c; +varying vec4 BaseColor; + +void main() +{ + vec4 color = BaseColor; + vec4 color2; + + color2 = otherColor; + + if (c > d) + color += bigColor; + else + color += smallColor; + + gl_FragColor = color * color2; +} diff --git a/Test/spv.forLoop.frag b/Test/spv.forLoop.frag new file mode 100644 index 000000000..117ecad15 --- /dev/null +++ b/Test/spv.forLoop.frag @@ -0,0 +1,41 @@ +#version 130 + +uniform vec4 bigColor; +in vec4 BaseColor; +in float f; + +uniform int Count; +uniform uvec4 v4; + +void main() +{ + vec4 color = BaseColor; + + for (int i = 0; i < Count; ++i) { + color += bigColor; + } + + gl_FragColor = color; + + float sum = 0.0; + for (int i = 0; i < 4; ++i) + sum += v4[i]; + + vec4 tv4; + + for (int i = 0; i < 4; ++i) + tv4[i] = v4[i] * 4u; + + gl_FragColor += vec4(sum) + tv4; + + vec4 r; + r.xyz = BaseColor.xyz; + + for (int i = 0; i < Count; ++i) + r.w = f; + + gl_FragColor.xyz += r.xyz; + + for (int i = 0; i < 16; i += 4) + gl_FragColor *= f; +} diff --git a/Test/spv.forwardFun.frag b/Test/spv.forwardFun.frag new file mode 100644 index 000000000..eb105829c --- /dev/null +++ b/Test/spv.forwardFun.frag @@ -0,0 +1,39 @@ +#version 100 + +precision mediump float; + +uniform vec4 bigColor; +varying vec4 BaseColor; +uniform float d; + +void bar(); +float foo(vec4); +float unreachableReturn(); + +void main() +{ + vec4 color = vec4(foo(BaseColor)); + + bar(); + float f = unreachableReturn(); + + gl_FragColor = color * f; +} + +void bar() +{ +} + +float unreachableReturn() +{ + bar(); + if (d < 4.2) + return 1.2; + else + return 4.5; +} + +float foo(vec4 bar) +{ + return bar.x + bar.y; +} diff --git a/Test/spv.functionCall.frag b/Test/spv.functionCall.frag new file mode 100644 index 000000000..e1fc0e07f --- /dev/null +++ b/Test/spv.functionCall.frag @@ -0,0 +1,44 @@ +#version 130 + +uniform vec4 bigColor; +varying vec4 BaseColor; +uniform float d; + +float h = 0.0; + +float foo(vec4 bar) +{ + return bar.x + bar.y; +} + +void bar() +{ +} + +float unreachableReturn() +{ + if (d < 4.2) + return 1.2; + else + return 4.5; + // might be another return inserted here by builders, has to be correct type +} + +float missingReturn() +{ + if (d < 4.5) { + h = d; + return 3.9; + } +} + +void main() +{ + vec4 color = vec4(foo(BaseColor)); + + bar(); + float f = unreachableReturn(); + float g = missingReturn(); + + gl_FragColor = color * f * h; +} diff --git a/Test/spv.functionSemantics.frag b/Test/spv.functionSemantics.frag new file mode 100644 index 000000000..67ff5f516 --- /dev/null +++ b/Test/spv.functionSemantics.frag @@ -0,0 +1,63 @@ +#version 400 + +uniform float u; + +int foo(int a, const int b, in int c, const in int d, out int e, inout int f) +{ + int sum = a + b + c + d + f; // no e, it is out only + // sum should be 47 now + + a *= 64; + // no b, it is read only + c *= 64; + // no d, it is read only + e = 64 * 16; // e starts undefined + f *= 64; + + sum += a + 64 * b + c + 64 * d + e + f; // everything has a value now, totaling of 64(1+2+4+8+16+32) = 64*63 = 4032 + // sum should be 4032 + 47 = 4079 + + return sum; +} + +int foo2(float a, vec3 b, out int r) +{ + r = int(3.0 * a); + return int(5.0 * b.y); +} + +int foo3() +{ + if (u > 3.2) { + discard; + return 1000000; + } + + return 2000000; +} + +void main() +{ + int e; + int t = 2; + struct s { + ivec4 t; + } f; + f.t.y = 32; + + // test the different qualifers + int color = foo(1, 2, t+t, 8, e, f.t.y); + + color += 128 * (e + f.t.y); // right side should be 128(64(16 + 32)) = 393216 + // sum should be 4079 + 393216 = 397295 + + // test conversions + float arg; + float ret; + ret = foo2(4, ivec3(1,2,3), arg); // ret = 10, param = 12.0 + color += int(ret + arg); // adds 22, for total of 397317 + + color += foo3(); // theoretically, add 2000000, for total of 2397317 + + gl_FragColor = vec4(color); +} diff --git a/Test/spv.length.frag b/Test/spv.length.frag new file mode 100644 index 000000000..74c286f33 --- /dev/null +++ b/Test/spv.length.frag @@ -0,0 +1,18 @@ +#version 120 + +uniform vec4 u[3]; + +#ifdef TEST_POST_110 +varying vec2 v[]; +#else +varying vec2 v[2]; +#endif + +void main() +{ + int a[5]; + + vec2 t = v[0] + v[1]; + + gl_FragColor = vec4(u.length() * v.length() * a.length()); +} diff --git a/Test/spv.localAggregates.frag b/Test/spv.localAggregates.frag new file mode 100644 index 000000000..d8a7fb18d --- /dev/null +++ b/Test/spv.localAggregates.frag @@ -0,0 +1,72 @@ +#version 130 + +uniform sampler2D sampler; +varying vec2 coord; +varying vec4 color; + +struct s1 { + int i; + float f; +}; + +struct s2 { + int i; + float f; + s1 s1_1; + vec4 bleh; +}; + +struct s3 { + s2 s2_1; + int i; + float f; + s1 s1_1; +}; + + +uniform s1 foo; +uniform s2 foo2; +uniform s3 foo3; + +uniform float[16] uFloatArray; +uniform int condition; + +void main() +{ + s2 locals2; + s3 locals3; + float localFArray[16]; + int localIArray[8]; + + locals2 = foo3.s2_1; + + if (foo3.s2_1.i > 0) { + locals2.s1_1.f = 1.0; + localFArray[4] = coord.x; + localIArray[2] = foo3.s2_1.i; + } else { + locals2.s1_1.f = coord.x; + localFArray[4] = 1.0; + localIArray[2] = 0; + } + + if (localIArray[2] == 0) + ++localFArray[4]; + + float localArray[16]; + int x = 5; + localArray[x] = coord.x; + + float[16] a; + + for (int i = 0; i < 16; i++) + a[i] = 0.0; + + if (condition == 1) + a = localArray; + + locals2.bleh = color; + locals2.bleh.z = coord.y; + + gl_FragColor = locals2.bleh * (localFArray[4] + locals2.s1_1.f + localArray[x] + a[x]) * texture2D(sampler, coord); +} diff --git a/Test/spv.loops.frag b/Test/spv.loops.frag new file mode 100644 index 000000000..ce2d2a0b2 --- /dev/null +++ b/Test/spv.loops.frag @@ -0,0 +1,320 @@ +#version 130 +uniform vec4 bigColor; +uniform vec4 bigColor1_1; +uniform vec4 bigColor1_2; +uniform vec4 bigColor1_3; +uniform vec4 bigColor2; +uniform vec4 bigColor3; +uniform vec4 bigColor4; +uniform vec4 bigColor5; +uniform vec4 bigColor6; +uniform vec4 bigColor7; +uniform vec4 bigColor8; + +varying vec4 BaseColor; + +uniform float d; +uniform float d2; +uniform float d3; +uniform float d4; +uniform float d5; +uniform float d6; +uniform float d7; +uniform float d8; +uniform float d9; +uniform float d10; +uniform float d11; +uniform float d12; +uniform float d13; +uniform float d14; +uniform float d15; +uniform float d16; +uniform float d17; +uniform float d18; +uniform float d19; +uniform float d20; +uniform float d21; +uniform float d22; +uniform float d23; +uniform float d24; +uniform float d25; +uniform float d26; +uniform float d27; +uniform float d28; +uniform float d29; +uniform float d30; +uniform float d31; +uniform float d32; +uniform float d33; +uniform float d34; + +uniform int Count; + +void main() +{ + vec4 color = BaseColor; + + // Not a real loop + while (true) { + if (color.x < 0.33) { + color += vec4(0.33); + break; + } + if (color.x < 0.66) { + color += vec4(0.66); + break; + } + + color += vec4(0.33); + break; + } + + // While + while (color.x < d) { + color += bigColor; + } + + // While (latchy) + while (color.z < d) { + color += bigColor1_1; + if (color.w < d) + continue; + + color += bigColor1_1; + } + + // While (constant) + while (color.x < 42.0) { + ++color; + } + + // While (complicated-conditional) + while (color.w < d2 && color.y < d3) { + color += bigColor1_2; + } + + // While (multi-exit) + while (color.z < d3) { + color += bigColor1_3; + if (color.y < d4) + break; + color += bigColor1_3; + } + + // For (dynamic) + for (int i = 0; i < Count; ++i) { + color += bigColor2; + } + + // Do while + do { + color += bigColor3; + } while (color.x < d2); + + // For (static) + for (int i = 0; i < 42; ++i) { + color.z += d3; + } + + // For (static) flow-control + for (int i = 0; i < 100; ++i) { + if (color.z < 20.0) + color.x++; + else + color.y++; + if (color.w < 20.0) + if (color.z > color.y) + 0; // do nothing + } + + // For (static) flow-control with latch merge + for (int i = 0; i < 120; ++i) { + if (color.z < 20.0) + color.x++; + else + color.y++; + } + + // For (static) latchy + for (int i = 0; i < 42; ++i) { + color.z += d3; + if (color.x < d4) + continue; + ++color.w; + } + + // For (static) multi-exit + for (int i = 0; i < 42; ++i) { + color.z += d3; + if (color.x < d4) + break; + ++color.w; + } + + // Latchy + do { + color += bigColor4; + if (color.x < d4) + continue; + if (color.y < d4) + color.y += d4; + else + color.x += d4; + } while (color.z < d4); + + // Do while flow control + do { + color += bigColor5; + if (color.y < d5) + color.y += d5; + } while (color.x < d5); + + // If then loop + if (color.x < d6) { + while (color.y < d6) + color += bigColor6; + } else { + while (color.z < d6) + color.z += bigColor6.z; + } + + // If then multi-exit + if (color.x < d6) { + while (color.y < d6) { + color += bigColor6; + if (d7 < 1.0) + break; + } + + } else { + while (color.z < d6) + color.z += bigColor6.z; + } + + + // Multi-exit + do { + if (d7 < 0.0) + break; + + color += bigColor7; + + if (d7 < 1.0) { + color.z++; + break; + } + + color += BaseColor; + + } while (true); + + + // Multi-exit2 + do { + // invariant conditional break at the top of the loop. This could be a + // situation where unswitching the loop has no real increases in code + // size. + if (d8 < 0.0) + break; + + color += bigColor7; + + if (d8 < 1.0) { + color.z++; + if (d8 < 2.0) { + color.y++; + } else { + color.x++; + } + break; + } + + color += BaseColor; + + } while (color.z < d8); + + // Deep exit + while (color.w < d9) { + if (d9 > d8) { + if (color.x <= d7) { + if (color.z == 5.0) + color.w++; + else + break; + } + } + + } + + // No end loop-back. + while (color.z < d10) { + color.y++; + if (color.y < d11) { + color.z++; + if (color.w < d12) + color.w++; + else + color.x++; + continue; + } + + color++; + break; + } + + // Multi-continue + while (color.x < 10.0) { + color += bigColor8; + + if (color.z < d8) + if (color.w < d6) + continue; + + color.y += bigColor8.x; + } + + color++; + gl_FragColor = color; + + // Early Return + while (color.x < d14) { + if (color.y < d15) { + return; + } + else + color++; + } + + color++; + + while (color.w < d16) { + color.w++; + } + + + // While (complicated-conditional) + while (color.w < d2 && color.y < d3) { + color += bigColor1_2; + if (color.z < d3) + return; + } + + + do { + if (color.y < d18) + return; + color++; + } while (color.x < d17); + + // Early Discard + while (color.y < d16) { + if (color.w < d16) { + discard; + } else + color++; + } + + color++; + + gl_FragColor = color; +} diff --git a/Test/spv.loopsArtificial.frag b/Test/spv.loopsArtificial.frag new file mode 100644 index 000000000..2f196af8e --- /dev/null +++ b/Test/spv.loopsArtificial.frag @@ -0,0 +1,96 @@ +#version 130 +uniform vec4 bigColor; +uniform vec4 bigColor1_1; +uniform vec4 bigColor1_2; +uniform vec4 bigColor1_3; +uniform vec4 bigColor2; +uniform vec4 bigColor3; +uniform vec4 bigColor4; +uniform vec4 bigColor5; +uniform vec4 bigColor6; +uniform vec4 bigColor7; +uniform vec4 bigColor8; + +varying vec4 BaseColor; + +uniform float d; +uniform float d2; +uniform float d3; +uniform float d4; +uniform float d5; +uniform float d6; +uniform float d7; +uniform float d8; +uniform float d9; +uniform float d10; +uniform float d11; +uniform float d12; +uniform float d13; +uniform float d14; +uniform float d15; +uniform float d16; +uniform float d17; +uniform float d18; +uniform float d19; +uniform float d20; +uniform float d21; +uniform float d22; +uniform float d23; +uniform float d24; +uniform float d25; +uniform float d26; +uniform float d27; +uniform float d28; +uniform float d29; +uniform float d30; +uniform float d31; +uniform float d32; +uniform float d33; +uniform float d34; + +uniform int Count; + +void main() +{ + vec4 color = BaseColor; + + // Latchy2 + do { + color += bigColor4; + if (color.x < d4) { + color.z += 2.0; + if (color.z < d4) { + color.x++; + continue; + } + } + if (color.y < d4) + color.y += d4; + else + color.x += d4; + } while (color.z < d4); + + // Immediate dominator + while (color.w < d13) { + if (color.z < d13) + color++; + else + color--; + // code from Latchy 2 + color += bigColor4; + if (color.x < d4) { + color.z += 2.0; + if (color.z < d4) { + color.x++; + continue; + } + } + if (color.y < d4) + color.y += d4; + else + color.x += d4; + } + + color++; + gl_FragColor = color; +} diff --git a/Test/spv.matFun.vert b/Test/spv.matFun.vert new file mode 100644 index 000000000..e59499644 --- /dev/null +++ b/Test/spv.matFun.vert @@ -0,0 +1,26 @@ +#version 130 + +uniform mat4 m4; +uniform mat3 m3; + +in vec3 v3; + +vec3 xf(mat3 m, vec3 v) +{ + return v * m; +} + +mat3 Mat3(mat4 m) +{ + return mat3(m[0].xyz, m[1].xyz, m[2].xyz); +} + +vec3 mxv(mat4 m4, vec3 v) +{ + return v * Mat3(m4); +} + +void main() +{ + gl_Position = vec4(mxv(m4, v3) + xf(m3, v3), 1.0); +} diff --git a/Test/spv.matrix.frag b/Test/spv.matrix.frag new file mode 100644 index 000000000..150e0434f --- /dev/null +++ b/Test/spv.matrix.frag @@ -0,0 +1,55 @@ +#version 130 + +//#define TEST_POST_110 + +uniform mat3 colorTransform; +varying vec3 Color; +uniform mat4 m, n; + +#ifdef TEST_POST_110 +uniform mat4x3 um43; +uniform mat3x4 un34; +#else +uniform mat4 um43; +uniform mat4 un34; +#endif + +varying vec4 v; + +#ifdef TEST_POST_110 +varying vec3 u; +#else +varying vec4 u; +#endif + +void main() +{ + gl_FragColor = vec4(un34[1]); + gl_FragColor += vec4(Color * colorTransform, 1.0); + + if (m != n) + gl_FragColor += v; + else { + gl_FragColor += m * v; + gl_FragColor += v * (m - n); + } + +#ifdef TEST_POST_110 + mat3x4 m34 = outerProduct(v, u); + m34 += mat4(v.x); + m34 += mat4(u, u.x, u, u.x, u, u.x, u.x); +#else + mat4 m34 = mat4(v.x*u.x, v.x*u.y, v.x*u.z, v.x*u.w, + v.y*u.x, v.y*u.y, v.y*u.z, v.y*u.w, + v.z*u.x, v.z*u.y, v.z*u.z, v.z*u.w, + v.w*u.x, v.w*u.y, v.w*u.z, v.w*u.w); + m34 += mat4(v.x); + m34 += mat4(u, u.x, u, u.x, u, u.x, u.x); + +#endif + + if (m34 == un34) + gl_FragColor += m34 * u; + else + gl_FragColor += (un34 * um43) * v; +} diff --git a/Test/spv.matrix2.frag b/Test/spv.matrix2.frag new file mode 100644 index 000000000..eb2c53c2e --- /dev/null +++ b/Test/spv.matrix2.frag @@ -0,0 +1,50 @@ +#version 150 + +uniform mat3 colorTransform; +varying vec3 Color; +uniform mat4 m, n; + +uniform mat4x3 um43; +uniform mat3x4 un34; +uniform mat2 um2; +uniform mat3 um3; +uniform mat4 um4; + +varying vec4 v; + +varying vec3 u; + +out vec4 FragColor; + +void main() +{ + mat3x4 m34 = outerProduct(v, u); + + m34 += mat3x4(4.3); + + FragColor = vec4(Color, 1.0); + FragColor *= vec4(FragColor * m34, 1.0); + + m34 *= v.x; + + mat4 m44 = mat4(un34); + + m44 += m34 * um43; + + FragColor += (-m44) * v; + + FragColor *= matrixCompMult(m44, m44); + + m34 = transpose(um43); + FragColor *= vec4(FragColor * m34, 1.0); + FragColor *= vec4(determinant(um4)); + mat2 inv = inverse(um2); + FragColor *= vec4(inv[0][0], inv[1][0], inv[0][1], inv[1][1]); + mat3 inv3 = inverse(um3); + FragColor *= vec4(inv3[2][1]); + + mat4 inv4 = inverse(um4); + FragColor *= inv4; + + FragColor = vec4(FragColor * matrixCompMult(un34, un34), FragColor.w); +} diff --git a/Test/spv.newTexture.frag b/Test/spv.newTexture.frag new file mode 100644 index 000000000..5e3fb4315 --- /dev/null +++ b/Test/spv.newTexture.frag @@ -0,0 +1,68 @@ +#version 430 + +uniform sampler2D s2D; +uniform sampler3D s3D; +uniform samplerCube sCube; +uniform samplerCubeShadow sCubeShadow; +uniform sampler2DShadow s2DShadow; +uniform sampler2DArray s2DArray; +uniform sampler2DArrayShadow s2DArrayShadow; + +uniform isampler2D is2D; +uniform isampler3D is3D; +uniform isamplerCube isCube; +uniform isampler2DArray is2DArray; +uniform isampler2DMS is2Dms; + +uniform usampler2D us2D; +uniform usampler3D us3D; +uniform usamplerCube usCube; +uniform usampler2DArray us2DArray; + +in float c1D; +in vec2 c2D; +in vec3 c3D; +in vec4 c4D; + +flat in int ic1D; +flat in ivec2 ic2D; +flat in ivec3 ic3D; +flat in ivec4 ic4D; + +out vec4 FragData; + +void main() +{ + vec4 v = texture(s2D, c2D); + v += textureProj(s3D, c4D); + v += textureLod(s2DArray, c3D, 1.2); + v.y += textureOffset(s2DShadow, c3D, ivec2(3), c1D); + v += texelFetch(s3D, ic3D, ic1D); + v += texelFetchOffset(s2D, ic2D, 4, ic2D); + v.y += textureLodOffset(s2DShadow, c3D, c1D, ivec2(3)); + v += textureProjLodOffset(s2D, c3D, c1D, ivec2(3)); + v += textureGrad(sCube, c3D, c3D, c3D); + v.x += textureGradOffset(s2DArrayShadow, c4D, c2D, c2D, ivec2(3)); + v += textureProjGrad(s3D, c4D, c3D, c3D); + v += textureProjGradOffset(s2D, c3D, c2D, c2D, ivec2(3)); + + ivec4 iv = texture(is2D, c2D); + v += vec4(iv); + iv = textureProjOffset(is2D, c4D, ivec2(3)); + v += vec4(iv); + iv = textureProjLod(is2D, c3D, c1D); + v += vec4(iv); + iv = textureProjGrad(is2D, c3D, c2D, c2D); + v += vec4(iv); + iv = texture(is3D, c3D, 4.2); + v += vec4(iv); + iv = textureLod(isCube, c3D, c1D); + v += vec4(iv); + iv = texelFetch(is2DArray, ic3D, ic1D); + v += vec4(iv); + + ivec2 iv2 = textureSize(sCubeShadow, 2); + // iv2 += textureSize(is2Dms); + + FragData = v + vec4(iv2, 0.0, 0.0); +} diff --git a/Test/spv.nonSquare.vert b/Test/spv.nonSquare.vert new file mode 100644 index 000000000..4de21a0ca --- /dev/null +++ b/Test/spv.nonSquare.vert @@ -0,0 +1,25 @@ +#version 120 + +attribute vec3 v3; +attribute vec4 v4; + +uniform mat3x2 m32; + +const vec2 cv2 = vec2(10.0, 20.0); +const mat2x4 m24 = mat2x4(3.0); +const mat4x2 m42 = mat4x2(1.0, 2.0, + 3.0, 4.0, + 5.0, 6.0, + 7.0, 8.0); + +void main() +{ + mat2x3 m23; + vec2 a, b; + + a = v3 * m23; + b = m32 * v3; + + gl_Position = vec4(m23 * m32 * v3, m24[1][3]) + + (m24 * m42) * v4 + cv2 * m42 + m24 * cv2 + vec4(cv2[1], cv2.x, m42[2][1], m42[2][0]); +} diff --git a/Test/spv.precision.frag b/Test/spv.precision.frag new file mode 100644 index 000000000..0c6cb12ba --- /dev/null +++ b/Test/spv.precision.frag @@ -0,0 +1,50 @@ +#version 300 es +precision mediump float; +in lowp float lowfin; +in mediump float mediumfin; +in highp vec4 highfin; + +uniform highp int uniform_high; +uniform mediump int uniform_medium; +uniform lowp int uniform_low; +uniform bvec2 ub2; + +out mediump vec4 mediumfout; + +highp float global_highp; + +lowp vec2 foo(mediump vec3 mv3) +{ + return highfin.xy; +} + +bool boolfun(bvec2 bv2) +{ + return bv2 == bvec2(false, true); +} + +void main() +{ + lowp int sum = uniform_medium + uniform_high; + + sum += uniform_high; + sum += uniform_low; + + // test maxing precisions of args to get precision of builtin + lowp float arg1 = 3.2; + mediump float arg2 = 1023908.2; + lowp float d = distance(lowfin, mediumfin); + + global_highp = length(highfin); + + highp vec4 local_highp = vec4(global_highp); + + mediumfout = vec4(sin(d)) + arg2 + local_highp; + + sum += 4 + ((ivec2(uniform_low) * ivec2(uniform_high) + ivec2((/* comma operator */uniform_low, uniform_high)))).x; + + mediumfout += vec4(sum); + + if (boolfun(ub2)) + ++mediumfout; +} diff --git a/Test/spv.prepost.frag b/Test/spv.prepost.frag new file mode 100644 index 000000000..dfd456660 --- /dev/null +++ b/Test/spv.prepost.frag @@ -0,0 +1,38 @@ +#version 140 + +void main() +{ + struct s { + float y[5]; + } str; + + float t; + int index = 5; // all indexing is 4 + + str.y[4] = 2.0; // 2.0 + t = ++str.y[--index]; // 3.0 + str.y[4] += t; // 6.0 + t = str.y[4]--; // 5.0 (t = 6.0) + str.y[index++] += t; // 11.0 + --str.y[--index]; // 10.0 + + float x = str.y[4]; + ++x; + --x; + x++; + x--; + + // x is 10.0 + + float y = x * ++x; // 10 * 11 + float z = y * x--; // 110 * 11 + + // x is 10.0 + // z is 1210.0 + + vec4 v = vec4(1.0, 2.0, 3.0, 4.0); + v.y = v.z--; // (1,3,2,4) + v.x = --v.w; // (3,3,2,3) + + gl_FragColor = z * v;// (3630.0, 3630.0, 2420.0, 3630.0) +} diff --git a/Test/spv.qualifiers.vert b/Test/spv.qualifiers.vert new file mode 100644 index 000000000..96eb17db1 --- /dev/null +++ b/Test/spv.qualifiers.vert @@ -0,0 +1,19 @@ +#version 430 core + +in vec4 inV; + +centroid out vec4 outVc; +smooth out vec4 outVs; +flat out vec4 outVf; +noperspective out vec4 outVn; + +centroid noperspective out vec4 outVcn; + +void main() +{ + outVc = inV; + outVs = inV; + outVf = inV; + outVn = inV; + outVcn = inV; +} diff --git a/Test/spv.simpleFunctionCall.frag b/Test/spv.simpleFunctionCall.frag new file mode 100644 index 000000000..59f0ccd58 --- /dev/null +++ b/Test/spv.simpleFunctionCall.frag @@ -0,0 +1,15 @@ +#version 150 + +uniform vec4 bigColor; +varying vec4 BaseColor; +uniform float d; + +vec4 foo() +{ + return BaseColor; +} + +void main() +{ + gl_FragColor = foo(); +} diff --git a/Test/spv.simpleMat.vert b/Test/spv.simpleMat.vert new file mode 100644 index 000000000..afbc0db1f --- /dev/null +++ b/Test/spv.simpleMat.vert @@ -0,0 +1,19 @@ +#version 330 + +uniform mat4 mvp; + +in vec4 v; +in mat3 am3; +in mat4 arraym[3]; + +out float f; +out vec4 glPos; +//out mat4 mout[2]; + +void main() +{ + //needs complex output blocks to work: gl_Position = mvp * v; + glPos = mvp * v; + f = am3[2][1] + arraym[1][2][3]; + //mout[1] = arraym[2]; +} diff --git a/Test/spv.structAssignment.frag b/Test/spv.structAssignment.frag new file mode 100644 index 000000000..959f854ed --- /dev/null +++ b/Test/spv.structAssignment.frag @@ -0,0 +1,39 @@ +#version 130 + +uniform sampler2D sampler; +varying mediump vec2 coord; + +struct lunarStruct1 { + int i; + float f; +}; + +struct lunarStruct2 { + int i; + float f; + lunarStruct1 s1_1; +}; + +struct lunarStruct3 { + lunarStruct2 s2_1; + int i; + float f; + lunarStruct1 s1_1; +}; + + +uniform lunarStruct1 foo; +uniform lunarStruct2 foo2; +uniform lunarStruct3 foo3; + +void main() +{ + lunarStruct2 locals2; + + if (foo3.s2_1.i > 0) + locals2 = foo3.s2_1; + else + locals2 = foo2; + + gl_FragColor = locals2.s1_1.f * texture2D(sampler, coord); +} diff --git a/Test/spv.structDeref.frag b/Test/spv.structDeref.frag new file mode 100644 index 000000000..376e408f1 --- /dev/null +++ b/Test/spv.structDeref.frag @@ -0,0 +1,71 @@ +#version 130 + +uniform sampler2D sampler; +varying vec2 coord; + +struct s0 { + int i; +}; + +struct s00 { + s0 s0_0; +}; + +struct s1 { + int i; + float f; + s0 s0_1; +}; + +struct s2 { + int i; + float f; + s1 s1_1; +}; + +struct s3 { + s2[12] s2_1; + int i; + float f; + s1 s1_1; +}; + + +uniform s0 foo0; +uniform s1 foo1; +uniform s2 foo2; +uniform s3 foo3; + +uniform s00 foo00; + +void main() +{ + s0 locals0; + s2 locals2; + s00 locals00; + + float[6] fArray; + + s1[10] locals1Array; + + if (foo3.s2_1[9].i > 0) { + locals2.f = 1.0; + locals2.s1_1 = s1(0, 1.0, s0(0)); + fArray = float[6]( 0.0, 0.0, 0.0, 0.0, 0.0, 0.0); + locals1Array[6] = foo1; + locals0 = s0(0); + locals00 = s00(s0(0)); + } else { + locals2.f = coord.x; + locals2.s1_1 = s1(1, coord.y, foo0); + fArray = float[6]( 0.0, 1.0, 2.0, 3.0, 4.0, 5.0); + locals1Array[6] = locals2.s1_1; + locals0 = foo1.s0_1; + locals00 = foo00; + } + + if (locals0.i > 5) + locals0 = locals00.s0_0; + + gl_FragColor = (float(locals0.i) + locals1Array[6].f + fArray[3] + locals2.s1_1.f) * texture2D(sampler, coord); +} diff --git a/Test/spv.structure.frag b/Test/spv.structure.frag new file mode 100644 index 000000000..97e79cb01 --- /dev/null +++ b/Test/spv.structure.frag @@ -0,0 +1,31 @@ +#version 130 +uniform sampler2D sampler; +varying vec2 coord; + +struct lunarStruct1 { + int i; + float f[4]; + vec4 color[5]; +}; + +struct lunarStruct2 { + int i[5]; + float f; + lunarStruct1 s1_1[7]; +}; + +uniform lunarStruct1 foo; +uniform lunarStruct2 foo2[5]; + +void main() +{ + float scale = 0.0; + + if (foo2[3].i[4] > 0) + scale = foo2[3].s1_1[2].color[3].x; + else + scale = foo2[3].s1_1[2].f[3]; + + gl_FragColor = scale * texture2D(sampler, coord); +} + diff --git a/Test/spv.switch.frag b/Test/spv.switch.frag new file mode 100644 index 000000000..88b4b9815 --- /dev/null +++ b/Test/spv.switch.frag @@ -0,0 +1,133 @@ +#version 300 es +precision mediump float; +uniform int c, d; +in float x; +out float color; +uniform vec4 v; + +vec4 foo1(vec4 v1, vec4 v2, int i1) +{ + switch (i1) + { + case 0: + return v1; + case 2: + case 1: + return v2; + case 3: + return v1 * v2; + } + + return vec4(0.0); +} + +vec4 foo2(vec4 v1, vec4 v2, int i1) +{ + switch (i1) + { + case 0: + return v1; + case 2: + return vec4(1.0); + case 1: + return v2; + case 3: + return v1 * v2; + } + + return vec4(0.0); +} + +void main() +{ + float f; + int a[2]; + int local = c; + + switch(++local) + { + } + + switch (c) { + case 1: + f = sin(x); + break; + case 2: + f = cos(x); + break; + default: + f = tan(x); + } + + switch (c) { + case 1: + f += sin(x); + case 2: + f += cos(x); + break; + default: + f += tan(x); + } + + switch (c) { + case 1: + f += sin(x); + break; + case 2: + f += cos(x); + break; + } + + switch (c) { + case 1: + f += sin(x); + break; + case 2: + switch (d) { + case 1: + f += x * x * x; + break; + case 2: + f += x * x; + break; + } + break; + default: + f += tan(x); + } + + for (int i = 0; i < 10; ++i) { + switch (c) { + case 1: + f += sin(x); + for (int j = 20; j < 30; ++j) { + ++f; + if (f < 100.2) + break; + } + break; + case 2: + f += cos(x); + break; + break; + default: + f += tan(x); + } + + if (f < 3.43) + break; + } + + switch (c) { + case 1: + f += sin(x); + break; + case 2: + // test no statements at end + } + + color = f + float(local); + + color += foo1(v,v,c).y; + color += foo2(v,v,c).z; +} diff --git a/Test/spv.swizzle.frag b/Test/spv.swizzle.frag new file mode 100644 index 000000000..14f507ecd --- /dev/null +++ b/Test/spv.swizzle.frag @@ -0,0 +1,52 @@ +#version 110 + +uniform float blend; +uniform vec4 u; +uniform bool p; + +varying vec2 t; + +void main() +{ + float blendscale = 1.789; + + vec4 w = u; + vec4 w_undef; // test undef + vec4 w_dep = u; // test dependent swizzles + vec4 w_reorder = u; // test reordering + vec4 w2 = u; + vec4 w_flow = u; // test flowControl + + w_reorder.z = blendscale; + + w.wy = t; + + w_reorder.x = blendscale; + + w2.xyzw = u.zwxy; + + w_reorder.y = blendscale; + + w_dep.xy = w2.xz; + w_dep.zw = t; + + w_undef.xy = u.zw; + + if (p) + w_flow.x = t.x; + else + w_flow.x = t.y; + + gl_FragColor = mix(w_reorder, w_undef, w * w2 * w_dep * w_flow); + + vec2 c = t; + vec4 rep = vec4(0.0, 0.0, 0.0, 1.0); + + if (c.x < 0.0) + c.x *= -1.0; + + if (c.x <= 1.0) + rep.x = 3.4; + + gl_FragColor += rep; +} diff --git a/Test/spv.test.frag b/Test/spv.test.frag new file mode 100644 index 000000000..1b7d0e95e --- /dev/null +++ b/Test/spv.test.frag @@ -0,0 +1,22 @@ +#version 110 + +uniform sampler2D texSampler2D; +uniform sampler3D texSampler3D; + +uniform float blend; +uniform vec2 scale; +uniform vec4 u; + +varying vec2 t; +varying vec3 coords; + +void main() +{ + float blendscale = 1.789; + + vec4 v = texture2D(texSampler2D, (t + scale) / scale ).wzyx; + + vec4 w = texture3D(texSampler3D, coords) + v; + + gl_FragColor = mix(w, u, blend * blendscale); +} diff --git a/Test/spv.test.vert b/Test/spv.test.vert new file mode 100644 index 000000000..bbc6f1554 --- /dev/null +++ b/Test/spv.test.vert @@ -0,0 +1,14 @@ +#version 130 + +uniform mat4 transform; + +attribute vec4 position; +in vec2 uv_in; + +out vec2 uv; + +void main() +{ + uv = uv_in; + gl_Position = position + ftransform(); +} diff --git a/Test/spv.texture.frag b/Test/spv.texture.frag new file mode 100644 index 000000000..8e5391eef --- /dev/null +++ b/Test/spv.texture.frag @@ -0,0 +1,73 @@ +#version 130 + +uniform sampler1D texSampler1D; +uniform sampler2D texSampler2D; +uniform sampler3D texSampler3D; +uniform samplerCube texSamplerCube; +uniform sampler1DShadow shadowSampler1D; +uniform sampler2DShadow shadowSampler2D; + +uniform float blend; +uniform vec2 scale; +uniform vec4 u; + +varying vec2 t; +varying vec2 coords2D; + +void main() +{ + float blendscale = 1.789; + float bias = 2.0; + float lod = 3.0; + float proj = 2.0; + float coords1D = 1.789; + vec3 coords3D = vec3(1.789, 2.718, 3.453); + vec4 coords4D = vec4(1.789, 2.718, 3.453, 2.0); + vec4 color = vec4(0.0, 0.0, 0.0, 0.0); + + color += texture1D (texSampler1D, coords1D); + color += texture1D (texSampler1D, coords1D, bias); + color += texture1DProj(texSampler1D, coords2D); + color += texture1DProj(texSampler1D, coords4D); + color += texture1DProj(texSampler1D, coords2D, bias); + color += texture1DProj(texSampler1D, coords4D, bias); + + color += texture2D (texSampler2D, coords2D); + color += texture2D (texSampler2D, coords2D, bias); + color += texture2DProj (texSampler2D, coords3D); + color += texture2DProj (texSampler2D, coords4D, bias); + + color += texture3D (texSampler3D, coords3D); + color += texture3D (texSampler3D, coords3D, bias); + color += texture3DProj (texSampler3D, coords4D); + color += texture3DProj (texSampler3D, coords4D, bias); + + color += textureCube (texSamplerCube, coords3D); + color += textureCube (texSamplerCube, coords3D, bias); + + color += shadow1D (shadowSampler1D, coords3D); + color += shadow1D (shadowSampler1D, coords3D, bias); + color += shadow2D (shadowSampler2D, coords3D); + color += shadow2D (shadowSampler2D, coords3D, bias); + color += shadow1DProj (shadowSampler1D, coords4D); + color += shadow1DProj (shadowSampler1D, coords4D, bias); + color += shadow2DProj (shadowSampler2D, coords4D); + color += shadow2DProj (shadowSampler2D, coords4D, bias); + + ivec2 iCoords2D = ivec2(0, 5); + int iLod = 1; + + color += texelFetch(texSampler2D, iCoords2D, iLod); + + vec2 gradX = dFdx(coords2D); + vec2 gradY = dFdy(coords2D); + const ivec2 offset = ivec2(3, -7); + + color += textureGrad(texSampler2D, coords2D, gradX, gradY); + color += textureProjGrad(texSampler2D, vec3(coords2D, proj), gradX, gradY); + color += textureGradOffset(texSampler2D, coords2D, gradX, gradY, offset); + color += textureProjGradOffset(texSampler2D, coords3D, gradX, gradY, offset); + color += textureGrad(shadowSampler2D, vec3(coords2D, lod), gradX, gradY); + + gl_FragColor = mix(color, u, blend * blendscale); +} \ No newline at end of file diff --git a/Test/spv.texture.vert b/Test/spv.texture.vert new file mode 100644 index 000000000..d2cbd7b95 --- /dev/null +++ b/Test/spv.texture.vert @@ -0,0 +1,39 @@ +#version 130 + +uniform sampler1D texSampler1D; +uniform sampler2D texSampler2D; +uniform sampler3D texSampler3D; +uniform samplerCube texSamplerCube; +uniform sampler1DShadow shadowSampler1D; +uniform sampler2DShadow shadowSampler2D; + +in vec2 coords2D; + +void main() +{ + float lod = 3.0; + float coords1D = 1.789; + vec3 coords3D = vec3(1.789, 2.718, 3.453); + vec4 coords4D = vec4(1.789, 2.718, 3.453, 2.0); + vec4 color = vec4(0.0, 0.0, 0.0, 0.0); + + color += texture1DLod(texSampler1D, coords1D, lod); + color += texture1DProjLod(texSampler1D, coords2D, lod); + color += texture1DProjLod(texSampler1D, coords4D, lod); + + color += texture2DLod (texSampler2D, coords2D, lod); + color += texture2DProjLod (texSampler2D, coords3D, lod); + color += texture2DProjLod (texSampler2D, coords4D, lod); + + color += texture3DLod (texSampler3D, coords3D, lod); + color += texture3DProjLod (texSampler3D, coords4D, lod); + + color += textureCubeLod (texSamplerCube, coords3D, lod); + + color += shadow1DLod (shadowSampler1D, coords3D, lod); + color += shadow2DLod (shadowSampler2D, coords3D, lod); + color += shadow1DProjLod(shadowSampler1D, coords4D, lod); + color += shadow2DProjLod(shadowSampler2D, coords4D, lod); + + gl_Position = color; +} diff --git a/Test/spv.types.frag b/Test/spv.types.frag new file mode 100644 index 000000000..48701d890 --- /dev/null +++ b/Test/spv.types.frag @@ -0,0 +1,81 @@ +#version 130 + +uniform bool u_b; +uniform bvec2 u_b2; +uniform bvec3 u_b3; +uniform bvec4 u_b4; + +uniform int u_i; +uniform ivec2 u_i2; +uniform ivec3 u_i3; +uniform ivec4 u_i4; + +uniform float u_f; +uniform vec2 u_f2; +uniform vec3 u_f3; +uniform vec4 u_f4; + +uniform bool i_b; +uniform bvec2 i_b2; +uniform bvec3 i_b3; +uniform bvec4 i_b4; + +flat in int i_i; +flat in ivec2 i_i2; +flat in ivec3 i_i3; +flat in ivec4 i_i4; + +in float i_f; +in vec2 i_f2; +in vec3 i_f3; +in vec4 i_f4; + +void main() +{ + bool b = u_b && i_b; + bvec2 b2 = bvec2(u_b2.x && i_b2.x && u_b2.y && i_b2.y); + bvec3 b3 = bvec3(u_b3.x && i_b3.x && u_b3.y && i_b3.y && u_b3.z && i_b3.z); + bvec4 b4 = bvec4(u_b4.x && i_b4.x && u_b4.y && i_b4.y && u_b4.z && i_b4.z && u_b4.w && i_b4.w); + + int i = u_i + i_i; + ivec2 i2 = u_i2 + i_i2; + ivec3 i3 = u_i3 + i_i3; + ivec4 i4 = u_i4 + i_i4; + + float f = u_f + i_f; + vec2 f2 = u_f2 + i_f2; + vec3 f3 = u_f3 + i_f3; + vec4 f4 = u_f4 + i_f4; + + gl_FragColor = + b || + b2.x || + b2.y || + b3.x || + b3.y || + b3.z || + b4.x || + b4.y || + b4.z || + b4.w ? vec4( + i + + i2.x + + i2.y + + i3.x + + i3.y + + i3.z + + i4.x + + i4.y + + i4.z + + i4.w + + f + + f2.x + + f2.y + + f3.x + + f3.y + + f3.z + + f4.x + + f4.y + + f4.z + + f4.w) : vec4(1.0); +} diff --git a/Test/spv.uint.frag b/Test/spv.uint.frag new file mode 100644 index 000000000..551ef16f6 --- /dev/null +++ b/Test/spv.uint.frag @@ -0,0 +1,99 @@ +#version 300 es +precision mediump float; +flat in uvec2 t; +in float f; +in vec2 tc; + +uniform uvec4 v; +uniform int i; +uniform bool b; + +out uvec4 c; + +uniform mediump usampler2D usampler; + +void main() +{ + int count = 1; + + uint u = t.y + 3u; + const uint cu1 = 0xFFFFFFFFU; + const uint cu2 = -1u; // 0xFFFFFFFF + const uint cu3 = 1U; + const uint cu4 = 1u; + + if (cu1 == cu2) + count *= 2; // 2 + if (cu3 == cu4) + count *= 3; // 6 + if (cu2 == cu3) + count *= 5; // not done + + const int cshiftedii = 0xFFFFFFFF >> 10; + const uint cushiftedui = 0xFFFFFFFFu >> 10; + const int cshiftediu = 0xFFFFFFFF >> 10u; + const uint cushifteduu = 0xFFFFFFFFu >> 10u; + + if (cshiftedii == cshiftediu) + count *= 7; // 42 + if (cushiftedui == cushifteduu) + count *= 11; // 462 + if (cshiftedii == int(cushiftedui)) + count *= 13; // not done + + int shiftedii = 0xFFFFFFFF >> 10; + uint shiftedui = 0xFFFFFFFFu >> 10; + int shiftediu = 0xFFFFFFFF >> 10u; + uint shifteduu = 0xFFFFFFFFu >> 10u; + + if (shiftedii == shiftediu) + c = texture(usampler, tc); + if (shiftedui == shifteduu) + c = texture(usampler, tc + float(1u)); + if (shiftedii == int(shiftedui)) + c = texture(usampler, tc - vec2(2u)); + + if (t.x > 4u) { + float af = float(u); + bool ab = bool(u); + int ai = int(u); + + c += uvec4(uint(af), uint(ab), uint(ai), count); + } + + const uint cmask1 = 0x0A1u; + const uint cmask2 = 0xA10u; + const uint cmask3 = cmask1 << 4; + const uint cmask4 = 0xAB1u; + + if (cmask3 == cmask2) + count *= 17; // 7854 + + if ((cmask3 & cmask1) != 0u) + count *= 19; // not done + + if ((cmask1 | cmask3) == cmask4) + count *= 23; // 180642 + + if ((cmask1 ^ cmask4) == 0xA10u) + count *= 27; // 4877334 + + uint mask1 = 0x0A1u; + uint mask2 = 0xA10u; + uint mask3 = mask1 << 4; + uint mask4 = 0xAB1u; + + if (mask3 == mask2) + count *= 2; // 9754668 + + if ((mask3 & mask1) != 0u) + count *= 3; // not done + + if ((mask1 | mask3) == mask4) + count *= 5; // 48773340 + + if ((mask1 ^ mask4) == 0xA10u) + count *= 7; // 341413380 + + c += uvec4(count); +} diff --git a/Test/spv.uniformArray.frag b/Test/spv.uniformArray.frag new file mode 100644 index 000000000..7db287642 --- /dev/null +++ b/Test/spv.uniformArray.frag @@ -0,0 +1,16 @@ +#version 130 +uniform sampler2D texSampler2D; +uniform vec3 inColor; +uniform vec4 color[6]; +uniform float alpha[16]; + +void main() +{ + vec4 texColor = color[1] + color[1]; + + texColor.xyz += inColor; + + texColor.a += alpha[12]; + + gl_FragColor = texColor; +} diff --git a/Test/spv.variableArrayIndex.frag b/Test/spv.variableArrayIndex.frag new file mode 100644 index 000000000..63b49c784 --- /dev/null +++ b/Test/spv.variableArrayIndex.frag @@ -0,0 +1,48 @@ +#version 130 +uniform sampler2D sampler; +varying vec2 coord; + +struct lunarStruct1 { + int i; + float f; +}; + +struct lunarStruct2 { + int i; + float f; + lunarStruct1 s1_1; +}; + +struct lunarStruct3 { + lunarStruct2 s2_1[3]; + int i; + float f; + lunarStruct1 s1_1; +}; + + +uniform lunarStruct1 foo; +uniform lunarStruct2 foo2[5]; +uniform lunarStruct3 foo3; +uniform int Count; + +void main() +{ + float scale; + int iLocal = Count; + + if (foo3.s2_1[1].i > 0) + scale = foo2[foo3.s2_1[foo.i].i + 2 + ++iLocal].s1_1.f; + else + scale = foo3.s2_1[0].s1_1.f; + + //for (int i = 0; i < iLocal; ++i) { + // scale += foo2[i].f; + //} + + gl_FragColor = scale * texture2D(sampler, coord); + + vec2[3] constructed = vec2[3](coord, vec2(scale), vec2(1.0, 2.0)); + gl_FragColor += vec4(constructed[foo.i], constructed[foo.i]); +} + diff --git a/Test/spv.varyingArray.frag b/Test/spv.varyingArray.frag new file mode 100644 index 000000000..3bd152fe9 --- /dev/null +++ b/Test/spv.varyingArray.frag @@ -0,0 +1,19 @@ +#version 130 +uniform sampler2D texSampler2D; +varying vec4 color; +varying float alpha; + +varying vec4 gl_TexCoord[6]; + +varying vec4 foo[3]; + +void main() +{ + vec4 texColor = texture2D(texSampler2D, vec2(gl_TexCoord[4] + gl_TexCoord[5])); + + texColor += color; + + texColor.a = alpha; + + gl_FragColor = foo[1] + gl_TexCoord[0] + gl_TexCoord[4] + texColor; +} diff --git a/Test/spv.varyingArrayIndirect.frag b/Test/spv.varyingArrayIndirect.frag new file mode 100644 index 000000000..d45e601b4 --- /dev/null +++ b/Test/spv.varyingArrayIndirect.frag @@ -0,0 +1,21 @@ +#version 130 +uniform sampler2D texSampler2D; +varying vec4 color; +varying float alpha; + +varying vec4 gl_TexCoord[6]; + +varying vec4 userIn[2]; + +uniform int a, b; + +void main() +{ + vec4 texColor = texture2D(texSampler2D, vec2(userIn[b] + gl_TexCoord[a] + gl_TexCoord[5])); + + texColor += color; + + texColor.a = alpha; + + gl_FragColor = gl_TexCoord[0] + gl_TexCoord[b] + texColor + userIn[a]; +} diff --git a/Test/spv.voidFunction.frag b/Test/spv.voidFunction.frag new file mode 100644 index 000000000..4767f7ab1 --- /dev/null +++ b/Test/spv.voidFunction.frag @@ -0,0 +1,34 @@ +#version 120 + +uniform vec4 bigColor; +varying vec4 BaseColor; +uniform float d; + +float bar = 2.0; + +void foo() +{ + bar++; + + return; +} + +void foo2() +{ + bar++; +} + +void main() +{ + vec4 outColor = bigColor; + + foo(); + + foo2(); + + outColor.x += bar; + + gl_FragColor = outColor; + + return; +} diff --git a/Test/spv.whileLoop.frag b/Test/spv.whileLoop.frag new file mode 100644 index 000000000..a9541f917 --- /dev/null +++ b/Test/spv.whileLoop.frag @@ -0,0 +1,16 @@ +#version 110 + +uniform vec4 bigColor; +varying vec4 BaseColor; +uniform float d; + +void main() +{ + vec4 color = BaseColor; + + while (color.x < d) { + color += bigColor; + } + + gl_FragColor = color; +} diff --git a/Test/test-spirv-list b/Test/test-spirv-list index b5726393f..e732a4134 100644 --- a/Test/test-spirv-list +++ b/Test/test-spirv-list @@ -7,3 +7,74 @@ spv.for-continue-break.vert spv.for-simple.vert spv.while-continue-break.vert spv.while-simple.vert +# vulkan-specific tests +spv.set.vert +spv.double.comp +# snapshot of some LunarGLASS tests, so glslang can stand on its own and tests can now evolve separately +spv.100ops.frag +spv.130.frag +spv.140.frag +spv.140.vert +spv.150.geom +spv.150.vert +spv.300BuiltIns.vert +spv.300layout.frag +spv.300layout.vert +spv.300layoutp.vert +spv.310.comp +spv.330.geom +spv.400.frag +spv.400.tesc +spv.400.tese +spv.420.geom +spv.430.vert +spv.aggOps.frag +spv.always-discard.frag +spv.always-discard2.frag +spv.conditionalDiscard.frag +spv.conversion.frag +spv.dataOut.frag +spv.dataOutIndirect.frag +spv.dataOutIndirect.vert +spv.deepRvalue.frag +spv.depthOut.frag +spv.discard-dce.frag +spv.doWhileLoop.frag +spv.earlyReturnDiscard.frag +spv.flowControl.frag +spv.forLoop.frag +spv.forwardFun.frag +spv.functionCall.frag +spv.functionSemantics.frag +spv.length.frag +spv.localAggregates.frag +spv.loops.frag +spv.loopsArtificial.frag +spv.matFun.vert +spv.matrix.frag +spv.matrix2.frag +spv.newTexture.frag +spv.nonSquare.vert +spv.Operations.frag +spv.precision.frag +spv.prepost.frag +spv.qualifiers.vert +spv.simpleFunctionCall.frag +spv.simpleMat.vert +spv.structAssignment.frag +spv.structDeref.frag +spv.structure.frag +spv.switch.frag +spv.swizzle.frag +spv.test.frag +spv.test.vert +spv.texture.frag +spv.texture.vert +spv.types.frag +spv.uint.frag +spv.uniformArray.frag +spv.variableArrayIndex.frag +spv.varyingArray.frag +spv.varyingArrayIndirect.frag +spv.voidFunction.frag +spv.whileLoop.frag -- GitLab