Commit Graph

20 Commits

Author SHA1 Message Date
kobalicek
51b10b19b6 [Bug] Fixed build having ASMJIT_NO_TEXT enabled (AArch64) 2023-03-25 00:09:15 +01:00
kobalicek
c1019f1642 Improved testing
* Refactored workflows to use a single workflow for both VM and non-VM builds
  * Compiler tests are now able to test compilation of different architectures
2023-03-11 00:31:03 +01:00
kobalicek
965d19506f [CI] Updated build matrix, updated docs regarding CI 2023-02-25 00:46:33 +01:00
kobalicek
8552e286c2 [CI] Updated to use build-actions new prepare-environment 2023-02-23 16:18:07 +01:00
kobalicek
9d33c892f7 [Bug] Use mremap() to allocate a dual mapped region on NetBSD
In addition, always enable DualMapping when RWX pages are not
possible to allocate in JitAllocator, because otherwise the
allocator would not be able to allocate memory for JIT code
execution.

New CI runners to test FreeBSD, NetBSD, and OpenBSD are also
provided.
2023-02-23 00:40:20 +01:00
kobalicek
3ee3846283 [ABI] Raised ABI version due to recent changes 2023-01-16 14:55:03 +01:00
kobalicek
1ed8b77f5b [ABI] Added CpuFeatures to Target and CodeHolder, improved test_perf 2023-01-16 00:10:56 +01:00
kobalicek
8a33b814d6 [Bug] Assign inline comments to Invoke/Func nodes, annotate without Logger 2023-01-08 14:34:36 +01:00
kobalicek
5b5b0b3877 [CI] Updated CI configurations 2022-12-10 15:07:55 +01:00
kobalicek
2ae2d897f4 [CI] Use newer macos images as the older ones were deprecated 2022-07-21 21:52:33 +02:00
kobalicek
06d0badec5 Suppress -Wbitwise-instead-of-logical warning that was introduced by clang 14 2022-06-22 00:30:34 +02:00
kobalicek
2cfa686ebd [API] Fixed most static analysis issues reported by clang
[Bug] Workarounded GCC 11 issue affecting unaligned loads/stores (most likely a compiler bug)
2021-12-14 01:19:28 +01:00
kobalicek
996deae327 [ABI] Refactored AsmJit to use strong-typed enums, this breaks both API and ABI
[ABI] Added ABI version as an inline namespace, which forms asmjit::_abi_MAJOR_MINOR
[ABI] Added support for AVX512_FP16, 16-bit broadcast, and AVX512_FP16 tests
[ABI] Added initial support for consecutive registers into instruction database and register allocator
[ABI] Added a possibility to use temporary memory in CodeHolder's zone
[ABI] Compiler::setArg() is now deprecated, use FuncNode::setArg()
[Bug] Fixed correct RW information of instructions that only support implicit zeroing with {k}
[Bug] Fixed broadcast to be able to broadcast bcst16 operands
2021-12-13 19:34:56 +01:00
kobalicek
e822fba53e [ABI] Added the possibility to use AVX512 in Compiler and FuncFrame 2021-03-17 18:05:48 +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
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
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