Commit | Line | Data |
---|---|---|
ac7b3842 | 1 | #ifndef lint |
ca67e7b4 | 2 | static char sccsid[] = "@(#)c23.c 1.3 (Berkeley/CCI) 8/14/86"; |
ac7b3842 SL |
3 | #endif |
4 | ||
5 | #include "c2.h" | |
6 | #define readonly | |
7 | ||
8 | readonly char revbr[] = { | |
9 | JNE, JEQ, JGT, JLT, JGE, JLE, | |
10 | JNE, JEQ, JHI, JLO, JHIS, JLOS, | |
11 | JBS, JBC, }; | |
12 | ||
13 | /* cursed be the preprocessor, whose impotence and stupidity | |
14 | /* prevented this table being macro-generated from ../as/instrs | |
15 | */ | |
16 | ||
17 | readonly struct optab optab[] = { | |
18 | "jbr",JBR,0, | |
19 | "jeql",CBR,JEQ, | |
20 | "jneq",CBR,JNE, | |
21 | "jleq",CBR,JLE, | |
22 | "jgeq",CBR,JGE, | |
23 | "jlss",CBR,JLT, | |
24 | "jgtr",CBR,JGT, | |
25 | "jbc",CBR,JBC, | |
26 | "jbs",CBR,JBS, | |
27 | "jlequ",CBR,JLOS, | |
28 | "jgequ",CBR,JHIS, | |
29 | "jlssu",CBR,JLO, | |
30 | "jgtru",CBR,JHI, | |
31 | "adda",ADDA,LONG, | |
32 | "addb2",ADD,U(BYTE,OP2), | |
33 | "addb3",ADD,U(BYTE,OP3), | |
34 | "addl2",ADD,U(LONG,OP2), | |
35 | "addl3",ADD,U(LONG,OP3), | |
36 | "addw2",ADD,U(WORD,OP2), | |
37 | "addw3",ADD,U(WORD,OP3), | |
38 | "aobleq",AOBLEQ,0, | |
39 | "aoblss",AOBLSS,0, | |
40 | "shal",SHAL,LONG, | |
41 | "shar",SHAR,LONG, | |
42 | "shll",SHL,LONG, | |
43 | "shrl",SHR,LONG, | |
44 | "shlq",SHL,QUAD, | |
45 | "shrq",SHR,QUAD, | |
46 | "bbc",CBR,JBC, | |
47 | "bbs",CBR,JBS, | |
48 | "bcc",CBR,JHIS, | |
49 | "bcs",CBR,JLO, | |
50 | "beql",CBR,JEQ, | |
51 | "beqlu",CBR,JEQ, | |
52 | "bgeq",CBR,JGE, | |
53 | "bgequ",CBR,JHIS, | |
54 | "bgtr",CBR,JGT, | |
55 | "bgtru",CBR,JHI, | |
56 | "andb2",AND,U(BYTE,OP2), | |
57 | "andb3",AND,U(BYTE,OP3), | |
58 | "andl2",AND,U(LONG,OP2), | |
59 | "andl3",AND,U(LONG,OP3), | |
60 | "andw2",AND,U(WORD,OP2), | |
61 | "andw3",AND,U(WORD,OP3), | |
62 | "orb2",OR,U(BYTE,OP2), | |
63 | "orb3",OR,U(BYTE,OP3), | |
64 | "orl2",OR,U(LONG,OP2), | |
65 | "orl3",OR,U(LONG,OP3), | |
66 | "orw2",OR,U(WORD,OP2), | |
67 | "orw3",OR,U(WORD,OP3), | |
68 | "bitb",BIT,BYTE, | |
69 | "bitl",BIT,LONG, | |
70 | "bitw",BIT,WORD, | |
71 | "bleq",CBR,JLE, | |
72 | "blequ",CBR,JLOS, | |
73 | "blss",CBR,JLT, | |
74 | "blssu",CBR,JLO, | |
75 | "bneq",CBR,JNE, | |
76 | "bnequ",CBR,JNE, | |
77 | "brb",JBR,0, | |
78 | "brw",JBR,0, | |
79 | "bvc",CBR,0, | |
80 | "bvs",CBR,0, | |
81 | "callf",CALLF,0, | |
82 | "calls",CALLS,0, | |
83 | "casel",CASE,LONG, | |
84 | "clrb",CLR,BYTE, | |
85 | "clrl",CLR,LONG, | |
86 | "clrw",CLR,WORD, | |
87 | "cmpb",CMP,BYTE, | |
88 | "cmpl",CMP,LONG, | |
89 | "cmpw",CMP,WORD, | |
90 | "cvtbl",CVT,U(BYTE,LONG), | |
91 | "cvtbw",CVT,U(BYTE,WORD), | |
92 | "cvtlb",CVT,U(LONG,BYTE), | |
93 | "cvtlw",CVT,U(LONG,WORD), | |
94 | "cvtwb",CVT,U(WORD,BYTE), | |
95 | "cvtwl",CVT,U(WORD,LONG), | |
96 | "decb",DEC,BYTE, | |
97 | "decl",DEC,LONG, | |
98 | "decw",DEC,WORD, | |
99 | "divl2",DIV,U(LONG,OP2), | |
100 | "divl3",DIV,U(LONG,OP3), | |
101 | "ediv",EDIV,LONG, | |
102 | #ifdef EMOD | |
103 | "emod",EMOD,LONG, | |
104 | #endif EMOD | |
105 | "emul",EMUL,LONG, | |
106 | "incb",INC,BYTE, | |
107 | "incl",INC,LONG, | |
108 | "incw",INC,WORD, | |
109 | "jmp",JMP,0, | |
110 | "mcomb",COM,BYTE, | |
111 | "mcoml",COM,LONG, | |
112 | "mcomw",COM,WORD, | |
113 | "mnegb",NEG,BYTE, | |
114 | "mnegl",NEG,LONG, | |
115 | "mnegw",NEG,WORD, | |
116 | "movab",MOVA,BYTE, | |
117 | "moval",MOVA,LONG, | |
118 | "movaw",MOVA,WORD, | |
119 | "movb",MOV,BYTE, | |
120 | "movl",MOV,LONG, | |
121 | "movw",MOV,WORD, | |
122 | "movzbl",MOVZ,U(BYTE,LONG), | |
123 | "movzbw",MOVZ,U(BYTE,WORD), | |
124 | "movzwl",MOVZ,U(WORD,LONG), | |
125 | "mull2",MUL,U(LONG,OP2), | |
126 | "mull3",MUL,U(LONG,OP3), | |
127 | "pushab",PUSHA,BYTE, | |
128 | "pushal",PUSHA,LONG, | |
129 | "pushaw",PUSHA,WORD, | |
130 | "pushb",PUSH,BYTE, | |
131 | "pushl",PUSH,LONG, | |
132 | "pushw",PUSH,WORD, | |
133 | "ret",JBR,U(RET,2), | |
134 | "ret#0",JBR,RET, | |
135 | "ret#1",JBR,U(RET,1), | |
136 | "ret#2",JBR,U(RET,2), | |
137 | "suba",SUBA,LONG, | |
138 | "subb2",SUB,U(BYTE,OP2), | |
139 | "subb3",SUB,U(BYTE,OP3), | |
140 | "subl2",SUB,U(LONG,OP2), | |
141 | "subl3",SUB,U(LONG,OP3), | |
142 | "subw2",SUB,U(WORD,OP2), | |
143 | "subw3",SUB,U(WORD,OP3), | |
144 | "tstb",TST,BYTE, | |
145 | "tstl",TST,LONG, | |
146 | "tstw",TST,WORD, | |
147 | "xorb2",XOR,U(BYTE,OP2), | |
148 | "xorb3",XOR,U(BYTE,OP3), | |
149 | "xorl2",XOR,U(LONG,OP2), | |
150 | "xorl3",XOR,U(LONG,OP3), | |
151 | "xorw2",XOR,U(WORD,OP2), | |
152 | "xorw3",XOR,U(WORD,OP3), | |
153 | "movblk",MOVBLK,0, | |
154 | "ldf",LDF,FLOAT, | |
155 | "ldd",LDF,DOUBLE, | |
156 | "lnf",LNF,FLOAT, | |
157 | "lnd",LNF,DOUBLE, | |
158 | "stf",STF,FLOAT, | |
159 | "std",STF,DOUBLE, | |
160 | "cmpf",CMPF,FLOAT, | |
161 | "cmpd",CMPF,DOUBLE, | |
162 | "cmpf2",CMPF2,FLOAT, | |
163 | "cmpd2",CMPF2,DOUBLE, | |
164 | "tstf",TSTF,FLOAT, | |
165 | "tstd",TSTF,DOUBLE, | |
166 | "pushd",PUSHD,DOUBLE, | |
167 | "cvlf",CVLF,U(LONG,FLOAT), | |
168 | "cvld",CVLF,U(LONG,DOUBLE), | |
169 | "cvfl",CVFL,U(FLOAT,LONG), | |
170 | "cvdl",CVFL,U(DOUBLE,LONG), | |
171 | "ldfd",LDFD,U(FLOAT,DOUBLE), | |
172 | "cvdf",CVDF,U(DOUBLE,FLOAT), | |
173 | "negf",NEGF,FLOAT, | |
174 | "negd",NEGF,DOUBLE, | |
175 | "addf",ADDF,FLOAT, | |
176 | "addd",ADDF,DOUBLE, | |
177 | "subf",SUBF,FLOAT, | |
178 | "subd",SUBF,DOUBLE, | |
179 | "mulf",MULF,FLOAT, | |
180 | "muld",MULF,DOUBLE, | |
181 | "divf",DIVF,FLOAT, | |
182 | "divd",DIVF,DOUBLE, | |
183 | "sinf",SINF,FLOAT, | |
184 | "cosf",COSF,FLOAT, | |
185 | "atanf",ATANF,FLOAT, | |
186 | "logf",LOGF,FLOAT, | |
187 | "sqrtf",SQRTF,FLOAT, | |
188 | "expf",EXPF,FLOAT, | |
189 | ".globl",EROU,0, | |
190 | ".text",TEXT,0, | |
191 | ".data",DATA,0, | |
192 | ".bss",BSS,0, | |
193 | ".align",ALIGN,0, | |
194 | ".word",WGEN,0, | |
195 | ".long",LGEN,0, | |
196 | ".set",SET,0, | |
197 | ".lcomm",LCOMM,0, | |
198 | ".comm",COMM,0, | |
199 | ".end",END,0, | |
200 | "mfpr",MFPR,LONG, | |
201 | "mtpr",MTPR,LONG, | |
202 | "probe",PROBE,BYTE, | |
864f1f35 | 203 | "adwc",NIL,0, |
ac7b3842 SL |
204 | "movob",MOVO,BYTE, |
205 | "movow",MOVO,WORD, | |
864f1f35 SL |
206 | "bbssi",NIL,0, |
207 | "bicpsw",NIL,0, | |
208 | "bispsw",NIL,0, | |
209 | "bpt",NIL,0, | |
210 | "btcs",NIL,0, | |
211 | "cmps2",NIL,0, | |
212 | "cmps3",NIL,0, | |
213 | "emul",NIL,0, | |
214 | "ffc",NIL,0, | |
215 | "ffs",NIL,0, | |
216 | "halt",NIL,0, | |
217 | "insque",NIL,0, | |
218 | "kcall",NIL,0, | |
219 | "ldpctx",NIL,0, | |
220 | "loadr",NIL,0, | |
221 | "movpsl",NIL,0, | |
222 | "movs2",NIL,0, | |
223 | "movs3",NIL,0, | |
224 | "nop",NIL,0, | |
225 | "rei",NIL,0, | |
226 | "remque",NIL,0, | |
227 | "sbwc",NIL,0, | |
228 | "storer",NIL,0, | |
229 | "svpctx",NIL,0, | |
230 | "sinf",NIL,0, | |
231 | "cosf",NIL,0, | |
232 | "atanf",NIL,0, | |
233 | "logf",NIL,0, | |
234 | "sqrtf",NIL,0, | |
235 | "expf",NIL,0, | |
236 | {0}}; |