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

SCM Repository

[smlnj] Annotation of /sml/trunk/src/MLRISC/hppa/hppaInstr.sig
ViewVC logotype

Annotation of /sml/trunk/src/MLRISC/hppa/hppaInstr.sig

Parent Directory Parent Directory | Revision Log Revision Log


Revision 93 - (view) (download) (as text)
Original Path: sml/branches/SMLNJ/src/MLRISC/hppa/hppaInstr.sig

1 : monnier 16 signature HPPAINSTR = sig
2 :     structure Constant : CONSTANT
3 :     structure Region : REGION
4 :    
5 :     type csets = int list * int list
6 :     structure C : CELLS where type cellset = csets
7 :    
8 :     datatype store = STW | STH | STB
9 :    
10 :     (* All branching is done with nullification *)
11 :     datatype cmp = COMBT | COMBF
12 :    
13 :     datatype cmpi = COMIBT | COMIBF
14 :    
15 :     datatype load = LDWX | LDHX | LDBX
16 :    
17 :     datatype loadi = LDW | LDH | LDB
18 :    
19 :     datatype arith = ADD | ADDO | SH1ADD | SH1ADDO
20 :     | SUB | SUBO | OR | XOR | AND
21 :    
22 :     datatype arithi = ADDI | ADDIO | ADDIL | SUBI | SUBIO
23 :    
24 :     datatype shiftv = VEXTRU | VEXTRS | ZVDEP
25 :    
26 :     datatype shift = EXTRU | EXTRS | ZDEP
27 :    
28 :     datatype farith = FADD | FSUB | FMPY | FDIV | XMPYU
29 :    
30 :     (* FCNVXF --- the source is the LHS single precision floating register *)
31 :     datatype funary = FCPY | FABS | FCNVXF
32 :    
33 :     datatype fstore = FSTDS | FSTWS
34 :    
35 :     datatype fstorex = FSTDX | FSTWX
36 :    
37 :     (* FLDWX and FLDWS -- loads the RHS of the floating register *)
38 :     datatype floadx = FLDDX | FLDWX
39 :    
40 :     datatype fload = FLDDS | FLDWS
41 :    
42 :     datatype bcond = EQ | LT | LE | LTU | LEU | NE | GE | GT | GTU | GEU
43 :     datatype fcond =
44 :     == | != | ? | <=> | > | >= | ?> | ?>= | < | <= | ?< | ?<= | <> | ?=
45 :    
46 :     datatype scond = ALL_ZERO | LEFTMOST_ONE | LEFTMOST_ZERO | RIGHTMOST_ONE
47 :     | RIGHTMOST_ZERO
48 :    
49 :     datatype field_selector = F | S | D | R | T | P
50 :    
51 :     datatype ea =
52 :     Direct of int
53 :     | FDirect of int
54 :     | Displace of {base:int, disp:int}
55 :    
56 :     datatype operand =
57 :     IMMED of int
58 :     | LabExp of LabelExp.labexp * field_selector
59 :     | HILabExp of LabelExp.labexp * field_selector
60 :     | LOLabExp of LabelExp.labexp * field_selector
61 :     | ConstOp of Constant.const
62 :    
63 :     (* FLDWS, FLDWX = define the R half of the FP register.
64 :     * FSTWS = uses the R half of the FP register.
65 :     *)
66 :     datatype instruction =
67 :     STORE of {st:store, b:int, d:operand, r:int, mem:Region.region}
68 :     | LOAD of {l:load, r1:int, r2:int, t:int, mem:Region.region}
69 :     | LOADI of {li:loadi, i:operand, r:int, t:int, mem:Region.region}
70 :     | ARITH of {a:arith, r1:int, r2:int, t:int}
71 :     | ARITHI of {ai:arithi, i:operand, r:int, t:int}
72 :     | COMCLR of {cc:bcond, r1:int, r2:int, t:int}
73 :     | SHIFTV of {sv:shiftv, r:int, len:int, t:int}
74 :     | SHIFT of {s:shift, r:int, p:int, len:int, t:int}
75 :     | BCOND of {cmp: cmp, bc:bcond, r1:int, r2:int, n:bool,
76 :     t:Label.label, f:Label.label}
77 :     | BCONDI of {cmpi: cmpi, bc:bcond, i:int, r2:int, n:bool,
78 :     t:Label.label, f:Label.label}
79 :     | B of {lab:Label.label, n:bool}
80 :     | FBCC of {t:Label.label, f:Label.label, n:bool}
81 :     | BV of {x:int, b:int, labs: Label.label list, n:bool}
82 :     | BL of {x:operand, t:int, defs: C.cellset, uses:C.cellset, n:bool}
83 :     | BLE of {d:operand, b:int, sr:int, t:int,
84 :     defs: C.cellset, uses:C.cellset}
85 :     (* BLE implicitly defines %r31. The destination register t
86 :     * is assigned in the delay slot.
87 :     *)
88 :     | LDIL of {i:operand, t:int}
89 :     | LDO of {i:operand, b:int, t:int}
90 :    
91 :     | MTCTL of {r:int, t:int}
92 :    
93 :     | FSTORE of {fst:fstore, b:int, d:int, r:int, mem:Region.region}
94 :     | FSTOREX of {fstx:fstorex, b:int, x:int, r:int, mem:Region.region}
95 :     | FLOAD of {fl:fload, b:int, d:int, t:int, mem:Region.region}
96 :     | FLOADX of {flx:floadx, b:int, x:int, t:int, mem:Region.region}
97 :     | FARITH of {fa:farith, r1:int, r2:int, t:int}
98 :     | FUNARY of {fu:funary, f:int, t:int}
99 :     | FCMP of fcond * int * int
100 :     | FTEST
101 :     | BREAK of int * int
102 :     | NOP
103 :     | COPY of {dst:int list, src:int list,
104 :     impl:instruction list option ref, tmp: ea option}
105 :     | FCOPY of {dst:int list, src:int list,
106 :     impl:instruction list option ref, tmp: ea option}
107 :    
108 :     end
109 :    
110 :    
111 :     (*
112 :     * $Log: hppaInstr.sig,v $
113 : monnier 93 * Revision 1.1.1.1 1998/04/08 18:39:01 george
114 :     * Version 110.5
115 : monnier 16 *
116 :     *)

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