Commit graph

39421 commits

Author SHA1 Message Date
JosJuice
9d04fd1ccb Translation resources sync with Transifex 2021-01-31 23:31:16 +01:00
Markus Wick
27b7e5891d
Merge pull request #9373 from MerryMage/arm64-rlwimix
JitArm64_Integer: Add optimizations for rlwimix
2021-01-31 16:50:26 +01:00
MerryMage
1ab7657120 MovI2R: Do not exhaustively test 2021-01-31 13:17:31 +00:00
MerryMage
fe9207bb56 UnitTests: Add MOVI2R test 2021-01-31 13:17:19 +00:00
MerryMage
f65c1df094 Random: Add seeded PRNG 2021-01-31 13:16:45 +00:00
MerryMage
a0b8956f22 JitArm64_Integer: Add optimizations for rlwimix
* Check for case when source field is at LSB
* Use BFXIL if possible
* Avoid ROR where possible
2021-01-31 12:05:43 +00:00
MerryMage
8aa2013a2d Arm64Emitter: Add additional assertions to BFI/UBFIZ 2021-01-31 12:04:57 +00:00
MerryMage
75d92ad628 Arm64Emitter: Prefer BFM/UBFM to EncodeBitfieldMOVInst 2021-01-31 12:04:57 +00:00
MerryMage
be6aec9932 Arm64Emitter: Add BFXIL 2021-01-31 12:04:57 +00:00
Sepalani
82bb5d9915 NetworkCaptureLogger: PCAP support added
Log TCP/UDP read/write with fake packet.
2021-01-30 19:35:09 +04:00
cbartondock
83c127784b Working Game IDs for Elf/Dol files 2021-01-30 09:51:37 -05:00
JosJuice
dd8e504c80 JitArm64: Use STP for pc/npc 2021-01-30 11:56:25 +01:00
Markus Wick
b22073ef59
Merge pull request #9484 from JosJuice/jitarm64-ps-stp
JitArm64: Use STP for (parts of) ppcState.ps
2021-01-30 08:51:56 +01:00
JosJuice
91b55824f9 JitArm64: Use STP for (parts of) ppcState.ps
The savestate incompatibility problem mentioned in a comment
was solved by d266be5.
2021-01-30 01:01:01 +01:00
JosJuice
2d9ea42df2 Arm64Emitter: Add asserts for LDP/STP imm out of range 2021-01-30 00:25:33 +01:00
Léo Lam
3e4769f720
Merge pull request #9483 from Leseratte10/patch-2
Fix clientcakey typo in Readme.md
2021-01-29 23:10:26 +01:00
Florian Bach
3e54d155ac
Fix typo in Readme.md 2021-01-29 22:30:24 +01:00
John Pansera
b3715431a2 Enable EFB access from CPU for Ultimate I Spy 2021-01-28 19:10:19 -05:00
Sintendo
ecbf6fff74 Jit64: boolX - Mark locals as const 2021-01-28 23:52:21 +01:00
Sintendo
2d3c7fca8d Jit64: boolX - Optimize or for size
OR allows for a more compact representation for constants that can be
represented by a signed 8-bit integer, while MOV does not. By letting
MOV handle the larger constants we can occasionally save a byte.

Before:
45 8B F5             mov         r14d,r13d
41 81 CE 00 80 01 00 or          r14d,18000h

After:
41 BE 00 80 01 00    mov         r14d,18000h
45 0B F5             or          r14d,r13d
2021-01-28 23:16:48 +01:00
Sintendo
62f80a008c Jit64: boolX - Special case or with 0
Bitwise or with zero is just a fancy MOV, really.

- Example 1
Before:
41 BA 00 00 00 00    mov         r10d,0
45 0B D1             or          r10d,r9d

After:
45 8B D1             mov         r10d,r9d

- Example 2
Before:
41 83 CA 00          or          r10d,0

After:
Nothing!
2021-01-28 23:16:48 +01:00
Sintendo
356172bc98 Jit64: boolX - Optimize and for size
AND allows for a more compact representation for constants that can be
represented by a signed 8-bit integer, while MOV does not. By letting
MOV handle the larger constants we can occasionally save a byte.

Before:
41 8B FE             mov         edi,r14d
81 E7 FF FE FF FF    and         edi,0FFFFFEFFh

After:
BF FF FE FF FF       mov         edi,0FFFFFEFFh
41 23 FE             and         edi,r14d
2021-01-28 23:16:48 +01:00
Sintendo
b760a56a9a Jit64: boolX - Special case and with 0xFFFFFFFF
Bitwise and with all ones doesn't accomplish much.

Before:
41 8B F5             mov         esi,r13d
83 E6 FF             and         esi,0FFFFFFFFh

After:
41 8B F5             mov         esi,r13d
2021-01-28 23:16:48 +01:00
Sintendo
34dbfd92db Jit64: boolX - Special case and with 0
Bitwise and with zero is always zero.

Before:
45 8B F8             mov         r15d,r8d
41 83 E7 00          and         r15d,0

