Commit 9fb38deb by John Kessenich

SPV subgroups: Semantic check that SPIR-V 1.3 is targeted.

parent f35d2569
...@@ -471,6 +471,7 @@ enum TOperator { ...@@ -471,6 +471,7 @@ enum TOperator {
EOpAllInvocations, EOpAllInvocations,
EOpAllInvocationsEqual, EOpAllInvocationsEqual,
EOpSubgroupGuardStart,
EOpSubgroupBarrier, EOpSubgroupBarrier,
EOpSubgroupMemoryBarrier, EOpSubgroupMemoryBarrier,
EOpSubgroupMemoryBarrierBuffer, EOpSubgroupMemoryBarrierBuffer,
...@@ -526,6 +527,7 @@ enum TOperator { ...@@ -526,6 +527,7 @@ enum TOperator {
EOpSubgroupQuadSwapHorizontal, EOpSubgroupQuadSwapHorizontal,
EOpSubgroupQuadSwapVertical, EOpSubgroupQuadSwapVertical,
EOpSubgroupQuadSwapDiagonal, EOpSubgroupQuadSwapDiagonal,
EOpSubgroupGuardStop,
#ifdef AMD_EXTENSIONS #ifdef AMD_EXTENSIONS
EOpMinInvocations, EOpMinInvocations,
......
...@@ -1631,6 +1631,12 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan ...@@ -1631,6 +1631,12 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan
default: default:
break; break;
} }
if (callNode.getOp() > EOpSubgroupGuardStart && callNode.getOp() < EOpSubgroupGuardStop) {
// these require SPIR-V 1.3
if (spvVersion.spv > 0 && spvVersion.spv < 0x00010300)
error(loc, "requires SPIR-V 1.3", "subgroup op", "");
}
} }
extern bool PureOperatorBuiltins; extern bool PureOperatorBuiltins;
......
...@@ -336,6 +336,7 @@ INSTANTIATE_TEST_CASE_P( ...@@ -336,6 +336,7 @@ INSTANTIATE_TEST_CASE_P(
"spv.storageBuffer.vert", "spv.storageBuffer.vert",
"spv.precise.tese", "spv.precise.tese",
"spv.precise.tesc", "spv.precise.tesc",
"spv.vulkan100.subgroupArithmetic.comp",
"spv.xfb.vert", "spv.xfb.vert",
"spv.xfb2.vert", "spv.xfb2.vert",
"spv.xfb3.vert", "spv.xfb3.vert",
......
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