diff options
author | bunnei <bunneidev@gmail.com> | 2018-06-07 06:58:12 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2018-06-07 06:58:12 +0200 |
commit | 92209f905fff33eaf4812c3d4a153ff9fffb1ed0 (patch) | |
tree | 53ef881e880ba5d728c31094f00ccd56e5d7e9c5 /src/video_core/engines | |
parent | Merge pull request #539 from bunnei/f2f-rounding (diff) | |
download | yuzu-92209f905fff33eaf4812c3d4a153ff9fffb1ed0.tar yuzu-92209f905fff33eaf4812c3d4a153ff9fffb1ed0.tar.gz yuzu-92209f905fff33eaf4812c3d4a153ff9fffb1ed0.tar.bz2 yuzu-92209f905fff33eaf4812c3d4a153ff9fffb1ed0.tar.lz yuzu-92209f905fff33eaf4812c3d4a153ff9fffb1ed0.tar.xz yuzu-92209f905fff33eaf4812c3d4a153ff9fffb1ed0.tar.zst yuzu-92209f905fff33eaf4812c3d4a153ff9fffb1ed0.zip |
Diffstat (limited to 'src/video_core/engines')
-rw-r--r-- | src/video_core/engines/shader_bytecode.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/video_core/engines/shader_bytecode.h b/src/video_core/engines/shader_bytecode.h index 2cda1e63e..32800392b 100644 --- a/src/video_core/engines/shader_bytecode.h +++ b/src/video_core/engines/shader_bytecode.h @@ -266,6 +266,17 @@ union Instruction { } iscadd; union { + BitField<20, 8, u64> shift_position; + BitField<28, 8, u64> shift_length; + BitField<48, 1, u64> negate_b; + BitField<49, 1, u64> negate_a; + + u64 GetLeftShiftValue() const { + return 32 - (shift_position + shift_length); + } + } bfe; + + union { BitField<48, 1, u64> negate_b; BitField<49, 1, u64> negate_c; } ffma; @@ -478,6 +489,7 @@ public: enum class Type { Trivial, Arithmetic, + Bfe, Logic, Shift, ScaledAdd, @@ -584,9 +596,6 @@ private: std::vector<Matcher> table = { #define INST(bitstring, op, type, name) Detail::GetMatcher(bitstring, op, type, name) INST("111000110011----", Id::KIL, Type::Flow, "KIL"), - INST("0100110000000---", Id::BFE_C, Type::Flow, "BFE_C"), - INST("0101110000000---", Id::BFE_R, Type::Flow, "BFE_R"), - INST("0011100-00000---", Id::BFE_IMM, Type::Flow, "BFE_IMM"), INST("111000100100----", Id::BRA, Type::Flow, "BRA"), INST("1110111111011---", Id::LD_A, Type::Memory, "LD_A"), INST("1110111110010---", Id::LD_C, Type::Memory, "LD_C"), @@ -631,6 +640,9 @@ private: INST("0100110000100---", Id::IMNMX_C, Type::Arithmetic, "FMNMX_IMM"), INST("0101110000100---", Id::IMNMX_R, Type::Arithmetic, "FMNMX_IMM"), INST("0011100-00100---", Id::IMNMX_IMM, Type::Arithmetic, "FMNMX_IMM"), + INST("0100110000000---", Id::BFE_C, Type::Bfe, "BFE_C"), + INST("0101110000000---", Id::BFE_R, Type::Bfe, "BFE_R"), + INST("0011100-00000---", Id::BFE_IMM, Type::Bfe, "BFE_IMM"), INST("000001----------", Id::LOP32I, Type::Logic, "LOP32I"), INST("0100110001001---", Id::SHL_C, Type::Shift, "SHL_C"), INST("0101110001001---", Id::SHL_R, Type::Shift, "SHL_R"), |