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/trunk/src/MLRISC/alpha/instructions/alphaInstr.sml
ViewVC logotype

View of /sml/trunk/src/MLRISC/alpha/instructions/alphaInstr.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 984 - (download) (annotate)
Wed Nov 21 19:00:08 2001 UTC (18 years, 7 months ago) by george
File size: 10332 byte(s)
  Implemented a complete redesign of MLRISC pseudo-ops. Now there
  ought to never be any question of incompatabilities with
  pseudo-op syntax expected by host assemblers.

  For now, only modules supporting GAS syntax are implemented
  but more should follow, such as MASM, and vendor assembler
  syntax, e.g. IBM as, Sun as, etc.
(*
 * WARNING: This file was automatically generated by MDLGen (v3.0)
 * from the machine description file "alpha/alpha.mdl".
 * DO NOT EDIT this file directly
 *)


signature ALPHAINSTR =
sig
   structure C : ALPHACELLS
   structure T : MLTREE
   structure Constant: CONSTANT
   structure Region : REGION
      sharing Constant = T.Constant
      sharing Region = T.Region
   datatype ea =
     Direct of CellsBasis.cell
   | FDirect of CellsBasis.cell
   | Displace of {base:CellsBasis.cell, disp:int}
   datatype operand =
     REGop of CellsBasis.cell
   | IMMop of int
   | HILABop of T.labexp
   | LOLABop of T.labexp
   | LABop of T.labexp
   datatype branch =
     BR
   | BLBC
   | BEQ
   | BLT
   | BLE
   | BLBS
   | BNE
   | BGE
   | BGT
   datatype fbranch =
     FBEQ
   | FBLT
   | FBLE
   | FBNE
   | FBGE
   | FBGT
   datatype load =
     LDB
   | LDW
   | LDBU
   | LDWU
   | LDL
   | LDL_L
   | LDQ
   | LDQ_L
   | LDQ_U
   datatype store =
     STB
   | STW
   | STL
   | STQ
   | STQ_U
   datatype fload =
     LDF
   | LDG
   | LDS
   | LDT
   datatype fstore =
     STF
   | STG
   | STS
   | STT
   datatype operate =
     ADDL
   | ADDQ
   | CMPBGE
   | CMPEQ
   | CMPLE
   | CMPLT
   | CMPULE
   | CMPULT
   | SUBL
   | SUBQ
   | S4ADDL
   | S4ADDQ
   | S4SUBL
   | S4SUBQ
   | S8ADDL
   | S8ADDQ
   | S8SUBL
   | S8SUBQ
   | AND
   | BIC
   | BIS
   | EQV
   | ORNOT
   | XOR
   | EXTBL
   | EXTLH
   | EXTLL
   | EXTQH
   | EXTQL
   | EXTWH
   | EXTWL
   | INSBL
   | INSLH
   | INSLL
   | INSQH
   | INSQL
   | INSWH
   | INSWL
   | MSKBL
   | MSKLH
   | MSKLL
   | MSKQH
   | MSKQL
   | MSKWH
   | MSKWL
   | SLL
   | SRA
   | SRL
   | ZAP
   | ZAPNOT
   | MULL
   | MULQ
   | UMULH
   datatype cmove =
     CMOVEQ
   | CMOVLBC
   | CMOVLBS
   | CMOVGE
   | CMOVGT
   | CMOVLE
   | CMOVLT
   | CMOVNE
   datatype pseudo_op =
     DIVL
   | DIVLU
   | DIVQ
   | DIVQU
   | REML
   | REMLU
   | REMQ
   | REMQU
   datatype operateV =
     ADDLV
   | ADDQV
   | SUBLV
   | SUBQV
   | MULLV
   | MULQV
   datatype funary =
     CVTLQ
   | CVTQL
   | CVTQLSV
   | CVTQLV
   | CVTQS
   | CVTQSC
   | CVTQT
   | CVTQTC
   | CVTTS
   | CVTTSC
   | CVTST
   | CVTSTS
   | CVTTQ
   | CVTTQC
   datatype foperate =
     CPYS
   | CPYSE
   | CPYSN
   | MF_FPCR
   | MT_FPCR
   | CMPTEQ
   | CMPTLT
   | CMPTLE
   | CMPTUN
   | CMPTEQSU
   | CMPTLTSU
   | CMPTLESU
   | CMPTUNSU
   | ADDS
   | ADDT
   | DIVS
   | DIVT
   | MULS
   | MULT
   | SUBS
   | SUBT
   datatype fcmove =
     FCMOVEQ
   | FCMOVGE
   | FCMOVGT
   | FCMOVLE
   | FCMOVLT
   | FCMOVNE
   datatype foperateV =
     ADDSSUD
   | ADDSSU
   | ADDTSUD
   | ADDTSU
   | DIVSSUD
   | DIVSSU
   | DIVTSUD
   | DIVTSU
   | MULSSUD
   | MULSSU
   | MULTSUD
   | MULTSU
   | SUBSSUD
   | SUBSSU
   | SUBTSUD
   | SUBTSU
   datatype osf_user_palcode =
     BPT
   | BUGCHK
   | CALLSYS
   | GENTRAP
   | IMB
   | RDUNIQUE
   | WRUNIQUE
   type addressing_mode = (CellsBasis.cell * operand)
   datatype instruction =
     DEFFREG of CellsBasis.cell
   | LDA of {r:CellsBasis.cell, b:CellsBasis.cell, d:operand}
   | LDAH of {r:CellsBasis.cell, b:CellsBasis.cell, d:operand}
   | LOAD of {ldOp:load, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, mem:Region.region}
   | STORE of {stOp:store, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, 
        mem:Region.region}
   | FLOAD of {ldOp:fload, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, 
        mem:Region.region}
   | FSTORE of {stOp:fstore, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, 
        mem:Region.region}
   | JMPL of ({r:CellsBasis.cell, b:CellsBasis.cell, d:int} * Label.label list)
   | JSR of {r:CellsBasis.cell, b:CellsBasis.cell, d:int, defs:C.cellset, uses:C.cellset, 
        cutsTo:Label.label list, mem:Region.region}
   | BSR of {r:CellsBasis.cell, lab:Label.label, defs:C.cellset, uses:C.cellset, 
        cutsTo:Label.label list, mem:Region.region}
   | RET of {r:CellsBasis.cell, b:CellsBasis.cell, d:int}
   | BRANCH of {b:branch, r:CellsBasis.cell, lab:Label.label}
   | FBRANCH of {b:fbranch, f:CellsBasis.cell, lab:Label.label}
   | OPERATE of {oper:operate, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell}
   | OPERATEV of {oper:operateV, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell}
   | CMOVE of {oper:cmove, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell}
   | PSEUDOARITH of {oper:pseudo_op, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell, 
        tmps:C.cellset}
   | COPY of {dst:CellsBasis.cell list, src:CellsBasis.cell list, impl:instruction list option ref, 
        tmp:ea option}
   | FCOPY of {dst:CellsBasis.cell list, src:CellsBasis.cell list, impl:instruction list option ref, 
        tmp:ea option}
   | FUNARY of {oper:funary, fb:CellsBasis.cell, fc:CellsBasis.cell}
   | FOPERATE of {oper:foperate, fa:CellsBasis.cell, fb:CellsBasis.cell, fc:CellsBasis.cell}
   | FOPERATEV of {oper:foperateV, fa:CellsBasis.cell, fb:CellsBasis.cell, 
        fc:CellsBasis.cell}
   | FCMOVE of {oper:fcmove, fa:CellsBasis.cell, fb:CellsBasis.cell, fc:CellsBasis.cell}
   | TRAPB
   | CALL_PAL of {code:osf_user_palcode, def:C.cellset, use:C.cellset}
   | ANNOTATION of {i:instruction, a:Annotations.annotation}
   | SOURCE of {}
   | SINK of {}
   | PHI of {}
