Tyler Stachecki
1e059e3f71
Fix a potentially disasterous RSP bug.
2014-12-26 14:19:45 -05:00
Tyler Stachecki
645f4b06ea
Minor cleanup to the RSP pipeline.
2014-12-26 14:19:45 -05:00
Tyler Stachecki
6faca60054
Start reworking RSP vector loads and stores.
2014-12-26 14:19:45 -05:00
Tyler Stachecki
f1929a056c
Commit AIO's VMACF implementation.
2014-12-24 15:18:59 -05:00
Tyler Stachecki
ab8dde80e9
Add AIO's implementation for VMULU.
2014-12-23 01:10:15 -05:00
Tyler Stachecki
2ee295a671
Fix RSP DMEM accesses.
...
Up until now, the simulator assumed that DMEM accesses had to be
aligned (similarly to the VR4300). This is not actually the case,
so allow scalar memory access to arbitrary DMEM addresses.
2014-12-22 23:53:13 -05:00
Tyler Stachecki
3f2329be5b
Fix a bug in VRCP/VRSQ precision selection.
2014-12-22 21:06:17 -05:00
Tyler Stachecki
e52e031ce3
Add implementations for VRSQ, VRSQL, and VRSQH.
2014-12-22 20:47:48 -05:00
Tyler Stachecki
4b6904240e
Add implementations for VRCP, VRCPL, and VRCPH.
2014-12-22 20:29:16 -05:00
Tyler Stachecki
73709f4c45
Add implementation for VCR.
2014-12-22 13:01:03 -05:00
Tyler Stachecki
88310a8104
Add AIO's implementation for VMULF.
2014-12-22 09:50:29 -05:00
Tyler Stachecki
f268795da5
Add implementation for VMRG.
2014-12-21 15:49:44 -05:00
Tyler Stachecki
9f4664a4b6
Add implementation for VADDC.
2014-12-21 15:29:16 -05:00
Tyler Stachecki
a955bf1e2c
Add implementation for VSUBC.
2014-12-21 15:07:00 -05:00
Tyler Stachecki
f199c7bac8
Add implementation for VABS.
2014-12-21 12:59:36 -05:00
Tyler Stachecki
de5b5b0f96
Commit AIO's VSUB optimizations, fix carry/borrow issue.
2014-12-21 12:55:38 -05:00
Tyler Stachecki
0be40f4358
Add implementations for VGE and VLT.
2014-12-21 11:08:00 -05:00
Tyler Stachecki
dc50279609
Add implementations for VEQ and VNE.
2014-12-21 10:39:10 -05:00
Tyler Stachecki
e1de6cd92d
Add implementations for VCH.
2014-12-21 09:29:58 -05:00
Tyler Stachecki
145141225e
Add implementations for VCL and CFC2.
2014-12-20 12:27:38 -05:00
Tyler Stachecki
c72f2c5028
Fix RSP alignment issues once and for all.
2014-12-19 20:03:03 -05:00
Tyler Stachecki
8b45d7eab5
Fix padding around SSE register types.
...
Really need to stop doing patchjobs and just fix this.
2014-11-16 14:27:43 -05:00
Tyler Stachecki
c1dc7cba08
Refactor for another major performance boost.
...
Since the CEN64 core now runs in it's own thread (and doesn't use
the FPU), we can steal the host's FPU state register and not have
to worry about preserving it.
Along with that major overhaul, don't force "extra" features like
simulation statistics and debugging if the user doesn't want them.
Including that code, even when it is not run, mucks with register
allocation or something ever so slightly.
2014-11-15 18:22:20 -05:00
Tyler Stachecki
0a9b8c2367
Make read_acc_* return a value.
...
Instead of writing through a pointer, just return the value.
Thank you, Jared, for pointing out my stupidity.
2014-11-13 19:54:33 -05:00
Tyler Stachecki
b4b95d1f21
Fix SS2 RSP vector loads/stores implementation.
2014-11-10 18:32:12 -05:00
Tyler Stachecki
316214d82d
(Finally) permit SSE2-only builds.
...
Add SSE2 codepaths where necessary (even if not complete), while
still allowing the project to be compiled with SSSE3+ intrinsics.
2014-11-10 14:29:13 -05:00
Tyler Stachecki
3a24a67f1f
Fix poor SSE2-based RSP performance.
2014-11-10 11:02:57 -05:00
Tyler Stachecki
2f0e33263d
Add RSP reciprocal ROM contents.
2014-11-09 13:20:10 -05:00
Tyler Stachecki
380577dfe3
Remove an assertion from VSAR...
...
Thanks to krom for reverse engineering this!
2014-11-08 21:27:45 -05:00
Tyler Stachecki
9f8a9f9d62
Add implementations of VMADH and VMUDH.
2014-11-08 14:01:41 -05:00
Tyler Stachecki
007d72eda1
Add implementations of VMADL and VMADM.
2014-11-08 12:21:06 -05:00
Tyler Stachecki
e89f054674
Optimize extremely aggressively.
...
Tell GCC to optimize cold functions for size and stash them away in
a separate part of the binary. Put the simulate core, meanwhile, on
the hot path. Also, bump optimization to -O3 as we can now "afford"
to do so.
2014-11-05 08:39:47 -05:00
Tyler Stachecki
b668296589
Add implementations of VADD and VSUB.
2014-11-03 18:06:32 -05:00
Tyler Stachecki
083ad75286
arch/x86_64: Cache RSP accumulator regs in host CPU.
2014-11-03 16:48:38 -05:00
Tyler Stachecki
d4a8f82b10
Change the RSP vector calling convention.
2014-11-02 22:45:33 -05:00
Tyler Stachecki
b5ff809881
Add an implementation of VMADN.
2014-11-02 22:31:58 -05:00
Tyler Stachecki
89ecd417d8
Pack RSP results into a result structure.
2014-11-02 13:40:49 -05:00
Tyler Stachecki
bf197cf3bd
Implement VMUDL, VMUDM, VMUDN.
2014-11-02 12:44:19 -05:00
Tyler Stachecki
c4612418ed
Implement VINV, fixup INV.
2014-11-02 11:57:26 -05:00
Tyler Stachecki
f6c77de8ea
Fix an annoying little load-aligner bug.
2014-11-02 11:53:39 -05:00
Tyler Stachecki
6f54353825
Fix another incorrect RSP branch target.
2014-11-02 10:29:19 -05:00
Tyler Stachecki
87e856634f
Undo changes from 1a90e6981e
.
...
Only supposed to return bits [11:0] of the PC reg.
2014-11-02 10:00:22 -05:00
Tyler Stachecki
fae5dcca5d
Get rid of some undefined behavior warnings.
2014-11-02 09:55:45 -05:00
Tyler Stachecki
1a90e6981e
Make sure SP_PC_REG returns an address in IMEM.
2014-11-02 09:36:44 -05:00
Tyler Stachecki
aaf56a0928
Make sure RSP branch targets don't escape IMEM.
2014-11-02 09:35:50 -05:00
Tyler Stachecki
c522b7cab0
Some minor tweaks/fixes to the SU pipeline.
2014-10-25 17:11:45 -04:00
Tyler Stachecki
304f667674
Implement several LWC2/SWC2 opcodes.
2014-10-25 14:03:26 -04:00
Tyler Stachecki
b9b989131f
More peephole optimizations.
2014-10-25 13:25:07 -04:00
Tyler Stachecki
0c64ae620b
Combine SLL, SLLV function logic.
2014-10-25 13:01:20 -04:00
Tyler Stachecki
87986a5037
Cut some instructions from execution functions.
...
Extend a LUT by a couple of entries to avoid a shift at runtime.
2014-10-25 12:52:41 -04:00