Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/branches/SMLNJ/src/MLRISC/hppa/instructions/hppaInstr.sml
ViewVC logotype

View of /sml/branches/SMLNJ/src/MLRISC/hppa/instructions/hppaInstr.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 411 - (download) (annotate)
Fri Sep 3 00:25:03 1999 UTC (19 years, 11 months ago) by monnier
File size: 9999 byte(s)
version 110.19
(*
 * This file was automatically generated by MDGen
 * from the machine description file "hppa/hppa.md".
 *)


signature HPPAINSTR =
sig
   structure C : HPPACELLS
   structure Constant: CONSTANT
   structure Region : REGION
   datatype fmt =
     SGL
   | DBL
   | QUAD
   datatype loadi =
     LDW
   | LDH
   | LDB
   datatype store =
     STW
   | STH
   | STB
   datatype cmplt =
     ADDR
   | ADDR_S
   | ADDR_M
   | ADDR_SM
   datatype load =
     LDWX
   | LDWX_S
   | LDWX_M
   | LDWX_SM
   | LDHX
   | LDHX_S
   | LDHX_M
   | LDHX_SM
   | LDBX
   | LDBX_M
   datatype cmp =
     COMBT
   | COMBF
   datatype cmpi =
     COMIBT
   | COMIBF
   datatype arith =
     ADD
   | ADDL
   | ADDO
   | SH1ADD
   | SH1ADDL
   | SH1ADDO
   | SH2ADD
   | SH2ADDL
   | SH2ADDO
   | SH3ADD
   | SH3ADDL
   | SH3ADDO
   | SUB
   | SUBO
   | OR
   | XOR
   | AND
   | ANDCM
   datatype arithi =
     ADDI
   | ADDIO
   | ADDIL
   | SUBI
   | SUBIO
   datatype shiftv =
     VEXTRU
   | VEXTRS
   | ZVDEP
   datatype shift =
     EXTRU
   | EXTRS
   | ZDEP
   datatype farith =
     FADD_S
   | FADD_D
   | FADD_Q
   | FSUB_S
   | FSUB_D
   | FSUB_Q
   | FMPY_S
   | FMPY_D
   | FMPY_Q
   | FDIV_S
   | FDIV_D
   | FDIV_Q
   | XMPYU
   datatype funary =
     FCPY_S
   | FCPY_D
   | FCPY_Q
   | FABS_S
   | FABS_D
   | FABS_Q
   | FSQRT_S
   | FSQRT_D
   | FSQRT_Q
   | FRND_S
   | FRND_D
   | FRND_Q
   datatype fcnv =
     FCNVFF_SD
   | FCNVFF_SQ
   | FCNVFF_DS
   | FCNVFF_DQ
   | FCNVFF_QS
   | FCNVFF_QD
   | FCNVXF_S
   | FCNVXF_D
   | FCNVXF_Q
   | FCNVFX_S
   | FCNVFX_D
   | FCNVFX_Q
   | FCNVFXT_S
   | FCNVFXT_D
   | FCNVFXT_Q
   datatype fstore =
     FSTDS
   | FSTWS
   datatype fstorex =
     FSTDX
   | FSTDX_S
   | FSTDX_M
   | FSTDX_SM
   | FSTWX
   | FSTWX_S
   | FSTWX_M
   | FSTWX_SM
   datatype floadx =
     FLDDX
   | FLDDX_S
   | FLDDX_M
   | FLDDX_SM
   | FLDWX
   | FLDWX_S
   | FLDWX_M
   | FLDWX_SM
   datatype fload =
     FLDDS
   | FLDWS
   datatype bcond =
     EQ
   | LT
   | LE
   | LTU
   | LEU
   | NE
   | GE
   | GT
   | GTU
   | GEU
   datatype bitcond =
     BSET
   | BCLR
   datatype fcond =
     False_
   | False
   | ?
   | !<=>
   | ==
   | EQT
   | ?=
   | !<>
   | !?>=
   | <
   | ?<
   | !>=
   | !?>
   | <=
   | ?<=
   | !>
   | !?<=
   | >
   | ?>
   | !<=
   | !?<
   | >=
   | ?>=
   | !<
   | !?=
   | <>
   | !=
   | NET
   | !?
   | <=>
   | True_
   | True
   datatype scond =
     ALL_ZERO
   | LEFTMOST_ONE
   | LEFTMOST_ZERO
   | RIGHTMOST_ONE
   | RIGHTMOST_ZERO
   datatype field_selector =
     F
   | S
   | D
   | R
   | T
   | P
   datatype ea =
     Direct of int
   | FDirect of int
   | Displace of {base:int, disp:int}
   datatype operand =
     IMMED of int
   | LabExp of (LabelExp.labexp * field_selector)
   | HILabExp of (LabelExp.labexp * field_selector)
   | LOLabExp of (LabelExp.labexp * field_selector)
   | ConstOp of Constant.const
   datatype instruction =
     LOADI of {li:loadi, r:int, i:operand, t:int, mem:Region.region}
   | LOAD of {l:load, r1:int, r2:int, t:int, mem:Region.region}
   | STORE of {st:store, b:int, d:operand, r:int, mem:Region.region}
   | ARITH of {a:arith, r1:int, r2:int, t:int}
   | ARITHI of {ai:arithi, i:operand, r:int, t:int}
   | COMCLR_LDO of {cc:bcond, r1:int, r2:int, t1:int, i:int, b:int, t2:int
     }
   | SHIFTV of {sv:shiftv, r:int, len:int, t:int}
   | SHIFT of {s:shift, r:int, p:int, len:int, t:int}
   | BCOND of {cmp:cmp, bc:bcond, r1:int, r2:int, n:bool, nop:bool, t:Label.label
     , f:Label.label}
   | BCONDI of {cmpi:cmpi, bc:bcond, i:int, r2:int, n:bool, nop:bool, t:Label.label
     , f:Label.label}
   | BB of {bc:bitcond, r:int, p:int, n:bool, nop:bool, t:Label.label, f:Label.label
     }
   | B of {lab:Label.label, n:bool}
   | BV of {x:int, b:int, labs:Label.label list, n:bool}
   | BLR of {x:int, t:int, labs:Label.label list, n:bool}
   | BL of {x:operand, t:int, defs:C.cellset, uses:C.cellset, n:bool}
   | BLE of {d:operand, b:int, sr:int, t:int, defs:C.cellset, uses:C.cellset
     , mem:Region.region}
   | LDIL of {i:operand, t:int}
   | LDO of {i:operand, b:int, t:int}
   | MTCTL of {r:int, t:int}
   | FSTORE of {fst:fstore, b:int, d:int, r:int, mem:Region.region}
   | FSTOREX of {fstx:fstorex, b:int, x:int, r:int, mem:Region.region}
   | FLOAD of {fl:fload, b:int, d:int, t:int, mem:Region.region}
   | FLOADX of {flx:floadx, b:int, x:int, t:int, mem:Region.region}
   | FARITH of {fa:farith, r1:int, r2:int, t:int}
   | FUNARY of {fu:funary, f:int, t:int}
   | FCNV of {fcnv:fcnv, f:int, t:int}
   | FBRANCH of {cc:fcond, fmt:fmt, f1:int, f2:int, t:Label.label, f:Label.label
     , n:bool, long:bool}
   | BREAK of {code1:int, code2:int}
   | NOP
   | COPY of {dst:int list, src:int list, impl:instruction list option ref
     , tmp:ea option}
   | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
     , tmp:ea option}
   | ANNOTATION of {i:instruction, a:Annotations.annotation}
   | GROUP of Annotations.annotation
