Fiora
3be31ca2c8
JIT: remove "accurate fcmp" option
...
This doesn't seem to be necessary anymore now that FPRF is implemented in the
JIT. Technically, this isn't the same as before, since the JIT doesn't
implement the fcmp exception semantics, but as far as testing has shown, this
doesn't seem necessary.
This should make games that use FPRF a few percent faster (e.g. F-Zero GX)
since fcmpx no longer has to be fallbacked.
2014-11-25 09:54:40 -08:00
Lioncash
aa92797f93
Merge pull request #1582 from Stevoisiak/newImprovedFormatting
...
More formatting and consistency fixes
2014-11-25 12:41:32 -05:00
James Cowgill
a93f86330e
Port dolphin to SFML 2.1
2014-11-25 16:44:38 +00:00
comex
e631f68c1b
Switch from deprecated Carbon idle tickling to Cocoa power assertions.
...
Also, this avoids keeping the system awake if a game is not being
played.
Frankly, I don't know what the point of precisely tracking these things
is, but that's how the API works. Feel free to add analogous
functionality on other platforms.
2014-11-25 00:27:13 -05:00
Gabriel Corona
5b9aeaa686
Use CLI argument for Linux perf JIT support
2014-11-24 23:30:29 +01:00
Gabriel Corona
9722ae2a5d
Move the JIT registration logic in its own file
...
Move the JITed function/basic-block registration logic out of the CPU
subsystem in order to add JIT registration to JITed DSP and
Video/VertexLoader code.
This necessary in order to add /tmp/perf-$pid.map support to other
JITed code as they need to write to the same file.
2014-11-24 23:18:18 +01:00
Gabriel Corona
cdce5ace25
Add Linux perf JIT support (/tmp/perf-$pid.map)
...
'perf' is the standard builtin tool for performance analysis on recent
Linux kernel. Its source code is shipped within the kernel repository.
'perf' has basic support for JIT. For each process, it can read a file
named /tmp/perf-$PID.map. This file contains mapping from address
range to function name in the format:
41187e2a 1a EmuCode_804a33fc
with the following entries:
1. beginning of the range (hexadecimal);
2. size of the range (hexadecimal);
3. name of the function.
We supply the PowerPC address of the basic block as function name.
Usage:
DOLPHIN_PERF_DIR=/tmp dolphin-emu &
perf record -F99 -p $(pgrep dolphin-emu) --call-graph dwarf
perf script | stackcollapse-perf.pl | grep EmuCode__ | flamegraph.pl > profile.svg
Issue: perf does not have support for region invalidation. It reads
the file in postprocessing. It probably does not work very well if a
JIT region is reused for another basic block: wrong results should be
expected in this case. Currently, nothing is done to prevent this.
2014-11-24 23:18:18 +01:00
Stevoisiak
6da394a4d0
More formatting and consistency fixes
2014-11-24 17:16:59 -05:00
Rohit Nirmal
4d931c16ad
Silence a few "zero as null pointer" warnings.
2014-11-24 12:36:46 -06:00
Jules Blok
6e62dd3415
Add stereoscopy hotkeys.
2014-11-23 14:30:12 +01:00
Ryan Houdek
e84999386b
Merge pull request #1579 from Sonicadvance1/armv7-fastmem-rewrite
...
Rewrites ARMv7 fastmem entirely.
2014-11-21 14:54:05 -06:00
Ryan Houdek
bfbbddd76f
Rewrites ARMv7 fastmem entirely.
...
This is a fairly lengthy change that can't be separated out to multiple commits well due to the nature of fastmem being a bit of an intertangled mess.
This makes my life easier for maintaining fastmem on ARMv7 because I now don't have to do any terrible instruction counting and NOP padding. Really
makes my brain stop hurting when working with it.
This enables fastmem for a whole bunch of new instructions, which basically means that all instructions now have fastmem working for them. This also
rewrites the floating point loadstores again because the last implementation was pretty crap when it comes to performance, even if they were the
cleanest implementation from my point of view.
This initially started with me rewriting the fastmem routines to work just like the previous/current implementation of floating loadstores. That was
when I noticed that the performance tanked and decided to rewrite all of it.
This also happens to implement gatherpipe optimizations alongside constant address optimization.
Overall this comment brings a fairly large speedboost when using fastmem.
2014-11-21 05:21:57 -06:00
Matthew Parlane
1f7dbbef07
Merge pull request #1567 from comex/remove-android-ndk-hack
...
Remove Android <ucontext.h> hack.
2014-11-21 19:56:28 +13:00
Matthew Parlane
21e4e035cc
Merge pull request #1281 from Stevoisiak/RenameEuRGB60
...
Renamed EuRGB to PAL60
2014-11-21 19:09:42 +13:00
skidau
15e7a8c247
Merge pull request #1573 from kamiyo/fix-wiimote-speaker
...
Fix wiimotespeaker emulation affecting real wiimote
2014-11-21 13:13:21 +11:00
skidau
2968cb138c
Fixed the fast disc speed option (immediately service the interrupt instead of going through the scheduler).
2014-11-20 18:23:05 +11:00
skidau
ba1a8d2ef3
Merge pull request #1517 from JosJuice/cav-disc-drive
...
DVDInterface: Timing accuracy improvements
2014-11-20 13:30:02 +11:00
Lioncash
ccebac8bcc
Merge pull request #1456 from Stevoisiak/AddCountries
...
Additional Country Filters
2014-11-19 19:21:59 -05:00
Lioncash
19dabee326
Merge pull request #1568 from rohit-n/android-warnings
...
Android: Silence a few warnings.
2014-11-19 12:17:13 -05:00
kamiyo
e76e3b7390
Added condition so that function to mix wiimote-speaker data into the master mixer is called only if wiimote is emulated.
2014-11-19 01:28:11 -05:00
skidau
f5aed3d6c6
Merge pull request #1548 from skidau/region-australia
...
Added Australia to the list of valid PAL regions
2014-11-19 16:59:08 +11:00
Steven Vascellaro
695bbac36a
Removed SDK flag
...
SDK is not an official Nintendo country code, and is not actually used
by any official software.
2014-11-18 19:44:17 -05:00
Stevoisiak
f1a26ff654
Various country flag improvements
...
* Added country flags for games from Netherlands and Spain
* Added separate category for Region Free games (Uses European flag as placeholder)
* Added missing country filter options in "show regions" menu
* Rearranged country filters for readability
* Incremented CACHE_REVISION
Also fixed various country filters not showing up as options in the "Show regions" menu.
2014-11-18 19:44:16 -05:00
Stevoisiak
e7a82c4ded
Renamed EuRGB60 to PAL60
2014-11-18 16:51:21 -05:00
skidau
2affe25191
Merge pull request #1559 from Sonicadvance1/armv7-minor-optimizations
...
ARMv7 block profiling + minor optimization
2014-11-18 12:51:03 +11:00
Dolphin Bot
dced84d440
Merge pull request #1564 from RachelBryk/freelook
...
Make freelook hotkeys configurable.
2014-11-17 20:44:48 +01:00
Rohit Nirmal
8ec791c4f3
Android: Silence a few warnings.
2014-11-17 19:21:38 +00:00
Lioncash
f78600ec9e
Merge pull request #1562 from lioncash/host
...
Host: Kill off GetRenderWindowSize
2014-11-17 13:51:40 -05:00
Lioncash
b94dbca160
Host: Kill off GetRenderWindowSize
2014-11-17 13:44:49 -05:00
comex
c5a25d56e0
Remove Android <ucontext.h> hack.
...
There was a longstanding hack that defined ucontext_t manually to work
around the lack of this header on the Android NDK. However, it looks
like newer NDK versions now have it like good little POSIX boys, and my
recent header reshuffle broke the build on those versions, presumably
because the real and fake definitions of ucontext_t end up included in
the same file where they weren't under the old organization.
Rather than try to revert the conflict, this commit just removes the
hack. The buildbot's NDK will need to be upgraded.
2014-11-17 13:29:04 -05:00
Ryan Houdek
f9208dcc13
Fixes ARMv7 FP loadstores using fastmem when not enabled.
2014-11-16 21:12:11 -06:00
Rachel Bryk
ea11c446c2
Make freelook hotkeys configurable.
2014-11-16 22:00:56 -05:00
JosJuice
091db36162
DVDInterface: Add a delay for commands other than regular reads
...
Behavior inspired by WII_IPC_HLE_Device_DI.
2014-11-16 21:29:40 +01:00
JosJuice
c6e695b245
DVDInterface: CAV disc drive
...
Changes the read speed of GC discs from 3 MiB/s to 2-3.3 MiB/s,
depending on the location of the data. I also attempted to change the
speeds for Wii discs, but it has very little effect right now because
Wii games use IPC_HLE instead of DVDInterface. It does affect Wii
homebrew that reads Wii discs, though.
2014-11-16 20:57:26 +01:00
comex
aa2fc1f66b
Merge pull request #1449 from comex/memtools-merge
...
Reorganize faulting stuff. Differentiate between arch- and OS-specific defines.
2014-11-16 13:46:33 -05:00
Ryan Houdek
30e1749d00
Implements block time profiling on ARMv7.
...
This was interesting implementing.
Our generic QueryPerformanceCounter function on ARMv7 was so slow that profiling a block was impossible.
I waited about five minutes and I couldn't even get a single frame to output.
This instead uses ARMv7's PMU to get cycle counts, which are a relatively minor performance drop in my testing.
One disadvantage of this method is that the kernel can lock us out of using these co-processor registers, but it seems to work on my Jetson board.
Another disadvantage is that we aren't having block times in "real" time but cycles instead, not too big of a deal.
This also removes instruction run counts from profiling because that's just annoying and we don't expose an interface for even getting those results
from our UI.
2014-11-16 09:29:27 +00:00
Ryan Houdek
6683b194ff
ARMv7 register cache optimizations.
...
Enable support for not loading a destination register on FPR cache.
Dump registers if they won't be used later in the block. Stolen from Fiora.
2014-11-16 09:29:22 +00:00
Lioncash
3eab75bc9c
Core: Join some variable declarations and assignments
2014-11-15 20:21:35 -05:00
Ryan Houdek
181f16c5f0
Reimplements fastmem for ARMv7 floating point loadstores.
...
This implements a new system for fastmem backpatching on ARMv7 that is less of a mindfsck to deal with.
This also implements stfs under the default loadstore path as well, not sure why it was by itself in the first place.
I'll be moving the rest of the loadstore methods over to this new way in a few days.
2014-11-15 21:17:50 +00:00
skidau
99141a2698
Added Australia to the list of valid PAL regions
2014-11-15 16:16:37 +11:00
comex
0cf8ab175b
Fix UCodes.cpp to use UTF-8 encoding.
2014-11-14 11:53:56 -05:00
Ryan Houdek
b0becf7af8
Enables the ARMv7 FPR cache.
...
The problem instructions with the FPR are disabled in the previous commit. This can now be reenabled for fairly large performance gains.
2014-11-14 15:14:10 +00:00
Ryan Houdek
69c3e6516c
Disables NEON optimized instructions.
...
These are causing issues in games. In particular you get pink on the screen in Animal Crossing.
Disable until fully investigated.
This also disables fastmem on floating point loadstore instructions which are horribly broken and won't actually backpatch when an invalid read/write
is encountered.
2014-11-14 15:13:13 +00:00
Stevoisiak
b25e1a2eb4
Various formatting and consistency fixes
2014-11-13 22:42:18 -05:00
skidau
b1f8974db8
Merge pull request #1527 from FioraAeterna/mftbfix
...
JIT: revert accuracy improvement to mftb
2014-11-13 12:11:13 +11:00
skidau
1095d3fc33
Merge pull request #1523 from FioraAeterna/fifo64
...
JIT: add 64-bit write support to FIFO functions and fix immediates
2014-11-12 12:12:16 +11:00
skidau
0cb9dcb5fc
Merge pull request #1520 from JosJuice/dvdinterface-init
...
DVDInterface: Initialize variables
2014-11-12 12:11:03 +11:00
Fiora
4b105ed0e4
JIT: revert accuracy improvement to mftb
...
Fixes a few games (e.g. Karaoke Revolution Party) for reasons explained in the
comments.
2014-11-10 20:31:07 -08:00
Fiora
6603f98d04
JIT: add 64-bit write support to FIFO functions
...
Also fix 64-bit values passed to CallAC and otherwise correct immediate
handling in FIFO writes.
Fixes 007 Nightfire.
2014-11-09 21:24:30 -08:00
JosJuice
519d851bf8
DVDInterface: Initialize variables
2014-11-09 11:54:04 +01:00
skidau
c34c231df1
Merge pull request #1508 from skidau/emu-wiimote-speaker-sample-rate-zero
...
Ignore the emulated wiimotes speaker data if the sample rate is set at 0hz
2014-11-09 17:58:34 +11:00
skidau
0f615c754a
Packed the emu wiimote structs, removed swap16 and removed the speaker amp as the amp was distorting the audio.
2014-11-08 11:33:20 +11:00
Lioncash
f9fe2d6487
Movie: Get rid of unnecessary explicit memcpys
2014-11-06 22:17:44 -05:00
Lioncash
f6b4b4dbba
Merge pull request #1497 from lioncash/host
...
Host: Kill off Host_SysMessage
2014-11-06 20:41:53 -05:00
skidau
c36e7b9c23
Merge pull request #1494 from lioncash/statics
...
PPCCache: Make PLRU lookup tables static
2014-11-07 12:33:19 +11:00
Lioncash
a5d304eb16
Merge pull request #1495 from lioncash/unused
...
Interpreter: Remove dead patches() function
2014-11-06 20:31:01 -05:00
comex
ba48541c47
Merge pull request #1504 from comex/gpu-determinism-uninit-fix
...
Fix uninitialized GPU determinism mode for NAND titles or whatever.
2014-11-06 19:49:31 -05:00
skidau
021cdac24c
Ignore the emulated wiimotes speaker data if the sample rate is set at 0hz.
...
Fixes issue 7806.
2014-11-06 22:51:59 +11:00
Fiora
b8d88a41e0
JIT: remove accidentally left-in debug code
2014-11-05 17:44:13 -08:00
comex
9d23a366c8
Fix uninitialized GPU determinism mode for NAND titles or whatever.
...
m_strGPUDeterminismMode can be set by either the global or game
settings. Either way, it's then supposed to be parsed into an enum,
m_GPUDeterminismMode. However, the code to do this was placed right
after checking for game settings, which doesn't happen at all if there
isn't a valid title ID. Move it outside the if block.
2014-11-05 19:36:12 -05:00
Lioncash
606efbce10
PPCCache: Make PLRU lookup tables static
2014-11-05 19:35:30 -05:00
Rohit Nirmal
1beb047959
PowerPC: Remove unused variable.
2014-11-05 11:47:44 -05:00
Lioncash
884ec2ed13
Host: Kill off Host_SysMessage
...
Equivalent facilities already exist.
2014-11-05 02:30:48 -05:00
skidau
baaccfd2f0
Take into account the want_determinism option and do not create a DSP thread if determinism is needed.
2014-11-05 17:42:42 +11:00
skidau
5c862adfa7
Disabled the DSP thread if netplay or a movie has been started
2014-11-05 17:42:42 +11:00
skidau
2140ac15e4
Removed the DSP LLE on separate thread option.
...
The DSP thread will be enabled if the game is an AX ucode game and if the host has more than two cores (not including hyperthreading).
2014-11-05 17:42:42 +11:00
Lioncash
a105a9a557
Interpreter: Remove dead patches() function
2014-11-04 20:44:57 -05:00
skidau
0515ab852e
Merge pull request #1230 from FioraAeterna/constaddr
...
JIT: improve handling of stores with a known address
2014-11-05 12:40:38 +11:00
Fiora
b81686b582
JIT: fix register preloading
...
Partially broken by typoes in the bitset patch.
2014-11-04 04:50:05 -08:00
Fiora
f8880c0284
JIT: fix typo in optimization patch
...
Whoops... made us flush everything on every branch.
2014-11-04 02:04:30 -08:00
comex
9cba787871
Merge pull request #1408 from randomstuff/perf
...
Profiling: measure time on non-Windows/POSIX using clock_gettime
2014-11-03 22:36:32 -05:00
Lioncash
30f97723db
Core: Fix potentially uninitialized variable warnings
2014-11-03 22:21:10 -05:00
comex
42d41a456e
Merge pull request #1489 from FioraAeterna/revertopt
...
JIT: revert cmpXX optimization
2014-11-03 21:07:11 -05:00
Fiora
768273f59b
JIT: revert cmpXX optimization
...
It seems like this wasn't correct in 100% of cases.
2014-11-03 17:50:20 -08:00
skidau
027791685a
Merge pull request #1483 from comex/on-demand-exi-interrupts
...
Make EXI use CoreTiming events like everything else instead of having its own special check.
2014-11-04 12:31:12 +11:00
skidau
dc63f8f461
Merge pull request #1471 from RachelBryk/reset-record
...
Allow hard resets to be recorded in movies.
2014-11-04 12:30:48 +11:00
Fiora
ce71c3cd4e
JIT: fix valid_block marking
...
This caused invalidations that only affected the last portion of a JIT block
to fail, breaking Wii64's block linking. It might affect a bunch of other
games too; I haven't tested.
2014-11-03 16:23:44 -08:00
Fiora
fc63c7ecae
JIT: genericize immediate address handling, support in float stores too
2014-11-03 01:31:39 -08:00
Rachel Bryk
f9495a484c
Allow hard resets to be recorded in movies.
2014-11-03 00:30:29 -05:00
comex
9f683f353b
Make EXI use CoreTiming events like everything else instead of having its own slow special check.
...
Microphone is probably wrong/mistimed because it doesn't take into
account cycles late, but that's not a new issue here.
2014-11-03 00:28:46 -05:00
Fiora
e729fc4a28
JIT: fix dumb mistake in crclr optimization patch
2014-11-02 21:03:11 -08:00
Ryan Houdek
204598a082
Merge pull request #1350 from FioraAeterna/integeropts
...
Various smallish JIT optimizations
2014-11-02 20:13:20 -06:00
Rachel Bryk
2eac08aa30
Add nunchuk support to tas input.
2014-11-02 20:52:13 -05:00
Jasper St. Pierre
1e93b0db19
MemArena: Rename GrabLowMemSpace to GrabSHMSegment
...
This code originally tried to map the "low space" for the Gamecube's
memory layout, but since has expanded to mapping all of the easily
mappable memory on the system. Change the name to "GrabSHMSegment" to
indicate that we're looking for a shared memory segment we can map into
our process space.
2014-11-02 16:51:27 -08:00
Jasper St. Pierre
6813473367
MemArena: Remove the low mappings for our pointers
...
These are effectively unused, since the memmap already maps them in one
place. For 32-bit, they might have some slight advantage, but we already
special-case the regular "high-mem" pointer for 32-bit, so just use the
one we already have...
2014-11-02 16:50:36 -08:00
Jasper St. Pierre
8858dc7764
Memmap: Remove vestigals of the memory-mapped EFB
...
It hasn't been memory-mapped for a long time.
2014-11-02 16:34:17 -08:00
Jasper St. Pierre
dd0aadac97
MemoryWindow: Use p_pFakeVMEM, not the virtual mirror
...
They point to the same contents, so there's no reason to use the
mirror. This lets us make all the mirrors static.
2014-11-02 16:34:17 -08:00
Jasper St. Pierre
5a2340fead
Memmap: Make the constants aligned to 8 nibble characters
...
Otherwise, the constants can be a bit confusing to read.
2014-11-02 16:34:17 -08:00
Jasper St. Pierre
6317721c95
MemmapFunctions: Remove unused effective_address argument
2014-11-02 16:34:17 -08:00
Jasper St. Pierre
81939e808f
Memmap: Clean up indentation and whitespace a bit
2014-11-02 16:34:17 -08:00
Gabriel Corona
641e820257
Profiling: measure time on POSIX systems using clock_gettime
2014-11-03 00:07:12 +01:00
Ryan Houdek
1c41acaddd
Merge pull request #1264 from Stevoisiak/GCM-to-ISO
...
Gcm to iso
2014-11-02 11:29:41 -06:00
Ryan Houdek
6e43562496
Merge pull request #1468 from Tilka/cleanup
...
Small cleanup
2014-11-02 11:02:35 -06:00
Ryan Houdek
cd64253cb4
Merge pull request #1459 from Buddybenj/nunchuk
...
Nunchuck -> Nunchuk Fixes
2014-11-02 09:44:43 -06:00
Ryan Houdek
2b69d76e88
Merge pull request #1448 from skidau/mmio-read32
...
Fixed the endianess of the 32bit MMIO reads.
2014-11-02 09:36:43 -06:00
Ryan Houdek
0d70880d89
Merge pull request #1466 from Sonicadvance1/ARMv7-and-optimization
...
Optimizes ARMv7 andi{s,}_rc implementations.
2014-11-02 09:33:37 -06:00
Ryan Houdek
824bad458c
Merge pull request #1454 from lioncash/interp
...
Interpreter: Remove a redundant macro
2014-11-02 09:33:19 -06:00
Ryan Houdek
83fcf710e8
Merge pull request #1462 from FioraAeterna/fixmftb
...
JIT: more mftb fixes
2014-11-02 09:31:25 -06:00
Scott Mansell
52d42bf330
Clean up debug string functions in OS_HLE.
...
* Use GetString instead of GetPointer.
* Use C++ strings instead of char* pointer math.
2014-11-02 21:39:37 +13:00
skidau
b241b6eadd
Merge pull request #1452 from lioncash/morestatic
...
GCPadEmu/WiimoteEmu: Make some arrays static
2014-11-02 14:15:13 +11:00
comex
5d18c66c99
Merge pull request #1464 from phire/usb_keyboard
...
Remove GetPointer from Wii USB Keyboard.
2014-11-01 22:35:37 -04:00
Tillmann Karras
f4fed0dea0
JitAsm: remove unused code pointers
2014-11-02 02:00:47 +01:00
Buddybenj
a4e48ab1a1
Nunchuck -> Nunchuk
...
Change another can not to cannot
Nunchuck -> Nunchuk
Nunchuck -> Nunchuk
Nunchuck -> Nunchuk
Nunchuck -> Nunchuk
Nunchuck -> Nunchuk
Nunchuck -> Nunchuk
Nunchuck -> Nunchuk
2014-11-01 17:42:13 -05:00
Lioncash
c83dc2a3e7
Merge pull request #1458 from phire/fix1450Tabs
...
Fix Indentation in PR 1450.
2014-11-01 14:39:31 -04:00
Ryan Houdek
86ca63658b
Optimizes ARMv7 andi{s,}_rc implementations.
...
Cuts down from a 3 instruction max implementation down to 1 instruction if the immediate can fit in to the instruction encoding.
2014-11-01 13:06:52 +00:00
Scott Mansell
4ba794d4c9
Remove GetPointer from Wii USB Keyboard.
2014-11-01 23:59:19 +13:00
Fiora
7deaf00c44
JIT: more mftb fixes
...
A very subtle difference in how I calculated the timebase value seems
to have broken Karaoke Revolution; this seems to fix it. Also be a bit more
paranoid in conditions for mftb merging.
2014-11-01 03:15:25 -07:00
Scott Mansell
47d8fc3aed
Wii Net SSL: Use std::string for hostname.
...
Previous code used a fixed length char buffer, which had
a few ugly edge cases.
2014-11-01 16:39:37 +13:00
Scott Mansell
7b6adf8b04
Fix Indentation in PR 1450.
...
Would have been nice if this was caught a few min earlier.
2014-11-01 15:45:44 +13:00
skidau
dffbcf275b
Merge pull request #1441 from lioncash/fwd
...
BootManager: Get rid of unnecessary forward declaration
2014-11-01 12:25:55 +11:00
skidau
8f9904f703
Merge pull request #1450 from phire/fix-smg2
...
Fix DSPLLE for games which DMA data from MEM2 to the DSP.
2014-11-01 12:25:38 +11:00
skidau
439a8605fa
Merge pull request #1417 from fkane/threadsafe-interrupts
...
Defer processing of expansion interface interrupts (fixes audio in Super Mario Sunshine on lower-end systems)
2014-11-01 12:24:46 +11:00
comex
af1a08fbf3
Merge pull request #1453 from lioncash/str
...
GCMemcardDirectory: Pass std::strings by reference.
2014-10-31 16:07:46 -04:00
Lioncash
475bb40364
Interpreter: Remove a redundant macro
2014-10-31 10:55:25 -04:00
Lioncash
c23131d046
GCMemcardDirectory: Pass std::strings by reference.
2014-10-31 10:17:24 -04:00
Lioncash
5a321d31dd
GCPadEmu/WiimoteEmu: Make some arrays static
2014-10-31 09:51:51 -04:00
Lioncash
72c958810c
SI_Device: Make GetDeviceNumber and GetDeviceType const.
2014-10-31 09:30:56 -04:00
Scott Mansell
9cb80875e6
Fix DSPLLE for games which DMA data from MEM2 to the DSP.
...
Fixes issue 7812.
2014-10-31 23:17:58 +13:00
comex
2ecd849eab
Reorganize faulting stuff. Differentiate between arch- and OS-specific defines.
...
- Get rid of ArmMemTools.cpp and rename x64MemTools.cpp to MemTools.cpp.
ArmMemTools was almost identical to the POSIX part of x64MemTools, and
the two differences, (a) lack of sigaltstack, which I added to the
latter recently, and (b) use of r10 to determine the fault address
instead of info->si_addr (meaning it only works for specifically
formatted JIT code), I don't think are necessary. (Plus Android, see
below.)
- Rename Core/PowerPC/JitCommon/JitBackpatch.h to Core/MachineContext.h.
It doesn't contain anything JIT-specific anymore, and e.g. locking
will want to use faulting support regardless of whether any JIT is in
use.
- Get rid of different definitions of SContext for different
architectures under __linux__, since this is POSIX. The exception is
of course Android being shitty; I moved the workaround definition from
ArmMemTools.cpp to here.
- Get rid of #ifdefs around EMM::InstallExceptionHandler and just
provide an empty implementation for unsupported systems (i.e.
_M_GENERIC really). Added const bool g_exception_handlers_supported
for future use; currently exception handlers are only used by the JIT,
whose use implies non-M_GENERIC, but locking will change that.
- Remove an unnecessary typedef.
2014-10-31 00:14:06 -04:00
skidau
7d5c509c07
Fixed the endianess of the 32bit MMIO reads.
2014-10-31 13:19:52 +11:00
skidau
e0c347527b
Merge pull request #1446 from RachelBryk/accel2
...
Fix wiimote accel.
2014-10-31 13:04:37 +11:00
Rachel Bryk
b08d993b55
Fix wiimote accel.
2014-10-30 21:28:02 -04:00
comex
de6dd847e7
Merge pull request #1445 from lioncash/array
...
DSPAnalyzer: Use a std::array for the code flags
2014-10-30 17:43:00 -04:00
Lioncash
b09ce72605
DSPAnalyzer: Use a std::array for the code flags
2014-10-30 12:45:27 -04:00
Lioncash
319f97bb56
BootManager: Get rid of unnecessary forward declaration
2014-10-29 22:25:16 -04:00
Scott Mansell
b4e0328508
And clean up this GetPointer() while I'm here.
...
It will probally be replaced later.
2014-10-29 23:59:32 +13:00
Scott Mansell
3e47480470
Remove dumb getPointers that actually want the whole memory block.
...
The whole memory block is accessable globally anyway. Much
cleaner!
2014-10-29 23:51:27 +13:00
Fiora
fb0960f0ee
JIT: flush unused registers during branch merges
...
Also correct some flags in interpreter tables.
2014-10-29 00:32:59 -07:00
Fiora
1ec1a9c33a
JIT: optimize crclr special case of crxor
2014-10-29 00:30:27 -07:00
Fiora
97fba41860
JIT: merge fcmpx and cror
...
Almost all uses of boolean condition-register ops in real code seem to be
the combination fcmpx + cror (e.g. for <= or >=). This merges the two.
2014-10-29 00:30:27 -07:00
Fiora
a666bb6bf6
JIT: optimize mulhwu
2014-10-29 00:30:26 -07:00
Fiora
5b5e462200
JIT: reorder blr comparisons
...
This should allow macro-op fusion in blr instructions.
2014-10-29 00:30:26 -07:00
Fiora
7388c62439
JIT: use BLR optimization to avoid anding LR with 0xFFFFFFFC
...
Should save roughly one instruction per blr.
2014-10-29 00:30:26 -07:00
Fiora
cec2cb9d38
JIT: micro-optimize cmpXX a bit more for lower latency/code size
2014-10-29 00:30:25 -07:00
comex
089e32ba7d
Merge pull request #1307 from comex/bitset
...
Higher level bitset wrapper
2014-10-28 23:39:35 -04:00
skidau
049afc4315
Merge pull request #1428 from phire/fixPaletteCpy
...
Fix Invalid Palette Pointer error.
2014-10-29 12:25:57 +11:00
comex
6698bfe58e
Merge pull request #1424 from phire/memmapPtrCleanup
...
Memmap pointer cleanup.
2014-10-28 17:31:23 -04:00
comex
1c32a3f77c
Merge pull request #1426 from lioncash/osx
...
Make some OSX-only functions static
2014-10-28 16:16:03 -04:00
Scott Mansell
d77f361c01
Add range checking to CopyTo/FromEmu so it won't segfault.
2014-10-29 08:53:53 +13:00
Lioncash
fd39454ad3
Make some OSX-only functions static
...
Gets rid of function prototype warnings.
2014-10-28 08:41:50 -04:00
Scott Mansell
1fbf4ae58a
Round up 7 nibble constants to 8 nibbles, for readablity.
2014-10-29 00:01:02 +13:00
Scott Mansell
a6671645d6
Remove commented out EFB arena code.
2014-10-28 23:58:54 +13:00
Scott Mansell
125cd92c3c
Update pointer types in memmap.cpp to match dolphin style guide.
2014-10-28 23:54:37 +13:00
Lioncash
88ec3b7725
EXI_Channel: Use an enum for read/write modes
2014-10-27 21:57:48 -04:00
skidau
1630b0c684
Merge pull request #1291 from skidau/debugger-step-out
...
Dolphin debugger enhancements
2014-10-28 12:53:22 +11:00
skidau
dd3cd30ee8
Merge pull request #1393 from RachelBryk/accel
...
Fix acceleration emulation for wiimote and nunchuk.
2014-10-28 12:46:37 +11:00
fkane
c37aca70a7
Make expansion interface interrupt updates thread-safe (fixes loss of audio in Super Mario Sunshine on lower-end systems.)
2014-10-27 09:37:17 -04:00
skidau
daf977e84e
Disabled optimizations, block merging and instruction skipping code while the debugger is stepping.
2014-10-27 23:38:45 +11:00
Ryan Houdek
81dda593cd
Merge pull request #1404 from Sonicadvance1/fix-ARMv7
...
Fixes some ARMv7 regressions.
2014-10-27 05:15:17 -06:00
Lioncash
edea9dfca3
EXI_DeviceIPL: Fix vertical alignment of IPL arrays
2014-10-26 11:45:56 -04:00
skidau
4570dd7eeb
Fixed a crash that would occur if a new watch were added by entering a watch name.
...
Code style updates.
2014-10-26 23:23:45 +11:00
skidau
2a3a8520a2
Removed the EXRAM_MASK from the safe address check as it was causing invalid accesses on Wii games in DEBUGFAST builds
2014-10-26 14:56:03 +11:00
skidau
290e1bed37
Disable block linking while debugger stepping or if there are breakpoints
2014-10-26 14:56:02 +11:00
skidau
613cae613a
Added a RAM Watch window to the debugger
...
Conflicts:
Source/Core/Core/HW/Memmap.cpp
Source/Core/Core/HW/Memmap.h
Source/Core/DolphinWX/Debugger/CodeWindow.h
2014-10-26 14:56:02 +11:00
skidau
df37649b9f
Changed the step over routine to a single stepping version that steps until a blr is encountered.
...
Cleared out all temporary breakpoints on each step to prevent phantom breakpoints from stopping the debugger.
2014-10-26 14:56:02 +11:00
skidau
b331ec96a3
Made the "continue", "stepover" and "stepout" functions work when the PC is at a breakpoint
2014-10-26 14:56:02 +11:00
Ryan Houdek
0fbd5248ca
Fixes a potential crash on the ARMv7 JIT if someone disables the entire JIT in the debugger.
...
We can't disable branches in the JITs. Make sure they don't become disabled if someone tries to disable the full JIT.
2014-10-25 20:38:44 -05:00
Ryan Houdek
17f352e2aa
Fixes some overzealous optimizations from ARMv7 BindToRegister.
...
We can't do it in rlw and friends.
subfx had an inccorect check.
Minor whitespace and reordering.
2014-10-25 20:36:29 -05:00
Ryan Houdek
484fc392d6
Fixes minor bug in the ARMv7 register cache.
...
Makes sure our register we are binding doesn't get unloaded immediately.
2014-10-25 20:34:11 -05:00
Rachel Bryk
f07d3be502
Fix acceleration emulation for wiimote and nunchuk.
...
The 1-2 least significant bits were missing.
2014-10-25 19:49:42 -04:00
comex
eb7f4dac50
Convert registersInUse to BitSet.
2014-10-25 16:57:25 -04:00
comex
b6a7438053
Add BitSet and, as a test, convert some JitRegCache stuff to it.
...
This is a higher level, more concise wrapper for bitsets which supports
efficiently counting and iterating over set bits. It's similar to
std::bitset, but the latter does not support efficient iteration (and at
least in libc++, the count algorithm is subpar, not that it really
matters). The converted uses include both bitsets and, notably,
considerably less efficient regular arrays (for in/out registers in
PPCAnalyst).
Unfortunately, this may slightly pessimize unoptimized builds.
2014-10-25 16:56:51 -04:00
comex
275755aaaf
Merge pull request #1381 from skidau/Remove-false-ext-exception-error
...
Added a check for external exceptions that have been set
2014-10-25 16:48:44 -04:00
comex
b7cb5b69c4
Merge pull request #1387 from RachelBryk/radius
...
Change default gcpad radius to 100.
2014-10-25 16:46:06 -04:00
Ryan Houdek
e780a49a06
Merge pull request #1375 from Sonicadvance1/ARMv7-optimizations
...
Minor ARMv7 JIT recompiler optimizations.
2014-10-25 08:28:10 -05:00
Rachel Bryk
c5fc3dd80f
Change default gcpad radius to 100.
...
Official gc controllers need it to be 100 to work properly, and it is
better to have it set too high than too low.
See issue 7762.
2014-10-24 15:35:44 -04:00
skidau
2c8e77dcc0
Added a check for external exceptions that have been set. Prevents a false positive log message.
2014-10-24 13:23:21 +11:00
skidau
3ab921d5b0
Merge pull request #1363 from lioncash/init-order
...
CoreParameter: Fix initializer list order
2014-10-24 13:03:38 +11:00
comex
1f5b1001ce
Merge pull request #1342 from phire/lessGetPointer
...
Eliminate getPointers which are memcpyed or memset.
2014-10-23 14:42:37 -04:00
Ryan Houdek
5bb19426b3
Optimizes instructions in ARMv7's JIT inside of the arith function.
...
For instructions where the second immediate value fits within an instruction encoding, just encode it directly in to the instruction.
2014-10-23 15:42:57 +00:00
Ryan Houdek
6743d6ef1f
Adds support back for non-immediate cmp/cmpi to ARMv7 JIT.
2014-10-23 15:39:09 +00:00
Ryan Houdek
0253c35d3a
Adds support to ARMv7's register cache for not loading a destination register prior to overwriting.
...
This extends the register cache's BindToRegister function with a doLoad argument just like x86's.
The speedup is minor for these implemented integer instructions.
2014-10-23 15:38:56 +00:00
Lioncash
a9f0bd72d2
Merge pull request #1369 from Sonicadvance1/enable-profiling
...
Enables block profiling in the UI on non x86 targets.
2014-10-23 08:09:39 -04:00
Ryan Houdek
2a1d4a7245
Removes some terrible printf debugging that was left over in the ARMv7 JIT.
2014-10-23 06:08:49 -05:00
Ryan Houdek
50135a988e
Enables block profiling in the UI on non x86 targets.
...
ARMv7 supports block profiling as well. So let's stop artificially limiting here.
2014-10-23 05:59:14 -05:00
Lioncash
5bb6f515d8
CoreParameter: Fix initializer list order
2014-10-22 23:38:13 -04:00
comex
00c6ec97a6
Merge pull request #1347 from comex/header-hygiene
...
Add missing includes where headers depend on other headers having been included first.
2014-10-22 23:23:58 -04:00
skidau
684cb658e2
Merge pull request #1354 from Sonicadvance1/ARMv7-stepping
...
Adds support for stepping in the ARMv7 JIT.
2014-10-23 13:31:17 +11:00
skidau
9836ce23e6
Merge pull request #1353 from Sonicadvance1/block-debugging
...
Don't enable stepping on ARMv7 JIT core if just in the debugger.
2014-10-23 13:30:04 +11:00
comex
6e774f1b64
Add missing includes where headers depend on other headers having been included first.
...
This is good hygiene, and also happens to be required to build Dolphin
using Clang modules.
(Under this setup, each header file becomes a module, and each #include
is automatically translated to a module import. Recursive includes
still leak through (by default), but modules are compiled independently,
and can't depend on defines or types having previously been set up. The
main reason to retrofit it onto Dolphin is compilation performance - no
more textual includes whatsoever, rather than putting a few blessed
common headers into a PCH. Unfortunately, I found multiple Clang bugs
while trying to build Dolphin this way, so it's not ready yet, but I can
start with this prerequisite.)
2014-10-21 21:22:16 -04:00
comex
9adf608f38
Merge pull request #1355 from FioraAeterna/fixmmuoff
...
MMU: allow page-table loads/stores if MMU is off
2014-10-21 14:55:18 -04:00
Ryan Houdek
a22fcf152d
Disable the fake vmem hack on 32bit targets.
...
This hack is incompatible with these targets due to how much memory space we allocate.
2014-10-21 12:56:28 +00:00
Fiora
f4fa8d0b83
MMU: allow page-table loads/stores if MMU is off
...
Fixes regressions in some games that apparently required this to work, but
don't really require full MMU emulation (e.g. with exceptions and all).
2014-10-21 05:55:56 -07:00
Ryan Houdek
77da164fe2
Adds support for stepping in the ARMv7 JIT.
2014-10-21 12:53:59 +00:00
Ryan Houdek
85605389d7
Don't enable stepping on ARMv7 JIT core if just in the debugger.
...
Also makes sure we aren't profiling CPU run times unless we are actually profiling.
2014-10-21 07:51:25 -05:00
Fiora
d7ff482618
Fix FPRF flag setting
...
Looks like I didn't quite change every place it needed to be renamed.
2014-10-21 04:56:35 -07:00
comex
c048691a57
Merge pull request #1292 from FioraAeterna/enablebats
...
Make EnableBATs an option instead of disabling it entirely
2014-10-21 02:26:49 -04:00
comex
24e72cd064
Merge pull request #991 from phire/dsi_should_crash
...
Panic if game does an invalid memory access.
2014-10-21 01:53:08 -04:00
skidau
305d2e1863
Merge pull request #1337 from skidau/AX-volume-clamp
...
Clamp the AX Volume to prevent clipping. Patch by hk.konpie. Fixes issue 7519.
2014-10-21 13:43:56 +11:00
skidau
3022da5d9f
Merge pull request #1318 from RachelBryk/disable-bios
...
Disable skip bios option if no bios files exists.
2014-10-21 13:23:23 +11:00
Scott Mansell
4fb6ab40a1
Eliminated getPointers which are memcpyed or memset.
...
Removes 12 getPointers.
2014-10-21 12:18:54 +13:00
Scott Mansell
d77e01e6c4
IPC_HLE: Replace (const char *)GetPointer(x) with GetString(x)
...
Removes 20 instances of GetPointer.
2014-10-21 11:10:34 +13:00
Stevoisiak
7f66344b64
Updated GCM references to ISO
2014-10-20 17:49:33 -04:00
Rachel Bryk
a67b9a4f52
Disable skip bios option if no bios files exists.
2014-10-20 14:17:19 -04:00
skidau
a4be65094f
Merge pull request #1314 from FioraAeterna/fixprofiler
...
JIT: fix profiler on non-Windows OSs
2014-10-20 14:37:32 +11:00
skidau
81efd0e87f
Merge pull request #1315 from RisingFog/movie-menu-input-display
...
Moved Input Display to Movie Menu
2014-10-20 14:34:02 +11:00
comex
4af98d63bc
Merge pull request #1344 from comex/mem-tools-testing
...
MemTools testing
2014-10-19 22:20:30 -04:00
comex
6a7cff02b8
Merge pull request #1343 from comex/yet-another-stupid-branch
...
Rename the poorly named {Read,Write}BigEData to Copy{From,To}Emu -
2014-10-19 22:18:57 -04:00
comex
c5c4dd49e6
Add a define to use sigaction on OS X instead of OS-specific page fault handling.
...
The latter was introduced last year in order to allow debugging without
turning off Fastmem; I wanted to see if the old way was faster. In
fact, it is not, but may as well keep the define around in case future
testing is necessary.
2014-10-19 20:41:54 -04:00
comex
f8dfb2ec90
Rename the poorly named {Read,Write}BigEData to Copy{From,To}Emu -
...
and change argument order to match memcpy.
Oh, and fix a lulzy buffer overflow in IOS emulation while I'm at it.
2014-10-19 19:34:38 -04:00
skidau
f9d9257c57
Fixed typo in the MEM2 handling.
2014-10-19 21:25:43 +11:00
skidau
990697bcbb
Clamp the AX Volume to prevent clipping. Patch by hk.konpie. Fixes issue 7519.
2014-10-19 21:20:33 +11:00
skidau
033a349444
Merge pull request #1299 from comex/blr-opt-infinite-loop
...
If the stack overflow trap region has already been tripped, don't continue to ignore faults there.
2014-10-19 15:22:42 +11:00
skidau
615ebe7b67
Merge pull request #1298 from RachelBryk/netplay
...
Get rid of netpad and just send the GCPadStatus in netplay.
2014-10-19 15:20:38 +11:00
Fiora
719326df65
Make EnableBATs an option instead of disabling it entirely
2014-10-17 19:05:01 -07:00
Fog
467ab1a629
Moved Input Display to Movie Menu
2014-10-17 21:08:34 -04:00
Fiora
99169eb620
JIT: fix profiler on non-Windows OSs
...
Still doesn't support timing code (since that's Windows-only), but run counts
will at least work without crashing.
2014-10-17 16:48:09 -07:00
skidau
73590b1323
Merge pull request #1266 from skidau/mmu-exram
...
Corrected the physical memory access to MEM2 via the MMU. Fixes Toy Story 3.
2014-10-17 17:10:51 +11:00
comex
4c2a542f1e
Revert "FastMem: don't let the backpatcher hit the same location twice"
2014-10-16 21:39:15 -04:00
comex
67088a1834
Fix signed/unsigned comparison and unused variable warnings.
2014-10-16 17:03:49 -04:00
Rachel Bryk
0f3194abc3
Get rid of netpad and just send the GCPadStatus in netplay.
2014-10-16 13:20:00 -04:00
comex
c5247673cd
If the stack overflow trap region has already been tripped, don't continue to ignore faults there.
...
In the unlikely case that it tripped and then, due to a bug, some other
fault occurred (e.g. stack misalignment), Dolphin would go into an
infinite loop rather than crashing.
2014-10-16 02:14:02 -04:00
skidau
f27aabd411
Merge pull request #1278 from lioncash/controller
...
ControllerInterface: Get rid of SetHwnd(), introduce Reinitialize()
2014-10-16 14:02:56 +11:00
skidau
002b9f7acd
Merge pull request #1222 from FioraAeterna/backpatchchanges
...
FastMem: don't let the backpatcher hit the same location twice
2014-10-16 14:00:29 +11:00
Lioncash
b7b2074cc2
ControllerInterface: Get rid of SetHwnd(), introduce Reinitialize()
...
Initialize now just takes the handle directly. Reinitialize is added because it is much more straightforward in comparison to doing the Shutdown-Initialize manually.
2014-10-15 09:29:25 -04:00
skidau
8ef21bc5e2
Merge pull request #1272 from RisingFog/sconfig-dump-frames
...
Move bDumpFrames to SConfig (and it's references)
2014-10-15 13:42:37 +11:00
comex
8f61c6f239
Merge pull request #1243 from comex/warning-fixes
...
Misc / warning fixes
2014-10-14 01:14:26 -04:00
comex
6650f8922d
Merge pull request #1283 from FioraAeterna/removebats
...
MMU: disable BAT resolution
2014-10-14 01:14:14 -04:00
comex
d4e8e3a6a3
Properly handle the Wiimote speaker data format being unknown.
2014-10-14 01:10:35 -04:00
comex
47faf7c4fd
Merge branch 'Remove-MMU-Speed-Hack-option' of https://github.com/skidau/dolphin into skidau-Remove-MMU-Speed-Hack-option
...
Conflicts:
Source/Core/Core/PowerPC/Jit64/JitAsm.cpp
2014-10-14 01:08:20 -04:00
Fiora
6ac2fcca61
MMU: disable BAT resolution
...
No known games, not even Wii MMU games like Cars 2 and Toy Story 3, use custom
BATs. This makes BAT resolution a waste of time. BAT handling could be
optimized significantly, but as long as nothing uses it, it's easier to just
disable it.
Should significantly improve performance in MMU-heavy games.
2014-10-13 22:04:03 -07:00
skidau
e50dad67ce
Merge pull request #1252 from FioraAeterna/regallocator
...
JIT: add basic register allocation heuristics
2014-10-14 12:45:48 +11:00
skidau
b4e82a5b9b
Merge pull request #1192 from skidau/dsp-acc-loop-adpcm
...
Fixed the step_size_bytes in the ADPCM Accelerator loop
2014-10-14 12:38:54 +11:00
skidau
ce35cd301b
Merge pull request #1169 from lioncash/cpu-core
...
Core: Use an enum for indicating CPU cores
2014-10-14 12:36:02 +11:00
skidau
96a2b74c02
Merge pull request #846 from lioncash/fpscr-enum
...
Core: Move FPSCR exception flags to a typed enum
2014-10-14 12:33:57 +11:00
Lioncash
9f2b48ab07
Core: Use an enum for indicating CPU cores
2014-10-13 10:35:31 -04:00
skidau
32dbdbe92f
Corrected the step size bytes for the start of the DSP accelerator chunk. Patch by hk.konpie
2014-10-13 22:10:37 +11:00
skidau
711a8aa6ad
Fixed the step_size_bytes in the ADPCM Accelerator loop taking into account the varying number of bytes that ADPCM steps by.
2014-10-13 22:10:37 +11:00
skidau
7b44e79356
Changed the FAST_TLB_CACHE to update its state only if the TLB cache is accessed by the game (not by Dolphin). The FAST_TLB_CACHE (written by booto) is faster and accurate to the hardware. Enabled the FAST_TLB_CACHE by default.
2014-10-13 18:00:45 +11:00
skidau
69a2d0cb96
Corrected the physical memory access to MEM2 via the MMU. Fixes Toy Story 3.
2014-10-13 16:01:02 +11:00
skidau
9551650c42
Merge pull request #1095 from crudelios/sw-bbox
...
Reimplement Bounding Box calculation using the software renderer.
2014-10-13 15:57:11 +11:00
Fog
8d424b114a
Move bDumpFrames to SConfig (and it's references)
2014-10-12 23:56:16 -04:00
skidau
a00ad6871c
Merge pull request #1220 from RisingFog/avsync
...
Proper Audio/Video Dumping
2014-10-12 14:04:45 +11:00
skidau
7443a07f6e
Merge pull request #1253 from lioncash/jitcache
...
JitCache: Use std::array to back the arrays within it.
2014-10-12 13:59:37 +11:00
skidau
9ddbdeb39f
Merge pull request #995 from FioraAeterna/fma
...
Add FMA support to emitter and use it in the JIT
2014-10-12 13:56:18 +11:00
skidau
8738b1879c
Removed the MMU Speed Hack option. The TLBHack is now enabled if the MMU option is disabled. This will help catch cases where a game requires the TLBHack but the option has not been set in the game ini. It also removes the possibility to mistakenly enable both the MMU and TLBHack.
2014-10-11 11:31:16 +11:00
crudelios
47c67f014f
Fix linux build and various warnings.
...
Increase savestate version.
2014-10-10 12:28:13 +01:00
Lioncash
8b831c9483
JitCache: Use std::array to back the arrays within it.
...
Cleans up some of the allocation process.
2014-10-10 00:22:09 -04:00
Fiora
7ba9a8537b
JIT: add basic register allocation heuristics
...
Should be at least a bit better than the previous LRU approach. Currently
has two basic components: whether a register is dirty (dirty registers need
to be stored, so clobbering them hurts more) and how many other registers will
be used between now and the next time a register gets used.
Also don't pre-load values that don't need to be in registers.
2014-10-09 20:09:14 -07:00
skidau
b7aed97508
Merge pull request #1239 from FioraAeterna/updatetables
...
CPU: improve instruction table flags for RC bits
2014-10-10 13:04:57 +11:00
Lioncash
560f180ea4
Merge pull request #1251 from lioncash/cast
...
PPCAnalyst: Remove unnecessary casts
2014-10-09 20:26:32 -04:00
Lioncash
bb377d0fc3
PPCAnalyst: Remove unnecessary casts
2014-10-09 20:19:01 -04:00
Fiora
9d45f51459
JIT: fix accidental disabling of block linking by default
...
Oops.
2014-10-09 12:00:40 -07:00
Fog
fc4125cdd1
Proper Audio/Video Dumping
2014-10-09 00:06:04 -04:00
skidau
86b81c55bf
Merge pull request #1226 from skidau/emu-wiimote-speaker-sample-rate
...
Hooked up the emulated wiimote speaker's sample rate and volume set by the game
2014-10-09 14:11:21 +11:00
Fiora
8bf2cf0641
Debug: fix disable block linking option
...
Previously it did the opposite of what it was supposed to; when checked, it'd
turn block linking on, and when unchecked, it'd turn it off.
Also update JITIL's block linking disabling in debug mode to match the behavior
of the regular JIT.
2014-10-08 19:03:25 -07:00
Fiora
75a1310ba9
CPU: improve instruction table flags for RC bits
2014-10-08 11:44:37 -07:00
Fiora
9734f0c834
JIT64: use FMA instructions
2014-10-07 21:41:01 -07:00
Ryan Houdek
5f0011d065
Fix ARMv7 JIT from XER optimization.
...
This was a subtle bug I introduced since I removed a LDR in one of the ComputeCarry functions.
Basically since I wasn't loading the XER value prior to operations when I did a BIC tmp, tmp, 1 it would clear the first bit in our temp register but
retain the rest of the "random" data from that temp register. This would then save in to xer_ca, which the Interpreter will use later without any
masking to generate the XER value. Our XER generation helper functions don't do any masking since they were only expecting a single bit worth of data
in xer_ca with the rest being zero.
So now we only have one bit of data being stored in xer_ca from the ARMv7 JIT recompiler, and also a slight optimization in the ComputeCarry function
that is used on the immediate path. There wasn't any reason to load xer_ca since it only contains one bit of data now.
2014-10-07 21:43:15 -05:00
skidau
38b64fd077
Merge pull request #1213 from RachelBryk/wii-tas-input
...
Add wiimote tas input.
2014-10-08 13:15:43 +11:00
skidau
f5b23834b5
Hooked up the emulated wiimote speaker's sample rate and volume set by the game.
2014-10-07 21:43:32 +11:00
comex
85086e1e6c
Merge pull request #1224 from FioraAeterna/profile
...
JIT: re-add profiling support on x86_64
2014-10-07 02:31:04 -04:00
Fiora
5919d0962f
JIT: re-add profiling support on x86_64
...
Still gives rather inaccurate results with conditional continue and/or
branch merging on, so those should probably be turned off when using it.
2014-10-06 20:26:58 -07:00
comex
9d059d1d2f
Merge pull request #1221 from LPFaint99/memcard
...
Fix endian error. allows loading of current games save even if the memca...
2014-10-06 23:21:36 -04:00
skidau
b3b34d16e6
Merge pull request #1218 from hthh/trampolinecaching
...
JIT: reuse trampolines when possible
2014-10-07 13:26:23 +11:00
skidau
8fdf43109f
Merge pull request #1216 from FioraAeterna/movoptimizations
...
Add more AVX support, refactor emitter, reduce redundant XMM moves
2014-10-07 13:25:28 +11:00
LPFaint99
5dec943762
Fix endian error. allows loading of current games save even if the memcard is mostly full
2014-10-06 18:43:59 -07:00
skidau
a0a64369fc
Merge pull request #1211 from skidau/remaining-block-count-zero
...
Re-added the change to make the dsp remaining block count zero-based.
2014-10-06 13:35:46 +11:00
Fiora
9b29fe8aed
WIP: don't let the backpatcher hit the same location twice
...
If a location is hit by the backpatcher, don't fastmem it when recompiling the
block unless the block has actually been invalidated.
2014-10-04 21:28:21 -07:00
hthh
c7208318fb
JIT: Reuse trampolines when possible
2014-10-05 15:03:11 +11:00
comex
47bf698b70
Merge pull request #1217 from lioncash/tcast
...
TrampolineCache: Remove unnecessary cast
2014-10-04 00:19:08 -04:00
comex
7bce3fcdf9
Merge pull request #1174 from FioraAeterna/fifowriteaddrfix
...
JIT: properly remove FIFO write addresses when code is invalidated
2014-10-04 00:18:58 -04:00
comex
1af4043f14
Merge pull request #1219 from FioraAeterna/fixclearcache
...
JIT: set clear_cache_asap to false when clearing the cache
2014-10-04 00:14:30 -04:00
skidau
0c4739eead
Merge pull request #1202 from FioraAeterna/fixstartupbats
...
Fix BAT register initial values in bootcode
2014-10-04 13:10:47 +10:00
skidau
d0ea2ad6dc
Merge pull request #1198 from lioncash/crypt
...
WiiSaveCrypted: Move some function params over to std::string
2014-10-04 13:10:28 +10:00
Fiora
17c56b58ab
JIT: set clear_cache_asap to false when clearing the cache
...
Would probably result in continual cache-clearing if the stack overflow code
in the BLR optimizations triggers.
2014-10-03 20:08:27 -07:00
Lioncash
eb1ddb886e
TrampolineCache: Remove unnecessary cast
2014-10-03 20:46:44 -04:00
Fiora
bf014636c8
JIT: add more AVX support, reduce redundant XMM moves
...
10-20% reduction in typical compiled block size for float-heavy JIT blocks.
2014-10-03 16:17:08 -07:00
Fiora
8fe730194b
JIT: load registers if they're going to be used later in the block
2014-10-03 11:58:04 -07:00
Fiora
6bff99fa75
JitAsmCommon: remove a few redundant moves
2014-10-03 10:05:42 -07:00
Rachel Bryk
c41b31d3ff
Add wiimote tas input.
2014-10-03 12:02:52 -04:00
skidau
30c8de495e
Re-added the change to make the dsp remaining block count zero-based. Fixes Dream Mix TV World Fighters.
2014-10-03 21:30:09 +10:00
skidau
16d3604211
Merge pull request #1196 from RachelBryk/framecount
...
Add on screen frame counter.
2014-10-03 13:31:52 +10:00
Rohit Nirmal
3b25c88736
Change another NULL to nullptr.
2014-10-01 23:38:42 -05:00
Lioncash
54c454fc82
Jit64: Change a NULL to nullptr
2014-10-02 00:05:27 -04:00
skidau
68edddf10e
Merge pull request #1193 from RachelBryk/ir-input-display
...
Fix IR input display.
2014-10-02 13:48:17 +10:00
skidau
50bf30111c
Merge pull request #1189 from RachelBryk/nunchuck-input-display
...
Add support for cc and nunchuck in input display.
2014-10-02 13:47:35 +10:00
skidau
11126f0bfc
Merge pull request #1155 from booto/dsp-int-fix
...
dsp int timing tweak
2014-10-02 13:46:03 +10:00
Fiora
1bce0a847b
Fix BAT register initial values in bootcode
...
Probably won't affect any real things for now, since these BATs are already
hardcoded into the memory handling functions.
2014-10-01 12:54:06 -07:00
Rachel Bryk
4280d9777a
Add support for cc and nunchuck in input display.
2014-10-01 03:51:49 -04:00
skidau
ffe160ad81
Merge pull request #1187 from lioncash/global
...
AudioCommon: Prefix soundStream global with g_
2014-10-01 13:23:11 +10:00
skidau
19fbefd9bd
Merge pull request #1176 from FioraAeterna/pagecrossings
...
MMU: support loads/stores that cross page boundaries
2014-10-01 13:22:52 +10:00
Lioncash
0d8b34612e
WiiSaveCrypted: Move some function params over to std::string
2014-09-30 20:31:59 -04:00
Rachel Bryk
f6c6f03cce
Add on screen frame counter.
2014-09-30 18:49:44 -04:00
Rachel Bryk
f7a993a853
Fix IR input display.
2014-09-30 08:24:18 -04:00
Fiora
85547d94be
JIT: properly remove FIFO write addresses when code is invalidated
...
Fixes a bug caused by interaction with carry optimizations; might fix other
issues too.
2014-09-30 01:00:23 -07:00
Lioncash
7f7fb5e70c
AudioCommon: Prefix soundStream global with g_
2014-09-30 03:06:16 -04:00
comex
a9b4016cd3
Merge pull request #1166 from FioraAeterna/flaglocking
...
JIT+Emitter: support locking flags
2014-09-30 02:57:53 -04:00
comex
58a29ec0cd
Merge pull request #1177 from lioncash/array
...
DSPJitRegCache: Use std::array to represent the register arrays
2014-09-30 02:50:53 -04:00
comex
4edc7fbf85
Merge pull request #1190 from comex/stackalign
...
Remove useless STACKALIGN macro.
2014-09-30 01:54:38 -04:00
comex
ac1f9f950f
Merge pull request #1186 from lioncash/macro
...
NetPlayClient: Remove unused macro
2014-09-30 01:52:01 -04:00
comex
2eebdff01b
Remove useless STACKALIGN macro.
...
It only ever did anything on 32-bit OS X.
Anyway, it wasn't even on the right functions, and these days
ABI_PushRegistersAndAdjustStack should handle maintaining the ABI
correctly.
2014-09-30 01:42:47 -04:00
Fiora
22f087275c
MMU: support loads/stores that cross page boundaries
...
Fixes some strange issues with Rogue Squadron 3 in JIT mode.
2014-09-29 21:19:21 -07:00
skidau
63cee3328f
Merge pull request #1167 from FioraAeterna/fixdebugwindow
...
Debug: fix display of instructions in virtual memory in MMU games
2014-09-30 13:28:41 +10:00
skidau
f675b33640
Merge pull request #1164 from FioraAeterna/bpcarry
...
JIT: fix carry merging across breakpoints
2014-09-30 13:25:24 +10:00
skidau
9d9984e96f
Merge pull request #1159 from FioraAeterna/blocklinkdebug
...
JIT: enable block linking and idle skipping in debug mode
2014-09-30 13:24:16 +10:00
skidau
7828ddd542
Merge pull request #1150 from FioraAeterna/extsmerge
...
JIT: merge lbz + extsb
2014-09-30 13:19:45 +10:00
skidau
da221e3d9c
Merge pull request #1018 from zhuowei/elf_map_basename_only
...
When loading the map file for a DOL/ELF file, extract only the filename from the DOL/ELF's path
2014-09-30 13:17:29 +10:00
Lioncash
05a8d9d54a
NetPlayClient: Remove unused macro
2014-09-29 08:42:18 -04:00
Lioncash
843a3f6c15
Core: Move FPSCR exception flags to a typed enum
2014-09-29 00:46:15 -04:00
comex
4c031bed4b
Merge pull request #1179 from lioncash/casts
...
Jit_Integer: Get rid of some cast noise in boolX
2014-09-28 23:58:09 -04:00
skidau
8ae2152093
Merge pull request #1168 from lioncash/unique
...
CoreParameter: Use unique_ptrs over raw pointers.
2014-09-29 13:55:00 +10:00
skidau
c7f3858379
Merge pull request #1138 from FioraAeterna/arithetweak
...
JIT: a small optimization for subfex and friends
2014-09-29 13:51:44 +10:00
comex
6c0a68d507
Add the override config option.
...
I hate the config code, but now is not the time to fix it...
2014-09-28 21:34:31 -04:00
comex
3a2048ea57
Add a central variable g_want_determinism which controls whether to try to make things deterministic.
...
It now affects the GPU determinism mode as well as some miscellaneous
things that were calling IsNetPlayRunning. Probably incomplete.
Notably, this can change while paused, if the user starts recording a
movie. The movie code appears to have been missing locking between
setting g_playMode and doing other things, which probably had a small
chance of causing crashes or even desynced movies; fix that with
PauseAndLock.
The next commit will add a hidden config variable to override GPU
determinism mode.
2014-09-28 21:34:31 -04:00
Lioncash
7e825fdca5
Jit_Integer: Get rid of some cast noise in boolX
2014-09-28 13:28:16 -04:00
Lioncash
ab639b41ab
DSPJitRegCache: Use std::array to represent the register arrays
2014-09-28 03:02:29 -04:00
Lioncash
ee076453ce
Merge pull request #1171 from lioncash/loop
...
DSPJitRegCache: Merge two loops in popRegs.
2014-09-28 02:07:44 -04:00
skidau
6bea53ab11
Clean-up the leftover dspARAMAddresses code that was no longer needed.
2014-09-28 15:38:35 +10:00
skidau
baeca3e03b
Merge pull request #1170 from lioncash/bounds
...
SI: Fix bounds check in GetDeviceType
2014-09-28 14:57:38 +10:00
skidau
afccf2276d
Merge pull request #1012 from skidau/aram-dma-exceptions
...
Compile the ARAM DMA exception checks into the JIT block
2014-09-28 14:48:38 +10:00
Fiora
3878187721
Interpreter: remove debug printf in psq_l
2014-09-27 20:44:45 -07:00
skidau
7184019090
Increased the savestate internal version.
...
Added a small note for instant dma.
2014-09-28 11:51:14 +10:00
Lioncash
8b578c7ba3
DSPJitRegCache: Merge two loops in popRegs.
2014-09-27 18:33:48 -04:00
Lioncash
1c42fd9928
SI: Fix bounds check in GetDeviceType
2014-09-27 16:44:21 -04:00
Lioncash
a8d8c9230b
CoreParameter: Kill off an snprintf usage
2014-09-27 14:45:03 -04:00
Lioncash
2f4d3961b3
CoreParameter: Use unique_ptr in place of raw pointers
2014-09-27 14:42:59 -04:00
skidau
86b6dfe4b3
Added a instant ARAM DMA mode which is enabled automatically when required.
...
Detects a situation where the game is writing to the dcache at the address being DMA'd. As we do not have dcache emulation, invalid data is being DMA'd causing audio glitches. The following code detects this and enables the DMA to complete instantly before the invalid data is written.
Added accurate ARAM DMA transfer timing.
Removed the addition of DSP exception checking.
2014-09-27 20:47:29 +10:00
skidau
4b37fdfa45
Added a CompileExceptionCheck function to the JitInterface and re-routed the existing code to utilise the interface.
2014-09-27 20:16:26 +10:00
skidau
945d431171
Added OPTYPE_LOADPS and OPTYPE_STOREPS instruction types to the PPC table.
...
Updated ARAM DMA and FIFO write exception checking to uses these types.
Conflicts:
Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp
Source/Core/Core/PowerPC/PPCTables.h
2014-09-27 20:16:26 +10:00
skidau
0f256715e0
Re-added the ARAM DMA exception check. This fixes the audio cutting in and out of Resident Evil 2 and 3. Removed the special case for short transfers as it is no longer required.
2014-09-27 20:16:26 +10:00
skidau
d09e2abb0d
Compile the ARAM DMA exception checks into the JIT block in a similar style to FIFO writes. This ensures that the ARAM DMA is handled soon after the DMA completes. Fixes issue 7122 and issue 7342.
2014-09-27 20:16:25 +10:00
Fiora
fbbe9605a9
Debug: fix display of instructions in virtual memory in MMU games
2014-09-27 01:07:37 -07:00
Fiora
ac1fc9ad03
JIT+Emitter: support locking flags
...
This helps us avoid accidentally clobbering flags between two instructions
when the flags are expected to be maintained. Dolphin will of course crash
immediately, but at least it will crash loudly and alert us of the mistake,
instead of forcing hours of bisecting to find the subtle way in which the JIT
has managed to sneak a flag-modifying instruction where there shouldn't be one.
2014-09-26 20:47:06 -07:00
skidau
f5bbfa139d
Merge pull request #1146 from RachelBryk/netplay-input-display
...
Make input display work properly with netplay.
2014-09-27 13:25:01 +10:00
Fiora
39d4306a2e
JIT: fix carry merging across breakpoints
...
More precisely, don't do it.
2014-09-26 13:21:01 -07:00
Fiora
ba39c35f24
JIT: fix branch merging, take 2
...
NOT doesn't set flags.
2014-09-25 22:33:40 -07:00
skidau
30d77b38c5
Merge pull request #1127 from Sonicadvance1/QGR-BitField
...
Change the QGR union over to a BitField union.
2014-09-26 14:53:24 +10:00
skidau
9d746b89a2
Merge pull request #1162 from FioraAeterna/fixmerges
...
JIT: fix bugs with ComputeRC in branch merging patch
2014-09-26 14:46:53 +10:00
Fiora
f9ab25152c
JIT: fix bugs with ComputeRC in branch merging patch
...
We really, really need to be sure the input to ComputeRC is a register.
2014-09-25 21:45:25 -07:00
skidau
146725f64a
Merge pull request #1125 from Sintendo/fresjumps
...
Change fres/frsqrte jumps
2014-09-26 14:45:19 +10:00
comex
9cdd842080
Add a fake SContext definition for _M_GENERIC.
2014-09-25 18:47:34 -04:00
Fiora
23fbcecf13
JIT: enable block linking and idle skipping in debug mode
...
They can still be turned off, just don't force them off.
Also remove some dated comments.
2014-09-25 07:12:10 -07:00
comex
8dccb0c743
Fix fastmem in JitIL after 755bd2c4
.
...
That commit reorganized fastmem a bit; I wrote it before the patch to
support fastmem in JitIL landed, and forgot to edit it to account for
the fact. Since JitILBase now derives from Jitx86Base, the HandleFault
override can just be removed.
2014-09-25 01:15:58 -04:00
Sintendo
29cca5c84f
Change fres/frsqrte jumps
2014-09-24 21:58:01 +02:00
Fiora
bfab5f1e91
JIT: generic branch merging
...
Why merge just cmps and rlwinm when we can merge ALL the branches?
2014-09-24 12:34:18 -07:00
Ryan Houdek
76697922b4
Implement XER optimization on ARMv7 JIT core
...
Not completely optimized; there's room for improvement here.
2014-09-24 12:27:54 -07:00
Fiora
5fce109ce1
Reorganize carry to store flags separately instead of part of XER
...
Also correct behavior with regards to which bits in XER are treated as zero
based on a hwtest (probably doesn't affect any real games, but might as well
be correct).
2014-09-24 12:27:47 -07:00
skidau
788a719718
Merge pull request #1153 from skidau/twx-bindtoreg
...
Replaced KillImmediate with BindToRegister in the tw instruction.
2014-09-24 13:31:44 +10:00
skidau
a83792e914
Merge pull request #1074 from FioraAeterna/earlyflush
...
JIT: flush a register if it won't be used for the rest of the block
2014-09-24 13:30:02 +10:00
booto
7f76ad3edb
dsp int timing tweak
...
this fixes a bug in GE9E5D that caused hangs on boot
2014-09-24 00:50:46 +08:00
skidau
65eb0ff2fe
Replaced KillImmediate with BindToRegister in the tw instruction. Fixes the error "WriteNormalOp - a1 and a2 cannot both be memory" which appeared on starting Monopoly Streets.
2014-09-23 18:00:41 +10:00
skidau
cbf102794e
Merge pull request #1130 from Sonicadvance1/AArch64-jit-extXx
...
[AArch64] Implement instructions.
2014-09-23 13:52:30 +10:00
skidau
fb18d5376f
Merge pull request #1142 from lioncash/linucks
...
Fix some warnings on Linux
2014-09-23 13:43:18 +10:00
Fiora
88f2fbe1a4
JIT: fix merged bclr with comex's BLR optimizations
2014-09-22 18:22:31 -07:00
Fiora
f103234e2b
JIT: flush a register if it won't be used for the rest of the block
...
This should dramatically reduce code size in the case of blocks with
lots of branches, and certainly doesn't hurt elsewhere either.
This can probably be improved a good bit through smarter tracking of register
usage, e.g. discarding registers that are going to be overwritten, but this
is a good start and should help reduce code size and register pressure.
Unlike that sort of change, this is a "safe" patch; it only flushes registers,
which can't affect correctness, unlike actually discarding data.
As part of this, refactor PPCAnalyst to support distinguishing between
float and integer registers (to properly handle instructions that access
both, like floating-point loads and stores).
Also update every instruction in the interpreter flags table I could find
that didn't have all the correct flags.
2014-09-22 16:00:25 -07:00
Fiora
de86d2003a
JIT: merge lbz + extsb
...
PPC has no 8-bit sign-extended load, so this instruction pair is very common.
x86 can do it in one op (movsx), so merge them when possible.
2014-09-22 15:41:54 -07:00
Ryan Houdek
7f1185b941
Merge pull request #1140 from lioncash/android
...
Android: Silence a few warnings
2014-09-22 16:20:53 -05:00
Rachel Bryk
e4d71f36b1
Make input display work properly with netplay.
2014-09-22 12:56:35 -04:00
shuffle2
c617f324b2
Merge pull request #1143 from lioncash/exi
...
Core: Fix SIGABRT possibility in EXI_DeviceGecko
2014-09-22 00:16:34 -07:00
Lioncash
858d18a67e
Core: Fix SIGABRT possibility in EXI_DeviceGecko
...
Fixes issue 7586
2014-09-21 21:50:30 -04:00
Lioncash
836ff6d506
Fix some warnings on Linux
2014-09-21 20:13:22 -04:00
Lioncash
ea40fdf21c
Merge pull request #1132 from lioncash/osx
...
Fix building Dolphin on OSX without precompiled headers
2014-09-21 20:02:59 -04:00
Lioncash
dc79755303
Android: Silence a few warnings
2014-09-21 19:51:27 -04:00
Rachel Bryk
d933247c50
Remove an unused variable.
2014-09-21 19:40:18 -04:00
Ryan Houdek
1cb07ffc14
[AArch64] Implement twi and tw.
2014-09-21 14:17:04 -05:00
Fiora
505b1bd562
JIT: a small optimization for subfex and friends
2014-09-21 12:16:26 -07:00
Ryan Houdek
078147d424
[AArch64] Implement mfmsr
2014-09-21 07:38:21 -05:00
Ryan Houdek
9530800fd0
[AArch64] Implement mtsprin and mfsprin
2014-09-21 07:38:16 -05:00
Ryan Houdek
2bcea19492
[AArch64] Implement mtsr and mfsr
2014-09-21 07:36:14 -05:00
Tony Wasserka
1d23c2ca8b
GPU: Only load the relevant color components upon writes to the tev color registers.
...
The other two components need not be valid upon write, hence loading them results in glitches.
Fixes issue 6783.
2014-09-21 10:38:22 +02:00
Lioncash
a04a99251f
Fix building Dolphin on OSX without precompiled headers
2014-09-21 00:37:47 -04:00
Ryan Houdek
0f8c5bda40
[AArch64] Implement mcrf.
2014-09-20 21:19:25 -05:00
Ryan Houdek
e708e8d5a0
[AArch64] Implement negx.
2014-09-20 16:17:16 -05:00
Ryan Houdek
75590a99cb
[AArch64] Implement cntlzwx.
2014-09-20 14:52:56 -05:00
Ryan Houdek
76d2f331f0
[AArch64] Implement extshx and extsbx.
2014-09-20 14:46:53 -05:00
Ryan Houdek
9d7598266f
Change the QGR union over to a BitField union.
...
Makes it easier to generate a QGR in my unit test, cleaner overall of course.
2014-09-20 13:15:44 -05:00
Ryan Houdek
a829e596c7
Merge pull request #1121 from FioraAeterna/fixfsel
...
JIT: fix fsel/ps_sel implementations for NaN input
2014-09-20 12:40:55 -05:00
Fiora
6043c790b6
JIT: fix indexed paired singles
...
I didn't realize the I and W fields were in a different place for these
variants.
This should fix Paper Mario and probably lots of other things I accidentally
broke.
2014-09-20 00:20:49 -07:00
skidau
ae17d91992
Merge pull request #1096 from RachelBryk/save-slots
...
Add hotkeys to select save state slots
2014-09-20 15:45:02 +10:00
Ryan Houdek
eb23882398
Merge pull request #1120 from rohit-n/muh-precompiled-headers
...
Fix build failing when disabling precompiled headers.
2014-09-19 17:43:42 -05:00
Rohit Nirmal
46057db37d
Fix build failing when disabling precompiled headers.
2014-09-19 18:17:51 -04:00
Ryan Houdek
d7b40fa94c
Merge pull request #1119 from FioraAeterna/bytereverse
...
JIT: support byte-reversed stores/loads
2014-09-19 15:54:27 -05:00
Ryan Houdek
bdca720e33
Fix some indention on AArch64 JIT.
2014-09-19 15:23:21 -05:00
Ryan Houdek
47e47891d4
[AArch64] Implement a bunch of integer instructions
...
16 new instructions for AArch64.
2014-09-19 15:23:21 -05:00
Ryan Houdek
5671530026
Merge pull request #1101 from FioraAeterna/fixfallbacks
...
JIT: simpler fallback conditions for load/store float
2014-09-19 15:23:01 -05:00
Ryan Houdek
5b4aa1d6d4
Merge pull request #1123 from FioraAeterna/eieio
...
JIT: change eieio and tlbsync to DoNothing
2014-09-19 15:19:41 -05:00
Ryan Houdek
7cc586d615
Merge pull request #1100 from FioraAeterna/psq_insts
...
JIT: implement remaining psq_l/st instruction variants
2014-09-19 15:16:44 -05:00
Fiora
0f53bba45a
JIT: change eieio and tlbsync to DoNothing
...
The interpreter functions for these are no-ops anyways.
Also add some missing DoNothings to the ARM64 JIT.
2014-09-19 13:14:49 -07:00
Ryan Houdek
522d7eb275
Merge pull request #1109 from FioraAeterna/ps_cmp
...
JIT: add ps_cmp0/ps_cmp1/ps_res/ps_rsqrte
2014-09-19 14:41:05 -05:00
Ryan Houdek
526e92464b
Merge pull request #1103 from FioraAeterna/floatconstnaming
...
JIT: rename a few constants to be more accurate
2014-09-19 13:21:06 -05:00
magumagu
32e5043b29
WIP XFB scaling.
...
Still an ugly mess.
2014-09-19 12:33:15 -05:00
Ryan Houdek
ec310811a8
Merge pull request #1114 from Sonicadvance1/AArch64-fix-build
...
Fix AArch64 JIT compiling.
2014-09-19 09:19:25 -05:00
Fiora
c130a496f2
JIT: fix fsel/ps_sel implementations for NaN input
...
fselx was the main problem, but ps_sel was wrong too (even if there were no
known reported bugs with it).
This fixes Beyond Good and Evil (at the least).
2014-09-19 01:58:13 -07:00
Fiora
d96016ed21
JIT: support byte-reversed stores/loads
...
4 more instructions down.
Store ones should be pretty well-tested; load ones seem to almost never be
used. I found them in Turok Evolution, so I was able to check code generation,
but the relevant code didn't seem to be called.
2014-09-18 20:38:44 -07:00
skidau
bd740ae9c7
Merge pull request #1111 from Tilka/fix_gcpad_setmotor
...
Fix GCPad::SetMotor()
2014-09-19 13:26:05 +10:00
Fiora
af8772700a
JIT: add ps_res and ps_rsqrte using scalar implementations
2014-09-18 18:36:15 -07:00
Fiora
1b425dedd1
JIT: add ps_cmp0/ps_cmp1 implementations using current fcmp code
2014-09-18 17:57:28 -07:00
Ryan Houdek
a8abbdae85
Merge pull request #1106 from FioraAeterna/fixdebug2
...
JIT: fix debug mode
2014-09-18 19:52:35 -05:00
comex
3df935b98e
Reset RSP after calling Jit in case it cleared the code cache.
2014-09-18 18:23:36 -04:00
Ryan Houdek
f709dda6aa
Fix AArch64 JIT compiling.
2014-09-18 16:50:49 -05:00
Tillmann Karras
e35db54454
Fix and simplify GCPad::SetMotor()
...
abs() takes an int argument. Casting -0.5..0.5 to int always resulted in
zero.
2014-09-18 21:34:07 +02:00
Ryan Houdek
d54c8eb6bf
Merge pull request #1098 from FioraAeterna/cvtsi2ss
...
JIT: use cvtsi2ss in paired singles
2014-09-18 06:51:37 -05:00
Ryan Houdek
0294b344e2
Merge pull request #1086 from FioraAeterna/fixsrawint
...
Interpreter: fix carry calculation in srawx
2014-09-18 06:41:37 -05:00
Fiora
cd7853bd50
JIT: fix debug mode
2014-09-18 03:14:04 -07:00
Fiora
9ab816e6e9
JIT: fix regression in ps_sel
...
My code didn't maintain correct semantics with floating-point NaNs (a < b is
not the same as "not a >= b" in float), which seems to have broken FIFA 12.
2014-09-17 21:43:44 -07:00
comex
217758b607
Correct inaccurate comment.
2014-09-17 22:30:33 -04:00
comex
6695b5acce
Fix backwards #ifdef.
2014-09-17 22:30:20 -04:00
comex
97c9cb5882
Add missing push wrapper around UpdatePerformanceMonitor
2014-09-17 21:10:43 -04:00
Fiora
29fc151cc7
JIT: implement remaining psq_l/st instruction variants
...
These are used in at least a few popular games, including Super Smash Bros.
Brawl.
2014-09-17 17:10:27 -07:00
comex
7ad9027593
Be pedantic about stack overflow on Linux and OS X.
...
Add some magic to the fault handler to handle stack overflow due to BLR
optimization, and disable the optimization if fastmem is not enabled.
2014-09-17 20:08:09 -04:00
Fiora
cfd65c2762
JIT: rename a few constants to be more accurate
...
Remove the '2'; it's not longer applicable.
2014-09-17 16:59:35 -07:00
comex
755bd2c445
Reorganize backpatching a bit. Untested on ARM.
...
Rather than *MemTools.cpp checking whether the address is in the
emulated range itself (which, as of the next commit, doesn't cover every
kind of access the JIT might want to intercept) and doing PC
replacement, they just pass the access address and context to
jit->HandleFault, which does the rest itself.
Because SContext is now in JitInterface, I wanted JitBackpatch.h (which
defines it) to be lightweight, so I moved TrampolineCache and associated
x64{Analyzer,Emitter} dependencies into its own file. I hate adding new
files in three places, two of which are MSVC...
While I'm at it, edit a misleading comment.
2014-09-17 19:57:06 -04:00
comex
7b0fdb52cd
Run exception handlers on an alternate stack on Linux.
...
*Completely untested.* Someone please test.
2014-09-17 19:57:04 -04:00
comex
bd4e75e69a
Shorten the blr stub a bit.
2014-09-17 19:56:58 -04:00
comex
b597ec3e08
Opportunistically predict BLR destinations using RET.
...
When executing a BL-type instruction, push the new LR onto the stack,
then CALL the dispatcher or linked block rather than JMPing to it. When
executing BLR, compare [rsp+8] to LR, and RET if it's right, which it
usually will be unless the thread was switched out. If it's not right,
reset RSP to avoid overflow.
This both saves a trip through the dispatcher and improves branch
prediction.
There is a small possibility of stack overflow anyway, which should
be handled... *yawn*
2014-09-17 19:56:09 -04:00
comex
558dee84ca
Wrap some function calls in ABI_Push|PopRegistersAndAdjustStack(0, 0);
...
These calls are made outside of JIT blocks, and thus previously did not
read any protection - register use is taken into account and the outer
dispatcher stack frame is sufficient. However, if data is to be stored
on the stack, these calls must reserve stack shadow space on Windows to
avoid clobbering it.
2014-09-17 19:56:09 -04:00
Fiora
2a0b06f08c
JIT: simpler fallback conditions for load/store float
...
I wasn't really thinking when I wrote these; d/s are for float registers, not
gprs.
2014-09-17 10:27:33 -07:00
Fiora
76c8bb40e8
JIT: update some rather outdated comments
2014-09-16 23:42:22 -07:00
Fiora
2ae6f13d22
JIT: use cvtsi2ss in paired singles
...
One less instruction for a few of the loads.
2014-09-16 22:50:33 -07:00
skidau
2c233c4976
Merge pull request #686 from FioraAeterna/fiora
...
JIT: Optimize JitAsmCommon, Float, and PS implementations
2014-09-17 14:06:14 +10:00
Rachel Bryk
5dc88a2673
Add hotkeys to select save state slots and to save/load the currently selected slots.
2014-09-16 19:19:41 -04:00
comex
7eea7080d9
Fix missing "return"
2014-09-16 00:25:21 -04:00
Fiora
764ce4b513
JIT: add fselx implementation
...
Based on a patch by Tilka.
2014-09-15 08:33:41 -07:00
Fiora
7ab820c6f8
JIT: Various JitAsmCommon optimizations
...
Use some SSE4 instructions in on CPUs that support them.
Use float instructions instead of int where appropriate (it's a cycle faster
on CPUs with arithmetic unit forwarding penalties).
2014-09-15 08:33:40 -07:00
Fiora
7b0f559ae1
JIT: various float optimizations
2014-09-15 08:33:40 -07:00
Fiora
34287b8042
JIT: some paired singles optimizations
2014-09-15 08:33:39 -07:00
Fiora
d02b7c7755
JIT: support immediate stores
2014-09-15 07:25:32 -07:00
Fiora
a248e49c97
Revert "Two small JIT optimizations"
2014-09-15 07:01:51 -07:00
Ryan Houdek
20af50b1c4
Merge pull request #1077 from FioraAeterna/integeropts2
...
Two small JIT optimizations
2014-09-15 07:09:11 -05:00
skidau
1458b59156
Merge pull request #1065 from Sonicadvance1/AArch64-fix-regcache
...
Fix all the current issues with the AArch64 register cache.
2014-09-15 13:02:16 +10:00
Fiora
3845c27155
JIT: save an instruction in psq_l
2014-09-14 15:12:57 -07:00
Fiora
af471d0a84
JIT: optimize andi(s)_rc
...
We usually don't need to do a sign-extend for the resulting flags.
2014-09-14 15:12:14 -07:00
Fiora
9b8cfcdc29
Interpreter: fix carry calculation in srawx
...
I don't know anything this affected, but it didn't match the manual (or JIT).
2014-09-14 15:08:57 -07:00
comex
74f8a48ee6
Merge pull request #1063 from FioraAeterna/fastermmufix
...
MMU: properly check MEM1 range on Gamecube games
2014-09-14 15:17:09 -04:00
comex
db7617248f
Merge pull request #1021 from FioraAeterna/optimizeca3
...
JIT: Carry optimizations!
2014-09-14 15:08:08 -04:00
Ryan Houdek
4e16abd742
Merge pull request #1083 from FioraAeterna/lzcnt
...
Add LZCNT support, use in cntlzw
2014-09-14 09:18:10 -05:00
Fiora
40b18f09b2
JIT: use LZCNT in cntlzw
2014-09-14 05:36:23 -07:00
Ryan Houdek
1f7871f9e2
Merge pull request #1082 from FioraAeterna/fixccagain
...
JIT: fix JIT with conditional continue off, again
2014-09-14 03:22:03 -05:00
Fiora
653140fcfa
MMU: properly check MEM1 range on Gamecube games
...
Fixes at the very least Rogue Squadron II crashes.
2014-09-14 00:16:37 -07:00
Fiora
9d2b2cae4a
JIT: fix JIT with conditional continue off, again
2014-09-14 00:12:27 -07:00
Scott Mansell
6956df79b2
Fix Fastmem in JitIL for massive speed gains.
...
JitIL's fastmem was stubbed out when Sonicadvance1 merged JitARMIL
into the tree. Since JitARMIL has been deleted, I simply re-arrange
the inheritance to base JitIL on Jitx86Base, so it can inherit the
backpatch function.
Povray Benchmark: 1985 seconds to 1316 seconds.
2014-09-14 16:21:54 +12:00
Pierre Bourdon
84a564a304
Merge pull request #1060 from rohit-n/move-using
...
JitArm32: Minor cleanup.
2014-09-14 01:59:39 +02:00
Pierre Bourdon
9607cc4159
Merge pull request #1071 from archshift/patch-1
...
ConfigManager.cpp: Removed three elements from platform-ifdef
2014-09-14 01:58:17 +02:00
Pierre Bourdon
cb2e53e7c6
Merge pull request #1068 from rohit-n/use-vector
...
CBoot: Use vectors instead of raw pointers in ELF functions.
2014-09-14 01:55:01 +02:00
Pierre Bourdon
2ab19c7cec
Merge pull request #927 from FioraAeterna/fastermmu
...
Fiora's Faster MMU Project
2014-09-14 00:36:07 +02:00
Fiora
32a67ef264
JIT: fix memcheck on float load/store, plus some corner cases
2014-09-13 13:53:19 -07:00
Fiora
b3c1cec197
JIT: fix memcheck with stXx
2014-09-13 13:53:18 -07:00
Fiora
9a19314969
JIT: make memcheck macro support an inverted mode
2014-09-13 13:53:13 -07:00
Fiora
54e26f64c6
JIT: use far code emitter in more places
2014-09-13 13:51:12 -07:00
Fiora
08ac10d00a
PPCAnalyst/JIT: add ability to easily toggle branch and carry merging
2014-09-13 13:48:24 -07:00
Fiora
54129a8ca5
PPCAnalyst: refactor, add carry op reordering and non-cmp reordering
...
Tries as hard as possible to push carry-using operations (like addc and adde)
next to each other. Refactor the instruction reordering to be more flexible
and allow multiple passes.
353 -> 192 x86 instructions on a carry-heavy code block in Pokemon Puzzle.
12% faster overall in Pokemon Puzzle; probably less in typical games (Virtual
Console games seem to be carry-heavy for some reason; maybe a different
compiler?)
2014-09-13 13:48:23 -07:00
Fiora
45d84605a9
JIT64: optimize carry calculations further
...
Keep carry flags in the x86 flags register if used in the next instruction.
2014-09-13 13:48:20 -07:00
Fiora
bea2504a51
JIT64: optimize carry calculations
...
Omit carry calculations that get overwritten later in the block before they're
used. Very common in the case of srawix and friends.
2014-09-13 13:47:43 -07:00
Scott Mansell
cf869fc24f
Fix Idle Skipping in JitIL.
...
Has been broken since the flags-opt merge. The idle skipping code in
JitIL was very brittle and depended on the IL of it's inputs not
changing in any way.
flags-opt changed the IR generated by the cmp instruction, which is part
of the idle loop, causing JitIL to break in really weird ways, which
were almost impossible to track down.
This fixes various wii games crashing/not booting and the Regspill
error on (all?) gamecube mmu games.
2014-09-14 04:36:50 +12:00
Fiora
c5381bae66
JIT: add "far code emitter" to reduce L1I cache pressure
2014-09-13 02:31:31 -07:00
Fiora
09a62505c5
JIT: support paired load/store with MMU on
...
Also change the calling convention, to avoid RSCRATCH being clobbered by
memcheck'd loads.
2014-09-13 02:18:11 -07:00
Fiora
2661bc151a
JIT memcheck: don't flush register state unless an exception occurs
2014-09-12 20:55:00 -07:00
archshift
eae38fd339
ConfigManager.cpp: Removed three elements from platform-ifdef
2014-09-12 17:15:46 -07:00
Rohit Nirmal
edd63c14a4
CBoot: Use vectors instead of raw pointers in ELF functions.
2014-09-12 12:03:06 -04:00
Ryan Houdek
e883a6fb2e
Fix all the current issues with the AArch64 register cache.
...
Fixes all the current issues I've been experiencing.
Scaled back the register cache idea for now so I can actually work on some real instructions.
Tested this work with unit tests so I know it works.
Unit tests are pretty great things.
2014-09-12 06:39:15 -05:00
Fiora
a6c9515b00
JIT: unify subfcx and addcx code
...
Again, shorter and should make future optimizations easier.
2014-09-12 00:04:42 -07:00
Fiora
5d80145dc0
JIT: unify subfe/submex/subfex/adde/addmex/addzex code
...
Shorter, plus should make future optimizations easier.
2014-09-12 00:04:42 -07:00
skidau
64b21a4812
Merge pull request #1054 from comex/i-hate-warnings
...
Fix warnings.
2014-09-12 12:35:47 +10:00
Ryan Houdek
d6ef8dc8c6
Merge pull request #1052 from Sonicadvance1/fix-ppcAnalyst-return
...
Fix the return value of PPCAnalyst.
2014-09-11 21:12:38 -05:00
Lioncash
669a118063
Merge pull request #1058 from lioncash/semicolon
...
Remove some unnecessary semicolons
2014-09-11 19:56:08 -04:00
Pierre Bourdon
a96618b2e6
Merge pull request #1036 from phire/save-jitil
...
Save JitIL! Fix bug so JitIL actually runs again.
2014-09-11 23:27:59 +02:00
Rohit Nirmal
428ee10463
include CommonTypes.h instead of Common.h, remove unused using.
2014-09-11 17:23:59 -04:00
Rohit Nirmal
9f82df0364
Move "using namespace ArmGen" from headers to sources.
2014-09-11 16:46:43 -04:00
Lioncash
b06ec302d1
Remove some unnecessary semicolons
2014-09-11 13:05:31 -04:00
Scott Mansell
784d3937dd
Fix IsMMIOAddress Check.
2014-09-11 19:12:34 +12:00
comex
42acd61ccb
Fix warnings.
2014-09-11 01:55:43 -04:00
Fiora
5726e0cdfb
JIT: use XCHG in MOVTwo
...
Roughly the same speed or slightly faster depending on CPU; mostly just cleaner
since we don't have to pass in a temp.
2014-09-10 22:17:38 -07:00
Ryan Houdek
b8d4834cb1
Fix the return value of PPCAnalyst.
...
In situations where conditional continue isn't supported + if a JIT doesn't implement a instruction that has the FL_ENDBLOCK flag. This would cause an
infinite loop.
In reality all the JITs should implement every FL_ENDBLOCK instruction regardless, but JITIL doesn't implement tw/twi which are FL_ENDBLOCK
instructions.
2014-09-10 21:33:17 -05:00
skidau
67f7e7e28b
Merge pull request #1040 from RachelBryk/movie-cleanup
...
Movie cleanup
2014-09-11 11:47:55 +10:00
Rohit Nirmal
c0f7cab3f5
Remove extra semicolons at the ends of some lines.
2014-09-10 12:17:38 -04:00
Ryan Houdek
71cb09f1ca
Merge pull request #1027 from rohit-n/change-include
...
Include CommonTypes.h instead of Common.h.
2014-09-10 00:35:16 -05:00
Rachel Bryk
08db8c646b
Cleanup Movie.h/cpp.
2014-09-09 21:23:54 -04:00
Rachel Bryk
571727a5ad
Mass rename static variables to s_*.
2014-09-09 21:22:32 -04:00
Fiora
b3a57ff396
JIT: remove op merging code that served no purpose
...
Dolphin already tracks propagation of immediates, so this code didn't really do
anything useful.
2014-09-09 18:09:23 -07:00
skidau
d1439bc1db
Merge pull request #1041 from RachelBryk/kill-g_CoreStartupParameter
...
Kill Core::g_CoreStartupParameter.
2014-09-10 11:00:42 +10:00
Ryan Houdek
16f054db47
Merge pull request #1033 from Sonicadvance1/fix-android-x86_64
...
Fix building x86_64 on Android.
2014-09-09 18:52:27 -05:00
Ryan Houdek
09c1ad1631
Merge pull request #753 from FioraAeterna/integeropts
...
JIT64: various integer optimizations
2014-09-09 04:10:30 -05:00
Ryan Houdek
6a7e8899d3
Merge pull request #1035 from FioraAeterna/fixcrxxx
...
JIT: fix a corner case in crXXX
2014-09-09 00:58:53 -05:00
skidau
e8d8713e03
Merge pull request #1017 from zhuowei/tw_fallback_if_constant_ra
...
Fix various issues with the twi/tw instructions
2014-09-09 15:16:25 +10:00
Ryan Houdek
3a205d663c
Fix building x86_64 on Android.
...
Missed a define in x64MemTools for when the thought process was Android == ARM
Also changes the variable we use for choosing which folders to copy to and from our jni file.
This has changed since the x86_64 build target uses the library folder x86-64, which is stupid and annoying.
2014-09-09 00:11:08 -05:00
Rachel Bryk
f93aa7087c
Kill Core::g_CoreStartupParameter.
2014-09-09 00:24:49 -04:00
skidau
44c4bc134a
Merge pull request #1046 from FioraAeterna/fixdebug
...
JIT: fix running in debug mode
2014-09-09 14:15:35 +10:00
Fiora
0af1352020
JIT: fix running in debug mode
...
Regression in 7fb6628
.
2014-09-08 21:11:41 -07:00
Ryan Houdek
d5da60619e
Merge pull request #1034 from Sonicadvance1/fix-android-arm-ndk64bit
...
Fix building ARMv7 on the 64bit Android NDK.
2014-09-08 22:42:31 -05:00
Fiora
8fc57d61ba
JIT64: support merged branching for rlwinmx, too
...
Not quite as common a branch instruction as cmpwi, but close.
2014-09-08 20:16:41 -07:00
Fiora
b56117de05
JIT64: optimize some special cases of srawix
...
Shift by 31 and 1, both of which are pretty common, can be done in a few less
instructions. Tested with a hwtest.
2014-09-08 20:15:49 -07:00
Fiora
a95d8cbcb4
JIT64: optimize carry handling
...
Carries are rather common and unpredictable, so do them branchlessly wherever
we can.
2014-09-08 20:15:49 -07:00
Fiora
a570c6b4a4
JIT64: tweak srwx/slwx BindToRegister arguments
...
Register B gets immediately moved into the shift register, so even if a == b
it doesn't need to be loaded.
2014-09-08 20:15:49 -07:00
Fiora
5b77617069
JIT64: use LEA for the "a = b + imm" case of addi
2014-09-08 20:15:48 -07:00
Fiora
9977da0550
JIT64: avoid using LEA for adds when not necessary
2014-09-08 20:15:48 -07:00
Fiora
298f85e152
JIT64: optimize sign-extend
...
Remove some code duplication.
Also remove some comments that no longer apply since x86_32 was dropped.
2014-09-08 20:15:47 -07:00
Fiora
faf6bdfd96
JIT64: Optimize cmpXX
...
Use TEST instead of CMP if we're comparing against 0 (rather common), and
optimize the case of immediate compares further.
2014-09-08 20:15:47 -07:00
Fiora
de662a79b7
JIT64: optimize rlwinmx/rlwinix and friends
...
Take advantage of movzx as a replacement for anding with 0xff or 0xffff, and
abuse loads from the register cache to save ops.
2014-09-08 20:15:46 -07:00
Fiora
858296e1c7
JIT64: optimize multiplication by immediate constants
...
Factor out common code and handle a few more common cases.
2014-09-08 20:15:46 -07:00
skidau
0926f1d344
Merge pull request #897 from Sonicadvance1/AArch64-jit
...
Initial AArch64 JIT
2014-09-09 12:34:58 +10:00
Rohit Nirmal
fbc64984ca
Include CommonTypes.h instead of Common.h.
2014-09-08 15:39:58 -04:00
Lioncash
bf0c4a644b
Merge pull request #1002 from waddlesplash/wx-fixup
...
WiiSaveCrypted: migrate to Core/HW.
2014-09-08 15:20:12 -04:00
Augustin Cavalier
e601b6f2c5
WiiSaveCrypted: migrate to Core/HW.
...
There's really no reason to have this in DolphinWX, as it does
not use any DolphinWX code.
2014-09-08 13:31:23 -04:00
Scott Mansell
1bbc7b4dbb
JitIL: Fix matching bug in Store Paired.
...
Most non-wii, non-mmu games run now.
2014-09-08 23:57:00 +12:00
Scott Mansell
199377db43
Fix bug in Load Paired so JitIL actually runs again.
...
Was broken in the PowerPCState Register PR a few days ago.
2014-09-08 23:25:18 +12:00
Fiora
ce494a5e4f
JIT: fix a corner case in crXXX
...
It didn't behave correctly with an input of zero, resulting in some games
breaking (at the least, Fight Night 2). This should be fixed now.
Also clean it up, add a few comments, and fix some variants of the instruction
that are so rare that they probably never got tested.
2014-09-08 04:16:50 -07:00
Ryan Houdek
652b8602d3
Fix building ARMv7 on the 64bit Android NDK.
...
Google has gotten their act together and fixes a few of the signal handling headers.
Change over to a header that works on both r10 32bit and r10 64bit.
32bit has the old "broken" headers as in some didn't even exist.
64bit has the "fixed" headers that one would expect on any regular unix system.
2014-09-08 06:05:03 -05:00
skidau
9529667eae
Merge pull request #1032 from FioraAeterna/fixnocc
...
JIT: fix conditional-continue=off
2014-09-08 17:34:28 +10:00
Fiora
3855396422
JIT: fix conditional-continue=off
2014-09-08 00:28:56 -07:00
comex
4dc090643d
Remove ABI_AlignStack/ABI_RestoreStack and the noProlog option to ABI_CallFunctionRR.
...
The latter being true was the only case where the former would do
anything, and it was never true. They became obsolete with x86's
removal.
2014-09-08 01:00:10 -04:00
comex
c5c0b36046
Remove the inaccurately named ABI_PushAllCalleeSavedRegsAndAdjustStack (it didn't preserve FPRs!) and replace with ABI_PushRegistersAndAdjustStack.
...
To avoid FPRs being pushed unnecessarily, I checked the uses: DSPEmitter
doesn't use FPRs, and VertexLoader doesn't use anything but RAX, so I
specified the register list accordingly. The regular JIT, however, does
use FPRs, and as far as I can tell, it was incorrect not to save them in
the outer routine. Since the dispatcher loop is only exited when
pausing or stopping, this should have no noticeable performance impact.
2014-09-08 01:00:10 -04:00
comex
2dafbfb3ef
Improve code and clarify parameters to ABI_Push/PopRegistersAndAdjustStack.
...
- Factor common work into a helper function.
- Replace confusingly named "noProlog" with "rsp_alignment". Now that
x86 is not supported, we can just specify it explicitly as 8 for
clarity.
- Add the option to include more frame size, which I'll need later.
- Revert a change by magumagu in March which replaced MOVAPD with MOVUPD
on account of 32-bit Windows, since it's no longer supported. True,
apparently recent processors don't execute the former any faster if the
pointer is, in fact, aligned, but there's no point using MOVUPD for
something that's guaranteed to be aligned...
(I discovered that GenFrsqrte and GenFres were incorrectly passing false
to noProlog - they were, in fact, functions without prologs, the
original meaning of the parameter - which caused the previous change to
break. This is now fixed.)
2014-09-08 00:58:56 -04:00
Zhuowei Zhang
e63f7c01a3
Fix twi/tw instructions being switched in Jit64 and JitArm; downgrade the ERROR_LOG printed when tw is ran in the interpreter to DEBUG
2014-09-07 13:35:18 -04:00
Zhuowei Zhang
6026a3f76f
When loading the map file for a DOL/ELF file, extract only the filename from the DOL/ELF'S path
2014-09-07 11:58:32 -04:00
Zhuowei Zhang
b70c0ae521
for tw/twi instructions, force propagated constant into a register to avoid "a1 cannot be immediate" errors from the emitter
2014-09-07 11:31:51 -04:00
skidau
8abe9622fd
Route the wiimote speaker to the sound mixer (the host system's speakers). Emulated Wiimote speaker sounds will go to the host system's speakers. Real Wiimotes will continue to use their own speaker for Wiimote speaker sounds. All Wiimote speaker sound can be disabled by unchecking the "Enable Speaker Data" option.
...
Each emulated Wiimote can have its speaker routed from left to right via the "Speaker Pan" setting in the emulated wiimote settings dialog. Use any value from -127 for leftmost to 127 for rightmost with 0 being the centre.
Added code in the InputConfig to use a spin control for non-boolean values.
Defaulted the setting of "Enable Speaker Data" to disabled.
2014-09-07 14:16:20 +10:00
skidau
3caab10df8
Hooked up the emulated Wiimote speaker.
...
The Wiimotes are positioned as follows:
Wiimote 0 = Center
Wiimote 1 = Left
Wiimote 2 = Right
Wiimote 3 = Center
The Wiimote speaker output can be disabled via the "Enable Speaker Data" checkbox in the Wiimote settings.
2014-09-07 14:16:20 +10:00
skidau
a21ad12f1e
Merge pull request #1014 from RachelBryk/active-movie
...
Add an IsMovieActive function.
2014-09-07 14:05:59 +10:00
Rachel Bryk
5a163ec5e6
Add an IsMovieActive function.
...
Makes things a bit simpler, since this is a common check.
2014-09-06 23:44:25 -04:00
Zhuowei Zhang
2ac2cbbcf6
Downgrade the ERROR log printed when twi is executed in interpreter to DEBUG
2014-09-06 22:36:17 -04:00
Ryan Houdek
cdd2bd6cdc
Add a couple of asserts to the Arm64 JIT to make sure we can load everything.
2014-09-06 20:14:53 -05:00
Ryan Houdek
82dae72b63
Add AArch64 target to the backpatch header.
...
This fixes the issue of a million warnings spawning from this header.
2014-09-06 20:14:53 -05:00
Ryan Houdek
5233c87dec
Add immediate support to the GPR cache.
2014-09-06 20:14:53 -05:00
Ryan Houdek
2b06257e16
Beginning of the AArch64 JIT branch.
...
This is the bare minimum required to run a few games on AArch64.
Was able to run starfield and Animal Crossing to the Nintendo logo.
QEmu emulation is literally the slowest thing in the world, it maxes out at around 12mhz on my Core i7-4930MX.
2014-09-06 20:14:52 -05:00
shuffle2
9302218a19
Merge pull request #851 from lioncash/logg
...
Common: Kill off duplicate log warning definitions
2014-09-06 12:35:19 -07:00
Lioncash
690ed8580c
Common: Kill off duplicate log warning definitions
...
Also embed the log checks rather than using macros
2014-09-06 15:11:29 -04:00
shuffle2
227b79bf84
Merge pull request #1004 from comex/warning-fixes-2
...
Two trivial warning fixes
2014-09-06 11:56:32 -07:00
shuffle2
1b23432d34
Merge pull request #990 from rohit-n/fix-formatting
...
Fix formatting
2014-09-06 11:54:17 -07:00
shuffle2
d0d6f70980
Merge pull request #996 from RachelBryk/clear-mc-bongos
...
Clear movie variables that might have been set from a previous run.
2014-09-06 11:46:21 -07:00
shuffle2
f2237ecd64
Merge pull request #985 from skidau/dsp-loop-hle
...
Moved the loop check back to a post-loop condition in DSP HLE AX ucode.
2014-09-06 11:44:27 -07:00
comex
30e577fda7
Revert "Merge pull request #993 from phire/fix_getOpInfo"
...
This reverts commit a8f724e7c2
, reversing
changes made to 7a1eca149f
.
For why I'm reverting this entirely, see pull request 997.
2014-09-06 13:46:17 -04:00
comex
48ef6fcad1
Fix signed/unsigned warning in GeckoCode.cpp.
...
No actual bug here.
2014-09-06 13:34:00 -04:00
comex
6c382f6627
Merge pull request #926 from comex/ppcstate-reg
...
PowerPCState register (and rationalize register usage, and add some registers to replace it)
2014-09-06 13:24:38 -04:00
comex
6fd0333c14
Symbolicize explicit uses of x86 registers where possible (GPRs only for now).
...
Uses are split into three categories:
- Arbitrary (except for size savings) - constants like RSCRATCH are
used.
- ABI (i.e. RAX as return value) - ABI_RETURN is used.
- Fixed by architecture (RCX shifts, RDX/RAX for some instructions) -
explicit register is kept.
In theory this allows the assignments to be modified easily. I verified
that I was able to run Melee with all the registers changed, although
there may be issues if RSCRATCH[2] and ABI_PARAM{1,2} conflict.
2014-09-06 13:18:31 -04:00
comex
100a7ac97b
Actually add RCX, plus RDI and RSI on Unix.
...
And switch to a register order that consistently prefers callee-save to
caller-save. phire suggested putting rdi/rsi first, even though they're
caller-save, to save code space; this is more conservative and I can do
that later.
2014-09-06 13:16:21 -04:00
comex
8dea26762d
Rationalize temporary register usage.
...
Rather than using a variety of registers including RSI, ABI_PARAM1
(either RCX or RDI), RCX, and RDX, the rule is:
- RDI and RSI are never used. This allows them to be allocated on Unix,
bringing parity with Windows.
- RDX is a permanent temporary register along with RAX (and is thus not
FlushLocked). It's used frequently enough that allocating it would
probably be a bad idea, as it would constantly get flushed.
- RCX is allocatable, but is flushed in two situations:
- Non-immediate shifts (rlwnm), because x86 requires RCX to be used.
- Paired single loads and stores, because they require three
temporary registers: the helper functions take two integer
arguments, and another register is used as an index to get the
function address.
These should be relatively rare.
While we're at it, in stores, use the registers directly where possible
rather than always using temporaries (by making SafeWriteRegToReg
clobber less). The address doesn't need to be clobbered in the usual
case, and on CPUs with MOVBE, neither does the value.
Oh, and get rid of a useless MEMCHECK.
This commit does not actually add new registers to the allocation order;
it is intended to test for any performance or correctness issues
separately.
2014-09-06 13:16:20 -04:00
comex
67cdb6e07a
Factor code from ABI_CallFunctionRR and GetWriteTrampoline into a helper, and fix a special case.
...
The special case is where the registers are actually to be swapped (i.e.
func(ABI_PARAM2, ABI_PARAM1); this was previously impossible but would
be ugly not to handle anyway.
2014-09-06 13:16:20 -04:00
comex
487eb967eb
Fix a bug with update loads in memcheck mode.
...
In two cases, my old code was using a temporary register but not saving
it properly; it basically worked by accident (an otherwise useless
FlushLock was causing CallerSavedRegistersInUse to think it was in use
by the GPR cache, even though it was actually a temporary).
I'm going to modify this in the next commit to use RDX, but I didn't
want to leave a broken revision in the middle.
2014-09-06 13:16:20 -04:00
comex
48891c6359
Reserve a register for ppcState.
...
The register is RBP, previously in the GPR allocation order. The next
commit will investigate whether there are too few GPRs (now or before),
but for now there is no replacement.
Previously, it was accessed RIP relatively; using RBP, anything in the
first 0x100 bytes of ppcState (including all the GPRs) can be accessed
with three fewer bytes. Code to access ppcState is generated constantly
(mostly by register save/load), so in principle, this should improve
instruction cache footprint significantly. It seems that this makes a
significant performance difference in practice.
The vast majority of this commit is mechanically replacing
M(&PowerPC::ppcState.x) with a new macro PPCSTATE(x).
Version 2: gets most of the cases which were using the register access
macros.
2014-09-06 13:16:18 -04:00
Rohit Nirmal
629ceaf2b1
Split some parts of UpdateBoundingBox into multiple lines. Also,
...
fix issues causing failure on Lint.
2014-09-06 09:49:27 -05:00
Rachel Bryk
2a82b591e1
Clear movie variables that might have been set from a previous run.
2014-09-06 07:10:41 -04:00
skidau
a8f724e7c2
Merge pull request #993 from phire/fix_getOpInfo
...
GetOpInfo: Assert on all invalid Ops.
2014-09-06 19:50:15 +10:00
Scott Mansell
23b54117cd
GetOpInfo: Assert on all invalid Ops.
...
GetOpInfo was returning null pointers for invalid ops in subtables
instead of asserting an error. This was causing segfaults when the
jit tried to jit invalid code.
2014-09-06 20:09:30 +12:00
Scott Mansell
1963717855
Panic on invalid reads/writes for non-mmu games.
...
Previously it would fall through to the mmu code path, and raise a dsi
exception, which it would never check for, so it would continue
executing code silently.
2014-09-06 19:16:54 +12:00
Scott Mansell
96e92d33b7
Don't write to EXRAM if it doesn't exist.
...
Previously, if a gamecube game wrote to an EXRAM address, dolphin would
segfault.
2014-09-06 19:16:02 +12:00
Lioncash
e035ac5591
Merge pull request #992 from phire/betterassert
...
Make Invalid instruction debug assert a non-debug assert.
2014-09-06 03:12:19 -04:00
Scott Mansell
50657548b1
Make Invalid instruction debug assert a non-debug assert.
...
Users need to be able to see this error message. Otherwise they can't
report bugs.
2014-09-06 19:04:34 +12:00
Rohit Nirmal
1ecb318bcc
Fix some formatting (new lines on collapsed single-line conditionals,
...
new lines for opening braces).
2014-09-06 01:23:05 -05:00
shuffle2
a831121683
Merge pull request #979 from shuffle2/fix-memcard-flush3
...
raw memcards: revert last change so flushes are still time-driven.
2014-09-05 22:27:12 -07:00
Shawn Hoffman
96d7b642f4
raw memcards: revert last change so flushes are still time-driven.
...
It turns out the actual slowdown was from memcpy'ing the entire
memcard buffer...not synchronization overhead or the flush itself.
2014-09-05 21:16:59 -07:00
skidau
9800252a28
Re-added the acc_end_reached logic for AXWii.
2014-09-06 11:57:37 +10:00
skidau
0154b8edfd
Moved the loop check back to a post-loop condition in DSP HLE AX ucode. This brings DSP HLE in line with DSP LLE and fixes issue 7627. This effectively reverts ef501137be
which is not needed as the loop check is now corrected.
2014-09-06 11:02:32 +10:00
Fiora
4ec8f83a1a
JIT: fix branch merging with bclr
2014-09-05 13:58:06 -07:00
Fiora
801153301f
Remove debug printf from earlier commit
2014-09-05 10:31:29 -07:00
Fiora
07e0c917c6
Revert "JIT64: optimize CA calculations"
2014-09-05 10:26:30 -07:00
comex
97420c6ec6
Merge pull request #852 from FioraAeterna/optimizeca
...
JIT64: optimize CA calculations
2014-09-05 11:52:02 -04:00
comex
aa1df21bb6
Merge pull request #947 from FioraAeterna/rsqrte
...
JIT: implement frsqte
2014-09-05 11:48:00 -04:00
comex
d4b1d42a21
Merge pull request #975 from FioraAeterna/jittimerinline
...
JIT: completely inline timer reading
2014-09-05 11:45:22 -04:00
shuffle2
3d88dfbad9
Merge pull request #701 from LPFaint99/memcard
...
GCI Folder: try to reserve space for new saves from the current game
2014-09-04 23:02:23 -07:00
Fiora
2f9e9bf1fc
JIT: completely inline timer reading
...
Should be a bit faster on games that heavily use the timer.
2014-09-04 21:55:36 -07:00
LPFaint99
e6e50ee621
GCI Folder: try to leave 10% of the blocks free. only applies if the save is not for the current game
2014-09-04 20:59:38 -07:00
shuffle2
a9a6270982
Merge pull request #774 from magcius/texdecode-cleanup
...
Clean up the TextureDecoder and some related things
2014-09-04 19:37:49 -07:00
Jasper St. Pierre
a5297f6da8
PixelEngine: Remove unused AllowIdleSkipping and all references to it
2014-09-04 17:25:59 -07:00
MikeRavenelle
411c060504
Checkbox for iteration
...
Added the option to handle whether the user wants to iterate through the
assignment of button mappings or assign them one at a time.
fixed formatting issues and code style.
I excluded this option from the config file. This stopped the check box value and the boolean from becoming offset. Since the option should always start as false.
This still causes an issue with the Wiimote input, since the class variable that keeps the state will be wiped, but the check box value will stay the same after closing/reopening without closing the entire Wiimote configuration. I am looking for a way to resolve this.
I also reduced wait time to 2.5 seconds vs. the 5 seconds previously. Seemed to be a little long.
These changes apparently did not go through.
This should fix the Wiimote issue.
2014-09-04 19:23:04 -05:00
shuffle2
127fc1bdc1
Merge pull request #965 from FioraAeterna/srawixzero
...
JIT: remove srawix fallback
2014-09-04 08:44:33 -07:00
lioncash
9f48f02514
Core: Make the tables in ARDecrypt.cpp static
2014-09-04 09:29:34 -04:00
lioncash
4b329a0a75
Core: Fix variable prefixing of statics in Core.cpp
...
These aren't globals.
2014-09-04 08:26:15 -04:00
Fiora
a63b9f6713
JIT: remove srawix fallback
...
As far as I can tell, this has literally been here since the start of the git
history; maybe it was stubbed out because the author wasn't sure it was right?
It matches the PPC/Broadway manuals perfectly, though.
2014-09-03 23:39:52 -07:00
LPFaint99
f6d89c5c98
GCI Folder: if there are too many files in the folder, try to leave free directory entries.
...
Rule: Load first 112 files, any remaining files in the folder are ignored unless they are the same gameid as the current game
2014-09-03 21:15:41 -07:00
Lioncash
956b0708b4
Core: Initialize all JITIL RegInfo members in the initializer list.
2014-09-03 23:06:05 -04:00
shuffle2
1f6f01e2a0
Merge pull request #955 from skidau/geckocodes-mmio
...
Added code to patch the codehandler's MMIO address
2014-09-03 15:33:57 -07:00
skidau
0da22d687d
Added code to patch the codehandler's MMIO address to the currently running system. Added code to detect the location of where the code list should be. This allows any Gecko code handler to be used. Replace the codehandler.bin file with the code handler to be used (e.g. codehandleronly.bin).
2014-09-04 07:44:45 +10:00
Fiora
068b5c26f4
JIT: fix regression in timer patch
2014-09-03 14:36:38 -07:00
Fiora
1b50f9df14
JIT: implement fres
...
Mostly a straightforward translation of the interpreter code, with a few
tricksy optimizations and fallbacks for rare paths.
2014-09-03 12:15:30 -07:00
Fiora
c72a133206
JIT: implement frsqrte
...
Mostly a straightforward translation of the interpreter code, with a few
tricksy optimizations and fallbacks for rare paths.
2014-09-03 11:21:04 -07:00
skidau
08715167a8
Added code to patch the codehandler's MMIO address to the currently running system. Added code to detect the location of where the code list should be. This allows any Gecko code handler to be used. Replace the codehandler.bin file with the code handler to be used (e.g. codehandleronly.bin).
2014-09-04 00:48:52 +10:00
Rachel Bryk
5adbc83453
Change ControlState typedef to double, and change all related floats/doubles to use it.
...
Fixes an off by 1 issue related to double->float->double conversion, and eliminates numerous warnings.
2014-09-03 03:08:09 -04:00
comex
64575d565a
Merge pull request #923 from FioraAeterna/fixcallersave
...
JIT: Fix caller-save registers on WIN64
2014-09-03 02:27:44 -04:00
Dolphin Bot
e2dfa603a0
Merge pull request #891 from RachelBryk/netplay-time
...
Allow system time to move forward during netplay.
2014-09-03 08:26:51 +02:00
comex
51a5311d6a
Merge pull request #949 from comex/eviction-policy
...
Evict registers from the cache based on LRU.
2014-09-03 02:22:45 -04:00
shuffle2
50879f5624
Merge pull request #905 from RachelBryk/status-bar-messages
...
Add OSD messages back to status bar.
2014-09-02 23:21:58 -07:00
shuffle2
d20f5fb861
Merge pull request #946 from ChuckRozhon/fix_cast_bug
...
Fixed bug introduced in PR#803 caused by casting
2014-09-02 22:58:53 -07:00
Ryan Houdek
1ad1a9062a
Remove PowerPCState::DebugCount.
...
This value was "helpful" for debugging when the stack got corrupted.
Helpful that if gpr[1](Which is the stack pointer with PPC ABI) is zero then the interpreter would spam huge amounts of annoy text saying that we
managed to get in to a "corrupted" state.
This is incremented every instruction on the interpreter, or every block run on the JIT64....Only if debugging is enabled(JIT64 it is a const
variable)
The message is only outputted when interpreter is used and debugging is enabled.
2014-09-03 00:26:57 -05:00
comex
f5c7f676dc
Evict registers from the cache based on LRU.
...
The old method would always evict the first suitable register, i.e. the
same register every time once the cache got full. The cache doesn't get
terribly often, but the result is pathological...
2014-09-03 01:06:14 -04:00
Dolphin Bot
fa29b18e3e
Merge pull request #840 from FioraAeterna/jittimer
...
JIT: implement timer support in mtspr
2014-09-03 07:01:20 +02:00
Fiora
6875d911f1
JIT: merge paired timebase reads where possible
...
Combined with the previous patch, ~1% faster overall on F-Zero GX.
2014-09-02 21:49:24 -07:00
Fiora
816d056657
JIT: implement timer support in mtspr
...
Faster, of course, since we avoid the interpreter, but also means we can
get more a more accurate timer in long blocks by adding the offset from the
start of the block to the retrieved timer. I don't know if this will actually
fix any issues, but it's more correct and a nearly-free improvement.
2014-09-02 21:47:45 -07:00
Charles Rozhon
0e5fde52ac
Fixed bug introduced in PR#803 caused by casting
...
Also changed casts to C++ style casts to removed some of the ambiguity.
2014-09-02 21:50:43 -05:00
Ryan Houdek
1bc246735b
Add some static_asserts to the Arm32 JIT to make sure ppcState is sane.
2014-09-02 18:38:42 -05:00
Fiora
6655c7775e
JIT: Fix callee-save registers on WIN64
2014-09-02 10:56:14 -07:00
Pierre Bourdon
ddb2aefedf
Merge pull request #904 from FioraAeterna/dcbz
...
JIT64: try enabling dcbz again
2014-09-02 15:41:40 +02:00
shuffle2
cc6db8cf26
Merge pull request #939 from shuffle2/fix-memcard-flush2
...
move the decision to delay raw memcard flushes out of the thread.
2014-09-02 00:28:31 -07:00
Shawn Hoffman
44a1a7cdbe
move the decision to delay raw memcard flushes out of the thread.
...
This allows the flush to work better with games which hammer
memcard accesses over short periods as it delays more of the work.
2014-09-01 22:38:31 -07:00
Shawn Hoffman
0625b5defb
windows: make failure to load hid.dll or bthprops.cpl not pop a msgbox, and not crash
2014-09-01 21:27:44 -07:00
Shawn Hoffman
266992684d
msvc: remove some remnants of SDL and DSound from projects and general cleanup.
2014-09-01 21:27:44 -07:00
Dolphin Bot
e5705a9273
Merge pull request #908 from FioraAeterna/fixenhancedbat
...
MMU: fix enhanced BAT support
2014-09-02 05:46:03 +02:00
Fiora
3aa40dab00
JIT64: optimize carry calculations
...
Omit carry calculations that get overwritten later in the block before they're
used. Very common in the case of srawix and friends.
2014-09-01 20:41:48 -07:00
Fiora
a40278b1c4
JIT64: support merged branching for rlwinmx, too
...
Not quite as common a branch instruction as cmpwi, but close.
2014-09-01 20:41:12 -07:00
Fiora
10d691a277
JIT64: optimize some special cases of srawix
...
Shift by 31 and 1, both of which are pretty common, can be done in a few less
instructions. Tested with a hwtest.
2014-09-01 20:41:12 -07:00
Fiora
805be80f12
JIT64: Optimize carry handling
...
Carries are rather common and unpredictable, so do them branchlessly wherever
we can.
2014-09-01 20:41:11 -07:00
Fiora
ee24d4714a
JIT64: tweak srwx/slwx BindToRegister arguments
...
Register B gets immediately moved into the shift register, so even if a == b
it doesn't need to be loaded.
2014-09-01 20:41:11 -07:00
Fiora
ad51fc7c4b
JIT64: use xor instead of mov for loading a zero regcache immediate
2014-09-01 20:41:10 -07:00
Fiora
27996a65cf
JIT64: use LEA for the "a = b + imm" case of addi
2014-09-01 20:41:10 -07:00
Fiora
cd0c52b537
JIT64: avoid using LEA for adds when not necessary
2014-09-01 20:41:10 -07:00
Fiora
355850f499
JIT64: optimize sign/zero-extend
...
Also remove some comments that no longer apply since x86_32 was dropped.
2014-09-01 20:41:09 -07:00
Fiora
61af91ff16
JIT64: Optimize cmpXX
...
Use TEST instead of CMP if we're comparing against 0 (rather common), and
optimize the case of immediate compares further.
2014-09-01 20:41:09 -07:00
Fiora
41c3dde737
JIT64: optimize rlwinmx/rlwinix and friends
...
Take advantage of movzx as a replacement for anding with 0xff or 0xffff, and
abuse loads from the register cache to save ops.
2014-09-01 20:41:08 -07:00
Fiora
58dc802ce2
JIT64: optimize multiplication by immediate constants
...
Factor out common code and handle a few more common cases.
2014-09-01 20:41:08 -07:00
Pierre Bourdon
24b5ce2ddc
Merge pull request #917 from lioncash/input
...
InputCommon: Rename class InputPlugin to InputConfig
2014-09-01 16:36:52 +02:00