Front-end atomics: Finish adding atomic built-in functions (non-image) into the AST.
This commit is contained in:
parent
d1a6846ba2
commit
917ec4ac8c
5 changed files with 55 additions and 25 deletions
|
|
@ -234,7 +234,7 @@ enum TOperator {
|
|||
EOpMemoryBarrierShared, // compute only
|
||||
EOpGroupMemoryBarrier, // compute only
|
||||
|
||||
EOpAtomicAdd, // TODO: AST functionality: hook these up
|
||||
EOpAtomicAdd,
|
||||
EOpAtomicMin,
|
||||
EOpAtomicMax,
|
||||
EOpAtomicAnd,
|
||||
|
|
@ -243,6 +243,10 @@ enum TOperator {
|
|||
EOpAtomicExchange,
|
||||
EOpAtomicCompSwap,
|
||||
|
||||
EOpAtomicCounterIncrement,
|
||||
EOpAtomicCounterDecrement,
|
||||
EOpAtomicCounter,
|
||||
|
||||
EOpAny,
|
||||
EOpAll,
|
||||
|
||||
|
|
|
|||
|
|
@ -3133,6 +3133,19 @@ void IdentifyBuiltIns(int version, EProfile profile, EShLanguage language, TSymb
|
|||
symbolTable.relateToOperator("memoryBarrierBuffer", EOpMemoryBarrierBuffer);
|
||||
symbolTable.relateToOperator("memoryBarrierImage", EOpMemoryBarrierImage);
|
||||
|
||||
symbolTable.relateToOperator("atomicAdd", EOpAtomicAdd);
|
||||
symbolTable.relateToOperator("atomicMin", EOpAtomicMin);
|
||||
symbolTable.relateToOperator("atomicMax", EOpAtomicMax);
|
||||
symbolTable.relateToOperator("atomicAnd", EOpAtomicAnd);
|
||||
symbolTable.relateToOperator("atomicOr", EOpAtomicOr);
|
||||
symbolTable.relateToOperator("atomicXor", EOpAtomicXor);
|
||||
symbolTable.relateToOperator("atomicExchange", EOpAtomicExchange);
|
||||
symbolTable.relateToOperator("atomicCompSwap", EOpAtomicCompSwap);
|
||||
|
||||
symbolTable.relateToOperator("atomicCounterIncrement", EOpAtomicCounterIncrement);
|
||||
symbolTable.relateToOperator("atomicCounterDecrement", EOpAtomicCounterDecrement);
|
||||
symbolTable.relateToOperator("atomicCounter", EOpAtomicCounter);
|
||||
|
||||
if (PureOperatorBuiltins) {
|
||||
symbolTable.relateToOperator("imageQuerySize", EImageQuerySize);
|
||||
symbolTable.relateToOperator("imageQuerySamples", EImageQuerySamples);
|
||||
|
|
|
|||
|
|
@ -289,6 +289,10 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
|
|||
case EOpEmitStreamVertex: out.debug << "EmitStreamVertex"; break;
|
||||
case EOpEndStreamPrimitive: out.debug << "EndStreamPrimitive"; break;
|
||||
|
||||
case EOpAtomicCounterIncrement: out.debug << "AtomicCounterIncrement";break;
|
||||
case EOpAtomicCounterDecrement: out.debug << "AtomicCounterDecrement";break;
|
||||
case EOpAtomicCounter: out.debug << "AtomicCounter"; break;
|
||||
|
||||
default: out.debug.message(EPrefixError, "Bad unary op");
|
||||
}
|
||||
|
||||
|
|
@ -395,6 +399,15 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node
|
|||
case EOpMemoryBarrierShared: out.debug << "MemoryBarrierShared"; break;
|
||||
case EOpGroupMemoryBarrier: out.debug << "GroupMemoryBarrier"; break;
|
||||
|
||||
case EOpAtomicAdd: out.debug << "AtomicAdd"; break;
|
||||
case EOpAtomicMin: out.debug << "AtomicMin"; break;
|
||||
case EOpAtomicMax: out.debug << "AtomicMax"; break;
|
||||
case EOpAtomicAnd: out.debug << "AtomicAnd"; break;
|
||||
case EOpAtomicOr: out.debug << "AtomicOr"; break;
|
||||
case EOpAtomicXor: out.debug << "AtomicXor"; break;
|
||||
case EOpAtomicExchange: out.debug << "AtomicExchange"; break;
|
||||
case EOpAtomicCompSwap: out.debug << "AtomicCompSwap"; break;
|
||||
|
||||
case EImageQuerySize: out.debug << "imageQuerySize"; break;
|
||||
case EImageQuerySamples: out.debug << "imageQuerySamples"; break;
|
||||
case EImageLoad: out.debug << "imageLoad"; break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue