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
Ryan Houdek
c5f9301e6e
Add a comment to the software renderer that stride should be implemented
2014-09-19 12:33:15 -05:00
magumagu
32e5043b29
WIP XFB scaling.
...
Still an ugly mess.
2014-09-19 12:33:15 -05:00
Ryan Houdek
0d1c1e9477
Merge pull request #1122 from Sonicadvance1/Android-reduce-confusion
...
Show OpenGL or OpenGL ES on Android depending on what the device supports
2014-09-19 09:21:58 -05:00
Ryan Houdek
e18860830a
Show OpenGL or OpenGL ES on Android depending on what the device supports.
...
Reduces confusion for the users
2014-09-19 09:21:16 -05:00
Ryan Houdek
d544c563ea
Merge pull request #1112 from Sonicadvance1/AArch64-mov-aliases
...
Add AArch64 emitter aliases for MOV and MVN.
2014-09-19 09:19:33 -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
Lioncash
c33a9de6af
FrameTools: Set focus on Windows via CFrame::SetFocus
2014-09-18 21:15:26 -04:00
Fiora
1b425dedd1
JIT: add ps_cmp0/ps_cmp1 implementations using current fcmp code
2014-09-18 17:57:28 -07:00
Fiora
3c49200b22
X64Emitter: add MOVHLPS/MOVLHPS
2014-09-18 17:57:27 -07:00
Ryan Houdek
a8abbdae85
Merge pull request #1106 from FioraAeterna/fixdebug2
...
JIT: fix debug mode
2014-09-18 19:52:35 -05:00
Lioncash
68d62c3d32
Merge pull request #1110 from lioncash/apple-code
...
DolphinWX: Fix GC/Wiimote input windows randomly crashing on OSX
2014-09-18 20:17:16 -04:00
shuffle2
88196d373f
Merge pull request #1117 from shuffle2/qt-plugins
...
windows/qt: add (hopefully) all plugins DolphinQt should possibly need.
2014-09-18 15:46:28 -07:00
Shawn Hoffman
035a1c0ec2
windows/qt: add (hopefully) all plugins DolphinQt should possibly need.
...
For now they are all copied to binary directory, once the project is more mature
it can be stripped down.
2014-09-18 15:24:14 -07: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
Ryan Houdek
7608e3f11e
Add AArch64 emitter aliases for MOV and MVN.
2014-09-18 16:30:40 -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
Lioncash
207d7787a4
DolphinWX: Fix GC/Wiimote input windows randomly crashing on OSX
2014-09-18 14:52:12 -04:00
Ryan Houdek
e9164247d6
Merge pull request #1108 from FioraAeterna/fixdebugscroll
...
Debugger: scroll by multiples of 4 bytes
2014-09-18 06:52:44 -05: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
20c3a0f2d8
Debugger: scroll by multiples of 4 bytes
...
Avoids that weird effect where scrolling offsets code from 4-byte boundaries,
showing nonsense 75% of the time.
2014-09-18 03:54:57 -07:00
Fiora
8ce4676605
Debugger: make opcode search a bit better
...
Search a wider range (not all games fit in the originally searched range).
Print a notice if the opcode isn't found, instead of silently failing.
2014-09-18 03:47:46 -07: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
shuffle2
978a855d3f
Merge pull request #1090 from shuffle2/dolphin-qt
...
DolphinQt -- initial commit
2014-09-16 22:21:16 -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
Fiora
d3dee1d7ed
GekkoDisassembler: fix some float opcodes
2014-09-16 02:06:40 -07:00
comex
7eea7080d9
Fix missing "return"
2014-09-16 00:25:21 -04:00
skidau
8361d2b1da
Merge pull request #805 from FioraAeterna/storerefactor
...
JIT: support immediate stores
2014-09-16 13:31:39 +10:00
Dolphin Bot
bef2016909
Merge pull request #1091 from FioraAeterna/fixdisasm
...
GekkoDisassembler: fix/improve disassembly for a few instructions
2014-09-16 03:53:18 +02:00
Fiora
7368c2ee9e
GekkoDisassembler: fix/improve disassembly for a few instructions
2014-09-15 18:48:54 -07:00
Shawn Hoffman
9d57ac68a4
Add Qt submodule for windows.
2014-09-15 15:07:42 -07:00
Shawn Hoffman
ae3a5ce9e3
Qt: Add msvc support
2014-09-15 15:07:33 -07:00
Augustin Cavalier
16c6a19190
DolphinQt: initial commit.
...
This adds the beginning of the DolphinQt user interface. It doesn't
do anything useful yet and only builds via CMake.
2014-09-15 15:06:05 -07:00
comex
847f78e4cc
Merge pull request #1089 from FioraAeterna/fixemittersilentfail
...
x64Emitter: fix silent failure if WriteNormalOp is passed two memory operands
2014-09-15 14:53: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
02dce5dbbf
x64Emitter: fix silent failure if WriteNormalOp is passed two memory operands
...
Should now fail loudly and clearly instead.
2014-09-15 07:08:08 -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
Lioncash
b307bb68d7
Merge pull request #1080 from lioncash/wx-crap
...
Kill off the wx casts within InputCommon and GLInterface.
2014-09-14 13:21:34 -04:00
Ryan Houdek
4e7f284a81
Merge pull request #1064 from Sonicadvance1/AArch64-Fix-MOVI2R
...
Fix AArch64 MOVI2R helper function.
2014-09-14 09:26:02 -05: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
Fiora
997c5c2d0e
x64Emitter: add LZCNT/TZCNT support and detection
...
Also add a unit test.
2014-09-14 05:31:22 -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
Lioncash
357c0adc3c
Kill off the wx casts within InputCommon and GLInterface.
...
All because someone didn't actually return the wxWindow handle for the edge case.
2014-09-14 01:07:08 -04: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
Lioncash
6cfc5b9849
InputCommon: Initialize NSDictionaries using literal syntax.
2014-09-13 21:32:33 -04:00
Lioncash
068799ff73
UnitTests: Fix misplaced braces in the x64Emitter tests
2014-09-13 20:45:17 -04: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
eee473ed5f
Merge pull request #1066 from lioncash/breaks
...
DiscIO: Remove unnecessary break statements.
2014-09-14 01:58:44 +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
439068acae
Merge pull request #1055 from FioraAeterna/smallermov
...
X64Emitter: support shorter mov reg, imm opcodes
2014-09-14 01:57:36 +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
Fiora
1bd8d1ee98
Add immediate tests for WriteNormalOp
...
also fix a bug in Bochs that was preventing adc from passing.
2014-09-13 16:39:34 -07: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
Dolphin Bot
d72f61d62f
Merge pull request #1073 from phire/save_jitil2
...
Fix Idle Skipping in JitIL.
2014-09-13 18:40:57 +02:00