xref: /original-bsd/old/pcc/c2.vax/c22.c (revision 6c57d260)
1 static	char sccsid[] = "@(#)c22.c 4.1 10/17/80";
2 #include "c2.h"
3 /* char c22[] = "@(#)c22.c 1.10 80/03/14 10:27:37"; */
4 #define readonly
5 
6 readonly char revbr[] = {
7 	JNE, JEQ, JGT, JLT, JGE, JLE,
8 	JNE, JEQ, JHI, JLO, JHIS, JLOS,
9 	JBS, JBC, JLBS, JLBC, JBSC, JBCC, JBSS, JBCS };
10 
11 /* cursed be the preprocessor, whose impotence and stupidity
12 /* prevented this table being macro-generated from ../as/instrs
13 */
14 
15 readonly struct optab optab[] = {
16 "jbr",JBR,
17 "jeql",T(CBR,JEQ),
18 "jneq",T(CBR,JNE),
19 "jleq",T(CBR,JLE),
20 "jgeq",T(CBR,JGE),
21 "jlss",T(CBR,JLT),
22 "jgtr",T(CBR,JGT),
23 "jbc",T(CBR,JBC),
24 "jbs",T(CBR,JBS),
25 "jlequ",T(CBR,JLOS),
26 "jgequ",T(CBR,JHIS),
27 "jlssu",T(CBR,JLO),
28 "jgtru",T(CBR,JHI),
29 "jlbc",T(CBR,JLBC),
30 "jlbs",T(CBR,JLBS),
31 "jbcc",T(CBR,JBCC),
32 "jbsc",T(CBR,JBSC),
33 "jbcs",T(CBR,JBCS),
34 "jbss",T(CBR,JBSS),
35 "acbb",T(ACB,BYTE),
36 "acbd",T(ACB,DOUBLE),
37 "acbf",T(ACB,FLOAT),
38 "acbl",T(ACB,LONG),
39 "acbw",T(ACB,WORD),
40 "addb2",T(ADD,U(BYTE,OP2)),
41 "addb3",T(ADD,U(BYTE,OP3)),
42 "addd2",T(ADD,U(DOUBLE,OP2)),
43 "addd3",T(ADD,U(DOUBLE,OP3)),
44 "addf2",T(ADD,U(FLOAT,OP2)),
45 "addf3",T(ADD,U(FLOAT,OP3)),
46 "addl2",T(ADD,U(LONG,OP2)),
47 "addl3",T(ADD,U(LONG,OP3)),
48 "addw2",T(ADD,U(WORD,OP2)),
49 "addw3",T(ADD,U(WORD,OP3)),
50 "aobleq",AOBLEQ,
51 "aoblss",AOBLSS,
52 "ashl",T(ASH,LONG),
53 "ashq",T(ASH,QUAD),
54 "bbc",T(CBR,JBC),
55 "bbcc",T(CBR,JBCC),
56 "bbcci",T(CBR,JBCC),
57 "bbcs",T(CBR,JBCS),
58 "bbs",T(CBR,JBS),
59 "bbsc",T(CBR,JBSC),
60 "bbss",T(CBR,JBSS),
61 "bbssi",T(CBR,JBSS),
62 "bcc",T(CBR,JHIS),
63 "bcs",T(CBR,JLO),
64 "beql",T(CBR,JEQ),
65 "beqlu",T(CBR,JEQ),
66 "bgeq",T(CBR,JGE),
67 "bgequ",T(CBR,JHIS),
68 "bgtr",T(CBR,JGT),
69 "bgtru",T(CBR,JHI),
70 "bicb2",T(BIC,U(BYTE,OP2)),
71 "bicb3",T(BIC,U(BYTE,OP3)),
72 "bicl2",T(BIC,U(LONG,OP2)),
73 "bicl3",T(BIC,U(LONG,OP3)),
74 "bicw2",T(BIC,U(WORD,OP2)),
75 "bicw3",T(BIC,U(WORD,OP3)),
76 "bisb2",T(BIS,U(BYTE,OP2)),
77 "bisb3",T(BIS,U(BYTE,OP3)),
78 "bisl2",T(BIS,U(LONG,OP2)),
79 "bisl3",T(BIS,U(LONG,OP3)),
80 "bisw2",T(BIS,U(WORD,OP2)),
81 "bisw3",T(BIS,U(WORD,OP3)),
82 "bitb",T(BIT,BYTE),
83 "bitl",T(BIT,LONG),
84 "bitw",T(BIT,WORD),
85 "blbs",T(CBR,JLBS),
86 "blbc",T(CBR,JLBC),
87 "bleq",T(CBR,JLE),
88 "blequ",T(CBR,JLOS),
89 "blss",T(CBR,JLT),
90 "blssu",T(CBR,JLO),
91 "bneq",T(CBR,JNE),
92 "bnequ",T(CBR,JNE),
93 "brb",JBR,
94 "brw",JBR,
95 "bvc",T(CBR,0),
96 "bvs",T(CBR,0),
97 "callg",CALLS,
98 "calls",CALLS,
99 "caseb",T(CASE,BYTE),
100 "casel",T(CASE,LONG),
101 "casew",T(CASE,WORD),
102 "clrb",T(CLR,BYTE),
103 "clrd",T(CLR,DOUBLE),
104 "clrf",T(CLR,FLOAT),
105 "clrl",T(CLR,LONG),
106 "clrq",T(CLR,QUAD),
107 "clrw",T(CLR,WORD),
108 "cmpb",T(CMP,BYTE),
109 "cmpd",T(CMP,DOUBLE),
110 "cmpf",T(CMP,FLOAT),
111 "cmpl",T(CMP,LONG),
112 "cmpw",T(CMP,WORD),
113 "cvtbd",T(CVT,U(BYTE,DOUBLE)),
114 "cvtbf",T(CVT,U(BYTE,FLOAT)),
115 "cvtbl",T(CVT,U(BYTE,LONG)),
116 "cvtbw",T(CVT,U(BYTE,WORD)),
117 "cvtdb",T(CVT,U(DOUBLE,BYTE)),
118 "cvtdf",T(CVT,U(DOUBLE,FLOAT)),
119 "cvtdl",T(CVT,U(DOUBLE,LONG)),
120 "cvtdw",T(CVT,U(DOUBLE,WORD)),
121 "cvtfb",T(CVT,U(FLOAT,BYTE)),
122 "cvtfd",T(CVT,U(FLOAT,DOUBLE)),
123 "cvtfl",T(CVT,U(FLOAT,LONG)),
124 "cvtfw",T(CVT,U(FLOAT,WORD)),
125 "cvtlb",T(CVT,U(LONG,BYTE)),
126 "cvtld",T(CVT,U(LONG,DOUBLE)),
127 "cvtlf",T(CVT,U(LONG,FLOAT)),
128 "cvtlw",T(CVT,U(LONG,WORD)),
129 "cvtrdl",T(CVT,U(DOUBLE,LONG)),
130 "cvtrfl",T(CVT,U(FLOAT,LONG)),
131 "cvtwb",T(CVT,U(WORD,BYTE)),
132 "cvtwd",T(CVT,U(WORD,DOUBLE)),
133 "cvtwf",T(CVT,U(WORD,FLOAT)),
134 "cvtwl",T(CVT,U(WORD,LONG)),
135 "decb",T(DEC,BYTE),
136 "decl",T(DEC,LONG),
137 "decw",T(DEC,WORD),
138 "divb2",T(DIV,U(BYTE,OP2)),
139 "divb3",T(DIV,U(BYTE,OP3)),
140 "divd2",T(DIV,U(DOUBLE,OP2)),
141 "divd3",T(DIV,U(DOUBLE,OP3)),
142 "divf2",T(DIV,U(FLOAT,OP2)),
143 "divf3",T(DIV,U(FLOAT,OP3)),
144 "divl2",T(DIV,U(LONG,OP2)),
145 "divl3",T(DIV,U(LONG,OP3)),
146 "divw2",T(DIV,U(WORD,OP2)),
147 "divw3",T(DIV,U(WORD,OP3)),
148 "extv",T(EXTV,LONG),
149 "extzv",T(EXTZV,LONG),
150 "incb",T(INC,BYTE),
151 "incl",T(INC,LONG),
152 "incw",T(INC,WORD),
153 "insv",T(INSV,-1),
154 "jmp",JMP,
155 "mcomb",T(COM,BYTE),
156 "mcoml",T(COM,LONG),
157 "mcomw",T(COM,WORD),
158 "mnegb",T(NEG,BYTE),
159 "mnegd",T(NEG,DOUBLE),
160 "mnegf",T(NEG,FLOAT),
161 "mnegl",T(NEG,LONG),
162 "mnegw",T(NEG,WORD),
163 "movab",T(MOVA,BYTE),
164 "movad",T(MOVA,DOUBLE),
165 "movaf",T(MOVA,FLOAT),
166 "moval",T(MOVA,LONG),
167 "movaq",T(MOVA,QUAD),
168 "movaw",T(MOVA,WORD),
169 "movb",T(MOV,BYTE),
170 "movd",T(MOV,DOUBLE),
171 "movf",T(MOV,FLOAT),
172 "movl",T(MOV,LONG),
173 "movq",T(MOV,QUAD),
174 "movw",T(MOV,WORD),
175 "movzbl",T(MOVZ,U(BYTE,LONG)),
176 "movzbw",T(MOVZ,U(BYTE,WORD)),
177 "movzwl",T(MOVZ,U(WORD,LONG)),
178 "mulb2",T(MUL,U(BYTE,OP2)),
179 "mulb3",T(MUL,U(BYTE,OP3)),
180 "muld2",T(MUL,U(DOUBLE,OP2)),
181 "muld3",T(MUL,U(DOUBLE,OP3)),
182 "mulf2",T(MUL,U(FLOAT,OP2)),
183 "mulf3",T(MUL,U(FLOAT,OP3)),
184 "mull2",T(MUL,U(LONG,OP2)),
185 "mull3",T(MUL,U(LONG,OP3)),
186 "mulw2",T(MUL,U(WORD,OP2)),
187 "mulw3",T(MUL,U(WORD,OP3)),
188 "pushab",T(PUSHA,BYTE),
189 "pushad",T(PUSHA,DOUBLE),
190 "pushaf",T(PUSHA,FLOAT),
191 "pushal",T(PUSHA,LONG),
192 "pushaq",T(PUSHA,QUAD),
193 "pushaw",T(PUSHA,WORD),
194 "pushl",T(PUSH,LONG),
195 "ret",T(JBR,RET),
196 "sobgeq",SOBGEQ,
197 "sobgtr",SOBGTR,
198 "subb2",T(SUB,U(BYTE,OP2)),
199 "subb3",T(SUB,U(BYTE,OP3)),
200 "subd2",T(SUB,U(DOUBLE,OP2)),
201 "subd3",T(SUB,U(DOUBLE,OP3)),
202 "subf2",T(SUB,U(FLOAT,OP2)),
203 "subf3",T(SUB,U(FLOAT,OP3)),
204 "subl2",T(SUB,U(LONG,OP2)),
205 "subl3",T(SUB,U(LONG,OP3)),
206 "subw2",T(SUB,U(WORD,OP2)),
207 "subw3",T(SUB,U(WORD,OP3)),
208 "tstb",T(TST,BYTE),
209 "tstd",T(TST,DOUBLE),
210 "tstf",T(TST,FLOAT),
211 "tstl",T(TST,LONG),
212 "tstw",T(TST,WORD),
213 "xorb2",T(XOR,U(BYTE,OP2)),
214 "xorb3",T(XOR,U(BYTE,OP3)),
215 "xorl2",T(XOR,U(LONG,OP2)),
216 "xorl3",T(XOR,U(LONG,OP3)),
217 "xorw2",T(XOR,U(WORD,OP2)),
218 "xorw3",T(XOR,U(WORD,OP3)),
219 "movc3",MOVC3,
220 ".globl",EROU,
221 ".text",TEXT,
222 ".data",DATA,
223 ".bss",BSS,
224 ".align",ALIGN,
225 ".word",WGEN,
226 ".long",LGEN,
227 ".set",SET,
228 ".lcomm",LCOMM,
229 ".comm",COMM,
230 ".end",END,
231 "rsb",T(JBR,RSB),
232 "jsb",JSB,
233 "mfpr",T(MFPR,LONG),
234 "mtpr",T(MTPR,LONG),
235 "prober",T(PROBER,BYTE),
236 "probew",T(PROBEW,BYTE),
237 "adawi",0,
238 "addp4",0,
239 "addp6",0,
240 "adwc",0,
241 "ashp",0,
242 "bicpsw",0,
243 "bispsw",0,
244 "bpt",0,
245 "bsbb",0,
246 "bsbw",0,
247 "chme",0,
248 "chmk",0,
249 "chms",0,
250 "chmu",0,
251 "cmpc3",0,
252 "cmpc5",0,
253 "cmpp3",0,
254 "cmpp4",0,
255 "cmpv",0,
256 "cmpzv",0,
257 "crc",0,
258 "cvtlp",0,
259 "cvtpl",0,
260 "cvttp",0,
261 "cvtpt",0,
262 "cvtps",0,
263 "cvtsp",0,
264 "divp",0,
265 "editpc",0,
266 "ediv",0,
267 "emodd",0,
268 "emodf",0,
269 "emul",0,
270 "ffc",0,
271 "ffs",0,
272 "halt",0,
273 "index",0,
274 "insque",0,
275 "ldpctx",0,
276 "locc",0,
277 "matchc",0,
278 "movc5",0,
279 "movp",0,
280 "movpsl",0,
281 "movtc",0,
282 "movtuc",0,
283 "mulp",0,
284 "nop",0,
285 "polyd",0,
286 "polyf",0,
287 "popr",0,
288 "pushr",0,
289 "rei",0,
290 "remque",0,
291 "rotl",0,
292 "sbwc",0,
293 "scanc",0,
294 "skpc",0,
295 "spanc",0,
296 "subp4",0,
297 "subp6",0,
298 "svpctx",0,
299 "xfc",0,
300 "escd",0,
301 "esce",0,
302 "escf",0,
303 	0,	0};
304