joevt
19ba15f2f1
ppc: Separate enums for separate fields.
2024-03-26 06:44:26 -07:00
dingusdev
30802affd4
Continued fixes for tables
2024-03-24 17:24:36 -07:00
dingusdev
5631485465
Cleaning up templating
2024-03-24 14:06:07 -07:00
dingusdev
c281b27220
Attempted templating for interpreter
2024-03-24 12:21:19 -07:00
dingusdev
4ef3c792de
Refactoring interpreter, pt. 1
...
Reduce the number of global variables used by interpreter
2024-03-22 08:01:29 -07:00
joevt
e44676e491
ppcfpopcodes: Template mffs variants.
2024-03-07 06:45:46 -07:00
dingusdev
ebac8b92ba
Clean-up for loading instructions
...
Expanding the scope of the clean-up from lscbx to other loading/storing instructions.
2024-03-01 07:57:46 -07:00
joevt
0e3eaf724b
ppcfpopcodes: Fix stfs*, attempt #2 .
2024-02-20 02:04:02 +01:00
joevt
2a05ccbee1
ppcfpopcodes: Fix fres.
...
Don't convert to float until the end.
2024-02-20 02:03:41 +01:00
joevt
59bee01c0a
ppcfpopcodes: Fix fmsubs inf nan check.
...
There's probably still an issue with the inf_nan check
using reg_a for the first value instead of reg_a * reg_c.
This will probably need rewriting anyway.
2024-02-20 02:02:58 +01:00
joevt
4e4c8d71be
ppcfpopcodes: Fix fadds inf nan check.
2024-02-20 02:01:55 +01:00
joevt
c7ae31dfce
ppcfpopcodes: Spaces.
2024-02-20 02:01:37 +01:00
dingusdev
29f3ffd474
Continued clean-up, part 2
2024-02-18 07:06:27 -07:00
joevt
fd81d7b040
ppcfpopcodes: Fix load float.
...
Type casting an int to a float assigns the value of the int to the float which is not what is needed here.
2024-02-11 07:40:17 -07:00
joevt
01e45d656e
ppcfpopcodes: Update header date.
2024-02-10 14:47:46 -07:00
joevt
9199b1e520
ppcfpopcodes: Fix multiply add opcodes.
...
Use std::fma for all of them for max accuracy.
For single precision opcodes, convert only the result, not the operands.
2024-02-10 14:19:09 -07:00
joevt
3be22dac99
ppcfpopcodes: No float cast for operand check.
2024-02-10 14:18:49 -07:00
joevt
ff895aa8a4
ppcfpopcodes: Remove some globals.
...
ppc_result64_d and ppc_dblresult64_d don't need to be globals. The rest are unused.
2024-02-10 13:56:07 -07:00
joevt
c9c4280e6e
ppcfpopcodes: No float cast for operand check.
2024-02-10 13:02:49 -07:00
joevt
dac9c1e52c
ppcfpopcodes: Fix fctiw* round to nearest.
...
0.3 should not round up to 1.
2024-02-10 12:58:58 -07:00
joevt
a7e6ab33a1
ppcfpopcodes: Make fctiw* results QNaN.
2024-02-10 12:58:29 -07:00
joevt
4fcb357e2f
ppcfpopcodes: add 601 variant of mffs.
2024-02-10 12:51:48 -07:00
dingusdev
52dfc0cf93
Slightly faster typecasting
2024-01-31 08:06:33 -07:00
dingusdev
f3a759c80d
CPU code clean-up
2024-01-05 15:11:37 -07:00
Maxim Poliakovski
9b30dfb474
ppcfpopcodes: refactor fctiw/fctiwz emulation.
2024-01-03 01:27:21 +01:00
joevt
0100e67ebf
ppcfpopcodes: Fix fctiw/fctiwz.
2024-01-03 01:07:53 +01:00
joevt
bd419912b5
ppcfpopcodes: Fix stfs*.
...
It should try to convert its operand to a single precision
floating point number at least.
2024-01-02 21:53:03 +01:00
Maxim Poliakovski
c25b027de4
ppcfpopcodes: fix mtfsf emulation.
2024-01-02 17:21:08 +01:00
Maxim Poliakovski
8595dd7d99
ppcfpopcodes: fix mtfsfi emulation.
2024-01-02 17:21:08 +01:00
joevt
61a90e2cfb
ppcfpopcodes: Fix mcrfs.
2024-01-02 15:52:30 +01:00
joevt
bae488fd97
ppcfpopcodes: Fix lfs* opcodes.
2023-12-22 13:11:13 +01:00
Maxim Poliakovski
d24b5d21b8
CRx_bit enum stores masks for now.
2023-12-19 14:27:57 +01:00
Maxim Poliakovski
9dbfde1a4c
Cleanup previous commit.
2023-12-19 13:15:10 +01:00
joevt
7f229b0fe8
ppcfpopcodes: Fix fcmpo/fcmpu.
...
It was always changing CR1 (starting at CR bit 4) instead of the CR selected by crfD.
Also, it was clearing all but the FL,FG,FE,FU bits of FPRF of FPSCR.
2023-12-19 13:15:10 +01:00
Maxim Poliakovski
a1d8f8aa4e
ppctests: fix test cases with SNaN/QNaN operands.
2023-11-30 17:44:46 +01:00
Maxim Poliakovski
8c3dfe94c7
ppcfpopcodes: infinities should set FPCC_FUNAN.
2023-11-30 12:53:10 +01:00
Maxim Poliakovski
680cab52f3
ppcfpopcodes: fix ppc_fadds.
2023-11-30 12:06:44 +01:00
Maxim Poliakovski
6abb07e61b
Add rounding control for the host FPU.
2023-11-30 12:06:44 +01:00
Maxim Poliakovski
b59c2be12d
ppcfpopcodes: fix fpresult_update().
2023-11-30 12:06:44 +01:00
Maxim Poliakovski
b51670cb25
ppcfpopcodes: improve mffs, mtfsb0 and mtfsb1.
2023-11-30 12:06:44 +01:00
Maxim Poliakovski
487c6c2c7c
ppcfpopcodes: remove dead code.
2023-11-30 12:06:44 +01:00
Maxim Poliakovski
47e0c23e64
Fix CR1 updates for floating-point instructions.
2023-11-28 16:31:51 +01:00
dingusdev
dd454689e0
Fixes for condition reg move instructions
2023-11-28 07:06:04 -07:00
dingusdev
4753ba5361
Continued clean-up
2023-11-23 16:56:58 -07:00
dingusdev
7835aec034
Further CPU cleanup
2023-11-21 08:06:50 -07:00
dingusdev
f4f035682c
Fixed cfloat include
2023-11-19 20:34:40 -07:00
dingusdev
d92ae6136a
CPU code clean-up in progress
...
Happened to fix one case in the process.
2023-11-19 17:56:30 -07:00
dingusdev
074a760b6a
FP compare fixes
...
This is the start of several fixes for the floating point emulation.
2023-11-13 07:30:31 -07:00
Mihai Parparita
35c86ad6bf
Clean up #includes
...
Result of running IWYU (https://include-what-you-use.org/ ) and
applying most of the suggestions about unncessary includes and
forward declarations.
Was motivated by observing that <thread> was being included in
ppcopcodes.cpp even though it was unused (found while researching
the use of threads), but seems generally good to help with build
times and correctness.
2023-11-03 00:33:47 -07:00
Maxim Poliakovski
b39e884d61
ppcfpopcodes: add missing std:: prefixes.
2022-02-17 00:20:18 +01:00