Use D suffix for 64-bit real, even though L is the actual GNU assembler suffix.
Add FPU instructions.
Add MMX instructions
Fix and add other SSE conversion instructions.
Use symbolic constants for Jcc and SETcc instructions. Don't emit extraneous REX bits for JMP and CALL instructions.
- Fix CMPSD, COMISS, COMISD, UCOMISS, UCOMISD, MOVD/MOVQ %xmm,%reg - Rename X86_SSE_CC_NE to X86_SSE_CC_NEQ (match Intel reference manual) - Rename MOVDLX to MOVDXD (%Xmm register as Destination) - Rename MOVDQX to MOVQXD (%Xmm register as Destination) - Rename MOVDXL to MOVDXS (%Xmm register as Source) - Rename MOVDXQ to MOVQXS (%Xmm register as Source)
Add macros for SSSE3 instructions encoding (PSHUFB in particular).
Happy New Year!
icc9.1 & gcc4.1 warning fixes
Add LEALQmr, EMMS, SSE CMP and a series of new SSE opcodes (auto-generated)
Add more SSE templates for new SheepShaver's code generator -- though it should be made independent of this file.
Run-time assembler fixes: - Check for RIP register only in 64-bit mode - Add missing macros and arguments (BT*im) - MOVSWQ/MOVZWQ are 64-bit mode instructions only
Cosmetics, fix %rh cases in !X86_FLAT_REGISTERS mode, lahf/sahf are now valid instructions in long mode (recent enough CPU revisions: lahf_lm).
Fix build with gcc4 on x86-64: ignore errors when casting pointers to int from regs & fpu members + code cache. This is possible because data is allocated in 32-bit space and we force allocation of translation cache to those bounds too.
Happy New Year!
Enable RIP-relative addressing, optimize REX conditions processing in ! X86_FLAT_REGISTERS mode, fix __REX_mem encodings (e.g. POPLm)
- optimize absolute addresses into RIP relative, if possible - fix MOVQir as the operand is 64-bit - fix IMULWrr, IMULLrr, IMULQrr, MOVSBWrr, MOVZBWrr
Reorder SPL, BPL, SIL, DIL IDs so that 8-bit register allocation is simpler Fix MOVZBL and MOVSBL encodings with those extended 8-bit registers
fix SIB encoding with base=r13 fix PUSH/POP with x86_64 extended registers fix CALL/JMP REX prefixes
Happy New Year! :)
- Fix "extended register" predicate to exclude X86_NOREG and X86_RIP - Really handle requested 32-bit absolute address in AMD64 target - Fix REX prefixes in 16-bit ALU instructions - Fix POPF, remove useless? POPFD and PUSHFD
Optimize TEST[BWLQ]ir case where dest register is %rax Add JCCSii and JCCii which directly takes the displacement value to encode
Fix MOVBrr
Fix 0(%rbp,<reg>,1) operand encoding
Add sign/zero-extend instructions
Fix _REXBmr(). Add CPUID. Some C++ compiler fixes. Make x86_emit_failure() be void, and let x86_emit_failure0() be an int expression instead.
Add CMOV and BSF/BSR instructions
Handle absolute and RIP addressing modes in x86-64
Add some SSE/SSE2 instructions
Add some FPU instructions. Minor clean-ups.
Add new run-time assembler derived from GNU lightning. It is suitable for both i386 and x86-64 architectures. Still needs some work (see TODO) and an actual glue to the JIT backend. Original work is LGPL, but per section 3 of this license, I opt for GPL v2 for Basilisk II purposes.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.