SPIR-V: Aggressively prune unreachable merge, continue target
More aggressively prune unreachable code as follows.
When no control flow edges reach a merge block or continue target:
- delete their contents so that:
- a merge block becomes OpLabel, then OpUnreachable
- a continue target becomes OpLabel, then an OpBranch back to the
loop header
- any basic block which is dominated by such a merge block or continue
target is removed as well.
- decorations targeting the removed instructions are removed.
Enables the SPIR-V builder post-processing step the GLSLANG_WEB case.
This commit is contained in:
parent
b131630e7c
commit
8c3d5b4b6c
44 changed files with 2398 additions and 1423 deletions
|
|
@ -2,68 +2,95 @@ hlsl.doLoop.frag
|
|||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'input' ( in float)
|
||||
0:1 Function Definition: f0( ( temp void)
|
||||
0:1 Function Parameters:
|
||||
0:? Sequence
|
||||
0:3 Loop with condition not tested first: Unroll
|
||||
0:3 Loop Condition
|
||||
0:3 Constant:
|
||||
0:3 false (const bool)
|
||||
0:3 No loop body
|
||||
0:4 Loop with condition not tested first: Unroll
|
||||
0:4 Loop Condition
|
||||
0:4 Constant:
|
||||
0:4 false (const bool)
|
||||
0:4 No loop body
|
||||
0:5 Loop with condition not tested first
|
||||
0:5 Loop Condition
|
||||
0:5 Compare Greater Than ( temp bool)
|
||||
0:5 'input' ( in float)
|
||||
0:5 Constant:
|
||||
0:5 2.000000
|
||||
0:5 Loop Body
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Construct vec4 ( temp 4-component vector of float)
|
||||
0:5 'input' ( in float)
|
||||
0:6 Loop with condition not tested first
|
||||
0:2 Loop with condition not tested first: Unroll
|
||||
0:2 Loop Condition
|
||||
0:2 Constant:
|
||||
0:2 false (const bool)
|
||||
0:2 No loop body
|
||||
0:5 Function Definition: f1( ( temp void)
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:6 Loop with condition not tested first: Unroll
|
||||
0:6 Loop Condition
|
||||
0:6 Compare Less Than ( temp bool)
|
||||
0:6 'input' ( in float)
|
||||
0:6 Constant:
|
||||
0:6 10.000000
|
||||
0:6 Loop Body
|
||||
0:6 Pre-Increment ( temp float)
|
||||
0:6 'input' ( in float)
|
||||
0:7 Loop with condition not tested first
|
||||
0:7 Loop Condition
|
||||
0:7 Compare Less Than ( temp bool)
|
||||
0:7 Pre-Increment ( temp float)
|
||||
0:7 'input' ( in float)
|
||||
0:7 Constant:
|
||||
0:7 10.000000
|
||||
0:7 Loop Body
|
||||
0:7 Loop with condition tested first
|
||||
0:7 Loop Condition
|
||||
0:7 Compare Less Than ( temp bool)
|
||||
0:7 Pre-Increment ( temp float)
|
||||
0:7 'input' ( in float)
|
||||
0:7 Constant:
|
||||
0:7 10.000000
|
||||
0:7 No loop body
|
||||
0:8 Branch: Return with expression
|
||||
0:8 Construct vec4 ( temp 4-component vector of float)
|
||||
0:8 'input' ( in float)
|
||||
0:2 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
0:6 Constant:
|
||||
0:6 false (const bool)
|
||||
0:6 No loop body
|
||||
0:9 Function Definition: f2(f1; ( temp float)
|
||||
0:9 Function Parameters:
|
||||
0:9 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:2 move second child to first child ( temp float)
|
||||
0:10 Loop with condition not tested first
|
||||
0:10 Loop Condition
|
||||
0:10 Compare Greater Than ( temp bool)
|
||||
0:10 'input' ( in float)
|
||||
0:10 Constant:
|
||||
0:10 2.000000
|
||||
0:10 Loop Body
|
||||
0:? Sequence
|
||||
0:10 Branch: Return with expression
|
||||
0:10 Construct float ( temp float)
|
||||
0:10 Construct vec4 ( temp 4-component vector of float)
|
||||
0:10 'input' ( in float)
|
||||
0:13 Function Definition: f3(f1; ( temp void)
|
||||
0:13 Function Parameters:
|
||||
0:13 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:14 Loop with condition not tested first
|
||||
0:14 Loop Condition
|
||||
0:14 Compare Less Than ( temp bool)
|
||||
0:14 'input' ( in float)
|
||||
0:14 Constant:
|
||||
0:14 10.000000
|
||||
0:14 Loop Body
|
||||
0:14 Pre-Increment ( temp float)
|
||||
0:14 'input' ( in float)
|
||||
0:17 Function Definition: f4(f1; ( temp void)
|
||||
0:17 Function Parameters:
|
||||
0:17 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:18 Loop with condition not tested first
|
||||
0:18 Loop Condition
|
||||
0:18 Compare Less Than ( temp bool)
|
||||
0:18 Pre-Increment ( temp float)
|
||||
0:18 'input' ( in float)
|
||||
0:18 Constant:
|
||||
0:18 10.000000
|
||||
0:18 Loop Body
|
||||
0:18 Loop with condition tested first
|
||||
0:18 Loop Condition
|
||||
0:18 Compare Less Than ( temp bool)
|
||||
0:18 Pre-Increment ( temp float)
|
||||
0:18 'input' ( in float)
|
||||
0:18 Constant:
|
||||
0:18 10.000000
|
||||
0:18 No loop body
|
||||
0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:22 Function Parameters:
|
||||
0:22 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:23 Function Call: f0( ( temp void)
|
||||
0:24 Function Call: f1( ( temp void)
|
||||
0:25 Function Call: f2(f1; ( temp float)
|
||||
0:25 'input' ( in float)
|
||||
0:26 Function Call: f3(f1; ( temp void)
|
||||
0:26 'input' ( in float)
|
||||
0:27 Function Call: f4(f1; ( temp void)
|
||||
0:27 'input' ( in float)
|
||||
0:28 Branch: Return with expression
|
||||
0:28 Construct vec4 ( temp 4-component vector of float)
|
||||
0:28 'input' ( in float)
|
||||
0:22 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:22 Function Parameters:
|
||||
0:? Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:? 'input' ( temp float)
|
||||
0:? 'input' (layout( location=0) in float)
|
||||
0:2 move second child to first child ( temp 4-component vector of float)
|
||||
0:22 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:? 'input' ( temp float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
|
@ -76,68 +103,95 @@ Linked fragment stage:
|
|||
Shader version: 500
|
||||
gl_FragCoord origin is upper left
|
||||
0:? Sequence
|
||||
0:2 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:2 Function Parameters:
|
||||
0:2 'input' ( in float)
|
||||
0:1 Function Definition: f0( ( temp void)
|
||||
0:1 Function Parameters:
|
||||
0:? Sequence
|
||||
0:3 Loop with condition not tested first: Unroll
|
||||
0:3 Loop Condition
|
||||
0:3 Constant:
|
||||
0:3 false (const bool)
|
||||
0:3 No loop body
|
||||
0:4 Loop with condition not tested first: Unroll
|
||||
0:4 Loop Condition
|
||||
0:4 Constant:
|
||||
0:4 false (const bool)
|
||||
0:4 No loop body
|
||||
0:5 Loop with condition not tested first
|
||||
0:5 Loop Condition
|
||||
0:5 Compare Greater Than ( temp bool)
|
||||
0:5 'input' ( in float)
|
||||
0:5 Constant:
|
||||
0:5 2.000000
|
||||
0:5 Loop Body
|
||||
0:? Sequence
|
||||
0:5 Branch: Return with expression
|
||||
0:5 Construct vec4 ( temp 4-component vector of float)
|
||||
0:5 'input' ( in float)
|
||||
0:6 Loop with condition not tested first
|
||||
0:2 Loop with condition not tested first: Unroll
|
||||
0:2 Loop Condition
|
||||
0:2 Constant:
|
||||
0:2 false (const bool)
|
||||
0:2 No loop body
|
||||
0:5 Function Definition: f1( ( temp void)
|
||||
0:5 Function Parameters:
|
||||
0:? Sequence
|
||||
0:6 Loop with condition not tested first: Unroll
|
||||
0:6 Loop Condition
|
||||
0:6 Compare Less Than ( temp bool)
|
||||
0:6 'input' ( in float)
|
||||
0:6 Constant:
|
||||
0:6 10.000000
|
||||
0:6 Loop Body
|
||||
0:6 Pre-Increment ( temp float)
|
||||
0:6 'input' ( in float)
|
||||
0:7 Loop with condition not tested first
|
||||
0:7 Loop Condition
|
||||
0:7 Compare Less Than ( temp bool)
|
||||
0:7 Pre-Increment ( temp float)
|
||||
0:7 'input' ( in float)
|
||||
0:7 Constant:
|
||||
0:7 10.000000
|
||||
0:7 Loop Body
|
||||
0:7 Loop with condition tested first
|
||||
0:7 Loop Condition
|
||||
0:7 Compare Less Than ( temp bool)
|
||||
0:7 Pre-Increment ( temp float)
|
||||
0:7 'input' ( in float)
|
||||
0:7 Constant:
|
||||
0:7 10.000000
|
||||
0:7 No loop body
|
||||
0:8 Branch: Return with expression
|
||||
0:8 Construct vec4 ( temp 4-component vector of float)
|
||||
0:8 'input' ( in float)
|
||||
0:2 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:2 Function Parameters:
|
||||
0:6 Constant:
|
||||
0:6 false (const bool)
|
||||
0:6 No loop body
|
||||
0:9 Function Definition: f2(f1; ( temp float)
|
||||
0:9 Function Parameters:
|
||||
0:9 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:2 move second child to first child ( temp float)
|
||||
0:10 Loop with condition not tested first
|
||||
0:10 Loop Condition
|
||||
0:10 Compare Greater Than ( temp bool)
|
||||
0:10 'input' ( in float)
|
||||
0:10 Constant:
|
||||
0:10 2.000000
|
||||
0:10 Loop Body
|
||||
0:? Sequence
|
||||
0:10 Branch: Return with expression
|
||||
0:10 Construct float ( temp float)
|
||||
0:10 Construct vec4 ( temp 4-component vector of float)
|
||||
0:10 'input' ( in float)
|
||||
0:13 Function Definition: f3(f1; ( temp void)
|
||||
0:13 Function Parameters:
|
||||
0:13 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:14 Loop with condition not tested first
|
||||
0:14 Loop Condition
|
||||
0:14 Compare Less Than ( temp bool)
|
||||
0:14 'input' ( in float)
|
||||
0:14 Constant:
|
||||
0:14 10.000000
|
||||
0:14 Loop Body
|
||||
0:14 Pre-Increment ( temp float)
|
||||
0:14 'input' ( in float)
|
||||
0:17 Function Definition: f4(f1; ( temp void)
|
||||
0:17 Function Parameters:
|
||||
0:17 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:18 Loop with condition not tested first
|
||||
0:18 Loop Condition
|
||||
0:18 Compare Less Than ( temp bool)
|
||||
0:18 Pre-Increment ( temp float)
|
||||
0:18 'input' ( in float)
|
||||
0:18 Constant:
|
||||
0:18 10.000000
|
||||
0:18 Loop Body
|
||||
0:18 Loop with condition tested first
|
||||
0:18 Loop Condition
|
||||
0:18 Compare Less Than ( temp bool)
|
||||
0:18 Pre-Increment ( temp float)
|
||||
0:18 'input' ( in float)
|
||||
0:18 Constant:
|
||||
0:18 10.000000
|
||||
0:18 No loop body
|
||||
0:22 Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:22 Function Parameters:
|
||||
0:22 'input' ( in float)
|
||||
0:? Sequence
|
||||
0:23 Function Call: f0( ( temp void)
|
||||
0:24 Function Call: f1( ( temp void)
|
||||
0:25 Function Call: f2(f1; ( temp float)
|
||||
0:25 'input' ( in float)
|
||||
0:26 Function Call: f3(f1; ( temp void)
|
||||
0:26 'input' ( in float)
|
||||
0:27 Function Call: f4(f1; ( temp void)
|
||||
0:27 'input' ( in float)
|
||||
0:28 Branch: Return with expression
|
||||
0:28 Construct vec4 ( temp 4-component vector of float)
|
||||
0:28 'input' ( in float)
|
||||
0:22 Function Definition: PixelShaderFunction( ( temp void)
|
||||
0:22 Function Parameters:
|
||||
0:? Sequence
|
||||
0:22 move second child to first child ( temp float)
|
||||
0:? 'input' ( temp float)
|
||||
0:? 'input' (layout( location=0) in float)
|
||||
0:2 move second child to first child ( temp 4-component vector of float)
|
||||
0:22 move second child to first child ( temp 4-component vector of float)
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
0:2 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:22 Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
|
||||
0:? 'input' ( temp float)
|
||||
0:? Linker Objects
|
||||
0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float)
|
||||
|
|
@ -145,127 +199,176 @@ gl_FragCoord origin is upper left
|
|||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80007
|
||||
// Id's are bound by 71
|
||||
// Id's are bound by 99
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 64 67
|
||||
EntryPoint Fragment 4 "PixelShaderFunction" 92 95
|
||||
ExecutionMode 4 OriginUpperLeft
|
||||
Source HLSL 500
|
||||
Name 4 "PixelShaderFunction"
|
||||
Name 11 "@PixelShaderFunction(f1;"
|
||||
Name 10 "input"
|
||||
Name 62 "input"
|
||||
Name 64 "input"
|
||||
Name 67 "@entryPointOutput"
|
||||
Name 68 "param"
|
||||
Decorate 64(input) Location 0
|
||||
Decorate 67(@entryPointOutput) Location 0
|
||||
Name 6 "f0("
|
||||
Name 8 "f1("
|
||||
Name 14 "f2(f1;"
|
||||
Name 13 "input"
|
||||
Name 18 "f3(f1;"
|
||||
Name 17 "input"
|
||||
Name 21 "f4(f1;"
|
||||
Name 20 "input"
|
||||
Name 26 "@PixelShaderFunction(f1;"
|
||||
Name 25 "input"
|
||||
Name 77 "param"
|
||||
Name 80 "param"
|
||||
Name 83 "param"
|
||||
Name 90 "input"
|
||||
Name 92 "input"
|
||||
Name 95 "@entryPointOutput"
|
||||
Name 96 "param"
|
||||
Decorate 92(input) Location 0
|
||||
Decorate 95(@entryPointOutput) Location 0
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: TypePointer Function 6(float)
|
||||
8: TypeVector 6(float) 4
|
||||
9: TypeFunction 8(fvec4) 7(ptr)
|
||||
17: TypeBool
|
||||
18: 17(bool) ConstantFalse
|
||||
31: 6(float) Constant 1073741824
|
||||
38: 6(float) Constant 1065353216
|
||||
41: 6(float) Constant 1092616192
|
||||
63: TypePointer Input 6(float)
|
||||
64(input): 63(ptr) Variable Input
|
||||
66: TypePointer Output 8(fvec4)
|
||||
67(@entryPointOutput): 66(ptr) Variable Output
|
||||
10: TypeFloat 32
|
||||
11: TypePointer Function 10(float)
|
||||
12: TypeFunction 10(float) 11(ptr)
|
||||
16: TypeFunction 2 11(ptr)
|
||||
23: TypeVector 10(float) 4
|
||||
24: TypeFunction 23(fvec4) 11(ptr)
|
||||
32: TypeBool
|
||||
33: 32(bool) ConstantFalse
|
||||
47: 10(float) Constant 1073741824
|
||||
55: 10(float) Constant 1065353216
|
||||
58: 10(float) Constant 1092616192
|
||||
91: TypePointer Input 10(float)
|
||||
92(input): 91(ptr) Variable Input
|
||||
94: TypePointer Output 23(fvec4)
|
||||
95(@entryPointOutput): 94(ptr) Variable Output
|
||||
4(PixelShaderFunction): 2 Function None 3
|
||||
5: Label
|
||||
62(input): 7(ptr) Variable Function
|
||||
68(param): 7(ptr) Variable Function
|
||||
65: 6(float) Load 64(input)
|
||||
Store 62(input) 65
|
||||
69: 6(float) Load 62(input)
|
||||
Store 68(param) 69
|
||||
70: 8(fvec4) FunctionCall 11(@PixelShaderFunction(f1;) 68(param)
|
||||
Store 67(@entryPointOutput) 70
|
||||
90(input): 11(ptr) Variable Function
|
||||
96(param): 11(ptr) Variable Function
|
||||
93: 10(float) Load 92(input)
|
||||
Store 90(input) 93
|
||||
97: 10(float) Load 90(input)
|
||||
Store 96(param) 97
|
||||
98: 23(fvec4) FunctionCall 26(@PixelShaderFunction(f1;) 96(param)
|
||||
Store 95(@entryPointOutput) 98
|
||||
Return
|
||||
FunctionEnd
|
||||
11(@PixelShaderFunction(f1;): 8(fvec4) Function None 9
|
||||
10(input): 7(ptr) FunctionParameter
|
||||
12: Label
|
||||
Branch 13
|
||||
13: Label
|
||||
LoopMerge 15 16 Unroll
|
||||
Branch 14
|
||||
14: Label
|
||||
Branch 16
|
||||
16: Label
|
||||
BranchConditional 18 13 15
|
||||
15: Label
|
||||
Branch 19
|
||||
19: Label
|
||||
LoopMerge 21 22 Unroll
|
||||
Branch 20
|
||||
20: Label
|
||||
Branch 22
|
||||
22: Label
|
||||
BranchConditional 18 19 21
|
||||
21: Label
|
||||
Branch 23
|
||||
23: Label
|
||||
LoopMerge 25 26 None
|
||||
Branch 24
|
||||
24: Label
|
||||
27: 6(float) Load 10(input)
|
||||
28: 8(fvec4) CompositeConstruct 27 27 27 27
|
||||
ReturnValue 28
|
||||
26: Label
|
||||
30: 6(float) Load 10(input)
|
||||
32: 17(bool) FOrdGreaterThan 30 31
|
||||
BranchConditional 32 23 25
|
||||
25: Label
|
||||
Branch 33
|
||||
33: Label
|
||||
LoopMerge 35 36 None
|
||||
6(f0(): 2 Function None 3
|
||||
7: Label
|
||||
Branch 28
|
||||
28: Label
|
||||
LoopMerge 30 31 Unroll
|
||||
Branch 29
|
||||
29: Label
|
||||
Branch 31
|
||||
31: Label
|
||||
BranchConditional 33 28 30
|
||||
30: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
8(f1(): 2 Function None 3
|
||||
9: Label
|
||||
Branch 34
|
||||
34: Label
|
||||
37: 6(float) Load 10(input)
|
||||
39: 6(float) FAdd 37 38
|
||||
Store 10(input) 39
|
||||
Branch 36
|
||||
36: Label
|
||||
40: 6(float) Load 10(input)
|
||||
42: 17(bool) FOrdLessThan 40 41
|
||||
BranchConditional 42 33 35
|
||||
LoopMerge 36 37 Unroll
|
||||
Branch 35
|
||||
35: Label
|
||||
Branch 43
|
||||
43: Label
|
||||
LoopMerge 45 46 None
|
||||
Branch 44
|
||||
44: Label
|
||||
Branch 47
|
||||
47: Label
|
||||
LoopMerge 49 50 None
|
||||
Branch 37
|
||||
37: Label
|
||||
BranchConditional 33 34 36
|
||||
36: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
14(f2(f1;): 10(float) Function None 12
|
||||
13(input): 11(ptr) FunctionParameter
|
||||
15: Label
|
||||
Branch 38
|
||||
38: Label
|
||||
LoopMerge 40 41 None
|
||||
Branch 39
|
||||
39: Label
|
||||
42: 10(float) Load 13(input)
|
||||
43: 23(fvec4) CompositeConstruct 42 42 42 42
|
||||
44: 10(float) CompositeExtract 43 0
|
||||
ReturnValue 44
|
||||
41: Label
|
||||
Branch 38
|
||||
40: Label
|
||||
Unreachable
|
||||
FunctionEnd
|
||||
18(f3(f1;): 2 Function None 16
|
||||
17(input): 11(ptr) FunctionParameter
|
||||
19: Label
|
||||
Branch 50
|
||||
50: Label
|
||||
LoopMerge 52 53 None
|
||||
Branch 51
|
||||
51: Label
|
||||
52: 6(float) Load 10(input)
|
||||
53: 6(float) FAdd 52 38
|
||||
Store 10(input) 53
|
||||
54: 17(bool) FOrdLessThan 53 41
|
||||
BranchConditional 54 48 49
|
||||
48: Label
|
||||
Branch 50
|
||||
50: Label
|
||||
Branch 47
|
||||
49: Label
|
||||
Branch 46
|
||||
46: Label
|
||||
55: 6(float) Load 10(input)
|
||||
56: 6(float) FAdd 55 38
|
||||
Store 10(input) 56
|
||||
57: 17(bool) FOrdLessThan 56 41
|
||||
BranchConditional 57 43 45
|
||||
45: Label
|
||||
58: 6(float) Load 10(input)
|
||||
59: 8(fvec4) CompositeConstruct 58 58 58 58
|
||||
ReturnValue 59
|
||||
54: 10(float) Load 17(input)
|
||||
56: 10(float) FAdd 54 55
|
||||
Store 17(input) 56
|
||||
Branch 53
|
||||
53: Label
|
||||
57: 10(float) Load 17(input)
|
||||
59: 32(bool) FOrdLessThan 57 58
|
||||
BranchConditional 59 50 52
|
||||
52: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
21(f4(f1;): 2 Function None 16
|
||||
20(input): 11(ptr) FunctionParameter
|
||||
22: Label
|
||||
Branch 60
|
||||
60: Label
|
||||
LoopMerge 62 63 None
|
||||
Branch 61
|
||||
61: Label
|
||||
Branch 64
|
||||
64: Label
|
||||
LoopMerge 66 67 None
|
||||
Branch 68
|
||||
68: Label
|
||||
69: 10(float) Load 20(input)
|
||||
70: 10(float) FAdd 69 55
|
||||
Store 20(input) 70
|
||||
71: 32(bool) FOrdLessThan 70 58
|
||||
BranchConditional 71 65 66
|
||||
65: Label
|
||||
Branch 67
|
||||
67: Label
|
||||
Branch 64
|
||||
66: Label
|
||||
Branch 63
|
||||
63: Label
|
||||
72: 10(float) Load 20(input)
|
||||
73: 10(float) FAdd 72 55
|
||||
Store 20(input) 73
|
||||
74: 32(bool) FOrdLessThan 73 58
|
||||
BranchConditional 74 60 62
|
||||
62: Label
|
||||
Return
|
||||
FunctionEnd
|
||||
26(@PixelShaderFunction(f1;): 23(fvec4) Function None 24
|
||||
25(input): 11(ptr) FunctionParameter
|
||||
27: Label
|
||||
77(param): 11(ptr) Variable Function
|
||||
80(param): 11(ptr) Variable Function
|
||||
83(param): 11(ptr) Variable Function
|
||||
75: 2 FunctionCall 6(f0()
|
||||
76: 2 FunctionCall 8(f1()
|
||||
78: 10(float) Load 25(input)
|
||||
Store 77(param) 78
|
||||
79: 10(float) FunctionCall 14(f2(f1;) 77(param)
|
||||
81: 10(float) Load 25(input)
|
||||
Store 80(param) 81
|
||||
82: 2 FunctionCall 18(f3(f1;) 80(param)
|
||||
84: 10(float) Load 25(input)
|
||||
Store 83(param) 84
|
||||
85: 2 FunctionCall 21(f4(f1;) 83(param)
|
||||
86: 10(float) Load 25(input)
|
||||
87: 23(fvec4) CompositeConstruct 86 86 86 86
|
||||
ReturnValue 87
|
||||
FunctionEnd
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue