module Harpy.X86Assembler (
module Harpy.X86Assembler,
XMMReg(..),
) where
import Harpy.X86CodeGen
import Harpy.CodeGenMonad
import Data.Word
import Foreign.Ptr
import qualified Text.PrettyPrint.HughesPJ as PP
onlyEbp = failCodeGen (PP.text "only epb is allowed as base register for disp/base/index/scale addressing")
onlyCl = failCodeGen (PP.text "only cl is allowed as shift count")
newtype Reg8 = Reg8 Word8
al, cl, dl, bl, ah, ch, dh, bh :: Reg8
al = Reg8 0
cl = Reg8 1
dl = Reg8 2
bl = Reg8 3
ah = Reg8 4
ch = Reg8 5
dh = Reg8 6
bh = Reg8 7
newtype Reg16 = Reg16 Word8
ax, cx, dx, bx, sp, bp, si, di :: Reg16
ax = Reg16 0
cx = Reg16 1
dx = Reg16 2
bx = Reg16 3
sp = Reg16 4
bp = Reg16 5
si = Reg16 6
di = Reg16 7
newtype Reg32 = Reg32 Word8 deriving (Eq, Ord)
eax, ecx, edx, ebx, esp, ebp, esi, edi :: Reg32
eax = Reg32 0
ecx = Reg32 1
edx = Reg32 2
ebx = Reg32 3
esp = Reg32 4
ebp = Reg32 5
esi = Reg32 6
edi = Reg32 7
xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7 :: XMMReg
xmm0 = XMMReg 0
xmm1 = XMMReg 1
xmm2 = XMMReg 2
xmm3 = XMMReg 3
xmm4 = XMMReg 4
xmm5 = XMMReg 5
xmm6 = XMMReg 6
xmm7 = XMMReg 7
instance Show XMMReg where
show (XMMReg i) = "xmm" ++ show i
instance Show Reg32 where
show (Reg32 0) = "eax"
show (Reg32 1) = "ecx"
show (Reg32 2) = "edx"
show (Reg32 3) = "ebx"
show (Reg32 4) = "esp"
show (Reg32 5) = "ebp"
show (Reg32 6) = "esi"
show (Reg32 7) = "edi"
newtype Addr = Addr Word32
newtype Ind = Ind Reg32
newtype Disp = Disp Word32
data Scale = S1 | S2 | S4 | S8
scaleToShift :: Scale -> Word8
scaleToShift S1 = 0
scaleToShift S2 = 1
scaleToShift S4 = 2
scaleToShift S8 = 3
newtype FPReg = FPReg Word8
data FPTopReg = FPTopReg
fpTop = FPTopReg
fp0 = FPReg 0
fp1 = FPReg 1
fp2 = FPReg 2
fp3 = FPReg 3
fp4 = FPReg 4
fp5 = FPReg 5
fp6 = FPReg 6
fp7 = FPReg 7
breakpoint = ensureBufferSize x86_max_instruction_bytes >> x86_breakpoint
cld = ensureBufferSize x86_max_instruction_bytes >> x86_cld
stosb = ensureBufferSize x86_max_instruction_bytes >> x86_stosb
stosl = ensureBufferSize x86_max_instruction_bytes >> x86_stosl
stosd = ensureBufferSize x86_max_instruction_bytes >> x86_stosd
movsb = ensureBufferSize x86_max_instruction_bytes >> x86_movsb
movsl = ensureBufferSize x86_max_instruction_bytes >> x86_movsl
rdtsc = ensureBufferSize x86_max_instruction_bytes >> x86_rdtsc
class Cmpxchg a b where
cmpxchg :: a -> b -> CodeGen e s ()
instance Cmpxchg Reg32 Reg32 where
cmpxchg (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmpxchg_reg_reg dest source
instance Cmpxchg Addr Reg32 where
cmpxchg (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmpxchg_mem_reg dest source
instance Cmpxchg (Disp, Reg32) Reg32 where
cmpxchg (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmpxchg_membase_reg dest disp source
instance Cmpxchg Ind Reg32 where
cmpxchg (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmpxchg_membase_reg dest 0 source
class Xchg a b where
xchg :: a -> b -> CodeGen e s ()
instance Xchg Reg8 Reg8 where
xchg (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_reg_reg dest source 1
instance Xchg Reg32 Reg32 where
xchg (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_reg_reg dest source 4
instance Xchg Addr Reg8 where
xchg (Addr dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_mem_reg dest source 1
instance Xchg Addr Reg32 where
xchg (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_mem_reg dest source 4
instance Xchg (Disp, Reg32) Reg8 where
xchg (Disp disp, Reg32 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_membase_reg dest disp source 1
instance Xchg Ind Reg8 where
xchg (Ind (Reg32 dest)) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_membase_reg dest 0 source 1
instance Xchg (Disp, Reg32) Reg32 where
xchg (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_membase_reg dest disp source 4
instance Xchg Ind Reg32 where
xchg (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xchg_membase_reg dest 0 source 4
class Xadd a b where
xadd :: a -> b -> CodeGen e s ()
instance Xadd Reg8 Reg8 where
xadd (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_reg_reg dest source 1
instance Xadd Reg32 Reg32 where
xadd (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_reg_reg dest source 4
instance Xadd Addr Reg8 where
xadd (Addr dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_mem_reg dest source 1
instance Xadd Addr Reg32 where
xadd (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_mem_reg dest source 4
instance Xadd (Disp, Reg32) Reg8 where
xadd (Disp disp, Reg32 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_membase_reg dest disp source 1
instance Xadd Ind Reg8 where
xadd (Ind (Reg32 dest)) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_membase_reg dest 0 source 1
instance Xadd (Disp, Reg32) Reg32 where
xadd (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_membase_reg dest disp source 4
instance Xadd Ind Reg32 where
xadd (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_xadd_membase_reg dest 0 source 4
class Inc a where
inc :: a -> CodeGen e s ()
instance Inc Addr where
inc (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_inc_mem dest
instance Inc (Disp, Reg32) where
inc (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_inc_membase dest disp
instance Inc Ind where
inc (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_inc_membase dest 0
instance Inc Reg32 where
inc (Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_inc_reg dest
class Dec a where
dec :: a -> CodeGen e s ()
instance Dec Addr where
dec (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_dec_mem dest
instance Dec (Disp, Reg32) where
dec (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_dec_membase dest disp
instance Dec Ind where
dec (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_dec_membase dest 0
instance Dec Reg32 where
dec (Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_dec_reg dest
class Not a where
not :: a -> CodeGen e s ()
instance Not Addr where
not (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_not_mem dest
instance Not (Disp, Reg32) where
not (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_not_membase dest disp
instance Not Ind where
not (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_not_membase dest 0
instance Not Reg32 where
not (Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_not_reg dest
class Neg a where
neg :: a -> CodeGen e s ()
instance Neg Addr where
neg (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_neg_mem dest
instance Neg (Disp, Reg32) where
neg (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_neg_membase dest disp
instance Neg Ind where
neg (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_neg_membase dest 0
instance Neg Reg32 where
neg (Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_neg_reg dest
nop = ensureBufferSize x86_max_instruction_bytes >> x86_nop
class Add a b where
add :: a -> b -> CodeGen e s ()
instance Add Reg32 Word32 where
add (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_add dest (fromIntegral imm)
instance Add Addr Word32 where
add (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_add dest (fromIntegral imm)
instance Add (Disp, Reg32) Word32 where
add (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_add dest disp (fromIntegral imm)
instance Add Ind Word32 where
add (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_add dest 0 (fromIntegral imm)
instance Add (Disp, Reg32) Word8 where
add (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_add dest disp (fromIntegral imm)
instance Add Ind Word8 where
add (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_add dest 0 (fromIntegral imm)
instance Add Addr Reg32 where
add (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_add dest source
instance Add (Disp, Reg32) Reg32 where
add (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_add dest disp source
instance Add Ind Reg32 where
add (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_add dest 0 source
instance Add Reg32 Reg32 where
add (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_add dest source
instance Add Reg8 Reg8 where
add (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_add dest source False False
instance Add Reg32 Addr where
add (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_add dest source
instance Add Reg32 (Disp, Reg32) where
add (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_add dest source disp
instance Add Reg32 Ind where
add (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_add dest source 0
class Or a b where
or :: a -> b -> CodeGen e s ()
instance Or Reg32 Word32 where
or (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_or dest (fromIntegral imm)
instance Or Addr Word32 where
or (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_or dest (fromIntegral imm)
instance Or (Disp, Reg32) Word32 where
or (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_or dest disp (fromIntegral imm)
instance Or Ind Word32 where
or (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_or dest 0 (fromIntegral imm)
instance Or (Disp, Reg32) Word8 where
or (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_or dest disp (fromIntegral imm)
instance Or Ind Word8 where
or (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_or dest 0 (fromIntegral imm)
instance Or Addr Reg32 where
or (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_or dest source
instance Or (Disp, Reg32) Reg32 where
or (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_or dest disp source
instance Or Ind Reg32 where
or (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_or dest 0 source
instance Or Reg32 Reg32 where
or (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_or dest source
instance Or Reg8 Reg8 where
or (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_or dest source False False
instance Or Reg32 Addr where
or (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_or dest source
instance Or Reg32 (Disp, Reg32) where
or (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_or dest source disp
instance Or Reg32 Ind where
or (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_or dest source 0
class Adc a b where
adc :: a -> b -> CodeGen e s ()
instance Adc Reg32 Word32 where
adc (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_adc dest (fromIntegral imm)
instance Adc Addr Word32 where
adc (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_adc dest (fromIntegral imm)
instance Adc (Disp, Reg32) Word32 where
adc (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_adc dest disp (fromIntegral imm)
instance Adc Ind Word32 where
adc (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_adc dest 0 (fromIntegral imm)
instance Adc (Disp, Reg32) Word8 where
adc (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_adc dest disp (fromIntegral imm)
instance Adc Ind Word8 where
adc (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_adc dest 0 (fromIntegral imm)
instance Adc Addr Reg32 where
adc (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_adc dest source
instance Adc (Disp, Reg32) Reg32 where
adc (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_adc dest disp source
instance Adc Ind Reg32 where
adc (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_adc dest 0 source
instance Adc Reg32 Reg32 where
adc (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_adc dest source
instance Adc Reg8 Reg8 where
adc (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_adc dest source False False
instance Adc Reg32 Addr where
adc (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_adc dest source
instance Adc Reg32 (Disp, Reg32) where
adc (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_adc dest source disp
instance Adc Reg32 Ind where
adc (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_adc dest source 0
class Sbb a b where
sbb :: a -> b -> CodeGen e s ()
instance Sbb Reg32 Word32 where
sbb (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_sbb dest (fromIntegral imm)
instance Sbb Addr Word32 where
sbb (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_sbb dest (fromIntegral imm)
instance Sbb (Disp, Reg32) Word32 where
sbb (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_sbb dest disp (fromIntegral imm)
instance Sbb Ind Word32 where
sbb (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_sbb dest 0 (fromIntegral imm)
instance Sbb (Disp, Reg32) Word8 where
sbb (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_sbb dest disp (fromIntegral imm)
instance Sbb Ind Word8 where
sbb (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_sbb dest 0 (fromIntegral imm)
instance Sbb Addr Reg32 where
sbb (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_sbb dest source
instance Sbb (Disp, Reg32) Reg32 where
sbb (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_sbb dest disp source
instance Sbb Ind Reg32 where
sbb (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_sbb dest 0 source
instance Sbb Reg32 Reg32 where
sbb (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_sbb dest source
instance Sbb Reg8 Reg8 where
sbb (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_sbb dest source False False
instance Sbb Reg32 Addr where
sbb (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_sbb dest source
instance Sbb Reg32 (Disp, Reg32) where
sbb (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_sbb dest source disp
instance Sbb Reg32 Ind where
sbb (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_sbb dest source 0
class And a b where
and :: a -> b -> CodeGen e s ()
instance And Reg32 Word32 where
and (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_and dest (fromIntegral imm)
instance And Addr Word32 where
and (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_and dest (fromIntegral imm)
instance And (Disp, Reg32) Word32 where
and (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_and dest disp (fromIntegral imm)
instance And Ind Word32 where
and (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_and dest 0 (fromIntegral imm)
instance And (Disp, Reg32) Word8 where
and (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_and dest disp (fromIntegral imm)
instance And Ind Word8 where
and (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_and dest 0 (fromIntegral imm)
instance And Addr Reg32 where
and (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_and dest source
instance And (Disp, Reg32) Reg32 where
and (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_and dest disp source
instance And Ind Reg32 where
and (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_and dest 0 source
instance And Reg32 Reg32 where
and (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_and dest source
instance And Reg8 Reg8 where
and (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_and dest source False False
instance And Reg32 Addr where
and (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_and dest source
instance And Reg32 (Disp, Reg32) where
and (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_and dest source disp
instance And Reg32 Ind where
and (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_and dest source 0
class Sub a b where
sub :: a -> b -> CodeGen e s ()
instance Sub Reg32 Word32 where
sub (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_sub dest (fromIntegral imm)
instance Sub Addr Word32 where
sub (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_sub dest (fromIntegral imm)
instance Sub (Disp, Reg32) Word32 where
sub (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_sub dest disp (fromIntegral imm)
instance Sub Ind Word32 where
sub (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_sub dest 0 (fromIntegral imm)
instance Sub (Disp, Reg32) Word8 where
sub (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_sub dest disp (fromIntegral imm)
instance Sub Ind Word8 where
sub (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_sub dest 0 (fromIntegral imm)
instance Sub Addr Reg32 where
sub (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_sub dest source
instance Sub (Disp, Reg32) Reg32 where
sub (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_sub dest disp source
instance Sub Ind Reg32 where
sub (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_sub dest 0 source
instance Sub Reg32 Reg32 where
sub (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_sub dest source
instance Sub Reg8 Reg8 where
sub (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_sub dest source False False
instance Sub Reg32 Addr where
sub (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_sub dest source
instance Sub Reg32 (Disp, Reg32) where
sub (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_sub dest source disp
instance Sub Reg32 Ind where
sub (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_sub dest source 0
class Xor a b where
xor :: a -> b -> CodeGen e s ()
instance Xor Reg32 Word32 where
xor (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_xor dest (fromIntegral imm)
instance Xor Addr Word32 where
xor (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_xor dest (fromIntegral imm)
instance Xor (Disp, Reg32) Word32 where
xor (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_xor dest disp (fromIntegral imm)
instance Xor Ind Word32 where
xor (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_xor dest 0 (fromIntegral imm)
instance Xor (Disp, Reg32) Word8 where
xor (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_xor dest disp (fromIntegral imm)
instance Xor Ind Word8 where
xor (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_xor dest 0 (fromIntegral imm)
instance Xor Addr Reg32 where
xor (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_xor dest source
instance Xor (Disp, Reg32) Reg32 where
xor (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_xor dest disp source
instance Xor Ind Reg32 where
xor (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_xor dest 0 source
instance Xor Reg32 Reg32 where
xor (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_xor dest source
instance Xor Reg8 Reg8 where
xor (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_xor dest source False False
instance Xor Reg32 Addr where
xor (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_xor dest source
instance Xor Reg32 (Disp, Reg32) where
xor (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_xor dest source disp
instance Xor Reg32 Ind where
xor (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_xor dest source 0
class Cmp a b where
cmp :: a -> b -> CodeGen e s ()
instance Cmp Reg32 Word32 where
cmp (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_cmp dest (fromIntegral imm)
instance Cmp Reg32 (Ptr a) where
cmp (Reg32 dest) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_imm x86_cmp dest (ptrToInt ptr)
instance Cmp Reg32 Label where
cmp (Reg32 dest) lab = do
ensureBufferSize x86_max_instruction_bytes
x86_alu_reg_imm x86_cmp dest 0xf0f0f0f0
emitFixup lab (4) Fixup32Absolute
instance Cmp Addr Word32 where
cmp (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_cmp dest (fromIntegral imm)
instance Cmp Addr (Ptr a) where
cmp (Addr dest) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_cmp dest (ptrToWord32 ptr)
instance Cmp Addr Label where
cmp (Addr dest) lab = do
ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_imm x86_cmp dest 0xf0f0f0f0
emitFixup lab (4) Fixup32Absolute
instance Cmp (Disp, Reg32) Word32 where
cmp (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_cmp dest disp (fromIntegral imm)
instance Cmp (Disp, Reg32) (Ptr a) where
cmp (Disp disp, Reg32 dest) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_cmp dest disp (ptrToWord32 ptr)
instance Cmp (Disp, Reg32) Label where
cmp (Disp disp, Reg32 dest) lab = do
ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_cmp dest disp 0xf0f0f0f0
emitFixup lab (4) Fixup32Absolute
instance Cmp Ind Word32 where
cmp (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_cmp dest 0 (fromIntegral imm)
instance Cmp Ind (Ptr a) where
cmp (Ind (Reg32 dest)) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_cmp dest 0 (ptrToWord32 ptr)
instance Cmp Ind Label where
cmp (Ind (Reg32 dest)) lab = do
ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_imm x86_cmp dest 0 0xf0f0f0f0
emitFixup lab (4) Fixup32Absolute
instance Cmp (Disp, Reg32) Word8 where
cmp (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_cmp dest disp imm
instance Cmp Ind Word8 where
cmp (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase8_imm x86_cmp dest 0 imm
instance Cmp Addr Reg32 where
cmp (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_mem_reg x86_cmp dest source
instance Cmp (Disp, Reg32) Reg32 where
cmp (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_cmp dest disp source
instance Cmp Ind Reg32 where
cmp (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_membase_reg x86_cmp dest 0 source
instance Cmp Reg32 Reg32 where
cmp (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_reg x86_cmp dest source
instance Cmp Reg8 Reg8 where
cmp (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg8_reg8 x86_cmp dest source False False
instance Cmp Reg32 Addr where
cmp (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_mem x86_cmp dest source
instance Cmp Reg32 (Disp, Reg32) where
cmp (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_cmp dest source disp
instance Cmp Reg32 Ind where
cmp (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_alu_reg_membase x86_cmp dest source 0
class Test a b where
test :: a -> b -> CodeGen e s ()
instance Test Reg32 Word32 where
test (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_test_reg_imm dest imm
instance Test Addr Word32 where
test (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_test_mem_imm dest imm
instance Test (Disp, Reg32) Word32 where
test (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_test_membase_imm dest disp imm
instance Test Ind Word32 where
test (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_test_membase_imm dest 0 imm
instance Test Reg32 Reg32 where
test (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_test_reg_reg dest source
instance Test Addr Reg32 where
test (Addr dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_test_mem_reg dest source
instance Test (Disp, Reg32) Reg32 where
test (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_test_membase_reg dest disp source
instance Test Ind Reg32 where
test (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_test_membase_reg dest 0 source
class Rol a b where
rol :: a -> b -> CodeGen e s ()
instance Rol Reg32 Word8 where
rol (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_rol dest imm
instance Rol Addr Word8 where
rol (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_rol dest imm
instance Rol (Disp, Reg32) Word8 where
rol (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_rol dest disp imm
instance Rol Ind Word8 where
rol (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_rol dest 0 imm
instance Rol Reg32 Reg8 where
rol (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_rol dest
rol _ _ = onlyCl
instance Rol Addr Reg8 where
rol (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_rol dest
rol _ _ = onlyCl
instance Rol (Disp, Reg32) Reg8 where
rol (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_rol dest disp
instance Rol Ind Reg8 where
rol (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_rol dest 0
rol _ _ = onlyCl
class Ror a b where
ror :: a -> b -> CodeGen e s ()
instance Ror Reg32 Word8 where
ror (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_ror dest imm
instance Ror Addr Word8 where
ror (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_ror dest imm
instance Ror (Disp, Reg32) Word8 where
ror (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_ror dest disp imm
instance Ror Ind Word8 where
ror (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_ror dest 0 imm
instance Ror Reg32 Reg8 where
ror (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_ror dest
ror _ _ = onlyCl
instance Ror Addr Reg8 where
ror (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_ror dest
ror _ _ = onlyCl
instance Ror (Disp, Reg32) Reg8 where
ror (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_ror dest disp
instance Ror Ind Reg8 where
ror (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_ror dest 0
ror _ _ = onlyCl
class Rcl a b where
rcl :: a -> b -> CodeGen e s ()
instance Rcl Reg32 Word8 where
rcl (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_rcl dest imm
instance Rcl Addr Word8 where
rcl (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_rcl dest imm
instance Rcl (Disp, Reg32) Word8 where
rcl (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_rcl dest disp imm
instance Rcl Ind Word8 where
rcl (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_rcl dest 0 imm
instance Rcl Reg32 Reg8 where
rcl (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_rcl dest
rcl _ _ = onlyCl
instance Rcl Addr Reg8 where
rcl (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_rcl dest
rcl _ _ = onlyCl
instance Rcl (Disp, Reg32) Reg8 where
rcl (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_rcl dest disp
instance Rcl Ind Reg8 where
rcl (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_rcl dest 0
rcl _ _ = onlyCl
class Rcr a b where
rcr :: a -> b -> CodeGen e s ()
instance Rcr Reg32 Word8 where
rcr (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_rcr dest imm
instance Rcr Addr Word8 where
rcr (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_rcr dest imm
instance Rcr (Disp, Reg32) Word8 where
rcr (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_rcr dest disp imm
instance Rcr Ind Word8 where
rcr (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_rcr dest 0 imm
instance Rcr Reg32 Reg8 where
rcr (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_rcr dest
rcr _ _ = onlyCl
instance Rcr Addr Reg8 where
rcr (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_rcr dest
rcr _ _ = onlyCl
instance Rcr (Disp, Reg32) Reg8 where
rcr (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_rcr dest disp
instance Rcr Ind Reg8 where
rcr (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_rcr dest 0
rcr _ _ = onlyCl
class Shl a b where
shl :: a -> b -> CodeGen e s ()
instance Shl Reg32 Word8 where
shl (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_shl dest imm
instance Shl Addr Word8 where
shl (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_shl dest imm
instance Shl (Disp, Reg32) Word8 where
shl (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_shl dest disp imm
instance Shl Ind Word8 where
shl (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_shl dest 0 imm
instance Shl Reg32 Reg8 where
shl (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_shl dest
shl _ _ = onlyCl
instance Shl Addr Reg8 where
shl (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_shl dest
shl _ _ = onlyCl
instance Shl (Disp, Reg32) Reg8 where
shl (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_shl dest disp
instance Shl Ind Reg8 where
shl (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_shl dest 0
shl _ _ = onlyCl
class Shr a b where
shr :: a -> b -> CodeGen e s ()
instance Shr Reg32 Word8 where
shr (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_shr dest imm
instance Shr Addr Word8 where
shr (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_shr dest imm
instance Shr (Disp, Reg32) Word8 where
shr (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_shr dest disp imm
instance Shr Ind Word8 where
shr (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_shr dest 0 imm
instance Shr Reg32 Reg8 where
shr (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_shr dest
shr _ _ = onlyCl
instance Shr Addr Reg8 where
shr (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_shr dest
shr _ _ = onlyCl
instance Shr (Disp, Reg32) Reg8 where
shr (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_shr dest disp
instance Shr Ind Reg8 where
shr (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_shr dest 0
shr _ _ = onlyCl
class Sar a b where
sar :: a -> b -> CodeGen e s ()
instance Sar Reg32 Word8 where
sar (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_sar dest imm
instance Sar Addr Word8 where
sar (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_sar dest imm
instance Sar (Disp, Reg32) Word8 where
sar (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_sar dest disp imm
instance Sar Ind Word8 where
sar (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_sar dest 0 imm
instance Sar Reg32 Reg8 where
sar (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_sar dest
sar _ _ = onlyCl
instance Sar Addr Reg8 where
sar (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_sar dest
sar _ _ = onlyCl
instance Sar (Disp, Reg32) Reg8 where
sar (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_sar dest disp
instance Sar Ind Reg8 where
sar (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_sar dest 0
sar _ _ = onlyCl
class Sal a b where
sal :: a -> b -> CodeGen e s ()
instance Sal Reg32 Word8 where
sal (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg_imm x86_shl dest imm
instance Sal Addr Word8 where
sal (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem_imm x86_shl dest imm
instance Sal (Disp, Reg32) Word8 where
sal (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_shl dest disp imm
instance Sal Ind Word8 where
sal (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase_imm x86_shl dest 0 imm
instance Sal Reg32 Reg8 where
sal (Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_reg x86_shl dest
sal _ _ = onlyCl
instance Sal Addr Reg8 where
sal (Addr dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_mem x86_shl dest
sal _ _ = onlyCl
instance Sal (Disp, Reg32) Reg8 where
sal (Disp disp, Reg32 dest) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_shl dest disp
instance Sal Ind Reg8 where
sal (Ind (Reg32 dest)) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shift_membase x86_shl dest 0
sal _ _ = onlyCl
class Shrd a b c where
shrd :: a -> b -> c -> CodeGen e s ()
instance Shrd Reg32 Reg32 Reg8 where
shrd (Reg32 dest) (Reg32 source) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shrd_reg dest source
shrd _ _ _ = onlyCl
instance Shrd Reg32 Reg32 Word8 where
shrd (Reg32 dest) (Reg32 source) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shrd_reg_imm dest source imm
class Shld a b c where
shld :: a -> b -> c -> CodeGen e s ()
instance Shld Reg32 Reg32 Reg8 where
shld (Reg32 dest) (Reg32 source) (Reg8 1) = ensureBufferSize x86_max_instruction_bytes >> x86_shld_reg dest source
shld _ _ _ = onlyCl
instance Shld Reg32 Reg32 Word8 where
shld (Reg32 dest) (Reg32 source) imm = ensureBufferSize x86_max_instruction_bytes >> x86_shld_reg_imm dest source imm
class Mul a where
mul :: a -> CodeGen e s ()
instance Mul Reg32 where
mul (Reg32 arg) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_reg arg False
instance Mul Addr where
mul (Addr arg) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_mem arg False
instance Mul (Disp, Reg32) where
mul (Disp disp, Reg32 arg) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_membase arg disp False
instance Mul Ind where
mul (Ind (Reg32 arg)) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_membase arg 0 False
data InPlace = InPlace
class Imul a b c where
imul :: a -> b -> c -> CodeGen e s ()
instance Imul InPlace Reg32 Reg32 where
imul _ (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_reg dest source
instance Imul InPlace Reg32 Addr where
imul _ (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_mem dest source
instance Imul InPlace Reg32 (Disp, Reg32) where
imul _ (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_membase dest source disp
instance Imul InPlace Reg32 Ind where
imul _ (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_membase dest source 0
instance Imul Reg32 Reg32 Word32 where
imul (Reg32 dest) (Reg32 source) imm = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_reg_imm dest source imm
instance Imul Reg32 Addr Word32 where
imul (Reg32 dest) (Addr source) imm = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_mem_imm dest source imm
instance Imul Reg32 (Disp, Reg32) Word32 where
imul (Reg32 dest) (Disp disp, Reg32 source) imm = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_membase_imm dest source disp imm
instance Imul Reg32 Ind Word32 where
imul (Reg32 dest) (Ind (Reg32 source)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_imul_reg_membase_imm dest source 0 imm
class Div a where
div :: a -> CodeGen e s ()
instance Div Reg32 where
div (Reg32 arg) = ensureBufferSize x86_max_instruction_bytes >> x86_div_reg arg False
instance Div Addr where
div (Addr arg) = ensureBufferSize x86_max_instruction_bytes >> x86_div_mem arg False
instance Div (Disp, Reg32) where
div (Disp disp, Reg32 arg) = ensureBufferSize x86_max_instruction_bytes >> x86_div_membase arg disp False
instance Div Ind where
div (Ind (Reg32 arg)) = ensureBufferSize x86_max_instruction_bytes >> x86_div_membase arg 0 False
class Idiv a where
idiv :: a -> CodeGen e s ()
instance Idiv Reg32 where
idiv (Reg32 arg) = ensureBufferSize x86_max_instruction_bytes >> x86_div_reg arg True
instance Idiv Addr where
idiv (Addr arg) = ensureBufferSize x86_max_instruction_bytes >> x86_div_mem arg True
instance Idiv (Disp, Reg32) where
idiv (Disp disp, Reg32 arg) = ensureBufferSize x86_max_instruction_bytes >> x86_div_membase arg disp True
instance Idiv Ind where
idiv (Ind (Reg32 arg)) = ensureBufferSize x86_max_instruction_bytes >> x86_div_membase arg 0 True
class Mov a b where
mov :: a -> b -> CodeGen e s ()
instance Mov Reg8 Reg8 where
mov (Reg8 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_reg dest source 1
instance Mov Reg16 Reg16 where
mov (Reg16 dest) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_reg dest source 2
instance Mov Reg32 Reg32 where
mov (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_reg dest source 4
instance Mov Reg32 Word32 where
mov (Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_imm dest (fromIntegral imm)
instance Mov Reg32 (Ptr a) where
mov (Reg32 dest) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_imm dest (ptrToWord32 ptr)
instance Mov Reg32 Label where
mov (Reg32 dest) lab = do ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_imm dest 0
emitFixup lab (4) Fixup32Absolute
instance Mov Addr Word8 where
mov (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_imm dest (fromIntegral imm) 1
instance Mov Addr Word16 where
mov (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_imm dest (fromIntegral imm) 2
instance Mov Addr Word32 where
mov (Addr dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_imm dest imm 4
instance Mov Addr (Ptr a) where
mov (Addr dest) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_imm dest (ptrToWord32 ptr) 4
instance Mov Addr Label where
mov (Addr dest) lab = do ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_imm dest 0 4
emitFixup lab (4) Fixup32Absolute
instance Mov (Disp, Reg32) Word8 where
mov (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest disp (fromIntegral imm) 1
instance Mov Ind Word8 where
mov (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest 0 (fromIntegral imm) 1
instance Mov (Disp, Reg32) Word16 where
mov (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest disp (fromIntegral imm) 2
instance Mov Ind Word16 where
mov (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest 0 (fromIntegral imm) 2
instance Mov (Disp, Reg32) Word32 where
mov (Disp disp, Reg32 dest) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest disp imm 4
instance Mov (Disp, Reg32) (Ptr a) where
mov (Disp disp, Reg32 dest) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest disp (ptrToWord32 ptr) 4
instance Mov (Disp, Reg32) Label where
mov (Disp disp, Reg32 dest) lab = do ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest disp 0 4
emitFixup lab (4) Fixup32Absolute
instance Mov Ind Word32 where
mov (Ind (Reg32 dest)) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest 0 imm 4
instance Mov Ind (Ptr a) where
mov (Ind (Reg32 dest)) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest 0 (ptrToWord32 ptr) 4
instance Mov Ind Label where
mov (Ind (Reg32 dest)) lab = do ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_imm dest 0 0 4
emitFixup lab (4) Fixup32Absolute
instance Mov (Reg32, Reg32, Scale) Word8 where
mov (Reg32 base, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm base 0 index (scaleToShift scale) (fromIntegral imm) 1
instance Mov (Reg32, Reg32, Scale) Word16 where
mov (Reg32 base, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm base 0 index (scaleToShift scale) (fromIntegral imm) 2
instance Mov (Reg32, Reg32, Scale) Word32 where
mov (Reg32 base, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm base 0 index (scaleToShift scale) imm 4
instance Mov (Reg32, Reg32, Scale) (Ptr a) where
mov (Reg32 base, Reg32 index, scale) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm base 0 index (scaleToShift scale) (ptrToWord32 ptr) 4
instance Mov (Reg32, Reg32, Scale) Label where
mov (Reg32 base, Reg32 index, scale) lab = do ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm base 0 index (scaleToShift scale) 0 4
emitFixup lab (4) Fixup32Absolute
instance Mov (Disp, Reg32, Scale) Word8 where
mov (Disp disp, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm x86_nobasereg disp index (scaleToShift scale) (fromIntegral imm) 1
instance Mov (Disp, Reg32, Scale) Word16 where
mov (Disp disp, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm x86_nobasereg disp index (scaleToShift scale) (fromIntegral imm) 2
instance Mov (Disp, Reg32, Scale) Word32 where
mov (Disp disp, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm x86_nobasereg disp index (scaleToShift scale) imm 4
instance Mov (Disp, Reg32, Scale) (Ptr a) where
mov (Disp disp, Reg32 index, scale) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm x86_nobasereg disp index (scaleToShift scale) (ptrToWord32 ptr) 4
instance Mov (Disp, Reg32, Scale) Label where
mov (Disp disp, Reg32 index, scale) lab = do ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm x86_nobasereg disp index (scaleToShift scale) 0 4
emitFixup lab (4) Fixup32Absolute
instance Mov (Disp, Reg32, Reg32, Scale) Word8 where
mov (Disp disp, Reg32 5, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm 5 disp index (scaleToShift scale) (fromIntegral imm) 1
mov _ _ = onlyEbp
instance Mov (Disp, Reg32, Reg32, Scale) Word16 where
mov (Disp disp, Reg32 5, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm 5 disp index (scaleToShift scale) (fromIntegral imm) 2
mov _ _ = onlyEbp
instance Mov (Disp, Reg32, Reg32, Scale) Word32 where
mov (Disp disp, Reg32 5, Reg32 index, scale) imm = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm 5 disp index (scaleToShift scale) imm 4
mov _ _ = onlyEbp
instance Mov (Disp, Reg32, Reg32, Scale) (Ptr a) where
mov (Disp disp, Reg32 5, Reg32 index, scale) ptr = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm 5 disp index (scaleToShift scale) (ptrToWord32 ptr) 4
mov _ _ = onlyEbp
instance Mov (Disp, Reg32, Reg32, Scale) Label where
mov (Disp disp, Reg32 5, Reg32 index, scale) lab = do ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_imm 5 disp index (scaleToShift scale) 0 4
emitFixup lab (4) Fixup32Absolute
mov _ _ = onlyEbp
instance Mov Addr Reg8 where
mov (Addr a) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_reg a source 1
instance Mov Addr Reg16 where
mov (Addr a) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_reg a source 2
instance Mov Addr Reg32 where
mov (Addr a) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_mem_reg a source 4
instance Mov Reg8 Addr where
mov (Reg8 dest) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_mem dest a 1
instance Mov Reg16 Addr where
mov (Reg16 dest) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_mem dest a 2
instance Mov Reg32 Addr where
mov (Reg32 dest) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_mem dest a 4
instance Mov Ind Reg8 where
mov (Ind (Reg32 dest)) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_regp_reg dest source 1
instance Mov Ind Reg16 where
mov (Ind (Reg32 dest)) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_regp_reg dest source 2
instance Mov Ind Reg32 where
mov (Ind (Reg32 dest)) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_regp_reg dest source 4
instance Mov Reg8 Ind where
mov (Reg8 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_regp dest source 1
instance Mov Reg16 Ind where
mov (Reg16 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_regp dest source 2
instance Mov Reg32 Ind where
mov (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_regp dest source 4
instance Mov (Disp, Reg32) Reg8 where
mov (Disp disp, Reg32 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_reg dest disp source 1
instance Mov (Disp, Reg32) Reg16 where
mov (Disp disp, Reg32 dest) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_reg dest disp source 2
instance Mov (Disp, Reg32) Reg32 where
mov (Disp disp, Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_membase_reg dest disp source 4
instance Mov Reg8 (Disp, Reg32) where
mov (Reg8 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_membase dest source disp 1
instance Mov Reg16 (Disp, Reg32) where
mov (Reg16 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_membase dest source disp 2
instance Mov Reg32 (Disp, Reg32) where
mov (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_membase dest source disp 4
instance Mov (Reg32, Reg32, Scale) Reg8 where
mov (Reg32 base, Reg32 index, s) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg base 0 index (scaleToShift s) source 1
instance Mov (Reg32, Reg32, Scale) Reg16 where
mov (Reg32 base, Reg32 index, s) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg base 0 index (scaleToShift s) source 2
instance Mov (Reg32, Reg32, Scale) Reg32 where
mov (Reg32 base, Reg32 index, s) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg base 0 index (scaleToShift s) source 4
instance Mov Reg8 (Reg32, Reg32, Scale) where
mov (Reg8 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest base 0 index (scaleToShift s) 1
instance Mov Reg16 (Reg32, Reg32, Scale) where
mov (Reg16 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest base 0 index (scaleToShift s) 2
instance Mov Reg32 (Reg32, Reg32, Scale) where
mov (Reg32 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest base 0 index (scaleToShift s) 4
instance Mov (Disp, Reg32, Scale) Reg8 where
mov (Disp disp, Reg32 index, s) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg x86_nobasereg disp index (scaleToShift s) source 1
instance Mov (Disp, Reg32, Scale) Reg16 where
mov (Disp disp, Reg32 index, s) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg x86_nobasereg disp index (scaleToShift s) source 2
instance Mov (Disp, Reg32, Scale) Reg32 where
mov (Disp disp, Reg32 index, s) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg x86_nobasereg disp index (scaleToShift s) source 4
instance Mov Reg8 (Disp, Reg32, Scale) where
mov (Reg8 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest x86_nobasereg disp index (scaleToShift s) 1
instance Mov Reg16 (Disp, Reg32, Scale) where
mov (Reg16 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest x86_nobasereg disp index (scaleToShift s) 2
instance Mov Reg32 (Disp, Reg32, Scale) where
mov (Reg32 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest x86_nobasereg disp index (scaleToShift s) 4
instance Mov (Disp, Reg32, Reg32, Scale) Reg8 where
mov (Disp disp, Reg32 5, Reg32 index, s) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg 5 disp index (scaleToShift s) source 1
mov _ _ = onlyEbp
instance Mov (Disp, Reg32, Reg32, Scale) Reg16 where
mov (Disp disp, Reg32 5, Reg32 index, s) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg 5 disp index (scaleToShift s) source 2
mov _ _ = onlyEbp
instance Mov (Disp, Reg32, Reg32, Scale) Reg32 where
mov (Disp disp, Reg32 5, Reg32 index, s) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> ensureBufferSize x86_max_instruction_bytes >> x86_mov_memindex_reg 5 disp index (scaleToShift s) source 4
mov _ _ = onlyEbp
instance Mov Reg8 (Disp, Reg32, Reg32, Scale) where
mov (Reg8 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest 5 disp index (scaleToShift s) 1
mov _ _ = onlyEbp
instance Mov Reg16 (Disp, Reg32, Reg32, Scale) where
mov (Reg16 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest 5 disp index (scaleToShift s) 2
mov _ _ = onlyEbp
instance Mov Reg32 (Disp, Reg32, Reg32, Scale) where
mov (Reg32 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_reg_memindex dest 5 disp index (scaleToShift s) 4
mov _ _ = onlyEbp
class Movsxb a b where
movsxb :: a -> b -> CodeGen e s ()
instance Movsxb Reg32 Reg8 where
movsxb (Reg32 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_reg dest source True False
instance Movsxb Reg32 Addr where
movsxb (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_mem dest source True False
instance Movsxb Reg32 (Disp, Reg32) where
movsxb (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source disp True False
instance Movsxb Reg32 Ind where
movsxb (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source 0 True False
instance Movsxb Reg32 (Disp, Reg32, Reg32, Scale) where
movsxb (Reg32 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest 5 disp index (scaleToShift s) True False
movsxb _ _ = onlyEbp
instance Movsxb Reg32 (Disp, Reg32, Scale) where
movsxb (Reg32 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest x86_nobasereg disp index (scaleToShift s) True False
instance Movsxb Reg32 (Reg32, Reg32, Scale) where
movsxb (Reg32 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest base 0 index (scaleToShift s) True False
class Movsxw a b where
movsxw :: a -> b -> CodeGen e s ()
instance Movsxw Reg32 Reg16 where
movsxw (Reg32 dest) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_reg dest source True True
instance Movsxw Reg32 Addr where
movsxw (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_mem dest source True True
instance Movsxw Reg32 (Disp, Reg32) where
movsxw (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source disp True True
instance Movsxw Reg32 Ind where
movsxw (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source 0 True True
instance Movsxw Reg32 (Disp, Reg32, Reg32, Scale) where
movsxw (Reg32 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest 5 disp index (scaleToShift s) True True
movsxw _ _ = onlyEbp
instance Movsxw Reg32 (Disp, Reg32, Scale) where
movsxw (Reg32 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest x86_nobasereg disp index (scaleToShift s) True True
instance Movsxw Reg32 (Reg32, Reg32, Scale) where
movsxw (Reg32 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest base 0 index (scaleToShift s) True True
class Movzxb a b where
movzxb :: a -> b -> CodeGen e s ()
instance Movzxb Reg32 Reg8 where
movzxb (Reg32 dest) (Reg8 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_reg dest source False False
instance Movzxb Reg32 Addr where
movzxb (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_mem dest source False False
instance Movzxb Reg32 (Disp, Reg32) where
movzxb (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source disp False False
instance Movzxb Reg32 Ind where
movzxb (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source 0 False False
instance Movzxb Reg32 (Disp, Reg32, Reg32, Scale) where
movzxb (Reg32 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest 5 disp index (scaleToShift s) False False
movzxb _ _ = onlyEbp
instance Movzxb Reg32 (Disp, Reg32, Scale) where
movzxb (Reg32 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest x86_nobasereg disp index (scaleToShift s) False False
instance Movzxb Reg32 (Reg32, Reg32, Scale) where
movzxb (Reg32 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest base 0 index (scaleToShift s) False False
class Movzxw a b where
movzxw :: a -> b -> CodeGen e s ()
instance Movzxw Reg32 Reg16 where
movzxw (Reg32 dest) (Reg16 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_reg dest source False True
instance Movzxw Reg32 Addr where
movzxw (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_mem dest source False True
instance Movzxw Reg32 (Disp, Reg32) where
movzxw (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source disp False True
instance Movzxw Reg32 Ind where
movzxw (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_membase dest source 0 False True
instance Movzxw Reg32 (Disp, Reg32, Reg32, Scale) where
movzxw (Reg32 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest 5 disp index (scaleToShift s) False True
movzxw _ _ = onlyEbp
instance Movzxw Reg32 (Disp, Reg32, Scale) where
movzxw (Reg32 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest x86_nobasereg disp index (scaleToShift s) False True
instance Movzxw Reg32 (Reg32, Reg32, Scale) where
movzxw (Reg32 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_widen_memindex dest base 0 index (scaleToShift s) False True
class Lea a b where
lea :: a -> b -> CodeGen e s ()
instance Lea Reg32 Addr where
lea (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_lea_mem dest source
instance Lea Reg32 (Disp, Reg32) where
lea (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_lea_membase dest source disp
instance Lea Reg32 Ind where
lea (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_lea_membase dest source 0
instance Lea Reg32 (Disp, Reg32, Reg32, Scale) where
lea (Reg32 dest) (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_lea_memindex dest 5 disp index (scaleToShift s)
lea _ _ = onlyEbp
instance Lea Reg32 (Disp, Reg32, Scale) where
lea (Reg32 dest) (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_lea_memindex dest x86_nobasereg disp index (scaleToShift s)
instance Lea Reg32 (Reg32, Reg32, Scale) where
lea (Reg32 dest) (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_lea_memindex dest base 0 index (scaleToShift s)
cdq = ensureBufferSize x86_max_instruction_bytes >> x86_cdq
wait = ensureBufferSize x86_max_instruction_bytes >> x86_wait
class Push a where
push :: a -> CodeGen e s ()
instance Push Reg32 where
push (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_push_reg source
instance Push Ind where
push (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_push_regp source
instance Push Addr where
push (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_push_mem source
instance Push (Disp, Reg32) where
push (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_push_membase source disp
instance Push Word32 where
push imm = ensureBufferSize x86_max_instruction_bytes >> x86_push_imm imm
instance Push Label where
push l = do ensureBufferSize x86_max_instruction_bytes >> x86_push_imm_template
emitFixup l (4) Fixup32Absolute
instance Push (Disp, Reg32, Reg32, Scale) where
push (Disp disp, Reg32 5, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_push_memindex 5 disp index (scaleToShift s)
push _ = onlyEbp
instance Push (Disp, Reg32, Scale) where
push (Disp disp, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_push_memindex x86_nobasereg disp index (scaleToShift s)
instance Push (Reg32, Reg32, Scale) where
push (Reg32 base, Reg32 index, s) = ensureBufferSize x86_max_instruction_bytes >> x86_push_memindex base 0 index (scaleToShift s)
class Pop a where
pop :: a -> CodeGen e s ()
instance Pop Reg32 where
pop (Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_pop_reg dest
instance Pop Addr where
pop (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_pop_mem dest
instance Pop (Disp, Reg32) where
pop (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_pop_membase dest disp
instance Pop Ind where
pop (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_pop_membase dest 0
pushad = ensureBufferSize x86_max_instruction_bytes >> x86_pushad
popad = ensureBufferSize x86_max_instruction_bytes >> x86_popad
pushfd = ensureBufferSize x86_max_instruction_bytes >> x86_pushfd
popfd = ensureBufferSize x86_max_instruction_bytes >> x86_popfd
class Loop a where
loop :: a -> CodeGen e s ()
loope :: a -> CodeGen e s ()
loopne :: a -> CodeGen e s ()
instance Loop Word8 where
loop w = ensureBufferSize x86_max_instruction_bytes >> x86_loop w
loope w = ensureBufferSize x86_max_instruction_bytes >> x86_loope w
loopne w = ensureBufferSize x86_max_instruction_bytes >> x86_loopne w
instance Loop Label where
loop l = do ensureBufferSize x86_max_instruction_bytes >> x86_loop 0
emitFixup l (1) Fixup8
loope l = do ensureBufferSize x86_max_instruction_bytes >> x86_loope 0
emitFixup l (1) Fixup8
loopne l = do ensureBufferSize x86_max_instruction_bytes >> x86_loopne 0
emitFixup l (1) Fixup8
class Jmp a where
jmp :: a -> CodeGen e s ()
instance Jmp Word8 where
jmp imm = ensureBufferSize x86_max_instruction_bytes >> x86_jump8 imm
instance Jmp Word32 where
jmp imm = ensureBufferSize x86_max_instruction_bytes >> x86_jump32 imm
instance Jmp Reg32 where
jmp (Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_jump_reg dest
instance Jmp Addr where
jmp (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_jump_mem dest
instance Jmp (Disp, Reg32) where
jmp (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_jump_membase dest disp
instance Jmp Ind where
jmp (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_jump_membase dest 0
instance Jmp Label where
jmp l = do ensureBufferSize x86_max_instruction_bytes >> x86_jump32 0
emitFixup l (4) Fixup32
instance Jmp (Ptr a) where
jmp ptr = ensureBufferSize x86_max_instruction_bytes >> x86_jump_pointer ptr
class Ja a where
ja :: a -> CodeGen e s ()
instance Ja Word8 where
ja imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_a imm False
instance Ja Word32 where
ja imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_a imm False
instance Ja (Ptr a) where
ja ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_a ptr False
instance Ja Label where
ja l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_a 0 False
emitFixup l (4) Fixup32
class Jae a where
jae :: a -> CodeGen e s ()
instance Jae Word8 where
jae imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_ae imm False
instance Jae Word32 where
jae imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ae imm False
instance Jae (Ptr a) where
jae ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_ae ptr False
instance Jae Label where
jae l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ae 0 False
emitFixup l (4) Fixup32
class Jb a where
jb :: a -> CodeGen e s ()
instance Jb Word8 where
jb imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_b imm False
instance Jb Word32 where
jb imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_b imm False
instance Jb (Ptr a) where
jb ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_b ptr False
instance Jb Label where
jb l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_b 0 False
emitFixup l (4) Fixup32
class Jbe a where
jbe :: a -> CodeGen e s ()
instance Jbe Word8 where
jbe imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_be imm False
instance Jbe Word32 where
jbe imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_be imm False
instance Jbe (Ptr a) where
jbe ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_be ptr False
instance Jbe Label where
jbe l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_be 0 False
emitFixup l (4) Fixup32
class Jc a where
jc :: a -> CodeGen e s ()
instance Jc Word8 where
jc imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_c imm False
instance Jc Word32 where
jc imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_c imm False
instance Jc (Ptr a) where
jc ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_c ptr False
instance Jc Label where
jc l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_c 0 False
emitFixup l (4) Fixup32
class Je a where
je :: a -> CodeGen e s ()
instance Je Word8 where
je imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_e imm False
instance Je Word32 where
je imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_e imm False
instance Je (Ptr a) where
je ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_e ptr False
instance Je Label where
je l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_e 0 False
emitFixup l (4) Fixup32
class Jna a where
jna :: a -> CodeGen e s ()
instance Jna Word8 where
jna imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_na imm False
instance Jna Word32 where
jna imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_na imm False
instance Jna (Ptr a) where
jna ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_na ptr False
instance Jna Label where
jna l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_na 0 False
emitFixup l (4) Fixup32
class Jnae a where
jnae :: a -> CodeGen e s ()
instance Jnae Word8 where
jnae imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_nae imm False
instance Jnae Word32 where
jnae imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nae imm False
instance Jnae (Ptr a) where
jnae ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_nae ptr False
instance Jnae Label where
jnae l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nae 0 False
emitFixup l (4) Fixup32
class Jnb a where
jnb :: a -> CodeGen e s ()
instance Jnb Word8 where
jnb imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_nb imm False
instance Jnb Word32 where
jnb imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nb imm False
instance Jnb (Ptr a) where
jnb ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_nb ptr False
instance Jnb Label where
jnb l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nb 0 False
emitFixup l (4) Fixup32
class Jnbe a where
jnbe :: a -> CodeGen e s ()
instance Jnbe Word8 where
jnbe imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_nbe imm False
instance Jnbe Word32 where
jnbe imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nbe imm False
instance Jnbe (Ptr a) where
jnbe ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_nbe ptr False
instance Jnbe Label where
jnbe l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nbe 0 False
emitFixup l (4) Fixup32
class Jnc a where
jnc :: a -> CodeGen e s ()
instance Jnc Word8 where
jnc imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_nc imm False
instance Jnc Word32 where
jnc imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nc imm False
instance Jnc (Ptr a) where
jnc ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_nc ptr False
instance Jnc Label where
jnc l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nc 0 False
emitFixup l (4) Fixup32
class Jne a where
jne :: a -> CodeGen e s ()
instance Jne Word8 where
jne imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_ne imm False
instance Jne Word32 where
jne imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ne imm False
instance Jne (Ptr a) where
jne ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_ne ptr False
instance Jne Label where
jne l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ne 0 False
emitFixup l (4) Fixup32
class Jnp a where
jnp :: a -> CodeGen e s ()
instance Jnp Word8 where
jnp imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_np imm False
instance Jnp Word32 where
jnp imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_np imm False
instance Jnp (Ptr a) where
jnp ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_np ptr False
instance Jnp Label where
jnp l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_np 0 False
emitFixup l (4) Fixup32
class Jnz a where
jnz :: a -> CodeGen e s ()
instance Jnz Word8 where
jnz imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_nz imm False
instance Jnz Word32 where
jnz imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nz imm False
instance Jnz (Ptr a) where
jnz ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_nz ptr False
instance Jnz Label where
jnz l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_nz 0 False
emitFixup l (4) Fixup32
class Jp a where
jp :: a -> CodeGen e s ()
instance Jp Word8 where
jp imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_p imm False
instance Jp Word32 where
jp imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_p imm False
instance Jp (Ptr a) where
jp ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_p ptr False
instance Jp Label where
jp l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_p 0 False
emitFixup l (4) Fixup32
class Jpe a where
jpe :: a -> CodeGen e s ()
instance Jpe Word8 where
jpe imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_pe imm False
instance Jpe Word32 where
jpe imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_pe imm False
instance Jpe (Ptr a) where
jpe ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_pe ptr False
instance Jpe Label where
jpe l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_pe 0 False
emitFixup l (4) Fixup32
class Jpo a where
jpo :: a -> CodeGen e s ()
instance Jpo Word8 where
jpo imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_po imm False
instance Jpo Word32 where
jpo imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_po imm False
instance Jpo (Ptr a) where
jpo ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_po ptr False
instance Jpo Label where
jpo l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_po 0 False
emitFixup l (4) Fixup32
class Jz a where
jz :: a -> CodeGen e s ()
instance Jz Word8 where
jz imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_z imm False
instance Jz Word32 where
jz imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_z imm False
instance Jz (Ptr a) where
jz ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_z ptr False
instance Jz Label where
jz l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_z 0 False
emitFixup l (4) Fixup32
class Jg a where
jg :: a -> CodeGen e s ()
instance Jg Word8 where
jg imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_gt imm True
instance Jg Word32 where
jg imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_gt imm True
instance Jg (Ptr a) where
jg ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_gt ptr True
instance Jg Label where
jg l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_gt 0 True
emitFixup l (4) Fixup32
class Jge a where
jge :: a -> CodeGen e s ()
instance Jge Word8 where
jge imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_ge imm True
instance Jge Word32 where
jge imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ge imm True
instance Jge (Ptr a) where
jge ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_ge ptr True
instance Jge Label where
jge l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ge 0 True
emitFixup l (4) Fixup32
class Jl a where
jl :: a -> CodeGen e s ()
instance Jl Word8 where
jl imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_lt imm True
instance Jl Word32 where
jl imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_lt imm True
instance Jl (Ptr a) where
jl ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_lt ptr True
instance Jl Label where
jl l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_lt 0 True
emitFixup l (4) Fixup32
class Jle a where
jle :: a -> CodeGen e s ()
instance Jle Word8 where
jle imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_le imm True
instance Jle Word32 where
jle imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_le imm True
instance Jle (Ptr a) where
jle ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_le ptr True
instance Jle Label where
jle l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_le 0 True
emitFixup l (4) Fixup32
class Jng a where
jng :: a -> CodeGen e s ()
instance Jng Word8 where
jng imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_le imm True
instance Jng Word32 where
jng imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_le imm True
instance Jng (Ptr a) where
jng ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_le ptr True
instance Jng Label where
jng l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_le 0 True
emitFixup l (4) Fixup32
class Jnge a where
jnge :: a -> CodeGen e s ()
instance Jnge Word8 where
jnge imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_lt imm True
instance Jnge Word32 where
jnge imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_lt imm True
instance Jnge (Ptr a) where
jnge ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_lt ptr True
instance Jnge Label where
jnge l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_lt 0 True
emitFixup l (4) Fixup32
class Jnl a where
jnl :: a -> CodeGen e s ()
instance Jnl Word8 where
jnl imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_ge imm True
instance Jnl Word32 where
jnl imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ge imm True
instance Jnl (Ptr a) where
jnl ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_ge ptr True
instance Jnl Label where
jnl l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ge 0 True
emitFixup l (4) Fixup32
class Jnle a where
jnle :: a -> CodeGen e s ()
instance Jnle Word8 where
jnle imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_gt imm True
instance Jnle Word32 where
jnle imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_gt imm True
instance Jnle (Ptr a) where
jnle ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_gt ptr True
instance Jnle Label where
jnle l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_gt 0 True
emitFixup l (4) Fixup32
class Jno a where
jno :: a -> CodeGen e s ()
instance Jno Word8 where
jno imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_no imm True
instance Jno Word32 where
jno imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_no imm True
instance Jno (Ptr a) where
jno ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_no ptr True
instance Jno Label where
jno l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_no 0 True
emitFixup l (4) Fixup32
class Jns a where
jns :: a -> CodeGen e s ()
instance Jns Word8 where
jns imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_ns imm True
instance Jns Word32 where
jns imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ns imm True
instance Jns (Ptr a) where
jns ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_ns ptr True
instance Jns Label where
jns l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_ns 0 True
emitFixup l (4) Fixup32
class Jo a where
jo :: a -> CodeGen e s ()
instance Jo Word8 where
jo imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_o imm True
instance Jo Word32 where
jo imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_o imm True
instance Jo (Ptr a) where
jo ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_o ptr True
instance Jo Label where
jo l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_o 0 True
emitFixup l (4) Fixup32
class Js a where
js :: a -> CodeGen e s ()
instance Js Word8 where
js imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch8 x86_cc_s imm True
instance Js Word32 where
js imm = ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_s imm True
instance Js (Ptr a) where
js ptr = ensureBufferSize x86_max_instruction_bytes >> x86_branch_pointer x86_cc_s ptr True
instance Js Label where
js l = do ensureBufferSize x86_max_instruction_bytes >> x86_branch32 x86_cc_s 0 True
emitFixup l (4) Fixup32
jecxz :: Word8 -> CodeGen e s ()
jecxz w = ensureBufferSize x86_max_instruction_bytes >> x86_jecxz w
class Seta a where
seta :: a -> CodeGen e s ()
instance Seta Reg8 where
seta (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_a dest False
instance Seta Addr where
seta (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_a dest False
instance Seta (Disp, Reg32) where
seta (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_a dest disp False
instance Seta Ind where
seta (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_a dest 0 False
class Setae a where
setae :: a -> CodeGen e s ()
instance Setae Reg8 where
setae (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_ae dest False
instance Setae Addr where
setae (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_ae dest False
instance Setae (Disp, Reg32) where
setae (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ae dest disp False
instance Setae Ind where
setae (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ae dest 0 False
class Setb a where
setb :: a -> CodeGen e s ()
instance Setb Reg8 where
setb (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_b dest False
instance Setb Addr where
setb (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_b dest False
instance Setb (Disp, Reg32) where
setb (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_b dest disp False
instance Setb Ind where
setb (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_b dest 0 False
class Setbe a where
setbe :: a -> CodeGen e s ()
instance Setbe Reg8 where
setbe (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_be dest False
instance Setbe Addr where
setbe (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_be dest False
instance Setbe (Disp, Reg32) where
setbe (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_be dest disp False
instance Setbe Ind where
setbe (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_be dest 0 False
class Setc a where
setc :: a -> CodeGen e s ()
instance Setc Reg8 where
setc (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_c dest False
instance Setc Addr where
setc (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_c dest False
instance Setc (Disp, Reg32) where
setc (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_c dest disp False
instance Setc Ind where
setc (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_c dest 0 False
class Sete a where
sete :: a -> CodeGen e s ()
instance Sete Reg8 where
sete (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_e dest False
instance Sete Addr where
sete (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_e dest False
instance Sete (Disp, Reg32) where
sete (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_e dest disp False
instance Sete Ind where
sete (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_e dest 0 False
class Setna a where
setna :: a -> CodeGen e s ()
instance Setna Reg8 where
setna (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_na dest False
instance Setna Addr where
setna (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_na dest False
instance Setna (Disp, Reg32) where
setna (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_na dest disp False
instance Setna Ind where
setna (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_na dest 0 False
class Setnae a where
setnae :: a -> CodeGen e s ()
instance Setnae Reg8 where
setnae (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_nae dest False
instance Setnae Addr where
setnae (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_nae dest False
instance Setnae (Disp, Reg32) where
setnae (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nae dest disp False
instance Setnae Ind where
setnae (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nae dest 0 False
class Setnb a where
setnb :: a -> CodeGen e s ()
instance Setnb Reg8 where
setnb (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_nb dest False
instance Setnb Addr where
setnb (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_nb dest False
instance Setnb (Disp, Reg32) where
setnb (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nb dest disp False
instance Setnb Ind where
setnb (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nb dest 0 False
class Setnbe a where
setnbe :: a -> CodeGen e s ()
instance Setnbe Reg8 where
setnbe (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_nbe dest False
instance Setnbe Addr where
setnbe (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_nbe dest False
instance Setnbe (Disp, Reg32) where
setnbe (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nbe dest disp False
instance Setnbe Ind where
setnbe (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nbe dest 0 False
class Setnc a where
setnc :: a -> CodeGen e s ()
instance Setnc Reg8 where
setnc (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_nc dest False
instance Setnc Addr where
setnc (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_nc dest False
instance Setnc (Disp, Reg32) where
setnc (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nc dest disp False
instance Setnc Ind where
setnc (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nc dest 0 False
class Setne a where
setne :: a -> CodeGen e s ()
instance Setne Reg8 where
setne (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_ne dest False
instance Setne Addr where
setne (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_ne dest False
instance Setne (Disp, Reg32) where
setne (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ne dest disp False
instance Setne Ind where
setne (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ne dest 0 False
class Setnp a where
setnp :: a -> CodeGen e s ()
instance Setnp Reg8 where
setnp (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_np dest False
instance Setnp Addr where
setnp (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_np dest False
instance Setnp (Disp, Reg32) where
setnp (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_np dest disp False
instance Setnp Ind where
setnp (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_np dest 0 False
class Setnz a where
setnz :: a -> CodeGen e s ()
instance Setnz Reg8 where
setnz (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_nz dest False
instance Setnz Addr where
setnz (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_nz dest False
instance Setnz (Disp, Reg32) where
setnz (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nz dest disp False
instance Setnz Ind where
setnz (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_nz dest 0 False
class Setp a where
setp :: a -> CodeGen e s ()
instance Setp Reg8 where
setp (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_p dest False
instance Setp Addr where
setp (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_p dest False
instance Setp (Disp, Reg32) where
setp (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_p dest disp False
instance Setp Ind where
setp (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_p dest 0 False
class Setpe a where
setpe :: a -> CodeGen e s ()
instance Setpe Reg8 where
setpe (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_pe dest False
instance Setpe Addr where
setpe (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_pe dest False
instance Setpe (Disp, Reg32) where
setpe (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_pe dest disp False
instance Setpe Ind where
setpe (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_pe dest 0 False
class Setpo a where
setpo :: a -> CodeGen e s ()
instance Setpo Reg8 where
setpo (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_po dest False
instance Setpo Addr where
setpo (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_po dest False
instance Setpo (Disp, Reg32) where
setpo (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_po dest disp False
instance Setpo Ind where
setpo (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_po dest 0 False
class Setg a where
setg :: a -> CodeGen e s ()
instance Setg Reg8 where
setg (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_gt dest True
instance Setg Addr where
setg (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_gt dest True
instance Setg (Disp, Reg32) where
setg (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_gt dest disp True
instance Setg Ind where
setg (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_gt dest 0 True
class Setge a where
setge :: a -> CodeGen e s ()
instance Setge Reg8 where
setge (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_ge dest True
instance Setge Addr where
setge (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_ge dest True
instance Setge (Disp, Reg32) where
setge (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ge dest disp True
instance Setge Ind where
setge (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ge dest 0 True
class Setl a where
setl :: a -> CodeGen e s ()
instance Setl Reg8 where
setl (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_lt dest True
instance Setl Addr where
setl (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_lt dest True
instance Setl (Disp, Reg32) where
setl (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_lt dest disp True
instance Setl Ind where
setl (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_lt dest 0 True
class Setle a where
setle :: a -> CodeGen e s ()
instance Setle Reg8 where
setle (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_le dest True
instance Setle Addr where
setle (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_le dest True
instance Setle (Disp, Reg32) where
setle (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_le dest disp True
instance Setle Ind where
setle (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_le dest 0 True
class Setng a where
setng :: a -> CodeGen e s ()
instance Setng Reg8 where
setng (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_le dest True
instance Setng Addr where
setng (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_le dest True
instance Setng (Disp, Reg32) where
setng (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_le dest disp True
instance Setng Ind where
setng (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_le dest 0 True
class Setnge a where
setnge :: a -> CodeGen e s ()
instance Setnge Reg8 where
setnge (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_lt dest True
instance Setnge Addr where
setnge (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_lt dest True
instance Setnge (Disp, Reg32) where
setnge (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_lt dest disp True
instance Setnge Ind where
setnge (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_lt dest 0 True
class Setnl a where
setnl :: a -> CodeGen e s ()
instance Setnl Reg8 where
setnl (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_ge dest True
instance Setnl Addr where
setnl (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_ge dest True
instance Setnl (Disp, Reg32) where
setnl (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ge dest disp True
instance Setnl Ind where
setnl (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ge dest 0 True
class Setnle a where
setnle :: a -> CodeGen e s ()
instance Setnle Reg8 where
setnle (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_gt dest True
instance Setnle Addr where
setnle (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_gt dest True
instance Setnle (Disp, Reg32) where
setnle (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_gt dest disp True
instance Setnle Ind where
setnle (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_gt dest 0 True
class Setno a where
setno :: a -> CodeGen e s ()
instance Setno Reg8 where
setno (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_no dest True
instance Setno Addr where
setno (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_no dest True
instance Setno (Disp, Reg32) where
setno (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_no dest disp True
instance Setno Ind where
setno (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_no dest 0 True
class Setns a where
setns :: a -> CodeGen e s ()
instance Setns Reg8 where
setns (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_ns dest True
instance Setns Addr where
setns (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_ns dest True
instance Setns (Disp, Reg32) where
setns (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ns dest disp True
instance Setns Ind where
setns (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_ns dest 0 True
class Seto a where
seto :: a -> CodeGen e s ()
instance Seto Reg8 where
seto (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_o dest True
instance Seto Addr where
seto (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_o dest True
instance Seto (Disp, Reg32) where
seto (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_o dest disp True
instance Seto Ind where
seto (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_o dest 0 True
class Sets a where
sets :: a -> CodeGen e s ()
instance Sets Reg8 where
sets (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_s dest True
instance Sets Addr where
sets (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_s dest True
instance Sets (Disp, Reg32) where
sets (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_s dest disp True
instance Sets Ind where
sets (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_s dest 0 True
class Setz a where
setz :: a -> CodeGen e s ()
instance Setz Reg8 where
setz (Reg8 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_reg x86_cc_z dest False
instance Setz Addr where
setz (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_mem x86_cc_z dest False
instance Setz (Disp, Reg32) where
setz (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_z dest disp False
instance Setz Ind where
setz (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_set_membase x86_cc_z dest 0 False
class Call a where
call :: a -> CodeGen e s ()
instance Call Word32 where
call imm = ensureBufferSize x86_max_instruction_bytes >> x86_call_imm imm
instance Call Label where
call l = do ensureBufferSize x86_max_instruction_bytes >> x86_call_imm 0
emitFixup l (4) Fixup32
instance Call Reg32 where
call (Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_call_reg dest
instance Call Addr where
call (Addr dest) = ensureBufferSize x86_max_instruction_bytes >> x86_call_mem dest
instance Call (Disp, Reg32) where
call (Disp disp, Reg32 dest) = ensureBufferSize x86_max_instruction_bytes >> x86_call_membase dest disp
instance Call Ind where
call (Ind (Reg32 dest)) = ensureBufferSize x86_max_instruction_bytes >> x86_call_membase dest 0
instance Call (FunPtr a) where
call f = ensureBufferSize x86_max_instruction_bytes >> x86_call_hs f
ret :: CodeGen e s ()
ret = ensureBufferSize x86_max_instruction_bytes >> x86_ret
retN :: Word16 -> CodeGen e s ()
retN n = ensureBufferSize x86_max_instruction_bytes >> x86_ret_imm n
enter :: Word16 -> CodeGen e s ()
enter w = ensureBufferSize x86_max_instruction_bytes >> x86_enter w
class Cmova a b where
cmova :: a -> b -> CodeGen e s ()
instance Cmova Reg32 Reg32 where
cmova (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_a False dest source
instance Cmova Reg32 Addr where
cmova (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_a False dest source
instance Cmova Reg32 (Disp, Reg32) where
cmova (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_a False dest source disp
instance Cmova Reg32 Ind where
cmova (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_a False dest source 0
class Cmovae a b where
cmovae :: a -> b -> CodeGen e s ()
instance Cmovae Reg32 Reg32 where
cmovae (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_ae False dest source
instance Cmovae Reg32 Addr where
cmovae (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_ae False dest source
instance Cmovae Reg32 (Disp, Reg32) where
cmovae (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ae False dest source disp
instance Cmovae Reg32 Ind where
cmovae (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ae False dest source 0
class Cmovb a b where
cmovb :: a -> b -> CodeGen e s ()
instance Cmovb Reg32 Reg32 where
cmovb (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_b False dest source
instance Cmovb Reg32 Addr where
cmovb (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_b False dest source
instance Cmovb Reg32 (Disp, Reg32) where
cmovb (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_b False dest source disp
instance Cmovb Reg32 Ind where
cmovb (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_b False dest source 0
class Cmovbe a b where
cmovbe :: a -> b -> CodeGen e s ()
instance Cmovbe Reg32 Reg32 where
cmovbe (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_be False dest source
instance Cmovbe Reg32 Addr where
cmovbe (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_be False dest source
instance Cmovbe Reg32 (Disp, Reg32) where
cmovbe (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_be False dest source disp
instance Cmovbe Reg32 Ind where
cmovbe (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_be False dest source 0
class Cmovc a b where
cmovc :: a -> b -> CodeGen e s ()
instance Cmovc Reg32 Reg32 where
cmovc (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_c False dest source
instance Cmovc Reg32 Addr where
cmovc (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_c False dest source
instance Cmovc Reg32 (Disp, Reg32) where
cmovc (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_c False dest source disp
instance Cmovc Reg32 Ind where
cmovc (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_c False dest source 0
class Cmove a b where
cmove :: a -> b -> CodeGen e s ()
instance Cmove Reg32 Reg32 where
cmove (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_e False dest source
instance Cmove Reg32 Addr where
cmove (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_e False dest source
instance Cmove Reg32 (Disp, Reg32) where
cmove (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_e False dest source disp
instance Cmove Reg32 Ind where
cmove (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_e False dest source 0
class Cmovna a b where
cmovna :: a -> b -> CodeGen e s ()
instance Cmovna Reg32 Reg32 where
cmovna (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_na False dest source
instance Cmovna Reg32 Addr where
cmovna (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_na False dest source
instance Cmovna Reg32 (Disp, Reg32) where
cmovna (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_na False dest source disp
instance Cmovna Reg32 Ind where
cmovna (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_na False dest source 0
class Cmovnae a b where
cmovnae :: a -> b -> CodeGen e s ()
instance Cmovnae Reg32 Reg32 where
cmovnae (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_nae False dest source
instance Cmovnae Reg32 Addr where
cmovnae (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_nae False dest source
instance Cmovnae Reg32 (Disp, Reg32) where
cmovnae (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nae False dest source disp
instance Cmovnae Reg32 Ind where
cmovnae (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nae False dest source 0
class Cmovnb a b where
cmovnb :: a -> b -> CodeGen e s ()
instance Cmovnb Reg32 Reg32 where
cmovnb (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_nb False dest source
instance Cmovnb Reg32 Addr where
cmovnb (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_nb False dest source
instance Cmovnb Reg32 (Disp, Reg32) where
cmovnb (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nb False dest source disp
instance Cmovnb Reg32 Ind where
cmovnb (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nb False dest source 0
class Cmovnbe a b where
cmovnbe :: a -> b -> CodeGen e s ()
instance Cmovnbe Reg32 Reg32 where
cmovnbe (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_nbe False dest source
instance Cmovnbe Reg32 Addr where
cmovnbe (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_nbe False dest source
instance Cmovnbe Reg32 (Disp, Reg32) where
cmovnbe (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nbe False dest source disp
instance Cmovnbe Reg32 Ind where
cmovnbe (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nbe False dest source 0
class Cmovnc a b where
cmovnc :: a -> b -> CodeGen e s ()
instance Cmovnc Reg32 Reg32 where
cmovnc (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_nc False dest source
instance Cmovnc Reg32 Addr where
cmovnc (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_nc False dest source
instance Cmovnc Reg32 (Disp, Reg32) where
cmovnc (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nc False dest source disp
instance Cmovnc Reg32 Ind where
cmovnc (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nc False dest source 0
class Cmovne a b where
cmovne :: a -> b -> CodeGen e s ()
instance Cmovne Reg32 Reg32 where
cmovne (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_ne False dest source
instance Cmovne Reg32 Addr where
cmovne (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_ne False dest source
instance Cmovne Reg32 (Disp, Reg32) where
cmovne (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ne False dest source disp
instance Cmovne Reg32 Ind where
cmovne (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ne False dest source 0
class Cmovnp a b where
cmovnp :: a -> b -> CodeGen e s ()
instance Cmovnp Reg32 Reg32 where
cmovnp (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_np False dest source
instance Cmovnp Reg32 Addr where
cmovnp (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_np False dest source
instance Cmovnp Reg32 (Disp, Reg32) where
cmovnp (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_np False dest source disp
instance Cmovnp Reg32 Ind where
cmovnp (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_np False dest source 0
class Cmovnz a b where
cmovnz :: a -> b -> CodeGen e s ()
instance Cmovnz Reg32 Reg32 where
cmovnz (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_nz False dest source
instance Cmovnz Reg32 Addr where
cmovnz (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_nz False dest source
instance Cmovnz Reg32 (Disp, Reg32) where
cmovnz (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nz False dest source disp
instance Cmovnz Reg32 Ind where
cmovnz (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_nz False dest source 0
class Cmovp a b where
cmovp :: a -> b -> CodeGen e s ()
instance Cmovp Reg32 Reg32 where
cmovp (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_p False dest source
instance Cmovp Reg32 Addr where
cmovp (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_p False dest source
instance Cmovp Reg32 (Disp, Reg32) where
cmovp (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_p False dest source disp
instance Cmovp Reg32 Ind where
cmovp (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_p False dest source 0
class Cmovpe a b where
cmovpe :: a -> b -> CodeGen e s ()
instance Cmovpe Reg32 Reg32 where
cmovpe (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_pe False dest source
instance Cmovpe Reg32 Addr where
cmovpe (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_pe False dest source
instance Cmovpe Reg32 (Disp, Reg32) where
cmovpe (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_pe False dest source disp
instance Cmovpe Reg32 Ind where
cmovpe (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_pe False dest source 0
class Cmovpo a b where
cmovpo :: a -> b -> CodeGen e s ()
instance Cmovpo Reg32 Reg32 where
cmovpo (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_po False dest source
instance Cmovpo Reg32 Addr where
cmovpo (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_po False dest source
instance Cmovpo Reg32 (Disp, Reg32) where
cmovpo (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_po False dest source disp
instance Cmovpo Reg32 Ind where
cmovpo (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_po False dest source 0
class Cmovz a b where
cmovz :: a -> b -> CodeGen e s ()
instance Cmovz Reg32 Reg32 where
cmovz (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_z False dest source
instance Cmovz Reg32 Addr where
cmovz (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_z False dest source
instance Cmovz Reg32 (Disp, Reg32) where
cmovz (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_z False dest source disp
instance Cmovz Reg32 Ind where
cmovz (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_z False dest source 0
class Cmovg a b where
cmovg :: a -> b -> CodeGen e s ()
instance Cmovg Reg32 Reg32 where
cmovg (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_gt True dest source
instance Cmovg Reg32 Addr where
cmovg (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_gt True dest source
instance Cmovg Reg32 (Disp, Reg32) where
cmovg (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_gt True dest source disp
instance Cmovg Reg32 Ind where
cmovg (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_gt True dest source 0
class Cmovge a b where
cmovge :: a -> b -> CodeGen e s ()
instance Cmovge Reg32 Reg32 where
cmovge (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_ge True dest source
instance Cmovge Reg32 Addr where
cmovge (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_ge True dest source
instance Cmovge Reg32 (Disp, Reg32) where
cmovge (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ge True dest source disp
instance Cmovge Reg32 Ind where
cmovge (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ge True dest source 0
class Cmovl a b where
cmovl :: a -> b -> CodeGen e s ()
instance Cmovl Reg32 Reg32 where
cmovl (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_lt True dest source
instance Cmovl Reg32 Addr where
cmovl (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_lt True dest source
instance Cmovl Reg32 (Disp, Reg32) where
cmovl (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_lt True dest source disp
instance Cmovl Reg32 Ind where
cmovl (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_lt True dest source 0
class Cmovle a b where
cmovle :: a -> b -> CodeGen e s ()
instance Cmovle Reg32 Reg32 where
cmovle (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_le True dest source
instance Cmovle Reg32 Addr where
cmovle (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_le True dest source
instance Cmovle Reg32 (Disp, Reg32) where
cmovle (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_le True dest source disp
instance Cmovle Reg32 Ind where
cmovle (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_le True dest source 0
class Cmovng a b where
cmovng :: a -> b -> CodeGen e s ()
instance Cmovng Reg32 Reg32 where
cmovng (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_le True dest source
instance Cmovng Reg32 Addr where
cmovng (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_le True dest source
instance Cmovng Reg32 (Disp, Reg32) where
cmovng (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_le True dest source disp
instance Cmovng Reg32 Ind where
cmovng (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_le True dest source 0
class Cmovnge a b where
cmovnge :: a -> b -> CodeGen e s ()
instance Cmovnge Reg32 Reg32 where
cmovnge (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_lt True dest source
instance Cmovnge Reg32 Addr where
cmovnge (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_lt True dest source
instance Cmovnge Reg32 (Disp, Reg32) where
cmovnge (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_lt True dest source disp
instance Cmovnge Reg32 Ind where
cmovnge (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_lt True dest source 0
class Cmovnl a b where
cmovnl :: a -> b -> CodeGen e s ()
instance Cmovnl Reg32 Reg32 where
cmovnl (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_ge True dest source
instance Cmovnl Reg32 Addr where
cmovnl (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_ge True dest source
instance Cmovnl Reg32 (Disp, Reg32) where
cmovnl (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ge True dest source disp
instance Cmovnl Reg32 Ind where
cmovnl (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ge True dest source 0
class Cmovnle a b where
cmovnle :: a -> b -> CodeGen e s ()
instance Cmovnle Reg32 Reg32 where
cmovnle (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_gt True dest source
instance Cmovnle Reg32 Addr where
cmovnle (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_gt True dest source
instance Cmovnle Reg32 (Disp, Reg32) where
cmovnle (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_gt True dest source disp
instance Cmovnle Reg32 Ind where
cmovnle (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_gt True dest source 0
class Cmovno a b where
cmovno :: a -> b -> CodeGen e s ()
instance Cmovno Reg32 Reg32 where
cmovno (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_no True dest source
instance Cmovno Reg32 Addr where
cmovno (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_no True dest source
instance Cmovno Reg32 (Disp, Reg32) where
cmovno (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_no True dest source disp
instance Cmovno Reg32 Ind where
cmovno (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_no True dest source 0
class Cmovns a b where
cmovns :: a -> b -> CodeGen e s ()
instance Cmovns Reg32 Reg32 where
cmovns (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_ns True dest source
instance Cmovns Reg32 Addr where
cmovns (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_ns True dest source
instance Cmovns Reg32 (Disp, Reg32) where
cmovns (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ns True dest source disp
instance Cmovns Reg32 Ind where
cmovns (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_ns True dest source 0
class Cmovo a b where
cmovo :: a -> b -> CodeGen e s ()
instance Cmovo Reg32 Reg32 where
cmovo (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_o True dest source
instance Cmovo Reg32 Addr where
cmovo (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_o True dest source
instance Cmovo Reg32 (Disp, Reg32) where
cmovo (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_o True dest source disp
instance Cmovo Reg32 Ind where
cmovo (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_o True dest source 0
class Cmovs a b where
cmovs :: a -> b -> CodeGen e s ()
instance Cmovs Reg32 Reg32 where
cmovs (Reg32 dest) (Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_reg x86_cc_s True dest source
instance Cmovs Reg32 Addr where
cmovs (Reg32 dest) (Addr source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_mem x86_cc_s True dest source
instance Cmovs Reg32 (Disp, Reg32) where
cmovs (Reg32 dest) (Disp disp, Reg32 source) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_s True dest source disp
instance Cmovs Reg32 Ind where
cmovs (Reg32 dest) (Ind (Reg32 source)) = ensureBufferSize x86_max_instruction_bytes >> x86_cmov_membase x86_cc_s True dest source 0
leave :: CodeGen e s ()
leave = ensureBufferSize x86_max_instruction_bytes >> x86_leave
sahf :: CodeGen e s ()
sahf = ensureBufferSize x86_max_instruction_bytes >> x86_sahf
fldz = ensureBufferSize x86_max_instruction_bytes >> x86_fldz
fld1 = ensureBufferSize x86_max_instruction_bytes >> x86_fld1
fldpi = ensureBufferSize x86_max_instruction_bytes >> x86_fldpi
fstsw = ensureBufferSize x86_max_instruction_bytes >> x86_fstsw
fnstsw = ensureBufferSize x86_max_instruction_bytes >> x86_fstsw
fcompp = ensureBufferSize x86_max_instruction_bytes >> x86_fcompp
fucompp = ensureBufferSize x86_max_instruction_bytes >> x86_fucompp
fchs = ensureBufferSize x86_max_instruction_bytes >> x86_fchs
frem = ensureBufferSize x86_max_instruction_bytes >> x86_frem
fxch (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fxch idx
fcomi (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fcomi idx
fcomip (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fcomip idx
fucomi (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fucomi idx
fucomip (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fucomip idx
fsin = ensureBufferSize x86_max_instruction_bytes >> x86_fsin
fcos = ensureBufferSize x86_max_instruction_bytes >> x86_fcos
fptan = ensureBufferSize x86_max_instruction_bytes >> x86_fptan
fpatan = ensureBufferSize x86_max_instruction_bytes >> x86_fpatan
fabs = ensureBufferSize x86_max_instruction_bytes >> x86_fabs
ftst = ensureBufferSize x86_max_instruction_bytes >> x86_ftst
fxam = ensureBufferSize x86_max_instruction_bytes >> x86_fxam
fprem = ensureBufferSize x86_max_instruction_bytes >> x86_fprem
fprem1 = ensureBufferSize x86_max_instruction_bytes >> x86_fprem1
frndint = ensureBufferSize x86_max_instruction_bytes >> x86_frndint
fsqrt = ensureBufferSize x86_max_instruction_bytes >> x86_fsqrt
class Fadd a b where
fadd :: a -> b -> CodeGen e s ()
instance Fadd FPTopReg FPReg where
fadd FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fadd idx
instance Fadd FPTopReg Addr where
fadd FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fadd a True
instance Fadd FPTopReg (Disp, Reg32) where
fadd FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fadd r d True
instance Fadd FPTopReg Ind where
fadd FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fadd r 0 True
instance Fadd FPReg FPTopReg where
fadd (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fadd idx False
class Faddp a b where
faddp :: a -> b -> CodeGen e s ()
instance Faddp FPReg FPTopReg where
faddp (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fadd idx True
class Fiadd a b where
fiadd32 :: a -> b -> CodeGen e s ()
fiadd16 :: a -> b -> CodeGen e s ()
instance Fiadd FPTopReg (Disp, Reg32) where
fiadd32 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fadd r d True
fiadd16 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fadd r d False
instance Fiadd FPTopReg Ind where
fiadd32 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fadd r 0 True
fiadd16 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fadd r 0 False
class Fsub a b where
fsub :: a -> b -> CodeGen e s ()
instance Fsub FPTopReg FPReg where
fsub FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fsub idx
instance Fsub FPTopReg Addr where
fsub FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fsub a True
instance Fsub FPTopReg (Disp, Reg32) where
fsub FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fsub r d True
instance Fsub FPTopReg Ind where
fsub FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fsub r 0 True
instance Fsub FPReg FPTopReg where
fsub (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fsub idx False
class Fsubp a b where
fsubp :: a -> b -> CodeGen e s ()
instance Fsubp FPReg FPTopReg where
fsubp (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fsub idx True
class Fisub a b where
fisub32 :: a -> b -> CodeGen e s ()
fisub16 :: a -> b -> CodeGen e s ()
instance Fisub FPTopReg (Disp, Reg32) where
fisub32 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fsub r d True
fisub16 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fsub r d False
instance Fisub FPTopReg Ind where
fisub32 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fsub r 0 True
fisub16 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fsub r 0 False
class Fsubr a b where
fsubr :: a -> b -> CodeGen e s ()
instance Fsubr FPTopReg FPReg where
fsubr FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fsubr idx
instance Fsubr FPTopReg Addr where
fsubr FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fsubr a True
instance Fsubr FPTopReg (Disp, Reg32) where
fsubr FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fsubr r d True
instance Fsubr FPTopReg Ind where
fsubr FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fsubr r 0 True
class Fmul a b where
fmul :: a -> b -> CodeGen e s ()
instance Fmul FPTopReg FPReg where
fmul FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fmul idx
instance Fmul FPTopReg Addr where
fmul FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fmul a True
instance Fmul FPTopReg (Disp, Reg32) where
fmul FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fmul r d True
instance Fmul FPTopReg Ind where
fmul FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fmul r 0 True
instance Fmul FPReg FPTopReg where
fmul (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fmul idx False
class Fmulp a b where
fmulp :: a -> b -> CodeGen e s ()
instance Fmulp FPReg FPTopReg where
fmulp (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fmul idx True
class Fimul a b where
fimul32 :: a -> b -> CodeGen e s ()
fimul16 :: a -> b -> CodeGen e s ()
instance Fimul FPTopReg (Disp, Reg32) where
fimul32 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fmul r d True
fimul16 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fmul r d False
instance Fimul FPTopReg Ind where
fimul32 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fmul r 0 True
fimul16 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fmul r 0 False
class Fdiv a b where
fdiv :: a -> b -> CodeGen e s ()
instance Fdiv FPTopReg FPReg where
fdiv FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fdiv idx
instance Fdiv FPTopReg Addr where
fdiv FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fdiv a True
instance Fdiv FPTopReg (Disp, Reg32) where
fdiv FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fdiv r d True
instance Fdiv FPTopReg Ind where
fdiv FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fdiv r 0 True
instance Fdiv FPReg FPTopReg where
fdiv (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fdiv idx False
class Fdivp a b where
fdivp :: a -> b -> CodeGen e s ()
instance Fdivp FPReg FPTopReg where
fdivp (FPReg idx) FPTopReg = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_reg x86_fdiv idx True
class Fidiv a b where
fidiv32 :: a -> b -> CodeGen e s ()
fidiv16 :: a -> b -> CodeGen e s ()
instance Fidiv FPTopReg (Disp, Reg32) where
fidiv32 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fdiv r d True
fidiv16 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fdiv r d False
instance Fidiv FPTopReg Ind where
fidiv32 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fdiv r 0 True
fidiv16 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_int_op_membase x86_fdiv r 0 False
class Fdivr a b where
fdivr :: a -> b -> CodeGen e s ()
instance Fdivr FPTopReg FPReg where
fdivr FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fdivr idx
instance Fdivr FPTopReg Addr where
fdivr FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fdivr a True
instance Fdivr FPTopReg (Disp, Reg32) where
fdivr FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fdivr r d True
instance Fdivr FPTopReg Ind where
fdivr FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fdivr r 0 True
class Fcom a b where
fcom :: a -> b -> CodeGen e s ()
instance Fcom FPTopReg FPReg where
fcom FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fcom idx
instance Fcom FPTopReg Addr where
fcom FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fcom a True
instance Fcom FPTopReg (Disp, Reg32) where
fcom FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fcom r d True
instance Fcom FPTopReg Ind where
fcom FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fcom r 0 True
class Fcomp a b where
fcomp :: a -> b -> CodeGen e s ()
instance Fcomp FPTopReg FPReg where
fcomp FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op x86_fcomp idx
instance Fcomp FPTopReg Addr where
fcomp FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_mem x86_fcomp a True
instance Fcomp FPTopReg (Disp, Reg32) where
fcomp FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fcomp r d True
instance Fcomp FPTopReg Ind where
fcomp FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fp_op_membase x86_fcomp r 0 True
class Fld a b where
fld :: a -> b -> CodeGen e s ()
instance Fld FPTopReg FPReg where
fld FPTopReg (FPReg idx) = ensureBufferSize x86_max_instruction_bytes >> x86_fld_reg idx
instance Fld FPTopReg Addr where
fld FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fld a True
instance Fld FPTopReg (Disp, Reg32) where
fld FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fld_membase r d True
instance Fld FPTopReg Ind where
fld FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fld_membase r 0 True
class Fld80 a b where
fld80 :: a -> b -> CodeGen e s ()
instance Fld80 FPTopReg Addr where
fld80 FPTopReg (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fld80_mem a
instance Fld80 FPTopReg (Disp, Reg32) where
fld80 FPTopReg (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fld80_membase r d
instance Fld80 FPTopReg Ind where
fld80 FPTopReg (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fld80_membase r 0
class Fst a where
fst :: a -> CodeGen e s ()
instance Fst Addr where
fst (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fst a True False
instance Fst (Disp, Reg32) where
fst (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fst_membase r d True False
instance Fst Ind where
fst (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fst_membase r 0 True False
class Fstp a where
fstp :: a -> CodeGen e s ()
instance Fstp FPReg where
fstp (FPReg r) = ensureBufferSize x86_max_instruction_bytes >> x86_fstp r
instance Fstp Addr where
fstp (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fst a True True
instance Fstp (Disp, Reg32) where
fstp (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fst_membase r d True True
instance Fstp Ind where
fstp (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fst_membase r 0 True True
class Fst80 a where
fst80 :: a -> CodeGen e s ()
instance Fst80 Addr where
fst80 (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fst80_mem a
instance Fst80 (Disp, Reg32) where
fst80 (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fst80_membase r d
instance Fst80 Ind where
fst80 (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fst80_membase r 0
class Fnstcw a where
fnstcw :: a -> CodeGen e s ()
instance Fnstcw Addr where
fnstcw (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fnstcw a
instance Fnstcw (Disp, Reg32) where
fnstcw (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fnstcw_membase r d
instance Fnstcw Ind where
fnstcw (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fnstcw_membase r 0
class Fldcw a where
fldcw :: a -> CodeGen e s ()
instance Fldcw Addr where
fldcw (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fldcw a
instance Fldcw (Disp, Reg32) where
fldcw (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fldcw_membase r d
instance Fldcw Ind where
fldcw (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fldcw_membase r 0
class Fild a where
fild :: a -> CodeGen e s ()
instance Fild Addr where
fild (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fild a FInt32
instance Fild (Disp, Reg32) where
fild (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fild_membase r d FInt32
instance Fild Ind where
fild (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fild_membase r 0 FInt32
class Fist a where
fist :: a -> CodeGen e s ()
instance Fist (Disp, Reg32) where
fist (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fist_membase r d FInt32
instance Fist Ind where
fist (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fist_membase r 0 FInt32
class Fistp a where
fistp :: a -> CodeGen e s ()
instance Fistp Addr where
fistp (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_fist_pop a FInt32
instance Fistp (Disp, Reg32) where
fistp (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_fist_pop_membase r d FInt32
instance Fistp Ind where
fistp (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_fist_pop_membase r 0 FInt32
class Sqrtsd a b where
sqrtsd :: a -> b -> CodeGen e s ()
instance Sqrtsd XMMReg XMMReg where
sqrtsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_reg x86_sse_sd xd xs
instance Sqrtsd XMMReg Addr where
sqrtsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_mem x86_sse_sd xd a
instance Sqrtsd XMMReg Ind where
sqrtsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_sd xd r 0
instance Sqrtsd XMMReg (Disp, Reg32) where
sqrtsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_sd xd r d
class Sqrtss a b where
sqrtss :: a -> b -> CodeGen e s ()
instance Sqrtss XMMReg XMMReg where
sqrtss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_reg x86_sse_ss xd xs
instance Sqrtss XMMReg Addr where
sqrtss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_mem x86_sse_ss xd a
instance Sqrtss XMMReg Ind where
sqrtss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_ss xd r 0
instance Sqrtss XMMReg (Disp, Reg32) where
sqrtss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_ss xd r d
class Sqrtpd a b where
sqrtpd :: a -> b -> CodeGen e s ()
instance Sqrtpd XMMReg XMMReg where
sqrtpd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_reg x86_sse_pd xd xs
instance Sqrtpd XMMReg Addr where
sqrtpd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_mem x86_sse_pd xd a
instance Sqrtpd XMMReg Ind where
sqrtpd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_pd xd r 0
instance Sqrtpd XMMReg (Disp, Reg32) where
sqrtpd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_pd xd r d
class Sqrtps a b where
sqrtps :: a -> b -> CodeGen e s ()
instance Sqrtps XMMReg XMMReg where
sqrtps (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_reg x86_sse_ps xd xs
instance Sqrtps XMMReg Addr where
sqrtps (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_mem x86_sse_ps xd a
instance Sqrtps XMMReg Ind where
sqrtps (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_ps xd r 0
instance Sqrtps XMMReg (Disp, Reg32) where
sqrtps (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sqrt_sse_reg_membase x86_sse_ps xd r d
class Addsd a b where
addsd :: a -> b -> CodeGen e s ()
instance Addsd XMMReg XMMReg where
addsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_reg x86_sse_sd xd xs
instance Addsd XMMReg Addr where
addsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_mem x86_sse_sd xd a
instance Addsd XMMReg Ind where
addsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_sd xd r 0
instance Addsd XMMReg (Disp, Reg32) where
addsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_sd xd r d
class Addss a b where
addss :: a -> b -> CodeGen e s ()
instance Addss XMMReg XMMReg where
addss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_reg x86_sse_ss xd xs
instance Addss XMMReg Addr where
addss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_mem x86_sse_ss xd a
instance Addss XMMReg Ind where
addss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_ss xd r 0
instance Addss XMMReg (Disp, Reg32) where
addss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_ss xd r d
class Addpd a b where
addpd :: a -> b -> CodeGen e s ()
instance Addpd XMMReg XMMReg where
addpd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_reg x86_sse_pd xd xs
instance Addpd XMMReg Addr where
addpd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_mem x86_sse_pd xd a
instance Addpd XMMReg Ind where
addpd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_pd xd r 0
instance Addpd XMMReg (Disp, Reg32) where
addpd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_pd xd r d
class Addps a b where
addps :: a -> b -> CodeGen e s ()
instance Addps XMMReg XMMReg where
addps (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_reg x86_sse_ps xd xs
instance Addps XMMReg Addr where
addps (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_mem x86_sse_ps xd a
instance Addps XMMReg Ind where
addps (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_ps xd r 0
instance Addps XMMReg (Disp, Reg32) where
addps (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_add_sse_reg_membase x86_sse_ps xd r d
class Subsd a b where
subsd :: a -> b -> CodeGen e s ()
instance Subsd XMMReg XMMReg where
subsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_reg x86_sse_sd xd xs
instance Subsd XMMReg Addr where
subsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_mem x86_sse_sd xd a
instance Subsd XMMReg Ind where
subsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_sd xd r 0
instance Subsd XMMReg (Disp, Reg32) where
subsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_sd xd r d
class Subss a b where
subss :: a -> b -> CodeGen e s ()
instance Subss XMMReg XMMReg where
subss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_reg x86_sse_ss xd xs
instance Subss XMMReg Addr where
subss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_mem x86_sse_ss xd a
instance Subss XMMReg Ind where
subss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_ss xd r 0
instance Subss XMMReg (Disp, Reg32) where
subss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_ss xd r d
class Subpd a b where
subpd :: a -> b -> CodeGen e s ()
instance Subpd XMMReg XMMReg where
subpd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_reg x86_sse_pd xd xs
instance Subpd XMMReg Addr where
subpd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_mem x86_sse_pd xd a
instance Subpd XMMReg Ind where
subpd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_pd xd r 0
instance Subpd XMMReg (Disp, Reg32) where
subpd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_pd xd r d
class Subps a b where
subps :: a -> b -> CodeGen e s ()
instance Subps XMMReg XMMReg where
subps (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_reg x86_sse_ps xd xs
instance Subps XMMReg Addr where
subps (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_mem x86_sse_ps xd a
instance Subps XMMReg Ind where
subps (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_ps xd r 0
instance Subps XMMReg (Disp, Reg32) where
subps (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_sub_sse_reg_membase x86_sse_ps xd r d
class Mulsd a b where
mulsd :: a -> b -> CodeGen e s ()
instance Mulsd XMMReg XMMReg where
mulsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_reg x86_sse_sd xd xs
instance Mulsd XMMReg Addr where
mulsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_mem x86_sse_sd xd a
instance Mulsd XMMReg Ind where
mulsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_sd xd r 0
instance Mulsd XMMReg (Disp, Reg32) where
mulsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_sd xd r d
class Mulss a b where
mulss :: a -> b -> CodeGen e s ()
instance Mulss XMMReg XMMReg where
mulss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_reg x86_sse_ss xd xs
instance Mulss XMMReg Addr where
mulss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_mem x86_sse_ss xd a
instance Mulss XMMReg Ind where
mulss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_ss xd r 0
instance Mulss XMMReg (Disp, Reg32) where
mulss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_ss xd r d
class Mulpd a b where
mulpd :: a -> b -> CodeGen e s ()
instance Mulpd XMMReg XMMReg where
mulpd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_reg x86_sse_pd xd xs
instance Mulpd XMMReg Addr where
mulpd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_mem x86_sse_pd xd a
instance Mulpd XMMReg Ind where
mulpd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_pd xd r 0
instance Mulpd XMMReg (Disp, Reg32) where
mulpd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_pd xd r d
class Mulps a b where
mulps :: a -> b -> CodeGen e s ()
instance Mulps XMMReg XMMReg where
mulps (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_reg x86_sse_ps xd xs
instance Mulps XMMReg Addr where
mulps (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_mem x86_sse_ps xd a
instance Mulps XMMReg Ind where
mulps (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_ps xd r 0
instance Mulps XMMReg (Disp, Reg32) where
mulps (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_mul_sse_reg_membase x86_sse_ps xd r d
class Divsd a b where
divsd :: a -> b -> CodeGen e s ()
instance Divsd XMMReg XMMReg where
divsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_reg x86_sse_sd xd xs
instance Divsd XMMReg Addr where
divsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_mem x86_sse_sd xd a
instance Divsd XMMReg Ind where
divsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_sd xd r 0
instance Divsd XMMReg (Disp, Reg32) where
divsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_sd xd r d
class Divss a b where
divss :: a -> b -> CodeGen e s ()
instance Divss XMMReg XMMReg where
divss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_reg x86_sse_ss xd xs
instance Divss XMMReg Addr where
divss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_mem x86_sse_ss xd a
instance Divss XMMReg Ind where
divss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_ss xd r 0
instance Divss XMMReg (Disp, Reg32) where
divss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_ss xd r d
class Divpd a b where
divpd :: a -> b -> CodeGen e s ()
instance Divpd XMMReg XMMReg where
divpd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_reg x86_sse_pd xd xs
instance Divpd XMMReg Addr where
divpd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_mem x86_sse_pd xd a
instance Divpd XMMReg Ind where
divpd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_pd xd r 0
instance Divpd XMMReg (Disp, Reg32) where
divpd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_pd xd r d
class Divps a b where
divps :: a -> b -> CodeGen e s ()
instance Divps XMMReg XMMReg where
divps (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_reg x86_sse_ps xd xs
instance Divps XMMReg Addr where
divps (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_mem x86_sse_ps xd a
instance Divps XMMReg Ind where
divps (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_ps xd r 0
instance Divps XMMReg (Disp, Reg32) where
divps (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_div_sse_reg_membase x86_sse_ps xd r d
class Minsd a b where
minsd :: a -> b -> CodeGen e s ()
instance Minsd XMMReg XMMReg where
minsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_reg x86_sse_sd xd xs
instance Minsd XMMReg Addr where
minsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_mem x86_sse_sd xd a
instance Minsd XMMReg Ind where
minsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_sd xd r 0
instance Minsd XMMReg (Disp, Reg32) where
minsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_sd xd r d
class Minss a b where
minss :: a -> b -> CodeGen e s ()
instance Minss XMMReg XMMReg where
minss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_reg x86_sse_ss xd xs
instance Minss XMMReg Addr where
minss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_mem x86_sse_ss xd a
instance Minss XMMReg Ind where
minss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_ss xd r 0
instance Minss XMMReg (Disp, Reg32) where
minss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_ss xd r d
class Minpd a b where
minpd :: a -> b -> CodeGen e s ()
instance Minpd XMMReg XMMReg where
minpd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_reg x86_sse_pd xd xs
instance Minpd XMMReg Addr where
minpd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_mem x86_sse_pd xd a
instance Minpd XMMReg Ind where
minpd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_pd xd r 0
instance Minpd XMMReg (Disp, Reg32) where
minpd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_pd xd r d
class Minps a b where
minps :: a -> b -> CodeGen e s ()
instance Minps XMMReg XMMReg where
minps (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_reg x86_sse_ps xd xs
instance Minps XMMReg Addr where
minps (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_mem x86_sse_ps xd a
instance Minps XMMReg Ind where
minps (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_ps xd r 0
instance Minps XMMReg (Disp, Reg32) where
minps (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_min_sse_reg_membase x86_sse_ps xd r d
class Maxsd a b where
maxsd :: a -> b -> CodeGen e s ()
instance Maxsd XMMReg XMMReg where
maxsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_reg x86_sse_sd xd xs
instance Maxsd XMMReg Addr where
maxsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_mem x86_sse_sd xd a
instance Maxsd XMMReg Ind where
maxsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_sd xd r 0
instance Maxsd XMMReg (Disp, Reg32) where
maxsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_sd xd r d
class Maxss a b where
maxss :: a -> b -> CodeGen e s ()
instance Maxss XMMReg XMMReg where
maxss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_reg x86_sse_ss xd xs
instance Maxss XMMReg Addr where
maxss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_mem x86_sse_ss xd a
instance Maxss XMMReg Ind where
maxss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_ss xd r 0
instance Maxss XMMReg (Disp, Reg32) where
maxss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_ss xd r d
class Maxpd a b where
maxpd :: a -> b -> CodeGen e s ()
instance Maxpd XMMReg XMMReg where
maxpd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_reg x86_sse_pd xd xs
instance Maxpd XMMReg Addr where
maxpd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_mem x86_sse_pd xd a
instance Maxpd XMMReg Ind where
maxpd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_pd xd r 0
instance Maxpd XMMReg (Disp, Reg32) where
maxpd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_pd xd r d
class Maxps a b where
maxps :: a -> b -> CodeGen e s ()
instance Maxps XMMReg XMMReg where
maxps (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_reg x86_sse_ps xd xs
instance Maxps XMMReg Addr where
maxps (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_mem x86_sse_ps xd a
instance Maxps XMMReg Ind where
maxps (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_ps xd r 0
instance Maxps XMMReg (Disp, Reg32) where
maxps (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_max_sse_reg_membase x86_sse_ps xd r d
class Movss a b where
movss :: a -> b -> CodeGen e s ()
instance Movss XMMReg XMMReg where
movss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_reg x86_sse_ss xd xs
instance Movss XMMReg Addr where
movss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_mem x86_sse_ss xd a
instance Movss Addr XMMReg where
movss (Addr a) (XMMReg xd) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_mem_reg x86_sse_ss a xd
instance Movss XMMReg Ind where
movss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_membase x86_sse_ss xd r 0
instance Movss Ind XMMReg where
movss (Ind (Reg32 r)) (XMMReg xd) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_membase_reg x86_sse_ss r 0 xd
instance Movss XMMReg (Disp, Reg32) where
movss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_membase x86_sse_ss xd r d
instance Movss (Disp, Reg32) XMMReg where
movss (Disp d, Reg32 r) (XMMReg xd) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_membase_reg x86_sse_ss r d xd
class Movsd a b where
movsd :: a -> b -> CodeGen e s ()
instance Movsd XMMReg XMMReg where
movsd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_reg x86_sse_sd xd xs
instance Movsd XMMReg Addr where
movsd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_mem x86_sse_sd xd a
instance Movsd Addr XMMReg where
movsd (Addr a) (XMMReg xd) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_mem_reg x86_sse_sd a xd
instance Movsd XMMReg Ind where
movsd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_membase x86_sse_sd xd r 0
instance Movsd Ind XMMReg where
movsd (Ind (Reg32 r)) (XMMReg xd) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_membase_reg x86_sse_sd r 0 xd
instance Movsd XMMReg (Disp, Reg32) where
movsd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_reg_membase x86_sse_sd xd r d
instance Movsd (Disp, Reg32) XMMReg where
movsd (Disp d, Reg32 r) (XMMReg xd) = ensureBufferSize x86_max_instruction_bytes >> x86_mov_sse_membase_reg x86_sse_sd r d xd
class Movups a b where
movups :: a -> b -> CodeGen e s ()
instance Movups XMMReg XMMReg where
movups (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movups_to_reg xd (xmmLocLowLevel xs)
instance Movups XMMReg Addr where
movups (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movups_to_reg xd (xmmLocLowLevel xs)
instance Movups Addr XMMReg where
movups xd (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_movups_from_reg xs (xmmLocLowLevel xd)
instance Movups XMMReg Ind where
movups (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movups_to_reg xd (xmmLocLowLevel xs)
instance Movups Ind XMMReg where
movups xd (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_movups_from_reg xs (xmmLocLowLevel xd)
instance Movups XMMReg (Disp, Reg32) where
movups (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movups_to_reg xd (xmmLocLowLevel xs)
instance Movups (Disp, Reg32) XMMReg where
movups xd (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_movups_from_reg xs (xmmLocLowLevel xd)
class Movlps a b where
movlps :: a -> b -> CodeGen e s ()
instance Movlps XMMReg XMMReg where
movlps (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movlps_to_reg xd (xmmLocLowLevel xs)
instance Movlps XMMReg Addr where
movlps (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movlps_to_reg xd (xmmLocLowLevel xs)
instance Movlps Addr XMMReg where
movlps xd (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_movlps_from_reg xs (xmmLocLowLevel xd)
instance Movlps XMMReg Ind where
movlps (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movlps_to_reg xd (xmmLocLowLevel xs)
instance Movlps Ind XMMReg where
movlps xd (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_movlps_from_reg xs (xmmLocLowLevel xd)
instance Movlps XMMReg (Disp, Reg32) where
movlps (XMMReg xd) xs = ensureBufferSize x86_max_instruction_bytes >> x86_movlps_to_reg xd (xmmLocLowLevel xs)
instance Movlps (Disp, Reg32) XMMReg where
movlps xd (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_movlps_from_reg xs (xmmLocLowLevel xd)
class Comisd a b where
comisd :: a -> b -> CodeGen e s ()
instance Comisd XMMReg XMMReg where
comisd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_comisd_reg_reg xd xs
instance Comisd XMMReg Addr where
comisd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_comisd_reg_mem xd a
instance Comisd XMMReg Ind where
comisd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_comisd_reg_membase xd r 0
instance Comisd XMMReg (Disp, Reg32) where
comisd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_comisd_reg_membase xd r d
class Comiss a b where
comiss :: a -> b -> CodeGen e s ()
instance Comiss XMMReg XMMReg where
comiss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_comiss_reg_reg xd xs
instance Comiss XMMReg Addr where
comiss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_comiss_reg_mem xd a
instance Comiss XMMReg Ind where
comiss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_comiss_reg_membase xd r 0
instance Comiss XMMReg (Disp, Reg32) where
comiss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_comiss_reg_membase xd r d
class Ucomisd a b where
ucomisd :: a -> b -> CodeGen e s ()
instance Ucomisd XMMReg XMMReg where
ucomisd (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomisd_reg_reg xd xs
instance Ucomisd XMMReg Addr where
ucomisd (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomisd_reg_mem xd a
instance Ucomisd XMMReg Ind where
ucomisd (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomisd_reg_membase xd r 0
instance Ucomisd XMMReg (Disp, Reg32) where
ucomisd (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomisd_reg_membase xd r d
class Ucomiss a b where
ucomiss :: a -> b -> CodeGen e s ()
instance Ucomiss XMMReg XMMReg where
ucomiss (XMMReg xd) (XMMReg xs) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomiss_reg_reg xd xs
instance Ucomiss XMMReg Addr where
ucomiss (XMMReg xd) (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomiss_reg_mem xd a
instance Ucomiss XMMReg Ind where
ucomiss (XMMReg xd) (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomiss_reg_membase xd r 0
instance Ucomiss XMMReg (Disp, Reg32) where
ucomiss (XMMReg xd) (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_ucomiss_reg_membase xd r d
class XMMLocation b => XMMLoc a b | a -> b where
xmmLocLowLevel :: a -> b
instance XMMLoc XMMReg XMMReg where
xmmLocLowLevel = id
instance XMMLoc Addr Mem where
xmmLocLowLevel (Addr a) = Mem a
instance XMMLoc Ind MemBase where
xmmLocLowLevel (Ind (Reg32 r)) = MemBase r 0
instance XMMLoc (Disp, Reg32) MemBase where
xmmLocLowLevel (Disp d, Reg32 r) = MemBase r d
haddps :: XMMLoc xmm a => XMMReg -> xmm -> CodeGen e s ()
haddps (XMMReg dreg) reg =
x86_haddps dreg (xmmLocLowLevel reg)
haddpd :: XMMLoc xmm a => XMMReg -> xmm -> CodeGen e s ()
haddpd (XMMReg dreg) reg =
x86_haddpd dreg (xmmLocLowLevel reg)
shufps :: XMMLoc xmm a => XMMReg -> xmm -> Word8 -> CodeGen e s ()
shufps (XMMReg dreg) reg src =
x86_shufps dreg (xmmLocLowLevel reg) src
shufpd :: XMMLoc xmm a => XMMReg -> xmm -> Word8 -> CodeGen e s ()
shufpd (XMMReg dreg) reg src =
x86_shufpd dreg (xmmLocLowLevel reg) src
cvtdq2ps :: XMMLoc xmm a => XMMReg -> xmm -> CodeGen e s ()
cvtdq2ps (XMMReg dreg) reg =
x86_cvtdq2ps dreg (xmmLocLowLevel reg)
cvttps2dq :: XMMLoc xmm a => XMMReg -> xmm -> CodeGen e s ()
cvttps2dq (XMMReg dreg) reg =
x86_cvttps2dq dreg (xmmLocLowLevel reg)
class Prefetchnta a where
prefetchnta :: a -> CodeGen e s ()
instance Prefetchnta Addr where
prefetchnta (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetchnta_mem a
instance Prefetchnta (Disp, Reg32) where
prefetchnta (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetchnta_membase r d
instance Prefetchnta Ind where
prefetchnta (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetchnta_regp r
class Prefetch0 a where
prefetch0 :: a -> CodeGen e s ()
instance Prefetch0 Addr where
prefetch0 (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch0_mem a
instance Prefetch0 (Disp, Reg32) where
prefetch0 (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch0_membase r d
instance Prefetch0 Ind where
prefetch0 (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch0_regp r
class Prefetch1 a where
prefetch1 :: a -> CodeGen e s ()
instance Prefetch1 Addr where
prefetch1 (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch1_mem a
instance Prefetch1 (Disp, Reg32) where
prefetch1 (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch1_membase r d
instance Prefetch1 Ind where
prefetch1 (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch1_regp r
class Prefetch2 a where
prefetch2 :: a -> CodeGen e s ()
instance Prefetch2 Addr where
prefetch2 (Addr a) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch2_mem a
instance Prefetch2 (Disp, Reg32) where
prefetch2 (Disp d, Reg32 r) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch2_membase r d
instance Prefetch2 Ind where
prefetch2 (Ind (Reg32 r)) = ensureBufferSize x86_max_instruction_bytes >> x86_prefetch2_regp r
ptrToWord32 :: Ptr a -> Word32
ptrToWord32 = fromIntegral . ptrToIntPtr
ptrToInt :: Ptr a -> Int
ptrToInt = fromIntegral . ptrToIntPtr