mirror of
https://github.com/RPCS3/glslang.git
synced 2024-12-03 00:28:28 +00:00
0842dbb39a
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.
338 lines
15 KiB
Plaintext
Executable File
338 lines
15 KiB
Plaintext
Executable File
hlsl.if.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:3 Test condition and select (temp void)
|
|
0:3 Condition
|
|
0:3 all (temp bool)
|
|
0:3 Equal (temp 4-component vector of bool)
|
|
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:3 true case
|
|
0:4 Sequence
|
|
0:4 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:4 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:4 Branch: Return
|
|
0:6 Test condition and select (temp void)
|
|
0:6 Condition
|
|
0:6 all (temp bool)
|
|
0:6 Equal (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 true case
|
|
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 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Branch: Return
|
|
0:6 false case
|
|
0:9 Sequence
|
|
0:9 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:9 Negate value (temp 4-component vector of float)
|
|
0:9 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:9 Branch: Return
|
|
0:11 Test condition and select (temp void)
|
|
0:11 Condition
|
|
0:11 all (temp bool)
|
|
0:11 Equal (temp 4-component vector of bool)
|
|
0:11 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:11 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:11 true case is null
|
|
0:14 Test condition and select (temp void)
|
|
0:14 Condition
|
|
0:14 all (temp bool)
|
|
0:14 Equal (temp 4-component vector of bool)
|
|
0:14 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:14 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:14 true case is null
|
|
0:19 Test condition and select (temp void)
|
|
0:19 Condition
|
|
0:19 all (temp bool)
|
|
0:19 Equal (temp 4-component vector of bool)
|
|
0:19 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:19 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:19 true case
|
|
0:? Sequence
|
|
0:20 Sequence
|
|
0:20 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:20 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:20 Branch: Return
|
|
0:23 Test condition and select (temp void)
|
|
0:23 Condition
|
|
0:23 all (temp bool)
|
|
0:23 Equal (temp 4-component vector of bool)
|
|
0:23 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:23 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:23 true case
|
|
0:? Sequence
|
|
0:24 Sequence
|
|
0:24 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:24 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:24 Branch: Return
|
|
0:23 false case
|
|
0:? Sequence
|
|
0:26 Sequence
|
|
0:26 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:26 Negate value (temp 4-component vector of float)
|
|
0:26 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:26 Branch: Return
|
|
0:30 Test condition and select (temp void)
|
|
0:30 Condition
|
|
0:30 move second child to first child (temp float)
|
|
0:30 'ii' (temp float)
|
|
0:30 direct index (temp float)
|
|
0:30 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:30 Constant:
|
|
0:30 2 (const int)
|
|
0:30 true case
|
|
0:31 Pre-Increment (temp float)
|
|
0:31 'ii' (temp float)
|
|
0:32 Pre-Increment (temp int)
|
|
0:32 'ii' (temp int)
|
|
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:3 Test condition and select (temp void)
|
|
0:3 Condition
|
|
0:3 all (temp bool)
|
|
0:3 Equal (temp 4-component vector of bool)
|
|
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:3 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:3 true case
|
|
0:4 Sequence
|
|
0:4 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:4 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:4 Branch: Return
|
|
0:6 Test condition and select (temp void)
|
|
0:6 Condition
|
|
0:6 all (temp bool)
|
|
0:6 Equal (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 true case
|
|
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 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:7 Branch: Return
|
|
0:6 false case
|
|
0:9 Sequence
|
|
0:9 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:9 Negate value (temp 4-component vector of float)
|
|
0:9 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:9 Branch: Return
|
|
0:11 Test condition and select (temp void)
|
|
0:11 Condition
|
|
0:11 all (temp bool)
|
|
0:11 Equal (temp 4-component vector of bool)
|
|
0:11 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:11 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:11 true case is null
|
|
0:14 Test condition and select (temp void)
|
|
0:14 Condition
|
|
0:14 all (temp bool)
|
|
0:14 Equal (temp 4-component vector of bool)
|
|
0:14 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:14 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:14 true case is null
|
|
0:19 Test condition and select (temp void)
|
|
0:19 Condition
|
|
0:19 all (temp bool)
|
|
0:19 Equal (temp 4-component vector of bool)
|
|
0:19 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:19 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:19 true case
|
|
0:? Sequence
|
|
0:20 Sequence
|
|
0:20 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:20 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:20 Branch: Return
|
|
0:23 Test condition and select (temp void)
|
|
0:23 Condition
|
|
0:23 all (temp bool)
|
|
0:23 Equal (temp 4-component vector of bool)
|
|
0:23 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:23 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:23 true case
|
|
0:? Sequence
|
|
0:24 Sequence
|
|
0:24 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:24 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:24 Branch: Return
|
|
0:23 false case
|
|
0:? Sequence
|
|
0:26 Sequence
|
|
0:26 move second child to first child (temp 4-component vector of float)
|
|
0:? '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
|
|
0:26 Negate value (temp 4-component vector of float)
|
|
0:26 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:26 Branch: Return
|
|
0:30 Test condition and select (temp void)
|
|
0:30 Condition
|
|
0:30 move second child to first child (temp float)
|
|
0:30 'ii' (temp float)
|
|
0:30 direct index (temp float)
|
|
0:30 'input' (layout(location=0 ) in 4-component vector of float)
|
|
0:30 Constant:
|
|
0:30 2 (const int)
|
|
0:30 true case
|
|
0:31 Pre-Increment (temp float)
|
|
0:31 'ii' (temp float)
|
|
0:32 Pre-Increment (temp int)
|
|
0:32 'ii' (temp int)
|
|
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 84
|
|
|
|
Capability Shader
|
|
1: ExtInstImport "GLSL.std.450"
|
|
MemoryModel Logical GLSL450
|
|
EntryPoint Fragment 4 "PixelShaderFunction" 9 19
|
|
ExecutionMode 4 OriginUpperLeft
|
|
Name 4 "PixelShaderFunction"
|
|
Name 9 "input"
|
|
Name 19 "@entryPointOutput"
|
|
Name 67 "ii"
|
|
Name 80 "ii"
|
|
Decorate 9(input) Location 0
|
|
Decorate 19(@entryPointOutput) Location 0
|
|
2: TypeVoid
|
|
3: TypeFunction 2
|
|
6: TypeFloat 32
|
|
7: TypeVector 6(float) 4
|
|
8: TypePointer Input 7(fvec4)
|
|
9(input): 8(ptr) Variable Input
|
|
12: TypeBool
|
|
13: TypeVector 12(bool) 4
|
|
18: TypePointer Output 7(fvec4)
|
|
19(@entryPointOutput): 18(ptr) Variable Output
|
|
66: TypePointer Function 6(float)
|
|
68: TypeInt 32 0
|
|
69: 68(int) Constant 2
|
|
70: TypePointer Input 6(float)
|
|
76: 6(float) Constant 1065353216
|
|
78: TypeInt 32 1
|
|
79: TypePointer Function 78(int)
|
|
82: 78(int) Constant 1
|
|
4(PixelShaderFunction): 2 Function None 3
|
|
5: Label
|
|
67(ii): 66(ptr) Variable Function
|
|
80(ii): 79(ptr) Variable Function
|
|
10: 7(fvec4) Load 9(input)
|
|
11: 7(fvec4) Load 9(input)
|
|
14: 13(bvec4) FOrdEqual 10 11
|
|
15: 12(bool) All 14
|
|
SelectionMerge 17 None
|
|
BranchConditional 15 16 17
|
|
16: Label
|
|
20: 7(fvec4) Load 9(input)
|
|
Store 19(@entryPointOutput) 20
|
|
Return
|
|
17: Label
|
|
22: 7(fvec4) Load 9(input)
|
|
23: 7(fvec4) Load 9(input)
|
|
24: 13(bvec4) FOrdEqual 22 23
|
|
25: 12(bool) All 24
|
|
SelectionMerge 27 None
|
|
BranchConditional 25 26 30
|
|
26: Label
|
|
28: 7(fvec4) Load 9(input)
|
|
Store 19(@entryPointOutput) 28
|
|
Return
|
|
30: Label
|
|
31: 7(fvec4) Load 9(input)
|
|
32: 7(fvec4) FNegate 31
|
|
Store 19(@entryPointOutput) 32
|
|
Return
|
|
27: Label
|
|
34: 7(fvec4) Load 9(input)
|
|
35: 7(fvec4) Load 9(input)
|
|
36: 13(bvec4) FOrdEqual 34 35
|
|
37: 12(bool) All 36
|
|
SelectionMerge 39 None
|
|
BranchConditional 37 38 39
|
|
38: Label
|
|
Branch 39
|
|
39: Label
|
|
40: 7(fvec4) Load 9(input)
|
|
41: 7(fvec4) Load 9(input)
|
|
42: 13(bvec4) FOrdEqual 40 41
|
|
43: 12(bool) All 42
|
|
SelectionMerge 45 None
|
|
BranchConditional 43 44 45
|
|
44: Label
|
|
Branch 45
|
|
45: Label
|
|
46: 7(fvec4) Load 9(input)
|
|
47: 7(fvec4) Load 9(input)
|
|
48: 13(bvec4) FOrdEqual 46 47
|
|
49: 12(bool) All 48
|
|
SelectionMerge 51 None
|
|
BranchConditional 49 50 51
|
|
50: Label
|
|
52: 7(fvec4) Load 9(input)
|
|
Store 19(@entryPointOutput) 52
|
|
Return
|
|
51: Label
|
|
54: 7(fvec4) Load 9(input)
|
|
55: 7(fvec4) Load 9(input)
|
|
56: 13(bvec4) FOrdEqual 54 55
|
|
57: 12(bool) All 56
|
|
SelectionMerge 59 None
|
|
BranchConditional 57 58 62
|
|
58: Label
|
|
60: 7(fvec4) Load 9(input)
|
|
Store 19(@entryPointOutput) 60
|
|
Return
|
|
62: Label
|
|
63: 7(fvec4) Load 9(input)
|
|
64: 7(fvec4) FNegate 63
|
|
Store 19(@entryPointOutput) 64
|
|
Return
|
|
59: Label
|
|
71: 70(ptr) AccessChain 9(input) 69
|
|
72: 6(float) Load 71
|
|
Store 67(ii) 72
|
|
SelectionMerge 74 None
|
|
BranchConditional 72 73 74
|
|
73: Label
|
|
75: 6(float) Load 67(ii)
|
|
77: 6(float) FAdd 75 76
|
|
Store 67(ii) 77
|
|
Branch 74
|
|
74: Label
|
|
81: 78(int) Load 80(ii)
|
|
83: 78(int) IAdd 81 82
|
|
Store 80(ii) 83
|
|
Return
|
|
FunctionEnd
|