diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2018-12-21 03:40:54 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-15 21:54:49 +0100 |
commit | a58abbcfc4580c8d43935e2aecc6fa151509bf5b (patch) | |
tree | 7133d18e62891991f5ea0e6c06332c0c72ecebb4 /src/video_core/shader/shader_ir.cpp | |
parent | shader_ir: Add comparison helpers (diff) | |
download | yuzu-a58abbcfc4580c8d43935e2aecc6fa151509bf5b.tar yuzu-a58abbcfc4580c8d43935e2aecc6fa151509bf5b.tar.gz yuzu-a58abbcfc4580c8d43935e2aecc6fa151509bf5b.tar.bz2 yuzu-a58abbcfc4580c8d43935e2aecc6fa151509bf5b.tar.lz yuzu-a58abbcfc4580c8d43935e2aecc6fa151509bf5b.tar.xz yuzu-a58abbcfc4580c8d43935e2aecc6fa151509bf5b.tar.zst yuzu-a58abbcfc4580c8d43935e2aecc6fa151509bf5b.zip |
Diffstat (limited to 'src/video_core/shader/shader_ir.cpp')
-rw-r--r-- | src/video_core/shader/shader_ir.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/video_core/shader/shader_ir.cpp b/src/video_core/shader/shader_ir.cpp index 20a1a50ef..aec1fb36b 100644 --- a/src/video_core/shader/shader_ir.cpp +++ b/src/video_core/shader/shader_ir.cpp @@ -309,6 +309,18 @@ Node ShaderIR::GetPredicateComparisonHalf(Tegra::Shader::PredCondition condition return predicate; } +OperationCode ShaderIR::GetPredicateCombiner(PredOperation operation) { + static const std::unordered_map<PredOperation, OperationCode> PredicateOperationTable = { + {PredOperation::And, OperationCode::LogicalAnd}, + {PredOperation::Or, OperationCode::LogicalOr}, + {PredOperation::Xor, OperationCode::LogicalXor}, + }; + + const auto op = PredicateOperationTable.find(operation); + UNIMPLEMENTED_IF_MSG(op == PredicateOperationTable.end(), "Unknown predicate operation"); + return op->second; +} + void ShaderIR::SetRegister(BasicBlock& bb, Register dest, Node src) { bb.push_back(Operation(OperationCode::Assign, GetRegister(dest), src)); } |