Commit graph

953 commits

Author SHA1 Message Date
Tyler Stachecki
c4a121c139 Trim out some unused instructions. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
98e98094d4 Switch over CVT.
x87 to SSE transition complete.
2014-07-27 23:40:08 -04:00
Tyler Stachecki
d2f70fd2c8 Switch over ROUND, TRUNC, CEIL, and FLOOR. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
d5fea665c9 Stop using "Yz" as an input constraint.
clang doesn't seem to like it...
2014-07-27 23:40:08 -04:00
Tyler Stachecki
1c873c680d Fix last commit's bugs (reported by krom's checker). 2014-07-27 23:40:08 -04:00
Tyler Stachecki
e66c2e2e37 Simplify the floating point compare logic.
Also, finish converting things to SSE/SSE2.
2014-07-27 23:40:08 -04:00
Tyler Stachecki
e87b2f7f57 Switch over a handful of CMP. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
79c05ac6b0 Switch over SQRT. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
8bd52f1e11 Switch over NEG, fix the double mask constant. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
9f520f9029 Switch over ABS, apply const where possible. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
45617d9c36 Start the switch from x87 to SSE. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
81e9970b2e vr4300/cp1: Add missing unusable excps, fix bugs. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
e7417bee66 Add get/set native FPU state functions. 2014-07-27 23:40:08 -04:00
Tyler Stachecki
850c278cd9 os/unix: Stop using pthreads improperly. 2014-07-27 09:08:54 -04:00
Tyler Stachecki
596736f64d Hack in support for LDL/LDR. 2014-07-27 00:59:43 -04:00
Tyler Stachecki
d0662e9874 Remove preshift from memory operations. 2014-07-26 14:54:30 -04:00
Tyler Stachecki
d924d68635 Fix unused options/flags in the build system. 2014-07-26 14:38:42 -04:00
Tyler Stachecki
dfb4af315e Hack: Return audio buffer full/busy all the time. 2014-07-26 13:44:16 -04:00
Tyler Stachecki
f60adc4ea8 Support 64MiB carts. 2014-07-26 12:24:05 -04:00
Tyler Stachecki
276447e706 Fix some errors in LWR (for memcpy() and bcopy()). 2014-07-26 12:04:56 -04:00
Tyler Stachecki
705b8330fa Fix bcopy() and memcpy()-related bugs. 2014-07-26 10:45:16 -04:00
Tyler Stachecki
6b65055137 Fix a minor issue in pif_perform_command. 2014-07-26 09:30:04 -04:00
Tyler Stachecki
349bdc1684 Merge krom's FPU comparison instructions.
Implements: C.F.D, C.F.S, C.NGE.D, C.NGE.S, C.NGL.D, C.NGL.S
C.NGLE.D, C.NGLE.S, C.NGT.D, C.NGT.S, C.OLE.C.OLE.S, C.OLE.S,
C.OLT.D, C.OLT.S, C.SEQ.D, C.SEQ.S, C.SF.`C.SF.S, C.SF.S,
C.UEQ.D, C.UEQ.S, C.ULE.D, C.ULE.S, C.ULT.D, C.ULT.S, C.UN.D
C.UN.S.
2014-07-17 20:03:28 -04:00
Tyler Stachecki
8d7afe3d4c Do a better job of emulating the PI. 2014-07-13 21:22:36 -04:00
Tyler Stachecki
4a48a987e5 Restore some PIF functionality. 2014-07-13 21:07:24 -04:00
Tyler Stachecki
21092f06cd Merge krom-fpu into master.
Conflicts:
	vr4300/cp1.c
2014-07-13 20:33:35 -04:00
Tyler Stachecki
f3bb75ac69 Fix a bug in MTC1.
Fix a mask-related bug that occured when storing the high
part of an FPU register with MTC1 (when 32-bit FPU mode is
active).
2014-07-13 15:26:02 -04:00
Tyler Stachecki
9ef940a6eb Fix a bug in MTC1.
Fix a mask-related bug that occured when storing the high
part of an FPU register with MTC1 (when 32-bit FPU mode is
active).
2014-07-13 15:23:23 -04:00
Tyler Stachecki
4b69669998 Add support for C.lt.fmt.
Conflicts:
	vr4300/cp1.h
2014-07-13 13:16:31 -04:00
Tyler Stachecki
9eede82001 Make FPU FCR writes available on the next cycle.
Even though the manual suggests otherwise...
See: http://cen64.com/viewtopic.php?f=6&t=109&p=876#p875
2014-07-13 13:01:58 -04:00
Tyler Stachecki
d5e621b563 Add required GNU inline assembly constraints. 2014-07-13 13:01:47 -04:00
Tyler Stachecki
2bfd3870e8 Implement another conditional FPU operation. 2014-07-13 13:01:40 -04:00
Tyler Stachecki
16aea90110 Implement FPU conditional branches. 2014-07-13 13:01:31 -04:00
Tyler Stachecki
24c17acb62 Implement a FPU conditional operation.
Conflicts:
	vr4300/cp1.c
	vr4300/cp1.h
2014-07-13 13:01:19 -04:00
Tyler Stachecki
5dd0f5bc3c Add implementations for CFC1/CTC1. 2014-07-13 12:57:27 -04:00
Tyler Stachecki
33f59bc1f2 Fix fpu_sub_64 on Unix builds. 2014-07-13 11:21:02 -04:00
Tyler Stachecki
4dc4c24c1a Fix fpu_sub_64 on Unix builds. 2014-07-13 11:20:24 -04:00
Tyler Stachecki
c652f8359a Merge krom's FPU instructions.
Implements: ABS.D, ABS.S, CEIL.L.D, CEIL.L.S, CEIL.W.D
CEIL.W.S, FLOOR.L.D, FLOOR.L.S, FLOOR.W.D, FLOOR.W.S, NEG.D
NEG.S, ROUND.L.D, ROUND.L.S, ROUND.W.D, ROUND.W.S, SQRT.D
SQRT.S, TRUNC.L.D, and TRUNC.L.S!
2014-07-08 00:00:25 -04:00
Tyler Stachecki
beab1e90f3 Add implementations for CFC1/CTC1. 2014-07-07 22:49:19 -04:00
Tyler Stachecki
423d8d9b9c Wave 2 of CP1 housekeeping. 2014-07-05 14:28:43 -04:00
Tyler Stachecki
72481d5df4 Wave 1 of CP1 housekeeping. 2014-07-05 13:43:24 -04:00
Tyler J. Stachecki
96f219fb1a Unwanted reciprocals are bad. 2014-07-05 12:58:02 -04:00
Tyler J. Stachecki
665d7468f9 Add more FPU support for MSVC/x86_64. 2014-07-05 12:12:07 -04:00
Tyler J. Stachecki
6b0215a082 Start adding FPU support for MSVC/x86_64. 2014-07-05 11:35:06 -04:00
Tyler Stachecki
abd909d215 Actually faster with -O2; don't racecar. 2014-07-05 09:09:56 -04:00
Tyler Stachecki
7193b288fc Fix another couple of CP1 bugs. 2014-07-05 08:46:52 -04:00
Tyler Stachecki
c318a781bc Small amount of CP1 cleanup. 2014-07-04 18:25:25 -04:00
Tyler Stachecki
0734d6b4e4 Add support for MOV.fmt and SUB.fmt. 2014-07-04 17:53:07 -04:00
Tyler Stachecki
0b6433ea45 Fix a handful of sloppy CP1 errors. 2014-07-04 17:36:33 -04:00
Tyler Stachecki
33322f0870 Add support for CVT.l.fmt, CVT.w.fmt. 2014-07-04 14:20:20 -04:00