{-# LANGUAGE FlexibleInstances #-} module Synthesizer.Harpy where import Harpy.X86Assembler import qualified Harpy.X86CodeGen as CG import qualified Harpy.CodeGenMonad as CGM import Harpy.CodeGenMonad (CodeGen, newLabel, defineLabel, ensureBufferSize, callDecl, runCodeGen, ) class XMMTransfer a where xmm_transfer_emit :: XMMReg -> a -> CodeGen e s () {- instance XMMTransfer XMMReg where xmm_transfer_emit (XMMReg dreg) (XMMReg reg) = CG.x86_reg_emit dreg reg instance XMMTransfer Addr where xmm_transfer_emit (XMMReg dreg) (Addr mem) = CG.x86_mem_emit dreg mem -} instance XMMTransfer Ind where xmm_transfer_emit (XMMReg dreg) (Ind (Reg32 basereg)) = CG.x86_membase_emit dreg basereg 0 instance XMMTransfer (Disp, Reg32) where xmm_transfer_emit (XMMReg dreg) (Disp disp, Reg32 basereg) = CG.x86_membase_emit dreg basereg disp