{-# language PatternSynonyms #-}
module CodeGen.X86
(
Bytes (..)
, HasBytes (..)
, Size (..)
, HasSize (..)
, IsSize
, EqT (..)
, sizeEqCheck
, Reg (..) , FromReg (..)
, rax, rcx, rdx, rbx, rsp, rbp, rsi, rdi, r8, r9, r10, r11, r12, r13, r14, r15
, eax, ecx, edx, ebx, esp, ebp, esi, edi, r8d, r9d, r10d, r11d, r12d, r13d, r14d, r15d
, ax, cx, dx, bx, sp, bp, si, di, r8w, r9w, r10w, r11w, r12w, r13w, r14w, r15w
, al, cl, dl, bl, spl, bpl, sil, dil, r8b, r9b, r10b, r11b, r12b, r13b, r14b, r15b
, ah, ch, dh, bh
, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7
, Addr (..), BaseReg, IndexReg (..), Scale, s1, s2, s4, s8, Displacement, Address
, addr
, addr8
, addr16
, addr32
, addr64
, ipRel
, ipRel8
, Access (..)
, Operand (..)
, resizeOperand
, ipRelValue
, Condition
, pattern N
, pattern O
, pattern NO
, pattern B, pattern C
, pattern NB, pattern NC
, pattern E, pattern Z
, pattern NE, pattern NZ
, pattern NA, pattern BE
, pattern A, pattern NBE
, pattern S
, pattern NS
, pattern P
, pattern NP
, pattern L
, pattern NL
, pattern NG, pattern LE
, pattern G, pattern NLE
, Code, CodeM
, db
, align
, Label
, label
, j
, jmp
, jmpq
, call
, ret
, nop
, cmc
, clc
, stc
, cli
, sti
, cld
, std
, pushf
, popf
, cmp
, test
, bt
, bsf
, bsr
, inc
, dec
, neg
, add
, adc
, sub
, sbb
, lea
, not_
, and_
, or_
, xor_
, rol
, ror
, rcl
, rcr
, shl
, shr
, sar
, bswap
, xchg
, mov
, cmov
, pop
, push
, movd
, movq
, movdqa
, paddb
, paddw
, paddd
, paddq
, psubb
, psubw
, psubd
, psubq
, pxor
, psllw
, pslld
, psllq
, pslldq
, psrlw
, psrld
, psrlq
, psrldq
, psraw
, psrad
, unless
, doWhile
, if_
, leaData
, traceReg
, compile
, preBuild
, saveNonVolatile, saveR12R15
, arg1, arg2, arg3, arg4
, result
, Callable (..)
, CallableHs (..)
, callFun
, printf
, hsPtr
, CString (..)
) where
import Data.Monoid
import CodeGen.X86.Asm
import CodeGen.X86.CodeGen
import CodeGen.X86.FFI
import CodeGen.X86.CallConv
import CodeGen.X86.Utils