xref: /original-bsd/old/pcc/c2.tahoe/c23.c (revision cd18b70b)
1 #ifndef lint
2 static char sccsid[] = "@(#)c23.c	1.3 (Berkeley/CCI) 08/14/86";
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,
203 "adwc",NIL,0,
204 "movob",MOVO,BYTE,
205 "movow",MOVO,WORD,
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}};
237