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
e7b51b03
Commit
e7b51b03
authored
May 25, 2017
by
John Kessenich
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
GLSL Subgroups: Only include 'double' built-in functions for some versions.
Version must be desktop, at least #version 400, to access double-based subgroup built-in functions.
parent
3cf27e00
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
143 additions
and
111 deletions
+143
-111
spv.specConstant.vert.out
Test/baseResults/spv.specConstant.vert.out
+3
-3
Initialize.cpp
glslang/MachineIndependent/Initialize.cpp
+140
-108
No files found.
Test/baseResults/spv.specConstant.vert.out
View file @
e7b51b03
...
@@ -13,7 +13,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
...
@@ -13,7 +13,7 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Source GLSL 400
Source GLSL 400
Name 4 "main"
Name 4 "main"
Name 9 "arraySize"
Name 9 "arraySize"
Name 14 "foo(vf4[s
1518
];"
Name 14 "foo(vf4[s
2153
];"
Name 13 "p"
Name 13 "p"
Name 17 "builtin_spec_constant("
Name 17 "builtin_spec_constant("
Name 20 "color"
Name 20 "color"
...
@@ -104,10 +104,10 @@ Warning, version 400 is not yet complete; most version-specific features are pre
...
@@ -104,10 +104,10 @@ Warning, version 400 is not yet complete; most version-specific features are pre
Store 20(color) 46
Store 20(color) 46
48: 10 Load 22(ucol)
48: 10 Load 22(ucol)
Store 47(param) 48
Store 47(param) 48
49: 2 FunctionCall 14(foo(vf4[s
1518
];) 47(param)
49: 2 FunctionCall 14(foo(vf4[s
2153
];) 47(param)
Return
Return
FunctionEnd
FunctionEnd
14(foo(vf4[s
1518
];): 2 Function None 12
14(foo(vf4[s
2153
];): 2 Function None 12
13(p): 11(ptr) FunctionParameter
13(p): 11(ptr) FunctionParameter
15: Label
15: Label
54: 24(ptr) AccessChain 53(dupUcol) 23
54: 24(ptr) AccessChain 53(dupUcol) 23
...
...
glslang/MachineIndependent/Initialize.cpp
View file @
e7b51b03
...
@@ -1599,10 +1599,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1599,10 +1599,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bool subgroupAllEqual(bvec2);
\n
"
"bool subgroupAllEqual(bvec2);
\n
"
"bool subgroupAllEqual(bvec3);
\n
"
"bool subgroupAllEqual(bvec3);
\n
"
"bool subgroupAllEqual(bvec4);
\n
"
"bool subgroupAllEqual(bvec4);
\n
"
"bool subgroupAllEqual(double);
\n
"
"bool subgroupAllEqual(dvec2);
\n
"
"bool subgroupAllEqual(dvec3);
\n
"
"bool subgroupAllEqual(dvec4);
\n
"
"float subgroupBroadcast(float, uint);
\n
"
"float subgroupBroadcast(float, uint);
\n
"
"vec2 subgroupBroadcast(vec2, uint);
\n
"
"vec2 subgroupBroadcast(vec2, uint);
\n
"
...
@@ -1620,10 +1616,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1620,10 +1616,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupBroadcast(bvec2, uint);
\n
"
"bvec2 subgroupBroadcast(bvec2, uint);
\n
"
"bvec3 subgroupBroadcast(bvec3, uint);
\n
"
"bvec3 subgroupBroadcast(bvec3, uint);
\n
"
"bvec4 subgroupBroadcast(bvec4, uint);
\n
"
"bvec4 subgroupBroadcast(bvec4, uint);
\n
"
"double subgroupBroadcast(double, uint);
\n
"
"dvec2 subgroupBroadcast(dvec2, uint);
\n
"
"dvec3 subgroupBroadcast(dvec3, uint);
\n
"
"dvec4 subgroupBroadcast(dvec4, uint);
\n
"
"float subgroupBroadcastFirst(float);
\n
"
"float subgroupBroadcastFirst(float);
\n
"
"vec2 subgroupBroadcastFirst(vec2);
\n
"
"vec2 subgroupBroadcastFirst(vec2);
\n
"
...
@@ -1641,10 +1633,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1641,10 +1633,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupBroadcastFirst(bvec2);
\n
"
"bvec2 subgroupBroadcastFirst(bvec2);
\n
"
"bvec3 subgroupBroadcastFirst(bvec3);
\n
"
"bvec3 subgroupBroadcastFirst(bvec3);
\n
"
"bvec4 subgroupBroadcastFirst(bvec4);
\n
"
"bvec4 subgroupBroadcastFirst(bvec4);
\n
"
"double subgroupBroadcastFirst(double);
\n
"
"dvec2 subgroupBroadcastFirst(dvec2);
\n
"
"dvec3 subgroupBroadcastFirst(dvec3);
\n
"
"dvec4 subgroupBroadcastFirst(dvec4);
\n
"
"uvec4 subgroupBallot(bool);
\n
"
"uvec4 subgroupBallot(bool);
\n
"
"bool subgroupInverseBallot(uvec4);
\n
"
"bool subgroupInverseBallot(uvec4);
\n
"
...
@@ -1671,10 +1659,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1671,10 +1659,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupShuffle(bvec2, uint);
\n
"
"bvec2 subgroupShuffle(bvec2, uint);
\n
"
"bvec3 subgroupShuffle(bvec3, uint);
\n
"
"bvec3 subgroupShuffle(bvec3, uint);
\n
"
"bvec4 subgroupShuffle(bvec4, uint);
\n
"
"bvec4 subgroupShuffle(bvec4, uint);
\n
"
"double subgroupShuffle(double, uint);
\n
"
"dvec2 subgroupShuffle(dvec2, uint);
\n
"
"dvec3 subgroupShuffle(dvec3, uint);
\n
"
"dvec4 subgroupShuffle(dvec4, uint);
\n
"
"float subgroupShuffleXor(float, uint);
\n
"
"float subgroupShuffleXor(float, uint);
\n
"
"vec2 subgroupShuffleXor(vec2, uint);
\n
"
"vec2 subgroupShuffleXor(vec2, uint);
\n
"
...
@@ -1692,10 +1676,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1692,10 +1676,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupShuffleXor(bvec2, uint);
\n
"
"bvec2 subgroupShuffleXor(bvec2, uint);
\n
"
"bvec3 subgroupShuffleXor(bvec3, uint);
\n
"
"bvec3 subgroupShuffleXor(bvec3, uint);
\n
"
"bvec4 subgroupShuffleXor(bvec4, uint);
\n
"
"bvec4 subgroupShuffleXor(bvec4, uint);
\n
"
"double subgroupShuffleXor(double, uint);
\n
"
"dvec2 subgroupShuffleXor(dvec2, uint);
\n
"
"dvec3 subgroupShuffleXor(dvec3, uint);
\n
"
"dvec4 subgroupShuffleXor(dvec4, uint);
\n
"
"float subgroupShuffleUp(float, uint delta);
\n
"
"float subgroupShuffleUp(float, uint delta);
\n
"
"vec2 subgroupShuffleUp(vec2, uint delta);
\n
"
"vec2 subgroupShuffleUp(vec2, uint delta);
\n
"
...
@@ -1713,10 +1693,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1713,10 +1693,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupShuffleUp(bvec2, uint delta);
\n
"
"bvec2 subgroupShuffleUp(bvec2, uint delta);
\n
"
"bvec3 subgroupShuffleUp(bvec3, uint delta);
\n
"
"bvec3 subgroupShuffleUp(bvec3, uint delta);
\n
"
"bvec4 subgroupShuffleUp(bvec4, uint delta);
\n
"
"bvec4 subgroupShuffleUp(bvec4, uint delta);
\n
"
"double subgroupShuffleUp(double, uint delta);
\n
"
"dvec2 subgroupShuffleUp(dvec2, uint delta);
\n
"
"dvec3 subgroupShuffleUp(dvec3, uint delta);
\n
"
"dvec4 subgroupShuffleUp(dvec4, uint delta);
\n
"
"float subgroupShuffleDown(float, uint delta);
\n
"
"float subgroupShuffleDown(float, uint delta);
\n
"
"vec2 subgroupShuffleDown(vec2, uint delta);
\n
"
"vec2 subgroupShuffleDown(vec2, uint delta);
\n
"
...
@@ -1734,10 +1710,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1734,10 +1710,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupShuffleDown(bvec2, uint delta);
\n
"
"bvec2 subgroupShuffleDown(bvec2, uint delta);
\n
"
"bvec3 subgroupShuffleDown(bvec3, uint delta);
\n
"
"bvec3 subgroupShuffleDown(bvec3, uint delta);
\n
"
"bvec4 subgroupShuffleDown(bvec4, uint delta);
\n
"
"bvec4 subgroupShuffleDown(bvec4, uint delta);
\n
"
"double subgroupShuffleDown(double, uint delta);
\n
"
"dvec2 subgroupShuffleDown(dvec2, uint delta);
\n
"
"dvec3 subgroupShuffleDown(dvec3, uint delta);
\n
"
"dvec4 subgroupShuffleDown(dvec4, uint delta);
\n
"
"float subgroupAdd(float);
\n
"
"float subgroupAdd(float);
\n
"
"vec2 subgroupAdd(vec2);
\n
"
"vec2 subgroupAdd(vec2);
\n
"
...
@@ -1751,10 +1723,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1751,10 +1723,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupAdd(uvec2);
\n
"
"uvec2 subgroupAdd(uvec2);
\n
"
"uvec3 subgroupAdd(uvec3);
\n
"
"uvec3 subgroupAdd(uvec3);
\n
"
"uvec4 subgroupAdd(uvec4);
\n
"
"uvec4 subgroupAdd(uvec4);
\n
"
"double subgroupAdd(double);
\n
"
"dvec2 subgroupAdd(dvec2);
\n
"
"dvec3 subgroupAdd(dvec3);
\n
"
"dvec4 subgroupAdd(dvec4);
\n
"
"float subgroupMul(float);
\n
"
"float subgroupMul(float);
\n
"
"vec2 subgroupMul(vec2);
\n
"
"vec2 subgroupMul(vec2);
\n
"
...
@@ -1768,10 +1736,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1768,10 +1736,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupMul(uvec2);
\n
"
"uvec2 subgroupMul(uvec2);
\n
"
"uvec3 subgroupMul(uvec3);
\n
"
"uvec3 subgroupMul(uvec3);
\n
"
"uvec4 subgroupMul(uvec4);
\n
"
"uvec4 subgroupMul(uvec4);
\n
"
"double subgroupMul(double);
\n
"
"dvec2 subgroupMul(dvec2);
\n
"
"dvec3 subgroupMul(dvec3);
\n
"
"dvec4 subgroupMul(dvec4);
\n
"
"float subgroupMin(float);
\n
"
"float subgroupMin(float);
\n
"
"vec2 subgroupMin(vec2);
\n
"
"vec2 subgroupMin(vec2);
\n
"
...
@@ -1785,10 +1749,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1785,10 +1749,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupMin(uvec2);
\n
"
"uvec2 subgroupMin(uvec2);
\n
"
"uvec3 subgroupMin(uvec3);
\n
"
"uvec3 subgroupMin(uvec3);
\n
"
"uvec4 subgroupMin(uvec4);
\n
"
"uvec4 subgroupMin(uvec4);
\n
"
"double subgroupMin(double);
\n
"
"dvec2 subgroupMin(dvec2);
\n
"
"dvec3 subgroupMin(dvec3);
\n
"
"dvec4 subgroupMin(dvec4);
\n
"
"float subgroupMax(float);
\n
"
"float subgroupMax(float);
\n
"
"vec2 subgroupMax(vec2);
\n
"
"vec2 subgroupMax(vec2);
\n
"
...
@@ -1802,10 +1762,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1802,10 +1762,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupMax(uvec2);
\n
"
"uvec2 subgroupMax(uvec2);
\n
"
"uvec3 subgroupMax(uvec3);
\n
"
"uvec3 subgroupMax(uvec3);
\n
"
"uvec4 subgroupMax(uvec4);
\n
"
"uvec4 subgroupMax(uvec4);
\n
"
"double subgroupMax(double);
\n
"
"dvec2 subgroupMax(dvec2);
\n
"
"dvec3 subgroupMax(dvec3);
\n
"
"dvec4 subgroupMax(dvec4);
\n
"
"int subgroupAnd(int);
\n
"
"int subgroupAnd(int);
\n
"
"ivec2 subgroupAnd(ivec2);
\n
"
"ivec2 subgroupAnd(ivec2);
\n
"
...
@@ -1858,10 +1814,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1858,10 +1814,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupInclusiveAdd(uvec2);
\n
"
"uvec2 subgroupInclusiveAdd(uvec2);
\n
"
"uvec3 subgroupInclusiveAdd(uvec3);
\n
"
"uvec3 subgroupInclusiveAdd(uvec3);
\n
"
"uvec4 subgroupInclusiveAdd(uvec4);
\n
"
"uvec4 subgroupInclusiveAdd(uvec4);
\n
"
"double subgroupInclusiveAdd(double);
\n
"
"dvec2 subgroupInclusiveAdd(dvec2);
\n
"
"dvec3 subgroupInclusiveAdd(dvec3);
\n
"
"dvec4 subgroupInclusiveAdd(dvec4);
\n
"
"float subgroupInclusiveMul(float);
\n
"
"float subgroupInclusiveMul(float);
\n
"
"vec2 subgroupInclusiveMul(vec2);
\n
"
"vec2 subgroupInclusiveMul(vec2);
\n
"
...
@@ -1875,10 +1827,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1875,10 +1827,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupInclusiveMul(uvec2);
\n
"
"uvec2 subgroupInclusiveMul(uvec2);
\n
"
"uvec3 subgroupInclusiveMul(uvec3);
\n
"
"uvec3 subgroupInclusiveMul(uvec3);
\n
"
"uvec4 subgroupInclusiveMul(uvec4);
\n
"
"uvec4 subgroupInclusiveMul(uvec4);
\n
"
"double subgroupInclusiveMul(double);
\n
"
"dvec2 subgroupInclusiveMul(dvec2);
\n
"
"dvec3 subgroupInclusiveMul(dvec3);
\n
"
"dvec4 subgroupInclusiveMul(dvec4);
\n
"
"float subgroupInclusiveMin(float);
\n
"
"float subgroupInclusiveMin(float);
\n
"
"vec2 subgroupInclusiveMin(vec2);
\n
"
"vec2 subgroupInclusiveMin(vec2);
\n
"
...
@@ -1892,10 +1840,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1892,10 +1840,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupInclusiveMin(uvec2);
\n
"
"uvec2 subgroupInclusiveMin(uvec2);
\n
"
"uvec3 subgroupInclusiveMin(uvec3);
\n
"
"uvec3 subgroupInclusiveMin(uvec3);
\n
"
"uvec4 subgroupInclusiveMin(uvec4);
\n
"
"uvec4 subgroupInclusiveMin(uvec4);
\n
"
"double subgroupInclusiveMin(double);
\n
"
"dvec2 subgroupInclusiveMin(dvec2);
\n
"
"dvec3 subgroupInclusiveMin(dvec3);
\n
"
"dvec4 subgroupInclusiveMin(dvec4);
\n
"
"float subgroupInclusiveMax(float);
\n
"
"float subgroupInclusiveMax(float);
\n
"
"vec2 subgroupInclusiveMax(vec2);
\n
"
"vec2 subgroupInclusiveMax(vec2);
\n
"
...
@@ -1909,10 +1853,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1909,10 +1853,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupInclusiveMax(uvec2);
\n
"
"uvec2 subgroupInclusiveMax(uvec2);
\n
"
"uvec3 subgroupInclusiveMax(uvec3);
\n
"
"uvec3 subgroupInclusiveMax(uvec3);
\n
"
"uvec4 subgroupInclusiveMax(uvec4);
\n
"
"uvec4 subgroupInclusiveMax(uvec4);
\n
"
"double subgroupInclusiveMax(double);
\n
"
"dvec2 subgroupInclusiveMax(dvec2);
\n
"
"dvec3 subgroupInclusiveMax(dvec3);
\n
"
"dvec4 subgroupInclusiveMax(dvec4);
\n
"
"int subgroupInclusiveAnd(int);
\n
"
"int subgroupInclusiveAnd(int);
\n
"
"ivec2 subgroupInclusiveAnd(ivec2);
\n
"
"ivec2 subgroupInclusiveAnd(ivec2);
\n
"
...
@@ -1965,10 +1905,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1965,10 +1905,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupExclusiveAdd(uvec2);
\n
"
"uvec2 subgroupExclusiveAdd(uvec2);
\n
"
"uvec3 subgroupExclusiveAdd(uvec3);
\n
"
"uvec3 subgroupExclusiveAdd(uvec3);
\n
"
"uvec4 subgroupExclusiveAdd(uvec4);
\n
"
"uvec4 subgroupExclusiveAdd(uvec4);
\n
"
"double subgroupExclusiveAdd(double);
\n
"
"dvec2 subgroupExclusiveAdd(dvec2);
\n
"
"dvec3 subgroupExclusiveAdd(dvec3);
\n
"
"dvec4 subgroupExclusiveAdd(dvec4);
\n
"
"float subgroupExclusiveMul(float);
\n
"
"float subgroupExclusiveMul(float);
\n
"
"vec2 subgroupExclusiveMul(vec2);
\n
"
"vec2 subgroupExclusiveMul(vec2);
\n
"
...
@@ -1982,10 +1918,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1982,10 +1918,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupExclusiveMul(uvec2);
\n
"
"uvec2 subgroupExclusiveMul(uvec2);
\n
"
"uvec3 subgroupExclusiveMul(uvec3);
\n
"
"uvec3 subgroupExclusiveMul(uvec3);
\n
"
"uvec4 subgroupExclusiveMul(uvec4);
\n
"
"uvec4 subgroupExclusiveMul(uvec4);
\n
"
"double subgroupExclusiveMul(double);
\n
"
"dvec2 subgroupExclusiveMul(dvec2);
\n
"
"dvec3 subgroupExclusiveMul(dvec3);
\n
"
"dvec4 subgroupExclusiveMul(dvec4);
\n
"
"float subgroupExclusiveMin(float);
\n
"
"float subgroupExclusiveMin(float);
\n
"
"vec2 subgroupExclusiveMin(vec2);
\n
"
"vec2 subgroupExclusiveMin(vec2);
\n
"
...
@@ -1999,10 +1931,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -1999,10 +1931,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupExclusiveMin(uvec2);
\n
"
"uvec2 subgroupExclusiveMin(uvec2);
\n
"
"uvec3 subgroupExclusiveMin(uvec3);
\n
"
"uvec3 subgroupExclusiveMin(uvec3);
\n
"
"uvec4 subgroupExclusiveMin(uvec4);
\n
"
"uvec4 subgroupExclusiveMin(uvec4);
\n
"
"double subgroupExclusiveMin(double);
\n
"
"dvec2 subgroupExclusiveMin(dvec2);
\n
"
"dvec3 subgroupExclusiveMin(dvec3);
\n
"
"dvec4 subgroupExclusiveMin(dvec4);
\n
"
"float subgroupExclusiveMax(float);
\n
"
"float subgroupExclusiveMax(float);
\n
"
"vec2 subgroupExclusiveMax(vec2);
\n
"
"vec2 subgroupExclusiveMax(vec2);
\n
"
...
@@ -2016,10 +1944,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2016,10 +1944,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupExclusiveMax(uvec2);
\n
"
"uvec2 subgroupExclusiveMax(uvec2);
\n
"
"uvec3 subgroupExclusiveMax(uvec3);
\n
"
"uvec3 subgroupExclusiveMax(uvec3);
\n
"
"uvec4 subgroupExclusiveMax(uvec4);
\n
"
"uvec4 subgroupExclusiveMax(uvec4);
\n
"
"double subgroupExclusiveMax(double);
\n
"
"dvec2 subgroupExclusiveMax(dvec2);
\n
"
"dvec3 subgroupExclusiveMax(dvec3);
\n
"
"dvec4 subgroupExclusiveMax(dvec4);
\n
"
"int subgroupExclusiveAnd(int);
\n
"
"int subgroupExclusiveAnd(int);
\n
"
"ivec2 subgroupExclusiveAnd(ivec2);
\n
"
"ivec2 subgroupExclusiveAnd(ivec2);
\n
"
...
@@ -2072,10 +1996,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2072,10 +1996,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupClusteredAdd(uvec2, uint);
\n
"
"uvec2 subgroupClusteredAdd(uvec2, uint);
\n
"
"uvec3 subgroupClusteredAdd(uvec3, uint);
\n
"
"uvec3 subgroupClusteredAdd(uvec3, uint);
\n
"
"uvec4 subgroupClusteredAdd(uvec4, uint);
\n
"
"uvec4 subgroupClusteredAdd(uvec4, uint);
\n
"
"double subgroupClusteredAdd(double, uint);
\n
"
"dvec2 subgroupClusteredAdd(dvec2, uint);
\n
"
"dvec3 subgroupClusteredAdd(dvec3, uint);
\n
"
"dvec4 subgroupClusteredAdd(dvec4, uint);
\n
"
"float subgroupClusteredMul(float, uint);
\n
"
"float subgroupClusteredMul(float, uint);
\n
"
"vec2 subgroupClusteredMul(vec2, uint);
\n
"
"vec2 subgroupClusteredMul(vec2, uint);
\n
"
...
@@ -2089,10 +2009,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2089,10 +2009,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupClusteredMul(uvec2, uint);
\n
"
"uvec2 subgroupClusteredMul(uvec2, uint);
\n
"
"uvec3 subgroupClusteredMul(uvec3, uint);
\n
"
"uvec3 subgroupClusteredMul(uvec3, uint);
\n
"
"uvec4 subgroupClusteredMul(uvec4, uint);
\n
"
"uvec4 subgroupClusteredMul(uvec4, uint);
\n
"
"double subgroupClusteredMul(double, uint);
\n
"
"dvec2 subgroupClusteredMul(dvec2, uint);
\n
"
"dvec3 subgroupClusteredMul(dvec3, uint);
\n
"
"dvec4 subgroupClusteredMul(dvec4, uint);
\n
"
"float subgroupClusteredMin(float, uint);
\n
"
"float subgroupClusteredMin(float, uint);
\n
"
"vec2 subgroupClusteredMin(vec2, uint);
\n
"
"vec2 subgroupClusteredMin(vec2, uint);
\n
"
...
@@ -2106,10 +2022,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2106,10 +2022,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupClusteredMin(uvec2, uint);
\n
"
"uvec2 subgroupClusteredMin(uvec2, uint);
\n
"
"uvec3 subgroupClusteredMin(uvec3, uint);
\n
"
"uvec3 subgroupClusteredMin(uvec3, uint);
\n
"
"uvec4 subgroupClusteredMin(uvec4, uint);
\n
"
"uvec4 subgroupClusteredMin(uvec4, uint);
\n
"
"double subgroupClusteredMin(double, uint);
\n
"
"dvec2 subgroupClusteredMin(dvec2, uint);
\n
"
"dvec3 subgroupClusteredMin(dvec3, uint);
\n
"
"dvec4 subgroupClusteredMin(dvec4, uint);
\n
"
"float subgroupClusteredMax(float, uint);
\n
"
"float subgroupClusteredMax(float, uint);
\n
"
"vec2 subgroupClusteredMax(vec2, uint);
\n
"
"vec2 subgroupClusteredMax(vec2, uint);
\n
"
...
@@ -2123,10 +2035,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2123,10 +2035,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"uvec2 subgroupClusteredMax(uvec2, uint);
\n
"
"uvec2 subgroupClusteredMax(uvec2, uint);
\n
"
"uvec3 subgroupClusteredMax(uvec3, uint);
\n
"
"uvec3 subgroupClusteredMax(uvec3, uint);
\n
"
"uvec4 subgroupClusteredMax(uvec4, uint);
\n
"
"uvec4 subgroupClusteredMax(uvec4, uint);
\n
"
"double subgroupClusteredMax(double, uint);
\n
"
"dvec2 subgroupClusteredMax(dvec2, uint);
\n
"
"dvec3 subgroupClusteredMax(dvec3, uint);
\n
"
"dvec4 subgroupClusteredMax(dvec4, uint);
\n
"
"int subgroupClusteredAnd(int, uint);
\n
"
"int subgroupClusteredAnd(int, uint);
\n
"
"ivec2 subgroupClusteredAnd(ivec2, uint);
\n
"
"ivec2 subgroupClusteredAnd(ivec2, uint);
\n
"
...
@@ -2183,10 +2091,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2183,10 +2091,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupQuadBroadcast(bvec2, uint);
\n
"
"bvec2 subgroupQuadBroadcast(bvec2, uint);
\n
"
"bvec3 subgroupQuadBroadcast(bvec3, uint);
\n
"
"bvec3 subgroupQuadBroadcast(bvec3, uint);
\n
"
"bvec4 subgroupQuadBroadcast(bvec4, uint);
\n
"
"bvec4 subgroupQuadBroadcast(bvec4, uint);
\n
"
"double subgroupQuadBroadcast(double, uint);
\n
"
"dvec2 subgroupQuadBroadcast(dvec2, uint);
\n
"
"dvec3 subgroupQuadBroadcast(dvec3, uint);
\n
"
"dvec4 subgroupQuadBroadcast(dvec4, uint);
\n
"
"float subgroupQuadSwapHorizontal(float);
\n
"
"float subgroupQuadSwapHorizontal(float);
\n
"
"vec2 subgroupQuadSwapHorizontal(vec2);
\n
"
"vec2 subgroupQuadSwapHorizontal(vec2);
\n
"
...
@@ -2204,10 +2108,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2204,10 +2108,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupQuadSwapHorizontal(bvec2);
\n
"
"bvec2 subgroupQuadSwapHorizontal(bvec2);
\n
"
"bvec3 subgroupQuadSwapHorizontal(bvec3);
\n
"
"bvec3 subgroupQuadSwapHorizontal(bvec3);
\n
"
"bvec4 subgroupQuadSwapHorizontal(bvec4);
\n
"
"bvec4 subgroupQuadSwapHorizontal(bvec4);
\n
"
"double subgroupQuadSwapHorizontal(double);
\n
"
"dvec2 subgroupQuadSwapHorizontal(dvec2);
\n
"
"dvec3 subgroupQuadSwapHorizontal(dvec3);
\n
"
"dvec4 subgroupQuadSwapHorizontal(dvec4);
\n
"
"float subgroupQuadSwapVertical(float);
\n
"
"float subgroupQuadSwapVertical(float);
\n
"
"vec2 subgroupQuadSwapVertical(vec2);
\n
"
"vec2 subgroupQuadSwapVertical(vec2);
\n
"
...
@@ -2225,10 +2125,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2225,10 +2125,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupQuadSwapVertical(bvec2);
\n
"
"bvec2 subgroupQuadSwapVertical(bvec2);
\n
"
"bvec3 subgroupQuadSwapVertical(bvec3);
\n
"
"bvec3 subgroupQuadSwapVertical(bvec3);
\n
"
"bvec4 subgroupQuadSwapVertical(bvec4);
\n
"
"bvec4 subgroupQuadSwapVertical(bvec4);
\n
"
"double subgroupQuadSwapVertical(double);
\n
"
"dvec2 subgroupQuadSwapVertical(dvec2);
\n
"
"dvec3 subgroupQuadSwapVertical(dvec3);
\n
"
"dvec4 subgroupQuadSwapVertical(dvec4);
\n
"
"float subgroupQuadSwapDiagonal(float);
\n
"
"float subgroupQuadSwapDiagonal(float);
\n
"
"vec2 subgroupQuadSwapDiagonal(vec2);
\n
"
"vec2 subgroupQuadSwapDiagonal(vec2);
\n
"
...
@@ -2246,13 +2142,149 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
...
@@ -2246,13 +2142,149 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
"bvec2 subgroupQuadSwapDiagonal(bvec2);
\n
"
"bvec2 subgroupQuadSwapDiagonal(bvec2);
\n
"
"bvec3 subgroupQuadSwapDiagonal(bvec3);
\n
"
"bvec3 subgroupQuadSwapDiagonal(bvec3);
\n
"
"bvec4 subgroupQuadSwapDiagonal(bvec4);
\n
"
"bvec4 subgroupQuadSwapDiagonal(bvec4);
\n
"
"double subgroupQuadSwapDiagonal(double);
\n
"
"dvec2 subgroupQuadSwapDiagonal(dvec2);
\n
"
"dvec3 subgroupQuadSwapDiagonal(dvec3);
\n
"
"dvec4 subgroupQuadSwapDiagonal(dvec4);
\n
"
"
\n
"
);
"
\n
"
);
if
(
profile
!=
EEsProfile
&&
version
>=
400
)
{
commonBuiltins
.
append
(
"bool subgroupAllEqual(double);
\n
"
"bool subgroupAllEqual(dvec2);
\n
"
"bool subgroupAllEqual(dvec3);
\n
"
"bool subgroupAllEqual(dvec4);
\n
"
"double subgroupBroadcast(double, uint);
\n
"
"dvec2 subgroupBroadcast(dvec2, uint);
\n
"
"dvec3 subgroupBroadcast(dvec3, uint);
\n
"
"dvec4 subgroupBroadcast(dvec4, uint);
\n
"
"double subgroupBroadcastFirst(double);
\n
"
"dvec2 subgroupBroadcastFirst(dvec2);
\n
"
"dvec3 subgroupBroadcastFirst(dvec3);
\n
"
"dvec4 subgroupBroadcastFirst(dvec4);
\n
"
"double subgroupShuffle(double, uint);
\n
"
"dvec2 subgroupShuffle(dvec2, uint);
\n
"
"dvec3 subgroupShuffle(dvec3, uint);
\n
"
"dvec4 subgroupShuffle(dvec4, uint);
\n
"
"double subgroupShuffleXor(double, uint);
\n
"
"dvec2 subgroupShuffleXor(dvec2, uint);
\n
"
"dvec3 subgroupShuffleXor(dvec3, uint);
\n
"
"dvec4 subgroupShuffleXor(dvec4, uint);
\n
"
"double subgroupShuffleUp(double, uint delta);
\n
"
"dvec2 subgroupShuffleUp(dvec2, uint delta);
\n
"
"dvec3 subgroupShuffleUp(dvec3, uint delta);
\n
"
"dvec4 subgroupShuffleUp(dvec4, uint delta);
\n
"
"double subgroupShuffleDown(double, uint delta);
\n
"
"dvec2 subgroupShuffleDown(dvec2, uint delta);
\n
"
"dvec3 subgroupShuffleDown(dvec3, uint delta);
\n
"
"dvec4 subgroupShuffleDown(dvec4, uint delta);
\n
"
"double subgroupAdd(double);
\n
"
"dvec2 subgroupAdd(dvec2);
\n
"
"dvec3 subgroupAdd(dvec3);
\n
"
"dvec4 subgroupAdd(dvec4);
\n
"
"double subgroupMul(double);
\n
"
"dvec2 subgroupMul(dvec2);
\n
"
"dvec3 subgroupMul(dvec3);
\n
"
"dvec4 subgroupMul(dvec4);
\n
"
"double subgroupMin(double);
\n
"
"dvec2 subgroupMin(dvec2);
\n
"
"dvec3 subgroupMin(dvec3);
\n
"
"dvec4 subgroupMin(dvec4);
\n
"
"double subgroupMax(double);
\n
"
"dvec2 subgroupMax(dvec2);
\n
"
"dvec3 subgroupMax(dvec3);
\n
"
"dvec4 subgroupMax(dvec4);
\n
"
"double subgroupInclusiveAdd(double);
\n
"
"dvec2 subgroupInclusiveAdd(dvec2);
\n
"
"dvec3 subgroupInclusiveAdd(dvec3);
\n
"
"dvec4 subgroupInclusiveAdd(dvec4);
\n
"
"double subgroupInclusiveMul(double);
\n
"
"dvec2 subgroupInclusiveMul(dvec2);
\n
"
"dvec3 subgroupInclusiveMul(dvec3);
\n
"
"dvec4 subgroupInclusiveMul(dvec4);
\n
"
"double subgroupInclusiveMin(double);
\n
"
"dvec2 subgroupInclusiveMin(dvec2);
\n
"
"dvec3 subgroupInclusiveMin(dvec3);
\n
"
"dvec4 subgroupInclusiveMin(dvec4);
\n
"
"double subgroupInclusiveMax(double);
\n
"
"dvec2 subgroupInclusiveMax(dvec2);
\n
"
"dvec3 subgroupInclusiveMax(dvec3);
\n
"
"dvec4 subgroupInclusiveMax(dvec4);
\n
"
"double subgroupExclusiveAdd(double);
\n
"
"dvec2 subgroupExclusiveAdd(dvec2);
\n
"
"dvec3 subgroupExclusiveAdd(dvec3);
\n
"
"dvec4 subgroupExclusiveAdd(dvec4);
\n
"
"double subgroupExclusiveMul(double);
\n
"
"dvec2 subgroupExclusiveMul(dvec2);
\n
"
"dvec3 subgroupExclusiveMul(dvec3);
\n
"
"dvec4 subgroupExclusiveMul(dvec4);
\n
"
"double subgroupExclusiveMin(double);
\n
"
"dvec2 subgroupExclusiveMin(dvec2);
\n
"
"dvec3 subgroupExclusiveMin(dvec3);
\n
"
"dvec4 subgroupExclusiveMin(dvec4);
\n
"
"double subgroupExclusiveMax(double);
\n
"
"dvec2 subgroupExclusiveMax(dvec2);
\n
"
"dvec3 subgroupExclusiveMax(dvec3);
\n
"
"dvec4 subgroupExclusiveMax(dvec4);
\n
"
"double subgroupClusteredAdd(double, uint);
\n
"
"dvec2 subgroupClusteredAdd(dvec2, uint);
\n
"
"dvec3 subgroupClusteredAdd(dvec3, uint);
\n
"
"dvec4 subgroupClusteredAdd(dvec4, uint);
\n
"
"double subgroupClusteredMul(double, uint);
\n
"
"dvec2 subgroupClusteredMul(dvec2, uint);
\n
"
"dvec3 subgroupClusteredMul(dvec3, uint);
\n
"
"dvec4 subgroupClusteredMul(dvec4, uint);
\n
"
"double subgroupClusteredMin(double, uint);
\n
"
"dvec2 subgroupClusteredMin(dvec2, uint);
\n
"
"dvec3 subgroupClusteredMin(dvec3, uint);
\n
"
"dvec4 subgroupClusteredMin(dvec4, uint);
\n
"
"double subgroupClusteredMax(double, uint);
\n
"
"dvec2 subgroupClusteredMax(dvec2, uint);
\n
"
"dvec3 subgroupClusteredMax(dvec3, uint);
\n
"
"dvec4 subgroupClusteredMax(dvec4, uint);
\n
"
"double subgroupQuadBroadcast(double, uint);
\n
"
"dvec2 subgroupQuadBroadcast(dvec2, uint);
\n
"
"dvec3 subgroupQuadBroadcast(dvec3, uint);
\n
"
"dvec4 subgroupQuadBroadcast(dvec4, uint);
\n
"
"double subgroupQuadSwapHorizontal(double);
\n
"
"dvec2 subgroupQuadSwapHorizontal(dvec2);
\n
"
"dvec3 subgroupQuadSwapHorizontal(dvec3);
\n
"
"dvec4 subgroupQuadSwapHorizontal(dvec4);
\n
"
"double subgroupQuadSwapVertical(double);
\n
"
"dvec2 subgroupQuadSwapVertical(dvec2);
\n
"
"dvec3 subgroupQuadSwapVertical(dvec3);
\n
"
"dvec4 subgroupQuadSwapVertical(dvec4);
\n
"
"double subgroupQuadSwapDiagonal(double);
\n
"
"dvec2 subgroupQuadSwapDiagonal(dvec2);
\n
"
"dvec3 subgroupQuadSwapDiagonal(dvec3);
\n
"
"dvec4 subgroupQuadSwapDiagonal(dvec4);
\n
"
"
\n
"
);
}
stageBuiltins
[
EShLangCompute
].
append
(
stageBuiltins
[
EShLangCompute
].
append
(
"void subgroupMemoryBarrierShared();"
"void subgroupMemoryBarrierShared();"
...
...
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