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
Ryan Houdek
07a8b1b28f
Merge pull request #1422 from randomstuff/fix-llvm
...
Fix LLVM
2014-10-27 18:58:10 -06:00
Ryan Houdek
81dda593cd
Merge pull request #1404 from Sonicadvance1/fix-ARMv7
...
Fixes some ARMv7 regressions.
2014-10-27 05:15:17 -06:00
Ryan Houdek
043bd710a0
Merge pull request #1394 from Sonicadvance1/fix-arm-cpudetect
...
Fixes ARM CPU detection routine for the hardware.
2014-10-27 05:07:24 -06:00
Ryan Houdek
acacbc0c46
Merge pull request #1412 from Sonicadvance1/fix-LLVM-detection
...
Fixes LLVM library detection.
2014-10-26 15:33:52 -06:00
Ryan Houdek
bd1a192faf
Fixes LLVM library detection.
...
I must have had a dirty cmake configuration which didn't encounter this issue.
Make sure we are using LLVM_DEFINITIONS to know where we are linking to libraries at.
Link against libLLVM-${VERSION}, the other one was linking us against static libraries...
2014-10-26 16:17:57 -05: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
Ryan Houdek
10c3896421
Merge pull request #1399 from dolphin-emu/revert-1389-remove-armv7-opt
...
Revert "Removes ARMv7 specific byteswap routines from CommonFuncs.h"
2014-10-25 15:28:13 -05:00
Ryan Houdek
3ac2d8e1f1
Revert "Removes ARMv7 specific byteswap routines from CommonFuncs.h"
2014-10-25 15:28:04 -05:00
Ryan Houdek
c2364a54c1
Fixes packaging OS X binary with spaces in the directory name.
2014-10-25 10:51:54 -05:00
Ryan Houdek
b66a7f83c2
Fixes ARM CPU detection routine for the hardware.
...
We weren't dropping a newline character from the string, we were cutting off the last character of the hardware name.
This fixes my TK1 being called 'lagun' when it's name is 'laguna'
2014-10-25 09:14:14 -05: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
Ryan Houdek
cb10bef9a4
Implements LLVM based disassembler for the debugger.
...
This will work for all of our platforms, x86, ARMv7, and AArch64.
Main issue with this is that LLVM's cmake files aren't correctly finding the LLVM install.
Not sure if this is Ubuntu's issue or not, it may just work on other operating systems.
We could potentially improve this, you can pass in a specific CPU in to the LLVM disassembler. This would probably affect latency times that are
reported by LLVM's disassembly? This needs to be further investigated later.
2014-10-24 18:10:21 -05:00
Ryan Houdek
eb432563d2
Removes unused cmake script for finding GLEW.
2014-10-24 17:28:34 -05:00
Ryan Houdek
6483f8d45c
Removes ARMv7 specific byteswap routines from CommonFuncs.h
...
GCC has optimized this using the exact same code since 4.7 or 4.8.
Android building falls back to the __linux__ route.
No need to keep these around anymore since we aren't building on an old GCC version.
2014-10-24 16:21:54 -05:00
Ryan Houdek
5204acd5ee
Fixes OpenSLES's sample rate.
...
I was statically setting the sample rate to 44.1Khz when we default to run at 48Khz.
This was causing audio to sound much too low.
2014-10-23 11:29:49 -05: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
Ryan Houdek
2f48d71ddf
Merge pull request #1371 from Sonicadvance1/GLES31-EarlyZ
...
Enables EarlyZ support in OpenGL ES 3.1.
2014-10-23 10:26:12 -05:00
Ryan Houdek
ec56c3b8d3
Fixes black screen issue on EGL+X11 systems.
...
We weren't setting the backbuffer dimensions on this platform when the window is created.
This required a resize event to first be fired in order to see anything.
So instead do like GLX + X11 platforms do and query the dimensions and set the backbuffer to them.
Should fix issue 7666.
2014-10-23 08:06:42 -05:00
Ryan Houdek
a2c8783417
Enables EarlyZ support in OpenGL ES 3.1.
2014-10-23 07:34:07 -05: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
Ryan Houdek
ce3a039eed
Merge pull request #1362 from chrisballinger/10.10-opengl-build-fix
...
Fix OpenGL linker error on Yosemite
2014-10-22 03:20:03 -05:00
Ryan Houdek
ecf65d6f1f
Cleans up the JIT block viewer in the WX UI.
...
This code was an absolute mess. It had allocated an arbitrarily large string buffer to hold instructions that were disassembled.
Strip out all of the nasty raw C string manipulation and replaces it with ostringstream usage.
Fixes an issue where if you didn't have a JIT recompiler running then Dolphin would instantly crash if you tried comparing PPC to x86 code.
Changed the disassembly of the host side code from being inline to the function to instead being in a class, this will be required when I add support
for ARMv7 and AArch64 to this window.
2014-10-21 12:27:59 -05:00
Ryan Houdek
2e94814441
Changes from ARMv6 NOP to ARMv7 NOP.
...
Dolphin doesn't support ARMv6. Get this out of here.
2014-10-21 14:17:07 +00:00
Ryan Houdek
b3a79f00d4
Removes Android cmake option.
...
We auto detect if we are building for Android. No need to have this option.
2014-10-21 08:47:25 -05: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
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
Ryan Houdek
b769331f50
Merge pull request #1325 from Sonicadvance1/Android-OpenSLES-race
...
Fix a race condition in our OpenSL ES audio backend.
2014-10-19 08:53:19 -05:00
Ryan Houdek
939fa492c8
Merge pull request #1323 from Sonicadvance1/Android-crash
...
Fix a crash on Android when unplugging a controller during emulation.
2014-10-19 08:48:52 -05:00
Ryan Houdek
b3cee80faa
Merge pull request #1321 from Sonicadvance1/Qualcomm-v95
...
Change driver details to reflect Qualcomm's changes with their v95 driver
2014-10-19 08:48:42 -05:00
Ryan Houdek
e236d28585
Remove a hard dependency from libGL from the software renderer.
...
I must have missed this when dropping OpenGL library includes. This is annoying when on a system that doesn't have libGL.
2014-10-19 07:48:14 -05:00
Ryan Houdek
821a41e62f
Remove hard dependency of GLX from Dolphin with X11.
...
This is particularly annoying on a EGL only system that doesn't have GLX.
2014-10-19 07:48:11 -05:00
Ryan Houdek
73512ad38f
Fix a race condition in our OpenSL ES audio backend.
...
After calling enqueue the callback would fire before we had assigned g_mixer a value.
This would cause a fun crash to happen.
2014-10-18 08:32:14 -05:00
Ryan Houdek
ceb08acf23
Fix a crash on Android when unplugging a controller during emulation.
...
If the action we are getting is a ACTION_CANCEL, it means that the "gesture" is aborted and we shouldn't perform any more actions on it.
2014-10-18 07:33:51 -05:00
Ryan Houdek
9108a11af4
Change driver details to reflect Qualcomm's changes with their v95 driver.
...
They fixed their issues with dynamic UBO array member access.
There are many other issues though.
2014-10-18 02:50:57 -05:00
Ryan Houdek
0a0183ee44
Add AArch64 JIT recompiler to wxWidgets UI.
...
This also fixes an issue where it would show the ARMv7 JIT recompiler on AArch64, also the issue of showing the now non-existant ARM JITIL.
Also fixes an issue where it would show the x86 JIT recompilers on a non ARM platform.
2014-10-12 22:49:07 -05:00
Ryan Houdek
f6233cd531
Merge pull request #1254 from RachelBryk/unicode
...
Replace wxFileExists() with File::Exists().
2014-10-10 17:35:22 -05:00
Ryan Houdek
5c1acc99fb
Merge pull request #1255 from dolphin-emu/x64-emitter-minor
...
Add a few missing instructions to the x64 emitter
2014-10-10 15:36:11 -05:00
Ryan Houdek
e315cd41a2
Merge pull request #1246 from FioraAeterna/fixblocklinkingagain
...
JIT: fix accidental disabling of block linking by default
2014-10-09 14:06:17 -05:00
Ryan Houdek
2423b9b2bd
Merge pull request #1237 from Sonicadvance1/fix-ARM32-XER
...
Fix ARMv7 JIT from XER optimization.
2014-10-07 21:56:36 -05: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
Ryan Houdek
0a1855d2ca
Merge pull request #1158 from comex/its-like-i-have-it-out-for-jitil-or-something
...
Fix fastmem in JitIL after 755bd2c4 .
2014-09-25 16:12:04 -05:00
Ryan Houdek
0b6ec44e42
Merge pull request #1070 from FioraAeterna/optimizeca4
...
JIT: Reorganize carry to store flags separately instead of part of XER
2014-09-24 14:31:58 -05: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
Ryan Houdek
7f1185b941
Merge pull request #1140 from lioncash/android
...
Android: Silence a few warnings
2014-09-22 16:20:53 -05:00
Ryan Houdek
9206dd016e
Merge pull request #1135 from FioraAeterna/twidisasmfix
...
Disassembler: fix disassembly of some twi instructions
2014-09-21 14:19:05 -05:00
Ryan Houdek
1cb07ffc14
[AArch64] Implement twi and tw.
2014-09-21 14:17:04 -05: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
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
Ryan Houdek
2db7413a19
Merge pull request #1118 from lioncash/lolwinapi
...
FrameTools: Set focus on Windows via CFrame::SetFocus
2014-09-19 20:48:27 -05: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
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
2e1377ab7e
Merge pull request #1107 from FioraAeterna/opcodesearch
...
Debugger: make opcode search a bit better
2014-09-19 15:50:54 -05:00
Ryan Houdek
235546bf94
Merge pull request #1113 from Sonicadvance1/AArch64-integer-ops
...
[AArch64] Implement a bunch of integer instructions
2014-09-19 15:47:23 -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
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
af25b15348
Merge pull request #977 from Sonicadvance1/xfb-scaling-rebased
...
XFB Scaling
2014-09-19 12:54:19 -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
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
Ryan Houdek
a8abbdae85
Merge pull request #1106 from FioraAeterna/fixdebug2
...
JIT: fix debug mode
2014-09-18 19:52:35 -05: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
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
Ryan Houdek
68b2d86daf
Merge pull request #1088 from FioraAeterna/revert-1077-integeropts2
...
Revert "Two small JIT optimizations"
2014-09-15 09:03:16 -05:00
Ryan Houdek
20af50b1c4
Merge pull request #1077 from FioraAeterna/integeropts2
...
Two small JIT optimizations
2014-09-15 07:09:11 -05:00
Ryan Houdek
8605a38ba4
Merge pull request #1084 from waddlesplash/stupid-externals
...
PolarSSL: don't install stuff.
2014-09-14 13:42:37 -05: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
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
Ryan Houdek
a30b4f13a1
Merge pull request #1067 from lioncash/fallthrough
...
DolphinWX: Get rid of fallthrough in ScanForISOs
2014-09-13 04:52:30 -05:00
Ryan Houdek
c9a7175418
Merge pull request #1072 from lioncash/arm
...
ARM64: Make getters within ArithOption const.
2014-09-12 21:44:01 -05: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
Ryan Houdek
17d31ecd6c
Fix AArch64 MOVI2R helper function.
...
In the case of a zero immediate, it wouldn't generate code at all.
Also in the case of max u32/u64, use ORN to optimize it.
2014-09-12 05:45:10 -05: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
Ryan Houdek
5061a33c29
Merge pull request #1051 from Sonicadvance1/ARM-Common
...
Include a missing include in the ARM emitter's common code.
2014-09-11 21:12:21 -05: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
Ryan Houdek
44baab30cf
Include a missing include in the ARM emitter's common code.
2014-09-10 20:39:19 -05:00