end

functor HppaInstr(structure Const : CONSTANT
                  structure Region : REGION
                 ) : HPPAINSTR =
struct
   structure C = HppaCells
   structure Region = Region
   structure Constant = Const
   datatype fmt =
     SGL
   | DBL
   | QUAD
   datatype loadi =
     LDW
   | LDH
   | LDB
   datatype store =
     STW
   | STH
   | STB
   datatype cmplt =
     ADDR
   | ADDR_S
   | ADDR_M
   | ADDR_SM
   datatype load =
     LDWX
   | LDWX_S
   | LDWX_M
   | LDWX_SM
   | LDHX
   | LDHX_S
   | LDHX_M
   | LDHX_SM
   | LDBX
   | LDBX_M
   datatype cmp =
     COMBT
   | COMBF
   datatype cmpi =
     COMIBT
   | COMIBF
   datatype arith =
     ADD
   | ADDL
   | ADDO
   | SH1ADD
   | SH1ADDL
   | SH1ADDO
   | SH2ADD
   | SH2ADDL
   | SH2ADDO
   | SH3ADD
   | SH3ADDL
   | SH3ADDO
   | SUB
   | SUBO
   | OR
   | XOR
   | AND
   | ANDCM
   datatype arithi =
     ADDI
   | ADDIO
   | ADDIL
   | SUBI
   | SUBIO
   datatype shiftv =
     VEXTRU
   | VEXTRS
   | ZVDEP
   datatype shift =
     EXTRU
   | EXTRS
   | ZDEP
   datatype farith =
     FADD_S
   | FADD_D
   | FADD_Q
   | FSUB_S
   | FSUB_D
   | FSUB_Q
   | FMPY_S
   | FMPY_D
   | FMPY_Q
   | FDIV_S
   | FDIV_D
   | FDIV_Q
   | XMPYU
   datatype funary =
     FCPY_S
   | FCPY_D
   | FCPY_Q
   | FABS_S
   | FABS_D
   | FABS_Q
   | FSQRT_S
   | FSQRT_D
   | FSQRT_Q
   | FRND_S
   | FRND_D
   | FRND_Q
   datatype fcnv =
     FCNVFF_SD
   | FCNVFF_SQ
   | FCNVFF_DS
   | FCNVFF_DQ
   | FCNVFF_QS
   | FCNVFF_QD
   | FCNVXF_S
   | FCNVXF_D
   | FCNVXF_Q
   | FCNVFX_S
   | FCNVFX_D
   | FCNVFX_Q
   | FCNVFXT_S
   | FCNVFXT_D
   | FCNVFXT_Q
   datatype fstore =
     FSTDS
   | FSTWS
   datatype fstorex =
     FSTDX
   | FSTDX_S
   | FSTDX_M
   | FSTDX_SM
   | FSTWX
   | FSTWX_S
   | FSTWX_M
   | FSTWX_SM
   datatype floadx =
     FLDDX
   | FLDDX_S
   | FLDDX_M
   | FLDDX_SM
   | FLDWX
   | FLDWX_S
   | FLDWX_M
   | FLDWX_SM
   datatype fload =
     FLDDS
   | FLDWS
   datatype bcond =
     EQ
   | LT
   | LE
   | LTU
   | LEU
   | NE
   | GE
   | GT
   | GTU
   | GEU
   datatype bitcond =
     BSET
   | BCLR
   datatype fcond =
     False_
   | False
   | ?
   | !<=>
   | ==
   | EQT
   | ?=
   | !<>
   | !?>=
   | <
   | ?<
   | !>=
   | !?>
   | <=
   | ?<=
   | !>
   | !?<=
   | >
   | ?>
   | !<=
   | !?<
   | >=
   | ?>=
   | !<
   | !?=
   | <>
   | !=
   | NET
   | !?
   | <=>
   | True_
   | True
   datatype scond =
     ALL_ZERO
   | LEFTMOST_ONE
   | LEFTMOST_ZERO
   | RIGHTMOST_ONE
   | RIGHTMOST_ZERO
   datatype field_selector =
     F
   | S
   | D
   | R
   | T
   | P
   datatype ea =
     Direct of int
   | FDirect of int
   | Displace of {base:int, disp:int}
   datatype operand =
     IMMED of int
   | LabExp of (LabelExp.labexp * field_selector)
   | HILabExp of (LabelExp.labexp * field_selector)
   | LOLabExp of (LabelExp.labexp * field_selector)
   | ConstOp of Constant.const
   datatype instruction =
     LOADI of {li:loadi, r:int, i:operand, t:int, mem:Region.region}
   | LOAD of {l:load, r1:int, r2:int, t:int, mem:Region.region}
   | STORE of {st:store, b:int, d:operand, r:int, mem:Region.region}
   | ARITH of {a:arith, r1:int, r2:int, t:int}
   | ARITHI of {ai:arithi, i:operand, r:int, t:int}
   | COMCLR_LDO of {cc:bcond, r1:int, r2:int, t1:int, i:int, b:int, t2:int
     }
   | SHIFTV of {sv:shiftv, r:int, len:int, t:int}
   | SHIFT of {s:shift, r:int, p:int, len:int, t:int}
   | BCOND of {cmp:cmp, bc:bcond, r1:int, r2:int, n:bool, nop:bool, t:Label.label
     , f:Label.label}
   | BCONDI of {cmpi:cmpi, bc:bcond, i:int, r2:int, n:bool, nop:bool, t:Label.label
     , f:Label.label}
   | BB of {bc:bitcond, r:int, p:int, n:bool, nop:bool, t:Label.label, f:Label.label
     }
   | B of {lab:Label.label, n:bool}
   | BV of {x:int, b:int, labs:Label.label list, n:bool}
   | BLR of {x:int, t:int, labs:Label.label list, n:bool}
   | BL of {x:operand, t:int, defs:C.cellset, uses:C.cellset, n:bool}
   | BLE of {d:operand, b:int, sr:int, t:int, defs:C.cellset, uses:C.cellset
     , mem:Region.region}
   | LDIL of {i:operand, t:int}
   | LDO of {i:operand, b:int, t:int}
   | MTCTL of {r:int, t:int}
   | FSTORE of {fst:fstore, b:int, d:int, r:int, mem:Region.region}
   | FSTOREX of {fstx:fstorex, b:int, x:int, r:int, mem:Region.region}
   | FLOAD of {fl:fload, b:int, d:int, t:int, mem:Region.region}
   | FLOADX of {flx:floadx, b:int, x:int, t:int, mem:Region.region}
   | FARITH of {fa:farith, r1:int, r2:int, t:int}
   | FUNARY of {fu:funary, f:int, t:int}
   | FCNV of {fcnv:fcnv, f:int, t:int}
   | FBRANCH of {cc:fcond, fmt:fmt, f1:int, f2:int, t:Label.label, f:Label.label
     , n:bool, long:bool}
   | BREAK of {code1:int, code2:int}
   | NOP
   | COPY of {dst:int list, src:int list, impl:instruction list option ref
     , tmp:ea option}
   | FCOPY of {dst:int list, src:int list, impl:instruction list option ref
     , tmp:ea option}
   | ANNOTATION of {i:instruction, a:Annotations.annotation}
   | GROUP of Annotations.annotation
end


root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0