Commit Graph

247 Commits

Author SHA1 Message Date
kobalicek
e8a80ea958 Moved logic from x86inst.cpp to x86instimpl.cpp, moved some instruction methods to Inst from X86Inst, added Inst::checkFeatures() for retrieving which CPU features are required to run a given instruction, minor reorganization and asmdb update 2017-03-09 16:57:54 +01:00
kobalicek
0e80d2c3c3 [bug] Fixed special case of mov[abs] instruction 2017-03-07 13:59:06 +01:00
kobalicek
528951ab9a Minor, catch VSIB{rip+xxx} in x86 validator as well 2017-03-06 18:54:52 +01:00
kobalicek
35ba2ad83a Minor changes to cmake files 2017-03-04 20:37:42 +01:00
Víctor M. González
951c62e330 Named labels are printed with their name, instead of L#. (#160) 2017-03-04 17:02:31 +01:00
kobalicek
df7423d596 Fill sourceSectionId of reloc info properly 2017-02-27 20:25:37 +01:00
kobalicek
90c26db709 Added more memory addressing types to Mem operand 2017-02-27 17:12:28 +01:00
kobalicek
a808b44359 Minor logging changes 2017-02-26 12:33:05 +01:00
kobalicek
4a94223ebd Added new instructions + xacquire|xrelease prefixes, reorganized instruction options 2017-02-26 12:19:49 +01:00
kobalicek
f589e7165a Fixed encoding of 'CRC32 r64, r8/m8' instruction
Fixed encoding of 'POPCNT|TZCNT|LZCNT r16, r16/m16' instruction
Fixed encoding of EVEX instructions that don't provide VEX prefix equivalent
Added 'LOCK MOV CR8' extension used by AMD processors in 32-bit mode and 'ALTMOVCR8' CPU feature
Renamed some CPU features to respect their names used in X86/X64 architecture manuals
Added validation of immediate operands (correct size, correct sign/zero extension)
Added validation of explicit/implicit size of memory operands
Added validation of LOCK/REP/REPNZ prefixes to x86 validator
Reorganized some X86 instruction tables, removed family specific tables, introduced OperationData
Improved instruction tables generator to automatically generate instruction flags
Regenerated all instruction tables to respect the current state of 'asmdb.x86data'
2017-02-25 19:36:28 +01:00
kobalicek
aa154e3590 Added more instructions (System, MPX, AVX512_VPOPCNTDQ, AVX512_4FMAPS, AVX512_4VNNIW) 2017-02-21 01:55:07 +01:00
kobalicek
bb8b6d9fa2 Mark _globalOptions as well as _lastError in CodeEmitter::setLastError() 2017-02-20 08:56:38 +01:00
kobalicek
2416e428a3 Get rid off some strict aliasing warnings. 2017-02-19 19:41:10 +01:00
kobalicek
1e47f7999c Fixed some warnings 2017-02-19 19:36:36 +01:00
kobalicek
9ceb071c4a Minor improvements 2017-02-19 18:42:44 +01:00
kobalicek
c8c16f3366 [bug] Fixed encoding of vmovd and vmovq instructions 2017-02-16 02:31:42 +01:00
kobalicek
8c86004d7f Minor Compiler fixes especially related to AVX 2017-02-15 17:22:16 +01:00
kobalicek
8062e7d433 Dump an instruction signature on error, corrected x86 validator a bit, adjusted DB according to asmdb changes 2017-02-14 18:40:31 +01:00
kobalicek
216fb5a281 Added FastEval calling convention - AsmJit specific/experimental feature 2017-02-11 02:34:09 +01:00
kobalicek
43dbe48afc Added CodeCompiler::newSimilarReg, merged generate-xxx tools from next-wip branch, changed pcmpgtq to be in SSE4.2 group 2017-02-09 14:15:08 +01:00
Philipp Paulweber
a984b508fc Clean-up (#153)
Clean-up (ctor init order, unused variables, misc)
2017-02-09 13:48:20 +01:00
kobalicek
814cf62a85 Added validation of absolute memory address to the validator 2017-02-03 17:50:51 +01:00
kobalicek
13a5105fe0 Moved some hardcoded positions in tabled into template-based approach 2017-02-03 17:44:58 +01:00
kobalicek
ff2bf109fc Minor improvements of CodeCompiler 2017-02-02 15:14:07 +01:00
kobalicek
ef44e5a2f9 Fixed initialization of CodeHolder 2017-02-02 03:17:38 +01:00
kobalicek
fa43c7be07 Make asmjit compile with all possible ASMJIT_DISABLE_... options 2017-02-02 00:48:05 +01:00
kobalicek
0943382a0c Minor changes, fixed a very rare X86Compiler bug in liveness analysis 2017-02-02 00:37:10 +01:00
Michał Janiszewski
dc0ccfd74c Fix compilation with ICC (17.0.1) (#150) 2017-01-26 21:36:10 +01:00
Petr Kobalicek
b7f6d1e369 Merged asmjit:next branch (#149) 2017-01-26 15:55:03 +01:00
svost
fb9f82cb61 Typo fix (Issue #143) 2016-11-11 19:34:49 +01:00
Wenzel Jakob
f900a92e13 [BUG] Fix avx512 detection (#136) 2016-09-17 15:25:08 +02:00
kobalicek
a7d3c757e4 Updated README to inform about the next branch 2016-09-13 00:53:15 +02:00
kobalicek
6467c73ddf [BUG] Fixed a macro expansion from wordptr to word_ptr (only rip addressing affected) 2016-07-10 05:30:56 +02:00
kobalicek
c908c3db8d Added ADX, TBM, CLFLUSH_OPT, PREFETCHW, and SHA instruction sets to Assembler and Compiler\nAdded initial support for AVX/AVX2 instructions into X86Compiler\nRenamed oword to dqword (intel convention)\nFixed incorrect XOP and FMA4 detection\nCosmetic changes in documentation\nFixed unused typedef warnings (clang) (related to #132) 2016-07-03 23:05:43 +02:00
kobalicek
6f6ca70c4c Fixed BMI and BMI2 (finally). 2016-06-30 19:44:12 +02:00
kobalicek
5db35108d0 Fixed MSVC compilation issues. 2016-06-30 19:16:43 +02:00
kobalicek
d25f392c6e Minor code cleanup, fixed 64-bit BMI and BMI2 instructions 2016-06-30 18:59:59 +02:00
kobalicek
286bc22f49 Better compiler flags detection in CMakeLists.txt\nFixed missing noexcept in StaticRuntime.cpp 2016-05-05 04:08:23 +02:00
kobalicek
f7de7b8d35 Added a test-case to verify stack allocation, attempt to fix #128 2016-04-16 16:35:58 +02:00
kobalicek
9fc1dbfdcd Moved calling conventions to globals.h
Fixed #128
2016-04-16 14:50:17 +02:00
kobalicek
f7ddd38777 Trying to trigger #126 2016-04-09 13:51:48 +02:00
kobalicek
83682451b8 Mark clobbered registers when allocating "call" (X86Compiler) 2016-04-09 04:55:00 +02:00
James Laver
02ba5cc35c renamed bswap32 to byteswap32 to avoid conflict with builtin freebsd macro 2016-04-03 16:14:04 +02:00
kobalicek
446a5f1cb1 Improved asmjit trace - pretty print nodes being removed 2016-03-29 04:57:56 +02:00
kobalicek
6ef5878eca Minor compiler update - unreachable code remover will not remove labels. 2016-03-29 01:01:28 +02:00
kobalicek
95aacf9fd1 Moved addFunc() from X86Compiler to Compiler.
Fixed CompilerContext not being reset after the first function is translated.
2016-03-28 23:18:41 +02:00
kobalicek
7b0e362ac6 Added ASMJIT_TRACE support to CMakeLists.txt 2016-03-28 22:33:32 +02:00
kobalicek
4a654c2c49 Fixed bug in PodVectorTmp<> implementation and added a test-case for it. 2016-03-28 02:03:25 +02:00
kobalicek
b81004bc99 [Bug] Fixed a bug in X86Compiler::getIntPtr() not promoting intptr to int32/int64.
Minor changes.
2016-03-24 03:26:41 +01:00
kobalicek
185a96a46a Reworked CpuInfo (removed X86CpuInfo, added ARM CpuInfo support).
Renamed CodeGen to ExternalTool.
Moved logger constants from asmjit namespace to asmjit::Logger.
Moved AssemblerFeature constants from asmjit namespace to asmjit::Assembler.
Added noexcept to most APIs that are not intended to throw.
Added memory utilities that can read/write to unaligned memory location (ongoing ARM support).
Removed unimplemented instruction scheduler, will be added back when it's working.
2016-03-21 21:41:55 +01:00