Commit graph

736 commits

Author SHA1 Message Date
Tyler Stachecki
1c1124bfd3 Temporarily patch the "render half frame" bug.
Not sure why copy_size should = 4 for a 16-bit frame, so
look into that. But for now, it won't cause any buffer
overruns, so enable it with a warning.
2015-01-04 12:18:10 -05:00
Tyler Stachecki
aa175bf6d6 Fix the JALR RSP bug, similar to last commit. 2015-01-04 12:18:03 -05:00
Tyler Stachecki
9fb9f24724 Fix bugs, implement WatchLo/Hi support. 2015-01-04 12:17:57 -05:00
Tyler Stachecki
db0bf1a594 Squash IC->RF latch data on a fault. 2015-01-03 13:13:20 -05:00
Tyler Stachecki
ac6dfe16da Cleanup the VR4300 exception logic somewhat. 2015-01-03 12:39:40 -05:00
Tyler Stachecki
c795c4ad2d Remove old function definitions. 2015-01-03 00:49:52 -05:00
Tyler Stachecki
2697ba9445 Merge more functions together. 2015-01-02 23:51:53 -05:00
Tyler Stachecki
d8f60c4afa Merge a handful of the vector compares. 2015-01-02 23:51:40 -05:00
Tyler Stachecki
1c8f871df8 Start merging RSP vector functions.
No need to separate all these functions when they contain so
much common code, so start combining things for the sake of
locality and predictor effectiveness (and size). In addition
to these benefits, the CPU backend is usually busy during the
execution of these functions, so suffering a misprediction
isn't as painful (especially seeing as we can potentially
improve the prediction from the indirect branch).
2015-01-02 22:21:32 -05:00
Tyler Stachecki
d50450e624 Disable register caching for now.
Until we can work around system libraries stomping over the
registers we want to reserve, just disable register caching for
the time being.
2015-01-02 21:05:07 -05:00
Tyler Stachecki
c1f1998c78 Add an implementation for VMACU. 2015-01-02 21:04:44 -05:00
Tyler Stachecki
b55940f139 Fix VMACF accumulation issues and lighting problems. 2015-01-02 21:04:33 -05:00
Tyler Stachecki
9ad566c658 Hacky fix to patch register caching.
On Windows, acc_lo (%xmm5) was clashing with the x64 calling
convention, which states %xmm5 is a volatile register and is
the caller's responsibility to save. We need the register
preserved across calls, so until we have a better solution to
the problem, pick registers that are not volatile according to
the calling convention.
2015-01-02 15:39:21 -05:00
Tyler Stachecki
33fd6a394d Fix a CFC2/VCE error that produced the wrong mask. 2015-01-01 23:15:45 -05:00
Tyler Stachecki
fbd0a646f6 Fix potential undefined behaviour issues. 2015-01-01 23:15:35 -05:00
Tyler Stachecki
742ffc1493 Fix a series of RSP bugs that krom pointed out. 2015-01-01 21:13:41 -05:00
Tyler Stachecki
fca1cbe022 Add support for building on OS X. 2015-01-01 21:13:35 -05:00
Tyler Stachecki
91cfe79cd1 Add a missing line to CMakeLists.txt. 2015-01-01 21:13:29 -05:00
Tyler Stachecki
4e34f9a910 Restore most TLB functionality from backport. 2015-01-01 15:53:52 -05:00
Tyler Stachecki
fd74a5eb55 Update README and prepare for GitHub push. 2015-01-01 15:01:46 -05:00
Tyler Stachecki
f74ff068c4 Don't boot when if the CIC type is not known. 2015-01-01 15:01:37 -05:00
Tyler Stachecki
40ff6bd9ac Automatically seed the PIF RAM based on CIC type. 2015-01-01 15:01:33 -05:00
Tyler Stachecki
0524573137 os/windows: Only show the console when asked. 2015-01-01 15:01:27 -05:00
Tyler Stachecki
5bf50af698 Clean up some rough edges in the last commit. 2015-01-01 15:01:22 -05:00
Tyler Stachecki
267d56491e Get the Windows build in running condition.
Conflicts:
	rdp/n64video.c
