Add OpSubgroupBallotKHR and vote instructions
This commit is contained in:
parent
688d6d9799
commit
71b53b855a
2 changed files with 37 additions and 0 deletions
|
@ -941,11 +941,24 @@ public:
|
||||||
|
|
||||||
// Group
|
// Group
|
||||||
|
|
||||||
|
/// Computes a bitfield value combining the Predicate value from all invocations in the current
|
||||||
|
/// Subgroup that execute the same dynamic instance of this instruction.
|
||||||
|
Id OpSubgroupBallotKHR(Id result_type, Id predicate);
|
||||||
|
|
||||||
/// Return the value from the invocation in the subgroup with an invocation ID equal to index.
|
/// Return the value from the invocation in the subgroup with an invocation ID equal to index.
|
||||||
/// The index must be the same for all active invocations in the subgroup, otherwise the results
|
/// The index must be the same for all active invocations in the subgroup, otherwise the results
|
||||||
/// are undefined.
|
/// are undefined.
|
||||||
Id OpSubgroupReadInvocationKHR(Id result_type, Id value, Id index);
|
Id OpSubgroupReadInvocationKHR(Id result_type, Id value, Id index);
|
||||||
|
|
||||||
|
/// TBD
|
||||||
|
Id OpSubgroupAllKHR(Id result_type, Id predicate);
|
||||||
|
|
||||||
|
/// TBD
|
||||||
|
Id OpSubgroupAnyKHR(Id result_type, Id predicate);
|
||||||
|
|
||||||
|
/// TBD
|
||||||
|
Id OpSubgroupAllEqualKHR(Id result_type, Id predicate);
|
||||||
|
|
||||||
/// Return the value of the invocation identified by the current invocation's id within the
|
/// Return the value of the invocation identified by the current invocation's id within the
|
||||||
/// group xor'ed with mask.
|
/// group xor'ed with mask.
|
||||||
Id OpGroupNonUniformShuffleXor(Id result_type, spv::Scope scope, Id value, Id mask);
|
Id OpGroupNonUniformShuffleXor(Id result_type, spv::Scope scope, Id value, Id mask);
|
||||||
|
|
|
@ -9,6 +9,12 @@
|
||||||
|
|
||||||
namespace Sirit {
|
namespace Sirit {
|
||||||
|
|
||||||
|
Id Module::OpSubgroupBallotKHR(Id result_type, Id predicate) {
|
||||||
|
auto op = std::make_unique<Op>(spv::Op::OpSubgroupBallotKHR, bound++, result_type);
|
||||||
|
op->Add(predicate);
|
||||||
|
return AddCode(std::move(op));
|
||||||
|
}
|
||||||
|
|
||||||
Id Module::OpSubgroupReadInvocationKHR(Id result_type, Id value, Id index) {
|
Id Module::OpSubgroupReadInvocationKHR(Id result_type, Id value, Id index) {
|
||||||
auto op = std::make_unique<Op>(spv::Op::OpSubgroupReadInvocationKHR, bound++, result_type);
|
auto op = std::make_unique<Op>(spv::Op::OpSubgroupReadInvocationKHR, bound++, result_type);
|
||||||
op->Add(value);
|
op->Add(value);
|
||||||
|
@ -16,6 +22,24 @@ Id Module::OpSubgroupReadInvocationKHR(Id result_type, Id value, Id index) {
|
||||||
return AddCode(std::move(op));
|
return AddCode(std::move(op));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Id Module::OpSubgroupAllKHR(Id result_type, Id predicate) {
|
||||||
|
auto op = std::make_unique<Op>(spv::Op::OpSubgroupAllKHR, bound++, result_type);
|
||||||
|
op->Add(predicate);
|
||||||
|
return AddCode(std::move(op));
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Module::OpSubgroupAnyKHR(Id result_type, Id predicate) {
|
||||||
|
auto op = std::make_unique<Op>(spv::Op::OpSubgroupAnyKHR, bound++, result_type);
|
||||||
|
op->Add(predicate);
|
||||||
|
return AddCode(std::move(op));
|
||||||
|
}
|
||||||
|
|
||||||
|
Id Module::OpSubgroupAllEqualKHR(Id result_type, Id predicate) {
|
||||||
|
auto op = std::make_unique<Op>(spv::Op::OpSubgroupAllEqualKHR, bound++, result_type);
|
||||||
|
op->Add(predicate);
|
||||||
|
return AddCode(std::move(op));
|
||||||
|
}
|
||||||
|
|
||||||
Id Module::OpGroupNonUniformShuffleXor(Id result_type, spv::Scope scope, Id value, Id mask) {
|
Id Module::OpGroupNonUniformShuffleXor(Id result_type, spv::Scope scope, Id value, Id mask) {
|
||||||
auto op = std::make_unique<Op>(spv::Op::OpGroupNonUniformShuffleXor, bound++, result_type);
|
auto op = std::make_unique<Op>(spv::Op::OpGroupNonUniformShuffleXor, bound++, result_type);
|
||||||
op->Add(static_cast<u32>(scope));
|
op->Add(static_cast<u32>(scope));
|
||||||
|
|
Loading…
Reference in a new issue