{-# GHC_PRAGMA INTERFACE VERSION 5 #-} interface AlphaCode where import AbsCSyn(MagicId) import AsmRegAlloc(MachineCode, MachineRegisters, Reg) import BitSet(BitSet) import CLabelInfo(CLabel) import CharSeq(CSeq) import FiniteMap(FiniteMap) import Maybes(Labda) import OrdList(OrdList) import PreludePS(_PackedString) import Pretty(PprStyle) import PrimKind(PrimKind) import Stix(CodeSegment) import UniqFM(UniqFM) import UniqSet(UniqSet(..)) import Unique(Unique) data Addr = AddrImm Imm | AddrReg Reg | AddrRegImm Reg Imm type AlphaCode = OrdList AlphaInstr data AlphaInstr = LD Size Reg Addr | LDA Reg Addr | LDAH Reg Addr | LDGP Reg Addr | LDI Size Reg Imm | ST Size Reg Addr | CLR Reg | ABS Size RI Reg | NEG Size Bool RI Reg | ADD Size Bool Reg RI Reg | SADD Size Size Reg RI Reg | SUB Size Bool Reg RI Reg | SSUB Size Size Reg RI Reg | MUL Size Bool Reg RI Reg | DIV Size Bool Reg RI Reg | REM Size Bool Reg RI Reg | NOT RI Reg | AND Reg RI Reg | ANDNOT Reg RI Reg | OR Reg RI Reg | ORNOT Reg RI Reg | XOR Reg RI Reg | XORNOT Reg RI Reg | SLL Reg RI Reg | SRL Reg RI Reg | SRA Reg RI Reg | ZAP Reg RI Reg | ZAPNOT Reg RI Reg | NOP | CMP Cond Reg RI Reg | FCLR Reg | FABS Reg Reg | FNEG Size Reg Reg | FADD Size Reg Reg Reg | FDIV Size Reg Reg Reg | FMUL Size Reg Reg Reg | FSUB Size Reg Reg Reg | CVTxy Size Size Reg Reg | FCMP Size Cond Reg Reg Reg | FMOV Reg Reg | BI Cond Reg Imm | BF Cond Reg Imm | BR Imm | JMP Reg Addr Int | BSR Imm Int | JSR Reg Addr Int | LABEL CLabel | FUNBEGIN CLabel | FUNEND CLabel | COMMENT _PackedString | SEGMENT CodeSegment | ASCII Bool [Char] | DATA Size [Imm] data AlphaRegs data MagicId data Reg data BitSet data CLabel data CSeq data Cond = EQ | LT | LE | ULT | ULE | NE | GT | GE | ALWAYS | NEVER data FiniteMap a b data Imm = ImmInt Int | ImmInteger Integer | ImmCLbl CLabel | ImmLab CSeq data OrdList a data PrimKind data CodeSegment data RI = RIReg Reg | RIImm Imm data Size = B | BU | W | WU | L | Q | FF | DF | GF | SF | TF data UniqFM a type UniqSet a = UniqFM a data Unique argRegs :: [(Reg, Reg)] baseRegOffset :: MagicId -> Int callerSaves :: MagicId -> Bool f0 :: Reg freeRegs :: [Reg] gp :: Reg kindToSize :: PrimKind -> Size printLabeledCodes :: PprStyle -> [AlphaInstr] -> CSeq pv :: Reg ra :: Reg reservedRegs :: [Int] sp :: Reg stgRegMap :: MagicId -> Labda Reg strImmLab :: [Char] -> Imm v0 :: Reg zero :: Reg instance MachineCode AlphaInstr instance MachineRegisters AlphaRegs