 e770b3e6cf
			
		
	
	
		e770b3e6cf
		
	
	
	
	
		
			
			Structured control-flow rules allow leaving the middle of a construct through a return, but not through a jump to a block that does a return. Addresses issue #58.
		
			
				
	
	
		
			239 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| 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 158
 | |
| 
 | |
|                               Source GLSL 400
 | |
|                               Capability Shader
 | |
|                1:             ExtInstImport  "GLSL.std.450"
 | |
|                               MemoryModel Logical GLSL450
 | |
|                               EntryPoint Fragment 4  "main"
 | |
|                               ExecutionMode 4 OriginLowerLeft
 | |
|                               Name 4  "main"
 | |
|                               Name 15  "foo(i1;i1;i1;i1;i1;i1;"
 | |
|                               Name 9  "a"
 | |
|                               Name 10  "b"
 | |
|                               Name 11  "c"
 | |
|                               Name 12  "d"
 | |
|                               Name 13  "e"
 | |
|                               Name 14  "f"
 | |
|                               Name 25  "foo2(f1;vf3;i1;"
 | |
|                               Name 22  "a"
 | |
|                               Name 23  "b"
 | |
|                               Name 24  "r"
 | |
|                               Name 28  "foo3("
 | |
|                               Name 30  "sum"
 | |
|                               Name 72  "u"
 | |
|                               Name 84  "t"
 | |
|                               Name 87  "s"
 | |
|                               MemberName 87(s) 0  "t"
 | |
|                               Name 89  "f"
 | |
|                               Name 96  "color"
 | |
|                               Name 102  "e"
 | |
|                               Name 103  "param"
 | |
|                               Name 104  "param"
 | |
|                               Name 105  "param"
 | |
|                               Name 106  "param"
 | |
|                               Name 125  "ret"
 | |
|                               Name 127  "tempReturn"
 | |
|                               Name 132  "tempArg"
 | |
|                               Name 133  "param"
 | |
|                               Name 134  "param"
 | |
|                               Name 135  "param"
 | |
|                               Name 138  "arg"
 | |
|                               Name 154  "gl_FragColor"
 | |
|                               Decorate 154(gl_FragColor) BuiltIn FragColor
 | |
|                2:             TypeVoid
 | |
|                3:             TypeFunction 2
 | |
|                6:             TypeInt 32 1
 | |
|                7:             TypePointer Function 6(int)
 | |
|                8:             TypeFunction 6(int) 7(ptr) 6(int) 7(ptr) 6(int) 7(ptr) 7(ptr)
 | |
|               17:             TypeFloat 32
 | |
|               18:             TypePointer Function 17(float)
 | |
|               19:             TypeVector 17(float) 3
 | |
|               20:             TypePointer Function 19(fvec3)
 | |
|               21:             TypeFunction 6(int) 18(ptr) 20(ptr) 7(ptr)
 | |
|               27:             TypeFunction 6(int)
 | |
|               38:      6(int) Constant 64
 | |
|               43:      6(int) Constant 1024
 | |
|               61:   17(float) Constant 1077936128
 | |
|               65:   17(float) Constant 1084227584
 | |
|               71:             TypePointer UniformConstant 17(float)
 | |
|            72(u):     71(ptr) Variable UniformConstant
 | |
|               74:   17(float) Constant 1078774989
 | |
|               75:             TypeBool
 | |
|               80:      6(int) Constant 1000000
 | |
|               82:      6(int) Constant 2000000
 | |
|               85:      6(int) Constant 2
 | |
|               86:             TypeVector 6(int) 4
 | |
|            87(s):             TypeStruct 86(ivec4)
 | |
|               88:             TypePointer Function 87(s)
 | |
|               90:      6(int) Constant 0
 | |
|               91:      6(int) Constant 32
 | |
|               92:             TypePointer Function 86(ivec4)
 | |
|               97:      6(int) Constant 1
 | |
|              101:      6(int) Constant 8
 | |
|              116:      6(int) Constant 128
 | |
|              126:             TypePointer PrivateGlobal 6(int)
 | |
|  127(tempReturn):    126(ptr) Variable PrivateGlobal
 | |
|              128:   17(float) Constant 1082130432
 | |
