Implement GL_NV_shader_subgroup_partitioned
This commit is contained in:
parent
6b1ede4124
commit
2abe9a4d34
15 changed files with 4659 additions and 9 deletions
26
glslang/Include/intermediate.h
Normal file → Executable file
26
glslang/Include/intermediate.h
Normal file → Executable file
|
|
@ -527,6 +527,32 @@ enum TOperator {
|
|||
EOpSubgroupQuadSwapHorizontal,
|
||||
EOpSubgroupQuadSwapVertical,
|
||||
EOpSubgroupQuadSwapDiagonal,
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
EOpSubgroupPartition,
|
||||
EOpSubgroupPartitionedAdd,
|
||||
EOpSubgroupPartitionedMul,
|
||||
EOpSubgroupPartitionedMin,
|
||||
EOpSubgroupPartitionedMax,
|
||||
EOpSubgroupPartitionedAnd,
|
||||
EOpSubgroupPartitionedOr,
|
||||
EOpSubgroupPartitionedXor,
|
||||
EOpSubgroupPartitionedInclusiveAdd,
|
||||
EOpSubgroupPartitionedInclusiveMul,
|
||||
EOpSubgroupPartitionedInclusiveMin,
|
||||
EOpSubgroupPartitionedInclusiveMax,
|
||||
EOpSubgroupPartitionedInclusiveAnd,
|
||||
EOpSubgroupPartitionedInclusiveOr,
|
||||
EOpSubgroupPartitionedInclusiveXor,
|
||||
EOpSubgroupPartitionedExclusiveAdd,
|
||||
EOpSubgroupPartitionedExclusiveMul,
|
||||
EOpSubgroupPartitionedExclusiveMin,
|
||||
EOpSubgroupPartitionedExclusiveMax,
|
||||
EOpSubgroupPartitionedExclusiveAnd,
|
||||
EOpSubgroupPartitionedExclusiveOr,
|
||||
EOpSubgroupPartitionedExclusiveXor,
|
||||
#endif
|
||||
|
||||
EOpSubgroupGuardStop,
|
||||
|
||||
#ifdef AMD_EXTENSIONS
|
||||
|
|
|
|||
411
glslang/MachineIndependent/Initialize.cpp
Normal file → Executable file
411
glslang/MachineIndependent/Initialize.cpp
Normal file → Executable file
|
|
@ -2236,6 +2236,298 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"bvec3 subgroupQuadSwapDiagonal(bvec3);\n"
|
||||
"bvec4 subgroupQuadSwapDiagonal(bvec4);\n"
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
"uvec4 subgroupPartitionNV(float);\n"
|
||||
"uvec4 subgroupPartitionNV(vec2);\n"
|
||||
"uvec4 subgroupPartitionNV(vec3);\n"
|
||||
"uvec4 subgroupPartitionNV(vec4);\n"
|
||||
"uvec4 subgroupPartitionNV(int);\n"
|
||||
"uvec4 subgroupPartitionNV(ivec2);\n"
|
||||
"uvec4 subgroupPartitionNV(ivec3);\n"
|
||||
"uvec4 subgroupPartitionNV(ivec4);\n"
|
||||
"uvec4 subgroupPartitionNV(uint);\n"
|
||||
"uvec4 subgroupPartitionNV(uvec2);\n"
|
||||
"uvec4 subgroupPartitionNV(uvec3);\n"
|
||||
"uvec4 subgroupPartitionNV(uvec4);\n"
|
||||
"uvec4 subgroupPartitionNV(bool);\n"
|
||||
"uvec4 subgroupPartitionNV(bvec2);\n"
|
||||
"uvec4 subgroupPartitionNV(bvec3);\n"
|
||||
"uvec4 subgroupPartitionNV(bvec4);\n"
|
||||
|
||||
"float subgroupPartitionedAddNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedAddNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedAddNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedAddNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedAddNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedAddNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedAddNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedAddNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedAddNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedAddNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedAddNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedAddNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedMulNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedMulNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedMulNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedMulNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedMulNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedMulNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedMulNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedMulNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedMulNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedMulNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedMulNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedMulNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedMinNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedMinNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedMinNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedMinNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedMinNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedMinNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedMinNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedMinNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedMinNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedMinNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedMinNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedMinNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedMaxNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedMaxNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedMaxNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedMaxNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedMaxNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedMaxNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedMaxNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedMaxNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedMaxNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedMaxNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedMaxNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedMaxNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedAndNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedAndNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedAndNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedAndNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedAndNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedAndNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedAndNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedAndNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedAndNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedAndNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedAndNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedAndNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedOrNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedOrNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedOrNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedOrNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedOrNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedOrNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedOrNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedOrNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedOrNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedOrNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedOrNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedOrNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedXorNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedXorNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedXorNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedXorNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedXorNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedXorNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedXorNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedXorNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedXorNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedXorNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedXorNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedXorNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedInclusiveAddNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedInclusiveAddNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedInclusiveAddNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedInclusiveAddNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedInclusiveAddNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedInclusiveAddNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedInclusiveAddNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedInclusiveAddNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedInclusiveAddNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedInclusiveAddNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedInclusiveAddNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedInclusiveAddNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedInclusiveMulNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedInclusiveMulNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedInclusiveMulNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedInclusiveMulNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedInclusiveMulNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedInclusiveMulNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedInclusiveMulNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedInclusiveMulNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedInclusiveMulNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedInclusiveMulNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedInclusiveMulNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedInclusiveMulNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedInclusiveMinNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedInclusiveMinNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedInclusiveMinNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedInclusiveMinNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedInclusiveMinNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedInclusiveMinNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedInclusiveMinNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedInclusiveMinNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedInclusiveMinNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedInclusiveMinNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedInclusiveMinNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedInclusiveMinNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedInclusiveMaxNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedInclusiveMaxNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedInclusiveMaxNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedInclusiveMaxNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedInclusiveMaxNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedInclusiveMaxNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedInclusiveMaxNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedInclusiveMaxNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedInclusiveMaxNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedInclusiveMaxNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedInclusiveMaxNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedInclusiveMaxNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedInclusiveAndNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedInclusiveAndNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedInclusiveAndNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedInclusiveAndNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedInclusiveAndNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedInclusiveAndNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedInclusiveAndNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedInclusiveAndNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedInclusiveAndNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedInclusiveAndNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedInclusiveAndNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedInclusiveAndNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedInclusiveOrNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedInclusiveOrNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedInclusiveOrNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedInclusiveOrNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedInclusiveOrNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedInclusiveOrNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedInclusiveOrNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedInclusiveOrNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedInclusiveOrNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedInclusiveOrNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedInclusiveOrNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedInclusiveOrNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedInclusiveXorNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedInclusiveXorNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedInclusiveXorNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedInclusiveXorNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedInclusiveXorNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedInclusiveXorNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedInclusiveXorNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedInclusiveXorNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedInclusiveXorNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedInclusiveXorNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedInclusiveXorNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedInclusiveXorNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedExclusiveAddNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedExclusiveAddNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedExclusiveAddNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedExclusiveAddNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedExclusiveAddNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedExclusiveAddNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedExclusiveAddNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedExclusiveAddNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedExclusiveAddNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedExclusiveAddNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedExclusiveAddNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedExclusiveAddNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedExclusiveMulNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedExclusiveMulNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedExclusiveMulNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedExclusiveMulNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedExclusiveMulNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedExclusiveMulNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedExclusiveMulNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedExclusiveMulNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedExclusiveMulNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedExclusiveMulNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedExclusiveMulNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedExclusiveMulNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedExclusiveMinNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedExclusiveMinNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedExclusiveMinNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedExclusiveMinNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedExclusiveMinNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedExclusiveMinNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedExclusiveMinNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedExclusiveMinNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedExclusiveMinNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedExclusiveMinNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedExclusiveMinNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedExclusiveMinNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"float subgroupPartitionedExclusiveMaxNV(float, uvec4 ballot);\n"
|
||||
"vec2 subgroupPartitionedExclusiveMaxNV(vec2, uvec4 ballot);\n"
|
||||
"vec3 subgroupPartitionedExclusiveMaxNV(vec3, uvec4 ballot);\n"
|
||||
"vec4 subgroupPartitionedExclusiveMaxNV(vec4, uvec4 ballot);\n"
|
||||
"int subgroupPartitionedExclusiveMaxNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedExclusiveMaxNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedExclusiveMaxNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedExclusiveMaxNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedExclusiveMaxNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedExclusiveMaxNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedExclusiveMaxNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedExclusiveMaxNV(uvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedExclusiveAndNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedExclusiveAndNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedExclusiveAndNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedExclusiveAndNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedExclusiveAndNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedExclusiveAndNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedExclusiveAndNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedExclusiveAndNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedExclusiveAndNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedExclusiveAndNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedExclusiveAndNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedExclusiveAndNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedExclusiveOrNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedExclusiveOrNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedExclusiveOrNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedExclusiveOrNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedExclusiveOrNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedExclusiveOrNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedExclusiveOrNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedExclusiveOrNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedExclusiveOrNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedExclusiveOrNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedExclusiveOrNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedExclusiveOrNV(bvec4, uvec4 ballot);\n"
|
||||
|
||||
"int subgroupPartitionedExclusiveXorNV(int, uvec4 ballot);\n"
|
||||
"ivec2 subgroupPartitionedExclusiveXorNV(ivec2, uvec4 ballot);\n"
|
||||
"ivec3 subgroupPartitionedExclusiveXorNV(ivec3, uvec4 ballot);\n"
|
||||
"ivec4 subgroupPartitionedExclusiveXorNV(ivec4, uvec4 ballot);\n"
|
||||
"uint subgroupPartitionedExclusiveXorNV(uint, uvec4 ballot);\n"
|
||||
"uvec2 subgroupPartitionedExclusiveXorNV(uvec2, uvec4 ballot);\n"
|
||||
"uvec3 subgroupPartitionedExclusiveXorNV(uvec3, uvec4 ballot);\n"
|
||||
"uvec4 subgroupPartitionedExclusiveXorNV(uvec4, uvec4 ballot);\n"
|
||||
"bool subgroupPartitionedExclusiveXorNV(bool, uvec4 ballot);\n"
|
||||
"bvec2 subgroupPartitionedExclusiveXorNV(bvec2, uvec4 ballot);\n"
|
||||
"bvec3 subgroupPartitionedExclusiveXorNV(bvec3, uvec4 ballot);\n"
|
||||
"bvec4 subgroupPartitionedExclusiveXorNV(bvec4, uvec4 ballot);\n"
|
||||
#endif
|
||||
|
||||
"\n");
|
||||
|
||||
if (profile != EEsProfile && version >= 400) {
|
||||
|
|
@ -2375,6 +2667,74 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"dvec3 subgroupQuadSwapDiagonal(dvec3);\n"
|
||||
"dvec4 subgroupQuadSwapDiagonal(dvec4);\n"
|
||||
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
"uvec4 subgroupPartitionNV(double);\n"
|
||||
"uvec4 subgroupPartitionNV(dvec2);\n"
|
||||
"uvec4 subgroupPartitionNV(dvec3);\n"
|
||||
"uvec4 subgroupPartitionNV(dvec4);\n"
|
||||
|
||||
"double subgroupPartitionedAddNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedAddNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedAddNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedAddNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedMulNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedMulNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedMulNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedMulNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedMinNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedMinNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedMinNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedMinNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedMaxNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedMaxNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedMaxNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedMaxNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedInclusiveAddNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedInclusiveAddNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedInclusiveAddNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedInclusiveAddNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedInclusiveMulNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedInclusiveMulNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedInclusiveMulNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedInclusiveMulNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedInclusiveMinNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedInclusiveMinNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedInclusiveMinNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedInclusiveMinNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedInclusiveMaxNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedInclusiveMaxNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedInclusiveMaxNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedInclusiveMaxNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedExclusiveAddNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedExclusiveAddNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedExclusiveAddNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedExclusiveAddNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedExclusiveMulNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedExclusiveMulNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedExclusiveMulNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedExclusiveMulNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedExclusiveMinNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedExclusiveMinNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedExclusiveMinNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedExclusiveMinNV(dvec4, uvec4 ballot);\n"
|
||||
|
||||
"double subgroupPartitionedExclusiveMaxNV(double, uvec4 ballot);\n"
|
||||
"dvec2 subgroupPartitionedExclusiveMaxNV(dvec2, uvec4 ballot);\n"
|
||||
"dvec3 subgroupPartitionedExclusiveMaxNV(dvec3, uvec4 ballot);\n"
|
||||
"dvec4 subgroupPartitionedExclusiveMaxNV(dvec4, uvec4 ballot);\n"
|
||||
#endif
|
||||
|
||||
"\n");
|
||||
}
|
||||
|
||||
|
|
@ -7571,6 +7931,32 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
symbolTable.setFunctionExtensions("subgroupQuadSwapHorizontal", 1, &E_GL_KHR_shader_subgroup_quad);
|
||||
symbolTable.setFunctionExtensions("subgroupQuadSwapVertical", 1, &E_GL_KHR_shader_subgroup_quad);
|
||||
symbolTable.setFunctionExtensions("subgroupQuadSwapDiagonal", 1, &E_GL_KHR_shader_subgroup_quad);
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedAddNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedMulNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedMinNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedAndNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedOrNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedXorNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveAddNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMulNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMinNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedInclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAddNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMulNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMinNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveMaxNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveAndNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveOrNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
symbolTable.setFunctionExtensions("subgroupPartitionedExclusiveXorNV", 1, &E_GL_NV_shader_subgroup_partitioned);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
if (profile == EEsProfile) {
|
||||
|
|
@ -8107,6 +8493,31 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
symbolTable.relateToOperator("subgroupQuadSwapHorizontal", EOpSubgroupQuadSwapHorizontal);
|
||||
symbolTable.relateToOperator("subgroupQuadSwapVertical", EOpSubgroupQuadSwapVertical);
|
||||
symbolTable.relateToOperator("subgroupQuadSwapDiagonal", EOpSubgroupQuadSwapDiagonal);
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
symbolTable.relateToOperator("subgroupPartitionNV", EOpSubgroupPartition);
|
||||
symbolTable.relateToOperator("subgroupPartitionedAddNV", EOpSubgroupPartitionedAdd);
|
||||
symbolTable.relateToOperator("subgroupPartitionedMulNV", EOpSubgroupPartitionedMul);
|
||||
symbolTable.relateToOperator("subgroupPartitionedMinNV", EOpSubgroupPartitionedMin);
|
||||
symbolTable.relateToOperator("subgroupPartitionedMaxNV", EOpSubgroupPartitionedMax);
|
||||
symbolTable.relateToOperator("subgroupPartitionedAndNV", EOpSubgroupPartitionedAnd);
|
||||
symbolTable.relateToOperator("subgroupPartitionedOrNV", EOpSubgroupPartitionedOr);
|
||||
symbolTable.relateToOperator("subgroupPartitionedXorNV", EOpSubgroupPartitionedXor);
|
||||
symbolTable.relateToOperator("subgroupPartitionedInclusiveAddNV", EOpSubgroupPartitionedInclusiveAdd);
|
||||
symbolTable.relateToOperator("subgroupPartitionedInclusiveMulNV", EOpSubgroupPartitionedInclusiveMul);
|
||||
symbolTable.relateToOperator("subgroupPartitionedInclusiveMinNV", EOpSubgroupPartitionedInclusiveMin);
|
||||
symbolTable.relateToOperator("subgroupPartitionedInclusiveMaxNV", EOpSubgroupPartitionedInclusiveMax);
|
||||
symbolTable.relateToOperator("subgroupPartitionedInclusiveAndNV", EOpSubgroupPartitionedInclusiveAnd);
|
||||
symbolTable.relateToOperator("subgroupPartitionedInclusiveOrNV", EOpSubgroupPartitionedInclusiveOr);
|
||||
symbolTable.relateToOperator("subgroupPartitionedInclusiveXorNV", EOpSubgroupPartitionedInclusiveXor);
|
||||
symbolTable.relateToOperator("subgroupPartitionedExclusiveAddNV", EOpSubgroupPartitionedExclusiveAdd);
|
||||
symbolTable.relateToOperator("subgroupPartitionedExclusiveMulNV", EOpSubgroupPartitionedExclusiveMul);
|
||||
symbolTable.relateToOperator("subgroupPartitionedExclusiveMinNV", EOpSubgroupPartitionedExclusiveMin);
|
||||
symbolTable.relateToOperator("subgroupPartitionedExclusiveMaxNV", EOpSubgroupPartitionedExclusiveMax);
|
||||
symbolTable.relateToOperator("subgroupPartitionedExclusiveAndNV", EOpSubgroupPartitionedExclusiveAnd);
|
||||
symbolTable.relateToOperator("subgroupPartitionedExclusiveOrNV", EOpSubgroupPartitionedExclusiveOr);
|
||||
symbolTable.relateToOperator("subgroupPartitionedExclusiveXorNV", EOpSubgroupPartitionedExclusiveXor);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (profile == EEsProfile) {
|
||||
|
|
|
|||
6
glslang/MachineIndependent/Versions.cpp
Normal file → Executable file
6
glslang/MachineIndependent/Versions.cpp
Normal file → Executable file
|
|
@ -226,6 +226,7 @@ void TParseVersions::initializeExtensionBehavior()
|
|||
extensionBehavior[E_GL_NV_shader_atomic_int64] = EBhDisable;
|
||||
extensionBehavior[E_GL_NV_conservative_raster_underestimation] = EBhDisable;
|
||||
extensionBehavior[E_GL_NV_shader_noperspective_interpolation] = EBhDisable;
|
||||
extensionBehavior[E_GL_NV_shader_subgroup_partitioned] = EBhDisable;
|
||||
#endif
|
||||
|
||||
// AEP
|
||||
|
|
@ -389,6 +390,7 @@ void TParseVersions::getPreamble(std::string& preamble)
|
|||
"#define GL_NV_viewport_array2 1\n"
|
||||
"#define GL_NV_shader_atomic_int64 1\n"
|
||||
"#define GL_NV_conservative_raster_underestimation 1\n"
|
||||
"#define GL_NV_shader_subgroup_partitioned 1\n"
|
||||
#endif
|
||||
"#define GL_KHX_shader_explicit_arithmetic_types 1\n"
|
||||
"#define GL_KHX_shader_explicit_arithmetic_types_int8 1\n"
|
||||
|
|
@ -750,6 +752,10 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co
|
|||
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
|
||||
else if (strcmp(extension, "GL_KHR_shader_subgroup_quad") == 0)
|
||||
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
|
||||
#ifdef NV_EXTENSIONS
|
||||
else if (strcmp(extension, "GL_NV_shader_subgroup_partitioned") == 0)
|
||||
updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString);
|
||||
#endif
|
||||
}
|
||||
|
||||
void TParseVersions::updateExtensionBehavior(const char* extension, TExtensionBehavior behavior)
|
||||
|
|
|
|||
1
glslang/MachineIndependent/Versions.h
Normal file → Executable file
1
glslang/MachineIndependent/Versions.h
Normal file → Executable file
|
|
@ -197,6 +197,7 @@ const char* const E_GL_NVX_multiview_per_view_attributes = "GL_NVX_multiv
|
|||
const char* const E_GL_NV_shader_atomic_int64 = "GL_NV_shader_atomic_int64";
|
||||
const char* const E_GL_NV_conservative_raster_underestimation = "GL_NV_conservative_raster_underestimation";
|
||||
const char* const E_GL_NV_shader_noperspective_interpolation = "GL_NV_shader_noperspective_interpolation";
|
||||
const char* const E_GL_NV_shader_subgroup_partitioned = "GL_NV_shader_subgroup_partitioned";
|
||||
|
||||
// Arrays of extensions for the above viewportEXTs duplications
|
||||
|
||||
|
|
|
|||
|
|
@ -599,6 +599,31 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
|
|||
case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break;
|
||||
case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break;
|
||||
|
||||
#ifdef NV_EXTENSIONS
|
||||
case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break;
|
||||
case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break;
|
||||
case EOpSubgroupPartitionedMul: out.debug << "subgroupPartitionedMulNV"; break;
|
||||
case EOpSubgroupPartitionedMin: out.debug << "subgroupPartitionedMinNV"; break;
|
||||
case EOpSubgroupPartitionedMax: out.debug << "subgroupPartitionedMaxNV"; break;
|
||||
case EOpSubgroupPartitionedAnd: out.debug << "subgroupPartitionedAndNV"; break;
|
||||
case EOpSubgroupPartitionedOr: out.debug << "subgroupPartitionedOrNV"; break;
|
||||
case EOpSubgroupPartitionedXor: out.debug << "subgroupPartitionedXorNV"; break;
|
||||
case EOpSubgroupPartitionedInclusiveAdd: out.debug << "subgroupPartitionedInclusiveAddNV"; break;
|
||||
case EOpSubgroupPartitionedInclusiveMul: out.debug << "subgroupPartitionedInclusiveMulNV"; break;
|
||||
case EOpSubgroupPartitionedInclusiveMin: out.debug << "subgroupPartitionedInclusiveMinNV"; break;
|
||||
case EOpSubgroupPartitionedInclusiveMax: out.debug << "subgroupPartitionedInclusiveMaxNV"; break;
|
||||
case EOpSubgroupPartitionedInclusiveAnd: out.debug << "subgroupPartitionedInclusiveAndNV"; break;
|
||||
case EOpSubgroupPartitionedInclusiveOr: out.debug << "subgroupPartitionedInclusiveOrNV"; break;
|
||||
case EOpSubgroupPartitionedInclusiveXor: out.debug << "subgroupPartitionedInclusiveXorNV"; break;
|
||||
case EOpSubgroupPartitionedExclusiveAdd: out.debug << "subgroupPartitionedExclusiveAddNV"; break;
|
||||
case EOpSubgroupPartitionedExclusiveMul: out.debug << "subgroupPartitionedExclusiveMulNV"; break;
|
||||
case EOpSubgroupPartitionedExclusiveMin: out.debug << "subgroupPartitionedExclusiveMinNV"; break;
|
||||
case EOpSubgroupPartitionedExclusiveMax: out.debug << "subgroupPartitionedExclusiveMaxNV"; break;
|
||||
case EOpSubgroupPartitionedExclusiveAnd: out.debug << "subgroupPartitionedExclusiveAndNV"; break;
|
||||
case EOpSubgroupPartitionedExclusiveOr: out.debug << "subgroupPartitionedExclusiveOrNV"; break;
|
||||
case EOpSubgroupPartitionedExclusiveXor: out.debug << "subgroupPartitionedExclusiveXorNV"; break;
|
||||
#endif
|
||||
|
||||
case EOpClip: out.debug << "clip"; break;
|
||||
case EOpIsFinite: out.debug << "isfinite"; break;
|
||||
case EOpLog10: out.debug << "log10"; break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue