diff options
| author | 2018-12-23 20:59:49 -0300 | |
|---|---|---|
| committer | 2019-01-15 17:54:53 -0300 | |
| commit | 2df55985b691d659073dce2d857d46bc152b4842 (patch) | |
| tree | 334b3f81d183b48b81b1be82c8d92d4731bbdb61 /src/video_core/shader/decode | |
| parent | shader_decode: Implement R2P (diff) | |
| download | yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar.gz yuzu-2df55985b691d659073dce2d857d46bc152b4842.tar.xz yuzu-2df55985b691d659073dce2d857d46bc152b4842.zip | |
shader_decode: Rework HSETP2
Diffstat (limited to 'src/video_core/shader/decode')
| -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) { | |||
| 39 | const Node second_pred = GetPredicate(instr.hsetp2.pred39, instr.hsetp2.neg_pred != 0); | 39 | const Node second_pred = GetPredicate(instr.hsetp2.pred39, instr.hsetp2.neg_pred != 0); |
| 40 | 40 | ||
| 41 | const OperationCode combiner = GetPredicateCombiner(instr.hsetp2.op); | 41 | const OperationCode combiner = GetPredicateCombiner(instr.hsetp2.op); |
| 42 | const OperationCode pair_combiner = | ||
| 43 | instr.hsetp2.h_and ? OperationCode::LogicalAll2 : OperationCode::LogicalAny2; | ||
| 42 | 44 | ||
| 43 | MetaHalfArithmetic meta = { | 45 | MetaHalfArithmetic meta = {false, {instr.hsetp2.type_a, instr.hsetp2.type_b}}; |
| 44 | false, {instr.hsetp2.type_a, instr.hsetp2.type_b}, instr.hsetp2.h_and != 0}; | 46 | const Node comparison = GetPredicateComparisonHalf(instr.hsetp2.cond, meta, op_a, op_b); |
| 45 | const Node first_pred = GetPredicateComparisonHalf(instr.hsetp2.cond, meta, op_a, op_b); | 47 | const Node first_pred = Operation(pair_combiner, comparison); |
| 46 | 48 | ||
| 47 | // Set the primary predicate to the result of Predicate OP SecondPredicate | 49 | // Set the primary predicate to the result of Predicate OP SecondPredicate |
| 48 | const Node value = Operation(combiner, first_pred, second_pred); | 50 | const Node value = Operation(combiner, first_pred, second_pred); |