2015-01-01 15:00:53 -05:00
Tyler Stachecki
64b9ce8f5f os/unix: Shuffle things around to align with WINAPI. 2015-01-01 11:33:55 -05:00
Tyler Stachecki
1a7611b6dc Commit some MSVC-specific workarounds. 2015-01-01 10:47:25 -05:00
Tyler Stachecki
eba6ce1420 Fix VLT clipping bugs.
Thank you, AIO, for pointing this out.
2015-01-01 10:47:07 -05:00
Tyler Stachecki
d9d4ebcb8b os/unix: Don't race during window initialization. 2015-01-01 10:47:00 -05:00
Tyler Stachecki
62eacc11a4 Cleanup the recently-committed VCH.
We should refer to %xmm5 as acc_lo.
2015-01-01 10:46:53 -05:00
Tyler Stachecki
b52962aa19 Fix RSP bug that arises on BREAK. 2015-01-01 10:46:48 -05:00
Tyler Stachecki
e100147379 Add register-caching version of VCH.
Thanks go out to AIO for rounding out this commit with
his optimized SSE2 variant.
2015-01-01 10:46:41 -05:00
Tyler Stachecki
70efd3de4a Fix a typo that broke some builds. 2015-01-01 10:46:34 -05:00
Tyler Stachecki
3e094c8985 Convert AIO's VABS optimization to AVX. 2015-01-01 10:46:28 -05:00
Tyler Stachecki
52afe866d4 Fix a mask typo in the last commit. 2015-01-01 10:46:22 -05:00
Tyler Stachecki
bf30cf29fd Fix a buggy accumulator clamp algorithm. 2015-01-01 10:46:16 -05:00
Tyler Stachecki
5e313634d3 Enable register-caching on MinGW.
Use a prelude to get around Microsoft's stupid calling convention.
2015-01-01 10:46:10 -05:00
Tyler Stachecki
8047bf94d9 Unbreak Windows builds (again). 2015-01-01 10:46:03 -05:00
Tyler Stachecki
8cb3c319f9 Commit AIO's VLT optimizations. 2015-01-01 10:45:57 -05:00
Tyler Stachecki
d9b9171f92 Work in AIO's optimizations for VABS. 2015-01-01 10:45:52 -05:00
Tyler Stachecki
b6f0d0ec58 Set initial values for VCC/VCO/VCE.
Thanks, krom!
2015-01-01 10:45:45 -05:00
Tyler Stachecki
d9b19d3f32 Move around and patch bugs in new functions. 2015-01-01 10:45:38 -05:00
Tyler Stachecki
b54f9618df Prevent register-caching on MinGW.
Since Microsoft decided to totally bork their x86_64 calling
convention, defer all Windows builds to non-optimized RSP
routines. When MinGW supports __vectorcall, this change can
be reverted.
2015-01-01 10:45:31 -05:00
Tyler Stachecki
5f10b427e1 Add support PE/COFF executable formats. 2015-01-01 10:45:22 -05:00
Tyler Stachecki
d32f8386cd Update toolchains with GNU AS references. 2015-01-01 10:45:15 -05:00
Tyler Stachecki
26d65b2ebe Optimize register-caching version of VMRG. 2015-01-01 10:45:07 -05:00
Tyler Stachecki
cc785f9f5b Only use VEX-encoded SSE where it helps us.
Otherwise, stick to the "legacy" SSE instructions as they're
smaller and we don't use the upper halves of AVX registers
anyways.
2015-01-01 10:45:01 -05:00
Tyler Stachecki
84cc9c93cb Fix register-caching version of VABS. 2015-01-01 10:44:54 -05:00
Tyler Stachecki
94ad149a12 Actually enable the register caching...
And fix a lot of bugs introduced with a regex.
2015-01-01 10:44:47 -05:00
Tyler Stachecki
7bc95ee3ee Implement register-caching version of VLT. 2015-01-01 10:44:40 -05:00