|              129:   17(float) Constant 1065353216
 | |
|              130:   17(float) Constant 1073741824
 | |
|              131:   19(fvec3) ConstantComposite 129 130 61
 | |
|              152:             TypeVector 17(float) 4
 | |
|              153:             TypePointer Output 152(fvec4)
 | |
| 154(gl_FragColor):    153(ptr) Variable Output
 | |
|          4(main):           2 Function None 3
 | |
|                5:             Label
 | |
|            84(t):      7(ptr) Variable Function
 | |
|            89(f):     88(ptr) Variable Function
 | |
|        96(color):      7(ptr) Variable Function
 | |
|           102(e):      7(ptr) Variable Function
 | |
|       103(param):      7(ptr) Variable Function
 | |
|       104(param):      7(ptr) Variable Function
 | |
|       105(param):      7(ptr) Variable Function
 | |
|       106(param):      7(ptr) Variable Function
 | |
|         125(ret):     18(ptr) Variable Function
 | |
|     132(tempArg):      7(ptr) Variable Function
 | |
|       133(param):     18(ptr) Variable Function
 | |
|       134(param):     20(ptr) Variable Function
 | |
|       135(param):      7(ptr) Variable Function
 | |
|         138(arg):     18(ptr) Variable Function
 | |
|                               Store 84(t) 85
 | |
|               93:     92(ptr) AccessChain 89(f) 90
 | |
|               94:   86(ivec4) Load 93
 | |
|               95:   86(ivec4) CompositeInsert 91 94 1
 | |
|                               Store 93 95
 | |
|               98:      6(int) Load 84(t)
 | |
|               99:      6(int) Load 84(t)
 | |
|              100:      6(int) IAdd 98 99
 | |
|                               Store 103(param) 97
 | |
|                               Store 104(param) 100
 | |
|              107:     92(ptr) AccessChain 89(f) 90
 | |
|              108:   86(ivec4) Load 107
 | |
|              109:      6(int) CompositeExtract 108 1
 | |
|                               Store 106(param) 109
 | |
