Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
glslang
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Chen Yisong
glslang
Commits
fb1e40b4
Unverified
Commit
fb1e40b4
authored
Mar 16, 2018
by
John Kessenich
Committed by
GitHub
Mar 16, 2018
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1299 from KhronosGroup/fix-conversions
Fix conversions
parents
cb32c544
647fccaf
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
1796 additions
and
1812 deletions
+1796
-1812
hlsl.implicitBool.frag.out
Test/baseResults/hlsl.implicitBool.frag.out
+106
-109
hlsl.logical.binary.frag.out
Test/baseResults/hlsl.logical.binary.frag.out
+48
-53
spv.int16.frag.out
Test/baseResults/spv.int16.frag.out
+336
-338
spv.int32.frag.out
Test/baseResults/spv.int32.frag.out
+330
-332
spv.int64.frag.out
Test/baseResults/spv.int64.frag.out
+369
-362
spv.rankShift.comp.out
Test/baseResults/spv.rankShift.comp.out
+57
-0
spv.vulkan110.int16.frag.out
Test/baseResults/spv.vulkan110.int16.frag.out
+336
-338
spv.int64.frag
Test/spv.int64.frag
+2
-0
spv.rankShift.comp
Test/spv.rankShift.comp
+16
-0
Intermediate.cpp
glslang/MachineIndependent/Intermediate.cpp
+195
-277
localintermediate.h
glslang/MachineIndependent/localintermediate.h
+0
-3
Spv.FromFile.cpp
gtests/Spv.FromFile.cpp
+1
-0
No files found.
Test/baseResults/hlsl.implicitBool.frag.out
View file @
fb1e40b4
...
@@ -74,12 +74,11 @@ gl_FragCoord origin is upper left
...
@@ -74,12 +74,11 @@ gl_FragCoord origin is upper left
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 Constant:
0:17 Constant:
0:17 1 (const uint)
0:17 1 (const uint)
0:17 Convert int to bool ( temp bool)
0:17 Convert float to bool ( temp bool)
0:17 Convert float to int ( temp int)
0:17 condf: direct index for structure ( uniform float)
0:17 condf: direct index for structure ( uniform float)
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 Constant:
0:17 Constant:
0:17 0 (const uint)
0:17 0 (const uint)
0:17 Convert float to bool ( temp bool)
0:17 Convert float to bool ( temp bool)
0:17 condf1: direct index for structure ( uniform 1-component vector of float)
0:17 condf1: direct index for structure ( uniform 1-component vector of float)
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
...
@@ -243,12 +242,11 @@ gl_FragCoord origin is upper left
...
@@ -243,12 +242,11 @@ gl_FragCoord origin is upper left
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 Constant:
0:17 Constant:
0:17 1 (const uint)
0:17 1 (const uint)
0:17 Convert int to bool ( temp bool)
0:17 Convert float to bool ( temp bool)
0:17 Convert float to int ( temp int)
0:17 condf: direct index for structure ( uniform float)
0:17 condf: direct index for structure ( uniform float)
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 Constant:
0:17 Constant:
0:17 0 (const uint)
0:17 0 (const uint)
0:17 Convert float to bool ( temp bool)
0:17 Convert float to bool ( temp bool)
0:17 condf1: direct index for structure ( uniform 1-component vector of float)
0:17 condf1: direct index for structure ( uniform 1-component vector of float)
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
0:17 'anon@0' (layout( row_major std140) uniform block{ uniform float condf, uniform int condi, uniform 1-component vector of float condf1, uniform 1-component vector of int condi1})
...
@@ -335,12 +333,12 @@ gl_FragCoord origin is upper left
...
@@ -335,12 +333,12 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80006
// Generated by (magic number): 80006
// Id's are bound by 1
40
// Id's are bound by 1
39
Capability Shader
Capability Shader
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 13
8
EntryPoint Fragment 4 "main" 13
7
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Source HLSL 500
Name 4 "main"
Name 4 "main"
...
@@ -352,17 +350,17 @@ gl_FragCoord origin is upper left
...
@@ -352,17 +350,17 @@ gl_FragCoord origin is upper left
MemberName 16($Global) 2 "condf1"
MemberName 16($Global) 2 "condf1"
MemberName 16($Global) 3 "condi1"
MemberName 16($Global) 3 "condi1"
Name 18 ""
Name 18 ""
Name 8
8
"f"
Name 8
7
"f"
Name 10
1
"i"
Name 10
0
"i"
Name 12
1
"g"
Name 12
0
"g"
Name 13
8
"@entryPointOutput"
Name 13
7
"@entryPointOutput"
MemberDecorate 16($Global) 0 Offset 0
MemberDecorate 16($Global) 0 Offset 0
MemberDecorate 16($Global) 1 Offset 4
MemberDecorate 16($Global) 1 Offset 4
MemberDecorate 16($Global) 2 Offset 8
MemberDecorate 16($Global) 2 Offset 8
MemberDecorate 16($Global) 3 Offset 12
MemberDecorate 16($Global) 3 Offset 12
Decorate 16($Global) Block
Decorate 16($Global) Block
Decorate 18 DescriptorSet 0
Decorate 18 DescriptorSet 0
Decorate 13
8
(@entryPointOutput) Location 0
Decorate 13
7
(@entryPointOutput) Location 0
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
6: TypeFloat 32
6: TypeFloat 32
...
@@ -388,25 +386,25 @@ gl_FragCoord origin is upper left
...
@@ -388,25 +386,25 @@ gl_FragCoord origin is upper left
53: 6(float) Constant 1077936128
53: 6(float) Constant 1077936128
57: 15(int) Constant 3
57: 15(int) Constant 3
64: 6(float) Constant 1082130432
64: 6(float) Constant 1082130432
8
3
: 6(float) Constant 1084227584
8
2
: 6(float) Constant 1084227584
8
7
: TypePointer Function 6(float)
8
6
: TypePointer Function 6(float)
100
: TypePointer Function 15(int)
99
: TypePointer Function 15(int)
12
5
: 6(float) Constant 1088421888
12
4
: 6(float) Constant 1088421888
12
6
: 6(float) Constant 1090519040
12
5
: 6(float) Constant 1090519040
13
7
: TypePointer Output 7(fvec4)
13
6
: TypePointer Output 7(fvec4)
13
8(@entryPointOutput): 137
(ptr) Variable Output
13
7(@entryPointOutput): 136
(ptr) Variable Output
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
13
9
: 7(fvec4) FunctionCall 9(@main()
13
8
: 7(fvec4) FunctionCall 9(@main()
Store 13
8(@entryPointOutput) 139
Store 13
7(@entryPointOutput) 138
Return
Return
FunctionEnd
FunctionEnd
9(@main(): 7(fvec4) Function None 8
9(@main(): 7(fvec4) Function None 8
10: Label
10: Label
12(a): 11(ptr) Variable Function
12(a): 11(ptr) Variable Function
8
8(f): 87
(ptr) Variable Function
8
7(f): 86
(ptr) Variable Function
10
1(i): 100
(ptr) Variable Function
10
0(i): 99
(ptr) Variable Function
12
1(g): 87
(ptr) Variable Function
12
0(g): 86
(ptr) Variable Function
Store 12(a) 14
Store 12(a) 14
21: 20(ptr) AccessChain 18 19
21: 20(ptr) AccessChain 18 19
22: 15(int) Load 21
22: 15(int) Load 21
...
@@ -457,85 +455,84 @@ gl_FragCoord origin is upper left
...
@@ -457,85 +455,84 @@ gl_FragCoord origin is upper left
70: 23(bool) INotEqual 69 25
70: 23(bool) INotEqual 69 25
71: 35(ptr) AccessChain 18 34
71: 35(ptr) AccessChain 18 34
72: 6(float) Load 71
72: 6(float) Load 71
73: 15(int) ConvertFToS 72
73: 23(bool) FOrdNotEqual 72 38
74: 23(bool) INotEqual 73 25
74: 23(bool) LogicalAnd 70 73
75: 23(bool) LogicalAnd 70 74
75: 35(ptr) AccessChain 18 46
76: 35(ptr) AccessChain 18 46
76: 6(float) Load 75
77: 6(float) Load 76
77: 23(bool) FOrdNotEqual 76 38
78: 23(bool) FOrdNotEqual 77 38
78: 23(bool) LogicalOr 74 77
79: 23(bool) LogicalOr 75 78
SelectionMerge 80 None
SelectionMerge 81 None
BranchConditional 78 79 80
BranchConditional 79 80 81
79: Label
80: Label
81: 7(fvec4) Load 12(a)
82: 7(fvec4) Load 12(a)
83: 7(fvec4) CompositeConstruct 82 82 82 82
84: 7(fvec4) CompositeConstruct 83 83 83 83
84: 7(fvec4) FAdd 81 83
85: 7(fvec4) FAdd 82 84
ReturnValue 84
ReturnValue 85
80: Label
81: Label
88: 35(ptr) AccessChain 18 34
89: 35(ptr) AccessChain 18 34
89: 6(float) Load 88
90: 6(float) Load 89
Store 87(f) 89
Store 88(f) 90
Branch 90
Branch 91
90: Label
91: Label
LoopMerge 92 93 None
LoopMerge 93 94 None
Branch 94
Branch 95
94: Label
95: Label
95: 6(float) Load 87(f)
96: 6(float) Load 88(f)
96: 23(bool) FOrdNotEqual 95 38
97: 23(bool) FOrdNotEqual 96 38
BranchConditional 96 91 92
BranchConditional 97 92 93
91: Label
92: Label
97: 6(float) Load 87(f)
98: 6(float) Load 88(f)
98: 6(float) FSub 97 30
99: 6(float) FSub 98 30
Store 87(f) 98
Store 88(f) 99
Branch 93
Branch 94
93: Label
94: Label
Branch 90
Branch 91
92: Label
93: Label
101: 20(ptr) AccessChain 18 19
102: 20(ptr) AccessChain 18 19
102: 15(int) Load 101
103: 15(int) Load 102
Store 100(i) 102
Store 101(i) 103
Branch 103
103: Label
LoopMerge 105 106 None
Branch 104
Branch 104
104: Label
104: Label
LoopMerge 106 107 None
107: 15(int) Load 100(i)
Branch 105
108: 15(int) ISub 107 19
105: Label
Store 100(i) 108
108: 15(int) Load 101(i)
Branch 106
109: 15(int) ISub 108 19
Store 101(i) 109
Branch 107
107: Label
110: 15(int) Load 101(i)
111: 23(bool) INotEqual 110 25
BranchConditional 111 104 106
106: Label
106: Label
Branch 112
109: 15(int) Load 100(i)
112: Label
110: 23(bool) INotEqual 109 25
LoopMerge 114 115 None
BranchConditional 110 103 105
Branch 116
105: Label
116: Label
Branch 111
117: 15(int) Load 101(i)
111: Label
118: 23(bool) INotEqual 117 25
LoopMerge 113 114 None
BranchConditional 118 113 114
Branch 115
113: Label
115: Label
119: 15(int) Load 101(i)
116: 15(int) Load 100(i)
120: 15(int) ISub 119 19
117: 23(bool) INotEqual 116 25
Store 101(i) 120
BranchConditional 117 112 113
Branch 115
112: Label
115: Label
118: 15(int) Load 100(i)
Branch 112
119: 15(int) ISub 118 19
114: Label
Store 100(i) 119
122: 35(ptr) AccessChain 18 34
Branch 114
123: 6(float) Load 122
114: Label
124: 23(bool) FOrdNotEqual 123 38
Branch 111
127: 6(float) Select 124 125 126
113: Label
Store 121(g) 127
121: 35(ptr) AccessChain 18 34
128: 6(float) Load 121(g)
122: 6(float) Load 121
129: 7(fvec4) Load 12(a)
123: 23(bool) FOrdNotEqual 122 38
130: 7(fvec4) CompositeConstruct 128 128 128 128
126: 6(float) Select 123 124 125
131: 7(fvec4) FAdd 129 130
Store 120(g) 126
Store 12(a) 131
127: 6(float) Load 120(g)
132: 7(fvec4) Load 12(a)
128: 7(fvec4) Load 12(a)
133: 7(fvec4) CompositeConstruct 30 30 30 30
129: 7(fvec4) CompositeConstruct 127 127 127 127
134: 7(fvec4) FSub 132 133
130: 7(fvec4) FAdd 128 129
ReturnValue 134
Store 12(a) 130
131: 7(fvec4) Load 12(a)
132: 7(fvec4) CompositeConstruct 30 30 30 30
133: 7(fvec4) FSub 131 132
ReturnValue 133
FunctionEnd
FunctionEnd
Test/baseResults/hlsl.logical.binary.frag.out
View file @
fb1e40b4
...
@@ -13,12 +13,11 @@ gl_FragCoord origin is upper left
...
@@ -13,12 +13,11 @@ gl_FragCoord origin is upper left
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 Constant:
0:13 Constant:
0:13 0 (const uint)
0:13 0 (const uint)
0:13 Convert int to bool ( temp bool)
0:13 Convert float to bool ( temp bool)
0:13 Convert float to int ( temp int)
0:13 fval: direct index for structure ( uniform float)
0:13 fval: direct index for structure ( uniform float)
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 Constant:
0:13 Constant:
0:13 2 (const uint)
0:13 2 (const uint)
0:13 true case is null
0:13 true case is null
0:14 Test condition and select ( temp void)
0:14 Test condition and select ( temp void)
0:14 Condition
0:14 Condition
...
@@ -28,12 +27,11 @@ gl_FragCoord origin is upper left
...
@@ -28,12 +27,11 @@ gl_FragCoord origin is upper left
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 Constant:
0:14 Constant:
0:14 0 (const uint)
0:14 0 (const uint)
0:14 Convert int to bool ( temp bool)
0:14 Convert float to bool ( temp bool)
0:14 Convert float to int ( temp int)
0:14 fval: direct index for structure ( uniform float)
0:14 fval: direct index for structure ( uniform float)
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 Constant:
0:14 Constant:
0:14 2 (const uint)
0:14 2 (const uint)
0:14 true case is null
0:14 true case is null
0:17 move second child to first child ( temp 4-component vector of float)
0:17 move second child to first child ( temp 4-component vector of float)
0:17 Color: direct index for structure ( temp 4-component vector of float)
0:17 Color: direct index for structure ( temp 4-component vector of float)
...
@@ -79,12 +77,11 @@ gl_FragCoord origin is upper left
...
@@ -79,12 +77,11 @@ gl_FragCoord origin is upper left
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 Constant:
0:13 Constant:
0:13 0 (const uint)
0:13 0 (const uint)
0:13 Convert int to bool ( temp bool)
0:13 Convert float to bool ( temp bool)
0:13 Convert float to int ( temp int)
0:13 fval: direct index for structure ( uniform float)
0:13 fval: direct index for structure ( uniform float)
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:13 Constant:
0:13 Constant:
0:13 2 (const uint)
0:13 2 (const uint)
0:13 true case is null
0:13 true case is null
0:14 Test condition and select ( temp void)
0:14 Test condition and select ( temp void)
0:14 Condition
0:14 Condition
...
@@ -94,12 +91,11 @@ gl_FragCoord origin is upper left
...
@@ -94,12 +91,11 @@ gl_FragCoord origin is upper left
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 Constant:
0:14 Constant:
0:14 0 (const uint)
0:14 0 (const uint)
0:14 Convert int to bool ( temp bool)
0:14 Convert float to bool ( temp bool)
0:14 Convert float to int ( temp int)
0:14 fval: direct index for structure ( uniform float)
0:14 fval: direct index for structure ( uniform float)
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 'anon@0' (layout( row_major std140) uniform block{ uniform int ival, uniform 4-component vector of int ival4, uniform float fval, uniform 4-component vector of float fval4})
0:14 Constant:
0:14 Constant:
0:14 2 (const uint)
0:14 2 (const uint)
0:14 true case is null
0:14 true case is null
0:17 move second child to first child ( temp 4-component vector of float)
0:17 move second child to first child ( temp 4-component vector of float)
0:17 Color: direct index for structure ( temp 4-component vector of float)
0:17 Color: direct index for structure ( temp 4-component vector of float)
...
@@ -129,12 +125,12 @@ gl_FragCoord origin is upper left
...
@@ -129,12 +125,12 @@ gl_FragCoord origin is upper left
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80006
// Generated by (magic number): 80006
// Id's are bound by 5
7
// Id's are bound by 5
6
Capability Shader
Capability Shader
1: ExtInstImport "GLSL.std.450"
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 5
4
EntryPoint Fragment 4 "main" 5
3
ExecutionMode 4 OriginUpperLeft
ExecutionMode 4 OriginUpperLeft
Source HLSL 500
Source HLSL 500
Name 4 "main"
Name 4 "main"
...
@@ -147,15 +143,15 @@ gl_FragCoord origin is upper left
...
@@ -147,15 +143,15 @@ gl_FragCoord origin is upper left
MemberName 14($Global) 2 "fval"
MemberName 14($Global) 2 "fval"
MemberName 14($Global) 3 "fval4"
MemberName 14($Global) 3 "fval4"
Name 16 ""
Name 16 ""
Name 4
5
"psout"
Name 4
4
"psout"
Name 5
4
"@entryPointOutput.Color"
Name 5
3
"@entryPointOutput.Color"
MemberDecorate 14($Global) 0 Offset 0
MemberDecorate 14($Global) 0 Offset 0
MemberDecorate 14($Global) 1 Offset 16
MemberDecorate 14($Global) 1 Offset 16
MemberDecorate 14($Global) 2 Offset 32
MemberDecorate 14($Global) 2 Offset 32
MemberDecorate 14($Global) 3 Offset 48
MemberDecorate 14($Global) 3 Offset 48
Decorate 14($Global) Block
Decorate 14($Global) Block
Decorate 16 DescriptorSet 0
Decorate 16 DescriptorSet 0
Decorate 5
4
(@entryPointOutput.Color) Location 0
Decorate 5
3
(@entryPointOutput.Color) Location 0
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
6: TypeFloat 32
6: TypeFloat 32
...
@@ -174,29 +170,29 @@ gl_FragCoord origin is upper left
...
@@ -174,29 +170,29 @@ gl_FragCoord origin is upper left
23: 22(int) Constant 0
23: 22(int) Constant 0
25: 12(int) Constant 2
25: 12(int) Constant 2
26: TypePointer Uniform 6(float)
26: TypePointer Uniform 6(float)
44: TypePointer Function 8(PS_OUTPUT)
29: 6(float) Constant 0
46: 6(float) Constant 1065353216
43: TypePointer Function 8(PS_OUTPUT)
47: 7(fvec4) ConstantComposite 46 46 46 46
45: 6(float) Constant 1065353216
48: TypePointer Function 7(fvec4)
46: 7(fvec4) ConstantComposite 45 45 45 45
53: TypePointer Output 7(fvec4)
47: TypePointer Function 7(fvec4)
54(@entryPointOutput.Color): 53(ptr) Variable Output
52: TypePointer Output 7(fvec4)
53(@entryPointOutput.Color): 52(ptr) Variable Output
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
5
5
:8(PS_OUTPUT) FunctionCall 10(@main()
5
4
:8(PS_OUTPUT) FunctionCall 10(@main()
5
6: 7(fvec4) CompositeExtract 55
0
5
5: 7(fvec4) CompositeExtract 54
0
Store 5
4(@entryPointOutput.Color) 56
Store 5
3(@entryPointOutput.Color) 55
Return
Return
FunctionEnd
FunctionEnd
10(@main():8(PS_OUTPUT) Function None 9
10(@main():8(PS_OUTPUT) Function None 9
11: Label
11: Label
4
5(psout): 44
(ptr) Variable Function
4
4(psout): 43
(ptr) Variable Function
19: 18(ptr) AccessChain 16 17
19: 18(ptr) AccessChain 16 17
20: 12(int) Load 19
20: 12(int) Load 19
24: 21(bool) INotEqual 20 23
24: 21(bool) INotEqual 20 23
27: 26(ptr) AccessChain 16 25
27: 26(ptr) AccessChain 16 25
28: 6(float) Load 27
28: 6(float) Load 27
29: 12(int) ConvertFToS 28
30: 21(bool) FOrdNotEqual 28 29
30: 21(bool) INotEqual 29 23
31: 21(bool) LogicalAnd 24 30
31: 21(bool) LogicalAnd 24 30
SelectionMerge 33 None
SelectionMerge 33 None
BranchConditional 31 32 33
BranchConditional 31 32 33
...
@@ -208,16 +204,15 @@ gl_FragCoord origin is upper left
...
@@ -208,16 +204,15 @@ gl_FragCoord origin is upper left
36: 21(bool) INotEqual 35 23
36: 21(bool) INotEqual 35 23
37: 26(ptr) AccessChain 16 25
37: 26(ptr) AccessChain 16 25
38: 6(float) Load 37
38: 6(float) Load 37
39: 12(int) ConvertFToS 38
39: 21(bool) FOrdNotEqual 38 29
40: 21(bool) INotEqual 39 23
40: 21(bool) LogicalOr 36 39
41: 21(bool) LogicalOr 36 40
SelectionMerge 42 None
SelectionMerge 43 None
BranchConditional 40 41 42
BranchConditional 41 42 43
41: Label
42: Label
Branch 42
Branch 43
42: Label
43: Label
48: 47(ptr) AccessChain 44(psout) 17
49: 48(ptr) AccessChain 45(psout) 17
Store 48 46
Store 49 47
49:8(PS_OUTPUT) Load 44(psout)
50:8(PS_OUTPUT) Load 45(psout)
ReturnValue 49
ReturnValue 50
FunctionEnd
FunctionEnd
Test/baseResults/spv.int16.frag.out
View file @
fb1e40b4
spv.int16.frag
spv.int16.frag
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80006
// Generated by (magic number): 80006
// Id's are bound by 52
5
// Id's are bound by 52
3
Capability Shader
Capability Shader
Capability Float16
Capability Float16
...
@@ -55,48 +55,48 @@ spv.int16.frag
...
@@ -55,48 +55,48 @@ spv.int16.frag
Name 220 "i"
Name 220 "i"
Name 227 "uv"
Name 227 "uv"
Name 243 "i64"
Name 243 "i64"
Name 28
3
"b"
Name 28
1
"b"
Name 34
5
"i16v"
Name 34
3
"i16v"
Name 34
8
"i16"
Name 34
6
"i16"
Name 35
8
"u16v"
Name 35
6
"u16v"
Name 3
60
"u16"
Name 3
58
"u16"
Name 4
30
"i32"
Name 4
28
"i32"
Name 43
3
"i64"
Name 43
1
"i64"
Name 43
6
"i16v4"
Name 43
4
"i16v4"
Name 43
9
"u32"
Name 43
7
"u32"
Name 4
40
"u16v2"
Name 4
38
"u16v2"
Name 44
4
"u64"
Name 44
2
"u64"
Name 44
7
"u16v4"
Name 44
5
"u16v4"
Name 45
9
"bv"
Name 45
7
"bv"
Name 5
20
"Block"
Name 5
18
"Block"
MemberName 5
20
(Block) 0 "i16"
MemberName 5
18
(Block) 0 "i16"
MemberName 5
20
(Block) 1 "i16v2"
MemberName 5
18
(Block) 1 "i16v2"
MemberName 5
20
(Block) 2 "i16v3"
MemberName 5
18
(Block) 2 "i16v3"
MemberName 5
20
(Block) 3 "i16v4"
MemberName 5
18
(Block) 3 "i16v4"
MemberName 5
20
(Block) 4 "u16"
MemberName 5
18
(Block) 4 "u16"
MemberName 5
20
(Block) 5 "u16v2"
MemberName 5
18
(Block) 5 "u16v2"
MemberName 5
20
(Block) 6 "u16v3"
MemberName 5
18
(Block) 6 "u16v3"
MemberName 5
20
(Block) 7 "u16v4"
MemberName 5
18
(Block) 7 "u16v4"
Name 52
2
"block"
Name 52
0
"block"
Name 52
3
"si16"
Name 52
1
"si16"
Name 52
4
"su16"
Name 52
2
"su16"
MemberDecorate 24(Uniforms) 0 Offset 0
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
Decorate 26 Binding 0
MemberDecorate 5
20
(Block) 0 Offset 0
MemberDecorate 5
18
(Block) 0 Offset 0
MemberDecorate 5
20
(Block) 1 Offset 4
MemberDecorate 5
18
(Block) 1 Offset 4
MemberDecorate 5
20
(Block) 2 Offset 8
MemberDecorate 5
18
(Block) 2 Offset 8
MemberDecorate 5
20
(Block) 3 Offset 16
MemberDecorate 5
18
(Block) 3 Offset 16
MemberDecorate 5
20
(Block) 4 Offset 24
MemberDecorate 5
18
(Block) 4 Offset 24
MemberDecorate 5
20
(Block) 5 Offset 28
MemberDecorate 5
18
(Block) 5 Offset 28
MemberDecorate 5
20
(Block) 6 Offset 32
MemberDecorate 5
18
(Block) 6 Offset 32
MemberDecorate 5
20
(Block) 7 Offset 40
MemberDecorate 5
18
(Block) 7 Offset 40
Decorate 5
20
(Block) Block
Decorate 5
18
(Block) Block
Decorate 52
2
(block) DescriptorSet 0
Decorate 52
0
(block) DescriptorSet 0
Decorate 52
2
(block) Binding 1
Decorate 52
0
(block) Binding 1
Decorate 52
3
(si16) SpecId 100
Decorate 52
1
(si16) SpecId 100
Decorate 52
4
(su16) SpecId 101
Decorate 52
2
(su16) SpecId 101
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
14: TypeInt 16 1
14: TypeInt 16 1
...
@@ -171,28 +171,28 @@ spv.int16.frag
...
@@ -171,28 +171,28 @@ spv.int16.frag
242: TypePointer Function 71(int)
242: TypePointer Function 71(int)
264: 17(int) Constant 1
264: 17(int) Constant 1
270: 17(int) Constant 2
270: 17(int) Constant 2
27
5
: TypeVector 27(int) 3
27
6
: TypeVector 27(int) 3
28
2
: TypePointer Function 173(bool)
28
0
: TypePointer Function 173(bool)
28
4
: 17(int) Constant 0
28
2
: 17(int) Constant 0
29
8
: TypePointer Function 17(int)
29
6
: TypePointer Function 17(int)
35
6
: 52(ivec2) ConstantComposite 21 21
35
4
: 52(ivec2) ConstantComposite 21 21
36
5
: 193(ivec3) ConstantComposite 184 184 184
36
3
: 193(ivec3) ConstantComposite 184 184 184
40
7
: 173(bool) ConstantTrue
40
5
: 173(bool) ConstantTrue
41
4
: 173(bool) ConstantFalse
41
2
: 173(bool) ConstantFalse
41
5: 174(bvec2) ConstantComposite 414 414
41
3: 174(bvec2) ConstantComposite 412 412
42
7
: TypeVector 173(bool) 3
42
5
: TypeVector 173(bool) 3
42
8: 427(bvec3) ConstantComposite 414 414 414
42
6: 425(bvec3) ConstantComposite 412 412 412
43
4
: TypeVector 14(int) 4
43
2
: TypeVector 14(int) 4
43
5: TypePointer Function 434
(ivec4)
43
3: TypePointer Function 432
(ivec4)
44
3
: TypePointer Function 77(int)
44
1
: TypePointer Function 77(int)
44
5
: TypeVector 36(int) 4
44
3
: TypeVector 36(int) 4
44
6: TypePointer Function 445
(ivec4)
44
4: TypePointer Function 443
(ivec4)
45
8: TypePointer Function 427
(bvec3)
45
6: TypePointer Function 425
(bvec3)
5
20(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445
(ivec4)
5
18(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 432(ivec4) 36(int) 57(ivec2) 193(ivec3) 443
(ivec4)
5
21: TypePointer Uniform 520
(Block)
5
19: TypePointer Uniform 518
(Block)
52
2(block): 521
(ptr) Variable Uniform
52
0(block): 519
(ptr) Variable Uniform
52
3
(si16): 14(int) SpecConstant 4294967286
52
1
(si16): 14(int) SpecConstant 4294967286
52
4
(su16): 36(int) SpecConstant 20
52
2
(su16): 36(int) SpecConstant 20
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
Return
Return
...
@@ -371,7 +371,7 @@ spv.int16.frag
...
@@ -371,7 +371,7 @@ spv.int16.frag
220(i): 219(ptr) Variable Function
220(i): 219(ptr) Variable Function
227(uv): 226(ptr) Variable Function
227(uv): 226(ptr) Variable Function
243(i64): 242(ptr) Variable Function
243(i64): 242(ptr) Variable Function
28
3(b): 282
(ptr) Variable Function
28
1(b): 280
(ptr) Variable Function
196: 193(ivec3) Load 195(u16v)
196: 193(ivec3) Load 195(u16v)
198: 197(ivec3) CompositeConstruct 179 179 179
198: 197(ivec3) CompositeConstruct 179 179 179
199: 193(ivec3) IAdd 196 198
199: 193(ivec3) IAdd 196 198
...
@@ -460,287 +460,285 @@ spv.int16.frag
...
@@ -460,287 +460,285 @@ spv.int16.frag
273: 14(int) ShiftLeftLogical 269 272
273: 14(int) ShiftLeftLogical 269 272
Store 200(i16) 273
Store 200(i16) 273
274: 193(ivec3) Load 195(u16v)
274: 193(ivec3) Load 195(u16v)
276: 275(ivec3) UConvert 274
275: 27(int) Load 220(i)
277: 275(ivec3) Bitcast 276
277: 276(ivec3) CompositeConstruct 275 275 275
278: 27(int) Load 220(i)
278: 193(ivec3) ShiftLeftLogical 274 277
279: 275(ivec3) CompositeConstruct 278 278 278
279: 225(ivec3) UConvert 278
280: 275(ivec3) ShiftLeftLogical 277 279
Store 227(uv) 279
281: 225(ivec3) Bitcast 280
283: 37(ptr) AccessChain 195(u16v) 282
Store 227(uv) 281
284: 36(int) Load 283
285: 37(ptr) AccessChain 195(u16v) 284
285: 14(int) Load 200(i16)
286: 36(int) Load 285
286: 36(int) Bitcast 285
287: 14(int) Load 200(i16)
287: 173(bool) INotEqual 284 286
288: 36(int) Bitcast 287
Store 281(b) 287
289: 173(bool) INotEqual 286 288
288: 14(int) Load 200(i16)
Store 283(b) 289
289: 36(int) Bitcast 288
290: 14(int) Load 200(i16)
290: 37(ptr) AccessChain 195(u16v) 282
291: 36(int) Bitcast 290
291: 36(int) Load 290
292: 37(ptr) AccessChain 195(u16v) 284
292: 173(bool) IEqual 289 291
293: 36(int) Load 292
Store 281(b) 292
294: 173(bool) IEqual 291 293
293: 37(ptr) AccessChain 195(u16v) 282
Store 283(b) 294
294: 36(int) Load 293
295: 37(ptr) AccessChain 195(u16v) 284
295: 17(int) UConvert 294
296: 36(int) Load 295
297: 296(ptr) AccessChain 227(uv) 264
297: 17(int) UConvert 296
298: 17(int) Load 297
299: 298(ptr) AccessChain 227(uv) 264
299: 173(bool) UGreaterThan 295 298
300: 17(int) Load 299
Store 281(b) 299
301: 173(bool) UGreaterThan 297 300
300: 14(int) Load 200(i16)
Store 283(b) 301
301: 27(int) SConvert 300
302: 14(int) Load 200(i16)
302: 27(int) Load 220(i)
303: 27(int) SConvert 302
303: 173(bool) SLessThan 301 302
304: 27(int) Load 220(i)
Store 281(b) 303
305: 173(bool) SLessThan 303 304
304: 37(ptr) AccessChain 195(u16v) 264
Store 283(b) 305
305: 36(int) Load 304
306: 37(ptr) AccessChain 195(u16v) 264
306: 17(int) UConvert 305
307: 36(int) Load 306
307: 296(ptr) AccessChain 227(uv) 282
308: 17(int) UConvert 307
308: 17(int) Load 307
309: 298(ptr) AccessChain 227(uv) 284
309: 173(bool) UGreaterThanEqual 306 308
310: 17(int) Load 309
Store 281(b) 309
311: 173(bool) UGreaterThanEqual 308 310
310: 14(int) Load 200(i16)
Store 283(b) 311
311: 27(int) SConvert 310
312: 14(int) Load 200(i16)
312: 27(int) Load 220(i)
313: 27(int) SConvert 312
313: 173(bool) SLessThanEqual 311 312
314: 27(int) Load 220(i)
Store 281(b) 313
315: 173(bool) SLessThanEqual 313 314
314: 14(int) Load 200(i16)
Store 283(b) 315
315: 27(int) SConvert 314
316: 14(int) Load 200(i16)
316: 17(int) Bitcast 315
317: 27(int) SConvert 316
317: 225(ivec3) Load 227(uv)
318: 17(int) Bitcast 317
318: 225(ivec3) CompositeConstruct 316 316 316
319: 225(ivec3) Load 227(uv)
319: 225(ivec3) BitwiseOr 317 318
320: 225(ivec3) CompositeConstruct 318 318 318
Store 227(uv) 319
321: 225(ivec3) BitwiseOr 319 320
320: 14(int) Load 200(i16)
Store 227(uv) 321
321: 27(int) SConvert 320
322: 14(int) Load 200(i16)
322: 27(int) Load 220(i)
323: 27(int) SConvert 322
323: 27(int) BitwiseOr 321 322
324: 27(int) Load 220(i)
Store 220(i) 323
325: 27(int) BitwiseOr 323 324
324: 14(int) Load 200(i16)
Store 220(i) 325
325: 71(int) SConvert 324
326: 14(int) Load 200(i16)
326: 71(int) Load 243(i64)
327: 71(int) SConvert 326
327: 71(int) BitwiseAnd 326 325
328: 71(int) Load 243(i64)
Store 243(i64) 327
329: 71(int) BitwiseAnd 328 327
328: 193(ivec3) Load 195(u16v)
Store 243(i64) 329
329: 225(ivec3) UConvert 328
330: 193(ivec3) Load 195(u16v)
330: 225(ivec3) Load 227(uv)
331: 225(ivec3) UConvert 330
331: 225(ivec3) BitwiseAnd 329 330
332: 225(ivec3) Load 227(uv)
Store 227(uv) 331
333: 225(ivec3) BitwiseAnd 331 332
332: 14(int) Load 200(i16)
Store 227(uv) 333
333: 27(int) SConvert 332
334: 14(int) Load 200(i16)
334: 17(int) Bitcast 333
335: 27(int) SConvert 334
335: 225(ivec3) Load 227(uv)
336: 17(int) Bitcast 335
336: 225(ivec3) CompositeConstruct 334 334 334
337: 225(ivec3) Load 227(uv)
337: 225(ivec3) BitwiseXor 335 336
338: 225(ivec3) CompositeConstruct 336 336 336
Store 227(uv) 337
339: 225(ivec3) BitwiseXor 337 338
338: 193(ivec3) Load 195(u16v)
Store 227(uv) 339
339: 14(int) Load 200(i16)
340: 193(ivec3) Load 195(u16v)
340: 36(int) Bitcast 339
341: 14(int) Load 200(i16)
341: 193(ivec3) CompositeConstruct 340 340 340
342: 36(int) Bitcast 341
342: 193(ivec3) BitwiseXor 338 341
343: 193(ivec3) CompositeConstruct 342 342 342
Store 195(u16v) 342
344: 193(ivec3) BitwiseXor 340 343
Store 195(u16v) 344
Return
Return
FunctionEnd
FunctionEnd
12(builtinFuncs(): 2 Function None 3
12(builtinFuncs(): 2 Function None 3
13: Label
13: Label
345(i16v): 53(ptr) Variable Function
343(i16v): 53(ptr) Variable Function
348(i16): 15(ptr) Variable Function
346(i16): 15(ptr) Variable Function
358(u16v): 194(ptr) Variable Function
356(u16v): 194(ptr) Variable Function
360(u16): 37(ptr) Variable Function
358(u16): 37(ptr) Variable Function
430(i32): 219(ptr) Variable Function
428(i32): 219(ptr) Variable Function
433(i64): 242(ptr) Variable Function
431(i64): 242(ptr) Variable Function
436(i16v4): 435(ptr) Variable Function
434(i16v4): 433(ptr) Variable Function
439(u32): 298(ptr) Variable Function
437(u32): 296(ptr) Variable Function
440(u16v2): 58(ptr) Variable Function
438(u16v2): 58(ptr) Variable Function
444(u64): 443(ptr) Variable Function
442(u64): 441(ptr) Variable Function
447(u16v4): 446(ptr) Variable Function
445(u16v4): 444(ptr) Variable Function
459(bv): 458(ptr) Variable Function
457(bv): 456(ptr) Variable Function
346: 52(ivec2) Load 345(i16v)
344: 52(ivec2) Load 343(i16v)
347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346
345: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344
Store 345(i16v) 347
Store 343(i16v) 345
349: 14(int) Load 348(i16)
347: 14(int) Load 346(i16)
350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349
348: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 347
Store 348(i16) 350
Store 346(i16) 348
351: 52(ivec2) Load 345(i16v)
349: 52(ivec2) Load 343(i16v)
352: 14(int) Load 348(i16)
350: 14(int) Load 346(i16)
353: 52(ivec2) CompositeConstruct 352 352
351: 52(ivec2) CompositeConstruct 350 350
354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353
352: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351
Store 345(i16v) 354
Store 343(i16v) 352
355: 52(ivec2) Load 345(i16v)
353: 52(ivec2) Load 343(i16v)
357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356
355: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354
Store 345(i16v) 357
Store 343(i16v) 355
359: 193(ivec3) Load 358(u16v)
357: 193(ivec3) Load 356(u16v)
361: 36(int) Load 360(u16)
359: 36(int) Load 358(u16)
362: 193(ivec3) CompositeConstruct 361 361 361
360: 193(ivec3) CompositeConstruct 359 359 359
363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362
361: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360
Store 358(u16v) 363
Store 356(u16v) 361
364: 193(ivec3) Load 358(u16v)
362: 193(ivec3) Load 356(u16v)
366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365
364: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363
Store 358(u16v) 366
Store 356(u16v) 364
367: 52(ivec2) Load 345(i16v)
365: 52(ivec2) Load 343(i16v)
368: 14(int) Load 348(i16)
366: 14(int) Load 346(i16)
369: 52(ivec2) CompositeConstruct 368 368
367: 52(ivec2) CompositeConstruct 366 366
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369
368: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367
Store 345(i16v) 370
Store 343(i16v) 368
371: 52(ivec2) Load 345(i16v)
369: 52(ivec2) Load 343(i16v)
372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354
Store 345(i16v) 372
Store 343(i16v) 370
373: 193(ivec3) Load 358(u16v)
371: 193(ivec3) Load 356(u16v)
374: 36(int) Load 360(u16)
372: 36(int) Load 358(u16)
375: 193(ivec3) CompositeConstruct 374 374 374
373: 193(ivec3) CompositeConstruct 372 372 372
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375
374: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373
Store 358(u16v) 376
Store 356(u16v) 374
377: 193(ivec3) Load 358(u16v)
375: 193(ivec3) Load 356(u16v)
378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363
Store 358(u16v) 378
Store 356(u16v) 376
379: 52(ivec2) Load 345(i16v)
377: 52(ivec2) Load 343(i16v)
380: 14(int) Load 348(i16)
378: 14(int) Load 346(i16)
381: 14(int) SNegate 380
379: 14(int) SNegate 378
382: 14(int) Load 348(i16)
380: 14(int) Load 346(i16)
383: 52(ivec2) CompositeConstruct 381 381
381: 52(ivec2) CompositeConstruct 379 379
384: 52(ivec2) CompositeConstruct 382 382
382: 52(ivec2) CompositeConstruct 380 380
385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384
383: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382
Store 345(i16v) 385
Store 343(i16v) 383
386: 52(ivec2) Load 345(i16v)
384: 52(ivec2) Load 343(i16v)
387: 52(ivec2) Load 345(i16v)
385: 52(ivec2) Load 343(i16v)
388: 52(ivec2) SNegate 387
386: 52(ivec2) SNegate 385
389: 52(ivec2) Load 345(i16v)
387: 52(ivec2) Load 343(i16v)
390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389
388: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387
Store 345(i16v) 390
Store 343(i16v) 388
391: 193(ivec3) Load 358(u16v)
389: 193(ivec3) Load 356(u16v)
392: 36(int) Load 360(u16)
390: 36(int) Load 358(u16)
393: 36(int) SNegate 392
391: 36(int) SNegate 390
394: 36(int) Load 360(u16)
392: 36(int) Load 358(u16)
395: 193(ivec3) CompositeConstruct 393 393 393
393: 193(ivec3) CompositeConstruct 391 391 391
396: 193(ivec3) CompositeConstruct 394 394 394
394: 193(ivec3) CompositeConstruct 392 392 392
397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396
395: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394
Store 358(u16v) 397
Store 356(u16v) 395
398: 193(ivec3) Load 358(u16v)
396: 193(ivec3) Load 356(u16v)
399: 193(ivec3) Load 358(u16v)
397: 193(ivec3) Load 356(u16v)
400: 193(ivec3) SNegate 399
398: 193(ivec3) SNegate 397
401: 193(ivec3) Load 358(u16v)
399: 193(ivec3) Load 356(u16v)
402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401
400: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399
Store 358(u16v) 402
Store 356(u16v) 400
403: 15(ptr) AccessChain 345(i16v) 284
401: 15(ptr) AccessChain 343(i16v) 282
402: 14(int) Load 401
403: 15(ptr) AccessChain 343(i16v) 264
404: 14(int) Load 403
404: 14(int) Load 403
40
5: 15(ptr) AccessChain 345(i16v) 264
40
6: 14(int) Select 405 404 402
406: 14(int) Load 405
Store 346(i16) 406
40
8: 14(int) Select 407 406 404
40
7: 14(int) Load 346(i16)
Store 348(i16) 408
408: 52(ivec2) CompositeConstruct 407 407
409: 14(int) Load 34
8
(i16)
409: 14(int) Load 34
6
(i16)
410:
52(ivec2) CompositeConstruct 409
409
410:
14(int) SNegate
409
411:
14(int) Load 348(i16)
411:
52(ivec2) CompositeConstruct 410 410
41
2: 14(int) SNegate 411
41
4: 52(ivec2) Select 413 411 408
413: 52(ivec2) CompositeConstruct 412 412
Store 343(i16v) 414
41
6: 52(ivec2) Select 415 413 410
41
5: 37(ptr) AccessChain 356(u16v) 282
Store 345(i16v) 416
416: 36(int) Load 415
417: 37(ptr) AccessChain 35
8(u16v) 28
4
417: 37(ptr) AccessChain 35
6(u16v) 26
4
418: 36(int) Load 417
418: 36(int) Load 417
419: 37(ptr) AccessChain 358(u16v) 264
419: 36(int) Select 405 418 416
420: 36(int) Load 419
Store 358(u16) 419
421: 36(int) Select 407 420 418
420: 36(int) Load 358(u16)
Store 360(u16) 421
421: 193(ivec3) CompositeConstruct 420 420 420
422: 36(int) Load 360(u16)
422: 36(int) Load 358(u16)
423: 193(ivec3) CompositeConstruct 422 422 422
423: 36(int) SNegate 422
424: 36(int) Load 360(u16)
424: 193(ivec3) CompositeConstruct 423 423 423
425: 36(int) SNegate 424
427: 193(ivec3) Select 426 424 421
426: 193(ivec3) CompositeConstruct 425 425 425
Store 356(u16v) 427
429: 193(ivec3) Select 428 426 423
429: 52(ivec2) Load 343(i16v)
Store 358(u16v) 429
430: 27(int) Bitcast 429
431: 52(ivec2) Load 345(i16v)
Store 428(i32) 430
432: 27(int) Bitcast 431
435: 432(ivec4) Load 434(i16v4)
Store 430(i32) 432
436: 71(int) Bitcast 435
437: 434(ivec4) Load 436(i16v4)
Store 431(i64) 436
438: 71(int) Bitcast 437
439: 57(ivec2) Load 438(u16v2)
Store 433(i64) 438
440: 17(int) Bitcast 439
441: 57(ivec2) Load 440(u16v2)
Store 437(u32) 440
442: 17(int) Bitcast 441
446: 443(ivec4) Load 445(u16v4)
Store 439(u32) 442
447: 77(int) Bitcast 446
448: 445(ivec4) Load 447(u16v4)
Store 442(u64) 447
449: 77(int) Bitcast 448
448: 27(int) Load 428(i32)
Store 444(u64) 449
449: 52(ivec2) Bitcast 448
450: 27(int) Load 430(i32)
Store 343(i16v) 449
451: 52(ivec2) Bitcast 450
450: 71(int) Load 431(i64)
Store 345(i16v) 451
451: 432(ivec4) Bitcast 450
452: 71(int) Load 433(i64)
Store 434(i16v4) 451
453: 434(ivec4) Bitcast 452
452: 17(int) Load 437(u32)
Store 436(i16v4) 453
453: 57(ivec2) Bitcast 452
454: 17(int) Load 439(u32)
Store 438(u16v2) 453
455: 57(ivec2) Bitcast 454
454: 77(int) Load 442(u64)
Store 440(u16v2) 455
455: 443(ivec4) Bitcast 454
456: 77(int) Load 444(u64)
Store 445(u16v4) 455
457: 445(ivec4) Bitcast 456
458: 193(ivec3) Load 356(u16v)
Store 447(u16v4) 457
459: 36(int) Load 358(u16)
460: 193(ivec3) Load 358(u16v)
460: 193(ivec3) CompositeConstruct 459 459 459
461: 36(int) Load 360(u16)
461: 425(bvec3) ULessThan 458 460
462: 193(ivec3) CompositeConstruct 461 461 461
Store 457(bv) 461
463: 427(bvec3) ULessThan 460 462
462: 52(ivec2) Load 343(i16v)
Store 459(bv) 463
463: 14(int) Load 346(i16)
464: 52(ivec2) Load 345(i16v)
464: 52(ivec2) CompositeConstruct 463 463
465: 14(int) Load 348(i16)
465: 174(bvec2) SLessThan 462 464
466: 52(ivec2) CompositeConstruct 465 465
466: 425(bvec3) Load 457(bv)
467: 174(bvec2) SLessThan 464 466
467: 425(bvec3) VectorShuffle 466 465 3 4 2
468: 427(bvec3) Load 459(bv)
Store 457(bv) 467
469: 427(bvec3) VectorShuffle 468 467 3 4 2
468: 193(ivec3) Load 356(u16v)
Store 459(bv) 469
469: 36(int) Load 358(u16)
470: 193(ivec3) Load 358(u16v)
470: 193(ivec3) CompositeConstruct 469 469 469
471: 36(int) Load 360(u16)
471: 425(bvec3) ULessThanEqual 468 470
472: 193(ivec3) CompositeConstruct 471 471 471
Store 457(bv) 471
473: 427(bvec3) ULessThanEqual 470 472
472: 52(ivec2) Load 343(i16v)
Store 459(bv) 473
473: 14(int) Load 346(i16)
474: 52(ivec2) Load 345(i16v)
474: 52(ivec2) CompositeConstruct 473 473
475: 14(int) Load 348(i16)
475: 174(bvec2) SLessThanEqual 472 474
476: 52(ivec2) CompositeConstruct 475 475
476: 425(bvec3) Load 457(bv)
477: 174(bvec2) SLessThanEqual 474 476
477: 425(bvec3) VectorShuffle 476 475 3 4 2
478: 427(bvec3) Load 459(bv)
Store 457(bv) 477
479: 427(bvec3) VectorShuffle 478 477 3 4 2
478: 193(ivec3) Load 356(u16v)
Store 459(bv) 479
479: 36(int) Load 358(u16)
480: 193(ivec3) Load 358(u16v)
480: 193(ivec3) CompositeConstruct 479 479 479
481: 36(int) Load 360(u16)
481: 425(bvec3) UGreaterThan 478 480
482: 193(ivec3) CompositeConstruct 481 481 481
Store 457(bv) 481
483: 427(bvec3) UGreaterThan 480 482
482: 52(ivec2) Load 343(i16v)
Store 459(bv) 483
483: 14(int) Load 346(i16)
484: 52(ivec2) Load 345(i16v)
484: 52(ivec2) CompositeConstruct 483 483
485: 14(int) Load 348(i16)
485: 174(bvec2) SGreaterThan 482 484
486: 52(ivec2) CompositeConstruct 485 485
486: 425(bvec3) Load 457(bv)
487: 174(bvec2) SGreaterThan 484 486
487: 425(bvec3) VectorShuffle 486 485 3 4 2
488: 427(bvec3) Load 459(bv)
Store 457(bv) 487
489: 427(bvec3) VectorShuffle 488 487 3 4 2
488: 193(ivec3) Load 356(u16v)
Store 459(bv) 489
489: 36(int) Load 358(u16)
490: 193(ivec3) Load 358(u16v)
490: 193(ivec3) CompositeConstruct 489 489 489
491: 36(int) Load 360(u16)
491: 425(bvec3) UGreaterThanEqual 488 490
492: 193(ivec3) CompositeConstruct 491 491 491
Store 457(bv) 491
493: 427(bvec3) UGreaterThanEqual 490 492
492: 52(ivec2) Load 343(i16v)
Store 459(bv) 493
493: 14(int) Load 346(i16)
494: 52(ivec2) Load 345(i16v)
494: 52(ivec2) CompositeConstruct 493 493
495: 14(int) Load 348(i16)
495: 174(bvec2) SGreaterThanEqual 492 494
496: 52(ivec2) CompositeConstruct 495 495
496: 425(bvec3) Load 457(bv)
497: 174(bvec2) SGreaterThanEqual 494 496
497: 425(bvec3) VectorShuffle 496 495 3 4 2
498: 427(bvec3) Load 459(bv)
Store 457(bv) 497
499: 427(bvec3) VectorShuffle 498 497 3 4 2
498: 193(ivec3) Load 356(u16v)
Store 459(bv) 499
499: 36(int) Load 358(u16)
500: 193(ivec3) Load 358(u16v)
500: 193(ivec3) CompositeConstruct 499 499 499
501: 36(int) Load 360(u16)
501: 425(bvec3) IEqual 498 500
502: 193(ivec3) CompositeConstruct 501 501 501
Store 457(bv) 501
503: 427(bvec3) IEqual 500 502
502: 52(ivec2) Load 343(i16v)
Store 459(bv) 503
503: 14(int) Load 346(i16)
504: 52(ivec2) Load 345(i16v)
504: 52(ivec2) CompositeConstruct 503 503
505: 14(int) Load 348(i16)
505: 174(bvec2) IEqual 502 504
506: 52(ivec2) CompositeConstruct 505 505
506: 425(bvec3) Load 457(bv)
507: 174(bvec2) IEqual 504 506
507: 425(bvec3) VectorShuffle 506 505 3 4 2
508: 427(bvec3) Load 459(bv)
Store 457(bv) 507
509: 427(bvec3) VectorShuffle 508 507 3 4 2
508: 193(ivec3) Load 356(u16v)
Store 459(bv) 509
509: 36(int) Load 358(u16)
510: 193(ivec3) Load 358(u16v)
510: 193(ivec3) CompositeConstruct 509 509 509
511: 36(int) Load 360(u16)
511: 425(bvec3) INotEqual 508 510
512: 193(ivec3) CompositeConstruct 511 511 511
Store 457(bv) 511
513: 427(bvec3) INotEqual 510 512
512: 52(ivec2) Load 343(i16v)
Store 459(bv) 513
513: 14(int) Load 346(i16)
514: 52(ivec2) Load 345(i16v)
514: 52(ivec2) CompositeConstruct 513 513
515: 14(int) Load 348(i16)
515: 174(bvec2) INotEqual 512 514
516: 52(ivec2) CompositeConstruct 515 515
516: 425(bvec3) Load 457(bv)
517: 174(bvec2) INotEqual 514 516
517: 425(bvec3) VectorShuffle 516 515 3 4 2
518: 427(bvec3) Load 459(bv)
Store 457(bv) 517
519: 427(bvec3) VectorShuffle 518 517 3 4 2
Store 459(bv) 519
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.int32.frag.out
View file @
fb1e40b4
spv.int32.frag
spv.int32.frag
// Module Version 10300
// Module Version 10300
// Generated by (magic number): 80006
// Generated by (magic number): 80006
// Id's are bound by 49
5
// Id's are bound by 49
3
Capability Shader
Capability Shader
Capability Float16
Capability Float16
...
@@ -52,54 +52,54 @@ spv.int32.frag
...
@@ -52,54 +52,54 @@ spv.int32.frag
Name 210 "i"
Name 210 "i"
Name 214 "uv"
Name 214 "uv"
Name 227 "i64"
Name 227 "i64"
Name 26
2
"b"
Name 26
0
"b"
Name 31
4
"i32v"
Name 31
2
"i32v"
Name 31
7
"i32"
Name 31
5
"i32"
Name 32
7
"u32v"
Name 32
5
"u32v"
Name 32
9
"u32"
Name 32
7
"u32"
Name
401
"i8v4"
Name
399
"i8v4"
Name 40
4
"i16v2"
Name 40
2
"i16v2"
Name 40
9
"u8v4"
Name 40
7
"u8v4"
Name 41
2
"u16v2"
Name 41
0
"u16v2"
Name 41
5
"i64"
Name 41
3
"i64"
Name 41
8
"u32v2"
Name 41
6
"u32v2"
Name 4
20
"u64"
Name 4
18
"u64"
Name 42
4
"bv"
Name 42
2
"bv"
Name 48
7
"Block"
Name 48
5
"Block"
MemberName 48
7
(Block) 0 "i32"
MemberName 48
5
(Block) 0 "i32"
MemberName 48
7
(Block) 1 "i32v2"
MemberName 48
5
(Block) 1 "i32v2"
MemberName 48
7
(Block) 2 "i32v3"
MemberName 48
5
(Block) 2 "i32v3"
MemberName 48
7
(Block) 3 "i32v4"
MemberName 48
5
(Block) 3 "i32v4"
MemberName 48
7
(Block) 4 "u32"
MemberName 48
5
(Block) 4 "u32"
MemberName 48
7
(Block) 5 "u32v2"
MemberName 48
5
(Block) 5 "u32v2"
MemberName 48
7
(Block) 6 "u32v3"
MemberName 48
5
(Block) 6 "u32v3"
MemberName 48
7
(Block) 7 "u32v4"
MemberName 48
5
(Block) 7 "u32v4"
Name 48
9
"block"
Name 48
7
"block"
Name 4
90
"si32"
Name 4
88
"si32"
Name 4
91
"su32"
Name 4
89
"su32"
Name 49
2
"si"
Name 49
0
"si"
Name 49
3
"su"
Name 49
1
"su"
Name 49
4
"sb"
Name 49
2
"sb"
MemberDecorate 27(Uniforms) 0 Offset 0
MemberDecorate 27(Uniforms) 0 Offset 0
Decorate 27(Uniforms) Block
Decorate 27(Uniforms) Block
Decorate 29 DescriptorSet 0
Decorate 29 DescriptorSet 0
Decorate 29 Binding 0
Decorate 29 Binding 0
MemberDecorate 48
7
(Block) 0 Offset 0
MemberDecorate 48
5
(Block) 0 Offset 0
MemberDecorate 48
7
(Block) 1 Offset 8
MemberDecorate 48
5
(Block) 1 Offset 8
MemberDecorate 48
7
(Block) 2 Offset 16
MemberDecorate 48
5
(Block) 2 Offset 16
MemberDecorate 48
7
(Block) 3 Offset 32
MemberDecorate 48
5
(Block) 3 Offset 32
MemberDecorate 48
7
(Block) 4 Offset 48
MemberDecorate 48
5
(Block) 4 Offset 48
MemberDecorate 48
7
(Block) 5 Offset 56
MemberDecorate 48
5
(Block) 5 Offset 56
MemberDecorate 48
7
(Block) 6 Offset 64
MemberDecorate 48
5
(Block) 6 Offset 64
MemberDecorate 48
7
(Block) 7 Offset 80
MemberDecorate 48
5
(Block) 7 Offset 80
Decorate 48
7
(Block) Block
Decorate 48
5
(Block) Block
Decorate 48
9
(block) DescriptorSet 0
Decorate 48
7
(block) DescriptorSet 0
Decorate 48
9
(block) Binding 1
Decorate 48
7
(block) Binding 1
Decorate 4
90
(si32) SpecId 100
Decorate 4
88
(si32) SpecId 100
Decorate 4
91
(su32) SpecId 101
Decorate 4
89
(su32) SpecId 101
Decorate 49
2
(si) SpecId 102
Decorate 49
0
(si) SpecId 102
Decorate 49
3
(su) SpecId 103
Decorate 49
1
(su) SpecId 103
Decorate 49
4
(sb) SpecId 104
Decorate 49
2
(sb) SpecId 104
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
14: TypeInt 32 0
14: TypeInt 32 0
...
@@ -171,30 +171,30 @@ spv.int32.frag
...
@@ -171,30 +171,30 @@ spv.int32.frag
188: TypeVector 18(int) 3
188: TypeVector 18(int) 3
226: TypePointer Function 57(int)
226: TypePointer Function 57(int)
251: 14(int) Constant 2
251: 14(int) Constant 2
2
61
: TypePointer Function 165(bool)
2
59
: TypePointer Function 165(bool)
32
5
: 52(ivec2) ConstantComposite 24 24
32
3
: 52(ivec2) ConstantComposite 24 24
33
4
: 184(ivec3) ConstantComposite 175 175 175
33
2
: 184(ivec3) ConstantComposite 175 175 175
37
6
: 165(bool) ConstantTrue
37
4
: 165(bool) ConstantTrue
38
3
: 165(bool) ConstantFalse
38
1
: 165(bool) ConstantFalse
38
4: 166(bvec2) ConstantComposite 383 383
38
2: 166(bvec2) ConstantComposite 381 381
39
6
: TypeVector 165(bool) 3
39
4
: TypeVector 165(bool) 3
39
7: 396(bvec3) ConstantComposite 383 383 383
39
5: 394(bvec3) ConstantComposite 381 381 381
39
9
: TypeVector 91(int) 4
39
7
: TypeVector 91(int) 4
400: TypePointer Function 399
(ivec4)
398: TypePointer Function 397
(ivec4)
40
7
: TypeVector 120(int) 4
40
5
: TypeVector 120(int) 4
40
8: TypePointer Function 407
(ivec4)
40
6: TypePointer Function 405
(ivec4)
41
9
: TypePointer Function 63(int)
41
7
: TypePointer Function 63(int)
42
3: TypePointer Function 396
(bvec3)
42
1: TypePointer Function 394
(bvec3)
48
5
: TypeVector 18(int) 4
48
3
: TypeVector 18(int) 4
48
6
: TypeVector 14(int) 4
48
4
: TypeVector 14(int) 4
48
7(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 485(ivec4) 14(int) 49(ivec2) 184(ivec3) 486
(ivec4)
48
5(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 483(ivec4) 14(int) 49(ivec2) 184(ivec3) 484
(ivec4)
48
8: TypePointer Uniform 487
(Block)
48
6: TypePointer Uniform 485
(Block)
48
9(block): 488
(ptr) Variable Uniform
48
7(block): 486
(ptr) Variable Uniform
4
90
(si32): 18(int) SpecConstant 4294967286
4
88
(si32): 18(int) SpecConstant 4294967286
4
91
(su32): 14(int) SpecConstant 20
4
89
(su32): 14(int) SpecConstant 20
49
2
(si): 18(int) SpecConstant 4294967291
49
0
(si): 18(int) SpecConstant 4294967291
49
3
(su): 14(int) SpecConstant 4
49
1
(su): 14(int) SpecConstant 4
49
4
(sb): 165(bool) SpecConstantTrue
49
2
(sb): 165(bool) SpecConstantTrue
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
Store 16(u32Max) 17
Store 16(u32Max) 17
...
@@ -360,7 +360,7 @@ spv.int32.frag
...
@@ -360,7 +360,7 @@ spv.int32.frag
210(i): 19(ptr) Variable Function
210(i): 19(ptr) Variable Function
214(uv): 185(ptr) Variable Function
214(uv): 185(ptr) Variable Function
227(i64): 226(ptr) Variable Function
227(i64): 226(ptr) Variable Function
26
2(b): 261
(ptr) Variable Function
26
0(b): 259
(ptr) Variable Function
187: 184(ivec3) Load 186(u32v)
187: 184(ivec3) Load 186(u32v)
189: 188(ivec3) CompositeConstruct 170 170 170
189: 188(ivec3) CompositeConstruct 170 170 170
190: 184(ivec3) IAdd 187 189
190: 184(ivec3) IAdd 187 189
...
@@ -440,275 +440,273 @@ spv.int32.frag
...
@@ -440,275 +440,273 @@ spv.int32.frag
250: 57(int) Load 227(i64)
250: 57(int) Load 227(i64)
252: 38(ptr) AccessChain 186(u32v) 251
252: 38(ptr) AccessChain 186(u32v) 251
253: 14(int) Load 252
253: 14(int) Load 252
254: 57(int)
UConvert
253
254: 57(int)
ShiftLeftLogical 250
253
255: 57(int) Bitcast
254
Store 227(i64)
254
25
6: 57(int) ShiftLeftLogical 250 255
25
5: 184(ivec3) Load 186(u32v)
Store 227(i64) 256
256: 18(int) Load 210(i)
257: 18
4(ivec3) Load 186(u32v)
257: 18
8(ivec3) CompositeConstruct 256 256 256
258:
18(int) Load 210(i)
258:
184(ivec3) ShiftLeftLogical 255 257
259: 188(ivec3) CompositeConstruct 258 258
258
Store 214(uv)
258
26
0: 184(ivec3) ShiftLeftLogical 257 259
26
1: 38(ptr) AccessChain 186(u32v) 175
Store 214(uv) 260
262: 14(int) Load 261
263:
38(ptr) AccessChain 186(u32v) 175
263:
18(int) Load 191(i32)
264: 14(int)
Load
263
264: 14(int)
Bitcast
263
265:
18(int) Load 191(i32)
265:
165(bool) INotEqual 262 264
266: 14(int) Bitcast
265
Store 260(b)
265
26
7: 165(bool) INotEqual 264 266
26
6: 18(int) Load 191(i32)
Store 262(b) 267
267: 14(int) Bitcast 266
268:
18(int) Load 191(i32)
268:
38(ptr) AccessChain 186(u32v) 175
269: 14(int)
Bitcast
268
269: 14(int)
Load
268
270:
38(ptr) AccessChain 186(u32v) 175
270:
165(bool) IEqual 267 269
271: 14(int) Load
270
Store 260(b)
270
27
2: 165(bool) IEqual 269 271
27
1: 38(ptr) AccessChain 186(u32v) 175
Store 262(b) 272
272: 14(int) Load 271
273: 38(ptr) AccessChain
186(u32v) 175
273: 38(ptr) AccessChain
214(uv) 176
274: 14(int) Load 273
274: 14(int) Load 273
275:
38(ptr) AccessChain 214(uv) 176
275:
165(bool) UGreaterThan 272 274
276: 14(int) Load
275
Store 260(b)
275
27
7: 165(bool) UGreaterThan 274 276
27
6: 18(int) Load 191(i32)
Store 262(b) 277
277: 18(int) Load 210(i)
278:
18(int) Load 191(i32)
278:
165(bool) SLessThan 276 277
279: 18(int) Load 210(i)
Store 260(b) 278
2
80: 165(bool) SLessThan 278 279
2
79: 38(ptr) AccessChain 186(u32v) 176
Store 262(b) 280
280: 14(int) Load 279
281: 38(ptr) AccessChain
186(u32v) 176
281: 38(ptr) AccessChain
214(uv) 175
282: 14(int) Load 281
282: 14(int) Load 281
283: 38(ptr) AccessChain 214(uv) 175
283: 165(bool) UGreaterThanEqual 280 282
284: 14(int) Load 283
Store 260(b) 283
285: 165(bool) UGreaterThanEqual 282 284
284: 18(int) Load 191(i32)
Store 262(b) 285
285: 18(int) Load 210(i)
286: 18(int) Load 191(i32)
286: 165(bool) SLessThanEqual 284 285
287: 18(int) Load 210(i)
Store 260(b) 286
288: 165(bool) SLessThanEqual 286 287
287: 18(int) Load 191(i32)
Store 262(b) 288
288: 14(int) Bitcast 287
289: 18(int) Load 191(i32)
289: 184(ivec3) Load 214(uv)
290: 14(int) Bitcast 289
290: 184(ivec3) CompositeConstruct 288 288 288
291: 184(ivec3) Load 214(uv)
291: 184(ivec3) BitwiseOr 289 290
292: 184(ivec3) CompositeConstruct 290 290 290
Store 214(uv) 291
293: 184(ivec3) BitwiseOr 291 292
292: 18(int) Load 191(i32)
Store 214(uv) 293
293: 18(int) Load 210(i)
294: 18(int) Load 191(i32)
294: 18(int) BitwiseOr 292 293
295: 18(int) Load 210(i)
Store 210(i) 294
296: 18(int) BitwiseOr 294 295
295: 18(int) Load 191(i32)
Store 210(i) 296
296: 57(int) SConvert 295
297: 18(int) Load 191(i32)
297: 57(int) Load 227(i64)
298: 57(int) SConvert 297
298: 57(int) BitwiseAnd 297 296
299: 57(int) Load 227(i64)
Store 227(i64) 298
300: 57(int) BitwiseAnd 299 298
299: 184(ivec3) Load 186(u32v)
Store 227(i64) 300
300: 184(ivec3) Load 214(uv)
301: 184(ivec3) Load 186(u32v)
301: 184(ivec3) BitwiseAnd 299 300
302: 184(ivec3) Load 214(uv)
Store 214(uv) 301
303: 184(ivec3) BitwiseAnd 301 302
302: 18(int) Load 191(i32)
Store 214(uv) 303
303: 14(int) Bitcast 302
304: 18(int) Load 191(i32)
304: 184(ivec3) Load 214(uv)
305: 14(int) Bitcast 304
305: 184(ivec3) CompositeConstruct 303 303 303
306: 184(ivec3) Load 214(uv)
306: 184(ivec3) BitwiseXor 304 305
307: 184(ivec3) CompositeConstruct 305 305 305
Store 214(uv) 306
308: 184(ivec3) BitwiseXor 306 307
307: 184(ivec3) Load 186(u32v)
Store 214(uv) 308
308: 18(int) Load 191(i32)
309: 184(ivec3) Load 186(u32v)
309: 14(int) Bitcast 308
310: 18(int) Load 191(i32)
310: 184(ivec3) CompositeConstruct 309 309 309
311: 14(int) Bitcast 310
311: 184(ivec3) BitwiseXor 307 310
312: 184(ivec3) CompositeConstruct 311 311 311
Store 186(u32v) 311
313: 184(ivec3) BitwiseXor 309 312
Store 186(u32v) 313
Return
Return
FunctionEnd
FunctionEnd
12(builtinFuncs(): 2 Function None 3
12(builtinFuncs(): 2 Function None 3
13: Label
13: Label
314(i32v): 53(ptr) Variable Function
312(i32v): 53(ptr) Variable Function
317(i32): 19(ptr) Variable Function
315(i32): 19(ptr) Variable Function
327(u32v): 185(ptr) Variable Function
325(u32v): 185(ptr) Variable Function
329(u32): 38(ptr) Variable Function
327(u32): 38(ptr) Variable Function
401(i8v4): 400(ptr) Variable Function
399(i8v4): 398(ptr) Variable Function
404(i16v2): 102(ptr) Variable Function
402(i16v2): 102(ptr) Variable Function
409(u8v4): 408(ptr) Variable Function
407(u8v4): 406(ptr) Variable Function
412(u16v2): 131(ptr) Variable Function
410(u16v2): 131(ptr) Variable Function
415(i64): 226(ptr) Variable Function
413(i64): 226(ptr) Variable Function
418(u32v2): 50(ptr) Variable Function
416(u32v2): 50(ptr) Variable Function
420(u64): 419(ptr) Variable Function
418(u64): 417(ptr) Variable Function
424(bv): 423(ptr) Variable Function
422(bv): 421(ptr) Variable Function
315: 52(ivec2) Load 314(i32v)
313: 52(ivec2) Load 312(i32v)
316: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 315
314: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 313
Store 314(i32v) 316
Store 312(i32v) 314
318: 18(int) Load 317(i32)
316: 18(int) Load 315(i32)
319: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 318
317: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 316
Store 317(i32) 319
Store 315(i32) 317
320: 52(ivec2) Load 314(i32v)
318: 52(ivec2) Load 312(i32v)
321: 18(int) Load 317(i32)
319: 18(int) Load 315(i32)
322: 52(ivec2) CompositeConstruct 321 321
320: 52(ivec2) CompositeConstruct 319 319
323: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 320 322
321: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 318 320
Store 314(i32v) 323
Store 312(i32v) 321
324: 52(ivec2) Load 314(i32v)
322: 52(ivec2) Load 312(i32v)
326: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 324 325
324: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 322 323
Store 314(i32v) 326
Store 312(i32v) 324
328: 184(ivec3) Load 327(u32v)
326: 184(ivec3) Load 325(u32v)
330: 14(int) Load 329(u32)
328: 14(int) Load 327(u32)
331: 184(ivec3) CompositeConstruct 330 330 330
329: 184(ivec3) CompositeConstruct 328 328 328
332: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 328 331
330: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 326 329
Store 327(u32v) 332
Store 325(u32v) 330
333: 184(ivec3) Load 327(u32v)
331: 184(ivec3) Load 325(u32v)
335: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 333 334
333: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 331 332
Store 327(u32v) 335
Store 325(u32v) 333
336: 52(ivec2) Load 314(i32v)
334: 52(ivec2) Load 312(i32v)
337: 18(int) Load 317(i32)
335: 18(int) Load 315(i32)
338: 52(ivec2) CompositeConstruct 337 337
336: 52(ivec2) CompositeConstruct 335 335
339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 336 338
337: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 334 336
Store 314(i32v) 339
Store 312(i32v) 337
340: 52(ivec2) Load 314(i32v)
338: 52(ivec2) Load 312(i32v)
341: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 340 325
339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 338 323
Store 314(i32v) 341
Store 312(i32v) 339
342: 184(ivec3) Load 327(u32v)
340: 184(ivec3) Load 325(u32v)
343: 14(int) Load 329(u32)
341: 14(int) Load 327(u32)
344: 184(ivec3) CompositeConstruct 343 343 343
342: 184(ivec3) CompositeConstruct 341 341 341
345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 342 344
343: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 340 342
Store 327(u32v) 345
Store 325(u32v) 343
346: 184(ivec3) Load 327(u32v)
344: 184(ivec3) Load 325(u32v)
347: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 346 334
345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 344 332
Store 327(u32v) 347
Store 325(u32v) 345
348: 52(ivec2) Load 314(i32v)
346: 52(ivec2) Load 312(i32v)
349: 18(int) Load 317(i32)
347: 18(int) Load 315(i32)
350: 18(int) SNegate 349
348: 18(int) SNegate 347
351: 18(int) Load 317(i32)
349: 18(int) Load 315(i32)
352: 52(ivec2) CompositeConstruct 350 350
350: 52(ivec2) CompositeConstruct 348 348
353: 52(ivec2) CompositeConstruct 351 351
351: 52(ivec2) CompositeConstruct 349 349
354: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 348 352 353
352: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 346 350 351
Store 314(i32v) 354
Store 312(i32v) 352
355: 52(ivec2) Load 314(i32v)
353: 52(ivec2) Load 312(i32v)
356: 52(ivec2) Load 314(i32v)
354: 52(ivec2) Load 312(i32v)
357: 52(ivec2) SNegate 356
355: 52(ivec2) SNegate 354
358: 52(ivec2) Load 314(i32v)
356: 52(ivec2) Load 312(i32v)
359: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 355 357 358
357: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 353 355 356
Store 314(i32v) 359
Store 312(i32v) 357
360: 184(ivec3) Load 327(u32v)
358: 184(ivec3) Load 325(u32v)
361: 14(int) Load 329(u32)
359: 14(int) Load 327(u32)
362: 14(int) SNegate 361
360: 14(int) SNegate 359
363: 14(int) Load 329(u32)
361: 14(int) Load 327(u32)
364: 184(ivec3) CompositeConstruct 362 362 362
362: 184(ivec3) CompositeConstruct 360 360 360
365: 184(ivec3) CompositeConstruct 363 363 363
363: 184(ivec3) CompositeConstruct 361 361 361
366: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 360 364 365
364: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 358 362 363
Store 327(u32v) 366
Store 325(u32v) 364
367: 184(ivec3) Load 327(u32v)
365: 184(ivec3) Load 325(u32v)
368: 184(ivec3) Load 327(u32v)
366: 184(ivec3) Load 325(u32v)
369: 184(ivec3) SNegate 368
367: 184(ivec3) SNegate 366
370: 184(ivec3) Load 327(u32v)
368: 184(ivec3) Load 325(u32v)
371: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 367 369 370
369: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 365 367 368
Store 327(u32v) 371
Store 325(u32v) 369
372: 19(ptr) AccessChain 314(i32v) 175
370: 19(ptr) AccessChain 312(i32v) 175
371: 18(int) Load 370
372: 19(ptr) AccessChain 312(i32v) 176
373: 18(int) Load 372
373: 18(int) Load 372
37
4: 19(ptr) AccessChain 314(i32v) 176
37
5: 18(int) Select 374 373 371
375: 18(int) Load 374
Store 315(i32) 375
37
7: 18(int) Select 376 375 373
37
6: 18(int) Load 315(i32)
Store 317(i32) 377
377: 52(ivec2) CompositeConstruct 376 376
378: 18(int) Load 31
7
(i32)
378: 18(int) Load 31
5
(i32)
379:
52(ivec2) CompositeConstruct 378
378
379:
18(int) SNegate
378
380:
18(int) Load 317(i32)
380:
52(ivec2) CompositeConstruct 379 379
38
1: 18(int) SNegate 380
38
3: 52(ivec2) Select 382 380 377
382: 52(ivec2) CompositeConstruct 381 381
Store 312(i32v) 383
38
5: 52(ivec2) Select 384 382 379
38
4: 38(ptr) AccessChain 325(u32v) 175
Store 314(i32v) 385
385: 14(int) Load 384
386: 38(ptr) AccessChain 32
7(u32v) 175
386: 38(ptr) AccessChain 32
5(u32v) 176
387: 14(int) Load 386
387: 14(int) Load 386
388: 38(ptr) AccessChain 327(u32v) 176
388: 14(int) Select 374 387 385
389: 14(int) Load 388
Store 327(u32) 388
390: 14(int) Select 376 389 387
389: 14(int) Load 327(u32)
Store 329(u32) 390
390: 184(ivec3) CompositeConstruct 389 389 389
391: 14(int) Load 329(u32)
391: 14(int) Load 327(u32)
392: 184(ivec3) CompositeConstruct 391 391 391
392: 14(int) SNegate 391
393: 14(int) Load 329(u32)
393: 184(ivec3) CompositeConstruct 392 392 392
394: 14(int) SNegate 393
396: 184(ivec3) Select 395 393 390
395: 184(ivec3) CompositeConstruct 394 394 394
Store 325(u32v) 396
398: 184(ivec3) Select 397 395 392
400: 397(ivec4) Load 399(i8v4)
Store 327(u32v) 398
401: 18(int) Bitcast 400
402: 399(ivec4) Load 401(i8v4)
Store 315(i32) 401
403: 18(int) Bitcast 402
403: 101(ivec2) Load 402(i16v2)
Store 317(i32) 403
404: 18(int) Bitcast 403
405: 101(ivec2) Load 404(i16v2)
Store 315(i32) 404
406: 18(int) Bitcast 405
408: 405(ivec4) Load 407(u8v4)
Store 317(i32) 406
409: 14(int) Bitcast 408
410: 407(ivec4) Load 409(u8v4)
Store 327(u32) 409
411: 14(int) Bitcast 410
411: 130(ivec2) Load 410(u16v2)
Store 329(u32) 411
412: 14(int) Bitcast 411
413: 130(ivec2) Load 412(u16v2)
Store 327(u32) 412
414: 14(int) Bitcast 413
414: 57(int) Load 413(i64)
Store 329(u32) 414
415: 52(ivec2) Bitcast 414
416: 57(int) Load 415(i64)
Store 312(i32v) 415
417: 52(ivec2) Bitcast 416
419: 63(int) Load 418(u64)
Store 314(i32v) 417
420: 49(ivec2) Bitcast 419
421: 63(int) Load 420(u64)
Store 416(u32v2) 420
422: 49(ivec2) Bitcast 421
423: 184(ivec3) Load 325(u32v)
Store 418(u32v2) 422
424: 14(int) Load 327(u32)
425: 184(ivec3) Load 327(u32v)
425: 184(ivec3) CompositeConstruct 424 424 424
426: 14(int) Load 329(u32)
426: 394(bvec3) ULessThan 423 425
427: 184(ivec3) CompositeConstruct 426 426 426
Store 422(bv) 426
428: 396(bvec3) ULessThan 425 427
427: 52(ivec2) Load 312(i32v)
Store 424(bv) 428
428: 18(int) Load 315(i32)
429: 52(ivec2) Load 314(i32v)
429: 52(ivec2) CompositeConstruct 428 428
430: 18(int) Load 317(i32)
430: 166(bvec2) SLessThan 427 429
431: 52(ivec2) CompositeConstruct 430 430
431: 394(bvec3) Load 422(bv)
432: 166(bvec2) SLessThan 429 431
432: 394(bvec3) VectorShuffle 431 430 3 4 2
433: 396(bvec3) Load 424(bv)
Store 422(bv) 432
434: 396(bvec3) VectorShuffle 433 432 3 4 2
433: 184(ivec3) Load 325(u32v)
Store 424(bv) 434
434: 14(int) Load 327(u32)
435: 184(ivec3) Load 327(u32v)
435: 184(ivec3) CompositeConstruct 434 434 434
436: 14(int) Load 329(u32)
436: 394(bvec3) ULessThanEqual 433 435
437: 184(ivec3) CompositeConstruct 436 436 436
Store 422(bv) 436
438: 396(bvec3) ULessThanEqual 435 437
437: 52(ivec2) Load 312(i32v)
Store 424(bv) 438
438: 18(int) Load 315(i32)
439: 52(ivec2) Load 314(i32v)
439: 52(ivec2) CompositeConstruct 438 438
440: 18(int) Load 317(i32)
440: 166(bvec2) SLessThanEqual 437 439
441: 52(ivec2) CompositeConstruct 440 440
441: 394(bvec3) Load 422(bv)
442: 166(bvec2) SLessThanEqual 439 441
442: 394(bvec3) VectorShuffle 441 440 3 4 2
443: 396(bvec3) Load 424(bv)
Store 422(bv) 442
444: 396(bvec3) VectorShuffle 443 442 3 4 2
443: 184(ivec3) Load 325(u32v)
Store 424(bv) 444
444: 14(int) Load 327(u32)
445: 184(ivec3) Load 327(u32v)
445: 184(ivec3) CompositeConstruct 444 444 444
446: 14(int) Load 329(u32)
446: 394(bvec3) UGreaterThan 443 445
447: 184(ivec3) CompositeConstruct 446 446 446
Store 422(bv) 446
448: 396(bvec3) UGreaterThan 445 447
447: 52(ivec2) Load 312(i32v)
Store 424(bv) 448
448: 18(int) Load 315(i32)
449: 52(ivec2) Load 314(i32v)
449: 52(ivec2) CompositeConstruct 448 448
450: 18(int) Load 317(i32)
450: 166(bvec2) SGreaterThan 447 449
451: 52(ivec2) CompositeConstruct 450 450
451: 394(bvec3) Load 422(bv)
452: 166(bvec2) SGreaterThan 449 451
452: 394(bvec3) VectorShuffle 451 450 3 4 2
453: 396(bvec3) Load 424(bv)
Store 422(bv) 452
454: 396(bvec3) VectorShuffle 453 452 3 4 2
453: 184(ivec3) Load 325(u32v)
Store 424(bv) 454
454: 14(int) Load 327(u32)
455: 184(ivec3) Load 327(u32v)
455: 184(ivec3) CompositeConstruct 454 454 454
456: 14(int) Load 329(u32)
456: 394(bvec3) UGreaterThanEqual 453 455
457: 184(ivec3) CompositeConstruct 456 456 456
Store 422(bv) 456
458: 396(bvec3) UGreaterThanEqual 455 457
457: 52(ivec2) Load 312(i32v)
Store 424(bv) 458
458: 18(int) Load 315(i32)
459: 52(ivec2) Load 314(i32v)
459: 52(ivec2) CompositeConstruct 458 458
460: 18(int) Load 317(i32)
460: 166(bvec2) SGreaterThanEqual 457 459
461: 52(ivec2) CompositeConstruct 460 460
461: 394(bvec3) Load 422(bv)
462: 166(bvec2) SGreaterThanEqual 459 461
462: 394(bvec3) VectorShuffle 461 460 3 4 2
463: 396(bvec3) Load 424(bv)
Store 422(bv) 462
464: 396(bvec3) VectorShuffle 463 462 3 4 2
463: 184(ivec3) Load 325(u32v)
Store 424(bv) 464
464: 14(int) Load 327(u32)
465: 184(ivec3) Load 327(u32v)
465: 184(ivec3) CompositeConstruct 464 464 464
466: 14(int) Load 329(u32)
466: 394(bvec3) IEqual 463 465
467: 184(ivec3) CompositeConstruct 466 466 466
Store 422(bv) 466
468: 396(bvec3) IEqual 465 467
467: 52(ivec2) Load 312(i32v)
Store 424(bv) 468
468: 18(int) Load 315(i32)
469: 52(ivec2) Load 314(i32v)
469: 52(ivec2) CompositeConstruct 468 468
470: 18(int) Load 317(i32)
470: 166(bvec2) IEqual 467 469
471: 52(ivec2) CompositeConstruct 470 470
471: 394(bvec3) Load 422(bv)
472: 166(bvec2) IEqual 469 471
472: 394(bvec3) VectorShuffle 471 470 3 4 2
473: 396(bvec3) Load 424(bv)
Store 422(bv) 472
474: 396(bvec3) VectorShuffle 473 472 3 4 2
473: 184(ivec3) Load 325(u32v)
Store 424(bv) 474
474: 14(int) Load 327(u32)
475: 184(ivec3) Load 327(u32v)
475: 184(ivec3) CompositeConstruct 474 474 474
476: 14(int) Load 329(u32)
476: 394(bvec3) INotEqual 473 475
477: 184(ivec3) CompositeConstruct 476 476 476
Store 422(bv) 476
478: 396(bvec3) INotEqual 475 477
477: 52(ivec2) Load 312(i32v)
Store 424(bv) 478
478: 18(int) Load 315(i32)
479: 52(ivec2) Load 314(i32v)
479: 52(ivec2) CompositeConstruct 478 478
480: 18(int) Load 317(i32)
480: 166(bvec2) INotEqual 477 479
481: 52(ivec2) CompositeConstruct 480 480
481: 394(bvec3) Load 422(bv)
482: 166(bvec2) INotEqual 479 481
482: 394(bvec3) VectorShuffle 481 480 3 4 2
483: 396(bvec3) Load 424(bv)
Store 422(bv) 482
484: 396(bvec3) VectorShuffle 483 482 3 4 2
Store 424(bv) 484
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.int64.frag.out
View file @
fb1e40b4
spv.int64.frag
spv.int64.frag
// Module Version 10000
// Module Version 10000
// Generated by (magic number): 80006
// Generated by (magic number): 80006
// Id's are bound by 48
3
// Id's are bound by 48
8
Capability Shader
Capability Shader
Capability Float64
Capability Float64
...
@@ -37,38 +37,38 @@ spv.int64.frag
...
@@ -37,38 +37,38 @@ spv.int64.frag
Name 139 "i64"
Name 139 "i64"
Name 159 "i"
Name 159 "i"
Name 166 "uv"
Name 166 "uv"
Name 22
1
"b"
Name 22
6
"b"
Name 28
1
"i64v"
Name 28
6
"i64v"
Name 28
4
"i64"
Name 28
9
"i64"
Name 29
4
"u64v"
Name 29
9
"u64v"
Name
296
"u64"
Name
301
"u64"
Name 3
68
"dv"
Name 3
73
"dv"
Name 3
87
"iv"
Name 3
92
"iv"
Name 39
2
"uv"
Name 39
7
"uv"
Name
396
"bv"
Name
401
"bv"
Name 4
57
"Block"
Name 4
62
"Block"
MemberName 4
57
(Block) 0 "i64v"
MemberName 4
62
(Block) 0 "i64v"
MemberName 4
57
(Block) 1 "u64"
MemberName 4
62
(Block) 1 "u64"
Name 4
59
"block"
Name 4
64
"block"
Name 46
0
"si64"
Name 46
5
"si64"
Name 46
1
"su64"
Name 46
6
"su64"
Name 46
2
"si"
Name 46
7
"si"
Name 46
3
"su"
Name 46
8
"su"
Name 46
4
"sb"
Name 46
9
"sb"
MemberDecorate 28(Uniforms) 0 Offset 0
MemberDecorate 28(Uniforms) 0 Offset 0
Decorate 28(Uniforms) Block
Decorate 28(Uniforms) Block
Decorate 30 DescriptorSet 0
Decorate 30 DescriptorSet 0
Decorate 30 Binding 0
Decorate 30 Binding 0
MemberDecorate 4
57
(Block) 0 Offset 0
MemberDecorate 4
62
(Block) 0 Offset 0
MemberDecorate 4
57
(Block) 1 Offset 24
MemberDecorate 4
62
(Block) 1 Offset 24
Decorate 4
57
(Block) Block
Decorate 4
62
(Block) Block
Decorate 4
59
(block) DescriptorSet 0
Decorate 4
64
(block) DescriptorSet 0
Decorate 4
59
(block) Binding 1
Decorate 4
64
(block) Binding 1
Decorate 46
0
(si64) SpecId 100
Decorate 46
5
(si64) SpecId 100
Decorate 46
1
(su64) SpecId 101
Decorate 46
6
(su64) SpecId 101
Decorate 46
2
(si) SpecId 102
Decorate 46
7
(si) SpecId 102
Decorate 46
3
(su) SpecId 103
Decorate 46
8
(su) SpecId 103
Decorate 46
4
(sb) SpecId 104
Decorate 46
9
(sb) SpecId 104
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
14: TypeInt 64 0
14: TypeInt 64 0
...
@@ -128,52 +128,53 @@ spv.int64.frag
...
@@ -128,52 +128,53 @@ spv.int64.frag
158: TypePointer Function 31(int)
158: TypePointer Function 31(int)
164: TypeVector 21(int) 3
164: TypeVector 21(int) 3
165: TypePointer Function 164(ivec3)
165: TypePointer Function 164(ivec3)
199: TypeVector 31(int) 3
203: 21(int) Constant 1
203: 21(int) Constant 1
204: TypePointer Function 21(int)
204: TypePointer Function 21(int)
21
2
: 21(int) Constant 2
21
7
: 21(int) Constant 2
22
0
: TypePointer Function 55(bool)
22
5
: TypePointer Function 55(bool)
22
2
: 21(int) Constant 0
22
7
: 21(int) Constant 0
29
2
: 52(ivec2) ConstantComposite 25 25
29
7
: 52(ivec2) ConstantComposite 25 25
30
1
: 132(ivec3) ConstantComposite 69 69 69
30
6
: 132(ivec3) ConstantComposite 69 69 69
34
3
: 55(bool) ConstantTrue
34
8
: 55(bool) ConstantTrue
35
0
: 55(bool) ConstantFalse
35
5
: 55(bool) ConstantFalse
35
1: 56(bvec2) ConstantComposite 350 350
35
6: 56(bvec2) ConstantComposite 355 355
36
3
: TypeVector 55(bool) 3
36
8
: TypeVector 55(bool) 3
36
4: 363(bvec3) ConstantComposite 350 350 350
36
9: 368(bvec3) ConstantComposite 355 355 355
3
66
: TypeVector 94(float) 3
3
71
: TypeVector 94(float) 3
3
67: TypePointer Function 366
(fvec3)
3
72: TypePointer Function 371
(fvec3)
37
2
: TypePointer Function 94(float)
37
7
: TypePointer Function 94(float)
38
3
: 31(int) Constant 1
38
8
: 31(int) Constant 1
38
4
: 31(int) Constant 2
38
9
: 31(int) Constant 2
3
85: 74(ivec2) ConstantComposite 383 384
3
90: 74(ivec2) ConstantComposite 388 389
39
0: 81(ivec2) ConstantComposite 212
22
39
5: 81(ivec2) ConstantComposite 217
22
395: TypePointer Function 363
(bvec3)
400: TypePointer Function 368
(bvec3)
4
57
(Block): TypeStruct 136(ivec3) 14(int)
4
62
(Block): TypeStruct 136(ivec3) 14(int)
4
58: TypePointer Uniform 457
(Block)
4
63: TypePointer Uniform 462
(Block)
4
59(block): 458
(ptr) Variable Uniform
4
64(block): 463
(ptr) Variable Uniform
46
0
(si64): 18(int) SpecConstant 4294967286 4294967295
46
5
(si64): 18(int) SpecConstant 4294967286 4294967295
46
1
(su64): 14(int) SpecConstant 20 0
46
6
(su64): 14(int) SpecConstant 20 0
46
2
(si): 31(int) SpecConstant 4294967291
46
7
(si): 31(int) SpecConstant 4294967291
46
3
(su): 21(int) SpecConstant 4
46
8
(su): 21(int) SpecConstant 4
46
4
(sb): 55(bool) SpecConstantTrue
46
9
(sb): 55(bool) SpecConstantTrue
4
65: 55(bool) SpecConstantOp 171 460
(si64) 69
4
70: 55(bool) SpecConstantOp 171 465
(si64) 69
4
66: 55(bool) SpecConstantOp 171 461
(su64) 69
4
71: 55(bool) SpecConstantOp 171 466
(su64) 69
4
67: 18(int) SpecConstantOp 169 464
(sb) 61 60
4
72: 18(int) SpecConstantOp 169 469
(sb) 61 60
4
68: 14(int) SpecConstantOp 169 464
(sb) 70 69
4
73: 14(int) SpecConstantOp 169 469
(sb) 70 69
4
69: 31(int) SpecConstantOp 114 460
(si64)
4
74: 31(int) SpecConstantOp 114 465
(si64)
47
0: 18(int) SpecConstantOp 114 462
(si)
47
5: 18(int) SpecConstantOp 114 467
(si)
47
1: 21(int) SpecConstantOp 113 461
(su64)
47
6: 21(int) SpecConstantOp 113 466
(su64)
47
2: 14(int) SpecConstantOp 113 463
(su)
47
7: 14(int) SpecConstantOp 113 468
(su)
47
3: 18(int) SpecConstantOp 128 461
(su64) 69
47
8: 18(int) SpecConstantOp 128 466
(su64) 69
47
4: 14(int) SpecConstantOp 128 460
(si64) 69
47
9: 14(int) SpecConstantOp 128 465
(si64) 69
4
75: 31(int) SpecConstantOp 113 461
(su64)
4
80: 31(int) SpecConstantOp 113 466
(su64)
4
76: 31(int) SpecConstantOp 128 475 222
4
81: 31(int) SpecConstantOp 128 480 227
4
77: 18(int) SpecConstantOp 114 462
(si)
4
82: 18(int) SpecConstantOp 114 467
(si)
4
78: 14(int) SpecConstantOp 128 477
69
4
83: 14(int) SpecConstantOp 128 482
69
4
79: 31(int) SpecConstantOp 114 460
(si64)
4
84: 31(int) SpecConstantOp 114 465
(si64)
48
0: 21(int) SpecConstantOp 128 479 222
48
5: 21(int) SpecConstantOp 128 484 227
48
1: 18(int) SpecConstantOp 113 463
(su)
48
6: 18(int) SpecConstantOp 113 468
(su)
48
2: 18(int) SpecConstantOp 128 481
69
48
7: 18(int) SpecConstantOp 128 486
69
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
Store 16(u64Max) 17
Store 16(u64Max) 17
...
@@ -286,7 +287,7 @@ spv.int64.frag
...
@@ -286,7 +287,7 @@ spv.int64.frag
139(i64): 19(ptr) Variable Function
139(i64): 19(ptr) Variable Function
159(i): 158(ptr) Variable Function
159(i): 158(ptr) Variable Function
166(uv): 165(ptr) Variable Function
166(uv): 165(ptr) Variable Function
22
1(b): 220
(ptr) Variable Function
22
6(b): 225
(ptr) Variable Function
135: 132(ivec3) Load 134(u64v)
135: 132(ivec3) Load 134(u64v)
137: 136(ivec3) CompositeConstruct 61 61 61
137: 136(ivec3) CompositeConstruct 61 61 61
138: 132(ivec3) IAdd 135 137
138: 132(ivec3) IAdd 135 137
...
@@ -359,302 +360,308 @@ spv.int64.frag
...
@@ -359,302 +360,308 @@ spv.int64.frag
195: 18(int) SConvert 194
195: 18(int) SConvert 194
196: 18(int) SMod 193 195
196: 18(int) SMod 193 195
Store 139(i64) 196
Store 139(i64) 196
197: 31(int) Load 159(i)
197: 132(ivec3) Load 134(u64v)
198: 18(int) SConvert 197
198: 31(int) Load 159(i)
199: 14(int) Bitcast 198
200: 199(ivec3) CompositeConstruct 198 198 198
200: 132(ivec3) Load 134(u64v)
201: 132(ivec3) ShiftLeftLogical 197 200
201: 132(ivec3) CompositeConstruct 199 199 199
Store 134(u64v) 201
202: 132(ivec3) ShiftLeftLogical 200 201
202: 18(int) Load 139(i64)
Store 134(u64v) 202
205: 204(ptr) AccessChain 166(uv) 203
205: 204(ptr) AccessChain 166(uv) 203
206: 21(int) Load 205
206: 21(int) Load 205
207: 18(int) UConvert 206
207: 18(int) ShiftRightArithmetic 202 206
208: 18(int) Bitcast 207
Store 139(i64) 207
209: 18(int) Load 139(i64)
208: 31(int) Load 159(i)
210: 18(int) ShiftRightArithmetic 209 208
209: 132(ivec3) Load 134(u64v)
Store 139(i64) 210
210: 199(ivec3) CompositeConstruct 208 208 208
211: 18(int) Load 139(i64)
211: 132(ivec3) ShiftLeftLogical 209 210
213: 40(ptr) AccessChain 134(u64v) 212
Store 134(u64v) 211
214: 14(int) Load 213
212: 204(ptr) AccessChain 166(uv) 203
215: 18(int) ShiftLeftLogical 211 214
213: 21(int) Load 212
214: 18(int) Load 139(i64)
215: 18(int) ShiftRightArithmetic 214 213
Store 139(i64) 215
Store 139(i64) 215
216: 132(ivec3) Load 134(u64v)
216: 18(int) Load 139(i64)
217: 18(int) Load 139(i64)
218: 40(ptr) AccessChain 134(u64v) 217
218: 136(ivec3) CompositeConstruct 217 217 217
219: 14(int) Load 218
219: 132(ivec3) ShiftLeftLogical 216 218
220: 18(int) ShiftLeftLogical 216 219
Store 134(u64v) 219
Store 139(i64) 220
223: 40(ptr) AccessChain 134(u64v) 222
221: 132(ivec3) Load 134(u64v)
224: 14(int) Load 223
222: 18(int) Load 139(i64)
225: 18(int) Load 139(i64)
223: 136(ivec3) CompositeConstruct 222 222 222
226: 14(int) Bitcast 225
224: 132(ivec3) ShiftLeftLogical 221 223
227: 55(bool) INotEqual 224 226
Store 134(u64v) 224
Store 221(b) 227
228: 40(ptr) AccessChain 134(u64v) 227
228: 18(int) Load 139(i64)
229: 14(int) Load 228
229: 14(int) Bitcast 228
230: 18(int) Load 139(i64)
230: 40(ptr) AccessChain 134(u64v) 222
231: 14(int) Bitcast 230
231: 14(int) Load 230
232: 55(bool) INotEqual 229 231
232: 55(bool) IEqual 229 231
Store 226(b) 232
Store 221(b) 232
233: 18(int) Load 139(i64)
233: 40(ptr) AccessChain 134(u64v) 222
234: 14(int) Bitcast 233
234: 14(int) Load 233
235: 40(ptr) AccessChain 134(u64v) 227
235: 204(ptr) AccessChain 166(uv) 203
236: 14(int) Load 235
236: 21(int) Load 235
237: 55(bool) IEqual 234 236
237: 14(int) UConvert 236
Store 226(b) 237
238: 55(bool) UGreaterThan 234 237
238: 40(ptr) AccessChain 134(u64v) 227
Store 221(b) 238
239: 14(int) Load 238
239: 18(int) Load 139(i64)
240: 204(ptr) AccessChain 166(uv) 203
240: 31(int) Load 159(i)
241: 21(int) Load 240
241: 18(int) SConvert 240
242: 14(int) UConvert 241
242: 55(bool) SLessThan 239 241
243: 55(bool) UGreaterThan 239 242
Store 221(b) 242
Store 226(b) 243
243: 40(ptr) AccessChain 134(u64v) 203
244: 18(int) Load 139(i64)
244: 14(int) Load 243
245: 31(int) Load 159(i)
245: 204(ptr) AccessChain 166(uv) 222
246: 18(int) SConvert 245
246: 21(int) Load 245
247: 55(bool) SLessThan 244 246
247: 14(int) UConvert 246
Store 226(b) 247
248: 55(bool) UGreaterThanEqual 244 247
248: 40(ptr) AccessChain 134(u64v) 203
Store 221(b) 248
249: 14(int) Load 248
249: 18(int) Load 139(i64)
250: 204(ptr) AccessChain 166(uv) 227
250: 31(int) Load 159(i)
251: 21(int) Load 250
251: 18(int) SConvert 250
252: 14(int) UConvert 251
252: 55(bool) SLessThanEqual 249 251
253: 55(bool) UGreaterThanEqual 249 252
Store 221(b) 252
Store 226(b) 253
253: 31(int) Load 159(i)
254: 18(int) Load 139(i64)
254: 18(int) SConvert 253
255: 31(int) Load 159(i)
255: 14(int) Bitcast 254
256: 18(int) SConvert 255
256: 132(ivec3) Load 134(u64v)
257: 55(bool) SLessThanEqual 254 256
257: 132(ivec3) CompositeConstruct 255 255 255
Store 226(b) 257
258: 132(ivec3) BitwiseOr 256 257
258: 31(int) Load 159(i)
Store 134(u64v) 258
259: 18(int) SConvert 258
259: 18(int) Load 139(i64)
260: 14(int) Bitcast 259
260: 31(int) Load 159(i)
261: 132(ivec3) Load 134(u64v)
261: 18(int) SConvert 260
262: 132(ivec3) CompositeConstruct 260 260 260
262: 18(int) BitwiseOr 259 261
263: 132(ivec3) BitwiseOr 261 262
Store 139(i64) 262
Store 134(u64v) 263
263: 31(int) Load 159(i)
264: 18(int) Load 139(i64)
264: 18(int) SConvert 263
265: 31(int) Load 159(i)
265: 18(int) Load 139(i64)
266: 18(int) SConvert 265
266: 18(int) BitwiseAnd 265 264
267: 18(int) BitwiseOr 264 266
Store 139(i64) 266
Store 139(i64) 267
267: 132(ivec3) Load 134(u64v)
268: 31(int) Load 159(i)
268: 164(ivec3) Load 166(uv)
269: 18(int) SConvert 268
269: 132(ivec3) UConvert 268
270: 18(int) Load 139(i64)
270: 132(ivec3) BitwiseAnd 267 269
271: 18(int) BitwiseAnd 270 269
Store 134(u64v) 270
Store 139(i64) 271
271: 18(int) Load 139(i64)
272: 132(ivec3) Load 134(u64v)
272: 14(int) Bitcast 271
273: 164(ivec3) Load 166(uv)
273: 132(ivec3) Load 134(u64v)
274: 132(ivec3) UConvert 273
274: 132(ivec3) CompositeConstruct 272 272 272
275: 132(ivec3) BitwiseAnd 272 274
275: 132(ivec3) BitwiseXor 273 274
Store 134(u64v) 275
Store 134(u64v) 275
276:
132(ivec3) Load 134(u64v
)
276:
18(int) Load 139(i64
)
277: 1
8(int) Load 139(i64)
277: 1
4(int) Bitcast 276
278:
14(int) Bitcast 277
278:
132(ivec3) Load 134(u64v)
279: 132(ivec3) CompositeConstruct 27
8 278 278
279: 132(ivec3) CompositeConstruct 27
7 277 277
280: 132(ivec3) BitwiseXor 27
6
279
280: 132(ivec3) BitwiseXor 27
8
279
Store 134(u64v) 280
Store 134(u64v) 280
281: 132(ivec3) Load 134(u64v)
282: 18(int) Load 139(i64)
283: 14(int) Bitcast 282
284: 132(ivec3) CompositeConstruct 283 283 283
285: 132(ivec3) BitwiseXor 281 284
Store 134(u64v) 285
Return
Return
FunctionEnd
FunctionEnd
12(builtinFuncs(): 2 Function None 3
12(builtinFuncs(): 2 Function None 3
13: Label
13: Label
28
1
(i64v): 53(ptr) Variable Function
28
6
(i64v): 53(ptr) Variable Function
28
4
(i64): 19(ptr) Variable Function
28
9
(i64): 19(ptr) Variable Function
29
4
(u64v): 133(ptr) Variable Function
29
9
(u64v): 133(ptr) Variable Function
296
(u64): 40(ptr) Variable Function
301
(u64): 40(ptr) Variable Function
3
68(dv): 367
(ptr) Variable Function
3
73(dv): 372
(ptr) Variable Function
3
87
(iv): 75(ptr) Variable Function
3
92
(iv): 75(ptr) Variable Function
39
2
(uv): 82(ptr) Variable Function
39
7
(uv): 82(ptr) Variable Function
396(bv): 395
(ptr) Variable Function
401(bv): 400
(ptr) Variable Function
28
2: 52(ivec2) Load 281
(i64v)
28
7: 52(ivec2) Load 286
(i64v)
28
3: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 282
28
8: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 287
Store 28
1(i64v) 283
Store 28
6(i64v) 288
2
85: 18(int) Load 284
(i64)
2
90: 18(int) Load 289
(i64)
2
86: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 285
2
91: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 290
Store 28
4(i64) 286
Store 28
9(i64) 291
2
87: 52(ivec2) Load 281
(i64v)
2
92: 52(ivec2) Load 286
(i64v)
2
88: 18(int) Load 284
(i64)
2
93: 18(int) Load 289
(i64)
2
89: 52(ivec2) CompositeConstruct 288 288
2
94: 52(ivec2) CompositeConstruct 293 293
29
0: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 287 289
29
5: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 292 294
Store 28
1(i64v) 290
Store 28
6(i64v) 295
29
1: 52(ivec2) Load 281
(i64v)
29
6: 52(ivec2) Load 286
(i64v)
29
3: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 291 292
29
8: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 296 297
Store 28
1(i64v) 293
Store 28
6(i64v) 298
295: 132(ivec3) Load 294
(u64v)
300: 132(ivec3) Load 299
(u64v)
297: 14(int) Load 296
(u64)
302: 14(int) Load 301
(u64)
298: 132(ivec3) CompositeConstruct 297 297 297
303: 132(ivec3) CompositeConstruct 302 302 302
299: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 295 298
304: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 303
Store 29
4(u64v) 299
Store 29
9(u64v) 304
30
0: 132(ivec3) Load 294
(u64v)
30
5: 132(ivec3) Load 299
(u64v)
30
2: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 300 301
30
7: 132(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 305 306
Store 29
4(u64v) 302
Store 29
9(u64v) 307
30
3: 52(ivec2) Load 281
(i64v)
30
8: 52(ivec2) Load 286
(i64v)
30
4: 18(int) Load 284
(i64)
30
9: 18(int) Load 289
(i64)
3
05: 52(ivec2) CompositeConstruct 304 304
3
10: 52(ivec2) CompositeConstruct 309 309
3
06: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 303 305
3
11: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 308 310
Store 28
1(i64v) 306
Store 28
6(i64v) 311
3
07: 52(ivec2) Load 281
(i64v)
3
12: 52(ivec2) Load 286
(i64v)
3
08: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 307 292
3
13: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 312 297
Store 28
1(i64v) 308
Store 28
6(i64v) 313
3
09: 132(ivec3) Load 294
(u64v)
3
14: 132(ivec3) Load 299
(u64v)
31
0: 14(int) Load 296
(u64)
31
5: 14(int) Load 301
(u64)
31
1: 132(ivec3) CompositeConstruct 310 310 310
31
6: 132(ivec3) CompositeConstruct 315 315 315
31
2: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 309 311
31
7: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 314 316
Store 29
4(u64v) 312
Store 29
9(u64v) 317
31
3: 132(ivec3) Load 294
(u64v)
31
8: 132(ivec3) Load 299
(u64v)
31
4: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 313 301
31
9: 132(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 318 306
Store 29
4(u64v) 314
Store 29
9(u64v) 319
3
15: 52(ivec2) Load 281
(i64v)
3
20: 52(ivec2) Load 286
(i64v)
3
16: 18(int) Load 284
(i64)
3
21: 18(int) Load 289
(i64)
3
17: 18(int) SNegate 316
3
22: 18(int) SNegate 321
3
18: 18(int) Load 284
(i64)
3
23: 18(int) Load 289
(i64)
3
19: 52(ivec2) CompositeConstruct 317 317
3
24: 52(ivec2) CompositeConstruct 322 322
32
0: 52(ivec2) CompositeConstruct 318 318
32
5: 52(ivec2) CompositeConstruct 323 323
32
1: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 315 319 320
32
6: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 320 324 325
Store 28
1(i64v) 321
Store 28
6(i64v) 326
32
2: 52(ivec2) Load 281
(i64v)
32
7: 52(ivec2) Load 286
(i64v)
32
3: 52(ivec2) Load 281
(i64v)
32
8: 52(ivec2) Load 286
(i64v)
32
4: 52(ivec2) SNegate 323
32
9: 52(ivec2) SNegate 328
3
25: 52(ivec2) Load 281
(i64v)
3
30: 52(ivec2) Load 286
(i64v)
3
26: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 322 324 325
3
31: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 327 329 330
Store 28
1(i64v) 326
Store 28
6(i64v) 331
3
27: 132(ivec3) Load 294
(u64v)
3
32: 132(ivec3) Load 299
(u64v)
3
28: 14(int) Load 296
(u64)
3
33: 14(int) Load 301
(u64)
3
29: 14(int) SNegate 328
3
34: 14(int) SNegate 333
33
0: 14(int) Load 296
(u64)
33
5: 14(int) Load 301
(u64)
33
1: 132(ivec3) CompositeConstruct 329 329 329
33
6: 132(ivec3) CompositeConstruct 334 334 334
33
2: 132(ivec3) CompositeConstruct 330 330 330
33
7: 132(ivec3) CompositeConstruct 335 335 335
33
3: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 327 331 332
33
8: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 332 336 337
Store 29
4(u64v) 333
Store 29
9(u64v) 338
33
4: 132(ivec3) Load 294
(u64v)
33
9: 132(ivec3) Load 299
(u64v)
3
35: 132(ivec3) Load 294
(u64v)
3
40: 132(ivec3) Load 299
(u64v)
3
36: 132(ivec3) SNegate 335
3
41: 132(ivec3) SNegate 340
3
37: 132(ivec3) Load 294
(u64v)
3
42: 132(ivec3) Load 299
(u64v)
3
38: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 334 336 337
3
43: 132(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 339 341 342
Store 29
4(u64v) 338
Store 29
9(u64v) 343
3
39: 19(ptr) AccessChain 281(i64v) 222
3
44: 19(ptr) AccessChain 286(i64v) 227
34
0: 18(int) Load 339
34
5: 18(int) Load 344
34
1: 19(ptr) AccessChain 281
(i64v) 203
34
6: 19(ptr) AccessChain 286
(i64v) 203
34
2: 18(int) Load 341
34
7: 18(int) Load 346
34
4: 18(int) Select 343 342 340
34
9: 18(int) Select 348 347 345
Store 28
4(i64) 344
Store 28
9(i64) 349
3
45: 18(int) Load 284
(i64)
3
50: 18(int) Load 289
(i64)
3
46: 52(ivec2) CompositeConstruct 345 345
3
51: 52(ivec2) CompositeConstruct 350 350
3
47: 18(int) Load 284
(i64)
3
52: 18(int) Load 289
(i64)
3
48: 18(int) SNegate 347
3
53: 18(int) SNegate 352
3
49: 52(ivec2) CompositeConstruct 348 348
3
54: 52(ivec2) CompositeConstruct 353 353
35
2: 52(ivec2) Select 351 349 346
35
7: 52(ivec2) Select 356 354 351
Store 28
1(i64v) 352
Store 28
6(i64v) 357
35
3: 40(ptr) AccessChain 294(u64v) 222
35
8: 40(ptr) AccessChain 299(u64v) 227
35
4: 14(int) Load 353
35
9: 14(int) Load 358
3
55: 40(ptr) AccessChain 294
(u64v) 203
3
60: 40(ptr) AccessChain 299
(u64v) 203
3
56: 14(int) Load 355
3
61: 14(int) Load 360
3
57: 14(int) Select 343 356 354
3
62: 14(int) Select 348 361 359
Store
296(u64) 357
Store
301(u64) 362
3
58: 14(int) Load 296
(u64)
3
63: 14(int) Load 301
(u64)
3
59: 132(ivec3) CompositeConstruct 358 358 358
3
64: 132(ivec3) CompositeConstruct 363 363 363
36
0: 14(int) Load 296
(u64)
36
5: 14(int) Load 301
(u64)
36
1: 14(int) SNegate 360
36
6: 14(int) SNegate 365
36
2: 132(ivec3) CompositeConstruct 361 361 361
36
7: 132(ivec3) CompositeConstruct 366 366 366
3
65: 132(ivec3) Select 364 362 359
3
70: 132(ivec3) Select 369 367 364
Store 29
4(u64v) 365
Store 29
9(u64v) 370
3
69: 366(fvec3) Load 368
(dv)
3
74: 371(fvec3) Load 373
(dv)
37
0: 95(fvec2) VectorShuffle 369 369
0 1
37
5: 95(fvec2) VectorShuffle 374 374
0 1
37
1: 52(ivec2) Bitcast 370
37
6: 52(ivec2) Bitcast 375
Store 28
1(i64v) 371
Store 28
6(i64v) 376
37
3: 372(ptr) AccessChain 368(dv) 212
37
8: 377(ptr) AccessChain 373(dv) 217
37
4: 94(float) Load 373
37
9: 94(float) Load 378
3
75: 14(int) Bitcast 374
3
80: 14(int) Bitcast 379
3
76: 40(ptr) AccessChain 294(u64v) 222
3
81: 40(ptr) AccessChain 299(u64v) 227
Store 3
76 375
Store 3
81 380
3
77: 52(ivec2) Load 281
(i64v)
3
82: 52(ivec2) Load 286
(i64v)
3
78: 95(fvec2) Bitcast 377
3
83: 95(fvec2) Bitcast 382
3
79: 366(fvec3) Load 368
(dv)
3
84: 371(fvec3) Load 373
(dv)
38
0: 366(fvec3) VectorShuffle 379 378
3 4 2
38
5: 371(fvec3) VectorShuffle 384 383
3 4 2
Store 3
68(dv) 380
Store 3
73(dv) 385
38
1: 132(ivec3) Load 294
(u64v)
38
6: 132(ivec3) Load 299
(u64v)
38
2: 366(fvec3) Bitcast 381
38
7: 371(fvec3) Bitcast 386
Store 3
68(dv) 382
Store 3
73(dv) 387
3
86: 18(int) Bitcast 385
3
91: 18(int) Bitcast 390
Store 28
4(i64) 386
Store 28
9(i64) 391
3
88: 18(int) Load 284
(i64)
3
93: 18(int) Load 289
(i64)
3
89: 74(ivec2) Bitcast 388
3
94: 74(ivec2) Bitcast 393
Store 3
87(iv) 389
Store 3
92(iv) 394
39
1: 14(int) Bitcast 390
39
6: 14(int) Bitcast 395
Store
296(u64) 391
Store
301(u64) 396
39
3: 14(int) Load 296
(u64)
39
8: 14(int) Load 301
(u64)
39
4: 81(ivec2) Bitcast 393
39
9: 81(ivec2) Bitcast 398
Store 39
2(uv) 394
Store 39
7(uv) 399
397: 132(ivec3) Load 294
(u64v)
402: 132(ivec3) Load 299
(u64v)
398: 14(int) Load 296
(u64)
403: 14(int) Load 301
(u64)
399: 132(ivec3) CompositeConstruct 398 398 398
404: 132(ivec3) CompositeConstruct 403 403 403
40
0: 363(bvec3) ULessThan 397 399
40
5: 368(bvec3) ULessThan 402 404
Store
396(bv) 400
Store
401(bv) 405
40
1: 52(ivec2) Load 281
(i64v)
40
6: 52(ivec2) Load 286
(i64v)
40
2: 18(int) Load 284
(i64)
40
7: 18(int) Load 289
(i64)
40
3: 52(ivec2) CompositeConstruct 402 402
40
8: 52(ivec2) CompositeConstruct 407 407
40
4: 56(bvec2) SLessThan 401 403
40
9: 56(bvec2) SLessThan 406 408
4
05: 363(bvec3) Load 396
(bv)
4
10: 368(bvec3) Load 401
(bv)
4
06: 363(bvec3) VectorShuffle 405 404
3 4 2
4
11: 368(bvec3) VectorShuffle 410 409
3 4 2
Store
396(bv) 406
Store
401(bv) 411
4
07: 132(ivec3) Load 294
(u64v)
4
12: 132(ivec3) Load 299
(u64v)
4
08: 14(int) Load 296
(u64)
4
13: 14(int) Load 301
(u64)
4
09: 132(ivec3) CompositeConstruct 408 408 408
4
14: 132(ivec3) CompositeConstruct 413 413 413
41
0: 363(bvec3) ULessThanEqual 407 409
41
5: 368(bvec3) ULessThanEqual 412 414
Store
396(bv) 410
Store
401(bv) 415
41
1: 52(ivec2) Load 281
(i64v)
41
6: 52(ivec2) Load 286
(i64v)
41
2: 18(int) Load 284
(i64)
41
7: 18(int) Load 289
(i64)
41
3: 52(ivec2) CompositeConstruct 412 412
41
8: 52(ivec2) CompositeConstruct 417 417
41
4: 56(bvec2) SLessThanEqual 411 413
41
9: 56(bvec2) SLessThanEqual 416 418
4
15: 363(bvec3) Load 396
(bv)
4
20: 368(bvec3) Load 401
(bv)
4
16: 363(bvec3) VectorShuffle 415 414
3 4 2
4
21: 368(bvec3) VectorShuffle 420 419
3 4 2
Store
396(bv) 416
Store
401(bv) 421
4
17: 132(ivec3) Load 294
(u64v)
4
22: 132(ivec3) Load 299
(u64v)
4
18: 14(int) Load 296
(u64)
4
23: 14(int) Load 301
(u64)
4
19: 132(ivec3) CompositeConstruct 418 418 418
4
24: 132(ivec3) CompositeConstruct 423 423 423
42
0: 363(bvec3) UGreaterThan 417 419
42
5: 368(bvec3) UGreaterThan 422 424
Store
396(bv) 420
Store
401(bv) 425
42
1: 52(ivec2) Load 281
(i64v)
42
6: 52(ivec2) Load 286
(i64v)
42
2: 18(int) Load 284
(i64)
42
7: 18(int) Load 289
(i64)
42
3: 52(ivec2) CompositeConstruct 422 422
42
8: 52(ivec2) CompositeConstruct 427 427
42
4: 56(bvec2) SGreaterThan 421 423
42
9: 56(bvec2) SGreaterThan 426 428
4
25: 363(bvec3) Load 396
(bv)
4
30: 368(bvec3) Load 401
(bv)
4
26: 363(bvec3) VectorShuffle 425 424
3 4 2
4
31: 368(bvec3) VectorShuffle 430 429
3 4 2
Store
396(bv) 426
Store
401(bv) 431
4
27: 132(ivec3) Load 294
(u64v)
4
32: 132(ivec3) Load 299
(u64v)
4
28: 14(int) Load 296
(u64)
4
33: 14(int) Load 301
(u64)
4
29: 132(ivec3) CompositeConstruct 428 428 428
4
34: 132(ivec3) CompositeConstruct 433 433 433
43
0: 363(bvec3) UGreaterThanEqual 427 429
43
5: 368(bvec3) UGreaterThanEqual 432 434
Store
396(bv) 430
Store
401(bv) 435
43
1: 52(ivec2) Load 281
(i64v)
43
6: 52(ivec2) Load 286
(i64v)
43
2: 18(int) Load 284
(i64)
43
7: 18(int) Load 289
(i64)
43
3: 52(ivec2) CompositeConstruct 432 432
43
8: 52(ivec2) CompositeConstruct 437 437
43
4: 56(bvec2) SGreaterThanEqual 431 433
43
9: 56(bvec2) SGreaterThanEqual 436 438
4
35: 363(bvec3) Load 396
(bv)
4
40: 368(bvec3) Load 401
(bv)
4
36: 363(bvec3) VectorShuffle 435 434
3 4 2
4
41: 368(bvec3) VectorShuffle 440 439
3 4 2
Store
396(bv) 436
Store
401(bv) 441
4
37: 132(ivec3) Load 294
(u64v)
4
42: 132(ivec3) Load 299
(u64v)
4
38: 14(int) Load 296
(u64)
4
43: 14(int) Load 301
(u64)
4
39: 132(ivec3) CompositeConstruct 438 438 438
4
44: 132(ivec3) CompositeConstruct 443 443 443
44
0: 363(bvec3) IEqual 437 439
44
5: 368(bvec3) IEqual 442 444
Store
396(bv) 440
Store
401(bv) 445
44
1: 52(ivec2) Load 281
(i64v)
44
6: 52(ivec2) Load 286
(i64v)
44
2: 18(int) Load 284
(i64)
44
7: 18(int) Load 289
(i64)
44
3: 52(ivec2) CompositeConstruct 442 442
44
8: 52(ivec2) CompositeConstruct 447 447
44
4: 56(bvec2) IEqual 441 443
44
9: 56(bvec2) IEqual 446 448
4
45: 363(bvec3) Load 396
(bv)
4
50: 368(bvec3) Load 401
(bv)
4
46: 363(bvec3) VectorShuffle 445 444
3 4 2
4
51: 368(bvec3) VectorShuffle 450 449
3 4 2
Store
396(bv) 446
Store
401(bv) 451
4
47: 132(ivec3) Load 294
(u64v)
4
52: 132(ivec3) Load 299
(u64v)
4
48: 14(int) Load 296
(u64)
4
53: 14(int) Load 301
(u64)
4
49: 132(ivec3) CompositeConstruct 448 448 448
4
54: 132(ivec3) CompositeConstruct 453 453 453
45
0: 363(bvec3) INotEqual 447 449
45
5: 368(bvec3) INotEqual 452 454
Store
396(bv) 450
Store
401(bv) 455
45
1: 52(ivec2) Load 281
(i64v)
45
6: 52(ivec2) Load 286
(i64v)
45
2: 18(int) Load 284
(i64)
45
7: 18(int) Load 289
(i64)
45
3: 52(ivec2) CompositeConstruct 452 452
45
8: 52(ivec2) CompositeConstruct 457 457
45
4: 56(bvec2) INotEqual 451 453
45
9: 56(bvec2) INotEqual 456 458
4
55: 363(bvec3) Load 396
(bv)
4
60: 368(bvec3) Load 401
(bv)
4
56: 363(bvec3) VectorShuffle 455 454
3 4 2
4
61: 368(bvec3) VectorShuffle 460 459
3 4 2
Store
396(bv) 456
Store
401(bv) 461
Return
Return
FunctionEnd
FunctionEnd
Test/baseResults/spv.rankShift.comp.out
0 → 100755
View file @
fb1e40b4
spv.rankShift.comp
// Module Version 10000
// Generated by (magic number): 80006
// Id's are bound by 33
Capability Shader
Capability Int64
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint GLCompute 4 "main"
ExecutionMode 4 LocalSize 54 1 1
Source GLSL 450
SourceExtension "GL_ARB_gpu_shader_int64"
Name 4 "main"
Name 8 "result"
Name 11 "arg0"
Name 15 "arg1"
Decorate 11(arg0) Location 4
Decorate 15(arg1) Location 5
Decorate 32 BuiltIn WorkgroupSize
2: TypeVoid
3: TypeFunction 2
6: TypeInt 64 0
7: TypePointer Function 6(int)
9: TypeInt 64 1
10: TypePointer UniformConstant 9(int)
11(arg0): 10(ptr) Variable UniformConstant
13: TypeInt 32 0
14: TypePointer UniformConstant 13(int)
15(arg1): 14(ptr) Variable UniformConstant
29: TypeVector 13(int) 3
30: 13(int) Constant 54
31: 13(int) Constant 1
32: 29(ivec3) ConstantComposite 30 31 31
4(main): 2 Function None 3
5: Label
8(result): 7(ptr) Variable Function
12: 9(int) Load 11(arg0)
16: 13(int) Load 15(arg1)
17: 9(int) ShiftLeftLogical 12 16
18: 6(int) Bitcast 17
Store 8(result) 18
19: 9(int) Load 11(arg0)
20: 13(int) Load 15(arg1)
21: 9(int) ShiftRightArithmetic 19 20
22: 6(int) Bitcast 21
Store 8(result) 22
23: 13(int) Load 15(arg1)
24: 6(int) Load 8(result)
25: 6(int) ShiftLeftLogical 24 23
Store 8(result) 25
26: 13(int) Load 15(arg1)
27: 6(int) Load 8(result)
28: 6(int) ShiftRightLogical 27 26
Store 8(result) 28
Return
FunctionEnd
Test/baseResults/spv.vulkan110.int16.frag.out
View file @
fb1e40b4
spv.vulkan110.int16.frag
spv.vulkan110.int16.frag
// Module Version 10300
// Module Version 10300
// Generated by (magic number): 80006
// Generated by (magic number): 80006
// Id's are bound by 52
5
// Id's are bound by 52
3
Capability Shader
Capability Shader
Capability Float16
Capability Float16
...
@@ -52,48 +52,48 @@ spv.vulkan110.int16.frag
...
@@ -52,48 +52,48 @@ spv.vulkan110.int16.frag
Name 220 "i"
Name 220 "i"
Name 227 "uv"
Name 227 "uv"
Name 243 "i64"
Name 243 "i64"
Name 28
3
"b"
Name 28
1
"b"
Name 34
5
"i16v"
Name 34
3
"i16v"
Name 34
8
"i16"
Name 34
6
"i16"
Name 35
8
"u16v"
Name 35
6
"u16v"
Name 3
60
"u16"
Name 3
58
"u16"
Name 4
30
"i32"
Name 4
28
"i32"
Name 43
3
"i64"
Name 43
1
"i64"
Name 43
6
"i16v4"
Name 43
4
"i16v4"
Name 43
9
"u32"
Name 43
7
"u32"
Name 4
40
"u16v2"
Name 4
38
"u16v2"
Name 44
4
"u64"
Name 44
2
"u64"
Name 44
7
"u16v4"
Name 44
5
"u16v4"
Name 45
9
"bv"
Name 45
7
"bv"
Name 5
20
"Block"
Name 5
18
"Block"
MemberName 5
20
(Block) 0 "i16"
MemberName 5
18
(Block) 0 "i16"
MemberName 5
20
(Block) 1 "i16v2"
MemberName 5
18
(Block) 1 "i16v2"
MemberName 5
20
(Block) 2 "i16v3"
MemberName 5
18
(Block) 2 "i16v3"
MemberName 5
20
(Block) 3 "i16v4"
MemberName 5
18
(Block) 3 "i16v4"
MemberName 5
20
(Block) 4 "u16"
MemberName 5
18
(Block) 4 "u16"
MemberName 5
20
(Block) 5 "u16v2"
MemberName 5
18
(Block) 5 "u16v2"
MemberName 5
20
(Block) 6 "u16v3"
MemberName 5
18
(Block) 6 "u16v3"
MemberName 5
20
(Block) 7 "u16v4"
MemberName 5
18
(Block) 7 "u16v4"
Name 52
2
"block"
Name 52
0
"block"
Name 52
3
"si16"
Name 52
1
"si16"
Name 52
4
"su16"
Name 52
2
"su16"
MemberDecorate 24(Uniforms) 0 Offset 0
MemberDecorate 24(Uniforms) 0 Offset 0
Decorate 24(Uniforms) Block
Decorate 24(Uniforms) Block
Decorate 26 DescriptorSet 0
Decorate 26 DescriptorSet 0
Decorate 26 Binding 0
Decorate 26 Binding 0
MemberDecorate 5
20
(Block) 0 Offset 0
MemberDecorate 5
18
(Block) 0 Offset 0
MemberDecorate 5
20
(Block) 1 Offset 4
MemberDecorate 5
18
(Block) 1 Offset 4
MemberDecorate 5
20
(Block) 2 Offset 8
MemberDecorate 5
18
(Block) 2 Offset 8
MemberDecorate 5
20
(Block) 3 Offset 16
MemberDecorate 5
18
(Block) 3 Offset 16
MemberDecorate 5
20
(Block) 4 Offset 24
MemberDecorate 5
18
(Block) 4 Offset 24
MemberDecorate 5
20
(Block) 5 Offset 28
MemberDecorate 5
18
(Block) 5 Offset 28
MemberDecorate 5
20
(Block) 6 Offset 32
MemberDecorate 5
18
(Block) 6 Offset 32
MemberDecorate 5
20
(Block) 7 Offset 40
MemberDecorate 5
18
(Block) 7 Offset 40
Decorate 5
20
(Block) Block
Decorate 5
18
(Block) Block
Decorate 52
2
(block) DescriptorSet 0
Decorate 52
0
(block) DescriptorSet 0
Decorate 52
2
(block) Binding 1
Decorate 52
0
(block) Binding 1
Decorate 52
3
(si16) SpecId 100
Decorate 52
1
(si16) SpecId 100
Decorate 52
4
(su16) SpecId 101
Decorate 52
2
(su16) SpecId 101
2: TypeVoid
2: TypeVoid
3: TypeFunction 2
3: TypeFunction 2
14: TypeInt 16 1
14: TypeInt 16 1
...
@@ -168,28 +168,28 @@ spv.vulkan110.int16.frag
...
@@ -168,28 +168,28 @@ spv.vulkan110.int16.frag
242: TypePointer Function 71(int)
242: TypePointer Function 71(int)
264: 17(int) Constant 1
264: 17(int) Constant 1
270: 17(int) Constant 2
270: 17(int) Constant 2
27
5
: TypeVector 27(int) 3
27
6
: TypeVector 27(int) 3
28
2
: TypePointer Function 173(bool)
28
0
: TypePointer Function 173(bool)
28
4
: 17(int) Constant 0
28
2
: 17(int) Constant 0
29
8
: TypePointer Function 17(int)
29
6
: TypePointer Function 17(int)
35
6
: 52(ivec2) ConstantComposite 21 21
35
4
: 52(ivec2) ConstantComposite 21 21
36
5
: 193(ivec3) ConstantComposite 184 184 184
36
3
: 193(ivec3) ConstantComposite 184 184 184
40
7
: 173(bool) ConstantTrue
40
5
: 173(bool) ConstantTrue
41
4
: 173(bool) ConstantFalse
41
2
: 173(bool) ConstantFalse
41
5: 174(bvec2) ConstantComposite 414 414
41
3: 174(bvec2) ConstantComposite 412 412
42
7
: TypeVector 173(bool) 3
42
5
: TypeVector 173(bool) 3
42
8: 427(bvec3) ConstantComposite 414 414 414
42
6: 425(bvec3) ConstantComposite 412 412 412
43
4
: TypeVector 14(int) 4
43
2
: TypeVector 14(int) 4
43
5: TypePointer Function 434
(ivec4)
43
3: TypePointer Function 432
(ivec4)
44
3
: TypePointer Function 77(int)
44
1
: TypePointer Function 77(int)
44
5
: TypeVector 36(int) 4
44
3
: TypeVector 36(int) 4
44
6: TypePointer Function 445
(ivec4)
44
4: TypePointer Function 443
(ivec4)
45
8: TypePointer Function 427
(bvec3)
45
6: TypePointer Function 425
(bvec3)
5
20(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 434(ivec4) 36(int) 57(ivec2) 193(ivec3) 445
(ivec4)
5
18(Block): TypeStruct 14(int) 52(ivec2) 197(ivec3) 432(ivec4) 36(int) 57(ivec2) 193(ivec3) 443
(ivec4)
5
21: TypePointer Uniform 520
(Block)
5
19: TypePointer Uniform 518
(Block)
52
2(block): 521
(ptr) Variable Uniform
52
0(block): 519
(ptr) Variable Uniform
52
3
(si16): 14(int) SpecConstant 4294967286
52
1
(si16): 14(int) SpecConstant 4294967286
52
4
(su16): 36(int) SpecConstant 20
52
2
(su16): 36(int) SpecConstant 20
4(main): 2 Function None 3
4(main): 2 Function None 3
5: Label
5: Label
Return
Return
...
@@ -368,7 +368,7 @@ spv.vulkan110.int16.frag
...
@@ -368,7 +368,7 @@ spv.vulkan110.int16.frag
220(i): 219(ptr) Variable Function
220(i): 219(ptr) Variable Function
227(uv): 226(ptr) Variable Function
227(uv): 226(ptr) Variable Function
243(i64): 242(ptr) Variable Function
243(i64): 242(ptr) Variable Function
28
3(b): 282
(ptr) Variable Function
28
1(b): 280
(ptr) Variable Function
196: 193(ivec3) Load 195(u16v)
196: 193(ivec3) Load 195(u16v)
198: 197(ivec3) CompositeConstruct 179 179 179
198: 197(ivec3) CompositeConstruct 179 179 179
199: 193(ivec3) IAdd 196 198
199: 193(ivec3) IAdd 196 198
...
@@ -457,287 +457,285 @@ spv.vulkan110.int16.frag
...
@@ -457,287 +457,285 @@ spv.vulkan110.int16.frag
273: 14(int) ShiftLeftLogical 269 272
273: 14(int) ShiftLeftLogical 269 272
Store 200(i16) 273
Store 200(i16) 273
274: 193(ivec3) Load 195(u16v)
274: 193(ivec3) Load 195(u16v)
276: 275(ivec3) UConvert 274
275: 27(int) Load 220(i)
277: 275(ivec3) Bitcast 276
277: 276(ivec3) CompositeConstruct 275 275 275
278: 27(int) Load 220(i)
278: 193(ivec3) ShiftLeftLogical 274 277
279: 275(ivec3) CompositeConstruct 278 278 278
279: 225(ivec3) UConvert 278
280: 275(ivec3) ShiftLeftLogical 277 279
Store 227(uv) 279
281: 225(ivec3) Bitcast 280
283: 37(ptr) AccessChain 195(u16v) 282
Store 227(uv) 281
284: 36(int) Load 283
285: 37(ptr) AccessChain 195(u16v) 284
285: 14(int) Load 200(i16)
286: 36(int) Load 285
286: 36(int) Bitcast 285
287: 14(int) Load 200(i16)
287: 173(bool) INotEqual 284 286
288: 36(int) Bitcast 287
Store 281(b) 287
289: 173(bool) INotEqual 286 288
288: 14(int) Load 200(i16)
Store 283(b) 289
289: 36(int) Bitcast 288
290: 14(int) Load 200(i16)
290: 37(ptr) AccessChain 195(u16v) 282
291: 36(int) Bitcast 290
291: 36(int) Load 290
292: 37(ptr) AccessChain 195(u16v) 284
292: 173(bool) IEqual 289 291
293: 36(int) Load 292
Store 281(b) 292
294: 173(bool) IEqual 291 293
293: 37(ptr) AccessChain 195(u16v) 282
Store 283(b) 294
294: 36(int) Load 293
295: 37(ptr) AccessChain 195(u16v) 284
295: 17(int) UConvert 294
296: 36(int) Load 295
297: 296(ptr) AccessChain 227(uv) 264
297: 17(int) UConvert 296
298: 17(int) Load 297
299: 298(ptr) AccessChain 227(uv) 264
299: 173(bool) UGreaterThan 295 298
300: 17(int) Load 299
Store 281(b) 299
301: 173(bool) UGreaterThan 297 300
300: 14(int) Load 200(i16)
Store 283(b) 301
301: 27(int) SConvert 300
302: 14(int) Load 200(i16)
302: 27(int) Load 220(i)
303: 27(int) SConvert 302
303: 173(bool) SLessThan 301 302
304: 27(int) Load 220(i)
Store 281(b) 303
305: 173(bool) SLessThan 303 304
304: 37(ptr) AccessChain 195(u16v) 264
Store 283(b) 305
305: 36(int) Load 304
306: 37(ptr) AccessChain 195(u16v) 264
306: 17(int) UConvert 305
307: 36(int) Load 306
307: 296(ptr) AccessChain 227(uv) 282
308: 17(int) UConvert 307
308: 17(int) Load 307
309: 298(ptr) AccessChain 227(uv) 284
309: 173(bool) UGreaterThanEqual 306 308
310: 17(int) Load 309
Store 281(b) 309
311: 173(bool) UGreaterThanEqual 308 310
310: 14(int) Load 200(i16)
Store 283(b) 311
311: 27(int) SConvert 310
312: 14(int) Load 200(i16)
312: 27(int) Load 220(i)
313: 27(int) SConvert 312
313: 173(bool) SLessThanEqual 311 312
314: 27(int) Load 220(i)
Store 281(b) 313
315: 173(bool) SLessThanEqual 313 314
314: 14(int) Load 200(i16)
Store 283(b) 315
315: 27(int) SConvert 314
316: 14(int) Load 200(i16)
316: 17(int) Bitcast 315
317: 27(int) SConvert 316
317: 225(ivec3) Load 227(uv)
318: 17(int) Bitcast 317
318: 225(ivec3) CompositeConstruct 316 316 316
319: 225(ivec3) Load 227(uv)
319: 225(ivec3) BitwiseOr 317 318
320: 225(ivec3) CompositeConstruct 318 318 318
Store 227(uv) 319
321: 225(ivec3) BitwiseOr 319 320
320: 14(int) Load 200(i16)
Store 227(uv) 321
321: 27(int) SConvert 320
322: 14(int) Load 200(i16)
322: 27(int) Load 220(i)
323: 27(int) SConvert 322
323: 27(int) BitwiseOr 321 322
324: 27(int) Load 220(i)
Store 220(i) 323
325: 27(int) BitwiseOr 323 324
324: 14(int) Load 200(i16)
Store 220(i) 325
325: 71(int) SConvert 324
326: 14(int) Load 200(i16)
326: 71(int) Load 243(i64)
327: 71(int) SConvert 326
327: 71(int) BitwiseAnd 326 325
328: 71(int) Load 243(i64)
Store 243(i64) 327
329: 71(int) BitwiseAnd 328 327
328: 193(ivec3) Load 195(u16v)
Store 243(i64) 329
329: 225(ivec3) UConvert 328
330: 193(ivec3) Load 195(u16v)
330: 225(ivec3) Load 227(uv)
331: 225(ivec3) UConvert 330
331: 225(ivec3) BitwiseAnd 329 330
332: 225(ivec3) Load 227(uv)
Store 227(uv) 331
333: 225(ivec3) BitwiseAnd 331 332
332: 14(int) Load 200(i16)
Store 227(uv) 333
333: 27(int) SConvert 332
334: 14(int) Load 200(i16)
334: 17(int) Bitcast 333
335: 27(int) SConvert 334
335: 225(ivec3) Load 227(uv)
336: 17(int) Bitcast 335
336: 225(ivec3) CompositeConstruct 334 334 334
337: 225(ivec3) Load 227(uv)
337: 225(ivec3) BitwiseXor 335 336
338: 225(ivec3) CompositeConstruct 336 336 336
Store 227(uv) 337
339: 225(ivec3) BitwiseXor 337 338
338: 193(ivec3) Load 195(u16v)
Store 227(uv) 339
339: 14(int) Load 200(i16)
340: 193(ivec3) Load 195(u16v)
340: 36(int) Bitcast 339
341: 14(int) Load 200(i16)
341: 193(ivec3) CompositeConstruct 340 340 340
342: 36(int) Bitcast 341
342: 193(ivec3) BitwiseXor 338 341
343: 193(ivec3) CompositeConstruct 342 342 342
Store 195(u16v) 342
344: 193(ivec3) BitwiseXor 340 343
Store 195(u16v) 344
Return
Return
FunctionEnd
FunctionEnd
12(builtinFuncs(): 2 Function None 3
12(builtinFuncs(): 2 Function None 3
13: Label
13: Label
345(i16v): 53(ptr) Variable Function
343(i16v): 53(ptr) Variable Function
348(i16): 15(ptr) Variable Function
346(i16): 15(ptr) Variable Function
358(u16v): 194(ptr) Variable Function
356(u16v): 194(ptr) Variable Function
360(u16): 37(ptr) Variable Function
358(u16): 37(ptr) Variable Function
430(i32): 219(ptr) Variable Function
428(i32): 219(ptr) Variable Function
433(i64): 242(ptr) Variable Function
431(i64): 242(ptr) Variable Function
436(i16v4): 435(ptr) Variable Function
434(i16v4): 433(ptr) Variable Function
439(u32): 298(ptr) Variable Function
437(u32): 296(ptr) Variable Function
440(u16v2): 58(ptr) Variable Function
438(u16v2): 58(ptr) Variable Function
444(u64): 443(ptr) Variable Function
442(u64): 441(ptr) Variable Function
447(u16v4): 446(ptr) Variable Function
445(u16v4): 444(ptr) Variable Function
459(bv): 458(ptr) Variable Function
457(bv): 456(ptr) Variable Function
346: 52(ivec2) Load 345(i16v)
344: 52(ivec2) Load 343(i16v)
347: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 346
345: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344
Store 345(i16v) 347
Store 343(i16v) 345
349: 14(int) Load 348(i16)
347: 14(int) Load 346(i16)
350: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 349
348: 14(int) ExtInst 1(GLSL.std.450) 7(SSign) 347
Store 348(i16) 350
Store 346(i16) 348
351: 52(ivec2) Load 345(i16v)
349: 52(ivec2) Load 343(i16v)
352: 14(int) Load 348(i16)
350: 14(int) Load 346(i16)
353: 52(ivec2) CompositeConstruct 352 352
351: 52(ivec2) CompositeConstruct 350 350
354: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 351 353
352: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351
Store 345(i16v) 354
Store 343(i16v) 352
355: 52(ivec2) Load 345(i16v)
353: 52(ivec2) Load 343(i16v)
357: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 355 356
355: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354
Store 345(i16v) 357
Store 343(i16v) 355
359: 193(ivec3) Load 358(u16v)
357: 193(ivec3) Load 356(u16v)
361: 36(int) Load 360(u16)
359: 36(int) Load 358(u16)
362: 193(ivec3) CompositeConstruct 361 361 361
360: 193(ivec3) CompositeConstruct 359 359 359
363: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 359 362
361: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360
Store 358(u16v) 363
Store 356(u16v) 361
364: 193(ivec3) Load 358(u16v)
362: 193(ivec3) Load 356(u16v)
366: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 364 365
364: 193(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363
Store 358(u16v) 366
Store 356(u16v) 364
367: 52(ivec2) Load 345(i16v)
365: 52(ivec2) Load 343(i16v)
368: 14(int) Load 348(i16)
366: 14(int) Load 346(i16)
369: 52(ivec2) CompositeConstruct 368 368
367: 52(ivec2) CompositeConstruct 366 366
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 367 369
368: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367
Store 345(i16v) 370
Store 343(i16v) 368
371: 52(ivec2) Load 345(i16v)
369: 52(ivec2) Load 343(i16v)
372: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 371 356
370: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354
Store 345(i16v) 372
Store 343(i16v) 370
373: 193(ivec3) Load 358(u16v)
371: 193(ivec3) Load 356(u16v)
374: 36(int) Load 360(u16)
372: 36(int) Load 358(u16)
375: 193(ivec3) CompositeConstruct 374 374 374
373: 193(ivec3) CompositeConstruct 372 372 372
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 373 375
374: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373
Store 358(u16v) 376
Store 356(u16v) 374
377: 193(ivec3) Load 358(u16v)
375: 193(ivec3) Load 356(u16v)
378: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 377 365
376: 193(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363
Store 358(u16v) 378
Store 356(u16v) 376
379: 52(ivec2) Load 345(i16v)
377: 52(ivec2) Load 343(i16v)
380: 14(int) Load 348(i16)
378: 14(int) Load 346(i16)
381: 14(int) SNegate 380
379: 14(int) SNegate 378
382: 14(int) Load 348(i16)
380: 14(int) Load 346(i16)
383: 52(ivec2) CompositeConstruct 381 381
381: 52(ivec2) CompositeConstruct 379 379
384: 52(ivec2) CompositeConstruct 382 382
382: 52(ivec2) CompositeConstruct 380 380
385: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 383 384
383: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382
Store 345(i16v) 385
Store 343(i16v) 383
386: 52(ivec2) Load 345(i16v)
384: 52(ivec2) Load 343(i16v)
387: 52(ivec2) Load 345(i16v)
385: 52(ivec2) Load 343(i16v)
388: 52(ivec2) SNegate 387
386: 52(ivec2) SNegate 385
389: 52(ivec2) Load 345(i16v)
387: 52(ivec2) Load 343(i16v)
390: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 388 389
388: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387
Store 345(i16v) 390
Store 343(i16v) 388
391: 193(ivec3) Load 358(u16v)
389: 193(ivec3) Load 356(u16v)
392: 36(int) Load 360(u16)
390: 36(int) Load 358(u16)
393: 36(int) SNegate 392
391: 36(int) SNegate 390
394: 36(int) Load 360(u16)
392: 36(int) Load 358(u16)
395: 193(ivec3) CompositeConstruct 393 393 393
393: 193(ivec3) CompositeConstruct 391 391 391
396: 193(ivec3) CompositeConstruct 394 394 394
394: 193(ivec3) CompositeConstruct 392 392 392
397: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 395 396
395: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394
Store 358(u16v) 397
Store 356(u16v) 395
398: 193(ivec3) Load 358(u16v)
396: 193(ivec3) Load 356(u16v)
399: 193(ivec3) Load 358(u16v)
397: 193(ivec3) Load 356(u16v)
400: 193(ivec3) SNegate 399
398: 193(ivec3) SNegate 397
401: 193(ivec3) Load 358(u16v)
399: 193(ivec3) Load 356(u16v)
402: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 400 401
400: 193(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399
Store 358(u16v) 402
Store 356(u16v) 400
403: 15(ptr) AccessChain 345(i16v) 284
401: 15(ptr) AccessChain 343(i16v) 282
402: 14(int) Load 401
403: 15(ptr) AccessChain 343(i16v) 264
404: 14(int) Load 403
404: 14(int) Load 403
40
5: 15(ptr) AccessChain 345(i16v) 264
40
6: 14(int) Select 405 404 402
406: 14(int) Load 405
Store 346(i16) 406
40
8: 14(int) Select 407 406 404
40
7: 14(int) Load 346(i16)
Store 348(i16) 408
408: 52(ivec2) CompositeConstruct 407 407
409: 14(int) Load 34
8
(i16)
409: 14(int) Load 34
6
(i16)
410:
52(ivec2) CompositeConstruct 409
409
410:
14(int) SNegate
409
411:
14(int) Load 348(i16)
411:
52(ivec2) CompositeConstruct 410 410
41
2: 14(int) SNegate 411
41
4: 52(ivec2) Select 413 411 408
413: 52(ivec2) CompositeConstruct 412 412
Store 343(i16v) 414
41
6: 52(ivec2) Select 415 413 410
41
5: 37(ptr) AccessChain 356(u16v) 282
Store 345(i16v) 416
416: 36(int) Load 415
417: 37(ptr) AccessChain 35
8(u16v) 28
4
417: 37(ptr) AccessChain 35
6(u16v) 26
4
418: 36(int) Load 417
418: 36(int) Load 417
419: 37(ptr) AccessChain 358(u16v) 264
419: 36(int) Select 405 418 416
420: 36(int) Load 419
Store 358(u16) 419
421: 36(int) Select 407 420 418
420: 36(int) Load 358(u16)
Store 360(u16) 421
421: 193(ivec3) CompositeConstruct 420 420 420
422: 36(int) Load 360(u16)
422: 36(int) Load 358(u16)
423: 193(ivec3) CompositeConstruct 422 422 422
423: 36(int) SNegate 422
424: 36(int) Load 360(u16)
424: 193(ivec3) CompositeConstruct 423 423 423
425: 36(int) SNegate 424
427: 193(ivec3) Select 426 424 421
426: 193(ivec3) CompositeConstruct 425 425 425
Store 356(u16v) 427
429: 193(ivec3) Select 428 426 423
429: 52(ivec2) Load 343(i16v)
Store 358(u16v) 429
430: 27(int) Bitcast 429
431: 52(ivec2) Load 345(i16v)
Store 428(i32) 430
432: 27(int) Bitcast 431
435: 432(ivec4) Load 434(i16v4)
Store 430(i32) 432
436: 71(int) Bitcast 435
437: 434(ivec4) Load 436(i16v4)
Store 431(i64) 436
438: 71(int) Bitcast 437
439: 57(ivec2) Load 438(u16v2)
Store 433(i64) 438
440: 17(int) Bitcast 439
441: 57(ivec2) Load 440(u16v2)
Store 437(u32) 440
442: 17(int) Bitcast 441
446: 443(ivec4) Load 445(u16v4)
Store 439(u32) 442
447: 77(int) Bitcast 446
448: 445(ivec4) Load 447(u16v4)
Store 442(u64) 447
449: 77(int) Bitcast 448
448: 27(int) Load 428(i32)
Store 444(u64) 449
449: 52(ivec2) Bitcast 448
450: 27(int) Load 430(i32)
Store 343(i16v) 449
451: 52(ivec2) Bitcast 450
450: 71(int) Load 431(i64)
Store 345(i16v) 451
451: 432(ivec4) Bitcast 450
452: 71(int) Load 433(i64)
Store 434(i16v4) 451
453: 434(ivec4) Bitcast 452
452: 17(int) Load 437(u32)
Store 436(i16v4) 453
453: 57(ivec2) Bitcast 452
454: 17(int) Load 439(u32)
Store 438(u16v2) 453
455: 57(ivec2) Bitcast 454
454: 77(int) Load 442(u64)
Store 440(u16v2) 455
455: 443(ivec4) Bitcast 454
456: 77(int) Load 444(u64)
Store 445(u16v4) 455
457: 445(ivec4) Bitcast 456
458: 193(ivec3) Load 356(u16v)
Store 447(u16v4) 457
459: 36(int) Load 358(u16)
460: 193(ivec3) Load 358(u16v)
460: 193(ivec3) CompositeConstruct 459 459 459
461: 36(int) Load 360(u16)
461: 425(bvec3) ULessThan 458 460
462: 193(ivec3) CompositeConstruct 461 461 461
Store 457(bv) 461
463: 427(bvec3) ULessThan 460 462
462: 52(ivec2) Load 343(i16v)
Store 459(bv) 463
463: 14(int) Load 346(i16)
464: 52(ivec2) Load 345(i16v)
464: 52(ivec2) CompositeConstruct 463 463
465: 14(int) Load 348(i16)
465: 174(bvec2) SLessThan 462 464
466: 52(ivec2) CompositeConstruct 465 465
466: 425(bvec3) Load 457(bv)
467: 174(bvec2) SLessThan 464 466
467: 425(bvec3) VectorShuffle 466 465 3 4 2
468: 427(bvec3) Load 459(bv)
Store 457(bv) 467
469: 427(bvec3) VectorShuffle 468 467 3 4 2
468: 193(ivec3) Load 356(u16v)
Store 459(bv) 469
469: 36(int) Load 358(u16)
470: 193(ivec3) Load 358(u16v)
470: 193(ivec3) CompositeConstruct 469 469 469
471: 36(int) Load 360(u16)
471: 425(bvec3) ULessThanEqual 468 470
472: 193(ivec3) CompositeConstruct 471 471 471
Store 457(bv) 471
473: 427(bvec3) ULessThanEqual 470 472
472: 52(ivec2) Load 343(i16v)
Store 459(bv) 473
473: 14(int) Load 346(i16)
474: 52(ivec2) Load 345(i16v)
474: 52(ivec2) CompositeConstruct 473 473
475: 14(int) Load 348(i16)
475: 174(bvec2) SLessThanEqual 472 474
476: 52(ivec2) CompositeConstruct 475 475
476: 425(bvec3) Load 457(bv)
477: 174(bvec2) SLessThanEqual 474 476
477: 425(bvec3) VectorShuffle 476 475 3 4 2
478: 427(bvec3) Load 459(bv)
Store 457(bv) 477
479: 427(bvec3) VectorShuffle 478 477 3 4 2
478: 193(ivec3) Load 356(u16v)
Store 459(bv) 479
479: 36(int) Load 358(u16)
480: 193(ivec3) Load 358(u16v)
480: 193(ivec3) CompositeConstruct 479 479 479
481: 36(int) Load 360(u16)
481: 425(bvec3) UGreaterThan 478 480
482: 193(ivec3) CompositeConstruct 481 481 481
Store 457(bv) 481
483: 427(bvec3) UGreaterThan 480 482
482: 52(ivec2) Load 343(i16v)
Store 459(bv) 483
483: 14(int) Load 346(i16)
484: 52(ivec2) Load 345(i16v)
484: 52(ivec2) CompositeConstruct 483 483
485: 14(int) Load 348(i16)
485: 174(bvec2) SGreaterThan 482 484
486: 52(ivec2) CompositeConstruct 485 485
486: 425(bvec3) Load 457(bv)
487: 174(bvec2) SGreaterThan 484 486
487: 425(bvec3) VectorShuffle 486 485 3 4 2
488: 427(bvec3) Load 459(bv)
Store 457(bv) 487
489: 427(bvec3) VectorShuffle 488 487 3 4 2
488: 193(ivec3) Load 356(u16v)
Store 459(bv) 489
489: 36(int) Load 358(u16)
490: 193(ivec3) Load 358(u16v)
490: 193(ivec3) CompositeConstruct 489 489 489
491: 36(int) Load 360(u16)
491: 425(bvec3) UGreaterThanEqual 488 490
492: 193(ivec3) CompositeConstruct 491 491 491
Store 457(bv) 491
493: 427(bvec3) UGreaterThanEqual 490 492
492: 52(ivec2) Load 343(i16v)
Store 459(bv) 493
493: 14(int) Load 346(i16)
494: 52(ivec2) Load 345(i16v)
494: 52(ivec2) CompositeConstruct 493 493
495: 14(int) Load 348(i16)
495: 174(bvec2) SGreaterThanEqual 492 494
496: 52(ivec2) CompositeConstruct 495 495
496: 425(bvec3) Load 457(bv)
497: 174(bvec2) SGreaterThanEqual 494 496
497: 425(bvec3) VectorShuffle 496 495 3 4 2
498: 427(bvec3) Load 459(bv)
Store 457(bv) 497
499: 427(bvec3) VectorShuffle 498 497 3 4 2
498: 193(ivec3) Load 356(u16v)
Store 459(bv) 499
499: 36(int) Load 358(u16)
500: 193(ivec3) Load 358(u16v)
500: 193(ivec3) CompositeConstruct 499 499 499
501: 36(int) Load 360(u16)
501: 425(bvec3) IEqual 498 500
502: 193(ivec3) CompositeConstruct 501 501 501
Store 457(bv) 501
503: 427(bvec3) IEqual 500 502
502: 52(ivec2) Load 343(i16v)
Store 459(bv) 503
503: 14(int) Load 346(i16)
504: 52(ivec2) Load 345(i16v)
504: 52(ivec2) CompositeConstruct 503 503
505: 14(int) Load 348(i16)
505: 174(bvec2) IEqual 502 504
506: 52(ivec2) CompositeConstruct 505 505
506: 425(bvec3) Load 457(bv)
507: 174(bvec2) IEqual 504 506
507: 425(bvec3) VectorShuffle 506 505 3 4 2
508: 427(bvec3) Load 459(bv)
Store 457(bv) 507
509: 427(bvec3) VectorShuffle 508 507 3 4 2
508: 193(ivec3) Load 356(u16v)
Store 459(bv) 509
509: 36(int) Load 358(u16)
510: 193(ivec3) Load 358(u16v)
510: 193(ivec3) CompositeConstruct 509 509 509
511: 36(int) Load 360(u16)
511: 425(bvec3) INotEqual 508 510
512: 193(ivec3) CompositeConstruct 511 511 511
Store 457(bv) 511
513: 427(bvec3) INotEqual 510 512
512: 52(ivec2) Load 343(i16v)
Store 459(bv) 513
513: 14(int) Load 346(i16)
514: 52(ivec2) Load 345(i16v)
514: 52(ivec2) CompositeConstruct 513 513
515: 14(int) Load 348(i16)
515: 174(bvec2) INotEqual 512 514
516: 52(ivec2) CompositeConstruct 515 515
516: 425(bvec3) Load 457(bv)
517: 174(bvec2) INotEqual 514 516
517: 425(bvec3) VectorShuffle 516 515 3 4 2
518: 427(bvec3) Load 459(bv)
Store 457(bv) 517
519: 427(bvec3) VectorShuffle 518 517 3 4 2
Store 459(bv) 519
Return
Return
FunctionEnd
FunctionEnd
Test/spv.int64.frag
View file @
fb1e40b4
...
@@ -116,6 +116,8 @@ void operators()
...
@@ -116,6 +116,8 @@ void operators()
i64
=
i64
%
i
;
i64
=
i64
%
i
;
// Shift
// Shift
u64v
=
u64v
<<
i
;
i64
=
i64
>>
uv
.
y
;
u64v
<<=
i
;
u64v
<<=
i
;
i64
>>=
uv
.
y
;
i64
>>=
uv
.
y
;
...
...
Test/spv.rankShift.comp
0 → 100644
View file @
fb1e40b4
#version 450
#extension GL_ARB_gpu_shader_int64 : require
layout(local_size_x = 54) in;
layout(location=4) uniform int64_t arg0;
layout(location=5) uniform uint arg1;
void main()
{
uint64_t result = arg0 << arg1;
result = arg0 >> arg1;
result <<= arg1;
result >>= arg1;
}
\ No newline at end of file
glslang/MachineIndependent/Intermediate.cpp
View file @
fb1e40b4
...
@@ -475,7 +475,7 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
...
@@ -475,7 +475,7 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const
// This is 'mechanism' here, it does any conversion told.
// This is 'mechanism' here, it does any conversion told.
// It is about basic type, not about shape.
// It is about basic type, not about shape.
// The policy comes from the shader or the
above
code.
// The policy comes from the shader or the
calling
code.
TIntermUnary
*
TIntermediate
::
createConversion
(
TBasicType
convertTo
,
TIntermTyped
*
node
)
const
TIntermUnary
*
TIntermediate
::
createConversion
(
TBasicType
convertTo
,
TIntermTyped
*
node
)
const
{
{
//
//
...
@@ -488,44 +488,44 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -488,44 +488,44 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
switch
(
convertTo
)
{
switch
(
convertTo
)
{
case
EbtDouble
:
case
EbtDouble
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToDouble
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToDouble
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToDouble
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToDouble
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToDouble
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToDouble
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToDouble
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToDouble
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToDouble
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToDouble
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToDouble
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToDouble
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToDouble
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToDouble
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToDouble
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToDouble
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToDouble
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToDouble
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToDouble
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToDouble
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToDouble
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToDouble
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
}
}
break
;
break
;
case
EbtFloat
:
case
EbtFloat
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToFloat
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToFloat
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToFloat
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToFloat
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToFloat
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToFloat
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToFloat
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToFloat
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToFloat
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToFloat
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToFloat
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToFloat
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToFloat
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToFloat
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToFloat
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToFloat
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToFloat
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToFloat
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToFloat
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToFloat
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToFloat
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToFloat
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
}
}
break
;
break
;
case
EbtFloat16
:
case
EbtFloat16
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToFloat16
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToFloat16
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToFloat16
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToFloat16
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToFloat16
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToFloat16
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToFloat16
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToFloat16
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToFloat16
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToFloat16
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToFloat16
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToFloat16
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToFloat16
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToFloat16
;
break
;
...
@@ -539,33 +539,33 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -539,33 +539,33 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
break
;
break
;
case
EbtBool
:
case
EbtBool
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToBool
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToBool
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToBool
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToBool
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToBool
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToBool
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToBool
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToBool
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToBool
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToBool
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToBool
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToBool
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToBool
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToBool
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToBool
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToBool
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToBool
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToBool
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToBool
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToBool
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToBool
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToBool
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
}
}
break
;
break
;
case
EbtInt8
:
case
EbtInt8
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt8
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt8
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToInt8
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToInt8
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt8
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt8
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToInt8
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToInt8
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt8
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt8
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToInt8
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToInt8
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt8
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt8
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt8
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt8
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt8
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt8
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt8
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt8
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt8
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt8
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
...
@@ -573,16 +573,16 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -573,16 +573,16 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
break
;
break
;
case
EbtUint8
:
case
EbtUint8
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint8
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint8
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint8
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint8
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToUint8
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToUint8
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint8
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint8
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToUint8
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToUint8
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint8
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint8
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToUint8
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToUint8
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint8
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint8
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint8
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint8
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint8
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint8
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint8
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint8
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
...
@@ -591,16 +591,16 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -591,16 +591,16 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
case
EbtInt16
:
case
EbtInt16
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt16
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt16
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToInt16
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToInt16
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt16
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt16
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToInt16
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToInt16
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt16
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt16
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToInt16
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToInt16
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt16
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt16
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt16
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt16
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt16
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt16
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt16
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt16
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt16
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt16
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
...
@@ -608,16 +608,16 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -608,16 +608,16 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
break
;
break
;
case
EbtUint16
:
case
EbtUint16
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint16
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint16
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToUint16
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToUint16
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint16
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint16
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint16
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint16
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToUint16
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToUint16
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint16
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint16
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToUint16
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToUint16
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint16
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint16
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint16
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint16
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint16
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint16
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint16
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint16
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
...
@@ -626,68 +626,68 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -626,68 +626,68 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
case
EbtInt
:
case
EbtInt
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToInt
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToInt
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToInt
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToInt
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToInt
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToInt
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
}
}
break
;
break
;
case
EbtUint
:
case
EbtUint
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToUint
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToUint
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToUint
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToUint
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToUint
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToUint
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
}
}
break
;
break
;
case
EbtInt64
:
case
EbtInt64
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToInt64
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToInt64
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt64
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToInt64
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToInt64
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToInt64
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt64
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToInt64
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToInt64
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToInt64
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt64
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToInt64
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt64
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToInt64
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt64
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToInt64
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt64
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToInt64
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt64
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToInt64
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt64
;
break
;
case
EbtUint64
:
newOp
=
EOpConvUint64ToInt64
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
}
}
break
;
break
;
case
EbtUint64
:
case
EbtUint64
:
switch
(
node
->
getBasicType
())
{
switch
(
node
->
getBasicType
())
{
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint64
;
break
;
case
EbtInt8
:
newOp
=
EOpConvInt8ToUint64
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToUint64
;
break
;
case
EbtUint8
:
newOp
=
EOpConvUint8ToUint64
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint64
;
break
;
case
EbtInt16
:
newOp
=
EOpConvInt16ToUint64
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToUint64
;
break
;
case
EbtUint16
:
newOp
=
EOpConvUint16ToUint64
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint64
;
break
;
case
EbtInt
:
newOp
=
EOpConvIntToUint64
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToUint64
;
break
;
case
EbtUint
:
newOp
=
EOpConvUintToUint64
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint64
;
break
;
case
EbtBool
:
newOp
=
EOpConvBoolToUint64
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint64
;
break
;
case
EbtFloat
:
newOp
=
EOpConvFloatToUint64
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint64
;
break
;
case
EbtDouble
:
newOp
=
EOpConvDoubleToUint64
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint64
;
break
;
case
EbtFloat16
:
newOp
=
EOpConvFloat16ToUint64
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint64
;
break
;
case
EbtInt64
:
newOp
=
EOpConvInt64ToUint64
;
break
;
default
:
default
:
return
nullptr
;
return
nullptr
;
}
}
...
@@ -714,30 +714,36 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
...
@@ -714,30 +714,36 @@ TIntermUnary* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped
return
newNode
;
return
newNode
;
}
}
// For converting a pair of operands to a binary operation to compatible
// types with each other, relative to the operation in 'op'.
// This does not cover assignment operations, which is asymmetric in that the
// left type is not changeable.
// See addConversion(op, type, node) for assignments and unary operation
// conversions.
//
// Generally, this is focused on basic type conversion, not shape conversion.
// See addShapeConversion() for shape conversions.
//
// Returns the converted pair of nodes.
// Returns <nullptr, nullptr> when there is no conversion.
std
::
tuple
<
TIntermTyped
*
,
TIntermTyped
*>
std
::
tuple
<
TIntermTyped
*
,
TIntermTyped
*>
TIntermediate
::
addConversion
(
TOperator
op
,
TIntermTyped
*
node0
,
TIntermTyped
*
node1
)
const
TIntermediate
::
addConversion
(
TOperator
op
,
TIntermTyped
*
node0
,
TIntermTyped
*
node1
)
const
{
{
if
(
!
isConversionAllowed
(
op
,
node0
)
||
!
isConversionAllowed
(
op
,
node1
))
{
if
(
!
isConversionAllowed
(
op
,
node0
)
||
!
isConversionAllowed
(
op
,
node1
))
return
std
::
make_tuple
(
nullptr
,
nullptr
);
return
std
::
make_tuple
(
nullptr
,
nullptr
);
}
// If types are identical, no problem
if
(
node0
->
getType
()
==
node1
->
getType
())
return
std
::
make_tuple
(
node0
,
node1
);
// If one's a structure, then no conversions.
if
(
node0
->
getType
()
!=
node1
->
getType
())
{
if
(
node0
->
isStruct
()
||
node1
->
isStruct
())
// If differing structure, then no conversions.
return
std
::
make_tuple
(
nullptr
,
nullptr
);
if
(
node0
->
isStruct
()
||
node1
->
isStruct
())
return
std
::
make_tuple
(
nullptr
,
nullptr
);
// If one's an array, then no conversions.
// If differing arrays, then no conversions.
if
(
node0
->
getType
().
isArray
()
||
node1
->
getType
().
isArray
())
if
(
node0
->
getType
().
isArray
()
||
node1
->
getType
().
isArray
())
return
std
::
make_tuple
(
nullptr
,
nullptr
);
return
std
::
make_tuple
(
nullptr
,
nullptr
);
}
auto
promoteTo
=
std
::
make_tuple
(
EbtNumTypes
,
EbtNumTypes
);
auto
promoteTo
=
std
::
make_tuple
(
EbtNumTypes
,
EbtNumTypes
);
TBasicType
type0
=
node0
->
getType
().
getBasicType
();
TBasicType
type1
=
node1
->
getType
().
getBasicType
();
switch
(
op
)
{
switch
(
op
)
{
//
//
// List all the binary ops that can implicitly convert one operand to the other's type;
// List all the binary ops that can implicitly convert one operand to the other's type;
...
@@ -764,80 +770,52 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no
...
@@ -764,80 +770,52 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no
case
EOpAnd
:
case
EOpAnd
:
case
EOpInclusiveOr
:
case
EOpInclusiveOr
:
case
EOpExclusiveOr
:
case
EOpExclusiveOr
:
case
EOpAndAssign
:
case
EOpInclusiveOrAssign
:
case
EOpExclusiveOrAssign
:
case
EOpLogicalNot
:
case
EOpLogicalAnd
:
case
EOpLogicalOr
:
case
EOpLogicalXor
:
case
EOpFunctionCall
:
case
EOpReturn
:
case
EOpAssign
:
case
EOpAddAssign
:
case
EOpSubAssign
:
case
EOpMulAssign
:
case
EOpVectorTimesScalarAssign
:
case
EOpMatrixTimesScalarAssign
:
case
EOpDivAssign
:
case
EOpModAssign
:
case
EOpAtan
:
case
EOpClamp
:
case
EOpCross
:
case
EOpDistance
:
case
EOpDot
:
case
EOpDst
:
case
EOpFaceForward
:
case
EOpFma
:
case
EOpFrexp
:
case
EOpLdexp
:
case
EOpMix
:
case
EOpLit
:
case
EOpMax
:
case
EOpMin
:
case
EOpModf
:
case
EOpPow
:
case
EOpReflect
:
case
EOpRefract
:
case
EOpSmoothStep
:
case
EOpStep
:
case
EOpSequence
:
case
EOpSequence
:
// used by ?:
case
EOpConstructStruct
:
if
(
type0
==
type1
)
if
(
node0
->
getBasicType
()
==
node1
->
getBasicType
()
)
return
std
::
make_tuple
(
node0
,
node1
);
return
std
::
make_tuple
(
node0
,
node1
);
promoteTo
=
getConversionDestinatonType
(
type0
,
type1
,
op
);
promoteTo
=
getConversionDestinatonType
(
node0
->
getBasicType
(),
node1
->
getBasicType
()
,
op
);
if
(
std
::
get
<
0
>
(
promoteTo
)
==
EbtNumTypes
||
std
::
get
<
1
>
(
promoteTo
)
==
EbtNumTypes
)
if
(
std
::
get
<
0
>
(
promoteTo
)
==
EbtNumTypes
||
std
::
get
<
1
>
(
promoteTo
)
==
EbtNumTypes
)
return
std
::
make_tuple
(
nullptr
,
nullptr
);
return
std
::
make_tuple
(
nullptr
,
nullptr
);
break
;
break
;
// Shifts can have mixed types as long as they are integer and of the same rank,
case
EOpLogicalAnd
:
// without converting.
case
EOpLogicalOr
:
// It's the left operand's type that determines the resulting type, so no issue
case
EOpLogicalXor
:
// with assign shift ops either.
if
(
source
==
EShSourceHlsl
)
promoteTo
=
std
::
make_tuple
(
EbtBool
,
EbtBool
);
else
return
std
::
make_tuple
(
node0
,
node1
);
break
;
// There are no conversions needed for GLSL; the shift amount just needs to be an
// integer type, as does the base.
// HLSL can promote bools to ints to make this work.
case
EOpLeftShift
:
case
EOpLeftShift
:
case
EOpRightShift
:
case
EOpRightShift
:
case
EOpLeftShiftAssign
:
if
(
source
==
EShSourceHlsl
)
{
case
EOpRightShiftAssign
:
TBasicType
node0BasicType
=
node0
->
getBasicType
();
if
(
node0BasicType
==
EbtBool
)
if
(
isTypeInt
(
type0
)
&&
isTypeInt
(
type1
))
{
node0BasicType
=
EbtInt
;
if
(
getTypeRank
(
type0
)
==
getTypeRank
(
type1
))
{
if
(
node1
->
getBasicType
()
==
EbtBool
)
promoteTo
=
std
::
make_tuple
(
node0BasicType
,
EbtInt
);
else
promoteTo
=
std
::
make_tuple
(
node0BasicType
,
node1
->
getBasicType
());
}
else
{
if
(
isTypeInt
(
node0
->
getBasicType
())
&&
isTypeInt
(
node1
->
getBasicType
()))
return
std
::
make_tuple
(
node0
,
node1
);
return
std
::
make_tuple
(
node0
,
node1
);
}
else
{
else
promoteTo
=
getConversionDestinatonType
(
type0
,
type1
,
op
);
return
std
::
make_tuple
(
nullptr
,
nullptr
);
if
(
std
::
get
<
0
>
(
promoteTo
)
==
EbtNumTypes
||
std
::
get
<
1
>
(
promoteTo
)
==
EbtNumTypes
)
}
return
std
::
make_tuple
(
nullptr
,
nullptr
);
}
}
else
return
std
::
make_tuple
(
nullptr
,
nullptr
);
break
;
break
;
default
:
default
:
if
(
node0
->
getType
()
==
node1
->
getType
())
return
std
::
make_tuple
(
node0
,
node1
);
return
std
::
make_tuple
(
nullptr
,
nullptr
);
return
std
::
make_tuple
(
nullptr
,
nullptr
);
}
}
...
@@ -868,11 +846,13 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no
...
@@ -868,11 +846,13 @@ TIntermediate::addConversion(TOperator op, TIntermTyped* node0, TIntermTyped* no
// For implicit conversions, 'op' is not the requested conversion, it is the explicit
// For implicit conversions, 'op' is not the requested conversion, it is the explicit
// operation requiring the implicit conversion.
// operation requiring the implicit conversion.
//
//
// Binary operation conversions should be handled by addConversion(op, node, node), not here.
//
// Returns a node representing the conversion, which could be the same
// Returns a node representing the conversion, which could be the same
// node passed in if no conversion was needed.
// node passed in if no conversion was needed.
//
//
// Generally, this is focused on basic type conversion, not shape conversion.
// Generally, this is focused on basic type conversion, not shape conversion.
// See addShapeConversion().
// See addShapeConversion()
for shape conversions
.
//
//
// Return nullptr if a conversion can't be done.
// Return nullptr if a conversion can't be done.
//
//
...
@@ -939,40 +919,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
...
@@ -939,40 +919,10 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
promoteTo
=
EbtUint64
;
promoteTo
=
EbtUint64
;
break
;
break
;
//
// List all the binary ops that can implicitly convert one operand to the other's type;
// This implements the 'policy' for implicit type conversion.
//
case
EOpLessThan
:
case
EOpGreaterThan
:
case
EOpLessThanEqual
:
case
EOpGreaterThanEqual
:
case
EOpEqual
:
case
EOpNotEqual
:
case
EOpAdd
:
case
EOpSub
:
case
EOpMul
:
case
EOpDiv
:
case
EOpMod
:
case
EOpVectorTimesScalar
:
case
EOpVectorTimesMatrix
:
case
EOpMatrixTimesVector
:
case
EOpMatrixTimesScalar
:
case
EOpAnd
:
case
EOpInclusiveOr
:
case
EOpExclusiveOr
:
case
EOpAndAssign
:
case
EOpInclusiveOrAssign
:
case
EOpExclusiveOrAssign
:
case
EOpLogicalNot
:
case
EOpLogicalNot
:
case
EOpLogicalAnd
:
case
EOpLogicalOr
:
case
EOpLogicalXor
:
case
EOpFunctionCall
:
case
EOpFunctionCall
:
case
EOpReturn
:
case
EOpReturn
:
case
EOpAssign
:
case
EOpAssign
:
case
EOpAddAssign
:
case
EOpAddAssign
:
...
@@ -982,6 +932,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
...
@@ -982,6 +932,9 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
case
EOpMatrixTimesScalarAssign
:
case
EOpMatrixTimesScalarAssign
:
case
EOpDivAssign
:
case
EOpDivAssign
:
case
EOpModAssign
:
case
EOpModAssign
:
case
EOpAndAssign
:
case
EOpInclusiveOrAssign
:
case
EOpExclusiveOrAssign
:
case
EOpAtan
:
case
EOpAtan
:
case
EOpClamp
:
case
EOpClamp
:
...
@@ -1010,37 +963,24 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
...
@@ -1010,37 +963,24 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt
if
(
type
.
getBasicType
()
==
node
->
getType
().
getBasicType
())
if
(
type
.
getBasicType
()
==
node
->
getType
().
getBasicType
())
return
node
;
return
node
;
if
(
canImplicitlyPromote
(
node
->
get
Type
().
get
BasicType
(),
type
.
getBasicType
(),
op
))
if
(
canImplicitlyPromote
(
node
->
getBasicType
(),
type
.
getBasicType
(),
op
))
promoteTo
=
type
.
getBasicType
();
promoteTo
=
type
.
getBasicType
();
else
else
return
nullptr
;
return
nullptr
;
break
;
break
;
// Shifts can have mixed types as long as they are integer and of the same rank,
// For GLSL, there are no conversions needed; the shift amount just needs to be an
// without converting.
// integer type, as do the base/result.
// It's the left operand's type that determines the resulting type, so no issue
// HLSL can convert the shift from a bool to an int.
// with assign shift ops either.
case
EOpLeftShift
:
case
EOpRightShift
:
case
EOpLeftShiftAssign
:
case
EOpLeftShiftAssign
:
case
EOpRightShiftAssign
:
case
EOpRightShiftAssign
:
{
{
TBasicType
type0
=
type
.
getBasicType
();
if
(
source
==
EShSourceHlsl
&&
node
->
getType
().
getBasicType
()
==
EbtBool
)
TBasicType
type1
=
node
->
getType
().
getBasicType
();
promoteTo
=
type
.
getBasicType
();
else
{
if
(
source
==
EShSourceHlsl
&&
node
->
getType
().
getBasicType
()
==
EbtBool
)
{
if
(
isTypeInt
(
type
.
getBasicType
())
&&
isTypeInt
(
node
->
getBasicType
()))
promoteTo
=
type0
;
return
node
;
}
else
{
else
if
(
isTypeInt
(
type0
)
&&
isTypeInt
(
type1
))
{
if
(
getTypeRank
(
type0
)
==
getTypeRank
(
type1
))
{
return
node
;
}
else
{
if
(
canImplicitlyPromote
(
type1
,
type0
,
op
))
promoteTo
=
type0
;
else
return
nullptr
;
}
}
else
return
nullptr
;
return
nullptr
;
}
}
break
;
break
;
...
@@ -1485,9 +1425,7 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
...
@@ -1485,9 +1425,7 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat
extensionRequested
(
E_GL_KHX_shader_explicit_arithmetic_types_float32
)
||
extensionRequested
(
E_GL_KHX_shader_explicit_arithmetic_types_float32
)
||
extensionRequested
(
E_GL_KHX_shader_explicit_arithmetic_types_float64
);
extensionRequested
(
E_GL_KHX_shader_explicit_arithmetic_types_float64
);
if
(
explicitTypesEnabled
)
if
(
explicitTypesEnabled
)
{
{
// integral promotions
// integral promotions
if
(
isIntegralPromotion
(
from
,
to
))
{
if
(
isIntegralPromotion
(
from
,
to
))
{
return
true
;
return
true
;
...
@@ -2952,7 +2890,7 @@ bool TIntermediate::promoteUnary(TIntermUnary& node)
...
@@ -2952,7 +2890,7 @@ bool TIntermediate::promoteUnary(TIntermUnary& node)
// Convert operand to a boolean type
// Convert operand to a boolean type
if
(
operand
->
getBasicType
()
!=
EbtBool
)
{
if
(
operand
->
getBasicType
()
!=
EbtBool
)
{
// Add constructor to boolean type. If that fails, we can't do it, so return false.
// Add constructor to boolean type. If that fails, we can't do it, so return false.
TIntermTyped
*
converted
=
convertToBasicType
(
op
,
EbtBool
,
operand
);
TIntermTyped
*
converted
=
addConversion
(
op
,
TType
(
EbtBool
)
,
operand
);
if
(
converted
==
nullptr
)
if
(
converted
==
nullptr
)
return
false
;
return
false
;
...
@@ -2997,24 +2935,6 @@ void TIntermUnary::updatePrecision()
...
@@ -2997,24 +2935,6 @@ void TIntermUnary::updatePrecision()
}
}
}
}
// If it is not already, convert this node to the given basic type.
TIntermTyped
*
TIntermediate
::
convertToBasicType
(
TOperator
op
,
TBasicType
basicType
,
TIntermTyped
*
node
)
const
{
if
(
node
==
nullptr
)
return
nullptr
;
// It's already this basic type: nothing needs to be done, so use the node directly.
if
(
node
->
getBasicType
()
==
basicType
)
return
node
;
const
TType
&
type
=
node
->
getType
();
const
TType
newType
(
basicType
,
type
.
getQualifier
().
storage
,
type
.
getVectorSize
(),
type
.
getMatrixCols
(),
type
.
getMatrixRows
(),
type
.
isVector
());
// Add constructor to the right vectorness of the right type. If that fails, we can't do it, so return nullptr.
return
addConversion
(
op
,
newType
,
node
);
}
//
//
// See TIntermediate::promote
// See TIntermediate::promote
//
//
...
@@ -3087,8 +3007,10 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
...
@@ -3087,8 +3007,10 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
case
EOpSub
:
case
EOpSub
:
case
EOpDiv
:
case
EOpDiv
:
case
EOpMul
:
case
EOpMul
:
left
=
addConversion
(
op
,
TType
(
EbtInt
,
EvqTemporary
,
left
->
getVectorSize
()),
left
);
if
(
left
->
getBasicType
()
==
EbtBool
)
right
=
addConversion
(
op
,
TType
(
EbtInt
,
EvqTemporary
,
right
->
getVectorSize
()),
right
);
left
=
createConversion
(
EbtInt
,
left
);
if
(
right
->
getBasicType
()
==
EbtBool
)
right
=
createConversion
(
EbtInt
,
right
);
if
(
left
==
nullptr
||
right
==
nullptr
)
if
(
left
==
nullptr
||
right
==
nullptr
)
return
false
;
return
false
;
node
.
setLeft
(
left
);
node
.
setLeft
(
left
);
...
@@ -3139,21 +3061,17 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
...
@@ -3139,21 +3061,17 @@ bool TIntermediate::promoteBinary(TIntermBinary& node)
case
EOpLogicalAnd
:
case
EOpLogicalAnd
:
case
EOpLogicalOr
:
case
EOpLogicalOr
:
case
EOpLogicalXor
:
case
EOpLogicalXor
:
if
(
getSource
()
==
EShSourceHlsl
)
{
// logical ops operate only on Booleans or vectors of Booleans.
TIntermTyped
*
convertedL
=
convertToBasicType
(
op
,
EbtBool
,
left
);
if
(
left
->
getBasicType
()
!=
EbtBool
||
left
->
isMatrix
())
TIntermTyped
*
convertedR
=
convertToBasicType
(
op
,
EbtBool
,
right
);
if
(
convertedL
==
nullptr
||
convertedR
==
nullptr
)
return
false
;
return
false
;
node
.
setLeft
(
left
=
convertedL
);
// also updates stack variable
node
.
setRight
(
right
=
convertedR
);
// also updates stack variable
if
(
getSource
()
==
EShSourceGlsl
)
{
}
else
{
// logical ops operate only on scalar Booleans and will promote to scalar Boolean.
// logical ops operate only on scalar Booleans and will promote to scalar Boolean.
if
(
left
->
getBasicType
()
!=
EbtBool
||
left
->
isVector
()
||
left
->
isMatrix
())
if
(
left
->
isVector
())
return
false
;
return
false
;
}
}
node
.
setType
(
TType
(
EbtBool
,
EvqTemporary
,
left
->
getVectorSize
()));
node
.
setType
(
TType
(
EbtBool
,
EvqTemporary
,
left
->
getVectorSize
()));
break
;
break
;
case
EOpRightShift
:
case
EOpRightShift
:
...
...
glslang/MachineIndependent/localintermediate.h
View file @
fb1e40b4
...
@@ -459,9 +459,6 @@ public:
...
@@ -459,9 +459,6 @@ public:
TIntermUnary
*
addUnaryNode
(
TOperator
op
,
TIntermTyped
*
child
,
TSourceLoc
)
const
;
TIntermUnary
*
addUnaryNode
(
TOperator
op
,
TIntermTyped
*
child
,
TSourceLoc
)
const
;
TIntermUnary
*
addUnaryNode
(
TOperator
op
,
TIntermTyped
*
child
,
TSourceLoc
,
const
TType
&
)
const
;
TIntermUnary
*
addUnaryNode
(
TOperator
op
,
TIntermTyped
*
child
,
TSourceLoc
,
const
TType
&
)
const
;
// Add conversion from node's type to given basic type.
TIntermTyped
*
convertToBasicType
(
TOperator
op
,
TBasicType
basicType
,
TIntermTyped
*
node
)
const
;
// Constant folding (in Constant.cpp)
// Constant folding (in Constant.cpp)
TIntermTyped
*
fold
(
TIntermAggregate
*
aggrNode
);
TIntermTyped
*
fold
(
TIntermAggregate
*
aggrNode
);
TIntermTyped
*
foldConstructor
(
TIntermAggregate
*
aggrNode
);
TIntermTyped
*
foldConstructor
(
TIntermAggregate
*
aggrNode
);
...
...
gtests/Spv.FromFile.cpp
View file @
fb1e40b4
...
@@ -416,6 +416,7 @@ INSTANTIATE_TEST_CASE_P(
...
@@ -416,6 +416,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.460.comp"
,
"spv.460.comp"
,
"spv.atomic.comp"
,
"spv.atomic.comp"
,
"spv.glFragColor.frag"
,
"spv.glFragColor.frag"
,
"spv.rankShift.comp"
,
"spv.specConst.vert"
,
"spv.specConst.vert"
,
"spv.OVR_multiview.vert"
,
"spv.OVR_multiview.vert"
,
})),
})),
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment