| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
SPARC.Instr
- data RI
- riZero :: RI -> Bool
- fpRelEA :: Int -> Reg -> Instr
- moveSp :: Int -> Instr
- isUnconditionalJump :: Instr -> Bool
- data Instr
- = COMMENT FastString
- | LDATA Section CmmStatics
- | NEWBLOCK BlockId
- | DELTA Int
- | LD Size AddrMode Reg
- | ST Size Reg AddrMode
- | ADD Bool Bool Reg RI Reg
- | SUB Bool Bool Reg RI Reg
- | UMUL Bool Reg RI Reg
- | SMUL Bool Reg RI Reg
- | UDIV Bool Reg RI Reg
- | SDIV Bool Reg RI Reg
- | RDY Reg
- | WRY Reg 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 BlockId
- | BF Cond Bool BlockId
- | JMP AddrMode
- | JMP_TBL AddrMode [Maybe BlockId] CLabel
- | CALL (Either Imm Reg) Int Bool
- maxSpillSlots :: DynFlags -> Int
Documentation
Check if a RI represents a zero value. - a literal zero - register %g0, which is always zero.
fpRelEA :: Int -> Reg -> Instr
Calculate the effective address which would be used by the corresponding fpRel sequence.
isUnconditionalJump :: Instr -> Bool
An instruction that will cause the one after it never to be exectuted
data Instr
SPARC instruction set. Not complete. This is only the ones we need.
Constructors
| COMMENT FastString | |
| LDATA Section CmmStatics | |
| NEWBLOCK BlockId | |
| DELTA Int | |
| LD Size AddrMode Reg | |
| ST Size Reg AddrMode | |
| ADD Bool Bool Reg RI Reg | |
| SUB Bool Bool Reg RI Reg | |
| UMUL Bool Reg RI Reg | |
| SMUL Bool Reg RI Reg | |
| UDIV Bool Reg RI Reg | |
| SDIV Bool Reg RI Reg | |
| RDY Reg | |
| WRY Reg 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 BlockId | |
| BF Cond Bool BlockId | |
| JMP AddrMode | |
| JMP_TBL AddrMode [Maybe BlockId] CLabel | |
| CALL (Either Imm Reg) Int Bool |
Instances
| Instruction Instr | instance for sparc instruction set |
maxSpillSlots :: DynFlags -> Int
The maximum number of spill slots available on the C stack. If we use up all of the slots, then we're screwed.
Why do we reserve 64 bytes, instead of using the whole thing?? -- BL 20090215