|              110:      6(int) FunctionCall 15(foo(i1;i1;i1;i1;i1;i1;) 103(param) 85 104(param) 101 105(param) 106(param)
 | |
|              111:      6(int) Load 105(param)
 | |
|                               Store 102(e) 111
 | |
|              112:      6(int) Load 106(param)
 | |
|              113:     92(ptr) AccessChain 89(f) 90
 | |
|              114:   86(ivec4) Load 113
 | |
|              115:   86(ivec4) CompositeInsert 112 114 1
 | |
|                               Store 113 115
 | |
|                               Store 96(color) 110
 | |
|              117:      6(int) Load 102(e)
 | |
|              118:     92(ptr) AccessChain 89(f) 90
 | |
|              119:   86(ivec4) Load 118
 | |
|              120:      6(int) CompositeExtract 119 1
 | |
|              121:      6(int) IAdd 117 120
 | |
|              122:      6(int) IMul 116 121
 | |
|              123:      6(int) Load 96(color)
 | |
|              124:      6(int) IAdd 123 122
 | |
|                               Store 96(color) 124
 | |
|                               Store 133(param) 128
 | |
|                               Store 134(param) 131
 | |
|              136:      6(int) FunctionCall 25(foo2(f1;vf3;i1;) 133(param) 134(param) 135(param)
 | |
|              137:      6(int) Load 135(param)
 | |
|                               Store 132(tempArg) 137
 | |
|                               Store 127(tempReturn) 136
 | |
|              139:      6(int) Load 132(tempArg)
 | |
|              140:   17(float) ConvertSToF 139
 | |
|                               Store 138(arg) 140
 | |
|              141:      6(int) Load 127(tempReturn)
 | |
|              142:   17(float) ConvertSToF 141
 | |
|                               Store 125(ret) 142
 | |
|              143:   17(float) Load 125(ret)
 | |
|              144:   17(float) Load 138(arg)
 | |
|              145:   17(float) FAdd 143 144
 | |
|              146:      6(int) ConvertFToS 145
 | |
|              147:      6(int) Load 96(color)
 | |
|              148:      6(int) IAdd 147 146
 | |
|                               Store 96(color) 148
 | |
|              149:      6(int) FunctionCall 28(foo3()
 | |
|              150:      6(int) Load 96(color)
 | |
|              151:      6(int) IAdd 150 149
 | |
|                               Store 96(color) 151
 | |
|              155:      6(int) Load 96(color)
 | |
|              156:   17(float) ConvertSToF 155
 | |
|              157:  152(fvec4) CompositeConstruct 156 156 156 156
 | |
|                               Store 154(gl_FragColor) 157
 | |
|                               Return
 | |
|                               FunctionEnd
 | |
| 15(foo(i1;i1;i1;i1;i1;i1;):      6(int) Function None 8
 | |
|             9(a):      7(ptr) FunctionParameter
 | |
|            10(b):      6(int) FunctionParameter
 | |
|            11(c):      7(ptr) FunctionParameter
 | |
|            12(d):      6(int) FunctionParameter
 | |
|            13(e):      7(ptr) FunctionParameter
 | |
|            14(f):      7(ptr) FunctionParameter
 | |
|               16:             Label
 | |
|          30(sum):      7(ptr) Variable Function
 | |
|               31:      6(int) Load 9(a)
 | |
|               32:      6(int) IAdd 31 10(b)
 | |
|               33:      6(int) Load 11(c)
 | |
|               34:      6(int) IAdd 32 33
 | |
|               35:      6(int) IAdd 34 12(d)
 | |
|               36:      6(int) Load 14(f)
 | |
|               37:      6(int) IAdd 35 36
 | |
|                               Store 30(sum) 37
 | |
|               39:      6(int) Load 9(a)
 | |
|               40:      6(int) IMul 39 38
 | |
|                               Store 9(a) 40
 | |
|               41:      6(int) Load 11(c)
 | |
|               42:      6(int) IMul 41 38
 | |
|                               Store 11(c) 42
 | |
|                               Store 13(e) 43
 | |
|               44:      6(int) Load 14(f)
 | |
|               45:      6(int) IMul 44 38
 | |
|                               Store 14(f) 45
 | |
|               46:      6(int) Load 9(a)
 | |
|               47:      6(int) IMul 38 10(b)
 | |
|               48:      6(int) IAdd 46 47
 | |
|               49:      6(int) Load 11(c)
 | |
|               50:      6(int) IAdd 48 49
 | |
|               51:      6(int) IMul 38 12(d)
 | |
|               52:      6(int) IAdd 50 51
 | |
|               53:      6(int) Load 13(e)
 | |
|               54:      6(int) IAdd 52 53
 | |
|               55:      6(int) Load 14(f)
 | |
|               56:      6(int) IAdd 54 55
 | |
|               57:      6(int) Load 30(sum)
 | |
|               58:      6(int) IAdd 57 56
 | |
|                               Store 30(sum) 58
 | |
|               59:      6(int) Load 30(sum)
 | |
|                               ReturnValue 59
 | |
|                               FunctionEnd
 | |
| 25(foo2(f1;vf3;i1;):      6(int) Function None 21
 | |
|            22(a):     18(ptr) FunctionParameter
 | |
|            23(b):     20(ptr) FunctionParameter
 | |
|            24(r):      7(ptr) FunctionParameter
 | |
|               26:             Label
 | |
|               62:   17(float) Load 22(a)
 | |
|               63:   17(float) FMul 61 62
 | |
|               64:      6(int) ConvertFToS 63
 | |
|                               Store 24(r) 64
 | |
|               66:   19(fvec3) Load 23(b)
 | |
|               67:   17(float) CompositeExtract 66 1
 | |
|               68:   17(float) FMul 65 67
 | |
|               69:      6(int) ConvertFToS 68
 | |
|                               ReturnValue 69
 | |
|                               FunctionEnd
 | |
|        28(foo3():      6(int) Function None 27
 | |
|               29:             Label
 | |
|               73:   17(float) Load 72(u)
 | |
|               76:    75(bool) FOrdGreaterThan 73 74
 | |
|                               SelectionMerge 78 None
 | |
|                               BranchConditional 76 77 78
 | |
|               77:               Label
 | |
|                                 Kill
 | |
|               78:             Label
 | |
|                               ReturnValue 82
 | |
|                               FunctionEnd
 |