-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Apple array language compiler -- -- Compiler for a typed, APL-inspired array language. @package apple @version 0.3.0.0 module Bits cLog :: FiniteBits a => a -> Maybe Int64 module CF -- | Control-flow annotations data ControlAnn ControlAnn :: !Int -> [Int] -> !UD -> ControlAnn [node] :: ControlAnn -> !Int [conn] :: ControlAnn -> [Int] [ud] :: ControlAnn -> !UD data UD UD :: !IntSet -> !IntSet -> !IntSet -> !IntSet -> UD [usesNode] :: UD -> !IntSet [usesFNode] :: UD -> !IntSet [defsNode] :: UD -> !IntSet [defsFNode] :: UD -> !IntSet data Liveness Liveness :: !IntSet -> !IntSet -> !IntSet -> !IntSet -> Liveness [ins] :: Liveness -> !IntSet [out] :: Liveness -> !IntSet [fins] :: Liveness -> !IntSet [fout] :: Liveness -> !IntSet data NLiveness NLiveness :: Int -> !Liveness -> NLiveness [nx] :: NLiveness -> Int [liveness] :: NLiveness -> !Liveness data Live Live :: !IntSet -> !IntSet -> !IntSet -> !IntSet -> Live [new] :: Live -> !IntSet [done] :: Live -> !IntSet [fnew] :: Live -> !IntSet [fdone] :: Live -> !IntSet instance GHC.Classes.Eq CF.Liveness instance Prettyprinter.Internal.Pretty CF.Live instance Prettyprinter.Internal.Pretty CF.Liveness module CF.AL newtype AL AL :: Int -> AL insert :: AL -> a -> IntMap a -> IntMap a singleton :: AL -> IntSet sinsert :: AL -> IntSet -> IntSet module Data.Copointed class Functor p => Copointed (p :: Type -> Type) copoint :: Copointed p => p a -> a instance Data.Copointed.Copointed ((,) a) module Asm.BB data BB (arch :: Type -> Type -> Type -> Type -> Type) reg freg f2reg a b BB :: [arch reg freg f2reg a] -> b -> BB (arch :: Type -> Type -> Type -> Type -> Type) reg freg f2reg a b [unBB] :: BB (arch :: Type -> Type -> Type -> Type -> Type) reg freg f2reg a b -> [arch reg freg f2reg a] [caBB] :: BB (arch :: Type -> Type -> Type -> Type -> Type) reg freg f2reg a b -> b instance Data.Copointed.Copointed (Asm.BB.BB arch reg freg f2reg a) instance GHC.Internal.Base.Functor (Asm.BB.BB arch reg freg f2reg a) module Hs.FFI bsFp :: ByteString -> IO (FunPtr a, CSize) allocNear :: Int -> CSize -> IO (Ptr a) allocExec :: CSize -> IO (Ptr a) finish :: ByteString -> Ptr CChar -> IO (FunPtr a) freeFunPtr :: Int -> FunPtr a -> IO () module LI intervals :: Copointed p => [p NLiveness] -> [p Live] module LR reconstruct :: Copointed p => [Int] -> LivenessMap -> [p ControlAnn] -> [p NLiveness] reconstructFlat :: Copointed p => [p ControlAnn] -> [p NLiveness] module Op data FUn FSqrt :: FUn FLog :: FUn FSin :: FUn FCos :: FUn FAbs :: FUn data FBin FPlus :: FBin FMinus :: FBin FTimes :: FBin FDiv :: FBin FMax :: FBin FMin :: FBin FExp :: FBin data IUn IEven :: IUn IOdd :: IUn data BUn BNeg :: BUn data IBin IPlus :: IBin IMinus :: IBin ITimes :: IBin IAsr :: IBin IMax :: IBin IMin :: IBin IDiv :: IBin IAsl :: IBin IRem :: IBin BI :: !BBin -> IBin data BBin AndB :: BBin OrB :: BBin XorB :: BBin data IRel IEq :: IRel INeq :: IRel IGt :: IRel ILt :: IRel ILeq :: IRel IGeq :: IRel data FRel FEq :: FRel FNeq :: FRel FGt :: FRel FLt :: FRel FLeq :: FRel FGeq :: FRel instance Prettyprinter.Internal.Pretty Op.BBin instance Prettyprinter.Internal.Pretty Op.BUn instance Prettyprinter.Internal.Pretty Op.FBin instance Prettyprinter.Internal.Pretty Op.FRel instance Prettyprinter.Internal.Pretty Op.FUn instance Prettyprinter.Internal.Pretty Op.IBin instance Prettyprinter.Internal.Pretty Op.IRel instance Prettyprinter.Internal.Pretty Op.IUn module Prettyprinter.Ext (<#>) :: Doc a -> Doc a -> Doc a infixr 6 <#> class PS a ps :: PS a => Int -> a -> Doc ann parensp :: Bool -> Doc ann -> Doc ann prettyLines :: [Doc ann] -> Doc ann tupledBy :: Doc ann -> [Doc ann] -> Doc ann ptxt :: Pretty a => a -> Text aText :: Doc a -> Text prettyDumpBinds :: Pretty b => IntMap b -> Doc a pAD :: (Foldable t, Functor t) => IntMap (t Word64) -> Doc ann module IR data Exp ConstI :: Int64 -> Exp Reg :: Temp -> Exp IB :: IBin -> Exp -> Exp -> Exp FRel :: FRel -> FExp -> FExp -> Exp IRel :: IRel -> Exp -> Exp -> Exp Is :: Temp -> Exp IU :: IUn -> Exp -> Exp BU :: BUn -> Exp -> Exp IRFloor :: FExp -> Exp EAt :: AE -> Exp BAt :: AE -> Exp LA :: !Int -> Exp data FExp ConstF :: Double -> FExp FB :: FBin -> FExp -> FExp -> FExp FConv :: Exp -> FExp FReg :: FTemp -> FExp FU :: FUn -> FExp -> FExp FAt :: AE -> FExp data Stmt L :: Label -> Stmt MJ :: Exp -> Label -> Stmt J :: Label -> Stmt MT :: Temp -> Exp -> Stmt MX :: FTemp -> FExp -> Stmt Ma :: AL -> Temp -> Exp -> Stmt Free :: Temp -> Stmt RA :: !AL -> Stmt Wr :: AE -> Exp -> Stmt WrF :: AE -> FExp -> Stmt WrB :: AE -> Exp -> Stmt Cmov :: Exp -> Temp -> Exp -> Stmt Fcmov :: Exp -> FTemp -> FExp -> Stmt Cset :: Temp -> Exp -> Stmt Sa :: Temp -> Exp -> Stmt Pop :: Exp -> Stmt Cpy :: AE -> AE -> Exp -> Stmt Cpy1 :: AE -> AE -> Exp -> Stmt C :: Label -> Stmt R :: Label -> Stmt IRnd :: Temp -> Stmt FRnd :: FTemp -> Stmt data Temp ITemp :: !Int -> Temp ATemp :: !Int -> Temp C0 :: Temp C1 :: Temp C2 :: Temp C3 :: Temp C4 :: Temp C5 :: Temp CRet :: Temp data FTemp FTemp :: !Int -> FTemp F0 :: FTemp F1 :: FTemp F2 :: FTemp F3 :: FTemp F4 :: FTemp F5 :: FTemp FRet :: FTemp FRet1 :: FTemp type Label = Word type AsmData = IntMap [Word64] data AE AP :: Temp -> Maybe Exp -> Maybe AL -> AE data WSt WSt :: !Label -> !Int -> WSt [wlabel] :: WSt -> !Label [wtemps] :: WSt -> !Int prettyIR :: (AsmData, [Stmt]) -> Doc ann instance GHC.Classes.Eq IR.FTemp instance GHC.Classes.Eq IR.Temp instance GHC.Internal.Real.Fractional IR.FExp instance GHC.Internal.Num.Num IR.Exp instance GHC.Internal.Num.Num IR.FExp instance GHC.Classes.Ord IR.FTemp instance Prettyprinter.Internal.Pretty IR.AE instance Prettyprinter.Internal.Pretty IR.Exp instance Prettyprinter.Internal.Pretty IR.FExp instance Prettyprinter.Internal.Pretty IR.FTemp instance Prettyprinter.Internal.Pretty IR.Stmt instance Prettyprinter.Internal.Pretty IR.Temp instance GHC.Internal.Show.Show IR.Exp instance GHC.Internal.Show.Show IR.FExp instance GHC.Internal.Show.Show IR.Stmt instance GHC.Internal.Show.Show IR.Temp module IR.Opt optIR :: [Stmt] -> [Stmt] module IR.CF rToInt :: Temp -> Int fToInt :: FTemp -> Int mkControlFlow :: [Stmt] -> ([(Stmt, ControlAnn)], Int) module IR.Hoist loop :: [Stmt] -> ([Loop], [(Stmt, ControlAnn)], Array Int (Stmt, ControlAnn)) hoist :: [Stmt] -> (Graph, Tree N, [(Stmt, ControlAnn)], Array Int (Stmt, ControlAnn)) pall :: [Stmt] -> [Stmt] module Hs.A data Apple a AA :: !Int64 -> [Int64] -> [a] -> Apple a type U a = Ptr Apple a data AB F :: AB T :: AB type AI = Apple Int64 type AF = Apple Double data P2 a b P2 :: a -> b -> P2 a b data P3 a b c P3 :: a -> b -> c -> P3 a b c data P4 a b c d P4 :: a -> b -> c -> d -> P4 a b c d hs2 :: P2 a b -> (a, b) hs3 :: P3 a b c -> (a, b, c) hs4 :: P4 a b c d -> (a, b, c, d) instance GHC.Classes.Eq Hs.A.AB instance GHC.Classes.Eq a => GHC.Classes.Eq (Hs.A.Apple a) instance GHC.Internal.Base.Functor Hs.A.Apple instance Prettyprinter.Internal.Pretty Hs.A.AB instance Prettyprinter.Internal.Pretty a => Prettyprinter.Internal.Pretty (Hs.A.Apple a) instance (Prettyprinter.Internal.Pretty a, Prettyprinter.Internal.Pretty b) => Prettyprinter.Internal.Pretty (Hs.A.P2 a b) instance (Prettyprinter.Internal.Pretty a, Prettyprinter.Internal.Pretty b, Prettyprinter.Internal.Pretty c) => Prettyprinter.Internal.Pretty (Hs.A.P3 a b c) instance (Prettyprinter.Internal.Pretty a, Prettyprinter.Internal.Pretty b, Prettyprinter.Internal.Pretty c, Prettyprinter.Internal.Pretty d) => Prettyprinter.Internal.Pretty (Hs.A.P4 a b c d) instance GHC.Internal.Show.Show Hs.A.AB instance Prettyprinter.Internal.Pretty a => GHC.Internal.Show.Show (Hs.A.Apple a) instance GHC.Internal.Foreign.Storable.Storable Hs.A.AB instance GHC.Internal.Foreign.Storable.Storable a => GHC.Internal.Foreign.Storable.Storable (Hs.A.Apple a) instance (GHC.Internal.Foreign.Storable.Storable a, GHC.Internal.Foreign.Storable.Storable b) => GHC.Internal.Foreign.Storable.Storable (Hs.A.P2 a b) instance (GHC.Internal.Foreign.Storable.Storable a, GHC.Internal.Foreign.Storable.Storable b, GHC.Internal.Foreign.Storable.Storable c) => GHC.Internal.Foreign.Storable.Storable (Hs.A.P3 a b c) instance (GHC.Internal.Foreign.Storable.Storable a, GHC.Internal.Foreign.Storable.Storable b, GHC.Internal.Foreign.Storable.Storable c, GHC.Internal.Foreign.Storable.Storable d) => GHC.Internal.Foreign.Storable.Storable (Hs.A.P4 a b c d) module C data Temp ITemp :: !Int -> Temp ATemp :: !Int -> Temp C0 :: Temp C1 :: Temp C2 :: Temp C3 :: Temp C4 :: Temp C5 :: Temp CRet :: Temp data FTemp FTemp :: !Int -> FTemp F0 :: FTemp F1 :: FTemp F2 :: FTemp F3 :: FTemp F4 :: FTemp F5 :: FTemp FRet0 :: FTemp FRet1 :: FTemp data F2Temp F2Temp :: !Int -> F2Temp data BTemp BTemp :: !Int -> BTemp CBRet :: BTemp data ArrAcc AElem :: Temp -> CE -> CE -> Maybe AL -> Int64 -> ArrAcc ARnk :: Temp -> Maybe AL -> ArrAcc ADim :: Temp -> CE -> Maybe AL -> ArrAcc At :: Temp -> [CE] -> [CE] -> Maybe AL -> Int64 -> ArrAcc Raw :: Temp -> CE -> Maybe AL -> Int64 -> ArrAcc TupM :: Temp -> Maybe AL -> ArrAcc data CE EAt :: ArrAcc -> CE Bin :: IBin -> CE -> CE -> CE Tmp :: Temp -> CE ConstI :: !Int64 -> CE CFloor :: CFE FTemp Double CE -> CE LA :: !Int -> CE DP :: Temp -> CE -> CE data CFE t x e FAt :: ArrAcc -> CFE t x e FBin :: FBin -> CFE t x e -> CFE t x e -> CFE t x e FUn :: FUn -> CFE t x e -> CFE t x e FTmp :: t -> CFE t x e ConstF :: !x -> CFE t x e IE :: e -> CFE t x e type F1E = CFE FTemp Double CE type F2E = CFE F2Temp (Double, Double) Void data PE IRel :: IRel -> CE -> CE -> PE FRel :: FRel -> CFE FTemp Double CE -> CFE FTemp Double CE -> PE Boo :: BBin -> PE -> PE -> PE BConst :: Bool -> PE IUn :: IUn -> CE -> PE Is :: BTemp -> PE PAt :: ArrAcc -> PE BU :: BUn -> PE -> PE data CS a For :: a -> Temp -> CE -> IRel -> CE -> [CS a] -> CS a [lann] :: CS a -> a [ixVar] :: CS a -> Temp [eLow] :: CS a -> CE [loopCond] :: CS a -> IRel [eUpper] :: CS a -> CE [body] :: CS a -> [CS a] For1 :: a -> Temp -> CE -> IRel -> CE -> [CS a] -> CS a [lann] :: CS a -> a [ixVar] :: CS a -> Temp [eLow] :: CS a -> CE [loopCond] :: CS a -> IRel [eUpper] :: CS a -> CE [body] :: CS a -> [CS a] While :: a -> Temp -> IRel -> CE -> [CS a] -> CS a [lann] :: CS a -> a [iVar] :: CS a -> Temp [loopCond] :: CS a -> IRel [eDone] :: CS a -> CE [body] :: CS a -> [CS a] WT :: a -> PE -> [CS a] -> CS a [lann] :: CS a -> a [bE] :: CS a -> PE [body] :: CS a -> [CS a] MT :: a -> Temp -> CE -> CS a [lann] :: CS a -> a [tDest] :: CS a -> Temp [tSrc] :: CS a -> CE MX :: a -> FTemp -> CFE FTemp Double CE -> CS a [lann] :: CS a -> a [ftDest] :: CS a -> FTemp [ftSrc] :: CS a -> CFE FTemp Double CE MX2 :: a -> F2Temp -> CFE F2Temp (Double, Double) Void -> CS a [lann] :: CS a -> a [f2tDest] :: CS a -> F2Temp [f2tSrc] :: CS a -> CFE F2Temp (Double, Double) Void MB :: a -> BTemp -> PE -> CS a [lann] :: CS a -> a [bDest] :: CS a -> BTemp [pSrc] :: CS a -> PE Wr :: a -> ArrAcc -> CE -> CS a [lann] :: CS a -> a [addr] :: CS a -> ArrAcc [wrE] :: CS a -> CE WrF :: a -> ArrAcc -> CFE FTemp Double CE -> CS a [lann] :: CS a -> a [addr] :: CS a -> ArrAcc [wrF] :: CS a -> CFE FTemp Double CE Wr2F :: a -> ArrAcc -> CFE F2Temp (Double, Double) Void -> CS a [lann] :: CS a -> a [addr] :: CS a -> ArrAcc [wrF2] :: CS a -> CFE F2Temp (Double, Double) Void WrP :: a -> ArrAcc -> PE -> CS a [lann] :: CS a -> a [addr] :: CS a -> ArrAcc [wrB] :: CS a -> PE Ma :: a -> AL -> Temp -> CE -> CE -> !Int64 -> CS a [lann] :: CS a -> a [label] :: CS a -> AL [temp] :: CS a -> Temp [rank] :: CS a -> CE [nElem] :: CS a -> CE [elemSz] :: CS a -> !Int64 Free :: Temp -> CS a MaΠ :: a -> AL -> Temp -> CE -> CS a [lann] :: CS a -> a [label] :: CS a -> AL [temp] :: CS a -> Temp [aBytes] :: CS a -> CE RA :: a -> !AL -> CS a [lann] :: CS a -> a [label] :: CS a -> !AL CpyE :: a -> ArrAcc -> ArrAcc -> CE -> !Int64 -> CS a [lann] :: CS a -> a [aDest] :: CS a -> ArrAcc [aSrc] :: CS a -> ArrAcc [nElem] :: CS a -> CE [elemSz] :: CS a -> !Int64 CpyD :: a -> ArrAcc -> ArrAcc -> CE -> CS a [lann] :: CS a -> a [aDest] :: CS a -> ArrAcc [aSrc] :: CS a -> ArrAcc [nDims] :: CS a -> CE Ifn't :: a -> PE -> [CS a] -> CS a [lann] :: CS a -> a [scond] :: CS a -> PE [branch] :: CS a -> [CS a] If :: a -> PE -> [CS a] -> [CS a] -> CS a [lann] :: CS a -> a [scond] :: CS a -> PE [iBranch] :: CS a -> [CS a] [eBranch] :: CS a -> [CS a] Sa :: a -> Temp -> CE -> CS a [lann] :: CS a -> a [temp] :: CS a -> Temp [allocBytes] :: CS a -> CE Pop :: a -> CE -> CS a [lann] :: CS a -> a [aBytes] :: CS a -> CE Cmov :: a -> PE -> Temp -> CE -> CS a [lann] :: CS a -> a [scond] :: CS a -> PE [tdest] :: CS a -> Temp [src] :: CS a -> CE Fcmov :: a -> PE -> FTemp -> CFE FTemp Double CE -> CS a [lann] :: CS a -> a [scond] :: CS a -> PE [fdest] :: CS a -> FTemp [fsrc] :: CS a -> CFE FTemp Double CE Cset :: a -> PE -> BTemp -> CS a [lann] :: CS a -> a [scond] :: CS a -> PE [bdest] :: CS a -> BTemp SZ :: a -> Temp -> Temp -> CE -> Maybe AL -> CS a [lann] :: CS a -> a [szDest] :: CS a -> Temp [arr] :: CS a -> Temp [rank] :: CS a -> CE [mLabel] :: CS a -> Maybe AL PlProd :: a -> Temp -> [CE] -> CS a [lann] :: CS a -> a [nDest] :: CS a -> Temp [pdims] :: CS a -> [CE] Rnd :: a -> Temp -> CS a [lann] :: CS a -> a [rndDest] :: CS a -> Temp FRnd :: a -> FTemp -> CS a [lann] :: CS a -> a [frndDest] :: CS a -> FTemp Def :: a -> Label -> [CS a] -> CS a [lann] :: CS a -> a [fLabel] :: CS a -> Label [body] :: CS a -> [CS a] G :: a -> Label -> Label -> CS a [lann] :: CS a -> a [gt] :: CS a -> Label [retLabel] :: CS a -> Label (=:) :: Temp -> CE -> CS () infix 9 =: type Label = Word type AsmData = IntMap [Word64] data LSt LSt :: !Label -> !Int -> LSt [clabel] :: LSt -> !Label [ctemps] :: LSt -> !Int prettyCS :: (AsmData, [CS a]) -> Doc ann pL :: (a -> Doc ann) -> CS a -> Doc ann instance Data.Copointed.Copointed C.CS instance GHC.Classes.Eq C.BTemp instance GHC.Classes.Eq C.FTemp instance GHC.Classes.Eq C.Temp instance GHC.Internal.Real.Fractional (C.CFE t GHC.Types.Double e) instance GHC.Internal.Base.Functor C.CS instance GHC.Internal.Num.Num C.CE instance GHC.Internal.Num.Num (C.CFE t GHC.Types.Double e) instance Prettyprinter.Ext.PS C.CE instance (Prettyprinter.Internal.Pretty x, Prettyprinter.Internal.Pretty e, Prettyprinter.Internal.Pretty t, Prettyprinter.Ext.PS e) => Prettyprinter.Ext.PS (C.CFE t x e) instance Prettyprinter.Internal.Pretty C.ArrAcc instance Prettyprinter.Internal.Pretty C.BTemp instance Prettyprinter.Internal.Pretty C.CE instance (Prettyprinter.Internal.Pretty x, Prettyprinter.Ext.PS e, Prettyprinter.Internal.Pretty t, Prettyprinter.Internal.Pretty e) => Prettyprinter.Internal.Pretty (C.CFE t x e) instance Prettyprinter.Internal.Pretty (C.CS a) instance Prettyprinter.Internal.Pretty C.F2Temp instance Prettyprinter.Internal.Pretty C.FTemp instance Prettyprinter.Internal.Pretty C.PE instance Prettyprinter.Internal.Pretty C.Temp instance GHC.Internal.Show.Show C.ArrAcc instance GHC.Internal.Show.Show C.BTemp instance GHC.Internal.Show.Show C.CE instance (Prettyprinter.Internal.Pretty x, Prettyprinter.Ext.PS e, Prettyprinter.Internal.Pretty t, Prettyprinter.Internal.Pretty e) => GHC.Internal.Show.Show (C.CFE t x e) instance GHC.Internal.Show.Show (C.CS a) instance GHC.Internal.Show.Show C.FTemp instance GHC.Internal.Show.Show C.Temp module IR.C ctemp :: Temp -> Temp cToIR :: LSt -> [CS a] -> ([Stmt], WSt) module C.CF cfC :: [CS ()] -> ([N], [CS ControlAnn], IntMap (ControlAnn, Liveness)) module C.Alloc live :: [CS ()] -> [CS Liveness] frees :: IntMap Temp -> [CS ()] -> [CS Liveness] module Asm.M data CFunc Malloc :: CFunc Free :: CFunc JR :: CFunc DR :: CFunc Exp :: CFunc Log :: CFunc Pow :: CFunc type WM = State WSt type Label = Word nextI :: WM Int nextL :: WM Label foldMapA :: (Applicative f, Traversable t, Monoid m) => (a -> f m) -> t a -> f m prettyLabel :: Label -> Doc ann i4 :: Doc ann -> Doc ann pAsm :: Pretty isn => [isn] -> Doc ann prettyAsm :: Pretty isn => (AsmData, [isn]) -> Doc ann aArr :: IntMap [Word64] -> IO (IntMap (Ptr Word64)) mFree :: Maybe (Ptr a) -> IO () instance GHC.Internal.Generics.Generic Asm.M.CFunc instance Control.DeepSeq.NFData Asm.M.CFunc instance Prettyprinter.Internal.Pretty Asm.M.CFunc module Asm.X86 data X86 reg freg f2 a Label :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [label] :: X86 reg freg f2 a -> Label IAddRR :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rAdd1] :: X86 reg freg f2 a -> reg [rAdd2] :: X86 reg freg f2 a -> reg IAddRI :: a -> reg -> Int64 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rAdd1] :: X86 reg freg f2 a -> reg [rAddI] :: X86 reg freg f2 a -> Int64 ISubRR :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rSub1] :: X86 reg freg f2 a -> reg [rSub2] :: X86 reg freg f2 a -> reg ISubRI :: a -> reg -> Int64 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rSub] :: X86 reg freg f2 a -> reg [rSubI] :: X86 reg freg f2 a -> Int64 IMulRR :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rMul1] :: X86 reg freg f2 a -> reg [rMul2] :: X86 reg freg f2 a -> reg IMulRA :: a -> reg -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rMul] :: X86 reg freg f2 a -> reg [aSrc] :: X86 reg freg f2 a -> Addr reg XorRR :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rXor1] :: X86 reg freg f2 a -> reg [rXor2] :: X86 reg freg f2 a -> reg MovRR :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg MovRA :: a -> reg -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [aSrc] :: X86 reg freg f2 a -> Addr reg MovAR :: a -> Addr reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [aDest] :: X86 reg freg f2 a -> Addr reg [rSrc] :: X86 reg freg f2 a -> reg MovRL :: a -> reg -> Int -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [lSrc] :: X86 reg freg f2 a -> Int MovAI32 :: a -> Addr reg -> Int32 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [aDest] :: X86 reg freg f2 a -> Addr reg [i32Src] :: X86 reg freg f2 a -> Int32 MovRI :: a -> reg -> Int64 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [iSrc] :: X86 reg freg f2 a -> Int64 MovqXR :: a -> freg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [rSrc] :: X86 reg freg f2 a -> reg MovqXA :: a -> freg -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [aSrc] :: X86 reg freg f2 a -> Addr reg MovqAX :: a -> Addr reg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [aDest] :: X86 reg freg f2 a -> Addr reg [fSrc] :: X86 reg freg f2 a -> freg MovqRX :: a -> reg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [fSrc] :: X86 reg freg f2 a -> freg Fld :: a -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [a87] :: X86 reg freg f2 a -> Addr reg FldS :: a -> ST -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [stIsn] :: X86 reg freg f2 a -> ST Fldl2e :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fldln2 :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fld1 :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fyl2x :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fsin :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fcos :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fstp :: a -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [a87] :: X86 reg freg f2 a -> Addr reg F2xm1 :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fmulp :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fprem :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Faddp :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fscale :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fninit :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a Fxch :: a -> ST -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [stIsn] :: X86 reg freg f2 a -> ST J :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [label] :: X86 reg freg f2 a -> Label Je :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [jLabel] :: X86 reg freg f2 a -> Label Jne :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [jLabel] :: X86 reg freg f2 a -> Label Jg :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [jLabel] :: X86 reg freg f2 a -> Label Jge :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [jLabel] :: X86 reg freg f2 a -> Label Jl :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [jLabel] :: X86 reg freg f2 a -> Label Jle :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [jLabel] :: X86 reg freg f2 a -> Label C :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [label] :: X86 reg freg f2 a -> Label CmpRR :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rCmp] :: X86 reg freg f2 a -> reg [rCmp'] :: X86 reg freg f2 a -> reg CmpRI :: a -> reg -> Int32 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rCmp] :: X86 reg freg f2 a -> reg [cmpI32] :: X86 reg freg f2 a -> Int32 Vcmppd :: a -> freg -> freg -> freg -> Pred -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fCmp] :: X86 reg freg f2 a -> freg [fCmp'] :: X86 reg freg f2 a -> freg [cpred] :: X86 reg freg f2 a -> Pred Test :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rCmp] :: X86 reg freg f2 a -> reg [rCmp'] :: X86 reg freg f2 a -> reg TestI :: a -> reg -> Int32 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rCmp] :: X86 reg freg f2 a -> reg [cmpI32] :: X86 reg freg f2 a -> Int32 Ret :: a -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a RetL :: a -> Label -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [label] :: X86 reg freg f2 a -> Label Vdivsd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Movapd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Roundsd :: a -> freg -> freg -> RoundMode -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg [mode] :: X86 reg freg f2 a -> RoundMode Cvttsd2si :: a -> reg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [fSrc] :: X86 reg freg f2 a -> freg Mulsd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Addsd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Subsd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Divsd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Vmulsd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vaddsd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vsubsd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg VaddsdA :: a -> freg -> freg -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg [aSrc] :: X86 reg freg f2 a -> Addr reg Cvtsi2sd :: a -> freg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [rSrc] :: X86 reg freg f2 a -> reg Vfmadd231sd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vfmadd213sd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vfmsub231sd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vfmsub213sd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vfmsub132sd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vfmnadd231sd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg Vfmadd231sdA :: a -> freg -> freg -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg [aSrc] :: X86 reg freg f2 a -> Addr reg Push :: a -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rSrc] :: X86 reg freg f2 a -> reg Pop :: a -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg Call :: a -> CFunc -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [cfunc] :: X86 reg freg f2 a -> CFunc IDiv :: a -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rSrc] :: X86 reg freg f2 a -> reg Sal :: a -> reg -> Int8 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rSrc] :: X86 reg freg f2 a -> reg [iExp] :: X86 reg freg f2 a -> Int8 Sar :: a -> reg -> Int8 -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rSrc] :: X86 reg freg f2 a -> reg [iExp] :: X86 reg freg f2 a -> Int8 Sqrtsd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Maxsd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Vmaxsd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc1] :: X86 reg freg f2 a -> freg [fSrc2] :: X86 reg freg f2 a -> freg VmaxsdA :: a -> freg -> freg -> Addr reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg [aSrc] :: X86 reg freg f2 a -> Addr reg Minsd :: a -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [fSrc] :: X86 reg freg f2 a -> freg Vminsd :: a -> freg -> freg -> freg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [fDest] :: X86 reg freg f2 a -> freg [rSrc1] :: X86 reg freg f2 a -> freg [rSrc2] :: X86 reg freg f2 a -> freg Not :: a -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rSrc] :: X86 reg freg f2 a -> reg And :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg Cmovnle :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg Cmovnl :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg Cmovne :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg Cmove :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg Cmovl :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg Cmovle :: a -> reg -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg [rSrc] :: X86 reg freg f2 a -> reg Rdrand :: a -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg Neg :: a -> reg -> X86 reg freg f2 a [ann] :: X86 reg freg f2 a -> a [rDest] :: X86 reg freg f2 a -> reg data AbsReg IReg :: !Int -> AbsReg CArg0 :: AbsReg CArg1 :: AbsReg CArg2 :: AbsReg CArg3 :: AbsReg CArg4 :: AbsReg CArg5 :: AbsReg CRet :: AbsReg SP :: AbsReg BP :: AbsReg Quot :: AbsReg Rem :: AbsReg data FAbsReg FReg :: !Int -> FAbsReg FArg0 :: FAbsReg FArg1 :: FAbsReg FArg2 :: FAbsReg FArg3 :: FAbsReg FArg4 :: FAbsReg FArg5 :: FAbsReg FArg6 :: FAbsReg FArg7 :: FAbsReg FRet0 :: FAbsReg FRet1 :: FAbsReg data X2Abs F2Reg :: !Int -> X2Abs data X86Reg Rcx :: X86Reg Rdx :: X86Reg Rsi :: X86Reg Rdi :: X86Reg R8 :: X86Reg R9 :: X86Reg R10 :: X86Reg R11 :: X86Reg R12 :: X86Reg R13 :: X86Reg R14 :: X86Reg R15 :: X86Reg Rbx :: X86Reg Rax :: X86Reg Rbp :: X86Reg Rsp :: X86Reg data FX86Reg XMM1 :: FX86Reg XMM2 :: FX86Reg XMM3 :: FX86Reg XMM4 :: FX86Reg XMM5 :: FX86Reg XMM6 :: FX86Reg XMM7 :: FX86Reg XMM8 :: FX86Reg XMM9 :: FX86Reg XMM10 :: FX86Reg XMM11 :: FX86Reg XMM12 :: FX86Reg XMM13 :: FX86Reg XMM14 :: FX86Reg XMM15 :: FX86Reg XMM0 :: FX86Reg data F2X86 YMM1 :: F2X86 YMM2 :: F2X86 YMM3 :: F2X86 YMM4 :: F2X86 YMM5 :: F2X86 YMM6 :: F2X86 YMM7 :: F2X86 YMM8 :: F2X86 YMM9 :: F2X86 YMM10 :: F2X86 YMM11 :: F2X86 YMM12 :: F2X86 YMM13 :: F2X86 YMM14 :: F2X86 YMM15 :: F2X86 YMM0 :: F2X86 data Addr reg R :: reg -> Addr reg RC :: reg -> Int8 -> Addr reg RC32 :: reg -> Int32 -> Addr reg RS :: reg -> Scale -> reg -> Addr reg RSD :: reg -> Scale -> reg -> Int8 -> Addr reg newtype ST ST :: Int8 -> ST data Scale One :: Scale Two :: Scale Four :: Scale Eight :: Scale data Pred Eqoq :: Pred Ltos :: Pred Leos :: Pred Unordq :: Pred Nequq :: Pred Nltus :: Pred Nleus :: Pred Ordq :: Pred data RoundMode RNearest :: RoundMode RDown :: RoundMode RUp :: RoundMode RZero :: RoundMode type Label = Word data CFunc Malloc :: CFunc Free :: CFunc JR :: CFunc DR :: CFunc Exp :: CFunc Log :: CFunc Pow :: CFunc prettyDebugX86 :: (Pretty freg, Pretty reg, Pretty f2reg, Pretty o) => [X86 reg freg f2reg o] -> Doc ann toInt :: AbsReg -> Int fToInt :: FAbsReg -> Int f2ToInt :: X2Abs -> Int imm8 :: Pred -> Int8 simd2 :: FX86Reg -> F2X86 roundMode :: RoundMode -> Word8 mapR :: (areg -> reg) -> X86 areg afreg af2 a -> X86 reg afreg af2 a mapFR :: (afreg -> freg) -> X86 areg afreg af2 a -> X86 areg freg af2 a mapF2 :: (af2 -> f2) -> X86 areg afreg af2 a -> X86 areg afreg f2 a fR :: Monoid m => (reg -> m) -> X86 reg freg f2reg a -> m hasMa :: [X86 reg freg f2reg a] -> Bool instance Data.Copointed.Copointed (Asm.X86.X86 reg freg f2reg) instance GHC.Internal.Enum.Enum Asm.X86.F2X86 instance GHC.Internal.Enum.Enum Asm.X86.FX86Reg instance GHC.Internal.Enum.Enum Asm.X86.X86Reg instance GHC.Classes.Eq Asm.X86.AbsReg instance GHC.Classes.Eq reg => GHC.Classes.Eq (Asm.X86.Addr reg) instance GHC.Classes.Eq Asm.X86.F2X86 instance GHC.Classes.Eq Asm.X86.FAbsReg instance GHC.Classes.Eq Asm.X86.FX86Reg instance GHC.Classes.Eq Asm.X86.Scale instance GHC.Classes.Eq Asm.X86.X2Abs instance GHC.Classes.Eq Asm.X86.X86Reg instance GHC.Internal.Data.Foldable.Foldable Asm.X86.Addr instance GHC.Internal.Base.Functor Asm.X86.Addr instance GHC.Internal.Base.Functor (Asm.X86.X86 reg freg f2) instance GHC.Internal.Generics.Generic (Asm.X86.Addr reg) instance GHC.Internal.Generics.Generic Asm.X86.F2X86 instance GHC.Internal.Generics.Generic Asm.X86.FX86Reg instance GHC.Internal.Generics.Generic Asm.X86.Pred instance GHC.Internal.Generics.Generic Asm.X86.RoundMode instance GHC.Internal.Generics.Generic Asm.X86.Scale instance GHC.Internal.Generics.Generic (Asm.X86.X86 reg freg f2 a) instance GHC.Internal.Generics.Generic Asm.X86.X86Reg instance Control.DeepSeq.NFData reg => Control.DeepSeq.NFData (Asm.X86.Addr reg) instance Control.DeepSeq.NFData Asm.X86.F2X86 instance Control.DeepSeq.NFData Asm.X86.FX86Reg instance Control.DeepSeq.NFData Asm.X86.Pred instance Control.DeepSeq.NFData Asm.X86.RoundMode instance Control.DeepSeq.NFData Asm.X86.ST instance Control.DeepSeq.NFData Asm.X86.Scale instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData reg, Control.DeepSeq.NFData freg, Control.DeepSeq.NFData f2) => Control.DeepSeq.NFData (Asm.X86.X86 reg freg f2 a) instance Control.DeepSeq.NFData Asm.X86.X86Reg instance GHC.Classes.Ord Asm.X86.AbsReg instance GHC.Classes.Ord Asm.X86.F2X86 instance GHC.Classes.Ord Asm.X86.FAbsReg instance GHC.Classes.Ord Asm.X86.FX86Reg instance GHC.Classes.Ord Asm.X86.X2Abs instance GHC.Classes.Ord Asm.X86.X86Reg instance Prettyprinter.Internal.Pretty Asm.X86.AbsReg instance Prettyprinter.Internal.Pretty reg => Prettyprinter.Internal.Pretty (Asm.X86.Addr reg) instance Prettyprinter.Internal.Pretty Asm.X86.F2X86 instance Prettyprinter.Internal.Pretty Asm.X86.FAbsReg instance Prettyprinter.Internal.Pretty Asm.X86.FX86Reg instance Prettyprinter.Internal.Pretty Asm.X86.Pred instance Prettyprinter.Internal.Pretty Asm.X86.RoundMode instance Prettyprinter.Internal.Pretty Asm.X86.ST instance Prettyprinter.Internal.Pretty Asm.X86.Scale instance Prettyprinter.Internal.Pretty Asm.X86.X2Abs instance (Prettyprinter.Internal.Pretty reg, Prettyprinter.Internal.Pretty freg, Prettyprinter.Internal.Pretty f2reg) => Prettyprinter.Internal.Pretty (Asm.X86.X86 reg freg f2reg a) instance Prettyprinter.Internal.Pretty Asm.X86.X86Reg instance GHC.Internal.Show.Show Asm.X86.F2X86 instance GHC.Internal.Show.Show Asm.X86.FX86Reg instance (Prettyprinter.Internal.Pretty reg, Prettyprinter.Internal.Pretty freg, Prettyprinter.Internal.Pretty f2) => GHC.Internal.Show.Show (Asm.X86.X86 reg freg f2 a) instance GHC.Internal.Show.Show Asm.X86.X86Reg module Asm.X86.Trans irToX86 :: WSt -> [Stmt] -> (Int, [X86 AbsReg FAbsReg X2Abs ()]) module Asm.X86.Frame frameC :: [X86 X86Reg FX86Reg F2X86 Live] -> [X86 X86Reg FX86Reg F2X86 ()] module Asm.X86.B bb :: [X86 reg freg f2reg a] -> [BB X86 reg freg f2reg a ()] module Asm.Aarch64 data AArch64 reg freg f2 a Label :: a -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [label] :: AArch64 reg freg f2 a -> Label B :: a -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [label] :: AArch64 reg freg f2 a -> Label Blr :: a -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg C :: a -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [label] :: AArch64 reg freg f2 a -> Label Bl :: a -> CFunc -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [cfunc] :: AArch64 reg freg f2 a -> CFunc Bc :: a -> Cond -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [cond] :: AArch64 reg freg f2 a -> Cond [label] :: AArch64 reg freg f2 a -> Label Ret :: a -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a RetL :: a -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [label] :: AArch64 reg freg f2 a -> Label FMovXX :: a -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc] :: AArch64 reg freg f2 a -> freg FMovDR :: a -> freg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [rSrc] :: AArch64 reg freg f2 a -> reg MovRR :: a -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc] :: AArch64 reg freg f2 a -> reg MovRC :: a -> reg -> Word16 -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [cSrc] :: AArch64 reg freg f2 a -> Word16 MovZ :: a -> reg -> Word16 -> Int -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [cSrc] :: AArch64 reg freg f2 a -> Word16 [lsl] :: AArch64 reg freg f2 a -> Int MovRCf :: a -> reg -> CFunc -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [cfunc] :: AArch64 reg freg f2 a -> CFunc LdrRL :: a -> reg -> Int -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [lSrc] :: AArch64 reg freg f2 a -> Int MovK :: a -> reg -> Word16 -> Int -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [cSrc] :: AArch64 reg freg f2 a -> Word16 [lsl] :: AArch64 reg freg f2 a -> Int Ldr :: a -> reg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [aSrc] :: AArch64 reg freg f2 a -> Addr reg LdrB :: a -> reg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [aSrc] :: AArch64 reg freg f2 a -> Addr reg Str :: a -> reg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [aDest] :: AArch64 reg freg f2 a -> Addr reg StrB :: a -> reg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [aDest] :: AArch64 reg freg f2 a -> Addr reg LdrD :: a -> freg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [aSrc] :: AArch64 reg freg f2 a -> Addr reg StrD :: a -> freg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dSrc] :: AArch64 reg freg f2 a -> freg [aDest] :: AArch64 reg freg f2 a -> Addr reg SubRR :: a -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg AddRR :: a -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg AddRRS :: a -> reg -> reg -> reg -> Word8 -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg [sC] :: AArch64 reg freg f2 a -> Word8 ZeroR :: a -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg Mvn :: a -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc] :: AArch64 reg freg f2 a -> reg AndRR :: a -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg OrRR :: a -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg Eor :: a -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg MulRR :: a -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg Madd :: a -> reg -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg [rSrc3] :: AArch64 reg freg f2 a -> reg Msub :: a -> reg -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg [rSrc3] :: AArch64 reg freg f2 a -> reg Sdiv :: a -> reg -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg AddRC :: a -> reg -> reg -> Word16 -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc] :: AArch64 reg freg f2 a -> reg [rC] :: AArch64 reg freg f2 a -> Word16 SubRC :: a -> reg -> reg -> Word16 -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc] :: AArch64 reg freg f2 a -> reg [rC] :: AArch64 reg freg f2 a -> Word16 Lsl :: a -> reg -> reg -> Word8 -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc] :: AArch64 reg freg f2 a -> reg [sC] :: AArch64 reg freg f2 a -> Word8 Asr :: a -> reg -> reg -> Word8 -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc] :: AArch64 reg freg f2 a -> reg [sC] :: AArch64 reg freg f2 a -> Word8 CmpRC :: a -> reg -> Word16 -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [cSrc] :: AArch64 reg freg f2 a -> Word16 CmpRR :: a -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg Neg :: a -> reg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc] :: AArch64 reg freg f2 a -> reg Fmul :: a -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg Fadd :: a -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg Fsub :: a -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg Fdiv :: a -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg FcmpZ :: a -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dSrc] :: AArch64 reg freg f2 a -> freg Fcmp :: a -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg Fneg :: a -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc] :: AArch64 reg freg f2 a -> freg Scvtf :: a -> freg -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [rSrc] :: AArch64 reg freg f2 a -> reg Fcvtms :: a -> reg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [dSrc] :: AArch64 reg freg f2 a -> freg Fcvtas :: a -> reg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [dSrc] :: AArch64 reg freg f2 a -> freg Stp :: a -> reg -> reg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg [aDest] :: AArch64 reg freg f2 a -> Addr reg Ldp :: a -> reg -> reg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest1] :: AArch64 reg freg f2 a -> reg [rDest2] :: AArch64 reg freg f2 a -> reg [aSrc] :: AArch64 reg freg f2 a -> Addr reg Stp2 :: a -> f2 -> f2 -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [r2Src1] :: AArch64 reg freg f2 a -> f2 [r2Src2] :: AArch64 reg freg f2 a -> f2 [aDest] :: AArch64 reg freg f2 a -> Addr reg Ldp2 :: a -> f2 -> f2 -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [r2Dest1] :: AArch64 reg freg f2 a -> f2 [r2Dest2] :: AArch64 reg freg f2 a -> f2 [aRc] :: AArch64 reg freg f2 a -> Addr reg StpD :: a -> freg -> freg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg [aDest] :: AArch64 reg freg f2 a -> Addr reg LdpD :: a -> freg -> freg -> Addr reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest1] :: AArch64 reg freg f2 a -> freg [dDest2] :: AArch64 reg freg f2 a -> freg [aSrc] :: AArch64 reg freg f2 a -> Addr reg Fmadd :: a -> freg -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg [dSrc3] :: AArch64 reg freg f2 a -> freg Fmsub :: a -> freg -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg [dSrc3] :: AArch64 reg freg f2 a -> freg Fsqrt :: a -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc] :: AArch64 reg freg f2 a -> freg Frintm :: a -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc] :: AArch64 reg freg f2 a -> freg MrsR :: a -> reg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg Fmax :: a -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg Fmin :: a -> freg -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg Fabs :: a -> freg -> freg -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc] :: AArch64 reg freg f2 a -> freg Csel :: a -> reg -> reg -> reg -> Cond -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [rSrc1] :: AArch64 reg freg f2 a -> reg [rSrc2] :: AArch64 reg freg f2 a -> reg [cond] :: AArch64 reg freg f2 a -> Cond Tbnz :: a -> reg -> Word8 -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [bit] :: AArch64 reg freg f2 a -> Word8 [label] :: AArch64 reg freg f2 a -> Label Tbz :: a -> reg -> Word8 -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [bit] :: AArch64 reg freg f2 a -> Word8 [label] :: AArch64 reg freg f2 a -> Label Cbnz :: a -> reg -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [label] :: AArch64 reg freg f2 a -> Label Cbz :: a -> reg -> Label -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [label] :: AArch64 reg freg f2 a -> Label Fcsel :: a -> freg -> freg -> freg -> Cond -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [dDest] :: AArch64 reg freg f2 a -> freg [dSrc1] :: AArch64 reg freg f2 a -> freg [dSrc2] :: AArch64 reg freg f2 a -> freg [cond] :: AArch64 reg freg f2 a -> Cond Cset :: a -> reg -> Cond -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rDest] :: AArch64 reg freg f2 a -> reg [cond] :: AArch64 reg freg f2 a -> Cond TstI :: a -> reg -> BM -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc1] :: AArch64 reg freg f2 a -> reg [imm] :: AArch64 reg freg f2 a -> BM EorI :: a -> reg -> reg -> BM -> AArch64 reg freg f2 a [ann] :: AArch64 reg freg f2 a -> a [rSrc] :: AArch64 reg freg f2 a -> reg [rDesg] :: AArch64 reg freg f2 a -> reg [imm] :: AArch64 reg freg f2 a -> BM data Addr reg R :: reg -> Addr reg RP :: reg -> Word16 -> Addr reg BI :: reg -> reg -> Shift -> Addr reg data Cond Eq :: Cond Neq :: Cond Geq :: Cond Lt :: Cond Gt :: Cond Leq :: Cond data Shift Zero :: Shift Three :: Shift data BM BM :: !Word8 -> !Word8 -> BM [ims] :: BM -> !Word8 [left] :: BM -> !Word8 data AbsReg IReg :: !Int -> AbsReg CArg0 :: AbsReg CArg1 :: AbsReg CArg2 :: AbsReg CArg3 :: AbsReg CArg4 :: AbsReg CArg5 :: AbsReg CArg6 :: AbsReg CArg7 :: AbsReg LR :: AbsReg FP :: AbsReg ASP :: AbsReg data FAbsReg FReg :: !Int -> FAbsReg FArg0 :: FAbsReg FArg1 :: FAbsReg FArg2 :: FAbsReg FArg3 :: FAbsReg FArg4 :: FAbsReg FArg5 :: FAbsReg FArg6 :: FAbsReg FArg7 :: FAbsReg data F2Abs F2Reg :: !Int -> F2Abs data AReg X0 :: AReg X1 :: AReg X2 :: AReg X3 :: AReg X4 :: AReg X5 :: AReg X6 :: AReg X7 :: AReg X8 :: AReg X9 :: AReg X10 :: AReg X11 :: AReg X12 :: AReg X13 :: AReg X14 :: AReg X15 :: AReg X16 :: AReg X17 :: AReg X18 :: AReg X19 :: AReg X20 :: AReg X21 :: AReg X22 :: AReg X23 :: AReg X24 :: AReg X25 :: AReg X26 :: AReg X27 :: AReg X28 :: AReg X29 :: AReg X30 :: AReg SP :: AReg data FAReg D0 :: FAReg D1 :: FAReg D2 :: FAReg D3 :: FAReg D4 :: FAReg D5 :: FAReg D6 :: FAReg D7 :: FAReg D8 :: FAReg D9 :: FAReg D10 :: FAReg D11 :: FAReg D12 :: FAReg D13 :: FAReg D14 :: FAReg D15 :: FAReg D16 :: FAReg D17 :: FAReg D18 :: FAReg D19 :: FAReg D20 :: FAReg D21 :: FAReg D22 :: FAReg D23 :: FAReg D24 :: FAReg D25 :: FAReg D26 :: FAReg D27 :: FAReg D28 :: FAReg D29 :: FAReg D30 :: FAReg D31 :: FAReg data F2Reg V0 :: F2Reg V1 :: F2Reg V2 :: F2Reg V3 :: F2Reg V4 :: F2Reg V5 :: F2Reg V6 :: F2Reg V7 :: F2Reg V8 :: F2Reg V9 :: F2Reg V10 :: F2Reg V11 :: F2Reg V12 :: F2Reg V13 :: F2Reg V14 :: F2Reg V15 :: F2Reg V16 :: F2Reg V17 :: F2Reg V18 :: F2Reg V19 :: F2Reg V20 :: F2Reg V21 :: F2Reg V22 :: F2Reg V23 :: F2Reg V24 :: F2Reg V25 :: F2Reg V26 :: F2Reg V27 :: F2Reg V28 :: F2Reg V29 :: F2Reg V30 :: F2Reg V31 :: F2Reg class SIMD a pv :: SIMD a => a -> Doc ann pq :: SIMD a => a -> Doc ann simd2 :: FAReg -> F2Reg prettyDebug :: (Pretty freg, Pretty reg, SIMD f2reg, Pretty o) => [AArch64 reg freg f2reg o] -> Doc ann mapR :: (areg -> reg) -> AArch64 areg afreg af2 a -> AArch64 reg afreg af2 a mapFR :: (afreg -> freg) -> AArch64 areg afreg af2 a -> AArch64 areg freg af2 a mapF2 :: (af2 -> f2) -> AArch64 areg afreg af2 a -> AArch64 areg afreg f2 a toInt :: AbsReg -> Int fToInt :: FAbsReg -> Int f2ToInt :: F2Abs -> Int pus :: [AReg] -> [AArch64 AReg freg f2reg ()] pos :: [AReg] -> [AArch64 AReg freg f2reg ()] puds :: [freg] -> [AArch64 AReg freg f2reg ()] pods :: [freg] -> [AArch64 AReg freg f2reg ()] pSym :: Pretty a => a -> Doc ann instance Data.Copointed.Copointed (Asm.Aarch64.AArch64 reg freg f2) instance GHC.Internal.Enum.Enum Asm.Aarch64.AReg instance GHC.Internal.Enum.Enum Asm.Aarch64.F2Reg instance GHC.Internal.Enum.Enum Asm.Aarch64.FAReg instance GHC.Classes.Eq Asm.Aarch64.AReg instance GHC.Classes.Eq Asm.Aarch64.BM instance GHC.Classes.Eq Asm.Aarch64.F2Reg instance GHC.Classes.Eq Asm.Aarch64.FAReg instance GHC.Internal.Base.Functor (Asm.Aarch64.AArch64 reg freg f2) instance GHC.Internal.Base.Functor Asm.Aarch64.Addr instance GHC.Internal.Generics.Generic (Asm.Aarch64.AArch64 reg freg f2 a) instance GHC.Internal.Generics.Generic Asm.Aarch64.AReg instance GHC.Internal.Generics.Generic (Asm.Aarch64.Addr reg) instance GHC.Internal.Generics.Generic Asm.Aarch64.F2Reg instance GHC.Internal.Generics.Generic Asm.Aarch64.FAReg instance (Control.DeepSeq.NFData r, Control.DeepSeq.NFData d, Control.DeepSeq.NFData x, Control.DeepSeq.NFData a) => Control.DeepSeq.NFData (Asm.Aarch64.AArch64 r d x a) instance Control.DeepSeq.NFData Asm.Aarch64.AReg instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Asm.Aarch64.Addr a) instance Control.DeepSeq.NFData Asm.Aarch64.BM instance Control.DeepSeq.NFData Asm.Aarch64.Cond instance Control.DeepSeq.NFData Asm.Aarch64.F2Reg instance Control.DeepSeq.NFData Asm.Aarch64.FAReg instance Control.DeepSeq.NFData Asm.Aarch64.Shift instance GHC.Classes.Ord Asm.Aarch64.AReg instance GHC.Classes.Ord Asm.Aarch64.F2Reg instance GHC.Classes.Ord Asm.Aarch64.FAReg instance (Prettyprinter.Internal.Pretty reg, Prettyprinter.Internal.Pretty freg, Asm.Aarch64.SIMD f2reg) => Prettyprinter.Internal.Pretty (Asm.Aarch64.AArch64 reg freg f2reg a) instance Prettyprinter.Internal.Pretty Asm.Aarch64.AReg instance Prettyprinter.Internal.Pretty Asm.Aarch64.AbsReg instance Prettyprinter.Internal.Pretty reg => Prettyprinter.Internal.Pretty (Asm.Aarch64.Addr reg) instance Prettyprinter.Internal.Pretty Asm.Aarch64.BM instance Prettyprinter.Internal.Pretty Asm.Aarch64.Cond instance Prettyprinter.Internal.Pretty Asm.Aarch64.FAReg instance Prettyprinter.Internal.Pretty Asm.Aarch64.FAbsReg instance Prettyprinter.Internal.Pretty Asm.Aarch64.Shift instance Asm.Aarch64.SIMD Asm.Aarch64.F2Abs instance Asm.Aarch64.SIMD Asm.Aarch64.F2Reg instance (Prettyprinter.Internal.Pretty reg, Prettyprinter.Internal.Pretty freg, Asm.Aarch64.SIMD f2reg) => GHC.Internal.Show.Show (Asm.Aarch64.AArch64 reg freg f2reg a) instance GHC.Internal.Show.Show Asm.Aarch64.AReg instance GHC.Internal.Show.Show Asm.Aarch64.FAReg module Class.E class E a toInt :: E a => a -> Int instance Class.E.E Asm.Aarch64.AReg instance Class.E.E Asm.Aarch64.AbsReg instance Class.E.E Asm.X86.AbsReg instance Class.E.E Asm.Aarch64.F2Abs instance Class.E.E Asm.Aarch64.F2Reg instance Class.E.E Asm.X86.F2X86 instance Class.E.E Asm.Aarch64.FAReg instance Class.E.E Asm.Aarch64.FAbsReg instance Class.E.E Asm.X86.FAbsReg instance Class.E.E Asm.X86.FX86Reg instance Class.E.E Asm.X86.X86Reg module Asm.CF type N = Int type FreshM = State (N, Map Label N, Map Label [N]) runFreshM :: FreshM a -> a getFresh :: FreshM N fm :: Label -> FreshM N lookupLabel :: Label -> FreshM N lC :: Label -> FreshM [N] broadcast :: N -> Label -> FreshM () b3 :: N -> Label -> FreshM () singleton :: E reg => reg -> IntSet fromList :: E reg => [reg] -> IntSet -- | From the Kempe compiler with improvements. module Asm.X86.CF mkControlFlow :: (E reg, E freg) => [BB X86 reg freg f2reg () ()] -> [BB X86 reg freg f2reg () ControlAnn] expand :: (E reg, E freg) => BB X86 reg freg f2reg () Liveness -> [X86 reg freg f2reg Liveness] udd :: (E reg, E freg) => X86 reg freg f2reg ann -> UD uses :: E reg => X86 reg freg f2reg ann -> IntSet defs :: E reg => X86 reg freg f2reg ann -> IntSet defsF :: E freg => X86 reg freg f2reg ann -> IntSet module Asm.X86.Sp spill :: Int -> Int -> IntSet -> [X86 AbsReg FAbsReg X2Abs a] -> (Int, Int, [X86 AbsReg FAbsReg X2Abs ()]) module Asm.Aarch64.T irToAarch64 :: WSt -> [Stmt] -> (Int, [AArch64 AbsReg FAbsReg F2Abs ()]) module Asm.Aarch64.Opt opt :: (Eq reg, Eq freg) => [AArch64 reg freg f2reg ()] -> [AArch64 reg freg f2reg ()] module Asm.Aarch64.Fr frameC :: [AArch64 AReg FAReg F2Reg Live] -> [AArch64 AReg FAReg F2Reg ()] module Asm.Aarch64.CF mkControlFlow :: (E reg, E freg, E f2reg) => [BB AArch64 reg freg f2reg () ()] -> [BB AArch64 reg freg f2reg () ControlAnn] expand :: (E reg, E freg, E f2reg) => BB AArch64 reg freg f2reg () Liveness -> [AArch64 reg freg f2reg Liveness] udd :: (E reg, E freg, E f2reg) => AArch64 reg freg f2reg ann -> UD module Asm.Aarch64.B bb :: [AArch64 reg freg f2reg a] -> [BB AArch64 reg freg f2reg a ()] module Asm.Ar class Arch (arch :: Type -> Type -> Type -> Type -> Type) reg freg f2reg cf :: Arch arch reg freg f2reg => [BB arch reg freg f2reg () ()] -> [BB arch reg freg f2reg () ControlAnn] -- | result: src, dest mI :: Arch arch reg freg f2reg => arch reg freg f2reg a -> Maybe (reg, reg) mf :: Arch arch reg freg f2reg => arch reg freg f2reg a -> Maybe (freg, freg) bb :: Arch arch reg freg f2reg => [arch reg freg f2reg a] -> [BB arch reg freg f2reg a ()] expand :: Arch arch reg freg f2reg => BB arch reg freg f2reg () Liveness -> [arch reg freg f2reg Liveness] udd :: Arch arch reg freg f2reg => arch reg freg f2reg a -> UD instance (Class.E.E reg, Class.E.E freg, Class.E.E f2reg) => Asm.Ar.Arch Asm.Aarch64.AArch64 reg freg f2reg instance (Class.E.E reg, Class.E.E freg) => Asm.Ar.Arch Asm.X86.X86 reg freg f2reg module Asm.L mkLive :: Arch arch reg freg f2 => [arch reg freg f2 ()] -> [arch reg freg f2 Liveness] liveBB :: Arch arch reg freg f2 => [arch reg freg f2 ()] -> [BB arch reg freg f2 () Liveness] module Asm.X86.Opt optX86 :: (E reg, E freg, Eq reg, Eq freg) => [X86 reg freg f2 ()] -> [X86 reg freg f2 ()] module Asm.LI mkIntervals :: (Arch arch reg freg f2, Copointed (arch reg freg f2)) => [arch reg freg f2 ()] -> [arch reg freg f2 Live] -- | From Appel module Asm.G alloc :: (Ord reg, Arch arch areg afreg af2, Copointed (arch areg afreg af2)) => [arch areg afreg af2 (UD, Liveness, Maybe (Int, Int))] -> [reg] -> IntSet -> IntMap reg -> Either IntSet (IntMap reg) allocF :: (Ord freg, Arch arch areg afreg af2, Copointed (arch areg afreg af2)) => [arch areg afreg af2 (UD, Liveness, Maybe (Int, Int))] -> [freg] -> IntSet -> IntMap freg -> Either IntSet (IntMap freg) module Asm.Ar.P bundle :: (E reg, E freg, Copointed (arch reg freg f2), Arch arch reg freg f2) => [arch reg freg f2 ()] -> ([arch reg freg f2 (UD, Liveness, Maybe (Int, Int))], [arch reg freg f2 (UD, Liveness, Maybe (Int, Int))]) module Asm.X86.P gallocFrame :: Int -> [X86 AbsReg FAbsReg X2Abs ()] -> [X86 X86Reg FX86Reg F2X86 ()] gallocOn :: Int -> [X86 AbsReg FAbsReg X2Abs ()] -> (IntMap X86Reg, IntMap FX86Reg, [X86 AbsReg FAbsReg X2Abs ()]) module Asm.Aarch64.P gallocFrame :: Int -> [AArch64 AbsReg FAbsReg F2Abs ()] -> [AArch64 AReg FAReg F2Reg ()] gallocOn :: Int -> [AArch64 AbsReg FAbsReg F2Abs ()] -> (IntMap AReg, IntMap FAReg, [AArch64 AbsReg FAbsReg F2Abs ()]) module Sys.DL type CCtx = (Int, Int, Int, Int) type MCtx = (Int, Int, Int) libc :: IO DL mem' :: IO CCtx math' :: IO MCtx module Asm.X86.Byte allFp :: (IntMap [Word64], [X86 X86Reg FX86Reg F2X86 a]) -> IO ([ByteString], FunPtr b, Maybe (Ptr Word64)) assemble :: (IntMap [Word64], [X86 X86Reg FX86Reg F2X86 a]) -> ByteString assembleCtx :: CCtx -> (IntMap [Word64], [X86 X86Reg FX86Reg F2X86 a]) -> IO (ByteString, FunPtr b, Maybe (Ptr Word64)) dbgFp :: (IntMap [Word64], [X86 X86Reg FX86Reg F2X86 a]) -> IO [ByteString] instance Asm.X86.Byte.RMB Asm.X86.FX86Reg instance Asm.X86.Byte.RMB Asm.X86.X86Reg module Asm.Aarch64.Byte allFp :: (IntMap [Word64], [AArch64 AReg FAReg F2Reg ()]) -> IO ([ByteString], FunPtr b, Maybe (Ptr Word64)) assembleCtx :: (CCtx, MCtx) -> (IntMap [Word64], [AArch64 AReg FAReg F2Reg ()]) -> IO (ByteString, FunPtr b, Maybe (Ptr Word64)) dbgFp :: (IntMap [Word64], [AArch64 AReg FAReg F2Reg ()]) -> IO [ByteString] module U newtype U U :: Int -> U [unU] :: U -> Int instance GHC.Classes.Eq U.U instance GHC.Classes.Ord U.U module Nm data Nm a Nm :: Text -> !U -> a -> Nm a [name] :: Nm a -> Text [unique] :: Nm a -> !U [loc] :: Nm a -> a type TyNm a = Nm a instance GHC.Classes.Eq (Nm.Nm a) instance GHC.Internal.Base.Functor Nm.Nm instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Nm.Nm a) instance GHC.Classes.Ord (Nm.Nm a) instance Prettyprinter.Internal.Pretty (Nm.Nm a) instance GHC.Internal.Show.Show (Nm.Nm a) module R.M type RM = State Int runR :: Int -> RM x -> (x, Int) nextN :: a -> RM (Nm a) nextU :: Text -> a -> RM (Nm a) module Nm.IntMap insert :: Nm a -> b -> IntMap b -> IntMap b findWithDefault :: a1 -> Nm a2 -> IntMap a1 -> a1 -- | AST module A data T a Arr :: Sh a -> T a -> T a F :: T a -- | double I :: T a -- | int B :: T a -- | bool Li :: I a -> T a TVar :: Nm a -> T a -- | Kind <math> Arrow :: T a -> T a -> T a P :: [T a] -> T a Ρ :: TyNm a -> IntMap (T a) -> T a (~>) :: T a -> T a -> T a infixr 0 ~> data I a Ix :: a -> !Int -> I a [ia] :: I a -> a [ii] :: I a -> !Int IVar :: a -> Nm a -> I a [ia] :: I a -> a [ixn] :: I a -> Nm a IEVar :: a -> Nm a -> I a [ia] :: I a -> a [ie] :: I a -> Nm a StaPlus :: a -> I a -> I a -> I a [ia] :: I a -> a [ix0] :: I a -> I a [ix1] :: I a -> I a StaMul :: a -> I a -> I a -> I a [ia] :: I a -> a [ix0] :: I a -> I a [ix1] :: I a -> I a data Sh a Nil :: Sh a SVar :: Nm a -> Sh a Cons :: I a -> Sh a -> Sh a Rev :: Sh a -> Sh a Cat :: Sh a -> Sh a -> Sh a Π :: Sh a -> Sh a infixr 8 `Cons` data C IsNum :: C IsOrd :: C IsEq :: C HasBits :: C data E a ALit :: a -> [E a] -> E a [eAnn] :: E a -> a [arrLit] :: E a -> [E a] Var :: a -> Nm a -> E a [eAnn] :: E a -> a [eVar] :: E a -> Nm a Builtin :: a -> !Builtin -> E a [eAnn] :: E a -> a [eBuiltin] :: E a -> !Builtin EApp :: a -> E a -> E a -> E a [eAnn] :: E a -> a [eF] :: E a -> E a [eArg] :: E a -> E a Lam :: a -> Nm a -> E a -> E a [eAnn] :: E a -> a [eVar] :: E a -> Nm a [eIn] :: E a -> E a ILit :: a -> !Integer -> E a [eAnn] :: E a -> a [eILit] :: E a -> !Integer FLit :: a -> !Double -> E a [eAnn] :: E a -> a [eFLit] :: E a -> !Double BLit :: a -> !Bool -> E a [eAnn] :: E a -> a [eBLit] :: E a -> !Bool Cond :: a -> E a -> E a -> E a -> E a [eAnn] :: E a -> a [prop] :: E a -> E a [ifBranch] :: E a -> E a [elseBranch] :: E a -> E a Let :: a -> (Nm a, E a) -> E a -> E a [eAnn] :: E a -> a [eBnd] :: E a -> (Nm a, E a) [eIn] :: E a -> E a Def :: a -> (Nm a, E a) -> E a -> E a [eAnn] :: E a -> a [eBnd] :: E a -> (Nm a, E a) [eIn] :: E a -> E a LLet :: a -> (Nm a, E a) -> E a -> E a [eAnn] :: E a -> a [eBnd] :: E a -> (Nm a, E a) [eIn] :: E a -> E a Dfn :: a -> E a -> E a [eAnn] :: E a -> a [eIn] :: E a -> E a ResVar :: a -> ResVar -> E a [eAnn] :: E a -> a [eXY] :: E a -> ResVar Parens :: a -> E a -> E a [eAnn] :: E a -> a [eExp] :: E a -> E a Ann :: a -> E a -> T a -> E a [eAnn] :: E a -> a [eEe] :: E a -> E a [eTy] :: E a -> T a Tup :: a -> [E a] -> E a [eAnn] :: E a -> a [eEs] :: E a -> [E a] Id :: a -> Idiom -> E a [eAnn] :: E a -> a [eIdiom] :: E a -> Idiom data Idiom FoldSOfZip :: E (T ()) -> E (T ()) -> [E (T ())] -> Idiom [seedI] :: Idiom -> E (T ()) [opI] :: Idiom -> E (T ()) [esI] :: Idiom -> [E (T ())] FoldOfZip :: E (T ()) -> E (T ()) -> [E (T ())] -> Idiom [zopI] :: Idiom -> E (T ()) [opI] :: Idiom -> E (T ()) [esI] :: Idiom -> [E (T ())] FoldGen :: E (T ()) -> E (T ()) -> E (T ()) -> E (T ()) -> Idiom [seedG] :: Idiom -> E (T ()) [ufG] :: Idiom -> E (T ()) [fG] :: Idiom -> E (T ()) [nG] :: Idiom -> E (T ()) AShLit :: [Int] -> [E (T ())] -> Idiom [litSh] :: Idiom -> [Int] [esLit] :: Idiom -> [E (T ())] data Builtin Plus :: Builtin Minus :: Builtin Times :: Builtin Div :: Builtin IntExp :: Builtin Exp :: Builtin Log :: Builtin Eq :: Builtin Neq :: Builtin Gt :: Builtin Lt :: Builtin Gte :: Builtin Lte :: Builtin CatE :: Builtin IDiv :: Builtin Mod :: Builtin Max :: Builtin Min :: Builtin Neg :: Builtin Sqrt :: Builtin T :: Builtin Di :: Builtin Flat :: Builtin AddDim :: Builtin Ices :: Builtin Filt :: Builtin Eye :: Builtin IRange :: Builtin FRange :: Builtin Map :: Builtin FoldA :: Builtin Zip :: Builtin Rank :: [(Int, Maybe [Int])] -> Builtin Fold :: Builtin FoldS :: Builtin Foldl :: Builtin Floor :: Builtin ItoF :: Builtin Iter :: Builtin Scan :: Builtin ScanS :: Builtin Size :: Builtin Dim :: Builtin Re :: Builtin Gen :: Builtin Fib :: Builtin Succ :: Builtin DI :: !Int -> Builtin Conv :: [Int] -> Builtin TAt :: !Int -> Builtin Last :: Builtin LastM :: Builtin ConsE :: Builtin Snoc :: Builtin Mul :: Builtin VMul :: Builtin Outer :: Builtin R :: Builtin Head :: Builtin HeadM :: Builtin Tail :: Builtin Init :: Builtin RevE :: Builtin TailM :: Builtin InitM :: Builtin Sin :: Builtin Cos :: Builtin Rot :: Builtin Tan :: Builtin Cyc :: Builtin A1 :: Builtin Even :: Builtin Odd :: Builtin IOf :: Builtin Abs :: Builtin And :: Builtin Or :: Builtin Xor :: Builtin N :: Builtin Sr :: Builtin Sl :: Builtin C :: Builtin data ResVar X :: ResVar Y :: ResVar prettyTyped :: E (T a) -> Doc ann prettyC :: (T (), [(Nm a, C)]) -> Doc ann rLi :: T a -> T a instance GHC.Classes.Eq A.C instance GHC.Internal.Base.Functor A.E instance GHC.Internal.Base.Functor A.I instance GHC.Internal.Base.Functor A.Sh instance GHC.Internal.Base.Functor A.T instance GHC.Internal.Generics.Generic A.Builtin instance GHC.Internal.Generics.Generic A.C instance GHC.Internal.Generics.Generic (A.E a) instance GHC.Internal.Generics.Generic (A.I a) instance GHC.Internal.Generics.Generic A.Idiom instance GHC.Internal.Generics.Generic A.ResVar instance GHC.Internal.Generics.Generic (A.Sh a) instance GHC.Internal.Generics.Generic (A.T a) instance Control.DeepSeq.NFData A.Builtin instance Control.DeepSeq.NFData A.C instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (A.E a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (A.I a) instance Control.DeepSeq.NFData A.Idiom instance Control.DeepSeq.NFData A.ResVar instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (A.Sh a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (A.T a) instance GHC.Classes.Ord A.C instance Prettyprinter.Ext.PS (A.E a) instance Prettyprinter.Ext.PS (A.I a) instance Prettyprinter.Ext.PS (A.Sh a) instance Prettyprinter.Ext.PS (A.T a) instance Prettyprinter.Internal.Pretty A.Builtin instance Prettyprinter.Internal.Pretty A.C instance Prettyprinter.Internal.Pretty (A.E a) instance Prettyprinter.Internal.Pretty (A.I a) instance Prettyprinter.Internal.Pretty A.Idiom instance Prettyprinter.Internal.Pretty A.ResVar instance Prettyprinter.Internal.Pretty (A.Sh a) instance Prettyprinter.Internal.Pretty (A.T a) instance GHC.Internal.Show.Show A.C instance GHC.Internal.Show.Show (A.E a) instance GHC.Internal.Show.Show (A.I a) instance GHC.Internal.Show.Show A.Idiom instance GHC.Internal.Show.Show (A.Sh a) instance GHC.Internal.Show.Show (A.T a) module Ty.M check :: E (T ()) -> Maybe RE data RE MR :: E (T ()) -> T () -> RE Unflat :: E (T ()) -> T () -> RE UT :: E (T ()) -> T () -> RE IS :: Sh () -> RE ES :: Sh () -> RE instance GHC.Internal.Generics.Generic Ty.M.RE instance Control.DeepSeq.NFData Ty.M.RE instance Prettyprinter.Internal.Pretty Ty.M.RE module Ty.Clone cloneT :: Int -> T a -> (Int, T a, IntMap Int) module Ty data TyE a tyClosed :: Int -> E a -> Either (TyE a) (E (T ()), [(Nm a, C)], Int) match :: (Typeable a, Pretty a) => T a -> T a -> Subst a aT :: Subst a -> T a -> T a rwArr :: T a -> T a instance (Prettyprinter.Internal.Pretty a, GHC.Internal.Data.Typeable.Internal.Typeable a) => GHC.Internal.Exception.Type.Exception (Ty.TyE a) instance GHC.Internal.Base.Functor Ty.Subst instance GHC.Internal.Generics.Generic (Ty.TyE a) instance GHC.Internal.Base.Monoid (Ty.Subst a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Ty.TyE a) instance Prettyprinter.Internal.Pretty Ty.Focus instance Prettyprinter.Internal.Pretty (Ty.Subst a) instance Prettyprinter.Internal.Pretty a => Prettyprinter.Internal.Pretty (Ty.TyE a) instance GHC.Internal.Base.Semigroup (Ty.Subst a) instance GHC.Internal.Show.Show (Ty.Subst a) instance Prettyprinter.Internal.Pretty a => GHC.Internal.Show.Show (Ty.TyE a) module R.Dfn dedfn :: Int -> E a -> (E a, Int) module R data Rs Rs :: Int -> IntMap Int -> Rs [max_] :: Rs -> Int [bound] :: Rs -> IntMap Int class HasRs a rename :: HasRs a => Lens' a Rs maxLens :: Lens' Rs Int rG :: Int -> E a -> (E a, Int) rE :: forall s (m :: Type -> Type) a. (HasRs s, Monad m) => E a -> StateT s m (E a) instance R.HasRs R.Rs module R.R type RM = State Rs nextU :: Text -> a -> RM (Nm a) runM :: Int -> RM a -> (a, Int) module Parser.Rw rewrite :: E a -> E a module CGen data CType CR :: CType CI :: CType CB :: CType Af :: CType Ai :: CType Ab :: CType data TTE HO :: TTE Poly :: TTE FArg :: TTE ArrFn :: TTE tCTy :: T a -> Either TTE ([CType], CType) pCty :: Text -> T a -> Either TTE (Doc ann) instance GHC.Internal.Exception.Type.Exception CGen.TTE instance Prettyprinter.Internal.Pretty CGen.CF instance Prettyprinter.Internal.Pretty CGen.CType instance Prettyprinter.Internal.Pretty CGen.TTE instance GHC.Internal.Show.Show CGen.TTE module C.Trans writeC :: E (T ()) -> ([CS ()], LSt, AsmData, IntMap Temp) instance (GHC.Internal.Show.Show a, GHC.Internal.Show.Show b) => GHC.Internal.Show.Show (C.Trans.RI a b) module A.Opt optA :: E (T ()) -> RM (E (T ())) module A.Eta η :: E (T ()) -> RM (E (T ())) module L alexMonadScan :: Alex Tok alexInitUserState :: AlexUserState withAlexSt :: ByteString -> AlexUserState -> Alex a -> Either String (AlexUserState, a) freshName :: Text -> Alex (Nm AlexPosn) newIdent :: AlexPosn -> Text -> AlexUserState -> (AlexUserState, Nm AlexPosn) data AlexPosn AlexPn :: !Int -> !Int -> !Int -> AlexPosn newtype Alex a Alex :: (AlexState -> Either String (AlexState, a)) -> Alex a [unAlex] :: Alex a -> AlexState -> Either String (AlexState, a) data Tok EOF :: AlexPosn -> Tok [loc] :: Tok -> AlexPosn TokSym :: AlexPosn -> !Sym -> Tok [loc] :: Tok -> AlexPosn [sym] :: Tok -> !Sym TokName :: AlexPosn -> !Nm AlexPosn -> Tok [loc] :: Tok -> AlexPosn [_name] :: Tok -> !Nm AlexPosn TokIx :: AlexPosn -> !Int -> Tok [loc] :: Tok -> AlexPosn [six] :: Tok -> !Int TokB :: AlexPosn -> !Builtin -> Tok [loc] :: Tok -> AlexPosn [_builtin] :: Tok -> !Builtin TokResVar :: AlexPosn -> !Var -> Tok [loc] :: Tok -> AlexPosn [_var] :: Tok -> !Var TokInt :: AlexPosn -> !Integer -> Tok [loc] :: Tok -> AlexPosn [int] :: Tok -> !Integer TokFloat :: AlexPosn -> !Double -> Tok [loc] :: Tok -> AlexPosn [float] :: Tok -> !Double data Sym Plus :: Sym Minus :: Sym Fold :: Sym Foldl :: Sym Percent :: Sym Times :: Sym Semicolon :: Sym Bind :: Sym Pow :: Sym LSqBracket :: Sym RSqBracket :: Sym LBrace :: Sym RBrace :: Sym IxTimes :: Sym LParen :: Sym RParen :: Sym Lam :: Sym Dot :: Sym Caret :: Sym Quot :: Sym Zip :: Sym Comma :: Sym Underscore :: Sym QuestionMark :: Sym Colon :: Sym CondSplit :: Sym Cor :: Sym ArrL :: Sym ArrR :: Sym SymLog :: Sym LBind :: Sym PolyBind :: Sym LRank :: Sym Compose :: Sym Arrow :: Sym Sig :: Sym MaxS :: Sym MinS :: Sym DIS :: Sym Succ :: Sym Conv :: Sym Access :: !Int -> Sym [iat] :: Sym -> !Int TSig :: Sym Cons :: Sym Snoc :: Sym Do :: Sym Tensor :: Sym Transp :: Sym PlusPlus :: Sym Rotate :: Sym Last :: Sym LastM :: Sym Head :: Sym HeadM :: Sym Tail :: Sym TailM :: Sym Init :: Sym InitM :: Sym Geq :: Sym Gt :: Sym Eq :: Sym Neq :: Sym Leq :: Sym Lt :: Sym FoldA :: Sym FoldS :: Sym Tilde :: Sym Cyc :: Sym A1 :: Sym Mod :: Sym AtDot :: Sym Eye :: Sym Para :: Sym Weier :: Sym Ice :: Sym B :: Sym Sharp :: Sym And :: Sym Or :: Sym Xor :: Sym Not :: Sym Sr :: Sym Sl :: Sym IDiv :: Sym Inv :: Sym Therefore :: Sym data Builtin BuiltinFRange :: Builtin BuiltinIota :: Builtin BuiltinFloor :: Builtin BuiltinE :: Builtin BuiltinI :: Builtin BuiltinF :: Builtin BuiltinTrue :: Builtin BuiltinFalse :: Builtin BuiltinSqrt :: Builtin BuiltinPi :: Builtin BuiltinGen :: Builtin BuiltinRep :: Builtin BuiltinScan :: Builtin BuiltinCons :: Builtin BuiltinNil :: Builtin BuiltinMMul :: Builtin BuiltinArr :: Builtin BuiltinInt :: Builtin BuiltinFloat :: Builtin BuiltinT :: Builtin BuiltinR :: Builtin BuiltinSin :: Builtin BuiltinCos :: Builtin BuiltinScanS :: Builtin BuiltinTan :: Builtin BuiltinVMul :: Builtin BuiltinCyc :: Builtin BuiltinOdd :: Builtin BuiltinEven :: Builtin BuiltinAbs :: Builtin BuiltinD :: Builtin BuiltinVec :: Builtin BuiltinM :: Builtin BuiltinBool :: Builtin -- | Reserved/special variables data Var VarX :: Var VarY :: Var type AlexUserState = (Int, Map Text Int, IntMap Nm AlexPosn) instance GHC.Internal.Base.Applicative L.Alex instance GHC.Classes.Eq L.AlexPosn instance GHC.Internal.Base.Functor L.Alex instance GHC.Internal.Generics.Generic L.AlexPosn instance GHC.Internal.Generics.Generic L.Builtin instance GHC.Internal.Generics.Generic L.Sym instance GHC.Internal.Generics.Generic L.Tok instance GHC.Internal.Generics.Generic L.Var instance GHC.Internal.Base.Monad L.Alex instance Control.DeepSeq.NFData L.AlexPosn instance Control.DeepSeq.NFData L.Builtin instance Control.DeepSeq.NFData L.Sym instance Control.DeepSeq.NFData L.Tok instance Control.DeepSeq.NFData L.Var instance GHC.Classes.Ord L.AlexPosn instance Prettyprinter.Internal.Pretty L.AlexPosn instance Prettyprinter.Internal.Pretty L.Builtin instance Prettyprinter.Internal.Pretty L.Sym instance Prettyprinter.Internal.Pretty L.Tok instance Prettyprinter.Internal.Pretty L.Var instance GHC.Internal.Show.Show L.AlexPosn module Parser parseWithMaxCtx :: AlexUserState -> ByteString -> Either ParseE (Int, E AlexPosn) data ParseE Unexpected :: Tok -> ParseE LexErr :: String -> ParseE instance GHC.Internal.Exception.Type.Exception Parser.ParseE instance GHC.Internal.Generics.Generic Parser.ParseE instance Control.DeepSeq.NFData Parser.ParseE instance Prettyprinter.Internal.Pretty Parser.ParseE instance GHC.Internal.Show.Show Parser.ParseE module I inline :: Int -> E (T ()) -> (E (T ()), Int) β :: Int -> E (T ()) -> (E (T ()), Int) instance R.HasRs (I.ISt a) module P data Err a PErr :: ParseE -> Err a TyErr :: TyE a -> Err a RErr :: RE -> Err a type CCtx = (Int, Int, Int, Int) tyParse :: ByteString -> Either (Err AlexPosn) (E (T ()), Int) tyParseCtx :: AlexUserState -> ByteString -> Either (Err AlexPosn) (E (T ()), Int) tyExpr :: ByteString -> Either (Err AlexPosn) (Doc ann) tyOf :: ByteString -> Either (Err AlexPosn) (T (), [(Nm AlexPosn, C)]) tyC :: Int -> E a -> Either (Err a) (E (T ()), [(Nm a, C)], Int) getTy :: ByteString -> Either (Err AlexPosn) (T (), [(Nm AlexPosn, C)]) parseInline :: ByteString -> Either (Err AlexPosn) (E (T ()), Int) parseRename :: ByteString -> Either ParseE (E AlexPosn, Int) rwP :: AlexUserState -> ByteString -> Either ParseE (E AlexPosn, Int) opt :: ByteString -> Either (Err AlexPosn) (E (T ())) ir :: ByteString -> Either (Err AlexPosn) ([Stmt], AsmData, WSt) cmm :: ByteString -> Either (Err AlexPosn) ([CS Liveness], AsmData) eDumpC :: Int -> E a -> Either (Err a) (Doc ann) eDumpIR :: Int -> E a -> Either (Err a) (Doc ann) aarch64 :: ByteString -> Either (Err AlexPosn) (AsmData, [AArch64 AReg FAReg F2Reg ()]) as :: Text -> ByteString -> Doc ann x86G :: ByteString -> Either (Err AlexPosn) (AsmData, [X86 X86Reg FX86Reg F2X86 ()]) eDumpX86 :: Int -> E a -> Either (Err a) (Doc ann) eDumpAarch64 :: Int -> E a -> Either (Err a) (Doc ann) ex86G :: Int -> E a -> Either (Err a) (AsmData, [X86 X86Reg FX86Reg F2X86 ()]) eAarch64 :: Int -> E a -> Either (Err a) (AsmData, [AArch64 AReg FAReg F2Reg ()]) bytes :: ByteString -> Either (Err AlexPosn) ByteString funP :: ByteString -> IO (FunPtr a, Maybe (Ptr Word64)) aFunP :: ByteString -> IO (FunPtr a, Maybe (Ptr Word64)) eFunP :: (Pretty a, Typeable a) => Int -> CCtx -> E a -> IO (Int, FunPtr b, Maybe (Ptr Word64)) eAFunP :: (Pretty a, Typeable a) => Int -> (CCtx, MCtx) -> E a -> IO (Int, FunPtr b, Maybe (Ptr Word64)) ctxFunP :: CCtx -> ByteString -> IO (Int, FunPtr a, Maybe (Ptr Word64)) actxFunP :: (CCtx, MCtx) -> ByteString -> IO (Int, FunPtr a, Maybe (Ptr Word64)) instance (Prettyprinter.Internal.Pretty a, GHC.Internal.Data.Typeable.Internal.Typeable a) => GHC.Internal.Exception.Type.Exception (P.Err a) instance GHC.Internal.Generics.Generic (P.Err a) instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (P.Err a) instance Prettyprinter.Internal.Pretty a => Prettyprinter.Internal.Pretty (P.Err a) instance Prettyprinter.Internal.Pretty a => GHC.Internal.Show.Show (P.Err a) module Dbg dumpAAbs :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpAarch64 :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpAAss :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpX86G :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpX86Abs :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpX86Liveness :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpC :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpCI :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpIR :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpDomTree :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpLoop :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpX86Intervals :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpALiveness :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpAIntervals :: ByteString -> Either (Err AlexPosn) (Doc ann) dumpX86Ass :: ByteString -> Either (Err AlexPosn) (Doc ann) printParsed :: ByteString -> Doc ann printTypes :: ByteString -> Doc ann topt :: ByteString -> Either (Err AlexPosn) (Doc ann) nasm :: Text -> ByteString -> Doc ann pBIO :: ByteString -> IO () dtxt :: ByteString -> IO (Either (Err AlexPosn) Text) dAtxt :: ByteString -> IO (Either (Err AlexPosn) Text) edAtxt :: Int -> E a -> IO (Either (Err a) Text) eDtxt :: Int -> E a -> IO (Either (Err a) Text)