[project @ 1996-02-06 14:32:22 by dnt]
[ghc-hetmet.git] / ghc / compiler / nativeGen / SparcCode.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface SparcCode where
3 import AbsCSyn(MagicId)
4 import AsmRegAlloc(MachineCode, MachineRegisters, Reg)
5 import BitSet(BitSet)
6 import CLabelInfo(CLabel)
7 import CharSeq(CSeq)
8 import FiniteMap(FiniteMap)
9 import Maybes(Labda)
10 import OrdList(OrdList)
11 import PreludePS(_PackedString)
12 import Pretty(PprStyle)
13 import PrimKind(PrimKind)
14 import Stix(CodeSegment)
15 import UniqFM(UniqFM)
16 import UniqSet(UniqSet(..))
17 import Unique(Unique)
18 data Addr   = AddrRegReg Reg Reg | AddrRegImm Reg Imm
19 data MagicId 
20 data Reg 
21 data BitSet 
22 data CLabel 
23 data CSeq 
24 data FiniteMap a b 
25 data OrdList a 
26 data PrimKind 
27 data CodeSegment 
28 data Cond   = ALWAYS | NEVER | GEU | LU | EQ | GT | GE | GU | LT | LE | LEU | NE | NEG | POS | VC | VS
29 data Imm   = ImmInt Int | ImmInteger Integer | ImmCLbl CLabel | ImmLab CSeq | ImmLit CSeq | LO Imm | HI Imm
30 data RI   = RIReg Reg | RIImm Imm
31 data Size   = SB | HW | UB | UHW | W | D | F | DF
32 type SparcCode = OrdList SparcInstr
33 data SparcInstr   = LD Size Addr Reg | ST Size Reg Addr | ADD Bool Bool Reg RI Reg | SUB Bool Bool Reg RI Reg | AND Bool Reg RI Reg | ANDN Bool Reg RI Reg | OR Bool Reg RI Reg | ORN Bool Reg RI Reg | XOR Bool Reg RI Reg | XNOR Bool Reg RI Reg | SLL Reg RI Reg | SRL Reg RI Reg | SRA Reg RI Reg | SETHI Imm Reg | NOP | FABS Size Reg Reg | FADD Size Reg Reg Reg | FCMP Bool Size Reg Reg | FDIV Size Reg Reg Reg | FMOV Size Reg Reg | FMUL Size Reg Reg Reg | FNEG Size Reg Reg | FSQRT Size Reg Reg | FSUB Size Reg Reg Reg | FxTOy Size Size Reg Reg | BI Cond Bool Imm | BF Cond Bool Imm | JMP Addr | CALL Imm Int Bool | LABEL CLabel | COMMENT _PackedString | SEGMENT CodeSegment | ASCII Bool [Char] | DATA Size [Imm]
34 data SparcRegs 
35 data UniqFM a 
36 type UniqSet a = UniqFM a
37 data Unique 
38 argRegs :: [Reg]
39 baseRegOffset :: MagicId -> Int
40 callerSaves :: MagicId -> Bool
41 f0 :: Reg
42 fp :: Reg
43 freeRegs :: [Reg]
44 g0 :: Reg
45 is13Bits :: Integral a => a -> Bool
46 kindToSize :: PrimKind -> Size
47 o0 :: Reg
48 offset :: Addr -> Int -> Labda Addr
49 printLabeledCodes :: PprStyle -> [SparcInstr] -> CSeq
50 reservedRegs :: [Int]
51 sp :: Reg
52 stgRegMap :: MagicId -> Labda Reg
53 strImmLit :: [Char] -> Imm
54 instance MachineCode SparcInstr
55 instance MachineRegisters SparcRegs
56