578 Commits

Author SHA1 Message Date
kobalicek
0dd16b0a98 [Bug] Fixed RW metadata of KXNORx and KXORx instructions (Compiler) 2021-04-13 19:01:36 +02:00
kobalicek
a4dd0b2d8b [ABI] Build improvements - replaced ASMJIT_BUIlD_X86 with ASMJIT_NO_X86 and other changes... 2021-03-21 14:42:47 +01:00
kobalicek
e7a728018e [Bug] Fixed X86 instruction info query asserting on MMX variation of pextrw (Fixes #330) 2021-03-19 09:31:12 +01:00
kobalicek
e822fba53e [ABI] Added the possibility to use AVX512 in Compiler and FuncFrame 2021-03-17 18:05:48 +01:00
kobalicek
7836449c30 Added asmjit_test_perf, which replaces asmjit_bench and provides much better performance overview
Removed asmjit_test_opcode (not needed anymore as we have asmjit_test_assembler and asmjit_test_perf)
2021-03-13 23:05:48 +01:00
kobalicek
c9cebc67bc Split assembler tests so they can compile much faster with GCC 2021-03-13 14:28:05 +01:00
kobalicek
8b35b4cffb Added support for PROT_MAX() in VirtMem::alloc() and refactored VirtMem a bit 2021-03-06 09:05:42 +01:00
kobalicek
19f1768dbe [Bug] Don't allocate k0 register (x86::Compiler) 2021-03-04 01:37:22 +01:00
kobalicek
a305905d32 [Bug] Return reported error in BaseCompiler::_newInvokeNode() 2021-02-28 11:42:08 +01:00
kobalicek
5a5fb8af4c [Bug] Fixed VPERMQ incorrectly reporting AVX2 instead of AVX512-F features (X86 features API) 2021-02-09 02:41:57 +01:00
kobalicek
2ab380e0bd [Bug] [Critical] [ABI] Update that fixes all problems discovered by comparison with LLVM-MC
Fixed POP Sreg instruction, which was incorrectly implemented to emit nothing
Fixed CVTSD2SI, CVTSS2SI, CVTTSD2SI, and CVTTSS2SI instructions to not consider the size of the memory operand when calculagint REX.W prefix
Fixed VCMPPD, VCMPPS, VCMPSD, VCMPSS, VPCMPEQ*, VPCMPGT* instructions to always force EVEX prefix when the first operand is K register
Fixed ENDBR32 and ENDBR64 instructions (wrong opcode)
Fixed CLRSSBSY and RSTORSSP instructions (wrong logic in Assembler)
Fixed SLDT, SMSW, and STR instructions to not consider memory size when determining prefixes
Fixed UD0 and UD1 instructions to consider both operands
Fixed VCVTNE2PS2BF16, VCVTNEPS2BF16, and VDPBF16PS instructions (incorrect calculation of LL field) (AVX512)
Fixed VCVTPD2DQ, VCVTPD2PS, VCVTPD2UDQ, VCVTQQ2PS, VCVTTOD2DQ, VCVTTPD2UDQ, VCVTUQQ2PS in AVX512 case (incorrect calculation of LL field)
Fixed VGATHERPF* and VSCATTERPF* instructions (some instructions were encoded incorrectly by not considering the memory index register type in LL field)
Fixed VPBLENDVB (incorrect calculation of LL field)
Fixed VPEXTRW to use use a shorter encoding when possible (vpextrw r32, xmm, imm)
Fixed VPSLLD, VPSLLQ, VPSLLW, VPSRAD, VPSRAQ, VPSRAW, VPSRLD, VPSRLQ, VPSRLW instructions to always force EVEX prefix when the instruction is RMI (AVX512)
Fixed the accepted memory operand size of MMX PUNPCKL??? instructions from m64 to m32 (only affects validation)
Added explicit forms to XSAVE* and XRSTOR* instructions
Added HRESET and UINTR instructions
Changed MOV and all ARITH instructions to output the same binary as LLVM in 'reg, reg' case (it used an alternative encoding initially)
Renamed LRET to RETF
Renamed VBLENDM* instructions to VPBLENDM* (the name was incorrect)
Renamed VPBROADCASTMB2D to VPBROADCASTMW2D (the name was incorrect)
Renamed SYSEXIT64 to SYSEXITQ and SYSRET64 to SYSRETQ
Removed non-standard IRETW (use IRET, IRETD, or IRETQ to select the form)
2021-02-03 09:36:11 +01:00
kobalicek
f36ea0c031 [ABI] Added ljmp, lcall, and lret instructions (fixes #310) 2021-01-27 21:05:04 +01:00
kobalicek
71fb24cb11 BaseEmitter::commentf() shouldn't format string, which will be discarded by the emitter (fixes #306) 2021-01-26 14:28:48 +01:00
kobalicek
6678143772 [ABI] X86/X64 GP registers should use the real type (GpbLo, GpbHi, Gpw, Gpd, Gpq) and not just Gp (fixes #292) 2021-01-26 14:25:24 +01:00
kobalicek
0636dd316a [Bug] Fixed instruction signatures issue introduced by the previous commit 2021-01-26 01:09:35 +01:00
kobalicek
58b6c025f2 [ABI] Added more AVX_VNNI instructions, added MOVABS for explicit Imm64 encodings, added more assembler tests 2021-01-26 01:00:29 +01:00
kobalicek
1422faa011 [Bug] Fixed a possible compilation error when using non-uint64_t value as immediate instead of Imm (ambiguity) 2021-01-23 00:07:15 +01:00
kobalicek
70e80b18a5 [Bug] Jump annotation to entry block fix 2021-01-02 12:25:17 +01:00
kobalicek
13876c4e5e Improved JitAllocator to not reiterate the whole block on every allocation 2021-01-02 01:42:30 +01:00
kobalicek
45fe60f93d [Bug] Fixed instruction RW info related to AVX-512 {k} (merging) and {k} {z} (zeroing) 2021-01-02 01:24:46 +01:00
kobalicek
173f09df35 [Bug] Fixed invalid fill in JitAllocator::shrink() when kOptionFillUnusedMemory is in use by JitAllocator (Critical) 2020-12-26 20:12:14 +01:00
kobalicek
c165c00271 Fixed a possible bug that may trigger assertion failure in JitAllocator::alloc() due to not marking an empty block properly (#316) 2020-12-26 12:18:05 +01:00
kobalicek
3b886c8b7b Fixed the use of __buildin___clear_cache() 2020-12-10 01:21:16 +01:00
kobalicek
4b13f71314 Improved GitHub workflows 2020-11-09 00:47:32 +01:00
kobalicek
2199c7d4e7 Improved CI problem matching by always doing out-of-source build (Ninja issue) 2020-11-07 19:31:03 +01:00
kobalicek
fe89388e52 Added problem matchers to CI workflow 2020-11-07 16:05:48 +01:00
kobalicek
88129d7389 [Bug] Don't unlink immediately when creating anonymous memory file, switch to GH actions (Fixes #312) 2020-11-07 00:02:16 +01:00
kobalicek
cb13f69983 Support for using <windows.h> even without NOMINMAX 2020-10-26 20:22:33 +01:00
kobalicek
973f5c9c5c [Bug] Fixed incorrect mov_abs instruction size checking logic (#311) 2020-10-25 00:36:04 +02:00
kobalicek
a281426ca6 [CMake] Include GNUInstallDirs after project() 2020-10-07 16:50:42 +02:00
David CARLIER
3c4415d729 [Bug] NetBSD build needs librt (#305) 2020-09-29 00:57:40 +02:00
Samuel Pordeus
a4341e811d Fix typo on features.h (#303) 2020-09-29 00:17:49 +02:00
Emmanuel Vadot
cfdf5bd4eb FreeBSD: Fix compilation with -Werror (#302)
VirtMem_getTmpDir is not used when SHM_ANON is defined which is the case
on FreeBSD. This breaks compilation if -Werror is defined.

Signed-off-by: Emmanuel Vadot <manu@FreeBSD.org>
2020-09-27 16:48:06 +02:00
kobalicek
b49d685cd9 Added github funding file 2020-09-22 20:16:28 +02:00
kobalicek
d7d3db1c4f Updated README.txt and removed a file that is not used anymore 2020-09-16 01:03:38 +02:00
kobalicek
5bc166efdb Updated README.md (Sponsors) 2020-09-12 19:55:16 +02:00
kobalicek
cd44f41d9b Preparation for AArch64 support 2020-09-12 18:19:04 +02:00
Max Bernstein
9cb2b298e1 Avoid an unused argument warning when compiling AsmJit (#301) 2020-09-12 12:01:35 +02:00
kobalicek
94061cd294 [Bug] Fixed ZoneVector reverse iterators and rbegin()/rend() - bug introduced by a previous commit 2020-09-12 09:32:38 +02:00
kobalicek
358d944bf2 Simplify ZoneVector iterators, use std::lower_bound() instead a custom implementation 2020-09-06 22:08:23 +02:00
kobalicek
bbe6b457a1 Fixed Solaris build (cannot use EAX, EDX, etc as these are macros) 2020-09-04 22:28:00 +02:00
kobalicek
d1b7543488 Added an initial cmake export support so users can find installed asmjit (Fixes #290) 2020-08-31 20:33:29 +02:00
Markus Schmidl
8f25116f2b [Bug] Extended Family Id calculation incorrect (fixes #298) 2020-08-19 15:57:19 +02:00
kobalicek
0646d0a48f [Bug] Added a possibility to order sections so the address table section can stay last even when user creates sections after it has been created (#293) 2020-08-09 13:14:38 +02:00
kobalicek
10be0c8f1d Added parameter pack to function arguments and return values 2020-08-09 13:14:12 +02:00
kobalicek
8474400e82 [Bug] Fixed RW info of string instructions, fixed lodsx() helper intructions in emitter 2020-07-10 23:21:36 +02:00
kobalicek
509866ef12 [Bug] Fixed invalid code generation related to lookup tables (Compiler) 2020-07-10 18:27:29 +02:00
kobalicek
c130455898 Added ASMJIT_NO_FOREIGN compile-time option to disable non-host architectures in the future 2020-07-07 10:27:46 +02:00
kobalicek
2de7e74244 Instruction validator now doesn't pass 'push/pop [mem]' having unknown size 2020-07-06 00:09:17 +02:00
kobalicek
ae4ad9075d Fixed signatures of recently added ud0 and ud1 instructions, added two-operand NOP (fixes #217) 2020-07-05 13:32:53 +02:00