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
cbc426ee
Commit
cbc426ee
authored
Dec 15, 2015
by
Rex Xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
SPV: Implement GLSL built-in bitcast functions.
parent
ea0cb2eb
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
286 additions
and
0 deletions
+286
-0
GlslangToSpv.cpp
SPIRV/GlslangToSpv.cpp
+7
-0
spv.bitCast.frag.out
Test/baseResults/spv.bitCast.frag.out
+232
-0
spv.bitCast.frag
Test/spv.bitCast.frag
+46
-0
test-spirv-list
Test/test-spirv-list
+1
-0
No files found.
SPIRV/GlslangToSpv.cpp
View file @
cbc426ee
...
@@ -2531,6 +2531,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
...
@@ -2531,6 +2531,13 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
unaryOp
=
spv
::
OpIsInf
;
unaryOp
=
spv
::
OpIsInf
;
break
;
break
;
case
glslang
:
:
EOpFloatBitsToInt
:
case
glslang
:
:
EOpFloatBitsToUint
:
case
glslang
:
:
EOpIntBitsToFloat
:
case
glslang
:
:
EOpUintBitsToFloat
:
unaryOp
=
spv
::
OpBitcast
;
break
;
case
glslang
:
:
EOpPackSnorm2x16
:
case
glslang
:
:
EOpPackSnorm2x16
:
libCall
=
spv
::
GLSLstd450PackSnorm2x16
;
libCall
=
spv
::
GLSLstd450PackSnorm2x16
;
break
;
break
;
...
...
Test/baseResults/spv.bitCast.frag.out
0 → 100644
View file @
cbc426ee
spv.bitCast.frag
Warning, version 450 is not yet complete; most version-specific features are present, but some are missing.
Linked fragment stage:
// Module Version 10000
// Generated by (magic number): 80001
// Id's are bound by 172
Capability Shader
1: ExtInstImport "GLSL.std.450"
MemoryModel Logical GLSL450
EntryPoint Fragment 4 "main" 154
ExecutionMode 4 OriginLowerLeft
Source GLSL 450
Name 4 "main"
Name 9 "idata"
Name 14 "f1"
Name 26 "f2"
Name 37 "f3"
Name 48 "f4"
Name 55 "udata"
Name 85 "fdata"
Name 89 "i1"
Name 98 "i2"
Name 107 "i3"
Name 116 "i4"
Name 122 "u1"
Name 130 "u2"
Name 139 "u3"
Name 148 "u4"
Name 154 "fragColor"
2: TypeVoid
3: TypeFunction 2
6: TypeInt 32 1
7: TypeVector 6(int) 4
8: TypePointer Function 7(ivec4)
10: 6(int) Constant 0
11: 7(ivec4) ConstantComposite 10 10 10 10
12: TypeFloat 32
13: TypePointer UniformConstant 12(float)
14(f1): 13(ptr) Variable UniformConstant
17: TypeInt 32 0
18: 17(int) Constant 0
19: TypePointer Function 6(int)
24: TypeVector 12(float) 2
25: TypePointer UniformConstant 24(fvec2)
26(f2): 25(ptr) Variable UniformConstant
28: TypeVector 6(int) 2
35: TypeVector 12(float) 3
36: TypePointer UniformConstant 35(fvec3)
37(f3): 36(ptr) Variable UniformConstant
39: TypeVector 6(int) 3
46: TypeVector 12(float) 4
47: TypePointer UniformConstant 46(fvec4)
48(f4): 47(ptr) Variable UniformConstant
53: TypeVector 17(int) 4
54: TypePointer Function 53(ivec4)
56: 53(ivec4) ConstantComposite 18 18 18 18
59: TypePointer Function 17(int)
65: TypeVector 17(int) 2
73: TypeVector 17(int) 3
84: TypePointer Function 46(fvec4)
86: 12(float) Constant 0
87: 46(fvec4) ConstantComposite 86 86 86 86
88: TypePointer UniformConstant 6(int)
89(i1): 88(ptr) Variable UniformConstant
92: TypePointer Function 12(float)
97: TypePointer UniformConstant 28(ivec2)
98(i2): 97(ptr) Variable UniformConstant
106: TypePointer UniformConstant 39(ivec3)
107(i3): 106(ptr) Variable UniformConstant
115: TypePointer UniformConstant 7(ivec4)
116(i4): 115(ptr) Variable UniformConstant
121: TypePointer UniformConstant 17(int)
122(u1): 121(ptr) Variable UniformConstant
129: TypePointer UniformConstant 65(ivec2)
130(u2): 129(ptr) Variable UniformConstant
138: TypePointer UniformConstant 73(ivec3)
139(u3): 138(ptr) Variable UniformConstant
147: TypePointer UniformConstant 53(ivec4)
148(u4): 147(ptr) Variable UniformConstant
153: TypePointer Output 46(fvec4)
154(fragColor): 153(ptr) Variable Output
159: TypeBool
160: TypeVector 159(bool) 4
168: 12(float) Constant 1045220557
169: 46(fvec4) ConstantComposite 168 168 168 168
4(main): 2 Function None 3
5: Label
9(idata): 8(ptr) Variable Function
55(udata): 54(ptr) Variable Function
85(fdata): 84(ptr) Variable Function
155: 84(ptr) Variable Function
Store 9(idata) 11
15: 12(float) Load 14(f1)
16: 6(int) Bitcast 15
20: 19(ptr) AccessChain 9(idata) 18
21: 6(int) Load 20
22: 6(int) IAdd 21 16
23: 19(ptr) AccessChain 9(idata) 18
Store 23 22
27: 24(fvec2) Load 26(f2)
29: 28(ivec2) Bitcast 27
30: 7(ivec4) Load 9(idata)
31: 28(ivec2) VectorShuffle 30 30 0 1
32: 28(ivec2) IAdd 31 29
33: 7(ivec4) Load 9(idata)
34: 7(ivec4) VectorShuffle 33 32 4 5 2 3
Store 9(idata) 34
38: 35(fvec3) Load 37(f3)
40: 39(ivec3) Bitcast 38
41: 7(ivec4) Load 9(idata)
42: 39(ivec3) VectorShuffle 41 41 0 1 2
43: 39(ivec3) IAdd 42 40
44: 7(ivec4) Load 9(idata)
45: 7(ivec4) VectorShuffle 44 43 4 5 6 3
Store 9(idata) 45
49: 46(fvec4) Load 48(f4)
50: 7(ivec4) Bitcast 49
51: 7(ivec4) Load 9(idata)
52: 7(ivec4) IAdd 51 50
Store 9(idata) 52
Store 55(udata) 56
57: 12(float) Load 14(f1)
58: 17(int) Bitcast 57
60: 59(ptr) AccessChain 55(udata) 18
61: 17(int) Load 60
62: 17(int) IAdd 61 58
63: 59(ptr) AccessChain 55(udata) 18
Store 63 62
64: 24(fvec2) Load 26(f2)
66: 65(ivec2) Bitcast 64
67: 53(ivec4) Load 55(udata)
68: 65(ivec2) VectorShuffle 67 67 0 1
69: 65(ivec2) IAdd 68 66
70: 53(ivec4) Load 55(udata)
71: 53(ivec4) VectorShuffle 70 69 4 5 2 3
Store 55(udata) 71
72: 35(fvec3) Load 37(f3)
74: 73(ivec3) Bitcast 72
75: 53(ivec4) Load 55(udata)
76: 73(ivec3) VectorShuffle 75 75 0 1 2
77: 73(ivec3) IAdd 76 74
78: 53(ivec4) Load 55(udata)
79: 53(ivec4) VectorShuffle 78 77 4 5 6 3
Store 55(udata) 79
80: 46(fvec4) Load 48(f4)
81: 53(ivec4) Bitcast 80
82: 53(ivec4) Load 55(udata)
83: 53(ivec4) IAdd 82 81
Store 55(udata) 83
Store 85(fdata) 87
90: 6(int) Load 89(i1)
91: 12(float) Bitcast 90
93: 92(ptr) AccessChain 85(fdata) 18
94: 12(float) Load 93
95: 12(float) FAdd 94 91
96: 92(ptr) AccessChain 85(fdata) 18
Store 96 95
99: 28(ivec2) Load 98(i2)
100: 24(fvec2) Bitcast 99
101: 46(fvec4) Load 85(fdata)
102: 24(fvec2) VectorShuffle 101 101 0 1
103: 24(fvec2) FAdd 102 100
104: 46(fvec4) Load 85(fdata)
105: 46(fvec4) VectorShuffle 104 103 4 5 2 3
Store 85(fdata) 105
108: 39(ivec3) Load 107(i3)
109: 35(fvec3) Bitcast 108
110: 46(fvec4) Load 85(fdata)
111: 35(fvec3) VectorShuffle 110 110 0 1 2
112: 35(fvec3) FAdd 111 109
113: 46(fvec4) Load 85(fdata)
114: 46(fvec4) VectorShuffle 113 112 4 5 6 3
Store 85(fdata) 114
117: 7(ivec4) Load 116(i4)
118: 46(fvec4) Bitcast 117
119: 46(fvec4) Load 85(fdata)
120: 46(fvec4) FAdd 119 118
Store 85(fdata) 120
123: 17(int) Load 122(u1)
124: 12(float) Bitcast 123
125: 92(ptr) AccessChain 85(fdata) 18
126: 12(float) Load 125
127: 12(float) FAdd 126 124
128: 92(ptr) AccessChain 85(fdata) 18
Store 128 127
131: 65(ivec2) Load 130(u2)
132: 24(fvec2) Bitcast 131
133: 46(fvec4) Load 85(fdata)
134: 24(fvec2) VectorShuffle 133 133 0 1
135: 24(fvec2) FAdd 134 132
136: 46(fvec4) Load 85(fdata)
137: 46(fvec4) VectorShuffle 136 135 4 5 2 3
Store 85(fdata) 137
140: 73(ivec3) Load 139(u3)
141: 35(fvec3) Bitcast 140
142: 46(fvec4) Load 85(fdata)
143: 35(fvec3) VectorShuffle 142 142 0 1 2
144: 35(fvec3) FAdd 143 141
145: 46(fvec4) Load 85(fdata)
146: 46(fvec4) VectorShuffle 145 144 4 5 6 3
Store 85(fdata) 146
149: 53(ivec4) Load 148(u4)
150: 46(fvec4) Bitcast 149
151: 46(fvec4) Load 85(fdata)
152: 46(fvec4) FAdd 151 150
Store 85(fdata) 152
156: 7(ivec4) Load 9(idata)
157: 53(ivec4) Bitcast 156
158: 53(ivec4) Load 55(udata)
161: 160(bvec4) IEqual 157 158
162: 159(bool) All 161
SelectionMerge 164 None
BranchConditional 162 163 166
163: Label
165: 46(fvec4) Load 85(fdata)
Store 155 165
Branch 164
166: Label
167: 46(fvec4) Load 85(fdata)
170: 46(fvec4) FAdd 167 169
Store 155 170
Branch 164
164: Label
171: 46(fvec4) Load 155
Store 154(fragColor) 171
Return
FunctionEnd
Test/spv.bitCast.frag
0 → 100644
View file @
cbc426ee
#version 450
uniform
int
i1
;
uniform
ivec2
i2
;
uniform
ivec3
i3
;
uniform
ivec4
i4
;
uniform
uint
u1
;
uniform
uvec2
u2
;
uniform
uvec3
u3
;
uniform
uvec4
u4
;
uniform
float
f1
;
uniform
vec2
f2
;
uniform
vec3
f3
;
uniform
vec4
f4
;
out
vec4
fragColor
;
void
main
()
{
ivec4
idata
=
ivec4
(
0
);
idata
.
x
+=
floatBitsToInt
(
f1
);
idata
.
xy
+=
floatBitsToInt
(
f2
);
idata
.
xyz
+=
floatBitsToInt
(
f3
);
idata
+=
floatBitsToInt
(
f4
);
uvec4
udata
=
uvec4
(
0
);
udata
.
x
+=
floatBitsToUint
(
f1
);
udata
.
xy
+=
floatBitsToUint
(
f2
);
udata
.
xyz
+=
floatBitsToUint
(
f3
);
udata
+=
floatBitsToUint
(
f4
);
vec4
fdata
=
vec4
(
0
.
0
);
fdata
.
x
+=
intBitsToFloat
(
i1
);
fdata
.
xy
+=
intBitsToFloat
(
i2
);
fdata
.
xyz
+=
intBitsToFloat
(
i3
);
fdata
+=
intBitsToFloat
(
i4
);
fdata
.
x
+=
uintBitsToFloat
(
u1
);
fdata
.
xy
+=
uintBitsToFloat
(
u2
);
fdata
.
xyz
+=
uintBitsToFloat
(
u3
);
fdata
+=
uintBitsToFloat
(
u4
);
fragColor
=
(
idata
==
udata
)
?
fdata
:
fdata
+
vec4
(
0
.
2
);
}
\ No newline at end of file
Test/test-spirv-list
View file @
cbc426ee
...
@@ -30,6 +30,7 @@ spv.accessChain.frag
...
@@ -30,6 +30,7 @@ spv.accessChain.frag
spv.aggOps.frag
spv.aggOps.frag
spv.always-discard.frag
spv.always-discard.frag
spv.always-discard2.frag
spv.always-discard2.frag
spv.bitCast.frag
spv.bool.vert
spv.bool.vert
spv.conditionalDiscard.frag
spv.conditionalDiscard.frag
spv.conversion.frag
spv.conversion.frag
...
...
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