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.