Commit e7b51b03 by John Kessenich

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
...@@ -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[s1518];" Name 14 "foo(vf4[s2153];"
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[s1518];) 47(param) 49: 2 FunctionCall 14(foo(vf4[s2153];) 47(param)
Return Return
FunctionEnd FunctionEnd
14(foo(vf4[s1518];): 2 Function None 12 14(foo(vf4[s2153];): 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
......
...@@ -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,12 +2142,148 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ...@@ -2246,12 +2142,148 @@ 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"
"\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" "double subgroupQuadSwapDiagonal(double);\n"
"dvec2 subgroupQuadSwapDiagonal(dvec2);\n" "dvec2 subgroupQuadSwapDiagonal(dvec2);\n"
"dvec3 subgroupQuadSwapDiagonal(dvec3);\n" "dvec3 subgroupQuadSwapDiagonal(dvec3);\n"
"dvec4 subgroupQuadSwapDiagonal(dvec4);\n" "dvec4 subgroupQuadSwapDiagonal(dvec4);\n"
"\n"); "\n");
}
stageBuiltins[EShLangCompute].append( stageBuiltins[EShLangCompute].append(
"void subgroupMemoryBarrierShared();" "void subgroupMemoryBarrierShared();"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment