xref: /csrg-svn/old/pcc/c2.tahoe/c23.c (revision 29775)
126442Ssam #ifndef lint
2*29775Ssam static char sccsid[] = "@(#)c23.c	1.3 (Berkeley/CCI) 08/14/86";
326442Ssam #endif
426442Ssam 
526442Ssam #include "c2.h"
626442Ssam #define readonly
726442Ssam 
826442Ssam readonly char revbr[] = {
926442Ssam 	JNE, JEQ, JGT, JLT, JGE, JLE,
1026442Ssam 	JNE, JEQ, JHI, JLO, JHIS, JLOS,
1126442Ssam 	JBS, JBC, };
1226442Ssam 
1326442Ssam /* cursed be the preprocessor, whose impotence and stupidity
1426442Ssam /* prevented this table being macro-generated from ../as/instrs
1526442Ssam */
1626442Ssam 
1726442Ssam readonly struct optab optab[] = {
1826442Ssam "jbr",JBR,0,
1926442Ssam "jeql",CBR,JEQ,
2026442Ssam "jneq",CBR,JNE,
2126442Ssam "jleq",CBR,JLE,
2226442Ssam "jgeq",CBR,JGE,
2326442Ssam "jlss",CBR,JLT,
2426442Ssam "jgtr",CBR,JGT,
2526442Ssam "jbc",CBR,JBC,
2626442Ssam "jbs",CBR,JBS,
2726442Ssam "jlequ",CBR,JLOS,
2826442Ssam "jgequ",CBR,JHIS,
2926442Ssam "jlssu",CBR,JLO,
3026442Ssam "jgtru",CBR,JHI,
3126442Ssam "adda",ADDA,LONG,
3226442Ssam "addb2",ADD,U(BYTE,OP2),
3326442Ssam "addb3",ADD,U(BYTE,OP3),
3426442Ssam "addl2",ADD,U(LONG,OP2),
3526442Ssam "addl3",ADD,U(LONG,OP3),
3626442Ssam "addw2",ADD,U(WORD,OP2),
3726442Ssam "addw3",ADD,U(WORD,OP3),
3826442Ssam "aobleq",AOBLEQ,0,
3926442Ssam "aoblss",AOBLSS,0,
4026442Ssam "shal",SHAL,LONG,
4126442Ssam "shar",SHAR,LONG,
4226442Ssam "shll",SHL,LONG,
4326442Ssam "shrl",SHR,LONG,
4426442Ssam "shlq",SHL,QUAD,
4526442Ssam "shrq",SHR,QUAD,
4626442Ssam "bbc",CBR,JBC,
4726442Ssam "bbs",CBR,JBS,
4826442Ssam "bcc",CBR,JHIS,
4926442Ssam "bcs",CBR,JLO,
5026442Ssam "beql",CBR,JEQ,
5126442Ssam "beqlu",CBR,JEQ,
5226442Ssam "bgeq",CBR,JGE,
5326442Ssam "bgequ",CBR,JHIS,
5426442Ssam "bgtr",CBR,JGT,
5526442Ssam "bgtru",CBR,JHI,
5626442Ssam "andb2",AND,U(BYTE,OP2),
5726442Ssam "andb3",AND,U(BYTE,OP3),
5826442Ssam "andl2",AND,U(LONG,OP2),
5926442Ssam "andl3",AND,U(LONG,OP3),
6026442Ssam "andw2",AND,U(WORD,OP2),
6126442Ssam "andw3",AND,U(WORD,OP3),
6226442Ssam "orb2",OR,U(BYTE,OP2),
6326442Ssam "orb3",OR,U(BYTE,OP3),
6426442Ssam "orl2",OR,U(LONG,OP2),
6526442Ssam "orl3",OR,U(LONG,OP3),
6626442Ssam "orw2",OR,U(WORD,OP2),
6726442Ssam "orw3",OR,U(WORD,OP3),
6826442Ssam "bitb",BIT,BYTE,
6926442Ssam "bitl",BIT,LONG,
7026442Ssam "bitw",BIT,WORD,
7126442Ssam "bleq",CBR,JLE,
7226442Ssam "blequ",CBR,JLOS,
7326442Ssam "blss",CBR,JLT,
7426442Ssam "blssu",CBR,JLO,
7526442Ssam "bneq",CBR,JNE,
7626442Ssam "bnequ",CBR,JNE,
7726442Ssam "brb",JBR,0,
7826442Ssam "brw",JBR,0,
7926442Ssam "bvc",CBR,0,
8026442Ssam "bvs",CBR,0,
8126442Ssam "callf",CALLF,0,
8226442Ssam "calls",CALLS,0,
8326442Ssam "casel",CASE,LONG,
8426442Ssam "clrb",CLR,BYTE,
8526442Ssam "clrl",CLR,LONG,
8626442Ssam "clrw",CLR,WORD,
8726442Ssam "cmpb",CMP,BYTE,
8826442Ssam "cmpl",CMP,LONG,
8926442Ssam "cmpw",CMP,WORD,
9026442Ssam "cvtbl",CVT,U(BYTE,LONG),
9126442Ssam "cvtbw",CVT,U(BYTE,WORD),
9226442Ssam "cvtlb",CVT,U(LONG,BYTE),
9326442Ssam "cvtlw",CVT,U(LONG,WORD),
9426442Ssam "cvtwb",CVT,U(WORD,BYTE),
9526442Ssam "cvtwl",CVT,U(WORD,LONG),
9626442Ssam "decb",DEC,BYTE,
9726442Ssam "decl",DEC,LONG,
9826442Ssam "decw",DEC,WORD,
9926442Ssam "divl2",DIV,U(LONG,OP2),
10026442Ssam "divl3",DIV,U(LONG,OP3),
10126442Ssam "ediv",EDIV,LONG,
10226442Ssam #ifdef EMOD
10326442Ssam "emod",EMOD,LONG,
10426442Ssam #endif EMOD
10526442Ssam "emul",EMUL,LONG,
10626442Ssam "incb",INC,BYTE,
10726442Ssam "incl",INC,LONG,
10826442Ssam "incw",INC,WORD,
10926442Ssam "jmp",JMP,0,
11026442Ssam "mcomb",COM,BYTE,
11126442Ssam "mcoml",COM,LONG,
11226442Ssam "mcomw",COM,WORD,
11326442Ssam "mnegb",NEG,BYTE,
11426442Ssam "mnegl",NEG,LONG,
11526442Ssam "mnegw",NEG,WORD,
11626442Ssam "movab",MOVA,BYTE,
11726442Ssam "moval",MOVA,LONG,
11826442Ssam "movaw",MOVA,WORD,
11926442Ssam "movb",MOV,BYTE,
12026442Ssam "movl",MOV,LONG,
12126442Ssam "movw",MOV,WORD,
12226442Ssam "movzbl",MOVZ,U(BYTE,LONG),
12326442Ssam "movzbw",MOVZ,U(BYTE,WORD),
12426442Ssam "movzwl",MOVZ,U(WORD,LONG),
12526442Ssam "mull2",MUL,U(LONG,OP2),
12626442Ssam "mull3",MUL,U(LONG,OP3),
12726442Ssam "pushab",PUSHA,BYTE,
12826442Ssam "pushal",PUSHA,LONG,
12926442Ssam "pushaw",PUSHA,WORD,
13026442Ssam "pushb",PUSH,BYTE,
13126442Ssam "pushl",PUSH,LONG,
13226442Ssam "pushw",PUSH,WORD,
13326442Ssam "ret",JBR,U(RET,2),
13426442Ssam "ret#0",JBR,RET,
13526442Ssam "ret#1",JBR,U(RET,1),
13626442Ssam "ret#2",JBR,U(RET,2),
13726442Ssam "suba",SUBA,LONG,
13826442Ssam "subb2",SUB,U(BYTE,OP2),
13926442Ssam "subb3",SUB,U(BYTE,OP3),
14026442Ssam "subl2",SUB,U(LONG,OP2),
14126442Ssam "subl3",SUB,U(LONG,OP3),
14226442Ssam "subw2",SUB,U(WORD,OP2),
14326442Ssam "subw3",SUB,U(WORD,OP3),
14426442Ssam "tstb",TST,BYTE,
14526442Ssam "tstl",TST,LONG,
14626442Ssam "tstw",TST,WORD,
14726442Ssam "xorb2",XOR,U(BYTE,OP2),
14826442Ssam "xorb3",XOR,U(BYTE,OP3),
14926442Ssam "xorl2",XOR,U(LONG,OP2),
15026442Ssam "xorl3",XOR,U(LONG,OP3),
15126442Ssam "xorw2",XOR,U(WORD,OP2),
15226442Ssam "xorw3",XOR,U(WORD,OP3),
15326442Ssam "movblk",MOVBLK,0,
15426442Ssam "ldf",LDF,FLOAT,
15526442Ssam "ldd",LDF,DOUBLE,
15626442Ssam "lnf",LNF,FLOAT,
15726442Ssam "lnd",LNF,DOUBLE,
15826442Ssam "stf",STF,FLOAT,
15926442Ssam "std",STF,DOUBLE,
16026442Ssam "cmpf",CMPF,FLOAT,
16126442Ssam "cmpd",CMPF,DOUBLE,
16226442Ssam "cmpf2",CMPF2,FLOAT,
16326442Ssam "cmpd2",CMPF2,DOUBLE,
16426442Ssam "tstf",TSTF,FLOAT,
16526442Ssam "tstd",TSTF,DOUBLE,
16626442Ssam "pushd",PUSHD,DOUBLE,
16726442Ssam "cvlf",CVLF,U(LONG,FLOAT),
16826442Ssam "cvld",CVLF,U(LONG,DOUBLE),
16926442Ssam "cvfl",CVFL,U(FLOAT,LONG),
17026442Ssam "cvdl",CVFL,U(DOUBLE,LONG),
17126442Ssam "ldfd",LDFD,U(FLOAT,DOUBLE),
17226442Ssam "cvdf",CVDF,U(DOUBLE,FLOAT),
17326442Ssam "negf",NEGF,FLOAT,
17426442Ssam "negd",NEGF,DOUBLE,
17526442Ssam "addf",ADDF,FLOAT,
17626442Ssam "addd",ADDF,DOUBLE,
17726442Ssam "subf",SUBF,FLOAT,
17826442Ssam "subd",SUBF,DOUBLE,
17926442Ssam "mulf",MULF,FLOAT,
18026442Ssam "muld",MULF,DOUBLE,
18126442Ssam "divf",DIVF,FLOAT,
18226442Ssam "divd",DIVF,DOUBLE,
18326442Ssam "sinf",SINF,FLOAT,
18426442Ssam "cosf",COSF,FLOAT,
18526442Ssam "atanf",ATANF,FLOAT,
18626442Ssam "logf",LOGF,FLOAT,
18726442Ssam "sqrtf",SQRTF,FLOAT,
18826442Ssam "expf",EXPF,FLOAT,
18926442Ssam ".globl",EROU,0,
19026442Ssam ".text",TEXT,0,
19126442Ssam ".data",DATA,0,
19226442Ssam ".bss",BSS,0,
19326442Ssam ".align",ALIGN,0,
19426442Ssam ".word",WGEN,0,
19526442Ssam ".long",LGEN,0,
19626442Ssam ".set",SET,0,
19726442Ssam ".lcomm",LCOMM,0,
19826442Ssam ".comm",COMM,0,
19926442Ssam ".end",END,0,
20026442Ssam "mfpr",MFPR,LONG,
20126442Ssam "mtpr",MTPR,LONG,
20226442Ssam "probe",PROBE,BYTE,
203*29775Ssam "adwc",NIL,0,
20426442Ssam "movob",MOVO,BYTE,
20526442Ssam "movow",MOVO,WORD,
206*29775Ssam "bbssi",NIL,0,
207*29775Ssam "bicpsw",NIL,0,
208*29775Ssam "bispsw",NIL,0,
209*29775Ssam "bpt",NIL,0,
210*29775Ssam "btcs",NIL,0,
211*29775Ssam "cmps2",NIL,0,
212*29775Ssam "cmps3",NIL,0,
213*29775Ssam "emul",NIL,0,
214*29775Ssam "ffc",NIL,0,
215*29775Ssam "ffs",NIL,0,
216*29775Ssam "halt",NIL,0,
217*29775Ssam "insque",NIL,0,
218*29775Ssam "kcall",NIL,0,
219*29775Ssam "ldpctx",NIL,0,
220*29775Ssam "loadr",NIL,0,
221*29775Ssam "movpsl",NIL,0,
222*29775Ssam "movs2",NIL,0,
223*29775Ssam "movs3",NIL,0,
224*29775Ssam "nop",NIL,0,
225*29775Ssam "rei",NIL,0,
226*29775Ssam "remque",NIL,0,
227*29775Ssam "sbwc",NIL,0,
228*29775Ssam "storer",NIL,0,
229*29775Ssam "svpctx",NIL,0,
230*29775Ssam "sinf",NIL,0,
231*29775Ssam "cosf",NIL,0,
232*29775Ssam "atanf",NIL,0,
233*29775Ssam "logf",NIL,0,
234*29775Ssam "sqrtf",NIL,0,
235*29775Ssam "expf",NIL,0,
236*29775Ssam {0}};
237