After:
Nothing, register a is set to constant 0.
2021-01-28 23:16:48 +01:00
Sintendo
131163d33b Jit64: boolX - Remove andcx immediate checks
All cases involving immediate values are now guaranteed to be handled
elsewhere, making these checks redundant.
2021-01-28 23:16:48 +01:00
Sintendo
845d7cd51f Jit64: boolX - Optimize xor for size
XOR allows for a more compact representation for constants that can be
represented by a signed 8-bit integer, while MOV does not. By letting
MOV handle the larger constants we can occasionally save a byte.

Before:
44 89 F7             mov         edi,r14d
81 F7 A0 52 57 01    xor         edi,15752A0h

After:
BF A0 52 57 01       mov         edi,15752A0h
41 33 FE             xor         edi,r14d
2021-01-28 23:16:48 +01:00
Sintendo
c3775588df Jit64: boolX - Special case xor with 0xFFFFFFFF
Ever so slightly shorter.

When the condition register needs updating, we still prefer xor over
not+test.

Before:
45 8B F5             mov         r14d,r13d
41 83 F6 FF          xor         r14d,0FFFFFFFFh

After:
45 8B F5             mov         r14d,r13d
41 F7 D6             not         r14d
2021-01-28 23:16:31 +01:00
Sintendo
c9011e9d2c Jit64: boolX - Special case xor with 0
No computation necessary, but we may need a MOV.

Before:
8B FE                mov         edi,esi
83 F7 00             xor         edi,0

After:
8B FE                mov         edi,esi
2021-01-28 23:09:14 +01:00
Sintendo
3677a5035c Jit64: boolX - Precompute complement for eqvx
In the case of eqvx, the final complement can always be baked directly
into the immediate value.

Before:
45 8B EF             mov         r13d,r15d
41 F7 D5             not         r13d
41 83 F5 04          xor         r13d,4

After:
45 8B EF             mov         r13d,r15d
41 83 F5 FB          xor         r13d,0FFFFFFFBh
2021-01-28 23:06:00 +01:00
Sintendo
26f70657bc Jit64: boolX - Precompute complement of b
PowerPC instructions andcx and orcx complement the value of register b
before performing their respective bitwise operation. If this register
happens to contain a known value, we can precompute the complement,
allowing us to generate simpler code.

- andcx
Before:
BF 00 01 00 00       mov         edi,100h
F7 D7                not         edi
41 23 FE             and         edi,r14d

After:
41 8B FE             mov         edi,r14d
81 E7 FF FE FF FF    and         edi,0FFFFFEFFh

- orc
Before:
41 BE 04 00 00 00    mov         r14d,4
41 F7 D6             not         r14d
45 0B F5             or          r14d,r13d

After:
45 8B F5             mov         r14d,r13d
41 83 CE FB          or          r14d,0FFFFFFFBh
2021-01-28 23:04:35 +01:00
Léo Lam
906fbf6c8e
Merge pull request #5978 from sepalani/net-log
NetworkCaptureLogger: Move SSL logging
2021-01-28 22:03:40 +01:00
Admiral H. Curtiss
dc2d234284 GCMemcardUtils: Fix typo in comment. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
e47eb16641 GCMemcardManager: Detect attempt to import multiple save files with the same internal name. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
74b56a8c7f GCMemcardManager: Add filename column. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
9acbe1aced GCMemcardManager: Make columns sortable. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
42f4ee629b GCMemcardManager: Make columns resizable by the user. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
7cf991bd8a GCMemcardManager: Small cleanups. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
e00e6e1a8c GCMemcardManager: Replace remaining panic alert with ModalMessageBox. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
daa76183ed GCMemcard: Let ImportFile() take a Savefile instead of a direntry and a vector of blocks. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
c95f3cbb61 GCMemcard: Remove obsolete methods. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
645cb2f3d1 GCMemcardDirectory: Rewrite migration logic without ExportGci(). 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
e8b99d3afd GCMemcardManager: Rewrite file deleting logic to provide a better user experience. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
6e96f95432 GCMemcardManager: Rewrite file copying logic to provide a better user experience. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
08dccb8727 GCMemcardManager: Rewrite file importing logic to provide a better user experience. 2021-01-28 22:01:33 +01:00
Admiral H. Curtiss
3286d2df3d Common/VariantUtil: Add 'overloaded' helper struct for use with std::variant. 2021-01-28 22:01:32 +01:00
Admiral H. Curtiss
87ae7ccd75 GCMemcardManager: Rewrite file exporting logic to provide a better user experience. 2021-01-28 22:01:32 +01:00
Admiral H. Curtiss
7bb7aa16c2 GCMemcardManager: Relayout file table for a more compact design. 2021-01-28 22:01:32 +01:00
Admiral H. Curtiss
ec4fc7171f GCMemcardUtils: Implement GenerateFilename() as a cleaner variant of GCMemcard::GCI_FileName(). 2021-01-28 22:01:30 +01:00
Admiral H. Curtiss
3e7f537a9d GCMemcard: Implement ExportFile() to get a file on a card with a single method call. 2021-01-28 22:00:33 +01:00
Admiral H. Curtiss
9b14cc8ea2 GCMemcard: Implement utility functions to read saves from and write saves to files, without involving a memory card. 2021-01-28 22:00:28 +01:00