summaryrefslogtreecommitdiff
path: root/src/video_core/engines
diff options
context:
space:
mode:
authorGravatar ReinUsesLisp2020-01-27 01:14:25 -0300
committerGravatar ReinUsesLisp2020-01-27 01:15:44 -0300
commite3fc3459c817398fdc9a878c2e554e4580b1d863 (patch)
tree60f589d1c76bb589b9d171ae6e4ac2395288ed36 /src/video_core/engines
parentMerge pull request #3343 from FearlessTobi/ui-tab (diff)
downloadyuzu-e3fc3459c817398fdc9a878c2e554e4580b1d863.tar.gz
yuzu-e3fc3459c817398fdc9a878c2e554e4580b1d863.tar.xz
yuzu-e3fc3459c817398fdc9a878c2e554e4580b1d863.zip
shader/arithmetic: Implement FCMP
Compares the third operand with zero, then selects between the first and second.
Diffstat (limited to 'src/video_core/engines')
-rw-r--r--src/video_core/engines/shader_bytecode.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h
index 6f98bd827..6376b579b 100644
--- a/src/video_core/engines/shader_bytecode.h
+++ b/src/video_core/engines/shader_bytecode.h
@@ -1096,6 +1096,11 @@ union Instruction {
1096 } fset; 1096 } fset;
1097 1097
1098 union { 1098 union {
1099 BitField<47, 1, u64> ftz;
1100 BitField<48, 4, PredCondition> cond;
1101 } fcmp;
1102
1103 union {
1099 BitField<49, 1, u64> bf; 1104 BitField<49, 1, u64> bf;
1100 BitField<35, 3, PredCondition> cond; 1105 BitField<35, 3, PredCondition> cond;
1101 BitField<50, 1, u64> ftz; 1106 BitField<50, 1, u64> ftz;
@@ -1771,6 +1776,7 @@ public:
1771 ICMP_R, 1776 ICMP_R,
1772 ICMP_CR, 1777 ICMP_CR,
1773 ICMP_IMM, 1778 ICMP_IMM,
1779 FCMP_R,
1774 MUFU, // Multi-Function Operator 1780 MUFU, // Multi-Function Operator
1775 RRO_C, // Range Reduction Operator 1781 RRO_C, // Range Reduction Operator
1776 RRO_R, 1782 RRO_R,
@@ -2074,6 +2080,7 @@ private:
2074 INST("0101110100100---", Id::HSETP2_R, Type::HalfSetPredicate, "HSETP2_R"), 2080 INST("0101110100100---", Id::HSETP2_R, Type::HalfSetPredicate, "HSETP2_R"),
2075 INST("0111111-0-------", Id::HSETP2_IMM, Type::HalfSetPredicate, "HSETP2_IMM"), 2081 INST("0111111-0-------", Id::HSETP2_IMM, Type::HalfSetPredicate, "HSETP2_IMM"),
2076 INST("0101110100011---", Id::HSET2_R, Type::HalfSet, "HSET2_R"), 2082 INST("0101110100011---", Id::HSET2_R, Type::HalfSet, "HSET2_R"),
2083 INST("010110111010----", Id::FCMP_R, Type::Arithmetic, "FCMP_R"),
2077 INST("0101000010000---", Id::MUFU, Type::Arithmetic, "MUFU"), 2084 INST("0101000010000---", Id::MUFU, Type::Arithmetic, "MUFU"),
2078 INST("0100110010010---", Id::RRO_C, Type::Arithmetic, "RRO_C"), 2085 INST("0100110010010---", Id::RRO_C, Type::Arithmetic, "RRO_C"),
2079 INST("0101110010010---", Id::RRO_R, Type::Arithmetic, "RRO_R"), 2086 INST("0101110010010---", Id::RRO_R, Type::Arithmetic, "RRO_R"),