end

functor AlphaInstr(T: MLTREE
                  ) : ALPHAINSTR =
struct
   structure C = AlphaCells
   structure T = T
   structure Region = T.Region
   structure Constant = T.Constant
   datatype ea =
     Direct of CellsBasis.cell
   | FDirect of CellsBasis.cell
   | Displace of {base:CellsBasis.cell, disp:int}
   datatype operand =
     REGop of CellsBasis.cell
   | IMMop of int
   | HILABop of T.labexp
   | LOLABop of T.labexp
   | LABop of T.labexp
   datatype branch =
     BR
   | BLBC
   | BEQ
   | BLT
   | BLE
   | BLBS
   | BNE
   | BGE
   | BGT
   datatype fbranch =
     FBEQ
   | FBLT
   | FBLE
   | FBNE
   | FBGE
   | FBGT
   datatype load =
     LDB
   | LDW
   | LDBU
   | LDWU
   | LDL
   | LDL_L
   | LDQ
   | LDQ_L
   | LDQ_U
   datatype store =
     STB
   | STW
   | STL
   | STQ
   | STQ_U
   datatype fload =
     LDF
   | LDG
   | LDS
   | LDT
   datatype fstore =
     STF
   | STG
   | STS
   | STT
   datatype operate =
     ADDL
   | ADDQ
   | CMPBGE
   | CMPEQ
   | CMPLE
   | CMPLT
   | CMPULE
   | CMPULT
   | SUBL
   | SUBQ
   | S4ADDL
   | S4ADDQ
   | S4SUBL
   | S4SUBQ
   | S8ADDL
   | S8ADDQ
   | S8SUBL
   | S8SUBQ
   | AND
   | BIC
   | BIS
   | EQV
   | ORNOT
   | XOR
   | EXTBL
   | EXTLH
   | EXTLL
   | EXTQH
   | EXTQL
   | EXTWH
   | EXTWL
   | INSBL
   | INSLH
   | INSLL
   | INSQH
   | INSQL
   | INSWH
   | INSWL
   | MSKBL
   | MSKLH
   | MSKLL
   | MSKQH
   | MSKQL
   | MSKWH
   | MSKWL
   | SLL
   | SRA
   | SRL
   | ZAP
   | ZAPNOT
   | MULL
   | MULQ
   | UMULH
   datatype cmove =
     CMOVEQ
   | CMOVLBC
   | CMOVLBS
   | CMOVGE
   | CMOVGT
   | CMOVLE
   | CMOVLT
   | CMOVNE
   datatype pseudo_op =
     DIVL
   | DIVLU
   | DIVQ
   | DIVQU
   | REML
   | REMLU
   | REMQ
   | REMQU
   datatype operateV =
     ADDLV
   | ADDQV
   | SUBLV
   | SUBQV
   | MULLV
   | MULQV
   datatype funary =
     CVTLQ
   | CVTQL
   | CVTQLSV
   | CVTQLV
   | CVTQS
   | CVTQSC
   | CVTQT
   | CVTQTC
   | CVTTS
   | CVTTSC
   | CVTST
   | CVTSTS
   | CVTTQ
   | CVTTQC
   datatype foperate =
     CPYS
   | CPYSE
   | CPYSN
   | MF_FPCR
   | MT_FPCR
   | CMPTEQ
   | CMPTLT
   | CMPTLE
   | CMPTUN
   | CMPTEQSU
   | CMPTLTSU
   | CMPTLESU
   | CMPTUNSU
   | ADDS
   | ADDT
   | DIVS
   | DIVT
   | MULS
   | MULT
   | SUBS
   | SUBT
   datatype fcmove =
     FCMOVEQ
   | FCMOVGE
   | FCMOVGT
   | FCMOVLE
   | FCMOVLT
   | FCMOVNE
   datatype foperateV =
     ADDSSUD
   | ADDSSU
   | ADDTSUD
   | ADDTSU
   | DIVSSUD
   | DIVSSU
   | DIVTSUD
   | DIVTSU
   | MULSSUD
   | MULSSU
   | MULTSUD
   | MULTSU
   | SUBSSUD
   | SUBSSU
   | SUBTSUD
   | SUBTSU
   datatype osf_user_palcode =
     BPT
   | BUGCHK
   | CALLSYS
   | GENTRAP
   | IMB
   | RDUNIQUE
   | WRUNIQUE
   type addressing_mode = (CellsBasis.cell * operand)
   datatype instruction =
     DEFFREG of CellsBasis.cell
   | LDA of {r:CellsBasis.cell, b:CellsBasis.cell, d:operand}
   | LDAH of {r:CellsBasis.cell, b:CellsBasis.cell, d:operand}
   | LOAD of {ldOp:load, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, mem:Region.region}
   | STORE of {stOp:store, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, 
        mem:Region.region}
   | FLOAD of {ldOp:fload, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, 
        mem:Region.region}
   | FSTORE of {stOp:fstore, r:CellsBasis.cell, b:CellsBasis.cell, d:operand, 
        mem:Region.region}
   | JMPL of ({r:CellsBasis.cell, b:CellsBasis.cell, d:int} * Label.label list)
   | JSR of {r:CellsBasis.cell, b:CellsBasis.cell, d:int, defs:C.cellset, uses:C.cellset, 
        cutsTo:Label.label list, mem:Region.region}
   | BSR of {r:CellsBasis.cell, lab:Label.label, defs:C.cellset, uses:C.cellset, 
        cutsTo:Label.label list, mem:Region.region}
   | RET of {r:CellsBasis.cell, b:CellsBasis.cell, d:int}
   | BRANCH of {b:branch, r:CellsBasis.cell, lab:Label.label}
   | FBRANCH of {b:fbranch, f:CellsBasis.cell, lab:Label.label}
   | OPERATE of {oper:operate, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell}
   | OPERATEV of {oper:operateV, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell}
   | CMOVE of {oper:cmove, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell}
   | PSEUDOARITH of {oper:pseudo_op, ra:CellsBasis.cell, rb:operand, rc:CellsBasis.cell, 
        tmps:C.cellset}
   | COPY of {dst:CellsBasis.cell list, src:CellsBasis.cell list, impl:instruction list option ref, 
        tmp:ea option}
   | FCOPY of {dst:CellsBasis.cell list, src:CellsBasis.cell list, impl:instruction list option ref, 
        tmp:ea option}
   | FUNARY of {oper:funary, fb:CellsBasis.cell, fc:CellsBasis.cell}
   | FOPERATE of {oper:foperate, fa:CellsBasis.cell, fb:CellsBasis.cell, fc:CellsBasis.cell}
   | FOPERATEV of {oper:foperateV, fa:CellsBasis.cell, fb:CellsBasis.cell, 
        fc:CellsBasis.cell}
   | FCMOVE of {oper:fcmove, fa:CellsBasis.cell, fb:CellsBasis.cell, fc:CellsBasis.cell}
   | TRAPB
   | CALL_PAL of {code:osf_user_palcode, def:C.cellset, use:C.cellset}
   | ANNOTATION of {i:instruction, a:Annotations.annotation}
   | SOURCE of {}
   | SINK of {}
   | PHI of {}
end


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