Commit graph

1733 commits

Author SHA1 Message Date
Paul Holden
4fe6b601ca Implement LLD using setRegU64. 2023-09-23 22:17:54 +01:00
Paul Holden
ac1fc58674 Implement generateOR and generateNOR using 64 bit instructions. 2023-09-23 22:17:54 +01:00
Paul Holden
4e5faed89d Implement MFHI, MFLO, MTHI, MTLO using 64 bit moves. 2023-09-23 22:17:54 +01:00
Paul Holden
50e197da2d Rename sourceBits etc to sBits. 2023-09-23 22:17:54 +01:00
Paul Holden
36b21e458d Reorder methods. 2023-09-23 22:17:54 +01:00
Paul Holden
e6c142df87 Tidy cpu1 64 bit reg handling.
* rename _i64_bigint to S64/U64.
* load bigints directly
2023-09-23 22:17:54 +01:00
Paul Holden
b716262709 Rename store_i64_bigint to storeU64. 2023-09-23 22:17:54 +01:00
Paul Holden
f837124293 Rename load_i32, load_f32, load_f64. Remove load_i64_number. 2023-09-23 22:17:54 +01:00
Paul Holden
0193cff714 Rename store_f32 and store_f64. 2023-09-23 22:17:54 +01:00
Paul Holden
57777532fb store_64_hi_lo is unused. 2023-09-23 22:17:54 +01:00
Paul Holden
8f2fce8b15 Implement store_i64_bigint by directly writing to BigUint64Array. 2023-09-23 22:17:54 +01:00
Paul Holden
3a0b92368c Implement LD and LDC1 using load_u64_bigint. 2023-09-23 22:17:54 +01:00
Paul Holden
32e2b51ad1 Fix cpu1 regnames. 2023-09-23 22:17:54 +01:00
Paul Holden
813dfc1cb1 Remove store_i64_number (unused). 2023-09-23 22:17:54 +01:00
Paul Holden
5b19ee49b5 Rename store_i32 to storeS32. 2023-09-23 22:17:54 +01:00
Paul Holden
86f2e3aa31 Add regS64 and regU64. Zero the entire register. 2023-09-23 22:17:54 +01:00
Paul Holden
b978987fd8 Rename CPU1 registers. 2023-09-23 22:17:54 +01:00
Paul Holden
c8a7c63873 Implement branches using BigInt. 2023-09-23 22:17:54 +01:00
Paul Holden
f9c5221f27 Use camelCase for naming locals. 2023-09-23 22:17:54 +01:00
Paul Holden
1fc193b592 Tidy SDC1. 2023-09-23 22:17:54 +01:00
Paul Holden
cab7e12a11 Use BigIntArray to store results from DIV, DIVU, DDIV, DDIVU. 2023-09-23 22:17:54 +01:00
Paul Holden
89d6ffebe8 Store DMULT/DMULTU results using BigIntArray. 2023-09-23 22:17:54 +01:00
Paul Holden
cedba906d5 Add BigInt64Arrays for multlo/multhi and write results from MULT and MULTU without shifts. 2023-09-23 22:17:54 +01:00
Paul Holden
6e1b1c1db5 Rename multHi/multLo for consistency with other naming. 2023-09-23 22:17:54 +01:00
Paul Holden
700a90c780 Implement SLT using BigInt. 2023-09-23 22:17:54 +01:00
Paul Holden
7aab0895db Implement SLTIU using BigInt. 2023-09-23 22:17:54 +01:00
Paul Holden
7559b4e34c Implement XORI using BigInt. 2023-09-23 22:17:54 +01:00
Paul Holden
62175a6920 Implement ANDI using BigInt. 2023-09-23 22:17:54 +01:00
Paul Holden
ebac030546 Implement ORI using BigInt.
I don't think the s==t optimisation is worth the extra complexity.
2023-09-23 22:17:54 +01:00
Paul Holden
09b3d994b5 Implement AND, OR, XOR, NOR using BigInt.
It's simpler and benchmarks show this is faster: https://www.measurethat.net/Benchmarks/Show/26326/0/and-for-vr4300
2023-09-23 22:17:54 +01:00
Paul Holden
a1a7b7b0be Rename setGPR_s64_lo_hi to setRegS64LoHi. 2023-09-23 22:17:54 +01:00
Paul Holden
d79e489c3f Rename setGPR_s32_lo to setRegS32Lo. 2023-09-23 22:17:54 +01:00
Paul Holden
588cf43e82 Rename setGPR_s32_signed to setRegS32Extend. 2023-09-23 22:17:54 +01:00
Paul Holden
ca4c5c98d6 Rename setGPR_s32_unsigned to setRegU32Extend. 2023-09-23 22:17:54 +01:00
Paul Holden
0c129a13c2 Tidy 2023-09-23 22:17:54 +01:00
Paul Holden
52a28469b2 Rename genSrcRegHi to genSrcRegS32Hi. 2023-09-23 22:17:54 +01:00
Paul Holden
05cd851892 Rename genSrcRegLo to genSrcRegS32Lo. 2023-09-23 22:17:54 +01:00
Paul Holden
8ed22f39d8 Rename getGPR_s32_signed to getRegS32Lo. 2023-09-23 22:17:54 +01:00
Paul Holden
288c85f421 Rename getGPR_s32_unsigned to getRegU32Lo. 2023-09-23 22:17:54 +01:00
Paul Holden
16bcc85755 Log bad pagemasks rather than halting. 2023-09-23 22:17:54 +01:00
Paul Holden
592f4275f5 Rename getGPR_s32_hi_signed to getRegS32Hi. 2023-09-23 22:17:54 +01:00
Paul Holden
d9353b8c3b Rename getGPR_s32_hi_unsigned to getRegU32Hi. 2023-09-23 22:17:54 +01:00
Paul Holden
7909b9d78d Rename setGPR_s64_bigint to setRegU64. 2023-09-23 22:17:54 +01:00
Paul Holden
92ec14244e Tidy 2023-09-23 22:17:54 +01:00
Paul Holden
9809ec3797 Rename getGPR_u64_bigint to getRegU64. 2023-09-23 22:17:54 +01:00
Paul Holden
11f7311599 Rename getGPR_s64_bigint to getRegS64. 2023-09-23 22:17:54 +01:00
Paul Holden
1818713416 Add BigUint64Array so 64 bit values can be read directly. 2023-09-23 22:17:54 +01:00
Paul Holden
1707567f1d Interleave gprLo/Hi into a single array. 2023-09-23 22:17:54 +01:00
Paul Holden
6d56faf6eb Use register accessors. 2023-09-23 22:17:54 +01:00
Paul Holden
e4a7173857 Clean up the last few uses of gprLo_signed. 2023-09-23 22:17:54 +01:00