Vulkan: Finish semantics for what creates spec-const-semantics.
Note: This required adding a new test mode to see the AST for vulkan tests. This also required reworking some deeper parts of type creation, regarding when storage qualification and constness is deduced bottom-up or dictated top-down.
This commit is contained in:
324
Test/baseResults/vulkan.ast.vert.out
Executable file
324
Test/baseResults/vulkan.ast.vert.out
Executable file
@@ -0,0 +1,324 @@
|
||||
vulkan.ast.vert
|
||||
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
|
||||
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:7 Function Definition: main( (global void)
|
||||
0:7 Function Parameters:
|
||||
0:9 Sequence
|
||||
0:9 Convert float to bool (temp bool)
|
||||
0:9 'scf1' (specialization-constant const float)
|
||||
0:9 1.000000
|
||||
0:10 Construct bool (specialization-constant const bool)
|
||||
0:10 'scbt' (specialization-constant const bool)
|
||||
0:10 true (const bool)
|
||||
0:11 Convert int to bool (specialization-constant const bool)
|
||||
0:11 'sci2' (specialization-constant const int)
|
||||
0:11 2 (const int)
|
||||
0:13 Construct float (temp float)
|
||||
0:13 'scf1' (specialization-constant const float)
|
||||
0:13 1.000000
|
||||
0:14 Convert bool to float (temp float)
|
||||
0:14 'scbt' (specialization-constant const bool)
|
||||
0:14 true (const bool)
|
||||
0:15 Convert int to float (temp float)
|
||||
0:15 'sci2' (specialization-constant const int)
|
||||
0:15 2 (const int)
|
||||
0:17 Convert float to int (temp int)
|
||||
0:17 'scf1' (specialization-constant const float)
|
||||
0:17 1.000000
|
||||
0:18 Convert bool to int (specialization-constant const int)
|
||||
0:18 'scbt' (specialization-constant const bool)
|
||||
0:18 true (const bool)
|
||||
0:19 Construct int (specialization-constant const int)
|
||||
0:19 'sci2' (specialization-constant const int)
|
||||
0:19 2 (const int)
|
||||
0:21 component-wise multiply (temp float)
|
||||
0:21 'scf1' (specialization-constant const float)
|
||||
0:21 1.000000
|
||||
0:21 'scf1' (specialization-constant const float)
|
||||
0:21 1.000000
|
||||
0:22 logical-or (specialization-constant const bool)
|
||||
0:22 'scbt' (specialization-constant const bool)
|
||||
0:22 true (const bool)
|
||||
0:22 'scbt' (specialization-constant const bool)
|
||||
0:22 true (const bool)
|
||||
0:23 component-wise multiply (specialization-constant const int)
|
||||
0:23 'sci2' (specialization-constant const int)
|
||||
0:23 2 (const int)
|
||||
0:23 'sci2' (specialization-constant const int)
|
||||
0:23 2 (const int)
|
||||
0:24 add (temp float)
|
||||
0:24 'scf1' (specialization-constant const float)
|
||||
0:24 1.000000
|
||||
0:24 Convert int to float (temp float)
|
||||
0:24 'sci2' (specialization-constant const int)
|
||||
0:24 2 (const int)
|
||||
0:26 Negate value (temp float)
|
||||
0:26 'scf1' (specialization-constant const float)
|
||||
0:26 1.000000
|
||||
0:27 Negate conditional (specialization-constant const bool)
|
||||
0:27 'scbt' (specialization-constant const bool)
|
||||
0:27 true (const bool)
|
||||
0:28 Negate value (specialization-constant const int)
|
||||
0:28 'sci2' (specialization-constant const int)
|
||||
0:28 2 (const int)
|
||||
0:30 Compare Greater Than (temp bool)
|
||||
0:30 'scf1' (specialization-constant const float)
|
||||
0:30 1.000000
|
||||
0:30 'scf1' (specialization-constant const float)
|
||||
0:30 1.000000
|
||||
0:31 Compare Greater Than (specialization-constant const bool)
|
||||
0:31 'sci2' (specialization-constant const int)
|
||||
0:31 2 (const int)
|
||||
0:31 'sci2' (specialization-constant const int)
|
||||
0:31 2 (const int)
|
||||
0:33 Compare Not Equal (temp bool)
|
||||
0:33 'scf1' (specialization-constant const float)
|
||||
0:33 1.000000
|
||||
0:33 'scf1' (specialization-constant const float)
|
||||
0:33 1.000000
|
||||
0:34 Compare Not Equal (specialization-constant const bool)
|
||||
0:34 'scbt' (specialization-constant const bool)
|
||||
0:34 true (const bool)
|
||||
0:34 'scbt' (specialization-constant const bool)
|
||||
0:34 true (const bool)
|
||||
0:35 Compare Not Equal (specialization-constant const bool)
|
||||
0:35 'sci2' (specialization-constant const int)
|
||||
0:35 2 (const int)
|
||||
0:35 'sci2' (specialization-constant const int)
|
||||
0:35 2 (const int)
|
||||
0:37 Construct ivec2 (specialization-constant const 2-component vector of int)
|
||||
0:37 'sci2' (specialization-constant const int)
|
||||
0:37 2 (const int)
|
||||
0:37 'sci2' (specialization-constant const int)
|
||||
0:37 2 (const int)
|
||||
0:38 Construct ivec2 (temp 2-element array of 2-component vector of int)
|
||||
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:40 Construct vec2 (temp 2-component vector of float)
|
||||
0:40 'scf1' (specialization-constant const float)
|
||||
0:40 1.000000
|
||||
0:40 'scf1' (specialization-constant const float)
|
||||
0:40 1.000000
|
||||
0:41 Construct vec2 (temp 2-element array of 2-component vector of float)
|
||||
0:41 Construct vec2 (temp 2-component vector of float)
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:41 Construct vec2 (temp 2-component vector of float)
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:? Linker Objects
|
||||
0:? 'scf1' (specialization-constant const float)
|
||||
0:? 1.000000
|
||||
0:? 'scbt' (specialization-constant const bool)
|
||||
0:? true (const bool)
|
||||
0:? 'sci2' (specialization-constant const int)
|
||||
0:? 2 (const int)
|
||||
|
||||
|
||||
Linked vertex stage:
|
||||
|
||||
|
||||
Shader version: 450
|
||||
0:? Sequence
|
||||
0:7 Function Definition: main( (global void)
|
||||
0:7 Function Parameters:
|
||||
0:9 Sequence
|
||||
0:9 Convert float to bool (temp bool)
|
||||
0:9 'scf1' (specialization-constant const float)
|
||||
0:9 1.000000
|
||||
0:10 Construct bool (specialization-constant const bool)
|
||||
0:10 'scbt' (specialization-constant const bool)
|
||||
0:10 true (const bool)
|
||||
0:11 Convert int to bool (specialization-constant const bool)
|
||||
0:11 'sci2' (specialization-constant const int)
|
||||
0:11 2 (const int)
|
||||
0:13 Construct float (temp float)
|
||||
0:13 'scf1' (specialization-constant const float)
|
||||
0:13 1.000000
|
||||
0:14 Convert bool to float (temp float)
|
||||
0:14 'scbt' (specialization-constant const bool)
|
||||
0:14 true (const bool)
|
||||
0:15 Convert int to float (temp float)
|
||||
0:15 'sci2' (specialization-constant const int)
|
||||
0:15 2 (const int)
|
||||
0:17 Convert float to int (temp int)
|
||||
0:17 'scf1' (specialization-constant const float)
|
||||
0:17 1.000000
|
||||
0:18 Convert bool to int (specialization-constant const int)
|
||||
0:18 'scbt' (specialization-constant const bool)
|
||||
0:18 true (const bool)
|
||||
0:19 Construct int (specialization-constant const int)
|
||||
0:19 'sci2' (specialization-constant const int)
|
||||
0:19 2 (const int)
|
||||
0:21 component-wise multiply (temp float)
|
||||
0:21 'scf1' (specialization-constant const float)
|
||||
0:21 1.000000
|
||||
0:21 'scf1' (specialization-constant const float)
|
||||
0:21 1.000000
|
||||
0:22 logical-or (specialization-constant const bool)
|
||||
0:22 'scbt' (specialization-constant const bool)
|
||||
0:22 true (const bool)
|
||||
0:22 'scbt' (specialization-constant const bool)
|
||||
0:22 true (const bool)
|
||||
0:23 component-wise multiply (specialization-constant const int)
|
||||
0:23 'sci2' (specialization-constant const int)
|
||||
0:23 2 (const int)
|
||||
0:23 'sci2' (specialization-constant const int)
|
||||
0:23 2 (const int)
|
||||
0:24 add (temp float)
|
||||
0:24 'scf1' (specialization-constant const float)
|
||||
0:24 1.000000
|
||||
0:24 Convert int to float (temp float)
|
||||
0:24 'sci2' (specialization-constant const int)
|
||||
0:24 2 (const int)
|
||||
0:26 Negate value (temp float)
|
||||
0:26 'scf1' (specialization-constant const float)
|
||||
0:26 1.000000
|
||||
0:27 Negate conditional (specialization-constant const bool)
|
||||
0:27 'scbt' (specialization-constant const bool)
|
||||
0:27 true (const bool)
|
||||
0:28 Negate value (specialization-constant const int)
|
||||
0:28 'sci2' (specialization-constant const int)
|
||||
0:28 2 (const int)
|
||||
0:30 Compare Greater Than (temp bool)
|
||||
0:30 'scf1' (specialization-constant const float)
|
||||
0:30 1.000000
|
||||
0:30 'scf1' (specialization-constant const float)
|
||||
0:30 1.000000
|
||||
0:31 Compare Greater Than (specialization-constant const bool)
|
||||
0:31 'sci2' (specialization-constant const int)
|
||||
0:31 2 (const int)
|
||||
0:31 'sci2' (specialization-constant const int)
|
||||
0:31 2 (const int)
|
||||
0:33 Compare Not Equal (temp bool)
|
||||
0:33 'scf1' (specialization-constant const float)
|
||||
0:33 1.000000
|
||||
0:33 'scf1' (specialization-constant const float)
|
||||
0:33 1.000000
|
||||
0:34 Compare Not Equal (specialization-constant const bool)
|
||||
0:34 'scbt' (specialization-constant const bool)
|
||||
0:34 true (const bool)
|
||||
0:34 'scbt' (specialization-constant const bool)
|
||||
0:34 true (const bool)
|
||||
0:35 Compare Not Equal (specialization-constant const bool)
|
||||
0:35 'sci2' (specialization-constant const int)
|
||||
0:35 2 (const int)
|
||||
0:35 'sci2' (specialization-constant const int)
|
||||
0:35 2 (const int)
|
||||
0:37 Construct ivec2 (specialization-constant const 2-component vector of int)
|
||||
0:37 'sci2' (specialization-constant const int)
|
||||
0:37 2 (const int)
|
||||
0:37 'sci2' (specialization-constant const int)
|
||||
0:37 2 (const int)
|
||||
0:38 Construct ivec2 (temp 2-element array of 2-component vector of int)
|
||||
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:38 Construct ivec2 (specialization-constant const 2-component vector of int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:38 'sci2' (specialization-constant const int)
|
||||
0:38 2 (const int)
|
||||
0:40 Construct vec2 (temp 2-component vector of float)
|
||||
0:40 'scf1' (specialization-constant const float)
|
||||
0:40 1.000000
|
||||
0:40 'scf1' (specialization-constant const float)
|
||||
0:40 1.000000
|
||||
0:41 Construct vec2 (temp 2-element array of 2-component vector of float)
|
||||
0:41 Construct vec2 (temp 2-component vector of float)
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:41 Construct vec2 (temp 2-component vector of float)
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:41 'scf1' (specialization-constant const float)
|
||||
0:41 1.000000
|
||||
0:? Linker Objects
|
||||
0:? 'scf1' (specialization-constant const float)
|
||||
0:? 1.000000
|
||||
0:? 'scbt' (specialization-constant const bool)
|
||||
0:? true (const bool)
|
||||
0:? 'sci2' (specialization-constant const int)
|
||||
0:? 2 (const int)
|
||||
|
||||
// Module Version 10000
|
||||
// Generated by (magic number): 80001
|
||||
// Id's are bound by 50
|
||||
|
||||
Capability Shader
|
||||
1: ExtInstImport "GLSL.std.450"
|
||||
MemoryModel Logical GLSL450
|
||||
EntryPoint Vertex 4 "main"
|
||||
Source GLSL 450
|
||||
Name 4 "main"
|
||||
Decorate 7 SpecId 200
|
||||
Decorate 11 SpecId 201
|
||||
Decorate 13 SpecId 202
|
||||
2: TypeVoid
|
||||
3: TypeFunction 2
|
||||
6: TypeFloat 32
|
||||
7: 6(float) SpecConstant 1065353216
|
||||
8: TypeBool
|
||||
9: 6(float) Constant 0
|
||||
11: 8(bool) SpecConstantTrue
|
||||
12: TypeInt 32 1
|
||||
13: 12(int) SpecConstant 2
|
||||
14: TypeInt 32 0
|
||||
15: 14(int) Constant 0
|
||||
16: 8(bool) SpecConstantOp 171 13 15
|
||||
17: 6(float) Constant 1065353216
|
||||
21: 12(int) Constant 0
|
||||
22: 12(int) Constant 1
|
||||
23: 12(int) SpecConstantOp 169 11 22 21
|
||||
25: 8(bool) SpecConstantOp 166 11 11
|
||||
26: 12(int) SpecConstantOp 132 13 13
|
||||
30: 8(bool) SpecConstantOp 168 11
|
||||
31: 12(int) SpecConstantOp 126 13
|
||||
33: 8(bool) SpecConstantOp 173 13 13
|
||||
35: 8(bool) SpecConstantOp 165 11 11
|
||||
36: 8(bool) SpecConstantOp 171 13 13
|
||||
37: TypeVector 12(int) 2
|
||||
38: 37(ivec2) SpecConstantComposite 13 13
|
||||
39: 37(ivec2) SpecConstantComposite 13 13
|
||||
40: 37(ivec2) SpecConstantComposite 13 13
|
||||
41: 14(int) Constant 2
|
||||
42: TypeArray 37(ivec2) 41
|
||||
44: TypeVector 6(float) 2
|
||||
48: TypeArray 44(fvec2) 41
|
||||
4(main): 2 Function None 3
|
||||
5: Label
|
||||
10: 8(bool) FOrdNotEqual 7 9
|
||||
18: 6(float) Select 11 17 9
|
||||
19: 6(float) ConvertSToF 13
|
||||
20: 12(int) ConvertFToS 7
|
||||
24: 6(float) FMul 7 7
|
||||
27: 6(float) ConvertSToF 13
|
||||
28: 6(float) FAdd 7 27
|
||||
29: 6(float) FNegate 7
|
||||
32: 8(bool) FOrdGreaterThan 7 7
|
||||
34: 8(bool) FOrdNotEqual 7 7
|
||||
43: 42 CompositeConstruct 39 40
|
||||
45: 44(fvec2) CompositeConstruct 7 7
|
||||
46: 44(fvec2) CompositeConstruct 7 7
|
||||
47: 44(fvec2) CompositeConstruct 7 7
|
||||
49: 48 CompositeConstruct 46 47
|
||||
Return
|
||||
FunctionEnd
|
||||
Reference in New Issue
Block a user