зеркало из https://github.com/stride3d/xkslang.git
Implement new revision of extension GL_AMD_shader_ballot
- Add support for invocation functions with "InclusiveScan" and "ExclusiveScan" modes. - Add support for invocation functions taking int64/uint64/doube/float16 as inout data types.
This commit is contained in:
Родитель
33dadd1287
Коммит
430ef40ab4
|
@ -161,7 +161,7 @@ protected:
|
|||
spv::Id makeSmearedConstant(spv::Id constant, int vectorSize);
|
||||
spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
|
||||
spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
|
||||
spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector<spv::Id>& operands);
|
||||
spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector<spv::Id>& operands);
|
||||
spv::Id createMiscOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy);
|
||||
spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId);
|
||||
spv::Id getSymbolId(const glslang::TIntermSymbol* node);
|
||||
|
@ -2015,7 +2015,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty
|
|||
#ifdef AMD_EXTENSIONS
|
||||
case glslang::EbtFloat16:
|
||||
builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
|
||||
builder.addCapability(spv::CapabilityFloat16);
|
||||
spvType = builder.makeFloatType(16);
|
||||
break;
|
||||
#endif
|
||||
|
@ -3743,6 +3742,18 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, spv:
|
|||
case glslang::EOpMinInvocationsNonUniform:
|
||||
case glslang::EOpMaxInvocationsNonUniform:
|
||||
case glslang::EOpAddInvocationsNonUniform:
|
||||
case glslang::EOpMinInvocationsInclusiveScan:
|
||||
case glslang::EOpMaxInvocationsInclusiveScan:
|
||||
case glslang::EOpAddInvocationsInclusiveScan:
|
||||
case glslang::EOpMinInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpMaxInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpAddInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpMinInvocationsExclusiveScan:
|
||||
case glslang::EOpMaxInvocationsExclusiveScan:
|
||||
case glslang::EOpAddInvocationsExclusiveScan:
|
||||
case glslang::EOpMinInvocationsExclusiveScanNonUniform:
|
||||
case glslang::EOpMaxInvocationsExclusiveScanNonUniform:
|
||||
case glslang::EOpAddInvocationsExclusiveScanNonUniform:
|
||||
#endif
|
||||
{
|
||||
std::vector<spv::Id> operands;
|
||||
|
@ -4130,8 +4141,9 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
#endif
|
||||
|
||||
spv::Op opCode = spv::OpNop;
|
||||
|
||||
std::vector<spv::Id> spvGroupOperands;
|
||||
spv::GroupOperation groupOperation = spv::GroupOperationMax;
|
||||
|
||||
if (op == glslang::EOpBallot || op == glslang::EOpReadFirstInvocation ||
|
||||
op == glslang::EOpReadInvocation) {
|
||||
builder.addExtension(spv::E_SPV_KHR_shader_ballot);
|
||||
|
@ -4141,15 +4153,47 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
#ifdef AMD_EXTENSIONS
|
||||
if (op == glslang::EOpMinInvocationsNonUniform ||
|
||||
op == glslang::EOpMaxInvocationsNonUniform ||
|
||||
op == glslang::EOpAddInvocationsNonUniform)
|
||||
op == glslang::EOpAddInvocationsNonUniform ||
|
||||
op == glslang::EOpMinInvocationsInclusiveScanNonUniform ||
|
||||
op == glslang::EOpMaxInvocationsInclusiveScanNonUniform ||
|
||||
op == glslang::EOpAddInvocationsInclusiveScanNonUniform ||
|
||||
op == glslang::EOpMinInvocationsExclusiveScanNonUniform ||
|
||||
op == glslang::EOpMaxInvocationsExclusiveScanNonUniform ||
|
||||
op == glslang::EOpAddInvocationsExclusiveScanNonUniform)
|
||||
builder.addExtension(spv::E_SPV_AMD_shader_ballot);
|
||||
#endif
|
||||
|
||||
spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
|
||||
#ifdef AMD_EXTENSIONS
|
||||
if (op == glslang::EOpMinInvocations || op == glslang::EOpMaxInvocations || op == glslang::EOpAddInvocations ||
|
||||
op == glslang::EOpMinInvocationsNonUniform || op == glslang::EOpMaxInvocationsNonUniform || op == glslang::EOpAddInvocationsNonUniform)
|
||||
spvGroupOperands.push_back(spv::GroupOperationReduce);
|
||||
switch (op) {
|
||||
case glslang::EOpMinInvocations:
|
||||
case glslang::EOpMaxInvocations:
|
||||
case glslang::EOpAddInvocations:
|
||||
case glslang::EOpMinInvocationsNonUniform:
|
||||
case glslang::EOpMaxInvocationsNonUniform:
|
||||
case glslang::EOpAddInvocationsNonUniform:
|
||||
groupOperation = spv::GroupOperationReduce;
|
||||
spvGroupOperands.push_back(groupOperation);
|
||||
break;
|
||||
case glslang::EOpMinInvocationsInclusiveScan:
|
||||
case glslang::EOpMaxInvocationsInclusiveScan:
|
||||
case glslang::EOpAddInvocationsInclusiveScan:
|
||||
case glslang::EOpMinInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpMaxInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpAddInvocationsInclusiveScanNonUniform:
|
||||
groupOperation = spv::GroupOperationInclusiveScan;
|
||||
spvGroupOperands.push_back(groupOperation);
|
||||
break;
|
||||
case glslang::EOpMinInvocationsExclusiveScan:
|
||||
case glslang::EOpMaxInvocationsExclusiveScan:
|
||||
case glslang::EOpAddInvocationsExclusiveScan:
|
||||
case glslang::EOpMinInvocationsExclusiveScanNonUniform:
|
||||
case glslang::EOpMaxInvocationsExclusiveScanNonUniform:
|
||||
case glslang::EOpAddInvocationsExclusiveScanNonUniform:
|
||||
groupOperation = spv::GroupOperationExclusiveScan;
|
||||
spvGroupOperands.push_back(groupOperation);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -4175,7 +4219,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
case glslang::EOpReadInvocation:
|
||||
opCode = spv::OpSubgroupReadInvocationKHR;
|
||||
if (builder.isVectorType(typeId))
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands);
|
||||
return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands);
|
||||
break;
|
||||
case glslang::EOpReadFirstInvocation:
|
||||
opCode = spv::OpSubgroupFirstInvocationKHR;
|
||||
|
@ -4205,7 +4249,15 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
case glslang::EOpMinInvocations:
|
||||
case glslang::EOpMaxInvocations:
|
||||
case glslang::EOpAddInvocations:
|
||||
if (op == glslang::EOpMinInvocations) {
|
||||
case glslang::EOpMinInvocationsInclusiveScan:
|
||||
case glslang::EOpMaxInvocationsInclusiveScan:
|
||||
case glslang::EOpAddInvocationsInclusiveScan:
|
||||
case glslang::EOpMinInvocationsExclusiveScan:
|
||||
case glslang::EOpMaxInvocationsExclusiveScan:
|
||||
case glslang::EOpAddInvocationsExclusiveScan:
|
||||
if (op == glslang::EOpMinInvocations ||
|
||||
op == glslang::EOpMinInvocationsInclusiveScan ||
|
||||
op == glslang::EOpMinInvocationsExclusiveScan) {
|
||||
if (isFloat)
|
||||
opCode = spv::OpGroupFMin;
|
||||
else {
|
||||
|
@ -4214,7 +4266,9 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
else
|
||||
opCode = spv::OpGroupSMin;
|
||||
}
|
||||
} else if (op == glslang::EOpMaxInvocations) {
|
||||
} else if (op == glslang::EOpMaxInvocations ||
|
||||
op == glslang::EOpMaxInvocationsInclusiveScan ||
|
||||
op == glslang::EOpMaxInvocationsExclusiveScan) {
|
||||
if (isFloat)
|
||||
opCode = spv::OpGroupFMax;
|
||||
else {
|
||||
|
@ -4231,13 +4285,21 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
}
|
||||
|
||||
if (builder.isVectorType(typeId))
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands);
|
||||
return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands);
|
||||
|
||||
break;
|
||||
case glslang::EOpMinInvocationsNonUniform:
|
||||
case glslang::EOpMaxInvocationsNonUniform:
|
||||
case glslang::EOpAddInvocationsNonUniform:
|
||||
if (op == glslang::EOpMinInvocationsNonUniform) {
|
||||
case glslang::EOpMinInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpMaxInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpAddInvocationsInclusiveScanNonUniform:
|
||||
case glslang::EOpMinInvocationsExclusiveScanNonUniform:
|
||||
case glslang::EOpMaxInvocationsExclusiveScanNonUniform:
|
||||
case glslang::EOpAddInvocationsExclusiveScanNonUniform:
|
||||
if (op == glslang::EOpMinInvocationsNonUniform ||
|
||||
op == glslang::EOpMinInvocationsInclusiveScanNonUniform ||
|
||||
op == glslang::EOpMinInvocationsExclusiveScanNonUniform) {
|
||||
if (isFloat)
|
||||
opCode = spv::OpGroupFMinNonUniformAMD;
|
||||
else {
|
||||
|
@ -4247,7 +4309,9 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
opCode = spv::OpGroupSMinNonUniformAMD;
|
||||
}
|
||||
}
|
||||
else if (op == glslang::EOpMaxInvocationsNonUniform) {
|
||||
else if (op == glslang::EOpMaxInvocationsNonUniform ||
|
||||
op == glslang::EOpMaxInvocationsInclusiveScanNonUniform ||
|
||||
op == glslang::EOpMaxInvocationsExclusiveScanNonUniform) {
|
||||
if (isFloat)
|
||||
opCode = spv::OpGroupFMaxNonUniformAMD;
|
||||
else {
|
||||
|
@ -4265,7 +4329,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
}
|
||||
|
||||
if (builder.isVectorType(typeId))
|
||||
return CreateInvocationsVectorOperation(opCode, typeId, operands);
|
||||
return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands);
|
||||
|
||||
break;
|
||||
#endif
|
||||
|
@ -4279,7 +4343,7 @@ spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op
|
|||
}
|
||||
|
||||
// Create group invocation operations on a vector
|
||||
spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::Id typeId, std::vector<spv::Id>& operands)
|
||||
spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, spv::Id typeId, std::vector<spv::Id>& operands)
|
||||
{
|
||||
#ifdef AMD_EXTENSIONS
|
||||
assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin ||
|
||||
|
@ -4323,7 +4387,7 @@ spv::Id TGlslangToSpvTraverser::CreateInvocationsVectorOperation(spv::Op op, spv
|
|||
spvGroupOperands.push_back(operands[1]);
|
||||
} else {
|
||||
spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
|
||||
spvGroupOperands.push_back(spv::GroupOperationReduce);
|
||||
spvGroupOperands.push_back(groupOperation);
|
||||
spvGroupOperands.push_back(scalar);
|
||||
}
|
||||
|
||||
|
|
|
@ -2354,7 +2354,7 @@ void Builder::dump(std::vector<unsigned int>& out) const
|
|||
|
||||
for (auto it = extensions.cbegin(); it != extensions.cend(); ++it) {
|
||||
Instruction extInst(0, 0, OpExtension);
|
||||
extInst.addStringOperand(*it);
|
||||
extInst.addStringOperand(it->c_str());
|
||||
extInst.dump(out);
|
||||
}
|
||||
|
||||
|
|
|
@ -555,7 +555,7 @@ public:
|
|||
|
||||
SourceLanguage source;
|
||||
int sourceVersion;
|
||||
std::set<const char*> extensions;
|
||||
std::set<std::string> extensions;
|
||||
std::vector<const char*> sourceExtensions;
|
||||
AddressingModel addressModel;
|
||||
MemoryModel memoryModel;
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,165 @@
|
|||
#version 450
|
||||
|
||||
#extension GL_ARB_gpu_shader_int64: enable
|
||||
#extension GL_AMD_gpu_shader_half_float: enable
|
||||
#extension GL_AMD_shader_ballot: enable
|
||||
|
||||
layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
|
||||
|
||||
layout(binding = 0) buffer Buffers
|
||||
{
|
||||
int i;
|
||||
uvec2 uv;
|
||||
vec3 fv;
|
||||
dvec4 dv;
|
||||
int64_t i64;
|
||||
u64vec2 u64v;
|
||||
f16vec3 f16v;
|
||||
};
|
||||
|
||||
void main()
|
||||
{
|
||||
i = minInvocationsAMD(i);
|
||||
uv = minInvocationsAMD(uv);
|
||||
fv = minInvocationsAMD(fv);
|
||||
dv = minInvocationsAMD(dv);
|
||||
i64 = minInvocationsAMD(i64);
|
||||
u64v = minInvocationsAMD(u64v);
|
||||
f16v = minInvocationsAMD(f16v);
|
||||
|
||||
i = maxInvocationsAMD(i);
|
||||
uv = maxInvocationsAMD(uv);
|
||||
fv = maxInvocationsAMD(fv);
|
||||
dv = maxInvocationsAMD(dv);
|
||||
i64 = maxInvocationsAMD(i64);
|
||||
u64v = maxInvocationsAMD(u64v);
|
||||
f16v = maxInvocationsAMD(f16v);
|
||||
|
||||
i = addInvocationsAMD(i);
|
||||
uv = addInvocationsAMD(uv);
|
||||
fv = addInvocationsAMD(fv);
|
||||
dv = addInvocationsAMD(dv);
|
||||
i64 = addInvocationsAMD(i64);
|
||||
u64v = addInvocationsAMD(u64v);
|
||||
f16v = addInvocationsAMD(f16v);
|
||||
|
||||
i = minInvocationsNonUniformAMD(i);
|
||||
uv = minInvocationsNonUniformAMD(uv);
|
||||
fv = minInvocationsNonUniformAMD(fv);
|
||||
dv = minInvocationsNonUniformAMD(dv);
|
||||
i64 = minInvocationsNonUniformAMD(i64);
|
||||
u64v = minInvocationsNonUniformAMD(u64v);
|
||||
f16v = minInvocationsNonUniformAMD(f16v);
|
||||
|
||||
i = maxInvocationsNonUniformAMD(i);
|
||||
uv = maxInvocationsNonUniformAMD(uv);
|
||||
fv = maxInvocationsNonUniformAMD(fv);
|
||||
dv = maxInvocationsNonUniformAMD(dv);
|
||||
i64 = maxInvocationsNonUniformAMD(i64);
|
||||
u64v = maxInvocationsNonUniformAMD(u64v);
|
||||
f16v = maxInvocationsNonUniformAMD(f16v);
|
||||
|
||||
i = addInvocationsNonUniformAMD(i);
|
||||
uv = addInvocationsNonUniformAMD(uv);
|
||||
fv = addInvocationsNonUniformAMD(fv);
|
||||
dv = addInvocationsNonUniformAMD(dv);
|
||||
i64 = addInvocationsNonUniformAMD(i64);
|
||||
u64v = addInvocationsNonUniformAMD(u64v);
|
||||
f16v = addInvocationsNonUniformAMD(f16v);
|
||||
|
||||
i = minInvocationsInclusiveScanAMD(i);
|
||||
uv = minInvocationsInclusiveScanAMD(uv);
|
||||
fv = minInvocationsInclusiveScanAMD(fv);
|
||||
dv = minInvocationsInclusiveScanAMD(dv);
|
||||
i64 = minInvocationsInclusiveScanAMD(i64);
|
||||
u64v = minInvocationsInclusiveScanAMD(u64v);
|
||||
f16v = minInvocationsInclusiveScanAMD(f16v);
|
||||
|
||||
i = maxInvocationsInclusiveScanAMD(i);
|
||||
uv = maxInvocationsInclusiveScanAMD(uv);
|
||||
fv = maxInvocationsInclusiveScanAMD(fv);
|
||||
dv = maxInvocationsInclusiveScanAMD(dv);
|
||||
i64 = maxInvocationsInclusiveScanAMD(i64);
|
||||
u64v = maxInvocationsInclusiveScanAMD(u64v);
|
||||
f16v = maxInvocationsInclusiveScanAMD(f16v);
|
||||
|
||||
i = addInvocationsInclusiveScanAMD(i);
|
||||
uv = addInvocationsInclusiveScanAMD(uv);
|
||||
fv = addInvocationsInclusiveScanAMD(fv);
|
||||
dv = addInvocationsInclusiveScanAMD(dv);
|
||||
i64 = addInvocationsInclusiveScanAMD(i64);
|
||||
u64v = addInvocationsInclusiveScanAMD(u64v);
|
||||
f16v = addInvocationsInclusiveScanAMD(f16v);
|
||||
|
||||
i = minInvocationsExclusiveScanAMD(i);
|
||||
uv = minInvocationsExclusiveScanAMD(uv);
|
||||
fv = minInvocationsExclusiveScanAMD(fv);
|
||||
dv = minInvocationsExclusiveScanAMD(dv);
|
||||
i64 = minInvocationsExclusiveScanAMD(i64);
|
||||
u64v = minInvocationsExclusiveScanAMD(u64v);
|
||||
f16v = minInvocationsExclusiveScanAMD(f16v);
|
||||
|
||||
i = maxInvocationsExclusiveScanAMD(i);
|
||||
uv = maxInvocationsExclusiveScanAMD(uv);
|
||||
fv = maxInvocationsExclusiveScanAMD(fv);
|
||||
dv = maxInvocationsExclusiveScanAMD(dv);
|
||||
i64 = maxInvocationsExclusiveScanAMD(i64);
|
||||
u64v = maxInvocationsExclusiveScanAMD(u64v);
|
||||
f16v = maxInvocationsExclusiveScanAMD(f16v);
|
||||
|
||||
i = addInvocationsExclusiveScanAMD(i);
|
||||
uv = addInvocationsExclusiveScanAMD(uv);
|
||||
fv = addInvocationsExclusiveScanAMD(fv);
|
||||
dv = addInvocationsExclusiveScanAMD(dv);
|
||||
i64 = addInvocationsExclusiveScanAMD(i64);
|
||||
u64v = addInvocationsExclusiveScanAMD(u64v);
|
||||
f16v = addInvocationsExclusiveScanAMD(f16v);
|
||||
|
||||
i = minInvocationsInclusiveScanNonUniformAMD(i);
|
||||
uv = minInvocationsInclusiveScanNonUniformAMD(uv);
|
||||
fv = minInvocationsInclusiveScanNonUniformAMD(fv);
|
||||
dv = minInvocationsInclusiveScanNonUniformAMD(dv);
|
||||
i64 = minInvocationsInclusiveScanNonUniformAMD(i64);
|
||||
u64v = minInvocationsInclusiveScanNonUniformAMD(u64v);
|
||||
f16v = minInvocationsInclusiveScanNonUniformAMD(f16v);
|
||||
|
||||
i = maxInvocationsInclusiveScanNonUniformAMD(i);
|
||||
uv = maxInvocationsInclusiveScanNonUniformAMD(uv);
|
||||
fv = maxInvocationsInclusiveScanNonUniformAMD(fv);
|
||||
dv = maxInvocationsInclusiveScanNonUniformAMD(dv);
|
||||
i64 = maxInvocationsInclusiveScanNonUniformAMD(i64);
|
||||
u64v = maxInvocationsInclusiveScanNonUniformAMD(u64v);
|
||||
f16v = maxInvocationsInclusiveScanNonUniformAMD(f16v);
|
||||
|
||||
i = addInvocationsInclusiveScanNonUniformAMD(i);
|
||||
uv = addInvocationsInclusiveScanNonUniformAMD(uv);
|
||||
fv = addInvocationsInclusiveScanNonUniformAMD(fv);
|
||||
dv = addInvocationsInclusiveScanNonUniformAMD(dv);
|
||||
i64 = addInvocationsInclusiveScanNonUniformAMD(i64);
|
||||
u64v = addInvocationsInclusiveScanNonUniformAMD(u64v);
|
||||
f16v = addInvocationsInclusiveScanNonUniformAMD(f16v);
|
||||
|
||||
i = minInvocationsExclusiveScanNonUniformAMD(i);
|
||||
uv = minInvocationsExclusiveScanNonUniformAMD(uv);
|
||||
fv = minInvocationsExclusiveScanNonUniformAMD(fv);
|
||||
dv = minInvocationsExclusiveScanNonUniformAMD(dv);
|
||||
i64 = minInvocationsExclusiveScanNonUniformAMD(i64);
|
||||
u64v = minInvocationsExclusiveScanNonUniformAMD(u64v);
|
||||
f16v = minInvocationsExclusiveScanNonUniformAMD(f16v);
|
||||
|
||||
i = maxInvocationsExclusiveScanNonUniformAMD(i);
|
||||
uv = maxInvocationsExclusiveScanNonUniformAMD(uv);
|
||||
fv = maxInvocationsExclusiveScanNonUniformAMD(fv);
|
||||
dv = maxInvocationsExclusiveScanNonUniformAMD(dv);
|
||||
i64 = maxInvocationsExclusiveScanNonUniformAMD(i64);
|
||||
u64v = maxInvocationsExclusiveScanNonUniformAMD(u64v);
|
||||
f16v = maxInvocationsExclusiveScanNonUniformAMD(f16v);
|
||||
|
||||
i = addInvocationsExclusiveScanNonUniformAMD(i);
|
||||
uv = addInvocationsExclusiveScanNonUniformAMD(uv);
|
||||
fv = addInvocationsExclusiveScanNonUniformAMD(fv);
|
||||
dv = addInvocationsExclusiveScanNonUniformAMD(dv);
|
||||
i64 = addInvocationsExclusiveScanNonUniformAMD(i64);
|
||||
u64v = addInvocationsExclusiveScanNonUniformAMD(u64v);
|
||||
f16v = addInvocationsExclusiveScanNonUniformAMD(f16v);
|
||||
}
|
|
@ -335,6 +335,18 @@ enum TOperator {
|
|||
EOpMinInvocationsNonUniform,
|
||||
EOpMaxInvocationsNonUniform,
|
||||
EOpAddInvocationsNonUniform,
|
||||
EOpMinInvocationsInclusiveScan,
|
||||
EOpMaxInvocationsInclusiveScan,
|
||||
EOpAddInvocationsInclusiveScan,
|
||||
EOpMinInvocationsInclusiveScanNonUniform,
|
||||
EOpMaxInvocationsInclusiveScanNonUniform,
|
||||
EOpAddInvocationsInclusiveScanNonUniform,
|
||||
EOpMinInvocationsExclusiveScan,
|
||||
EOpMaxInvocationsExclusiveScan,
|
||||
EOpAddInvocationsExclusiveScan,
|
||||
EOpMinInvocationsExclusiveScanNonUniform,
|
||||
EOpMaxInvocationsExclusiveScanNonUniform,
|
||||
EOpAddInvocationsExclusiveScanNonUniform,
|
||||
EOpSwizzleInvocations,
|
||||
EOpSwizzleInvocationsMasked,
|
||||
EOpWriteInvocation,
|
||||
|
|
|
@ -1587,6 +1587,96 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"uvec3 minInvocationsAMD(uvec3);"
|
||||
"uvec4 minInvocationsAMD(uvec4);"
|
||||
|
||||
"double minInvocationsAMD(double);"
|
||||
"dvec2 minInvocationsAMD(dvec2);"
|
||||
"dvec3 minInvocationsAMD(dvec3);"
|
||||
"dvec4 minInvocationsAMD(dvec4);"
|
||||
|
||||
"int64_t minInvocationsAMD(int64_t);"
|
||||
"i64vec2 minInvocationsAMD(i64vec2);"
|
||||
"i64vec3 minInvocationsAMD(i64vec3);"
|
||||
"i64vec4 minInvocationsAMD(i64vec4);"
|
||||
|
||||
"uint64_t minInvocationsAMD(uint64_t);"
|
||||
"u64vec2 minInvocationsAMD(u64vec2);"
|
||||
"u64vec3 minInvocationsAMD(u64vec3);"
|
||||
"u64vec4 minInvocationsAMD(u64vec4);"
|
||||
|
||||
"float16_t minInvocationsAMD(float16_t);"
|
||||
"f16vec2 minInvocationsAMD(f16vec2);"
|
||||
"f16vec3 minInvocationsAMD(f16vec3);"
|
||||
"f16vec4 minInvocationsAMD(f16vec4);"
|
||||
|
||||
"float minInvocationsInclusiveScanAMD(float);"
|
||||
"vec2 minInvocationsInclusiveScanAMD(vec2);"
|
||||
"vec3 minInvocationsInclusiveScanAMD(vec3);"
|
||||
"vec4 minInvocationsInclusiveScanAMD(vec4);"
|
||||
|
||||
"int minInvocationsInclusiveScanAMD(int);"
|
||||
"ivec2 minInvocationsInclusiveScanAMD(ivec2);"
|
||||
"ivec3 minInvocationsInclusiveScanAMD(ivec3);"
|
||||
"ivec4 minInvocationsInclusiveScanAMD(ivec4);"
|
||||
|
||||
"uint minInvocationsInclusiveScanAMD(uint);"
|
||||
"uvec2 minInvocationsInclusiveScanAMD(uvec2);"
|
||||
"uvec3 minInvocationsInclusiveScanAMD(uvec3);"
|
||||
"uvec4 minInvocationsInclusiveScanAMD(uvec4);"
|
||||
|
||||
"double minInvocationsInclusiveScanAMD(double);"
|
||||
"dvec2 minInvocationsInclusiveScanAMD(dvec2);"
|
||||
"dvec3 minInvocationsInclusiveScanAMD(dvec3);"
|
||||
"dvec4 minInvocationsInclusiveScanAMD(dvec4);"
|
||||
|
||||
"int64_t minInvocationsInclusiveScanAMD(int64_t);"
|
||||
"i64vec2 minInvocationsInclusiveScanAMD(i64vec2);"
|
||||
"i64vec3 minInvocationsInclusiveScanAMD(i64vec3);"
|
||||
"i64vec4 minInvocationsInclusiveScanAMD(i64vec4);"
|
||||
|
||||
"uint64_t minInvocationsInclusiveScanAMD(uint64_t);"
|
||||
"u64vec2 minInvocationsInclusiveScanAMD(u64vec2);"
|
||||
"u64vec3 minInvocationsInclusiveScanAMD(u64vec3);"
|
||||
"u64vec4 minInvocationsInclusiveScanAMD(u64vec4);"
|
||||
|
||||
"float16_t minInvocationsInclusiveScanAMD(float16_t);"
|
||||
"f16vec2 minInvocationsInclusiveScanAMD(f16vec2);"
|
||||
"f16vec3 minInvocationsInclusiveScanAMD(f16vec3);"
|
||||
"f16vec4 minInvocationsInclusiveScanAMD(f16vec4);"
|
||||
|
||||
"float minInvocationsExclusiveScanAMD(float);"
|
||||
"vec2 minInvocationsExclusiveScanAMD(vec2);"
|
||||
"vec3 minInvocationsExclusiveScanAMD(vec3);"
|
||||
"vec4 minInvocationsExclusiveScanAMD(vec4);"
|
||||
|
||||
"int minInvocationsExclusiveScanAMD(int);"
|
||||
"ivec2 minInvocationsExclusiveScanAMD(ivec2);"
|
||||
"ivec3 minInvocationsExclusiveScanAMD(ivec3);"
|
||||
"ivec4 minInvocationsExclusiveScanAMD(ivec4);"
|
||||
|
||||
"uint minInvocationsExclusiveScanAMD(uint);"
|
||||
"uvec2 minInvocationsExclusiveScanAMD(uvec2);"
|
||||
"uvec3 minInvocationsExclusiveScanAMD(uvec3);"
|
||||
"uvec4 minInvocationsExclusiveScanAMD(uvec4);"
|
||||
|
||||
"double minInvocationsExclusiveScanAMD(double);"
|
||||
"dvec2 minInvocationsExclusiveScanAMD(dvec2);"
|
||||
"dvec3 minInvocationsExclusiveScanAMD(dvec3);"
|
||||
"dvec4 minInvocationsExclusiveScanAMD(dvec4);"
|
||||
|
||||
"int64_t minInvocationsExclusiveScanAMD(int64_t);"
|
||||
"i64vec2 minInvocationsExclusiveScanAMD(i64vec2);"
|
||||
"i64vec3 minInvocationsExclusiveScanAMD(i64vec3);"
|
||||
"i64vec4 minInvocationsExclusiveScanAMD(i64vec4);"
|
||||
|
||||
"uint64_t minInvocationsExclusiveScanAMD(uint64_t);"
|
||||
"u64vec2 minInvocationsExclusiveScanAMD(u64vec2);"
|
||||
"u64vec3 minInvocationsExclusiveScanAMD(u64vec3);"
|
||||
"u64vec4 minInvocationsExclusiveScanAMD(u64vec4);"
|
||||
|
||||
"float16_t minInvocationsExclusiveScanAMD(float16_t);"
|
||||
"f16vec2 minInvocationsExclusiveScanAMD(f16vec2);"
|
||||
"f16vec3 minInvocationsExclusiveScanAMD(f16vec3);"
|
||||
"f16vec4 minInvocationsExclusiveScanAMD(f16vec4);"
|
||||
|
||||
"float maxInvocationsAMD(float);"
|
||||
"vec2 maxInvocationsAMD(vec2);"
|
||||
"vec3 maxInvocationsAMD(vec3);"
|
||||
|
@ -1602,6 +1692,96 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"uvec3 maxInvocationsAMD(uvec3);"
|
||||
"uvec4 maxInvocationsAMD(uvec4);"
|
||||
|
||||
"double maxInvocationsAMD(double);"
|
||||
"dvec2 maxInvocationsAMD(dvec2);"
|
||||
"dvec3 maxInvocationsAMD(dvec3);"
|
||||
"dvec4 maxInvocationsAMD(dvec4);"
|
||||
|
||||
"int64_t maxInvocationsAMD(int64_t);"
|
||||
"i64vec2 maxInvocationsAMD(i64vec2);"
|
||||
"i64vec3 maxInvocationsAMD(i64vec3);"
|
||||
"i64vec4 maxInvocationsAMD(i64vec4);"
|
||||
|
||||
"uint64_t maxInvocationsAMD(uint64_t);"
|
||||
"u64vec2 maxInvocationsAMD(u64vec2);"
|
||||
"u64vec3 maxInvocationsAMD(u64vec3);"
|
||||
"u64vec4 maxInvocationsAMD(u64vec4);"
|
||||
|
||||
"float16_t maxInvocationsAMD(float16_t);"
|
||||
"f16vec2 maxInvocationsAMD(f16vec2);"
|
||||
"f16vec3 maxInvocationsAMD(f16vec3);"
|
||||
"f16vec4 maxInvocationsAMD(f16vec4);"
|
||||
|
||||
"float maxInvocationsInclusiveScanAMD(float);"
|
||||
"vec2 maxInvocationsInclusiveScanAMD(vec2);"
|
||||
"vec3 maxInvocationsInclusiveScanAMD(vec3);"
|
||||
"vec4 maxInvocationsInclusiveScanAMD(vec4);"
|
||||
|
||||
"int maxInvocationsInclusiveScanAMD(int);"
|
||||
"ivec2 maxInvocationsInclusiveScanAMD(ivec2);"
|
||||
"ivec3 maxInvocationsInclusiveScanAMD(ivec3);"
|
||||
"ivec4 maxInvocationsInclusiveScanAMD(ivec4);"
|
||||
|
||||
"uint maxInvocationsInclusiveScanAMD(uint);"
|
||||
"uvec2 maxInvocationsInclusiveScanAMD(uvec2);"
|
||||
"uvec3 maxInvocationsInclusiveScanAMD(uvec3);"
|
||||
"uvec4 maxInvocationsInclusiveScanAMD(uvec4);"
|
||||
|
||||
"double maxInvocationsInclusiveScanAMD(double);"
|
||||
"dvec2 maxInvocationsInclusiveScanAMD(dvec2);"
|
||||
"dvec3 maxInvocationsInclusiveScanAMD(dvec3);"
|
||||
"dvec4 maxInvocationsInclusiveScanAMD(dvec4);"
|
||||
|
||||
"int64_t maxInvocationsInclusiveScanAMD(int64_t);"
|
||||
"i64vec2 maxInvocationsInclusiveScanAMD(i64vec2);"
|
||||
"i64vec3 maxInvocationsInclusiveScanAMD(i64vec3);"
|
||||
"i64vec4 maxInvocationsInclusiveScanAMD(i64vec4);"
|
||||
|
||||
"uint64_t maxInvocationsInclusiveScanAMD(uint64_t);"
|
||||
"u64vec2 maxInvocationsInclusiveScanAMD(u64vec2);"
|
||||
"u64vec3 maxInvocationsInclusiveScanAMD(u64vec3);"
|
||||
"u64vec4 maxInvocationsInclusiveScanAMD(u64vec4);"
|
||||
|
||||
"float16_t maxInvocationsInclusiveScanAMD(float16_t);"
|
||||
"f16vec2 maxInvocationsInclusiveScanAMD(f16vec2);"
|
||||
"f16vec3 maxInvocationsInclusiveScanAMD(f16vec3);"
|
||||
"f16vec4 maxInvocationsInclusiveScanAMD(f16vec4);"
|
||||
|
||||
"float maxInvocationsExclusiveScanAMD(float);"
|
||||
"vec2 maxInvocationsExclusiveScanAMD(vec2);"
|
||||
"vec3 maxInvocationsExclusiveScanAMD(vec3);"
|
||||
"vec4 maxInvocationsExclusiveScanAMD(vec4);"
|
||||
|
||||
"int maxInvocationsExclusiveScanAMD(int);"
|
||||
"ivec2 maxInvocationsExclusiveScanAMD(ivec2);"
|
||||
"ivec3 maxInvocationsExclusiveScanAMD(ivec3);"
|
||||
"ivec4 maxInvocationsExclusiveScanAMD(ivec4);"
|
||||
|
||||
"uint maxInvocationsExclusiveScanAMD(uint);"
|
||||
"uvec2 maxInvocationsExclusiveScanAMD(uvec2);"
|
||||
"uvec3 maxInvocationsExclusiveScanAMD(uvec3);"
|
||||
"uvec4 maxInvocationsExclusiveScanAMD(uvec4);"
|
||||
|
||||
"double maxInvocationsExclusiveScanAMD(double);"
|
||||
"dvec2 maxInvocationsExclusiveScanAMD(dvec2);"
|
||||
"dvec3 maxInvocationsExclusiveScanAMD(dvec3);"
|
||||
"dvec4 maxInvocationsExclusiveScanAMD(dvec4);"
|
||||
|
||||
"int64_t maxInvocationsExclusiveScanAMD(int64_t);"
|
||||
"i64vec2 maxInvocationsExclusiveScanAMD(i64vec2);"
|
||||
"i64vec3 maxInvocationsExclusiveScanAMD(i64vec3);"
|
||||
"i64vec4 maxInvocationsExclusiveScanAMD(i64vec4);"
|
||||
|
||||
"uint64_t maxInvocationsExclusiveScanAMD(uint64_t);"
|
||||
"u64vec2 maxInvocationsExclusiveScanAMD(u64vec2);"
|
||||
"u64vec3 maxInvocationsExclusiveScanAMD(u64vec3);"
|
||||
"u64vec4 maxInvocationsExclusiveScanAMD(u64vec4);"
|
||||
|
||||
"float16_t maxInvocationsExclusiveScanAMD(float16_t);"
|
||||
"f16vec2 maxInvocationsExclusiveScanAMD(f16vec2);"
|
||||
"f16vec3 maxInvocationsExclusiveScanAMD(f16vec3);"
|
||||
"f16vec4 maxInvocationsExclusiveScanAMD(f16vec4);"
|
||||
|
||||
"float addInvocationsAMD(float);"
|
||||
"vec2 addInvocationsAMD(vec2);"
|
||||
"vec3 addInvocationsAMD(vec3);"
|
||||
|
@ -1617,6 +1797,96 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"uvec3 addInvocationsAMD(uvec3);"
|
||||
"uvec4 addInvocationsAMD(uvec4);"
|
||||
|
||||
"double addInvocationsAMD(double);"
|
||||
"dvec2 addInvocationsAMD(dvec2);"
|
||||
"dvec3 addInvocationsAMD(dvec3);"
|
||||
"dvec4 addInvocationsAMD(dvec4);"
|
||||
|
||||
"int64_t addInvocationsAMD(int64_t);"
|
||||
"i64vec2 addInvocationsAMD(i64vec2);"
|
||||
"i64vec3 addInvocationsAMD(i64vec3);"
|
||||
"i64vec4 addInvocationsAMD(i64vec4);"
|
||||
|
||||
"uint64_t addInvocationsAMD(uint64_t);"
|
||||
"u64vec2 addInvocationsAMD(u64vec2);"
|
||||
"u64vec3 addInvocationsAMD(u64vec3);"
|
||||
"u64vec4 addInvocationsAMD(u64vec4);"
|
||||
|
||||
"float16_t addInvocationsAMD(float16_t);"
|
||||
"f16vec2 addInvocationsAMD(f16vec2);"
|
||||
"f16vec3 addInvocationsAMD(f16vec3);"
|
||||
"f16vec4 addInvocationsAMD(f16vec4);"
|
||||
|
||||
"float addInvocationsInclusiveScanAMD(float);"
|
||||
"vec2 addInvocationsInclusiveScanAMD(vec2);"
|
||||
"vec3 addInvocationsInclusiveScanAMD(vec3);"
|
||||
"vec4 addInvocationsInclusiveScanAMD(vec4);"
|
||||
|
||||
"int addInvocationsInclusiveScanAMD(int);"
|
||||
"ivec2 addInvocationsInclusiveScanAMD(ivec2);"
|
||||
"ivec3 addInvocationsInclusiveScanAMD(ivec3);"
|
||||
"ivec4 addInvocationsInclusiveScanAMD(ivec4);"
|
||||
|
||||
"uint addInvocationsInclusiveScanAMD(uint);"
|
||||
"uvec2 addInvocationsInclusiveScanAMD(uvec2);"
|
||||
"uvec3 addInvocationsInclusiveScanAMD(uvec3);"
|
||||
"uvec4 addInvocationsInclusiveScanAMD(uvec4);"
|
||||
|
||||
"double addInvocationsInclusiveScanAMD(double);"
|
||||
"dvec2 addInvocationsInclusiveScanAMD(dvec2);"
|
||||
"dvec3 addInvocationsInclusiveScanAMD(dvec3);"
|
||||
"dvec4 addInvocationsInclusiveScanAMD(dvec4);"
|
||||
|
||||
"int64_t addInvocationsInclusiveScanAMD(int64_t);"
|
||||
"i64vec2 addInvocationsInclusiveScanAMD(i64vec2);"
|
||||
"i64vec3 addInvocationsInclusiveScanAMD(i64vec3);"
|
||||
"i64vec4 addInvocationsInclusiveScanAMD(i64vec4);"
|
||||
|
||||
"uint64_t addInvocationsInclusiveScanAMD(uint64_t);"
|
||||
"u64vec2 addInvocationsInclusiveScanAMD(u64vec2);"
|
||||
"u64vec3 addInvocationsInclusiveScanAMD(u64vec3);"
|
||||
"u64vec4 addInvocationsInclusiveScanAMD(u64vec4);"
|
||||
|
||||
"float16_t addInvocationsInclusiveScanAMD(float16_t);"
|
||||
"f16vec2 addInvocationsInclusiveScanAMD(f16vec2);"
|
||||
"f16vec3 addInvocationsInclusiveScanAMD(f16vec3);"
|
||||
"f16vec4 addInvocationsInclusiveScanAMD(f16vec4);"
|
||||
|
||||
"float addInvocationsExclusiveScanAMD(float);"
|
||||
"vec2 addInvocationsExclusiveScanAMD(vec2);"
|
||||
"vec3 addInvocationsExclusiveScanAMD(vec3);"
|
||||
"vec4 addInvocationsExclusiveScanAMD(vec4);"
|
||||
|
||||
"int addInvocationsExclusiveScanAMD(int);"
|
||||
"ivec2 addInvocationsExclusiveScanAMD(ivec2);"
|
||||
"ivec3 addInvocationsExclusiveScanAMD(ivec3);"
|
||||
"ivec4 addInvocationsExclusiveScanAMD(ivec4);"
|
||||
|
||||
"uint addInvocationsExclusiveScanAMD(uint);"
|
||||
"uvec2 addInvocationsExclusiveScanAMD(uvec2);"
|
||||
"uvec3 addInvocationsExclusiveScanAMD(uvec3);"
|
||||
"uvec4 addInvocationsExclusiveScanAMD(uvec4);"
|
||||
|
||||
"double addInvocationsExclusiveScanAMD(double);"
|
||||
"dvec2 addInvocationsExclusiveScanAMD(dvec2);"
|
||||
"dvec3 addInvocationsExclusiveScanAMD(dvec3);"
|
||||
"dvec4 addInvocationsExclusiveScanAMD(dvec4);"
|
||||
|
||||
"int64_t addInvocationsExclusiveScanAMD(int64_t);"
|
||||
"i64vec2 addInvocationsExclusiveScanAMD(i64vec2);"
|
||||
"i64vec3 addInvocationsExclusiveScanAMD(i64vec3);"
|
||||
"i64vec4 addInvocationsExclusiveScanAMD(i64vec4);"
|
||||
|
||||
"uint64_t addInvocationsExclusiveScanAMD(uint64_t);"
|
||||
"u64vec2 addInvocationsExclusiveScanAMD(u64vec2);"
|
||||
"u64vec3 addInvocationsExclusiveScanAMD(u64vec3);"
|
||||
"u64vec4 addInvocationsExclusiveScanAMD(u64vec4);"
|
||||
|
||||
"float16_t addInvocationsExclusiveScanAMD(float16_t);"
|
||||
"f16vec2 addInvocationsExclusiveScanAMD(f16vec2);"
|
||||
"f16vec3 addInvocationsExclusiveScanAMD(f16vec3);"
|
||||
"f16vec4 addInvocationsExclusiveScanAMD(f16vec4);"
|
||||
|
||||
"float minInvocationsNonUniformAMD(float);"
|
||||
"vec2 minInvocationsNonUniformAMD(vec2);"
|
||||
"vec3 minInvocationsNonUniformAMD(vec3);"
|
||||
|
@ -1632,6 +1902,96 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"uvec3 minInvocationsNonUniformAMD(uvec3);"
|
||||
"uvec4 minInvocationsNonUniformAMD(uvec4);"
|
||||
|
||||
"double minInvocationsNonUniformAMD(double);"
|
||||
"dvec2 minInvocationsNonUniformAMD(dvec2);"
|
||||
"dvec3 minInvocationsNonUniformAMD(dvec3);"
|
||||
"dvec4 minInvocationsNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t minInvocationsNonUniformAMD(int64_t);"
|
||||
"i64vec2 minInvocationsNonUniformAMD(i64vec2);"
|
||||
"i64vec3 minInvocationsNonUniformAMD(i64vec3);"
|
||||
"i64vec4 minInvocationsNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t minInvocationsNonUniformAMD(uint64_t);"
|
||||
"u64vec2 minInvocationsNonUniformAMD(u64vec2);"
|
||||
"u64vec3 minInvocationsNonUniformAMD(u64vec3);"
|
||||
"u64vec4 minInvocationsNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t minInvocationsNonUniformAMD(float16_t);"
|
||||
"f16vec2 minInvocationsNonUniformAMD(f16vec2);"
|
||||
"f16vec3 minInvocationsNonUniformAMD(f16vec3);"
|
||||
"f16vec4 minInvocationsNonUniformAMD(f16vec4);"
|
||||
|
||||
"float minInvocationsInclusiveScanNonUniformAMD(float);"
|
||||
"vec2 minInvocationsInclusiveScanNonUniformAMD(vec2);"
|
||||
"vec3 minInvocationsInclusiveScanNonUniformAMD(vec3);"
|
||||
"vec4 minInvocationsInclusiveScanNonUniformAMD(vec4);"
|
||||
|
||||
"int minInvocationsInclusiveScanNonUniformAMD(int);"
|
||||
"ivec2 minInvocationsInclusiveScanNonUniformAMD(ivec2);"
|
||||
"ivec3 minInvocationsInclusiveScanNonUniformAMD(ivec3);"
|
||||
"ivec4 minInvocationsInclusiveScanNonUniformAMD(ivec4);"
|
||||
|
||||
"uint minInvocationsInclusiveScanNonUniformAMD(uint);"
|
||||
"uvec2 minInvocationsInclusiveScanNonUniformAMD(uvec2);"
|
||||
"uvec3 minInvocationsInclusiveScanNonUniformAMD(uvec3);"
|
||||
"uvec4 minInvocationsInclusiveScanNonUniformAMD(uvec4);"
|
||||
|
||||
"double minInvocationsInclusiveScanNonUniformAMD(double);"
|
||||
"dvec2 minInvocationsInclusiveScanNonUniformAMD(dvec2);"
|
||||
"dvec3 minInvocationsInclusiveScanNonUniformAMD(dvec3);"
|
||||
"dvec4 minInvocationsInclusiveScanNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t minInvocationsInclusiveScanNonUniformAMD(int64_t);"
|
||||
"i64vec2 minInvocationsInclusiveScanNonUniformAMD(i64vec2);"
|
||||
"i64vec3 minInvocationsInclusiveScanNonUniformAMD(i64vec3);"
|
||||
"i64vec4 minInvocationsInclusiveScanNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t minInvocationsInclusiveScanNonUniformAMD(uint64_t);"
|
||||
"u64vec2 minInvocationsInclusiveScanNonUniformAMD(u64vec2);"
|
||||
"u64vec3 minInvocationsInclusiveScanNonUniformAMD(u64vec3);"
|
||||
"u64vec4 minInvocationsInclusiveScanNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t minInvocationsInclusiveScanNonUniformAMD(float16_t);"
|
||||
"f16vec2 minInvocationsInclusiveScanNonUniformAMD(f16vec2);"
|
||||
"f16vec3 minInvocationsInclusiveScanNonUniformAMD(f16vec3);"
|
||||
"f16vec4 minInvocationsInclusiveScanNonUniformAMD(f16vec4);"
|
||||
|
||||
"float minInvocationsExclusiveScanNonUniformAMD(float);"
|
||||
"vec2 minInvocationsExclusiveScanNonUniformAMD(vec2);"
|
||||
"vec3 minInvocationsExclusiveScanNonUniformAMD(vec3);"
|
||||
"vec4 minInvocationsExclusiveScanNonUniformAMD(vec4);"
|
||||
|
||||
"int minInvocationsExclusiveScanNonUniformAMD(int);"
|
||||
"ivec2 minInvocationsExclusiveScanNonUniformAMD(ivec2);"
|
||||
"ivec3 minInvocationsExclusiveScanNonUniformAMD(ivec3);"
|
||||
"ivec4 minInvocationsExclusiveScanNonUniformAMD(ivec4);"
|
||||
|
||||
"uint minInvocationsExclusiveScanNonUniformAMD(uint);"
|
||||
"uvec2 minInvocationsExclusiveScanNonUniformAMD(uvec2);"
|
||||
"uvec3 minInvocationsExclusiveScanNonUniformAMD(uvec3);"
|
||||
"uvec4 minInvocationsExclusiveScanNonUniformAMD(uvec4);"
|
||||
|
||||
"double minInvocationsExclusiveScanNonUniformAMD(double);"
|
||||
"dvec2 minInvocationsExclusiveScanNonUniformAMD(dvec2);"
|
||||
"dvec3 minInvocationsExclusiveScanNonUniformAMD(dvec3);"
|
||||
"dvec4 minInvocationsExclusiveScanNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t minInvocationsExclusiveScanNonUniformAMD(int64_t);"
|
||||
"i64vec2 minInvocationsExclusiveScanNonUniformAMD(i64vec2);"
|
||||
"i64vec3 minInvocationsExclusiveScanNonUniformAMD(i64vec3);"
|
||||
"i64vec4 minInvocationsExclusiveScanNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t minInvocationsExclusiveScanNonUniformAMD(uint64_t);"
|
||||
"u64vec2 minInvocationsExclusiveScanNonUniformAMD(u64vec2);"
|
||||
"u64vec3 minInvocationsExclusiveScanNonUniformAMD(u64vec3);"
|
||||
"u64vec4 minInvocationsExclusiveScanNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t minInvocationsExclusiveScanNonUniformAMD(float16_t);"
|
||||
"f16vec2 minInvocationsExclusiveScanNonUniformAMD(f16vec2);"
|
||||
"f16vec3 minInvocationsExclusiveScanNonUniformAMD(f16vec3);"
|
||||
"f16vec4 minInvocationsExclusiveScanNonUniformAMD(f16vec4);"
|
||||
|
||||
"float maxInvocationsNonUniformAMD(float);"
|
||||
"vec2 maxInvocationsNonUniformAMD(vec2);"
|
||||
"vec3 maxInvocationsNonUniformAMD(vec3);"
|
||||
|
@ -1647,6 +2007,96 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"uvec3 maxInvocationsNonUniformAMD(uvec3);"
|
||||
"uvec4 maxInvocationsNonUniformAMD(uvec4);"
|
||||
|
||||
"double maxInvocationsNonUniformAMD(double);"
|
||||
"dvec2 maxInvocationsNonUniformAMD(dvec2);"
|
||||
"dvec3 maxInvocationsNonUniformAMD(dvec3);"
|
||||
"dvec4 maxInvocationsNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t maxInvocationsNonUniformAMD(int64_t);"
|
||||
"i64vec2 maxInvocationsNonUniformAMD(i64vec2);"
|
||||
"i64vec3 maxInvocationsNonUniformAMD(i64vec3);"
|
||||
"i64vec4 maxInvocationsNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t maxInvocationsNonUniformAMD(uint64_t);"
|
||||
"u64vec2 maxInvocationsNonUniformAMD(u64vec2);"
|
||||
"u64vec3 maxInvocationsNonUniformAMD(u64vec3);"
|
||||
"u64vec4 maxInvocationsNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t maxInvocationsNonUniformAMD(float16_t);"
|
||||
"f16vec2 maxInvocationsNonUniformAMD(f16vec2);"
|
||||
"f16vec3 maxInvocationsNonUniformAMD(f16vec3);"
|
||||
"f16vec4 maxInvocationsNonUniformAMD(f16vec4);"
|
||||
|
||||
"float maxInvocationsInclusiveScanNonUniformAMD(float);"
|
||||
"vec2 maxInvocationsInclusiveScanNonUniformAMD(vec2);"
|
||||
"vec3 maxInvocationsInclusiveScanNonUniformAMD(vec3);"
|
||||
"vec4 maxInvocationsInclusiveScanNonUniformAMD(vec4);"
|
||||
|
||||
"int maxInvocationsInclusiveScanNonUniformAMD(int);"
|
||||
"ivec2 maxInvocationsInclusiveScanNonUniformAMD(ivec2);"
|
||||
"ivec3 maxInvocationsInclusiveScanNonUniformAMD(ivec3);"
|
||||
"ivec4 maxInvocationsInclusiveScanNonUniformAMD(ivec4);"
|
||||
|
||||
"uint maxInvocationsInclusiveScanNonUniformAMD(uint);"
|
||||
"uvec2 maxInvocationsInclusiveScanNonUniformAMD(uvec2);"
|
||||
"uvec3 maxInvocationsInclusiveScanNonUniformAMD(uvec3);"
|
||||
"uvec4 maxInvocationsInclusiveScanNonUniformAMD(uvec4);"
|
||||
|
||||
"double maxInvocationsInclusiveScanNonUniformAMD(double);"
|
||||
"dvec2 maxInvocationsInclusiveScanNonUniformAMD(dvec2);"
|
||||
"dvec3 maxInvocationsInclusiveScanNonUniformAMD(dvec3);"
|
||||
"dvec4 maxInvocationsInclusiveScanNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t maxInvocationsInclusiveScanNonUniformAMD(int64_t);"
|
||||
"i64vec2 maxInvocationsInclusiveScanNonUniformAMD(i64vec2);"
|
||||
"i64vec3 maxInvocationsInclusiveScanNonUniformAMD(i64vec3);"
|
||||
"i64vec4 maxInvocationsInclusiveScanNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t maxInvocationsInclusiveScanNonUniformAMD(uint64_t);"
|
||||
"u64vec2 maxInvocationsInclusiveScanNonUniformAMD(u64vec2);"
|
||||
"u64vec3 maxInvocationsInclusiveScanNonUniformAMD(u64vec3);"
|
||||
"u64vec4 maxInvocationsInclusiveScanNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t maxInvocationsInclusiveScanNonUniformAMD(float16_t);"
|
||||
"f16vec2 maxInvocationsInclusiveScanNonUniformAMD(f16vec2);"
|
||||
"f16vec3 maxInvocationsInclusiveScanNonUniformAMD(f16vec3);"
|
||||
"f16vec4 maxInvocationsInclusiveScanNonUniformAMD(f16vec4);"
|
||||
|
||||
"float maxInvocationsExclusiveScanNonUniformAMD(float);"
|
||||
"vec2 maxInvocationsExclusiveScanNonUniformAMD(vec2);"
|
||||
"vec3 maxInvocationsExclusiveScanNonUniformAMD(vec3);"
|
||||
"vec4 maxInvocationsExclusiveScanNonUniformAMD(vec4);"
|
||||
|
||||
"int maxInvocationsExclusiveScanNonUniformAMD(int);"
|
||||
"ivec2 maxInvocationsExclusiveScanNonUniformAMD(ivec2);"
|
||||
"ivec3 maxInvocationsExclusiveScanNonUniformAMD(ivec3);"
|
||||
"ivec4 maxInvocationsExclusiveScanNonUniformAMD(ivec4);"
|
||||
|
||||
"uint maxInvocationsExclusiveScanNonUniformAMD(uint);"
|
||||
"uvec2 maxInvocationsExclusiveScanNonUniformAMD(uvec2);"
|
||||
"uvec3 maxInvocationsExclusiveScanNonUniformAMD(uvec3);"
|
||||
"uvec4 maxInvocationsExclusiveScanNonUniformAMD(uvec4);"
|
||||
|
||||
"double maxInvocationsExclusiveScanNonUniformAMD(double);"
|
||||
"dvec2 maxInvocationsExclusiveScanNonUniformAMD(dvec2);"
|
||||
"dvec3 maxInvocationsExclusiveScanNonUniformAMD(dvec3);"
|
||||
"dvec4 maxInvocationsExclusiveScanNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t maxInvocationsExclusiveScanNonUniformAMD(int64_t);"
|
||||
"i64vec2 maxInvocationsExclusiveScanNonUniformAMD(i64vec2);"
|
||||
"i64vec3 maxInvocationsExclusiveScanNonUniformAMD(i64vec3);"
|
||||
"i64vec4 maxInvocationsExclusiveScanNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t maxInvocationsExclusiveScanNonUniformAMD(uint64_t);"
|
||||
"u64vec2 maxInvocationsExclusiveScanNonUniformAMD(u64vec2);"
|
||||
"u64vec3 maxInvocationsExclusiveScanNonUniformAMD(u64vec3);"
|
||||
"u64vec4 maxInvocationsExclusiveScanNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t maxInvocationsExclusiveScanNonUniformAMD(float16_t);"
|
||||
"f16vec2 maxInvocationsExclusiveScanNonUniformAMD(f16vec2);"
|
||||
"f16vec3 maxInvocationsExclusiveScanNonUniformAMD(f16vec3);"
|
||||
"f16vec4 maxInvocationsExclusiveScanNonUniformAMD(f16vec4);"
|
||||
|
||||
"float addInvocationsNonUniformAMD(float);"
|
||||
"vec2 addInvocationsNonUniformAMD(vec2);"
|
||||
"vec3 addInvocationsNonUniformAMD(vec3);"
|
||||
|
@ -1662,6 +2112,96 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV
|
|||
"uvec3 addInvocationsNonUniformAMD(uvec3);"
|
||||
"uvec4 addInvocationsNonUniformAMD(uvec4);"
|
||||
|
||||
"double addInvocationsNonUniformAMD(double);"
|
||||
"dvec2 addInvocationsNonUniformAMD(dvec2);"
|
||||
"dvec3 addInvocationsNonUniformAMD(dvec3);"
|
||||
"dvec4 addInvocationsNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t addInvocationsNonUniformAMD(int64_t);"
|
||||
"i64vec2 addInvocationsNonUniformAMD(i64vec2);"
|
||||
"i64vec3 addInvocationsNonUniformAMD(i64vec3);"
|
||||
"i64vec4 addInvocationsNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t addInvocationsNonUniformAMD(uint64_t);"
|
||||
"u64vec2 addInvocationsNonUniformAMD(u64vec2);"
|
||||
"u64vec3 addInvocationsNonUniformAMD(u64vec3);"
|
||||
"u64vec4 addInvocationsNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t addInvocationsNonUniformAMD(float16_t);"
|
||||
"f16vec2 addInvocationsNonUniformAMD(f16vec2);"
|
||||
"f16vec3 addInvocationsNonUniformAMD(f16vec3);"
|
||||
"f16vec4 addInvocationsNonUniformAMD(f16vec4);"
|
||||
|
||||
"float addInvocationsInclusiveScanNonUniformAMD(float);"
|
||||
"vec2 addInvocationsInclusiveScanNonUniformAMD(vec2);"
|
||||
"vec3 addInvocationsInclusiveScanNonUniformAMD(vec3);"
|
||||
"vec4 addInvocationsInclusiveScanNonUniformAMD(vec4);"
|
||||
|
||||
"int addInvocationsInclusiveScanNonUniformAMD(int);"
|
||||
"ivec2 addInvocationsInclusiveScanNonUniformAMD(ivec2);"
|
||||
"ivec3 addInvocationsInclusiveScanNonUniformAMD(ivec3);"
|
||||
"ivec4 addInvocationsInclusiveScanNonUniformAMD(ivec4);"
|
||||
|
||||
"uint addInvocationsInclusiveScanNonUniformAMD(uint);"
|
||||
"uvec2 addInvocationsInclusiveScanNonUniformAMD(uvec2);"
|
||||
"uvec3 addInvocationsInclusiveScanNonUniformAMD(uvec3);"
|
||||
"uvec4 addInvocationsInclusiveScanNonUniformAMD(uvec4);"
|
||||
|
||||
"double addInvocationsInclusiveScanNonUniformAMD(double);"
|
||||
"dvec2 addInvocationsInclusiveScanNonUniformAMD(dvec2);"
|
||||
"dvec3 addInvocationsInclusiveScanNonUniformAMD(dvec3);"
|
||||
"dvec4 addInvocationsInclusiveScanNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t addInvocationsInclusiveScanNonUniformAMD(int64_t);"
|
||||
"i64vec2 addInvocationsInclusiveScanNonUniformAMD(i64vec2);"
|
||||
"i64vec3 addInvocationsInclusiveScanNonUniformAMD(i64vec3);"
|
||||
"i64vec4 addInvocationsInclusiveScanNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t addInvocationsInclusiveScanNonUniformAMD(uint64_t);"
|
||||
"u64vec2 addInvocationsInclusiveScanNonUniformAMD(u64vec2);"
|
||||
"u64vec3 addInvocationsInclusiveScanNonUniformAMD(u64vec3);"
|
||||
"u64vec4 addInvocationsInclusiveScanNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t addInvocationsInclusiveScanNonUniformAMD(float16_t);"
|
||||
"f16vec2 addInvocationsInclusiveScanNonUniformAMD(f16vec2);"
|
||||
"f16vec3 addInvocationsInclusiveScanNonUniformAMD(f16vec3);"
|
||||
"f16vec4 addInvocationsInclusiveScanNonUniformAMD(f16vec4);"
|
||||
|
||||
"float addInvocationsExclusiveScanNonUniformAMD(float);"
|
||||
"vec2 addInvocationsExclusiveScanNonUniformAMD(vec2);"
|
||||
"vec3 addInvocationsExclusiveScanNonUniformAMD(vec3);"
|
||||
"vec4 addInvocationsExclusiveScanNonUniformAMD(vec4);"
|
||||
|
||||
"int addInvocationsExclusiveScanNonUniformAMD(int);"
|
||||
"ivec2 addInvocationsExclusiveScanNonUniformAMD(ivec2);"
|
||||
"ivec3 addInvocationsExclusiveScanNonUniformAMD(ivec3);"
|
||||
"ivec4 addInvocationsExclusiveScanNonUniformAMD(ivec4);"
|
||||
|
||||
"uint addInvocationsExclusiveScanNonUniformAMD(uint);"
|
||||
"uvec2 addInvocationsExclusiveScanNonUniformAMD(uvec2);"
|
||||
"uvec3 addInvocationsExclusiveScanNonUniformAMD(uvec3);"
|
||||
"uvec4 addInvocationsExclusiveScanNonUniformAMD(uvec4);"
|
||||
|
||||
"double addInvocationsExclusiveScanNonUniformAMD(double);"
|
||||
"dvec2 addInvocationsExclusiveScanNonUniformAMD(dvec2);"
|
||||
"dvec3 addInvocationsExclusiveScanNonUniformAMD(dvec3);"
|
||||
"dvec4 addInvocationsExclusiveScanNonUniformAMD(dvec4);"
|
||||
|
||||
"int64_t addInvocationsExclusiveScanNonUniformAMD(int64_t);"
|
||||
"i64vec2 addInvocationsExclusiveScanNonUniformAMD(i64vec2);"
|
||||
"i64vec3 addInvocationsExclusiveScanNonUniformAMD(i64vec3);"
|
||||
"i64vec4 addInvocationsExclusiveScanNonUniformAMD(i64vec4);"
|
||||
|
||||
"uint64_t addInvocationsExclusiveScanNonUniformAMD(uint64_t);"
|
||||
"u64vec2 addInvocationsExclusiveScanNonUniformAMD(u64vec2);"
|
||||
"u64vec3 addInvocationsExclusiveScanNonUniformAMD(u64vec3);"
|
||||
"u64vec4 addInvocationsExclusiveScanNonUniformAMD(u64vec4);"
|
||||
|
||||
"float16_t addInvocationsExclusiveScanNonUniformAMD(float16_t);"
|
||||
"f16vec2 addInvocationsExclusiveScanNonUniformAMD(f16vec2);"
|
||||
"f16vec3 addInvocationsExclusiveScanNonUniformAMD(f16vec3);"
|
||||
"f16vec4 addInvocationsExclusiveScanNonUniformAMD(f16vec4);"
|
||||
|
||||
"float swizzleInvocationsAMD(float, uvec4);"
|
||||
"vec2 swizzleInvocationsAMD(vec2, uvec4);"
|
||||
"vec3 swizzleInvocationsAMD(vec3, uvec4);"
|
||||
|
@ -4324,6 +4864,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
symbolTable.setFunctionExtensions("swizzleInvocationsWithPatternAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("writeInvocationAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("mbcntAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
|
||||
symbolTable.setFunctionExtensions("minInvocationsInclusiveScanAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("maxInvocationsInclusiveScanAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("addInvocationsInclusiveScanAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("minInvocationsInclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("maxInvocationsInclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("addInvocationsInclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("minInvocationsExclusiveScanAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("maxInvocationsExclusiveScanAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("addInvocationsExclusiveScanAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("minInvocationsExclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("maxInvocationsExclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
symbolTable.setFunctionExtensions("addInvocationsExclusiveScanNonUniformAMD", 1, &E_GL_AMD_shader_ballot);
|
||||
}
|
||||
|
||||
if (profile != EEsProfile) {
|
||||
|
@ -4986,16 +5539,28 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion
|
|||
symbolTable.relateToOperator("allInvocationsEqualARB", EOpAllInvocationsEqual);
|
||||
|
||||
#ifdef AMD_EXTENSIONS
|
||||
symbolTable.relateToOperator("minInvocationsAMD", EOpMinInvocations);
|
||||
symbolTable.relateToOperator("maxInvocationsAMD", EOpMaxInvocations);
|
||||
symbolTable.relateToOperator("addInvocationsAMD", EOpAddInvocations);
|
||||
symbolTable.relateToOperator("minInvocationsNonUniformAMD", EOpMinInvocationsNonUniform);
|
||||
symbolTable.relateToOperator("maxInvocationsNonUniformAMD", EOpMaxInvocationsNonUniform);
|
||||
symbolTable.relateToOperator("addInvocationsNonUniformAMD", EOpAddInvocationsNonUniform);
|
||||
symbolTable.relateToOperator("swizzleInvocationsAMD", EOpSwizzleInvocations);
|
||||
symbolTable.relateToOperator("swizzleInvocationsMaskedAMD", EOpSwizzleInvocationsMasked);
|
||||
symbolTable.relateToOperator("writeInvocationAMD", EOpWriteInvocation);
|
||||
symbolTable.relateToOperator("mbcntAMD", EOpMbcnt);
|
||||
symbolTable.relateToOperator("minInvocationsAMD", EOpMinInvocations);
|
||||
symbolTable.relateToOperator("maxInvocationsAMD", EOpMaxInvocations);
|
||||
symbolTable.relateToOperator("addInvocationsAMD", EOpAddInvocations);
|
||||
symbolTable.relateToOperator("minInvocationsNonUniformAMD", EOpMinInvocationsNonUniform);
|
||||
symbolTable.relateToOperator("maxInvocationsNonUniformAMD", EOpMaxInvocationsNonUniform);
|
||||
symbolTable.relateToOperator("addInvocationsNonUniformAMD", EOpAddInvocationsNonUniform);
|
||||
symbolTable.relateToOperator("minInvocationsInclusiveScanAMD", EOpMinInvocationsInclusiveScan);
|
||||
symbolTable.relateToOperator("maxInvocationsInclusiveScanAMD", EOpMaxInvocationsInclusiveScan);
|
||||
symbolTable.relateToOperator("addInvocationsInclusiveScanAMD", EOpAddInvocationsInclusiveScan);
|
||||
symbolTable.relateToOperator("minInvocationsInclusiveScanNonUniformAMD", EOpMinInvocationsInclusiveScanNonUniform);
|
||||
symbolTable.relateToOperator("maxInvocationsInclusiveScanNonUniformAMD", EOpMaxInvocationsInclusiveScanNonUniform);
|
||||
symbolTable.relateToOperator("addInvocationsInclusiveScanNonUniformAMD", EOpAddInvocationsInclusiveScanNonUniform);
|
||||
symbolTable.relateToOperator("minInvocationsExclusiveScanAMD", EOpMinInvocationsExclusiveScan);
|
||||
symbolTable.relateToOperator("maxInvocationsExclusiveScanAMD", EOpMaxInvocationsExclusiveScan);
|
||||
symbolTable.relateToOperator("addInvocationsExclusiveScanAMD", EOpAddInvocationsExclusiveScan);
|
||||
symbolTable.relateToOperator("minInvocationsExclusiveScanNonUniformAMD", EOpMinInvocationsExclusiveScanNonUniform);
|
||||
symbolTable.relateToOperator("maxInvocationsExclusiveScanNonUniformAMD", EOpMaxInvocationsExclusiveScanNonUniform);
|
||||
symbolTable.relateToOperator("addInvocationsExclusiveScanNonUniformAMD", EOpAddInvocationsExclusiveScanNonUniform);
|
||||
symbolTable.relateToOperator("swizzleInvocationsAMD", EOpSwizzleInvocations);
|
||||
symbolTable.relateToOperator("swizzleInvocationsMaskedAMD", EOpSwizzleInvocationsMasked);
|
||||
symbolTable.relateToOperator("writeInvocationAMD", EOpWriteInvocation);
|
||||
symbolTable.relateToOperator("mbcntAMD", EOpMbcnt);
|
||||
|
||||
symbolTable.relateToOperator("min3", EOpMin3);
|
||||
symbolTable.relateToOperator("max3", EOpMax3);
|
||||
|
|
|
@ -377,6 +377,21 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node)
|
|||
case EOpMinInvocationsNonUniform: out.debug << "minInvocationsNonUniform"; break;
|
||||
case EOpMaxInvocationsNonUniform: out.debug << "maxInvocationsNonUniform"; break;
|
||||
case EOpAddInvocationsNonUniform: out.debug << "addInvocationsNonUniform"; break;
|
||||
|
||||
case EOpMinInvocationsInclusiveScan: out.debug << "minInvocationsInclusiveScan"; break;
|
||||
case EOpMaxInvocationsInclusiveScan: out.debug << "maxInvocationsInclusiveScan"; break;
|
||||
case EOpAddInvocationsInclusiveScan: out.debug << "addInvocationsInclusiveScan"; break;
|
||||
case EOpMinInvocationsInclusiveScanNonUniform: out.debug << "minInvocationsInclusiveScanNonUniform"; break;
|
||||
case EOpMaxInvocationsInclusiveScanNonUniform: out.debug << "maxInvocationsInclusiveScanNonUniform"; break;
|
||||
case EOpAddInvocationsInclusiveScanNonUniform: out.debug << "addInvocationsInclusiveScanNonUniform"; break;
|
||||
|
||||
case EOpMinInvocationsExclusiveScan: out.debug << "minInvocationsExclusiveScan"; break;
|
||||
case EOpMaxInvocationsExclusiveScan: out.debug << "maxInvocationsExclusiveScan"; break;
|
||||
case EOpAddInvocationsExclusiveScan: out.debug << "addInvocationsExclusiveScan"; break;
|
||||
case EOpMinInvocationsExclusiveScanNonUniform: out.debug << "minInvocationsExclusiveScanNonUniform"; break;
|
||||
case EOpMaxInvocationsExclusiveScanNonUniform: out.debug << "maxInvocationsExclusiveScanNonUniform"; break;
|
||||
case EOpAddInvocationsExclusiveScanNonUniform: out.debug << "addInvocationsExclusiveScanNonUniform"; break;
|
||||
|
||||
case EOpMbcnt: out.debug << "mbcnt"; break;
|
||||
|
||||
case EOpCubeFaceIndex: out.debug << "cubeFaceIndex"; break;
|
||||
|
|
|
@ -358,6 +358,7 @@ INSTANTIATE_TEST_CASE_P(
|
|||
Glsl, CompileVulkanToSpirvTestAMD,
|
||||
::testing::ValuesIn(std::vector<std::string>({
|
||||
"spv.float16.frag",
|
||||
"spv.shaderBallotAMD.comp"
|
||||
})),
|
||||
FileNameAsCustomTestSuffix
|
||||
);
|
||||
|
|
Загрузка…
Ссылка в новой задаче