Ryan Houdek
ffb4de9fd9
Merge pull request #2079 from Sonicadvance1/ensure_armemitter_uses_allocator
...
Ensure Arm64Emitter uses FEX allocator
2022-10-15 15:37:23 -07:00
Ryan Houdek
6b3d8886e5
Merge pull request #2077 from Sonicadvance1/fix_thunks_with_lots_args
...
Thunks: Fixes indirect thunks with 8+ arguments
2022-10-15 15:37:09 -07:00
Ryan Houdek
ddc10272a0
Merge pull request #2076 from Sonicadvance1/update_vulkan
...
Thunks: Update Vulkan thunk to v1.3.231
2022-10-15 15:14:30 -07:00
Ryan Houdek
0b5ef00165
Thunks: Fixes indirect thunks with 8+ arguments
...
Due to how we use a modified ABI for these indirect functions, we don't
have a clean way to say that the host_addr lives in a side-argument.
The previous inline asm that moved the value from r11 in to a variable
worked up until you hit functions with 8 or more arguments. At that
point the compiler was generating code before our inline assembly and
using r11 as a temporary, thus destroying our value.
Then a crash would occur and it was very hard to determine why. It would
end up calling some random function (0x1 in this case) from an indirect
call.
This made it /look/ like it was calling an invalid function returned
from the loader but in reality it was a corrupt register loading bad
data.
To work around this case, we can use an inline asm register variable and
a volatile asm block that "sets" the variable. In this case GCC and
Clang both seem to extend the live range of the register from the start
of the function to the use of the variable.
This resolves the issue for now, and I tested quite a large number of
function signatures to see if it would break in the future.
Theoretically our functional testing should catch this, but we don't
currently have something that abuses all the functions like this
currently.
2022-10-15 15:13:40 -07:00
Ryan Houdek
abb44d3327
Merge pull request #2069 from wannacu/main
...
Flags: Refine _Bfe's shift
2022-10-14 22:53:05 -07:00
Ryan Houdek
11eaf3d48a
Ensure Arm64Emitter uses FEX allocator
...
Otherwise we will end up allocating code buffers in the lower 32-bits,
consuming precious virtual address space.
2022-10-14 22:04:07 -07:00
Ryan Houdek
0e6c8bd12e
Thunks: Update Vulkan thunk to v1.3.231
...
Only missing a few function definitions, resorted to match order of
definitions in the headers so future changes don't mix up as much
2022-10-14 01:51:35 -07:00
Ryan Houdek
a9fb008317
External: Update Vulkan-Headers to v1.3.231
2022-10-14 01:50:49 -07:00
Ryan Houdek
e9f3a5b3e4
Merge pull request #2074 from lioncash/vuxtl
...
IR: Handle 256-bit VUXTL/VUXTL2
2022-10-13 13:15:47 -07:00
Ryan Houdek
ebc45dff45
Merge pull request #2070 from lioncash/vuabdl
...
IR: Handle 256-bit VUABDL
2022-10-13 12:17:47 -07:00
lioncash
fc4a5ebfd3
IR: Handle 256-bit VUXTL2
...
Extends VUXTL2 to handle 256-bit vectors.
2022-10-13 19:15:05 +00:00
lioncash
1d7b688c55
IR: Handle 256-bit VUXTL
...
Extends VUXTL to handle 256-bit values.
2022-10-13 19:07:57 +00:00
Ryan Houdek
f14a5ffbbf
Merge pull request #2073 from lioncash/vsxtl
...
IR: Handle 256-bit VSXTL/VSXTL2
2022-10-13 11:53:12 -07:00
Ryan Houdek
cada0d593c
Merge pull request #2072 from lioncash/test
...
unittests: Amend mm register usage in H0F38/66_04.asm test
2022-10-13 11:28:27 -07:00
lioncash
0436540791
IR: Handle 256-bit VSXTL2
...
Extends VSXTL2 to handle 256-bit vectors.
2022-10-13 18:21:25 +00:00
lioncash
a87ac86e18
IR: Handle 256-bit VSXTL
...
Extends VSXTL to handle 256-bit vectors.
2022-10-13 18:21:22 +00:00
lioncash
1278b23150
unittests: Amend mm register usage in H0F38/66_04.asm test
...
This should be using xmm2 rather than mm2.
2022-10-13 17:09:40 +00:00
lioncash
02f5ea4b9d
IR: Handle 256-bit VUABDL
...
Extends VUABDL to handle 256-bit vectors.
2022-10-13 15:37:10 +00:00
wannacu
2e14e613d0
Flags: Refine _Bfe's shift
2022-10-13 16:41:04 +08:00
Ryan Houdek
85c2889652
Docs: Update for release FEX-2210
FEX-2210
2022-10-13 00:46:59 -07:00
Ryan Houdek
23dd056b60
Merge pull request #2067 from lioncash/vmul
...
IR: Handle 256-bit VSMul/VUMul
2022-10-12 15:59:03 -07:00
lioncash
71043e372a
IR: Handle 256-bit VSMul/VUMul
...
Extends VSMul and VUMul to handle 256-bit vectors.
2022-10-12 00:00:15 +00:00
Ryan Houdek
c412d073b9
Merge pull request #2066 from lioncash/vrev64
...
IR: Handle 256-bit VRev64
2022-10-11 14:21:45 -07:00
lioncash
8fb03ff1b9
IR: Handle 256-bit VRev64
...
Extends VRev64 to handle 256-bit vectors.
2022-10-11 20:17:04 +00:00
Ryan Houdek
c2b6aef6f4
Merge pull request #2065 from lioncash/shift-imm
...
IR: Handle 256-bit VShlI/VUShlI/VUShrI
2022-10-11 12:16:44 -07:00
lioncash
24547318c6
IR: Handle 256-bit VShlI
...
Extends VShlI to handle 256-bit vectors.
2022-10-11 18:19:23 +00:00
Ryan Houdek
b693112c80
Merge pull request #2058 from Sonicadvance1/add_opencl_thunk_db
...
Add opencl thunk db
2022-10-11 11:06:20 -07:00
lioncash
48d1184066
IR: Handle 256-bit VSShrI
...
Extends VSShrI to handle 256-bit vectors.
2022-10-11 18:04:13 +00:00
Ryan Houdek
8da9ebc2e0
Merge pull request #2062 from wannacu/main
...
SMC: Fix possible deadlock
2022-10-11 10:13:02 -07:00
lioncash
5ba510474b
IR: Handle 256-bit VUShrI
...
Extends VUShrI to handle 256-bit vectors.
2022-10-11 17:08:35 +00:00
Ryan Houdek
51214d1be1
Merge pull request #2064 from lioncash/vushls
...
IR: Handle 256-bit VSShrS/VUShlS/VUShrS
2022-10-11 09:59:03 -07:00
Ryan Houdek
4d6e15d7af
Merge pull request #2063 from lioncash/interp-shift
...
Interpreter: Handle 256-bit VSShr/VUShl/VUShr
2022-10-11 09:22:11 -07:00
lioncash
4721894427
IR: Handle 256-bit VSShrS
...
Extends VSShrS to handle 256-bit vectors.
2022-10-11 16:21:50 +00:00
lioncash
d429865b6e
IR: Handle 256-bit VUShrS
...
Extends VUShrS to handle 256-bit vectors.
2022-10-11 16:08:09 +00:00
lioncash
ca5881a72c
IR: Handle 256-bit VUShlS
...
Extends VUShlS to handle 256-bit vectors.
2022-10-11 15:45:39 +00:00
lioncash
7151b9daff
Interpreter/VectorOps: Remove lingering magic 32 constants
...
Makes these functions consistent with the rest that explicitly test for
256 bit width.
2022-10-11 15:02:41 +00:00
lioncash
d9b5e28b22
Interpreter: Handle 256-bit VSShr
...
This is only implemented in the interpreter, so this is trivial.
2022-10-11 14:58:40 +00:00
lioncash
aa7954a7d6
Interpreter: Handle 256-bit VUShr
...
This is only implemented in the interpreter, so this is trivial.
2022-10-11 14:56:19 +00:00
lioncash
802c70d1ab
Interpreter: Handle 256-bit VUShl
...
This is only implemented in the interpreter, so this is trivial.
2022-10-11 14:55:17 +00:00
wannacu
8f905988e9
Use compatible syscall helpers
2022-10-11 16:35:17 +08:00
wannacu
478c5595ad
SMC: Fix possible deadlock
2022-10-11 15:31:27 +08:00
Ryan Houdek
3977e1f29e
Merge pull request #2055 from Sonicadvance1/update_description_ripping_script
...
Scripts: Updates DefinitionExtract
2022-10-10 10:11:16 -07:00
Ryan Houdek
2b1ef97354
Merge pull request #2060 from Sonicadvance1/clang_thunks
...
Thunks: Add support for building with clang
2022-10-10 09:44:58 -07:00
Mai
eaddf7f1a5
Merge pull request #2061 from Sonicadvance1/fix_linker_script_depends
...
Thunks: Adds dependency on linker script
2022-10-10 12:17:20 -04:00
Ryan Houdek
3237de3085
Merge pull request #2056 from Sonicadvance1/guest_function_bool
...
Thunks/Host: Adds bool operator to fex_guest_function_ptr
2022-10-10 09:10:34 -07:00
Ryan Houdek
df3d398d31
Thunks/Host: Adds bool operator to fex_guest_function_ptr
...
Lets us check if nullptr was passed in
2022-10-10 08:52:50 -07:00
Ryan Houdek
b44b3401b7
Merge pull request #2015 from Sonicadvance1/map_regular_offset
...
ELFCodeLoader: Map primary ELF more like the kernel
2022-10-10 08:49:49 -07:00
Ryan Houdek
c28ca0fac9
ELFCodeLoader: Map primary ELF more like the kernel
...
The kernel maps the primary ELF with a hint to some place *near* the
middle of the virtual address space. While the interpreter stays at the
top of the address space.
This also adds ASLR to the ELF loading, with a define for debugging and
testing purposes.
Requires both #2013 and #2014 merged first.
2022-10-10 08:38:15 -07:00
Ryan Houdek
235e2b6c2c
FEXCore/Allocator: Store what the host VA is
...
Calling this function multiple times without this will change the
result.
Necessary so we can determine what the host VA is from multiple
locations.
2022-10-10 08:35:40 -07:00
Mai
d68b84bc27
Merge pull request #2013 from Sonicadvance1/fix_mapper
...
ELFCodeloader: Map once and then use MAP_FIXED to overwrite
2022-10-10 10:05:53 -04:00