Browse Source
Merge pull request #1218 from ogniK5377/fmul-assert
Added FMUL asserts
pull/15/merge
bunnei
7 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
13 additions and
0 deletions
-
src/video_core/engines/shader_bytecode.h
-
src/video_core/renderer_opengl/gl_shader_decompiler.cpp
|
|
|
@ -332,6 +332,10 @@ union Instruction { |
|
|
|
} ipa; |
|
|
|
|
|
|
|
union { |
|
|
|
BitField<39, 2, u64> tab5cb8_2; |
|
|
|
BitField<41, 3, u64> tab5c68_1; |
|
|
|
BitField<44, 2, u64> tab5c68_0; |
|
|
|
BitField<47, 1, u64> cc; |
|
|
|
BitField<48, 1, u64> negate_b; |
|
|
|
} fmul; |
|
|
|
|
|
|
|
|
|
|
|
@ -1038,6 +1038,15 @@ private: |
|
|
|
case OpCode::Id::FMUL_R: |
|
|
|
case OpCode::Id::FMUL_IMM: { |
|
|
|
// FMUL does not have 'abs' bits and only the second operand has a 'neg' bit.
|
|
|
|
ASSERT_MSG(instr.fmul.tab5cb8_2 == 0, "FMUL tab5cb8_2({}) is not implemented", |
|
|
|
instr.fmul.tab5cb8_2.Value()); |
|
|
|
ASSERT_MSG(instr.fmul.tab5c68_1 == 0, "FMUL tab5cb8_1({}) is not implemented", |
|
|
|
instr.fmul.tab5c68_1.Value()); |
|
|
|
ASSERT_MSG(instr.fmul.tab5c68_0 == 1, "FMUL tab5cb8_0({}) is not implemented", |
|
|
|
instr.fmul.tab5c68_0 |
|
|
|
.Value()); // SMO typical sends 1 here which seems to be the default
|
|
|
|
ASSERT_MSG(instr.fmul.cc == 0, "FMUL cc is not implemented"); |
|
|
|
|
|
|
|
op_b = GetOperandAbsNeg(op_b, false, instr.fmul.negate_b); |
|
|
|
regs.SetRegisterToFloat(instr.gpr0, 0, op_a + " * " + op_b, 1, 1, |
|
|
|
instr.alu.saturate_d); |
|
|
|
|