
This PR adds a CreateParseContext() fn analogous to CreateBuiltInParseables(), to create a language specific built in parser. (This code was present before but not encapsualted in a fn). This can now be used to create a source language specific parser for builtins. Along with this, the code creating HLSL intrinsic prototypes can now produce them in HLSL syntax, rather than GLSL syntax. This relaxes certain prior restrictions at the parser level. Lower layers (e.g, SPIR-V) may still have such restrictions, such as around Nx1 matrices: this code does not impact that. This PR also fleshes out matrix types for bools and ints, both of which were partially in place before. This was easier than maintaining the restrictions in the HLSL prototype generator to avoid creating protoypes with those types. Many tests change because the result type from intrinsics moves from "global" to "temp". Several new tests are added for the new types.
434 lines
18 KiB
Plaintext
Executable File
434 lines
18 KiB
Plaintext
Executable File
hlsl.forLoop.frag
|
|
Shader version: 450
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
|
|
0:2 Function Parameters:
|
|
0:2 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:? Sequence
|
|
0:? Sequence
|
|
0:3 Loop with condition tested first
|
|
0:3 No loop condition
|
|
0:3 No loop body
|
|
0:4 Sequence
|
|
0:4 Pre-Increment (temp 4-component vector of float)
|
|
0:4 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:4 Loop with condition tested first
|
|
0:4 No loop condition
|
|
0:4 No loop body
|
|
0:? Sequence
|
|
0:5 Loop with condition tested first
|
|
0:5 Loop Condition
|
|
0:5 any (temp bool)
|
|
0:5 NotEqual (temp 4-component vector of bool)
|
|
0:5 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:5 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:5 No loop body
|
|
0:? Sequence
|
|
0:6 Loop with condition tested first
|
|
0:6 Loop Condition
|
|
0:6 any (temp bool)
|
|
0:6 NotEqual (temp 4-component vector of bool)
|
|
0:6 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:6 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:6 Loop Body
|
|
0:? Sequence
|
|
0:6 Sequence
|
|
0:6 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:6 Negate value (temp 4-component vector of float)
|
|
0:6 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:6 Branch: Return
|
|
0:7 Sequence
|
|
0:7 Pre-Decrement (temp 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Loop with condition tested first
|
|
0:7 Loop Condition
|
|
0:7 any (temp bool)
|
|
0:7 NotEqual (temp 4-component vector of bool)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Loop Body
|
|
0:? Sequence
|
|
0:7 Sequence
|
|
0:7 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:7 Negate value (temp 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Branch: Return
|
|
0:7 Loop Terminal Expression
|
|
0:7 add second child into first child (temp 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Constant:
|
|
0:7 2.000000
|
|
0:? Sequence
|
|
0:8 Loop with condition tested first
|
|
0:8 No loop condition
|
|
0:8 Loop Body
|
|
0:8 Test condition and select (temp void)
|
|
0:8 Condition
|
|
0:8 Compare Greater Than (temp bool)
|
|
0:8 direct index (temp float)
|
|
0:8 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:8 Constant:
|
|
0:8 0 (const int)
|
|
0:8 Constant:
|
|
0:8 2.000000
|
|
0:8 true case
|
|
0:8 Branch: Break
|
|
0:? Sequence
|
|
0:9 Loop with condition tested first
|
|
0:9 No loop condition
|
|
0:9 Loop Body
|
|
0:9 Test condition and select (temp void)
|
|
0:9 Condition
|
|
0:9 Compare Greater Than (temp bool)
|
|
0:9 direct index (temp float)
|
|
0:9 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:9 Constant:
|
|
0:9 0 (const int)
|
|
0:9 Constant:
|
|
0:9 2.000000
|
|
0:9 true case
|
|
0:9 Branch: Continue
|
|
0:11 Sequence
|
|
0:11 move second child to first child (temp int)
|
|
0:11 'ii' (temp int)
|
|
0:11 Constant:
|
|
0:11 -1 (const int)
|
|
0:11 Loop with condition tested first
|
|
0:11 Loop Condition
|
|
0:11 Compare Less Than (temp bool)
|
|
0:11 'ii' (temp int)
|
|
0:11 Constant:
|
|
0:11 3 (const int)
|
|
0:11 Loop Body
|
|
0:11 Test condition and select (temp void)
|
|
0:11 Condition
|
|
0:11 Compare Equal (temp bool)
|
|
0:11 'ii' (temp int)
|
|
0:11 Constant:
|
|
0:11 2 (const int)
|
|
0:11 true case
|
|
0:11 Branch: Continue
|
|
0:11 Loop Terminal Expression
|
|
0:11 Pre-Increment (temp int)
|
|
0:11 'ii' (temp int)
|
|
0:12 Pre-Decrement (temp float)
|
|
0:12 'ii' (temp float)
|
|
0:? Linker Objects
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:? 'input' (layout(location=0 ) in 4-component vector of float)
|
|
|
|
|
|
Linked fragment stage:
|
|
|
|
|
|
Shader version: 450
|
|
gl_FragCoord origin is upper left
|
|
0:? Sequence
|
|
0:2 Function Definition: PixelShaderFunction(vf4; (temp 4-component vector of float)
|
|
0:2 Function Parameters:
|
|
0:2 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:? Sequence
|
|
0:? Sequence
|
|
0:3 Loop with condition tested first
|
|
0:3 No loop condition
|
|
0:3 No loop body
|
|
0:4 Sequence
|
|
0:4 Pre-Increment (temp 4-component vector of float)
|
|
0:4 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:4 Loop with condition tested first
|
|
0:4 No loop condition
|
|
0:4 No loop body
|
|
0:? Sequence
|
|
0:5 Loop with condition tested first
|
|
0:5 Loop Condition
|
|
0:5 any (temp bool)
|
|
0:5 NotEqual (temp 4-component vector of bool)
|
|
0:5 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:5 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:5 No loop body
|
|
0:? Sequence
|
|
0:6 Loop with condition tested first
|
|
0:6 Loop Condition
|
|
0:6 any (temp bool)
|
|
0:6 NotEqual (temp 4-component vector of bool)
|
|
0:6 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:6 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:6 Loop Body
|
|
0:? Sequence
|
|
0:6 Sequence
|
|
0:6 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:6 Negate value (temp 4-component vector of float)
|
|
0:6 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:6 Branch: Return
|
|
0:7 Sequence
|
|
0:7 Pre-Decrement (temp 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Loop with condition tested first
|
|
0:7 Loop Condition
|
|
0:7 any (temp bool)
|
|
0:7 NotEqual (temp 4-component vector of bool)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Loop Body
|
|
0:? Sequence
|
|
0:7 Sequence
|
|
0:7 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:7 Negate value (temp 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Branch: Return
|
|
0:7 Loop Terminal Expression
|
|
0:7 add second child into first child (temp 4-component vector of float)
|
|
0:7 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Constant:
|
|
0:7 2.000000
|
|
0:? Sequence
|
|
0:8 Loop with condition tested first
|
|
0:8 No loop condition
|
|
0:8 Loop Body
|
|
0:8 Test condition and select (temp void)
|
|
0:8 Condition
|
|
0:8 Compare Greater Than (temp bool)
|
|
0:8 direct index (temp float)
|
|
0:8 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:8 Constant:
|
|
0:8 0 (const int)
|
|
0:8 Constant:
|
|
0:8 2.000000
|
|
0:8 true case
|
|
0:8 Branch: Break
|
|
0:? Sequence
|
|
0:9 Loop with condition tested first
|
|
0:9 No loop condition
|
|
0:9 Loop Body
|
|
0:9 Test condition and select (temp void)
|
|
0:9 Condition
|
|
0:9 Compare Greater Than (temp bool)
|
|
0:9 direct index (temp float)
|
|
0:9 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:9 Constant:
|
|
0:9 0 (const int)
|
|
0:9 Constant:
|
|
0:9 2.000000
|
|
0:9 true case
|
|
0:9 Branch: Continue
|
|
0:11 Sequence
|
|
0:11 move second child to first child (temp int)
|
|
0:11 'ii' (temp int)
|
|
0:11 Constant:
|
|
0:11 -1 (const int)
|
|
0:11 Loop with condition tested first
|
|
0:11 Loop Condition
|
|
0:11 Compare Less Than (temp bool)
|
|
0:11 'ii' (temp int)
|
|
0:11 Constant:
|
|
0:11 3 (const int)
|
|
0:11 Loop Body
|
|
0:11 Test condition and select (temp void)
|
|
0:11 Condition
|
|
0:11 Compare Equal (temp bool)
|
|
0:11 'ii' (temp int)
|
|
0:11 Constant:
|
|
0:11 2 (const int)
|
|
0:11 true case
|
|
0:11 Branch: Continue
|
|
0:11 Loop Terminal Expression
|
|
0:11 Pre-Increment (temp int)
|
|
0:11 'ii' (temp int)
|
|
0:12 Pre-Decrement (temp float)
|
|
0:12 'ii' (temp float)
|
|
0:? Linker Objects
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:? 'input' (layout(location=0 ) in 4-component vector of float)
|
|
|
|
// Module Version 10000
|
|
// Generated by (magic number): 80001
|
|
// Id's are bound by 114
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "PixelShaderFunction" 13 43
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Name 4 "PixelShaderFunction"
|
|
Name 13 "input"
|
|
Name 43 "@entryPointOutput"
|
|
Name 91 "ii"
|
|
Name 111 "ii"
|
|
Decorate 13(input) Location 0
|
|
Decorate 43(@entryPointOutput) Location 0
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
10: TypeFloat 32
|
|
11: TypeVector 10(float) 4
|
|
12: TypePointer Input 11(fvec4)
|
|
13(input): 12(ptr) Variable Input
|
|
15: 10(float) Constant 1065353216
|
|
29: TypeBool
|
|
30: TypeVector 29(bool) 4
|
|
42: TypePointer Output 11(fvec4)
|
|
43(@entryPointOutput): 42(ptr) Variable Output
|
|
62: 10(float) Constant 1073741824
|
|
70: TypeInt 32 0
|
|
71: 70(int) Constant 0
|
|
72: TypePointer Input 10(float)
|
|
89: TypeInt 32 1
|
|
90: TypePointer Function 89(int)
|
|
92: 89(int) Constant 4294967295
|
|
99: 89(int) Constant 3
|
|
102: 89(int) Constant 2
|
|
108: 89(int) Constant 1
|
|
110: TypePointer Function 10(float)
|
|
4(PixelShaderFunction): 2 Function None 3
|
|
5: Label
|
|
91(ii): 90(ptr) Variable Function
|
|
111(ii): 110(ptr) Variable Function
|
|
Branch 6
|
|
6: Label
|
|
LoopMerge 8 9 None
|
|
Branch 7
|
|
7: Label
|
|
Branch 9
|
|
9: Label
|
|
Branch 6
|
|
8: Label
|
|
14: 11(fvec4) Load 13(input)
|
|
16: 11(fvec4) CompositeConstruct 15 15 15 15
|
|
17: 11(fvec4) FAdd 14 16
|
|
Store 13(input) 17
|
|
Branch 18
|
|
18: Label
|
|
LoopMerge 20 21 None
|
|
Branch 19
|
|
19: Label
|
|
Branch 21
|
|
21: Label
|
|
Branch 18
|
|
20: Label
|
|
Branch 22
|
|
22: Label
|
|
LoopMerge 24 25 None
|
|
Branch 26
|
|
26: Label
|
|
27: 11(fvec4) Load 13(input)
|
|
28: 11(fvec4) Load 13(input)
|
|
31: 30(bvec4) FOrdNotEqual 27 28
|
|
32: 29(bool) Any 31
|
|
BranchConditional 32 23 24
|
|
23: Label
|
|
Branch 25
|
|
25: Label
|
|
Branch 22
|
|
24: Label
|
|
Branch 33
|
|
33: Label
|
|
LoopMerge 35 36 None
|
|
Branch 37
|
|
37: Label
|
|
38: 11(fvec4) Load 13(input)
|
|
39: 11(fvec4) Load 13(input)
|
|
40: 30(bvec4) FOrdNotEqual 38 39
|
|
41: 29(bool) Any 40
|
|
BranchConditional 41 34 35
|
|
34: Label
|
|
44: 11(fvec4) Load 13(input)
|
|
45: 11(fvec4) FNegate 44
|
|
Store 43(@entryPointOutput) 45
|
|
Return
|
|
36: Label
|
|
Branch 33
|
|
35: Label
|
|
47: 11(fvec4) Load 13(input)
|
|
48: 11(fvec4) CompositeConstruct 15 15 15 15
|
|
49: 11(fvec4) FSub 47 48
|
|
Store 13(input) 49
|
|
Branch 50
|
|
50: Label
|
|
LoopMerge 52 53 None
|
|
Branch 54
|
|
54: Label
|
|
55: 11(fvec4) Load 13(input)
|
|
56: 11(fvec4) Load 13(input)
|
|
57: 30(bvec4) FOrdNotEqual 55 56
|
|
58: 29(bool) Any 57
|
|
BranchConditional 58 51 52
|
|
51: Label
|
|
59: 11(fvec4) Load 13(input)
|
|
60: 11(fvec4) FNegate 59
|
|
Store 43(@entryPointOutput) 60
|
|
Return
|
|
53: Label
|
|
63: 11(fvec4) Load 13(input)
|
|
64: 11(fvec4) CompositeConstruct 62 62 62 62
|
|
65: 11(fvec4) FAdd 63 64
|
|
Store 13(input) 65
|
|
Branch 50
|
|
52: Label
|
|
Branch 66
|
|
66: Label
|
|
LoopMerge 68 69 None
|
|
Branch 67
|
|
67: Label
|
|
73: 72(ptr) AccessChain 13(input) 71
|
|
74: 10(float) Load 73
|
|
75: 29(bool) FOrdGreaterThan 74 62
|
|
SelectionMerge 77 None
|
|
BranchConditional 75 76 77
|
|
76: Label
|
|
Branch 68
|
|
77: Label
|
|
Branch 69
|
|
69: Label
|
|
Branch 66
|
|
68: Label
|
|
Branch 79
|
|
79: Label
|
|
LoopMerge 81 82 None
|
|
Branch 80
|
|
80: Label
|
|
83: 72(ptr) AccessChain 13(input) 71
|
|
84: 10(float) Load 83
|
|
85: 29(bool) FOrdGreaterThan 84 62
|
|
SelectionMerge 87 None
|
|
BranchConditional 85 86 87
|
|
86: Label
|
|
Branch 82
|
|
87: Label
|
|
Branch 82
|
|
82: Label
|
|
Branch 79
|
|
81: Label
|
|
Store 91(ii) 92
|
|
Branch 93
|
|
93: Label
|
|
LoopMerge 95 96 None
|
|
Branch 97
|
|
97: Label
|
|
98: 89(int) Load 91(ii)
|
|
100: 29(bool) SLessThan 98 99
|
|
BranchConditional 100 94 95
|
|
94: Label
|
|
101: 89(int) Load 91(ii)
|
|
103: 29(bool) IEqual 101 102
|
|
SelectionMerge 105 None
|
|
BranchConditional 103 104 105
|
|
104: Label
|
|
Branch 96
|
|
105: Label
|
|
Branch 96
|
|
96: Label
|
|
107: 89(int) Load 91(ii)
|
|
109: 89(int) IAdd 107 108
|
|
Store 91(ii) 109
|
|
Branch 93
|
|
95: Label
|
|
112: 10(float) Load 111(ii)
|
|
113: 10(float) FSub 112 15
|
|
Store 111(ii) 113
|
|
Return
|
|
FunctionEnd
|