diff options
author | ReinUsesLisp <reinuseslisp@airmail.cc> | 2018-12-24 00:59:49 +0100 |
---|---|---|
committer | ReinUsesLisp <reinuseslisp@airmail.cc> | 2019-01-15 21:54:53 +0100 |
commit | 2df55985b691d659073dce2d857d46bc152b4842 (patch) | |
tree | 334b3f81d183b48b81b1be82c8d92d4731bbdb61 /src/video_core/shader/decode/half_set_predicate.cpp | |
parent | shader_decode: Implement R2P (diff) | |
download | yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar.gz yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar.bz2 yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar.lz yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar.xz yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar.zst yuzu-2df55985b691d659073dce2d857d46bc152b4842.zip |
Diffstat (limited to '')
-rw-r--r-- | src/video_core/shader/decode/half_set_predicate.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/video_core/shader/decode/half_set_predicate.cpp b/src/video_core/shader/decode/half_set_predicate.cpp index d7d63d50a..72cc3d5c8 100644 --- a/src/video_core/shader/decode/half_set_predicate.cpp +++ b/src/video_core/shader/decode/half_set_predicate.cpp @@ -39,10 +39,12 @@ u32 ShaderIR::DecodeHalfSetPredicate(BasicBlock& bb, u32 pc) { const Node second_pred = GetPredicate(instr.hsetp2.pred39, instr.hsetp2.neg_pred != 0); const OperationCode combiner = GetPredicateCombiner(instr.hsetp2.op); + const OperationCode pair_combiner = + instr.hsetp2.h_and ? OperationCode::LogicalAll2 : OperationCode::LogicalAny2; - MetaHalfArithmetic meta = { - false, {instr.hsetp2.type_a, instr.hsetp2.type_b}, instr.hsetp2.h_and != 0}; - const Node first_pred = GetPredicateComparisonHalf(instr.hsetp2.cond, meta, op_a, op_b); + MetaHalfArithmetic meta = {false, {instr.hsetp2.type_a, instr.hsetp2.type_b}}; + const Node comparison = GetPredicateComparisonHalf(instr.hsetp2.cond, meta, op_a, op_b); + const Node first_pred = Operation(pair_combiner, comparison); // Set the primary predicate to the result of Predicate OP SecondPredicate const Node value = Operation(combiner, first_pred, second_pred); |