xref: /plan9/sys/src/cmd/6a/lex.c (revision e887ea33cf0b0f75911958e2324340660b13e9eb)
1*e887ea33SDavid du Colombier #define	EXTERN
2*e887ea33SDavid du Colombier #include "a.h"
3*e887ea33SDavid du Colombier #include "y.tab.h"
4*e887ea33SDavid du Colombier #include <ctype.h>
5*e887ea33SDavid du Colombier 
6*e887ea33SDavid du Colombier void
main(int argc,char * argv[])7*e887ea33SDavid du Colombier main(int argc, char *argv[])
8*e887ea33SDavid du Colombier {
9*e887ea33SDavid du Colombier 	char *p;
10*e887ea33SDavid du Colombier 	int nout, nproc, status, i, c;
11*e887ea33SDavid du Colombier 
12*e887ea33SDavid du Colombier 	thechar = '6';
13*e887ea33SDavid du Colombier 	thestring = "amd64";
14*e887ea33SDavid du Colombier 	memset(debug, 0, sizeof(debug));
15*e887ea33SDavid du Colombier 	cinit();
16*e887ea33SDavid du Colombier 	outfile = 0;
17*e887ea33SDavid du Colombier 	include[ninclude++] = ".";
18*e887ea33SDavid du Colombier 	ARGBEGIN {
19*e887ea33SDavid du Colombier 	default:
20*e887ea33SDavid du Colombier 		c = ARGC();
21*e887ea33SDavid du Colombier 		if(c >= 0 || c < sizeof(debug))
22*e887ea33SDavid du Colombier 			debug[c] = 1;
23*e887ea33SDavid du Colombier 		break;
24*e887ea33SDavid du Colombier 
25*e887ea33SDavid du Colombier 	case 'o':
26*e887ea33SDavid du Colombier 		outfile = ARGF();
27*e887ea33SDavid du Colombier 		break;
28*e887ea33SDavid du Colombier 
29*e887ea33SDavid du Colombier 	case 'D':
30*e887ea33SDavid du Colombier 		p = ARGF();
31*e887ea33SDavid du Colombier 		if(p)
32*e887ea33SDavid du Colombier 			Dlist[nDlist++] = p;
33*e887ea33SDavid du Colombier 		break;
34*e887ea33SDavid du Colombier 
35*e887ea33SDavid du Colombier 	case 'I':
36*e887ea33SDavid du Colombier 		p = ARGF();
37*e887ea33SDavid du Colombier 		setinclude(p);
38*e887ea33SDavid du Colombier 		break;
39*e887ea33SDavid du Colombier 	} ARGEND
40*e887ea33SDavid du Colombier 	if(*argv == 0) {
41*e887ea33SDavid du Colombier 		print("usage: %ca [-options] file.s\n", thechar);
42*e887ea33SDavid du Colombier 		errorexit();
43*e887ea33SDavid du Colombier 	}
44*e887ea33SDavid du Colombier 	if(argc > 1 && systemtype(Windows)){
45*e887ea33SDavid du Colombier 		print("can't assemble multiple files on windows\n");
46*e887ea33SDavid du Colombier 		errorexit();
47*e887ea33SDavid du Colombier 	}
48*e887ea33SDavid du Colombier 	if(argc > 1 && !systemtype(Windows)) {
49*e887ea33SDavid du Colombier 		nproc = 1;
50*e887ea33SDavid du Colombier 		if(p = getenv("NPROC"))
51*e887ea33SDavid du Colombier 			nproc = atol(p);	/* */
52*e887ea33SDavid du Colombier 		c = 0;
53*e887ea33SDavid du Colombier 		nout = 0;
54*e887ea33SDavid du Colombier 		for(;;) {
55*e887ea33SDavid du Colombier 			while(nout < nproc && argc > 0) {
56*e887ea33SDavid du Colombier 				i = myfork();
57*e887ea33SDavid du Colombier 				if(i < 0) {
58*e887ea33SDavid du Colombier 					i = mywait(&status);
59*e887ea33SDavid du Colombier 					if(i < 0)
60*e887ea33SDavid du Colombier 						errorexit();
61*e887ea33SDavid du Colombier 					if(status)
62*e887ea33SDavid du Colombier 						c++;
63*e887ea33SDavid du Colombier 					nout--;
64*e887ea33SDavid du Colombier 					continue;
65*e887ea33SDavid du Colombier 				}
66*e887ea33SDavid du Colombier 				if(i == 0) {
67*e887ea33SDavid du Colombier 					print("%s:\n", *argv);
68*e887ea33SDavid du Colombier 					if(assemble(*argv))
69*e887ea33SDavid du Colombier 						errorexit();
70*e887ea33SDavid du Colombier 					exits(0);
71*e887ea33SDavid du Colombier 				}
72*e887ea33SDavid du Colombier 				nout++;
73*e887ea33SDavid du Colombier 				argc--;
74*e887ea33SDavid du Colombier 				argv++;
75*e887ea33SDavid du Colombier 			}
76*e887ea33SDavid du Colombier 			i = mywait(&status);
77*e887ea33SDavid du Colombier 			if(i < 0) {
78*e887ea33SDavid du Colombier 				if(c)
79*e887ea33SDavid du Colombier 					errorexit();
80*e887ea33SDavid du Colombier 				exits(0);
81*e887ea33SDavid du Colombier 			}
82*e887ea33SDavid du Colombier 			if(status)
83*e887ea33SDavid du Colombier 				c++;
84*e887ea33SDavid du Colombier 			nout--;
85*e887ea33SDavid du Colombier 		}
86*e887ea33SDavid du Colombier 	}
87*e887ea33SDavid du Colombier 	if(assemble(argv[0]))
88*e887ea33SDavid du Colombier 		errorexit();
89*e887ea33SDavid du Colombier 	exits(0);
90*e887ea33SDavid du Colombier }
91*e887ea33SDavid du Colombier 
92*e887ea33SDavid du Colombier int
assemble(char * file)93*e887ea33SDavid du Colombier assemble(char *file)
94*e887ea33SDavid du Colombier {
95*e887ea33SDavid du Colombier 	char ofile[100], incfile[20], *p;
96*e887ea33SDavid du Colombier 	int i, of;
97*e887ea33SDavid du Colombier 
98*e887ea33SDavid du Colombier 	strcpy(ofile, file);
99*e887ea33SDavid du Colombier 	p = utfrrune(ofile, pathchar());
100*e887ea33SDavid du Colombier 	if(p) {
101*e887ea33SDavid du Colombier 		include[0] = ofile;
102*e887ea33SDavid du Colombier 		*p++ = 0;
103*e887ea33SDavid du Colombier 	} else
104*e887ea33SDavid du Colombier 		p = ofile;
105*e887ea33SDavid du Colombier 	if(outfile == 0) {
106*e887ea33SDavid du Colombier 		outfile = p;
107*e887ea33SDavid du Colombier 		if(outfile){
108*e887ea33SDavid du Colombier 			p = utfrrune(outfile, '.');
109*e887ea33SDavid du Colombier 			if(p)
110*e887ea33SDavid du Colombier 				if(p[1] == 's' && p[2] == 0)
111*e887ea33SDavid du Colombier 					p[0] = 0;
112*e887ea33SDavid du Colombier 			p = utfrune(outfile, 0);
113*e887ea33SDavid du Colombier 			p[0] = '.';
114*e887ea33SDavid du Colombier 			p[1] = thechar;
115*e887ea33SDavid du Colombier 			p[2] = 0;
116*e887ea33SDavid du Colombier 		} else
117*e887ea33SDavid du Colombier 			outfile = "/dev/null";
118*e887ea33SDavid du Colombier 	}
119*e887ea33SDavid du Colombier 	p = getenv("INCLUDE");
120*e887ea33SDavid du Colombier 	if(p) {
121*e887ea33SDavid du Colombier 		setinclude(p);
122*e887ea33SDavid du Colombier 	} else {
123*e887ea33SDavid du Colombier 		if(systemtype(Plan9)) {
124*e887ea33SDavid du Colombier 			sprint(incfile,"/%s/include", thestring);
125*e887ea33SDavid du Colombier 			setinclude(strdup(incfile));
126*e887ea33SDavid du Colombier 		}
127*e887ea33SDavid du Colombier 	}
128*e887ea33SDavid du Colombier 
129*e887ea33SDavid du Colombier 	of = mycreat(outfile, 0664);
130*e887ea33SDavid du Colombier 	if(of < 0) {
131*e887ea33SDavid du Colombier 		yyerror("%ca: cannot create %s", thechar, outfile);
132*e887ea33SDavid du Colombier 		errorexit();
133*e887ea33SDavid du Colombier 	}
134*e887ea33SDavid du Colombier 	Binit(&obuf, of, OWRITE);
135*e887ea33SDavid du Colombier 
136*e887ea33SDavid du Colombier 	pass = 1;
137*e887ea33SDavid du Colombier 	pinit(file);
138*e887ea33SDavid du Colombier 	for(i=0; i<nDlist; i++)
139*e887ea33SDavid du Colombier 		dodefine(Dlist[i]);
140*e887ea33SDavid du Colombier 	yyparse();
141*e887ea33SDavid du Colombier 	if(nerrors) {
142*e887ea33SDavid du Colombier 		cclean();
143*e887ea33SDavid du Colombier 		return nerrors;
144*e887ea33SDavid du Colombier 	}
145*e887ea33SDavid du Colombier 
146*e887ea33SDavid du Colombier 	pass = 2;
147*e887ea33SDavid du Colombier 	outhist();
148*e887ea33SDavid du Colombier 	pinit(file);
149*e887ea33SDavid du Colombier 	for(i=0; i<nDlist; i++)
150*e887ea33SDavid du Colombier 		dodefine(Dlist[i]);
151*e887ea33SDavid du Colombier 	yyparse();
152*e887ea33SDavid du Colombier 	cclean();
153*e887ea33SDavid du Colombier 	return nerrors;
154*e887ea33SDavid du Colombier }
155*e887ea33SDavid du Colombier 
156*e887ea33SDavid du Colombier struct
157*e887ea33SDavid du Colombier {
158*e887ea33SDavid du Colombier 	char	*name;
159*e887ea33SDavid du Colombier 	ushort	type;
160*e887ea33SDavid du Colombier 	ushort	value;
161*e887ea33SDavid du Colombier } itab[] =
162*e887ea33SDavid du Colombier {
163*e887ea33SDavid du Colombier 	"SP",		LSP,	D_AUTO,
164*e887ea33SDavid du Colombier 	"SB",		LSB,	D_EXTERN,
165*e887ea33SDavid du Colombier 	"FP",		LFP,	D_PARAM,
166*e887ea33SDavid du Colombier 	"PC",		LPC,	D_BRANCH,
167*e887ea33SDavid du Colombier 
168*e887ea33SDavid du Colombier 	"AL",		LBREG,	D_AL,
169*e887ea33SDavid du Colombier 	"CL",		LBREG,	D_CL,
170*e887ea33SDavid du Colombier 	"DL",		LBREG,	D_DL,
171*e887ea33SDavid du Colombier 	"BL",		LBREG,	D_BL,
172*e887ea33SDavid du Colombier /*	"SPB",		LBREG,	D_SPB,	*/
173*e887ea33SDavid du Colombier 	"SIB",		LBREG,	D_SIB,
174*e887ea33SDavid du Colombier 	"DIB",		LBREG,	D_DIB,
175*e887ea33SDavid du Colombier 	"BPB",		LBREG,	D_BPB,
176*e887ea33SDavid du Colombier 	"R8B",		LBREG,	D_R8B,
177*e887ea33SDavid du Colombier 	"R9B",		LBREG,	D_R9B,
178*e887ea33SDavid du Colombier 	"R10B",		LBREG,	D_R10B,
179*e887ea33SDavid du Colombier 	"R11B",		LBREG,	D_R11B,
180*e887ea33SDavid du Colombier 	"R12B",		LBREG,	D_R12B,
181*e887ea33SDavid du Colombier 	"R13B",		LBREG,	D_R13B,
182*e887ea33SDavid du Colombier 	"R14B",		LBREG,	D_R14B,
183*e887ea33SDavid du Colombier 	"R15B",		LBREG,	D_R15B,
184*e887ea33SDavid du Colombier 
185*e887ea33SDavid du Colombier 	"AH",		LBREG,	D_AH,
186*e887ea33SDavid du Colombier 	"CH",		LBREG,	D_CH,
187*e887ea33SDavid du Colombier 	"DH",		LBREG,	D_DH,
188*e887ea33SDavid du Colombier 	"BH",		LBREG,	D_BH,
189*e887ea33SDavid du Colombier 
190*e887ea33SDavid du Colombier 	"AX",		LLREG,	D_AX,
191*e887ea33SDavid du Colombier 	"CX",		LLREG,	D_CX,
192*e887ea33SDavid du Colombier 	"DX",		LLREG,	D_DX,
193*e887ea33SDavid du Colombier 	"BX",		LLREG,	D_BX,
194*e887ea33SDavid du Colombier /*	"SP",		LLREG,	D_SP,	*/
195*e887ea33SDavid du Colombier 	"BP",		LLREG,	D_BP,
196*e887ea33SDavid du Colombier 	"SI",		LLREG,	D_SI,
197*e887ea33SDavid du Colombier 	"DI",		LLREG,	D_DI,
198*e887ea33SDavid du Colombier 	"R8",		LLREG,	D_R8,
199*e887ea33SDavid du Colombier 	"R9",		LLREG,	D_R9,
200*e887ea33SDavid du Colombier 	"R10",		LLREG,	D_R10,
201*e887ea33SDavid du Colombier 	"R11",		LLREG,	D_R11,
202*e887ea33SDavid du Colombier 	"R12",		LLREG,	D_R12,
203*e887ea33SDavid du Colombier 	"R13",		LLREG,	D_R13,
204*e887ea33SDavid du Colombier 	"R14",		LLREG,	D_R14,
205*e887ea33SDavid du Colombier 	"R15",		LLREG,	D_R15,
206*e887ea33SDavid du Colombier 
207*e887ea33SDavid du Colombier 	"RARG",		LLREG,	REGARG,
208*e887ea33SDavid du Colombier 
209*e887ea33SDavid du Colombier 	"F0",		LFREG,	D_F0+0,
210*e887ea33SDavid du Colombier 	"F1",		LFREG,	D_F0+1,
211*e887ea33SDavid du Colombier 	"F2",		LFREG,	D_F0+2,
212*e887ea33SDavid du Colombier 	"F3",		LFREG,	D_F0+3,
213*e887ea33SDavid du Colombier 	"F4",		LFREG,	D_F0+4,
214*e887ea33SDavid du Colombier 	"F5",		LFREG,	D_F0+5,
215*e887ea33SDavid du Colombier 	"F6",		LFREG,	D_F0+6,
216*e887ea33SDavid du Colombier 	"F7",		LFREG,	D_F0+7,
217*e887ea33SDavid du Colombier 
218*e887ea33SDavid du Colombier 	"M0",		LMREG,	D_M0+0,
219*e887ea33SDavid du Colombier 	"M1",		LMREG,	D_M0+1,
220*e887ea33SDavid du Colombier 	"M2",		LMREG,	D_M0+2,
221*e887ea33SDavid du Colombier 	"M3",		LMREG,	D_M0+3,
222*e887ea33SDavid du Colombier 	"M4",		LMREG,	D_M0+4,
223*e887ea33SDavid du Colombier 	"M5",		LMREG,	D_M0+5,
224*e887ea33SDavid du Colombier 	"M6",		LMREG,	D_M0+6,
225*e887ea33SDavid du Colombier 	"M7",		LMREG,	D_M0+7,
226*e887ea33SDavid du Colombier 
227*e887ea33SDavid du Colombier 	"X0",		LXREG,	D_X0+0,
228*e887ea33SDavid du Colombier 	"X1",		LXREG,	D_X0+1,
229*e887ea33SDavid du Colombier 	"X2",		LXREG,	D_X0+2,
230*e887ea33SDavid du Colombier 	"X3",		LXREG,	D_X0+3,
231*e887ea33SDavid du Colombier 	"X4",		LXREG,	D_X0+4,
232*e887ea33SDavid du Colombier 	"X5",		LXREG,	D_X0+5,
233*e887ea33SDavid du Colombier 	"X6",		LXREG,	D_X0+6,
234*e887ea33SDavid du Colombier 	"X7",		LXREG,	D_X0+7,
235*e887ea33SDavid du Colombier 	"X8",		LXREG,	D_X0+8,
236*e887ea33SDavid du Colombier 	"X9",		LXREG,	D_X0+9,
237*e887ea33SDavid du Colombier 	"X10",		LXREG,	D_X0+10,
238*e887ea33SDavid du Colombier 	"X11",		LXREG,	D_X0+11,
239*e887ea33SDavid du Colombier 	"X12",		LXREG,	D_X0+12,
240*e887ea33SDavid du Colombier 	"X13",		LXREG,	D_X0+13,
241*e887ea33SDavid du Colombier 	"X14",		LXREG,	D_X0+14,
242*e887ea33SDavid du Colombier 	"X15",		LXREG,	D_X0+15,
243*e887ea33SDavid du Colombier 
244*e887ea33SDavid du Colombier 	"CS",		LSREG,	D_CS,
245*e887ea33SDavid du Colombier 	"SS",		LSREG,	D_SS,
246*e887ea33SDavid du Colombier 	"DS",		LSREG,	D_DS,
247*e887ea33SDavid du Colombier 	"ES",		LSREG,	D_ES,
248*e887ea33SDavid du Colombier 	"FS",		LSREG,	D_FS,
249*e887ea33SDavid du Colombier 	"GS",		LSREG,	D_GS,
250*e887ea33SDavid du Colombier 
251*e887ea33SDavid du Colombier 	"GDTR",		LBREG,	D_GDTR,
252*e887ea33SDavid du Colombier 	"IDTR",		LBREG,	D_IDTR,
253*e887ea33SDavid du Colombier 	"LDTR",		LBREG,	D_LDTR,
254*e887ea33SDavid du Colombier 	"MSW",		LBREG,	D_MSW,
255*e887ea33SDavid du Colombier 	"TASK",		LBREG,	D_TASK,
256*e887ea33SDavid du Colombier 
257*e887ea33SDavid du Colombier 	"CR0",		LBREG,	D_CR+0,
258*e887ea33SDavid du Colombier 	"CR1",		LBREG,	D_CR+1,
259*e887ea33SDavid du Colombier 	"CR2",		LBREG,	D_CR+2,
260*e887ea33SDavid du Colombier 	"CR3",		LBREG,	D_CR+3,
261*e887ea33SDavid du Colombier 	"CR4",		LBREG,	D_CR+4,
262*e887ea33SDavid du Colombier 	"CR5",		LBREG,	D_CR+5,
263*e887ea33SDavid du Colombier 	"CR6",		LBREG,	D_CR+6,
264*e887ea33SDavid du Colombier 	"CR7",		LBREG,	D_CR+7,
265*e887ea33SDavid du Colombier 	"CR8",		LBREG,	D_CR+8,
266*e887ea33SDavid du Colombier 	"CR9",		LBREG,	D_CR+9,
267*e887ea33SDavid du Colombier 	"CR10",		LBREG,	D_CR+10,
268*e887ea33SDavid du Colombier 	"CR11",		LBREG,	D_CR+11,
269*e887ea33SDavid du Colombier 	"CR12",		LBREG,	D_CR+12,
270*e887ea33SDavid du Colombier 	"CR13",		LBREG,	D_CR+13,
271*e887ea33SDavid du Colombier 	"CR14",		LBREG,	D_CR+14,
272*e887ea33SDavid du Colombier 	"CR15",		LBREG,	D_CR+15,
273*e887ea33SDavid du Colombier 
274*e887ea33SDavid du Colombier 	"DR0",		LBREG,	D_DR+0,
275*e887ea33SDavid du Colombier 	"DR1",		LBREG,	D_DR+1,
276*e887ea33SDavid du Colombier 	"DR2",		LBREG,	D_DR+2,
277*e887ea33SDavid du Colombier 	"DR3",		LBREG,	D_DR+3,
278*e887ea33SDavid du Colombier 	"DR4",		LBREG,	D_DR+4,
279*e887ea33SDavid du Colombier 	"DR5",		LBREG,	D_DR+5,
280*e887ea33SDavid du Colombier 	"DR6",		LBREG,	D_DR+6,
281*e887ea33SDavid du Colombier 	"DR7",		LBREG,	D_DR+7,
282*e887ea33SDavid du Colombier 
283*e887ea33SDavid du Colombier 	"TR0",		LBREG,	D_TR+0,
284*e887ea33SDavid du Colombier 	"TR1",		LBREG,	D_TR+1,
285*e887ea33SDavid du Colombier 	"TR2",		LBREG,	D_TR+2,
286*e887ea33SDavid du Colombier 	"TR3",		LBREG,	D_TR+3,
287*e887ea33SDavid du Colombier 	"TR4",		LBREG,	D_TR+4,
288*e887ea33SDavid du Colombier 	"TR5",		LBREG,	D_TR+5,
289*e887ea33SDavid du Colombier 	"TR6",		LBREG,	D_TR+6,
290*e887ea33SDavid du Colombier 	"TR7",		LBREG,	D_TR+7,
291*e887ea33SDavid du Colombier 
292*e887ea33SDavid du Colombier 	"AAA",		LTYPE0,	AAAA,
293*e887ea33SDavid du Colombier 	"AAD",		LTYPE0,	AAAD,
294*e887ea33SDavid du Colombier 	"AAM",		LTYPE0,	AAAM,
295*e887ea33SDavid du Colombier 	"AAS",		LTYPE0,	AAAS,
296*e887ea33SDavid du Colombier 	"ADCB",		LTYPE3,	AADCB,
297*e887ea33SDavid du Colombier 	"ADCL",		LTYPE3,	AADCL,
298*e887ea33SDavid du Colombier 	"ADCQ",		LTYPE3,	AADCQ,
299*e887ea33SDavid du Colombier 	"ADCW",		LTYPE3,	AADCW,
300*e887ea33SDavid du Colombier 	"ADDB",		LTYPE3,	AADDB,
301*e887ea33SDavid du Colombier 	"ADDL",		LTYPE3,	AADDL,
302*e887ea33SDavid du Colombier 	"ADDQ",		LTYPE3,	AADDQ,
303*e887ea33SDavid du Colombier 	"ADDW",		LTYPE3,	AADDW,
304*e887ea33SDavid du Colombier 	"ADJSP",	LTYPE2,	AADJSP,
305*e887ea33SDavid du Colombier 	"ANDB",		LTYPE3,	AANDB,
306*e887ea33SDavid du Colombier 	"ANDL",		LTYPE3,	AANDL,
307*e887ea33SDavid du Colombier 	"ANDQ",		LTYPE3,	AANDQ,
308*e887ea33SDavid du Colombier 	"ANDW",		LTYPE3,	AANDW,
309*e887ea33SDavid du Colombier 	"ARPL",		LTYPE3,	AARPL,
310*e887ea33SDavid du Colombier 	"BOUNDL",	LTYPE3,	ABOUNDL,
311*e887ea33SDavid du Colombier 	"BOUNDW",	LTYPE3,	ABOUNDW,
312*e887ea33SDavid du Colombier 	"BSFL",		LTYPE3,	ABSFL,
313*e887ea33SDavid du Colombier 	"BSFQ",		LTYPE3,	ABSFQ,
314*e887ea33SDavid du Colombier 	"BSFW",		LTYPE3,	ABSFW,
315*e887ea33SDavid du Colombier 	"BSRL",		LTYPE3,	ABSRL,
316*e887ea33SDavid du Colombier 	"BSRQ",		LTYPE3,	ABSRQ,
317*e887ea33SDavid du Colombier 	"BSRW",		LTYPE3,	ABSRW,
318*e887ea33SDavid du Colombier 	"BTCL",		LTYPE3,	ABTCL,
319*e887ea33SDavid du Colombier 	"BTCQ",		LTYPE3,	ABTCQ,
320*e887ea33SDavid du Colombier 	"BTCW",		LTYPE3,	ABTCW,
321*e887ea33SDavid du Colombier 	"BTL",		LTYPE3,	ABTL,
322*e887ea33SDavid du Colombier 	"BTQ",		LTYPE3,	ABTQ,
323*e887ea33SDavid du Colombier 	"BTRL",		LTYPE3,	ABTRL,
324*e887ea33SDavid du Colombier 	"BTRQ",		LTYPE3,	ABTRQ,
325*e887ea33SDavid du Colombier 	"BTRW",		LTYPE3,	ABTRW,
326*e887ea33SDavid du Colombier 	"BTSL",		LTYPE3,	ABTSL,
327*e887ea33SDavid du Colombier 	"BTSQ",		LTYPE3,	ABTSQ,
328*e887ea33SDavid du Colombier 	"BTSW",		LTYPE3,	ABTSW,
329*e887ea33SDavid du Colombier 	"BTW",		LTYPE3,	ABTW,
330*e887ea33SDavid du Colombier 	"BYTE",		LTYPE2,	ABYTE,
331*e887ea33SDavid du Colombier 	"CALL",		LTYPEC,	ACALL,
332*e887ea33SDavid du Colombier 	"CLC",		LTYPE0,	ACLC,
333*e887ea33SDavid du Colombier 	"CLD",		LTYPE0,	ACLD,
334*e887ea33SDavid du Colombier 	"CLI",		LTYPE0,	ACLI,
335*e887ea33SDavid du Colombier 	"CLTS",		LTYPE0,	ACLTS,
336*e887ea33SDavid du Colombier 	"CMC",		LTYPE0,	ACMC,
337*e887ea33SDavid du Colombier 	"CMPB",		LTYPE4,	ACMPB,
338*e887ea33SDavid du Colombier 	"CMPL",		LTYPE4,	ACMPL,
339*e887ea33SDavid du Colombier 	"CMPQ",		LTYPE4,	ACMPQ,
340*e887ea33SDavid du Colombier 	"CMPW",		LTYPE4,	ACMPW,
341*e887ea33SDavid du Colombier 	"CMPSB",	LTYPE0,	ACMPSB,
342*e887ea33SDavid du Colombier 	"CMPSL",	LTYPE0,	ACMPSL,
343*e887ea33SDavid du Colombier 	"CMPSQ",	LTYPE0,	ACMPSQ,
344*e887ea33SDavid du Colombier 	"CMPSW",	LTYPE0,	ACMPSW,
345*e887ea33SDavid du Colombier 	"CMPXCHG8B",	LTYPE1,	ACMPXCHG8B,
346*e887ea33SDavid du Colombier 	"CMPXCHGB",	LTYPE3,	ACMPXCHGB,	/* LTYPE3? */
347*e887ea33SDavid du Colombier 	"CMPXCHGL",	LTYPE3,	ACMPXCHGL,
348*e887ea33SDavid du Colombier 	"CMPXCHGQ",	LTYPE3,	ACMPXCHGQ,
349*e887ea33SDavid du Colombier 	"CMPXCHGW",	LTYPE3,	ACMPXCHGW,
350*e887ea33SDavid du Colombier 	"CPUID",	LTYPE0,	ACPUID,
351*e887ea33SDavid du Colombier 	"DAA",		LTYPE0,	ADAA,
352*e887ea33SDavid du Colombier 	"DAS",		LTYPE0,	ADAS,
353*e887ea33SDavid du Colombier 	"DATA",		LTYPED,	ADATA,
354*e887ea33SDavid du Colombier 	"DECB",		LTYPE1,	ADECB,
355*e887ea33SDavid du Colombier 	"DECL",		LTYPE1,	ADECL,
356*e887ea33SDavid du Colombier 	"DECQ",		LTYPE1,	ADECQ,
357*e887ea33SDavid du Colombier 	"DECW",		LTYPE1,	ADECW,
358*e887ea33SDavid du Colombier 	"DIVB",		LTYPE2,	ADIVB,
359*e887ea33SDavid du Colombier 	"DIVL",		LTYPE2,	ADIVL,
360*e887ea33SDavid du Colombier 	"DIVQ",		LTYPE2,	ADIVQ,
361*e887ea33SDavid du Colombier 	"DIVW",		LTYPE2,	ADIVW,
362*e887ea33SDavid du Colombier 	"EMMS",		LTYPE0,	AEMMS,
363*e887ea33SDavid du Colombier 	"END",		LTYPE0,	AEND,
364*e887ea33SDavid du Colombier 	"ENTER",	LTYPE2,	AENTER,
365*e887ea33SDavid du Colombier 	"GLOBL",	LTYPET,	AGLOBL,
366*e887ea33SDavid du Colombier 	"HLT",		LTYPE0,	AHLT,
367*e887ea33SDavid du Colombier 	"IDIVB",	LTYPE2,	AIDIVB,
368*e887ea33SDavid du Colombier 	"IDIVL",	LTYPE2,	AIDIVL,
369*e887ea33SDavid du Colombier 	"IDIVQ",	LTYPE2,	AIDIVQ,
370*e887ea33SDavid du Colombier 	"IDIVW",	LTYPE2,	AIDIVW,
371*e887ea33SDavid du Colombier 	"IMULB",	LTYPEI,	AIMULB,
372*e887ea33SDavid du Colombier 	"IMULL",	LTYPEI,	AIMULL,
373*e887ea33SDavid du Colombier 	"IMULQ",	LTYPEI,	AIMULQ,
374*e887ea33SDavid du Colombier 	"IMULW",	LTYPEI,	AIMULW,
375*e887ea33SDavid du Colombier 	"INB",		LTYPE0,	AINB,
376*e887ea33SDavid du Colombier 	"INL",		LTYPE0,	AINL,
377*e887ea33SDavid du Colombier 	"INW",		LTYPE0,	AINW,
378*e887ea33SDavid du Colombier 	"INCB",		LTYPE1,	AINCB,
379*e887ea33SDavid du Colombier 	"INCL",		LTYPE1,	AINCL,
380*e887ea33SDavid du Colombier 	"INCQ",		LTYPE1,	AINCQ,
381*e887ea33SDavid du Colombier 	"INCW",		LTYPE1,	AINCW,
382*e887ea33SDavid du Colombier 	"INSB",		LTYPE0,	AINSB,
383*e887ea33SDavid du Colombier 	"INSL",		LTYPE0,	AINSL,
384*e887ea33SDavid du Colombier 	"INSW",		LTYPE0,	AINSW,
385*e887ea33SDavid du Colombier 	"INT",		LTYPE2,	AINT,
386*e887ea33SDavid du Colombier 	"INTO",		LTYPE0,	AINTO,
387*e887ea33SDavid du Colombier 	"INVD",		LTYPE0,	AINVD,
388*e887ea33SDavid du Colombier 	"INVLPG",	LTYPE2,	AINVLPG,
389*e887ea33SDavid du Colombier 	"IRETL",	LTYPE0,	AIRETL,
390*e887ea33SDavid du Colombier 	"IRETQ",	LTYPE0,	AIRETQ,
391*e887ea33SDavid du Colombier 	"IRETW",	LTYPE0,	AIRETW,
392*e887ea33SDavid du Colombier 
393*e887ea33SDavid du Colombier 	"JOS",		LTYPER,	AJOS,
394*e887ea33SDavid du Colombier 	"JO",		LTYPER,	AJOS,	/* alternate */
395*e887ea33SDavid du Colombier 	"JOC",		LTYPER,	AJOC,
396*e887ea33SDavid du Colombier 	"JNO",		LTYPER,	AJOC,	/* alternate */
397*e887ea33SDavid du Colombier 	"JCS",		LTYPER,	AJCS,
398*e887ea33SDavid du Colombier 	"JB",		LTYPER,	AJCS,	/* alternate */
399*e887ea33SDavid du Colombier 	"JC",		LTYPER,	AJCS,	/* alternate */
400*e887ea33SDavid du Colombier 	"JNAE",		LTYPER,	AJCS,	/* alternate */
401*e887ea33SDavid du Colombier 	"JLO",		LTYPER,	AJCS,	/* alternate */
402*e887ea33SDavid du Colombier 	"JCC",		LTYPER,	AJCC,
403*e887ea33SDavid du Colombier 	"JAE",		LTYPER,	AJCC,	/* alternate */
404*e887ea33SDavid du Colombier 	"JNB",		LTYPER,	AJCC,	/* alternate */
405*e887ea33SDavid du Colombier 	"JNC",		LTYPER,	AJCC,	/* alternate */
406*e887ea33SDavid du Colombier 	"JHS",		LTYPER,	AJCC,	/* alternate */
407*e887ea33SDavid du Colombier 	"JEQ",		LTYPER,	AJEQ,
408*e887ea33SDavid du Colombier 	"JE",		LTYPER,	AJEQ,	/* alternate */
409*e887ea33SDavid du Colombier 	"JZ",		LTYPER,	AJEQ,	/* alternate */
410*e887ea33SDavid du Colombier 	"JNE",		LTYPER,	AJNE,
411*e887ea33SDavid du Colombier 	"JNZ",		LTYPER,	AJNE,	/* alternate */
412*e887ea33SDavid du Colombier 	"JLS",		LTYPER,	AJLS,
413*e887ea33SDavid du Colombier 	"JBE",		LTYPER,	AJLS,	/* alternate */
414*e887ea33SDavid du Colombier 	"JNA",		LTYPER,	AJLS,	/* alternate */
415*e887ea33SDavid du Colombier 	"JHI",		LTYPER,	AJHI,
416*e887ea33SDavid du Colombier 	"JA",		LTYPER,	AJHI,	/* alternate */
417*e887ea33SDavid du Colombier 	"JNBE",		LTYPER,	AJHI,	/* alternate */
418*e887ea33SDavid du Colombier 	"JMI",		LTYPER,	AJMI,
419*e887ea33SDavid du Colombier 	"JS",		LTYPER,	AJMI,	/* alternate */
420*e887ea33SDavid du Colombier 	"JPL",		LTYPER,	AJPL,
421*e887ea33SDavid du Colombier 	"JNS",		LTYPER,	AJPL,	/* alternate */
422*e887ea33SDavid du Colombier 	"JPS",		LTYPER,	AJPS,
423*e887ea33SDavid du Colombier 	"JP",		LTYPER,	AJPS,	/* alternate */
424*e887ea33SDavid du Colombier 	"JPE",		LTYPER,	AJPS,	/* alternate */
425*e887ea33SDavid du Colombier 	"JPC",		LTYPER,	AJPC,
426*e887ea33SDavid du Colombier 	"JNP",		LTYPER,	AJPC,	/* alternate */
427*e887ea33SDavid du Colombier 	"JPO",		LTYPER,	AJPC,	/* alternate */
428*e887ea33SDavid du Colombier 	"JLT",		LTYPER,	AJLT,
429*e887ea33SDavid du Colombier 	"JL",		LTYPER,	AJLT,	/* alternate */
430*e887ea33SDavid du Colombier 	"JNGE",		LTYPER,	AJLT,	/* alternate */
431*e887ea33SDavid du Colombier 	"JGE",		LTYPER,	AJGE,
432*e887ea33SDavid du Colombier 	"JNL",		LTYPER,	AJGE,	/* alternate */
433*e887ea33SDavid du Colombier 	"JLE",		LTYPER,	AJLE,
434*e887ea33SDavid du Colombier 	"JNG",		LTYPER,	AJLE,	/* alternate */
435*e887ea33SDavid du Colombier 	"JGT",		LTYPER,	AJGT,
436*e887ea33SDavid du Colombier 	"JG",		LTYPER,	AJGT,	/* alternate */
437*e887ea33SDavid du Colombier 	"JNLE",		LTYPER,	AJGT,	/* alternate */
438*e887ea33SDavid du Colombier 
439*e887ea33SDavid du Colombier 	"JCXZ",		LTYPER,	AJCXZ,
440*e887ea33SDavid du Colombier 	"JMP",		LTYPEC,	AJMP,
441*e887ea33SDavid du Colombier 	"LAHF",		LTYPE0,	ALAHF,
442*e887ea33SDavid du Colombier 	"LARL",		LTYPE3,	ALARL,
443*e887ea33SDavid du Colombier 	"LARW",		LTYPE3,	ALARW,
444*e887ea33SDavid du Colombier 	"LEAL",		LTYPE3,	ALEAL,
445*e887ea33SDavid du Colombier 	"LEAQ",		LTYPE3,	ALEAQ,
446*e887ea33SDavid du Colombier 	"LEAW",		LTYPE3,	ALEAW,
447*e887ea33SDavid du Colombier 	"LEAVEL",	LTYPE0,	ALEAVEL,
448*e887ea33SDavid du Colombier 	"LEAVEQ",	LTYPE0,	ALEAVEQ,
449*e887ea33SDavid du Colombier 	"LEAVEW",	LTYPE0,	ALEAVEW,
450*e887ea33SDavid du Colombier 	"LFENCE",	LTYPE0,	ALFENCE,
451*e887ea33SDavid du Colombier 	"LOCK",		LTYPE0,	ALOCK,
452*e887ea33SDavid du Colombier 	"LODSB",	LTYPE0,	ALODSB,
453*e887ea33SDavid du Colombier 	"LODSL",	LTYPE0,	ALODSL,
454*e887ea33SDavid du Colombier 	"LODSQ",	LTYPE0,	ALODSQ,
455*e887ea33SDavid du Colombier 	"LODSW",	LTYPE0,	ALODSW,
456*e887ea33SDavid du Colombier 	"LONG",		LTYPE2,	ALONG,
457*e887ea33SDavid du Colombier 	"LOOP",		LTYPER,	ALOOP,
458*e887ea33SDavid du Colombier 	"LOOPEQ",	LTYPER,	ALOOPEQ,
459*e887ea33SDavid du Colombier 	"LOOPNE",	LTYPER,	ALOOPNE,
460*e887ea33SDavid du Colombier 	"LSLL",		LTYPE3,	ALSLL,
461*e887ea33SDavid du Colombier 	"LSLW",		LTYPE3,	ALSLW,
462*e887ea33SDavid du Colombier 	"MFENCE",	LTYPE0,	AMFENCE,
463*e887ea33SDavid du Colombier 	"MODE",		LTYPE2,	AMODE,
464*e887ea33SDavid du Colombier 	"MOVB",		LTYPE3,	AMOVB,
465*e887ea33SDavid du Colombier 	"MOVL",		LTYPEM,	AMOVL,
466*e887ea33SDavid du Colombier 	"MOVQ",		LTYPEM,	AMOVQ,
467*e887ea33SDavid du Colombier 	"MOVW",		LTYPEM,	AMOVW,
468*e887ea33SDavid du Colombier 	"MOVBLSX",	LTYPE3, AMOVBLSX,
469*e887ea33SDavid du Colombier 	"MOVBLZX",	LTYPE3, AMOVBLZX,
470*e887ea33SDavid du Colombier 	"MOVBQSX",	LTYPE3,	AMOVBQSX,
471*e887ea33SDavid du Colombier 	"MOVBQZX",	LTYPE3,	AMOVBQZX,
472*e887ea33SDavid du Colombier 	"MOVBWSX",	LTYPE3, AMOVBWSX,
473*e887ea33SDavid du Colombier 	"MOVBWZX",	LTYPE3, AMOVBWZX,
474*e887ea33SDavid du Colombier 	"MOVLQSX",	LTYPE3, AMOVLQSX,
475*e887ea33SDavid du Colombier 	"MOVLQZX",	LTYPE3, AMOVLQZX,
476*e887ea33SDavid du Colombier 	"MOVNTIL",	LTYPE3,	AMOVNTIL,
477*e887ea33SDavid du Colombier 	"MOVNTIQ",	LTYPE3,	AMOVNTIQ,
478*e887ea33SDavid du Colombier 	"MOVWLSX",	LTYPE3, AMOVWLSX,
479*e887ea33SDavid du Colombier 	"MOVWLZX",	LTYPE3, AMOVWLZX,
480*e887ea33SDavid du Colombier 	"MOVWQSX",	LTYPE3,	AMOVWQSX,
481*e887ea33SDavid du Colombier 	"MOVWQZX",	LTYPE3,	AMOVWQZX,
482*e887ea33SDavid du Colombier 	"MOVSB",	LTYPE0,	AMOVSB,
483*e887ea33SDavid du Colombier 	"MOVSL",	LTYPE0,	AMOVSL,
484*e887ea33SDavid du Colombier 	"MOVSQ",	LTYPE0,	AMOVSQ,
485*e887ea33SDavid du Colombier 	"MOVSW",	LTYPE0,	AMOVSW,
486*e887ea33SDavid du Colombier 	"MULB",		LTYPE2,	AMULB,
487*e887ea33SDavid du Colombier 	"MULL",		LTYPE2,	AMULL,
488*e887ea33SDavid du Colombier 	"MULQ",		LTYPE2,	AMULQ,
489*e887ea33SDavid du Colombier 	"MULW",		LTYPE2,	AMULW,
490*e887ea33SDavid du Colombier 	"NEGB",		LTYPE1,	ANEGB,
491*e887ea33SDavid du Colombier 	"NEGL",		LTYPE1,	ANEGL,
492*e887ea33SDavid du Colombier 	"NEGQ",		LTYPE1,	ANEGQ,
493*e887ea33SDavid du Colombier 	"NEGW",		LTYPE1,	ANEGW,
494*e887ea33SDavid du Colombier 	"NOP",		LTYPEN,	ANOP,
495*e887ea33SDavid du Colombier 	"NOTB",		LTYPE1,	ANOTB,
496*e887ea33SDavid du Colombier 	"NOTL",		LTYPE1,	ANOTL,
497*e887ea33SDavid du Colombier 	"NOTQ",		LTYPE1,	ANOTQ,
498*e887ea33SDavid du Colombier 	"NOTW",		LTYPE1,	ANOTW,
499*e887ea33SDavid du Colombier 	"ORB",		LTYPE3,	AORB,
500*e887ea33SDavid du Colombier 	"ORL",		LTYPE3,	AORL,
501*e887ea33SDavid du Colombier 	"ORQ",		LTYPE3,	AORQ,
502*e887ea33SDavid du Colombier 	"ORW",		LTYPE3,	AORW,
503*e887ea33SDavid du Colombier 	"OUTB",		LTYPE0,	AOUTB,
504*e887ea33SDavid du Colombier 	"OUTL",		LTYPE0,	AOUTL,
505*e887ea33SDavid du Colombier 	"OUTW",		LTYPE0,	AOUTW,
506*e887ea33SDavid du Colombier 	"OUTSB",	LTYPE0,	AOUTSB,
507*e887ea33SDavid du Colombier 	"OUTSL",	LTYPE0,	AOUTSL,
508*e887ea33SDavid du Colombier 	"OUTSW",	LTYPE0,	AOUTSW,
509*e887ea33SDavid du Colombier 	"POPAL",	LTYPE0,	APOPAL,
510*e887ea33SDavid du Colombier 	"POPAW",	LTYPE0,	APOPAW,
511*e887ea33SDavid du Colombier 	"POPFL",	LTYPE0,	APOPFL,
512*e887ea33SDavid du Colombier 	"POPFQ",	LTYPE0,	APOPFQ,
513*e887ea33SDavid du Colombier 	"POPFW",	LTYPE0,	APOPFW,
514*e887ea33SDavid du Colombier 	"POPL",		LTYPE1,	APOPL,
515*e887ea33SDavid du Colombier 	"POPQ",		LTYPE1,	APOPQ,
516*e887ea33SDavid du Colombier 	"POPW",		LTYPE1,	APOPW,
517*e887ea33SDavid du Colombier 	"PUSHAL",	LTYPE0,	APUSHAL,
518*e887ea33SDavid du Colombier 	"PUSHAW",	LTYPE0,	APUSHAW,
519*e887ea33SDavid du Colombier 	"PUSHFL",	LTYPE0,	APUSHFL,
520*e887ea33SDavid du Colombier 	"PUSHFQ",	LTYPE0,	APUSHFQ,
521*e887ea33SDavid du Colombier 	"PUSHFW",	LTYPE0,	APUSHFW,
522*e887ea33SDavid du Colombier 	"PUSHL",	LTYPE2,	APUSHL,
523*e887ea33SDavid du Colombier 	"PUSHQ",	LTYPE2,	APUSHQ,
524*e887ea33SDavid du Colombier 	"PUSHW",	LTYPE2,	APUSHW,
525*e887ea33SDavid du Colombier 	"RCLB",		LTYPE3,	ARCLB,
526*e887ea33SDavid du Colombier 	"RCLL",		LTYPE3,	ARCLL,
527*e887ea33SDavid du Colombier 	"RCLQ",		LTYPE3,	ARCLQ,
528*e887ea33SDavid du Colombier 	"RCLW",		LTYPE3,	ARCLW,
529*e887ea33SDavid du Colombier 	"RCRB",		LTYPE3,	ARCRB,
530*e887ea33SDavid du Colombier 	"RCRL",		LTYPE3,	ARCRL,
531*e887ea33SDavid du Colombier 	"RCRQ",		LTYPE3,	ARCRQ,
532*e887ea33SDavid du Colombier 	"RCRW",		LTYPE3,	ARCRW,
533*e887ea33SDavid du Colombier 	"RDMSR",	LTYPE0,	ARDMSR,
534*e887ea33SDavid du Colombier 	"RDPMC",	LTYPE0,	ARDPMC,
535*e887ea33SDavid du Colombier 	"RDTSC",	LTYPE0,	ARDTSC,
536*e887ea33SDavid du Colombier 	"REP",		LTYPE0,	AREP,
537*e887ea33SDavid du Colombier 	"REPN",		LTYPE0,	AREPN,
538*e887ea33SDavid du Colombier 	"RET",		LTYPE0,	ARET,
539*e887ea33SDavid du Colombier 	"RETFL",	LTYPERT,ARETFL,
540*e887ea33SDavid du Colombier 	"RETFW",	LTYPERT,ARETFW,
541*e887ea33SDavid du Colombier 	"RETFQ",	LTYPERT,ARETFQ,
542*e887ea33SDavid du Colombier 	"ROLB",		LTYPE3,	AROLB,
543*e887ea33SDavid du Colombier 	"ROLL",		LTYPE3,	AROLL,
544*e887ea33SDavid du Colombier 	"ROLQ",		LTYPE3,	AROLQ,
545*e887ea33SDavid du Colombier 	"ROLW",		LTYPE3,	AROLW,
546*e887ea33SDavid du Colombier 	"RORB",		LTYPE3,	ARORB,
547*e887ea33SDavid du Colombier 	"RORL",		LTYPE3,	ARORL,
548*e887ea33SDavid du Colombier 	"RORQ",		LTYPE3,	ARORQ,
549*e887ea33SDavid du Colombier 	"RORW",		LTYPE3,	ARORW,
550*e887ea33SDavid du Colombier 	"RSM",		LTYPE0,	ARSM,
551*e887ea33SDavid du Colombier 	"SAHF",		LTYPE0,	ASAHF,
552*e887ea33SDavid du Colombier 	"SALB",		LTYPE3,	ASALB,
553*e887ea33SDavid du Colombier 	"SALL",		LTYPE3,	ASALL,
554*e887ea33SDavid du Colombier 	"SALQ",		LTYPE3,	ASALQ,
555*e887ea33SDavid du Colombier 	"SALW",		LTYPE3,	ASALW,
556*e887ea33SDavid du Colombier 	"SARB",		LTYPE3,	ASARB,
557*e887ea33SDavid du Colombier 	"SARL",		LTYPE3,	ASARL,
558*e887ea33SDavid du Colombier 	"SARQ",		LTYPE3,	ASARQ,
559*e887ea33SDavid du Colombier 	"SARW",		LTYPE3,	ASARW,
560*e887ea33SDavid du Colombier 	"SBBB",		LTYPE3,	ASBBB,
561*e887ea33SDavid du Colombier 	"SBBL",		LTYPE3,	ASBBL,
562*e887ea33SDavid du Colombier 	"SBBQ",		LTYPE3,	ASBBQ,
563*e887ea33SDavid du Colombier 	"SBBW",		LTYPE3,	ASBBW,
564*e887ea33SDavid du Colombier 	"SCASB",	LTYPE0,	ASCASB,
565*e887ea33SDavid du Colombier 	"SCASL",	LTYPE0,	ASCASL,
566*e887ea33SDavid du Colombier 	"SCASQ",	LTYPE0,	ASCASQ,
567*e887ea33SDavid du Colombier 	"SCASW",	LTYPE0,	ASCASW,
568*e887ea33SDavid du Colombier 	"SETCC",	LTYPE1,	ASETCC,
569*e887ea33SDavid du Colombier 	"SETCS",	LTYPE1,	ASETCS,
570*e887ea33SDavid du Colombier 	"SETEQ",	LTYPE1,	ASETEQ,
571*e887ea33SDavid du Colombier 	"SETGE",	LTYPE1,	ASETGE,
572*e887ea33SDavid du Colombier 	"SETGT",	LTYPE1,	ASETGT,
573*e887ea33SDavid du Colombier 	"SETHI",	LTYPE1,	ASETHI,
574*e887ea33SDavid du Colombier 	"SETLE",	LTYPE1,	ASETLE,
575*e887ea33SDavid du Colombier 	"SETLS",	LTYPE1,	ASETLS,
576*e887ea33SDavid du Colombier 	"SETLT",	LTYPE1,	ASETLT,
577*e887ea33SDavid du Colombier 	"SETMI",	LTYPE1,	ASETMI,
578*e887ea33SDavid du Colombier 	"SETNE",	LTYPE1,	ASETNE,
579*e887ea33SDavid du Colombier 	"SETOC",	LTYPE1,	ASETOC,
580*e887ea33SDavid du Colombier 	"SETOS",	LTYPE1,	ASETOS,
581*e887ea33SDavid du Colombier 	"SETPC",	LTYPE1,	ASETPC,
582*e887ea33SDavid du Colombier 	"SETPL",	LTYPE1,	ASETPL,
583*e887ea33SDavid du Colombier 	"SETPS",	LTYPE1,	ASETPS,
584*e887ea33SDavid du Colombier 	"SFENCE",	LTYPE0,	ASFENCE,
585*e887ea33SDavid du Colombier 	"CDQ",		LTYPE0,	ACDQ,
586*e887ea33SDavid du Colombier 	"CWD",		LTYPE0,	ACWD,
587*e887ea33SDavid du Colombier 	"CQO",		LTYPE0,	ACQO,
588*e887ea33SDavid du Colombier 	"SHLB",		LTYPE3,	ASHLB,
589*e887ea33SDavid du Colombier 	"SHLL",		LTYPES,	ASHLL,
590*e887ea33SDavid du Colombier 	"SHLQ",		LTYPES,	ASHLQ,
591*e887ea33SDavid du Colombier 	"SHLW",		LTYPES,	ASHLW,
592*e887ea33SDavid du Colombier 	"SHRB",		LTYPE3,	ASHRB,
593*e887ea33SDavid du Colombier 	"SHRL",		LTYPES,	ASHRL,
594*e887ea33SDavid du Colombier 	"SHRQ",		LTYPES,	ASHRQ,
595*e887ea33SDavid du Colombier 	"SHRW",		LTYPES,	ASHRW,
596*e887ea33SDavid du Colombier 	"STC",		LTYPE0,	ASTC,
597*e887ea33SDavid du Colombier 	"STD",		LTYPE0,	ASTD,
598*e887ea33SDavid du Colombier 	"STI",		LTYPE0,	ASTI,
599*e887ea33SDavid du Colombier 	"STOSB",	LTYPE0,	ASTOSB,
600*e887ea33SDavid du Colombier 	"STOSL",	LTYPE0,	ASTOSL,
601*e887ea33SDavid du Colombier 	"STOSQ",	LTYPE0,	ASTOSQ,
602*e887ea33SDavid du Colombier 	"STOSW",	LTYPE0,	ASTOSW,
603*e887ea33SDavid du Colombier 	"SUBB",		LTYPE3,	ASUBB,
604*e887ea33SDavid du Colombier 	"SUBL",		LTYPE3,	ASUBL,
605*e887ea33SDavid du Colombier 	"SUBQ",		LTYPE3,	ASUBQ,
606*e887ea33SDavid du Colombier 	"SUBW",		LTYPE3,	ASUBW,
607*e887ea33SDavid du Colombier 	"SYSCALL",	LTYPE0,	ASYSCALL,
608*e887ea33SDavid du Colombier 	"SYSRET",	LTYPE0,	ASYSRET,
609*e887ea33SDavid du Colombier 	"SWAPGS",	LTYPE0,	ASWAPGS,
610*e887ea33SDavid du Colombier 	"TESTB",	LTYPE3,	ATESTB,
611*e887ea33SDavid du Colombier 	"TESTL",	LTYPE3,	ATESTL,
612*e887ea33SDavid du Colombier 	"TESTQ",	LTYPE3,	ATESTQ,
613*e887ea33SDavid du Colombier 	"TESTW",	LTYPE3,	ATESTW,
614*e887ea33SDavid du Colombier 	"TEXT",		LTYPET,	ATEXT,
615*e887ea33SDavid du Colombier 	"VERR",		LTYPE2,	AVERR,
616*e887ea33SDavid du Colombier 	"VERW",		LTYPE2,	AVERW,
617*e887ea33SDavid du Colombier 	"QUAD",		LTYPE2,	AQUAD,
618*e887ea33SDavid du Colombier 	"WAIT",		LTYPE0,	AWAIT,
619*e887ea33SDavid du Colombier 	"WBINVD",	LTYPE0,	AWBINVD,
620*e887ea33SDavid du Colombier 	"WRMSR",	LTYPE0,	AWRMSR,
621*e887ea33SDavid du Colombier 	"WORD",		LTYPE2,	AWORD,
622*e887ea33SDavid du Colombier 	"XADDB",	LTYPE3,	AXADDB,
623*e887ea33SDavid du Colombier 	"XADDL",	LTYPE3,	AXADDL,
624*e887ea33SDavid du Colombier 	"XADDQ",	LTYPE3,	AXADDQ,
625*e887ea33SDavid du Colombier 	"XADDW",	LTYPE3,	AXADDW,
626*e887ea33SDavid du Colombier 	"XCHGB",	LTYPE3,	AXCHGB,
627*e887ea33SDavid du Colombier 	"XCHGL",	LTYPE3,	AXCHGL,
628*e887ea33SDavid du Colombier 	"XCHGQ",	LTYPE3,	AXCHGQ,
629*e887ea33SDavid du Colombier 	"XCHGW",	LTYPE3,	AXCHGW,
630*e887ea33SDavid du Colombier 	"XLAT",		LTYPE2,	AXLAT,
631*e887ea33SDavid du Colombier 	"XORB",		LTYPE3,	AXORB,
632*e887ea33SDavid du Colombier 	"XORL",		LTYPE3,	AXORL,
633*e887ea33SDavid du Colombier 	"XORQ",		LTYPE3,	AXORQ,
634*e887ea33SDavid du Colombier 	"XORW",		LTYPE3,	AXORW,
635*e887ea33SDavid du Colombier 
636*e887ea33SDavid du Colombier 	"CMOVLCC",	LTYPE3,	ACMOVLCC,
637*e887ea33SDavid du Colombier 	"CMOVLCS",	LTYPE3,	ACMOVLCS,
638*e887ea33SDavid du Colombier 	"CMOVLEQ",	LTYPE3,	ACMOVLEQ,
639*e887ea33SDavid du Colombier 	"CMOVLGE",	LTYPE3,	ACMOVLGE,
640*e887ea33SDavid du Colombier 	"CMOVLGT",	LTYPE3,	ACMOVLGT,
641*e887ea33SDavid du Colombier 	"CMOVLHI",	LTYPE3,	ACMOVLHI,
642*e887ea33SDavid du Colombier 	"CMOVLLE",	LTYPE3,	ACMOVLLE,
643*e887ea33SDavid du Colombier 	"CMOVLLS",	LTYPE3,	ACMOVLLS,
644*e887ea33SDavid du Colombier 	"CMOVLLT",	LTYPE3,	ACMOVLLT,
645*e887ea33SDavid du Colombier 	"CMOVLMI",	LTYPE3,	ACMOVLMI,
646*e887ea33SDavid du Colombier 	"CMOVLNE",	LTYPE3,	ACMOVLNE,
647*e887ea33SDavid du Colombier 	"CMOVLOC",	LTYPE3,	ACMOVLOC,
648*e887ea33SDavid du Colombier 	"CMOVLOS",	LTYPE3,	ACMOVLOS,
649*e887ea33SDavid du Colombier 	"CMOVLPC",	LTYPE3,	ACMOVLPC,
650*e887ea33SDavid du Colombier 	"CMOVLPL",	LTYPE3,	ACMOVLPL,
651*e887ea33SDavid du Colombier 	"CMOVLPS",	LTYPE3,	ACMOVLPS,
652*e887ea33SDavid du Colombier 	"CMOVQCC",	LTYPE3,	ACMOVQCC,
653*e887ea33SDavid du Colombier 	"CMOVQCS",	LTYPE3,	ACMOVQCS,
654*e887ea33SDavid du Colombier 	"CMOVQEQ",	LTYPE3,	ACMOVQEQ,
655*e887ea33SDavid du Colombier 	"CMOVQGE",	LTYPE3,	ACMOVQGE,
656*e887ea33SDavid du Colombier 	"CMOVQGT",	LTYPE3,	ACMOVQGT,
657*e887ea33SDavid du Colombier 	"CMOVQHI",	LTYPE3,	ACMOVQHI,
658*e887ea33SDavid du Colombier 	"CMOVQLE",	LTYPE3,	ACMOVQLE,
659*e887ea33SDavid du Colombier 	"CMOVQLS",	LTYPE3,	ACMOVQLS,
660*e887ea33SDavid du Colombier 	"CMOVQLT",	LTYPE3,	ACMOVQLT,
661*e887ea33SDavid du Colombier 	"CMOVQMI",	LTYPE3,	ACMOVQMI,
662*e887ea33SDavid du Colombier 	"CMOVQNE",	LTYPE3,	ACMOVQNE,
663*e887ea33SDavid du Colombier 	"CMOVQOC",	LTYPE3,	ACMOVQOC,
664*e887ea33SDavid du Colombier 	"CMOVQOS",	LTYPE3,	ACMOVQOS,
665*e887ea33SDavid du Colombier 	"CMOVQPC",	LTYPE3,	ACMOVQPC,
666*e887ea33SDavid du Colombier 	"CMOVQPL",	LTYPE3,	ACMOVQPL,
667*e887ea33SDavid du Colombier 	"CMOVQPS",	LTYPE3,	ACMOVQPS,
668*e887ea33SDavid du Colombier 	"CMOVWCC",	LTYPE3,	ACMOVWCC,
669*e887ea33SDavid du Colombier 	"CMOVWCS",	LTYPE3,	ACMOVWCS,
670*e887ea33SDavid du Colombier 	"CMOVWEQ",	LTYPE3,	ACMOVWEQ,
671*e887ea33SDavid du Colombier 	"CMOVWGE",	LTYPE3,	ACMOVWGE,
672*e887ea33SDavid du Colombier 	"CMOVWGT",	LTYPE3,	ACMOVWGT,
673*e887ea33SDavid du Colombier 	"CMOVWHI",	LTYPE3,	ACMOVWHI,
674*e887ea33SDavid du Colombier 	"CMOVWLE",	LTYPE3,	ACMOVWLE,
675*e887ea33SDavid du Colombier 	"CMOVWLS",	LTYPE3,	ACMOVWLS,
676*e887ea33SDavid du Colombier 	"CMOVWLT",	LTYPE3,	ACMOVWLT,
677*e887ea33SDavid du Colombier 	"CMOVWMI",	LTYPE3,	ACMOVWMI,
678*e887ea33SDavid du Colombier 	"CMOVWNE",	LTYPE3,	ACMOVWNE,
679*e887ea33SDavid du Colombier 	"CMOVWOC",	LTYPE3,	ACMOVWOC,
680*e887ea33SDavid du Colombier 	"CMOVWOS",	LTYPE3,	ACMOVWOS,
681*e887ea33SDavid du Colombier 	"CMOVWPC",	LTYPE3,	ACMOVWPC,
682*e887ea33SDavid du Colombier 	"CMOVWPL",	LTYPE3,	ACMOVWPL,
683*e887ea33SDavid du Colombier 	"CMOVWPS",	LTYPE3,	ACMOVWPS,
684*e887ea33SDavid du Colombier 
685*e887ea33SDavid du Colombier 	"FMOVB",	LTYPE3, AFMOVB,
686*e887ea33SDavid du Colombier 	"FMOVBP",	LTYPE3, AFMOVBP,
687*e887ea33SDavid du Colombier 	"FMOVD",	LTYPE3, AFMOVD,
688*e887ea33SDavid du Colombier 	"FMOVDP",	LTYPE3, AFMOVDP,
689*e887ea33SDavid du Colombier 	"FMOVF",	LTYPE3, AFMOVF,
690*e887ea33SDavid du Colombier 	"FMOVFP",	LTYPE3, AFMOVFP,
691*e887ea33SDavid du Colombier 	"FMOVL",	LTYPE3, AFMOVL,
692*e887ea33SDavid du Colombier 	"FMOVLP",	LTYPE3, AFMOVLP,
693*e887ea33SDavid du Colombier 	"FMOVV",	LTYPE3, AFMOVV,
694*e887ea33SDavid du Colombier 	"FMOVVP",	LTYPE3, AFMOVVP,
695*e887ea33SDavid du Colombier 	"FMOVW",	LTYPE3, AFMOVW,
696*e887ea33SDavid du Colombier 	"FMOVWP",	LTYPE3, AFMOVWP,
697*e887ea33SDavid du Colombier 	"FMOVX",	LTYPE3, AFMOVX,
698*e887ea33SDavid du Colombier 	"FMOVXP",	LTYPE3, AFMOVXP,
699*e887ea33SDavid du Colombier 	"FCOMB",	LTYPE3, AFCOMB,
700*e887ea33SDavid du Colombier 	"FCOMBP",	LTYPE3, AFCOMBP,
701*e887ea33SDavid du Colombier 	"FCOMD",	LTYPE3, AFCOMD,
702*e887ea33SDavid du Colombier 	"FCOMDP",	LTYPE3, AFCOMDP,
703*e887ea33SDavid du Colombier 	"FCOMDPP",	LTYPE3, AFCOMDPP,
704*e887ea33SDavid du Colombier 	"FCOMF",	LTYPE3, AFCOMF,
705*e887ea33SDavid du Colombier 	"FCOMFP",	LTYPE3, AFCOMFP,
706*e887ea33SDavid du Colombier 	"FCOML",	LTYPE3, AFCOML,
707*e887ea33SDavid du Colombier 	"FCOMLP",	LTYPE3, AFCOMLP,
708*e887ea33SDavid du Colombier 	"FCOMW",	LTYPE3, AFCOMW,
709*e887ea33SDavid du Colombier 	"FCOMWP",	LTYPE3, AFCOMWP,
710*e887ea33SDavid du Colombier 	"FUCOM",	LTYPE3, AFUCOM,
711*e887ea33SDavid du Colombier 	"FUCOMP",	LTYPE3, AFUCOMP,
712*e887ea33SDavid du Colombier 	"FUCOMPP",	LTYPE3, AFUCOMPP,
713*e887ea33SDavid du Colombier 	"FADDW",	LTYPE3, AFADDW,
714*e887ea33SDavid du Colombier 	"FADDL",	LTYPE3, AFADDL,
715*e887ea33SDavid du Colombier 	"FADDF",	LTYPE3, AFADDF,
716*e887ea33SDavid du Colombier 	"FADDD",	LTYPE3, AFADDD,
717*e887ea33SDavid du Colombier 	"FADDDP",	LTYPE3, AFADDDP,
718*e887ea33SDavid du Colombier 	"FSUBDP",	LTYPE3, AFSUBDP,
719*e887ea33SDavid du Colombier 	"FSUBW",	LTYPE3, AFSUBW,
720*e887ea33SDavid du Colombier 	"FSUBL",	LTYPE3, AFSUBL,
721*e887ea33SDavid du Colombier 	"FSUBF",	LTYPE3, AFSUBF,
722*e887ea33SDavid du Colombier 	"FSUBD",	LTYPE3, AFSUBD,
723*e887ea33SDavid du Colombier 	"FSUBRDP",	LTYPE3, AFSUBRDP,
724*e887ea33SDavid du Colombier 	"FSUBRW",	LTYPE3, AFSUBRW,
725*e887ea33SDavid du Colombier 	"FSUBRL",	LTYPE3, AFSUBRL,
726*e887ea33SDavid du Colombier 	"FSUBRF",	LTYPE3, AFSUBRF,
727*e887ea33SDavid du Colombier 	"FSUBRD",	LTYPE3, AFSUBRD,
728*e887ea33SDavid du Colombier 	"FMULDP",	LTYPE3, AFMULDP,
729*e887ea33SDavid du Colombier 	"FMULW",	LTYPE3, AFMULW,
730*e887ea33SDavid du Colombier 	"FMULL",	LTYPE3, AFMULL,
731*e887ea33SDavid du Colombier 	"FMULF",	LTYPE3, AFMULF,
732*e887ea33SDavid du Colombier 	"FMULD",	LTYPE3, AFMULD,
733*e887ea33SDavid du Colombier 	"FDIVDP",	LTYPE3, AFDIVDP,
734*e887ea33SDavid du Colombier 	"FDIVW",	LTYPE3, AFDIVW,
735*e887ea33SDavid du Colombier 	"FDIVL",	LTYPE3, AFDIVL,
736*e887ea33SDavid du Colombier 	"FDIVF",	LTYPE3, AFDIVF,
737*e887ea33SDavid du Colombier 	"FDIVD",	LTYPE3, AFDIVD,
738*e887ea33SDavid du Colombier 	"FDIVRDP",	LTYPE3, AFDIVRDP,
739*e887ea33SDavid du Colombier 	"FDIVRW",	LTYPE3, AFDIVRW,
740*e887ea33SDavid du Colombier 	"FDIVRL",	LTYPE3, AFDIVRL,
741*e887ea33SDavid du Colombier 	"FDIVRF",	LTYPE3, AFDIVRF,
742*e887ea33SDavid du Colombier 	"FDIVRD",	LTYPE3, AFDIVRD,
743*e887ea33SDavid du Colombier 	"FXCHD",	LTYPE3, AFXCHD,
744*e887ea33SDavid du Colombier 	"FFREE",	LTYPE1, AFFREE,
745*e887ea33SDavid du Colombier 	"FLDCW",	LTYPE2, AFLDCW,
746*e887ea33SDavid du Colombier 	"FLDENV",	LTYPE1, AFLDENV,
747*e887ea33SDavid du Colombier 	"FRSTOR",	LTYPE2, AFRSTOR,
748*e887ea33SDavid du Colombier 	"FSAVE",	LTYPE1, AFSAVE,
749*e887ea33SDavid du Colombier 	"FSTCW",	LTYPE1, AFSTCW,
750*e887ea33SDavid du Colombier 	"FSTENV",	LTYPE1, AFSTENV,
751*e887ea33SDavid du Colombier 	"FSTSW",	LTYPE1, AFSTSW,
752*e887ea33SDavid du Colombier 	"F2XM1",	LTYPE0, AF2XM1,
753*e887ea33SDavid du Colombier 	"FABS",		LTYPE0, AFABS,
754*e887ea33SDavid du Colombier 	"FCHS",		LTYPE0, AFCHS,
755*e887ea33SDavid du Colombier 	"FCLEX",	LTYPE0, AFCLEX,
756*e887ea33SDavid du Colombier 	"FCOS",		LTYPE0, AFCOS,
757*e887ea33SDavid du Colombier 	"FDECSTP",	LTYPE0, AFDECSTP,
758*e887ea33SDavid du Colombier 	"FINCSTP",	LTYPE0, AFINCSTP,
759*e887ea33SDavid du Colombier 	"FINIT",	LTYPE0, AFINIT,
760*e887ea33SDavid du Colombier 	"FLD1",		LTYPE0, AFLD1,
761*e887ea33SDavid du Colombier 	"FLDL2E",	LTYPE0, AFLDL2E,
762*e887ea33SDavid du Colombier 	"FLDL2T",	LTYPE0, AFLDL2T,
763*e887ea33SDavid du Colombier 	"FLDLG2",	LTYPE0, AFLDLG2,
764*e887ea33SDavid du Colombier 	"FLDLN2",	LTYPE0, AFLDLN2,
765*e887ea33SDavid du Colombier 	"FLDPI",	LTYPE0, AFLDPI,
766*e887ea33SDavid du Colombier 	"FLDZ",		LTYPE0, AFLDZ,
767*e887ea33SDavid du Colombier 	"FNOP",		LTYPE0, AFNOP,
768*e887ea33SDavid du Colombier 	"FPATAN",	LTYPE0, AFPATAN,
769*e887ea33SDavid du Colombier 	"FPREM",	LTYPE0, AFPREM,
770*e887ea33SDavid du Colombier 	"FPREM1",	LTYPE0, AFPREM1,
771*e887ea33SDavid du Colombier 	"FPTAN",	LTYPE0, AFPTAN,
772*e887ea33SDavid du Colombier 	"FRNDINT",	LTYPE0, AFRNDINT,
773*e887ea33SDavid du Colombier 	"FSCALE",	LTYPE0, AFSCALE,
774*e887ea33SDavid du Colombier 	"FSIN",		LTYPE0, AFSIN,
775*e887ea33SDavid du Colombier 	"FSINCOS",	LTYPE0, AFSINCOS,
776*e887ea33SDavid du Colombier 	"FSQRT",	LTYPE0, AFSQRT,
777*e887ea33SDavid du Colombier 	"FTST",		LTYPE0, AFTST,
778*e887ea33SDavid du Colombier 	"FXAM",		LTYPE0, AFXAM,
779*e887ea33SDavid du Colombier 	"FXTRACT",	LTYPE0, AFXTRACT,
780*e887ea33SDavid du Colombier 	"FYL2X",	LTYPE0, AFYL2X,
781*e887ea33SDavid du Colombier 	"FYL2XP1",	LTYPE0, AFYL2XP1,
782*e887ea33SDavid du Colombier 
783*e887ea33SDavid du Colombier 	"ADDPD",	LTYPE3,	AADDPD,
784*e887ea33SDavid du Colombier 	"ADDPS",	LTYPE3,	AADDPS,
785*e887ea33SDavid du Colombier 	"ADDSD",	LTYPE3,	AADDSD,
786*e887ea33SDavid du Colombier 	"ADDSS",	LTYPE3,	AADDSS,
787*e887ea33SDavid du Colombier 	"ANDNPD",	LTYPE3,	AANDNPD,
788*e887ea33SDavid du Colombier 	"ANDNPS",	LTYPE3,	AANDNPS,
789*e887ea33SDavid du Colombier 	"ANDPD",	LTYPE3,	AANDPD,
790*e887ea33SDavid du Colombier 	"ANDPS",	LTYPE3,	AANDPS,
791*e887ea33SDavid du Colombier 	"CMPPD",	LTYPEXC,ACMPPD,
792*e887ea33SDavid du Colombier 	"CMPPS",	LTYPEXC,ACMPPS,
793*e887ea33SDavid du Colombier 	"CMPSD",	LTYPEXC,ACMPSD,
794*e887ea33SDavid du Colombier 	"CMPSS",	LTYPEXC,ACMPSS,
795*e887ea33SDavid du Colombier 	"COMISD",	LTYPE3,	ACOMISD,
796*e887ea33SDavid du Colombier 	"COMISS",	LTYPE3,	ACOMISS,
797*e887ea33SDavid du Colombier 	"CVTPL2PD",	LTYPE3,	ACVTPL2PD,
798*e887ea33SDavid du Colombier 	"CVTPL2PS",	LTYPE3,	ACVTPL2PS,
799*e887ea33SDavid du Colombier 	"CVTPD2PL",	LTYPE3,	ACVTPD2PL,
800*e887ea33SDavid du Colombier 	"CVTPD2PS",	LTYPE3,	ACVTPD2PS,
801*e887ea33SDavid du Colombier 	"CVTPS2PL",	LTYPE3,	ACVTPS2PL,
802*e887ea33SDavid du Colombier 	"PF2IW",	LTYPE3,	APF2IW,
803*e887ea33SDavid du Colombier 	"PF2IL",	LTYPE3,	APF2IL,
804*e887ea33SDavid du Colombier 	"PF2ID",	LTYPE3,	APF2IL,	/* syn */
805*e887ea33SDavid du Colombier 	"PI2FL",	LTYPE3,	API2FL,
806*e887ea33SDavid du Colombier 	"PI2FD",	LTYPE3,	API2FL,	/* syn */
807*e887ea33SDavid du Colombier 	"PI2FW",	LTYPE3,	API2FW,
808*e887ea33SDavid du Colombier 	"CVTPS2PD",	LTYPE3,	ACVTPS2PD,
809*e887ea33SDavid du Colombier 	"CVTSD2SL",	LTYPE3,	ACVTSD2SL,
810*e887ea33SDavid du Colombier 	"CVTSD2SQ",	LTYPE3,	ACVTSD2SQ,
811*e887ea33SDavid du Colombier 	"CVTSD2SS",	LTYPE3,	ACVTSD2SS,
812*e887ea33SDavid du Colombier 	"CVTSL2SD",	LTYPE3,	ACVTSL2SD,
813*e887ea33SDavid du Colombier 	"CVTSQ2SD",	LTYPE3,	ACVTSQ2SD,
814*e887ea33SDavid du Colombier 	"CVTSL2SS",	LTYPE3,	ACVTSL2SS,
815*e887ea33SDavid du Colombier 	"CVTSQ2SS",	LTYPE3,	ACVTSQ2SS,
816*e887ea33SDavid du Colombier 	"CVTSS2SD",	LTYPE3,	ACVTSS2SD,
817*e887ea33SDavid du Colombier 	"CVTSS2SL",	LTYPE3,	ACVTSS2SL,
818*e887ea33SDavid du Colombier 	"CVTSS2SQ",	LTYPE3,	ACVTSS2SQ,
819*e887ea33SDavid du Colombier 	"CVTTPD2PL",	LTYPE3,	ACVTTPD2PL,
820*e887ea33SDavid du Colombier 	"CVTTPS2PL",	LTYPE3,	ACVTTPS2PL,
821*e887ea33SDavid du Colombier 	"CVTTSD2SL",	LTYPE3,	ACVTTSD2SL,
822*e887ea33SDavid du Colombier 	"CVTTSD2SQ",	LTYPE3,	ACVTTSD2SQ,
823*e887ea33SDavid du Colombier 	"CVTTSS2SL",	LTYPE3,	ACVTTSS2SL,
824*e887ea33SDavid du Colombier 	"CVTTSS2SQ",	LTYPE3,	ACVTTSS2SQ,
825*e887ea33SDavid du Colombier 	"DIVPD",	LTYPE3,	ADIVPD,
826*e887ea33SDavid du Colombier 	"DIVPS",	LTYPE3,	ADIVPS,
827*e887ea33SDavid du Colombier 	"DIVSD",	LTYPE3,	ADIVSD,
828*e887ea33SDavid du Colombier 	"DIVSS",	LTYPE3,	ADIVSS,
829*e887ea33SDavid du Colombier 	"FXRSTOR",	LTYPE2,	AFXRSTOR,
830*e887ea33SDavid du Colombier 	"FXRSTOR64",	LTYPE2,	AFXRSTOR64,
831*e887ea33SDavid du Colombier 	"FXSAVE",	LTYPE1,	AFXSAVE,
832*e887ea33SDavid du Colombier 	"FXSAVE64",	LTYPE1,	AFXSAVE64,
833*e887ea33SDavid du Colombier 	"LDMXCSR",	LTYPE2,	ALDMXCSR,
834*e887ea33SDavid du Colombier 	"MASKMOVOU",	LTYPE3,	AMASKMOVOU,
835*e887ea33SDavid du Colombier 	"MASKMOVDQU",	LTYPE3,	AMASKMOVOU,	/* syn */
836*e887ea33SDavid du Colombier 	"MASKMOVQ",	LTYPE3,	AMASKMOVQ,
837*e887ea33SDavid du Colombier 	"MAXPD",	LTYPE3,	AMAXPD,
838*e887ea33SDavid du Colombier 	"MAXPS",	LTYPE3,	AMAXPS,
839*e887ea33SDavid du Colombier 	"MAXSD",	LTYPE3,	AMAXSD,
840*e887ea33SDavid du Colombier 	"MAXSS",	LTYPE3,	AMAXSS,
841*e887ea33SDavid du Colombier 	"MINPD",	LTYPE3,	AMINPD,
842*e887ea33SDavid du Colombier 	"MINPS",	LTYPE3,	AMINPS,
843*e887ea33SDavid du Colombier 	"MINSD",	LTYPE3,	AMINSD,
844*e887ea33SDavid du Colombier 	"MINSS",	LTYPE3,	AMINSS,
845*e887ea33SDavid du Colombier 	"MOVAPD",	LTYPE3,	AMOVAPD,
846*e887ea33SDavid du Colombier 	"MOVAPS",	LTYPE3,	AMOVAPS,
847*e887ea33SDavid du Colombier 	"MOVD",		LTYPE3,	AMOVQ,	/* syn */
848*e887ea33SDavid du Colombier 	"MOVDQ2Q",	LTYPE3,	AMOVQ,	/* syn */
849*e887ea33SDavid du Colombier 	"MOVO",		LTYPE3,	AMOVO,
850*e887ea33SDavid du Colombier 	"MOVOA",	LTYPE3,	AMOVO,	/* syn */
851*e887ea33SDavid du Colombier 	"MOVOU",	LTYPE3,	AMOVOU,
852*e887ea33SDavid du Colombier 	"MOVHLPS",	LTYPE3,	AMOVHLPS,
853*e887ea33SDavid du Colombier 	"MOVHPD",	LTYPE3,	AMOVHPD,
854*e887ea33SDavid du Colombier 	"MOVHPS",	LTYPE3,	AMOVHPS,
855*e887ea33SDavid du Colombier 	"MOVLHPS",	LTYPE3,	AMOVLHPS,
856*e887ea33SDavid du Colombier 	"MOVLPD",	LTYPE3,	AMOVLPD,
857*e887ea33SDavid du Colombier 	"MOVLPS",	LTYPE3,	AMOVLPS,
858*e887ea33SDavid du Colombier 	"MOVMSKPD",	LTYPE3,	AMOVMSKPD,
859*e887ea33SDavid du Colombier 	"MOVMSKPS",	LTYPE3,	AMOVMSKPS,
860*e887ea33SDavid du Colombier 	"MOVNTO",	LTYPE3,	AMOVNTO,
861*e887ea33SDavid du Colombier 	"MOVNTDQ",	LTYPE3,	AMOVNTO,	/* syn */
862*e887ea33SDavid du Colombier 	"MOVNTPD",	LTYPE3,	AMOVNTPD,
863*e887ea33SDavid du Colombier 	"MOVNTPS",	LTYPE3,	AMOVNTPS,
864*e887ea33SDavid du Colombier 	"MOVNTQ",	LTYPE3,	AMOVNTQ,
865*e887ea33SDavid du Colombier 	"MOVQOZX",	LTYPE3,	AMOVQOZX,
866*e887ea33SDavid du Colombier 	"MOVSD",	LTYPE3,	AMOVSD,
867*e887ea33SDavid du Colombier 	"MOVSS",	LTYPE3,	AMOVSS,
868*e887ea33SDavid du Colombier 	"MOVUPD",	LTYPE3,	AMOVUPD,
869*e887ea33SDavid du Colombier 	"MOVUPS",	LTYPE3,	AMOVUPS,
870*e887ea33SDavid du Colombier 	"MULPD",	LTYPE3,	AMULPD,
871*e887ea33SDavid du Colombier 	"MULPS",	LTYPE3,	AMULPS,
872*e887ea33SDavid du Colombier 	"MULSD",	LTYPE3,	AMULSD,
873*e887ea33SDavid du Colombier 	"MULSS",	LTYPE3,	AMULSS,
874*e887ea33SDavid du Colombier 	"ORPD",		LTYPE3,	AORPD,
875*e887ea33SDavid du Colombier 	"ORPS",		LTYPE3,	AORPS,
876*e887ea33SDavid du Colombier 	"PACKSSLW",	LTYPE3,	APACKSSLW,
877*e887ea33SDavid du Colombier 	"PACKSSWB",	LTYPE3,	APACKSSWB,
878*e887ea33SDavid du Colombier 	"PACKUSWB",	LTYPE3,	APACKUSWB,
879*e887ea33SDavid du Colombier 	"PADDB",	LTYPE3,	APADDB,
880*e887ea33SDavid du Colombier 	"PADDL",	LTYPE3,	APADDL,
881*e887ea33SDavid du Colombier 	"PADDQ",	LTYPE3,	APADDQ,
882*e887ea33SDavid du Colombier 	"PADDSB",	LTYPE3,	APADDSB,
883*e887ea33SDavid du Colombier 	"PADDSW",	LTYPE3,	APADDSW,
884*e887ea33SDavid du Colombier 	"PADDUSB",	LTYPE3,	APADDUSB,
885*e887ea33SDavid du Colombier 	"PADDUSW",	LTYPE3,	APADDUSW,
886*e887ea33SDavid du Colombier 	"PADDW",	LTYPE3,	APADDW,
887*e887ea33SDavid du Colombier 	"PAND",		LTYPE3, APAND,
888*e887ea33SDavid du Colombier 	"PANDB",	LTYPE3,	APANDB,
889*e887ea33SDavid du Colombier 	"PANDL",	LTYPE3,	APANDL,
890*e887ea33SDavid du Colombier 	"PANDSB",	LTYPE3,	APANDSB,
891*e887ea33SDavid du Colombier 	"PANDSW",	LTYPE3,	APANDSW,
892*e887ea33SDavid du Colombier 	"PANDUSB",	LTYPE3,	APANDUSB,
893*e887ea33SDavid du Colombier 	"PANDUSW",	LTYPE3,	APANDUSW,
894*e887ea33SDavid du Colombier 	"PANDW",	LTYPE3,	APANDW,
895*e887ea33SDavid du Colombier 	"PANDN",	LTYPE3, APANDN,
896*e887ea33SDavid du Colombier 	"PAVGB",	LTYPE3,	APAVGB,
897*e887ea33SDavid du Colombier 	"PAVGW",	LTYPE3,	APAVGW,
898*e887ea33SDavid du Colombier 	"PCMPEQB",	LTYPE3,	APCMPEQB,
899*e887ea33SDavid du Colombier 	"PCMPEQL",	LTYPE3,	APCMPEQL,
900*e887ea33SDavid du Colombier 	"PCMPEQW",	LTYPE3,	APCMPEQW,
901*e887ea33SDavid du Colombier 	"PCMPGTB",	LTYPE3,	APCMPGTB,
902*e887ea33SDavid du Colombier 	"PCMPGTL",	LTYPE3,	APCMPGTL,
903*e887ea33SDavid du Colombier 	"PCMPGTW",	LTYPE3,	APCMPGTW,
904*e887ea33SDavid du Colombier 	"PEXTRW",	LTYPEX,	APEXTRW,
905*e887ea33SDavid du Colombier 	"PINSRW",	LTYPEX,	APINSRW,
906*e887ea33SDavid du Colombier 	"PMADDWL",	LTYPE3,	APMADDWL,
907*e887ea33SDavid du Colombier 	"PMAXSW",	LTYPE3,	APMAXSW,
908*e887ea33SDavid du Colombier 	"PMAXUB",	LTYPE3,	APMAXUB,
909*e887ea33SDavid du Colombier 	"PMINSW",	LTYPE3,	APMINSW,
910*e887ea33SDavid du Colombier 	"PMINUB",	LTYPE3,	APMINUB,
911*e887ea33SDavid du Colombier 	"PMOVMSKB",	LTYPE3,	APMOVMSKB,
912*e887ea33SDavid du Colombier 	"PMULHRW",	LTYPE3,	APMULHRW,
913*e887ea33SDavid du Colombier 	"PMULHUW",	LTYPE3,	APMULHUW,
914*e887ea33SDavid du Colombier 	"PMULHW",	LTYPE3,	APMULHW,
915*e887ea33SDavid du Colombier 	"PMULLW",	LTYPE3,	APMULLW,
916*e887ea33SDavid du Colombier 	"PMULULQ",	LTYPE3,	APMULULQ,
917*e887ea33SDavid du Colombier 	"POR",		LTYPE3,	APOR,
918*e887ea33SDavid du Colombier 	"PSADBW",	LTYPE3,	APSADBW,
919*e887ea33SDavid du Colombier 	"PSHUFHW",	LTYPEX,	APSHUFHW,
920*e887ea33SDavid du Colombier 	"PSHUFL",	LTYPEX,	APSHUFL,
921*e887ea33SDavid du Colombier 	"PSHUFLW",	LTYPEX,	APSHUFLW,
922*e887ea33SDavid du Colombier 	"PSHUFW",	LTYPEX, APSHUFW,
923*e887ea33SDavid du Colombier 	"PSLLO",	LTYPE3,	APSLLO,
924*e887ea33SDavid du Colombier 	"PSLLDQ",	LTYPE3,	APSLLO,	/* syn */
925*e887ea33SDavid du Colombier 	"PSLLL",	LTYPE3,	APSLLL,
926*e887ea33SDavid du Colombier 	"PSLLQ",	LTYPE3,	APSLLQ,
927*e887ea33SDavid du Colombier 	"PSLLW",	LTYPE3,	APSLLW,
928*e887ea33SDavid du Colombier 	"PSRAL",	LTYPE3,	APSRAL,
929*e887ea33SDavid du Colombier 	"PSRAW",	LTYPE3,	APSRAW,
930*e887ea33SDavid du Colombier 	"PSRLO",	LTYPE3,	APSRLO,
931*e887ea33SDavid du Colombier 	"PSRLDQ",	LTYPE3,	APSRLO,	/* syn */
932*e887ea33SDavid du Colombier 	"PSRLL",	LTYPE3,	APSRLL,
933*e887ea33SDavid du Colombier 	"PSRLQ",	LTYPE3,	APSRLQ,
934*e887ea33SDavid du Colombier 	"PSRLW",	LTYPE3,	APSRLW,
935*e887ea33SDavid du Colombier 	"PSUBB",	LTYPE3,	APSUBB,
936*e887ea33SDavid du Colombier 	"PSUBL",	LTYPE3,	APSUBL,
937*e887ea33SDavid du Colombier 	"PSUBQ",	LTYPE3,	APSUBQ,
938*e887ea33SDavid du Colombier 	"PSUBSB",	LTYPE3,	APSUBSB,
939*e887ea33SDavid du Colombier 	"PSUBSW",	LTYPE3,	APSUBSW,
940*e887ea33SDavid du Colombier 	"PSUBUSB",	LTYPE3,	APSUBUSB,
941*e887ea33SDavid du Colombier 	"PSUBUSW",	LTYPE3,	APSUBUSW,
942*e887ea33SDavid du Colombier 	"PSUBW",	LTYPE3,	APSUBW,
943*e887ea33SDavid du Colombier 	"PUNPCKHBW",	LTYPE3,	APUNPCKHBW,
944*e887ea33SDavid du Colombier 	"PUNPCKHLQ",	LTYPE3,	APUNPCKHLQ,
945*e887ea33SDavid du Colombier 	"PUNPCKHQDQ",	LTYPE3,	APUNPCKHQDQ,
946*e887ea33SDavid du Colombier 	"PUNPCKHWL",	LTYPE3,	APUNPCKHWL,
947*e887ea33SDavid du Colombier 	"PUNPCKLBW",	LTYPE3,	APUNPCKLBW,
948*e887ea33SDavid du Colombier 	"PUNPCKLLQ",	LTYPE3,	APUNPCKLLQ,
949*e887ea33SDavid du Colombier 	"PUNPCKLQDQ",	LTYPE3,	APUNPCKLQDQ,
950*e887ea33SDavid du Colombier 	"PUNPCKLWL",	LTYPE3,	APUNPCKLWL,
951*e887ea33SDavid du Colombier 	"PXOR",		LTYPE3,	APXOR,
952*e887ea33SDavid du Colombier 	"RCPPS",	LTYPE3,	ARCPPS,
953*e887ea33SDavid du Colombier 	"RCPSS",	LTYPE3,	ARCPSS,
954*e887ea33SDavid du Colombier 	"RSQRTPS",	LTYPE3,	ARSQRTPS,
955*e887ea33SDavid du Colombier 	"RSQRTSS",	LTYPE3,	ARSQRTSS,
956*e887ea33SDavid du Colombier 	"SHUFPD",	LTYPEX,	ASHUFPD,
957*e887ea33SDavid du Colombier 	"SHUFPS",	LTYPEX,	ASHUFPS,
958*e887ea33SDavid du Colombier 	"SQRTPD",	LTYPE3,	ASQRTPD,
959*e887ea33SDavid du Colombier 	"SQRTPS",	LTYPE3,	ASQRTPS,
960*e887ea33SDavid du Colombier 	"SQRTSD",	LTYPE3,	ASQRTSD,
961*e887ea33SDavid du Colombier 	"SQRTSS",	LTYPE3,	ASQRTSS,
962*e887ea33SDavid du Colombier 	"STMXCSR",	LTYPE1,	ASTMXCSR,
963*e887ea33SDavid du Colombier 	"SUBPD",	LTYPE3,	ASUBPD,
964*e887ea33SDavid du Colombier 	"SUBPS",	LTYPE3,	ASUBPS,
965*e887ea33SDavid du Colombier 	"SUBSD",	LTYPE3,	ASUBSD,
966*e887ea33SDavid du Colombier 	"SUBSS",	LTYPE3,	ASUBSS,
967*e887ea33SDavid du Colombier 	"UCOMISD",	LTYPE3,	AUCOMISD,
968*e887ea33SDavid du Colombier 	"UCOMISS",	LTYPE3,	AUCOMISS,
969*e887ea33SDavid du Colombier 	"UNPCKHPD",	LTYPE3,	AUNPCKHPD,
970*e887ea33SDavid du Colombier 	"UNPCKHPS",	LTYPE3,	AUNPCKHPS,
971*e887ea33SDavid du Colombier 	"UNPCKLPD",	LTYPE3,	AUNPCKLPD,
972*e887ea33SDavid du Colombier 	"UNPCKLPS",	LTYPE3,	AUNPCKLPS,
973*e887ea33SDavid du Colombier 	"XORPD",	LTYPE3,	AXORPD,
974*e887ea33SDavid du Colombier 	"XORPS",	LTYPE3,	AXORPS,
975*e887ea33SDavid du Colombier 
976*e887ea33SDavid du Colombier 	0
977*e887ea33SDavid du Colombier };
978*e887ea33SDavid du Colombier 
979*e887ea33SDavid du Colombier void
cinit(void)980*e887ea33SDavid du Colombier cinit(void)
981*e887ea33SDavid du Colombier {
982*e887ea33SDavid du Colombier 	Sym *s;
983*e887ea33SDavid du Colombier 	int i;
984*e887ea33SDavid du Colombier 
985*e887ea33SDavid du Colombier 	nullgen.sym = S;
986*e887ea33SDavid du Colombier 	nullgen.offset = 0;
987*e887ea33SDavid du Colombier 	if(FPCHIP)
988*e887ea33SDavid du Colombier 		nullgen.dval = 0;
989*e887ea33SDavid du Colombier 	for(i=0; i<sizeof(nullgen.sval); i++)
990*e887ea33SDavid du Colombier 		nullgen.sval[i] = 0;
991*e887ea33SDavid du Colombier 	nullgen.type = D_NONE;
992*e887ea33SDavid du Colombier 	nullgen.index = D_NONE;
993*e887ea33SDavid du Colombier 	nullgen.scale = 0;
994*e887ea33SDavid du Colombier 
995*e887ea33SDavid du Colombier 	nerrors = 0;
996*e887ea33SDavid du Colombier 	iostack = I;
997*e887ea33SDavid du Colombier 	iofree = I;
998*e887ea33SDavid du Colombier 	peekc = IGN;
999*e887ea33SDavid du Colombier 	nhunk = 0;
1000*e887ea33SDavid du Colombier 	for(i=0; i<NHASH; i++)
1001*e887ea33SDavid du Colombier 		hash[i] = S;
1002*e887ea33SDavid du Colombier 	for(i=0; itab[i].name; i++) {
1003*e887ea33SDavid du Colombier 		s = slookup(itab[i].name);
1004*e887ea33SDavid du Colombier 		if(s->type != LNAME)
1005*e887ea33SDavid du Colombier 			yyerror("double initialization %s", itab[i].name);
1006*e887ea33SDavid du Colombier 		s->type = itab[i].type;
1007*e887ea33SDavid du Colombier 		s->value = itab[i].value;
1008*e887ea33SDavid du Colombier 	}
1009*e887ea33SDavid du Colombier 
1010*e887ea33SDavid du Colombier 	pathname = allocn(pathname, 0, 100);
1011*e887ea33SDavid du Colombier 	if(mygetwd(pathname, 99) == 0) {
1012*e887ea33SDavid du Colombier 		pathname = allocn(pathname, 100, 900);
1013*e887ea33SDavid du Colombier 		if(mygetwd(pathname, 999) == 0)
1014*e887ea33SDavid du Colombier 			strcpy(pathname, "/???");
1015*e887ea33SDavid du Colombier 	}
1016*e887ea33SDavid du Colombier }
1017*e887ea33SDavid du Colombier 
1018*e887ea33SDavid du Colombier void
checkscale(int scale)1019*e887ea33SDavid du Colombier checkscale(int scale)
1020*e887ea33SDavid du Colombier {
1021*e887ea33SDavid du Colombier 
1022*e887ea33SDavid du Colombier 	switch(scale) {
1023*e887ea33SDavid du Colombier 	case 1:
1024*e887ea33SDavid du Colombier 	case 2:
1025*e887ea33SDavid du Colombier 	case 4:
1026*e887ea33SDavid du Colombier 	case 8:
1027*e887ea33SDavid du Colombier 		return;
1028*e887ea33SDavid du Colombier 	}
1029*e887ea33SDavid du Colombier 	yyerror("scale must be 1248: %d", scale);
1030*e887ea33SDavid du Colombier }
1031*e887ea33SDavid du Colombier 
1032*e887ea33SDavid du Colombier void
syminit(Sym * s)1033*e887ea33SDavid du Colombier syminit(Sym *s)
1034*e887ea33SDavid du Colombier {
1035*e887ea33SDavid du Colombier 
1036*e887ea33SDavid du Colombier 	s->type = LNAME;
1037*e887ea33SDavid du Colombier 	s->value = 0;
1038*e887ea33SDavid du Colombier }
1039*e887ea33SDavid du Colombier 
1040*e887ea33SDavid du Colombier void
cclean(void)1041*e887ea33SDavid du Colombier cclean(void)
1042*e887ea33SDavid du Colombier {
1043*e887ea33SDavid du Colombier 	Gen2 g2;
1044*e887ea33SDavid du Colombier 
1045*e887ea33SDavid du Colombier 	g2.from = nullgen;
1046*e887ea33SDavid du Colombier 	g2.to = nullgen;
1047*e887ea33SDavid du Colombier 	outcode(AEND, &g2);
1048*e887ea33SDavid du Colombier 	Bflush(&obuf);
1049*e887ea33SDavid du Colombier }
1050*e887ea33SDavid du Colombier 
1051*e887ea33SDavid du Colombier void
zname(char * n,int t,int s)1052*e887ea33SDavid du Colombier zname(char *n, int t, int s)
1053*e887ea33SDavid du Colombier {
1054*e887ea33SDavid du Colombier 
1055*e887ea33SDavid du Colombier 	Bputc(&obuf, ANAME);		/* as(2) */
1056*e887ea33SDavid du Colombier 	Bputc(&obuf, ANAME>>8);
1057*e887ea33SDavid du Colombier 	Bputc(&obuf, t);		/* type */
1058*e887ea33SDavid du Colombier 	Bputc(&obuf, s);		/* sym */
1059*e887ea33SDavid du Colombier 	while(*n) {
1060*e887ea33SDavid du Colombier 		Bputc(&obuf, *n);
1061*e887ea33SDavid du Colombier 		n++;
1062*e887ea33SDavid du Colombier 	}
1063*e887ea33SDavid du Colombier 	Bputc(&obuf, 0);
1064*e887ea33SDavid du Colombier }
1065*e887ea33SDavid du Colombier 
1066*e887ea33SDavid du Colombier void
zaddr(Gen * a,int s)1067*e887ea33SDavid du Colombier zaddr(Gen *a, int s)
1068*e887ea33SDavid du Colombier {
1069*e887ea33SDavid du Colombier 	long l;
1070*e887ea33SDavid du Colombier 	int i, t;
1071*e887ea33SDavid du Colombier 	char *n;
1072*e887ea33SDavid du Colombier 	Ieee e;
1073*e887ea33SDavid du Colombier 
1074*e887ea33SDavid du Colombier 	t = 0;
1075*e887ea33SDavid du Colombier 	if(a->index != D_NONE || a->scale != 0)
1076*e887ea33SDavid du Colombier 		t |= T_INDEX;
1077*e887ea33SDavid du Colombier 	if(a->offset != 0) {
1078*e887ea33SDavid du Colombier 		t |= T_OFFSET;
1079*e887ea33SDavid du Colombier 		l = a->offset;
1080*e887ea33SDavid du Colombier 		if((vlong)l != a->offset)
1081*e887ea33SDavid du Colombier 			t |= T_64;
1082*e887ea33SDavid du Colombier 	}
1083*e887ea33SDavid du Colombier 	if(s != 0)
1084*e887ea33SDavid du Colombier 		t |= T_SYM;
1085*e887ea33SDavid du Colombier 
1086*e887ea33SDavid du Colombier 	switch(a->type) {
1087*e887ea33SDavid du Colombier 	default:
1088*e887ea33SDavid du Colombier 		t |= T_TYPE;
1089*e887ea33SDavid du Colombier 		break;
1090*e887ea33SDavid du Colombier 	case D_FCONST:
1091*e887ea33SDavid du Colombier 		t |= T_FCONST;
1092*e887ea33SDavid du Colombier 		break;
1093*e887ea33SDavid du Colombier 	case D_SCONST:
1094*e887ea33SDavid du Colombier 		t |= T_SCONST;
1095*e887ea33SDavid du Colombier 		break;
1096*e887ea33SDavid du Colombier 	case D_NONE:
1097*e887ea33SDavid du Colombier 		break;
1098*e887ea33SDavid du Colombier 	}
1099*e887ea33SDavid du Colombier 	Bputc(&obuf, t);
1100*e887ea33SDavid du Colombier 
1101*e887ea33SDavid du Colombier 	if(t & T_INDEX) {	/* implies index, scale */
1102*e887ea33SDavid du Colombier 		Bputc(&obuf, a->index);
1103*e887ea33SDavid du Colombier 		Bputc(&obuf, a->scale);
1104*e887ea33SDavid du Colombier 	}
1105*e887ea33SDavid du Colombier 	if(t & T_OFFSET) {	/* implies offset */
1106*e887ea33SDavid du Colombier 		l = a->offset;
1107*e887ea33SDavid du Colombier 		Bputc(&obuf, l);
1108*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>8);
1109*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>16);
1110*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>24);
1111*e887ea33SDavid du Colombier 		if(t & T_64) {
1112*e887ea33SDavid du Colombier 			l = a->offset>>32;
1113*e887ea33SDavid du Colombier 			Bputc(&obuf, l);
1114*e887ea33SDavid du Colombier 			Bputc(&obuf, l>>8);
1115*e887ea33SDavid du Colombier 			Bputc(&obuf, l>>16);
1116*e887ea33SDavid du Colombier 			Bputc(&obuf, l>>24);
1117*e887ea33SDavid du Colombier 		}
1118*e887ea33SDavid du Colombier 	}
1119*e887ea33SDavid du Colombier 	if(t & T_SYM)		/* implies sym */
1120*e887ea33SDavid du Colombier 		Bputc(&obuf, s);
1121*e887ea33SDavid du Colombier 	if(t & T_FCONST) {
1122*e887ea33SDavid du Colombier 		ieeedtod(&e, a->dval);
1123*e887ea33SDavid du Colombier 		l = e.l;
1124*e887ea33SDavid du Colombier 		Bputc(&obuf, l);
1125*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>8);
1126*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>16);
1127*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>24);
1128*e887ea33SDavid du Colombier 		l = e.h;
1129*e887ea33SDavid du Colombier 		Bputc(&obuf, l);
1130*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>8);
1131*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>16);
1132*e887ea33SDavid du Colombier 		Bputc(&obuf, l>>24);
1133*e887ea33SDavid du Colombier 		return;
1134*e887ea33SDavid du Colombier 	}
1135*e887ea33SDavid du Colombier 	if(t & T_SCONST) {
1136*e887ea33SDavid du Colombier 		n = a->sval;
1137*e887ea33SDavid du Colombier 		for(i=0; i<NSNAME; i++) {
1138*e887ea33SDavid du Colombier 			Bputc(&obuf, *n);
1139*e887ea33SDavid du Colombier 			n++;
1140*e887ea33SDavid du Colombier 		}
1141*e887ea33SDavid du Colombier 		return;
1142*e887ea33SDavid du Colombier 	}
1143*e887ea33SDavid du Colombier 	if(t & T_TYPE)
1144*e887ea33SDavid du Colombier 		Bputc(&obuf, a->type);
1145*e887ea33SDavid du Colombier }
1146*e887ea33SDavid du Colombier 
1147*e887ea33SDavid du Colombier void
outcode(int a,Gen2 * g2)1148*e887ea33SDavid du Colombier outcode(int a, Gen2 *g2)
1149*e887ea33SDavid du Colombier {
1150*e887ea33SDavid du Colombier 	int sf, st, t;
1151*e887ea33SDavid du Colombier 	Sym *s;
1152*e887ea33SDavid du Colombier 
1153*e887ea33SDavid du Colombier 	if(pass == 1)
1154*e887ea33SDavid du Colombier 		goto out;
1155*e887ea33SDavid du Colombier 
1156*e887ea33SDavid du Colombier jackpot:
1157*e887ea33SDavid du Colombier 	sf = 0;
1158*e887ea33SDavid du Colombier 	s = g2->from.sym;
1159*e887ea33SDavid du Colombier 	while(s != S) {
1160*e887ea33SDavid du Colombier 		sf = s->sym;
1161*e887ea33SDavid du Colombier 		if(sf < 0 || sf >= NSYM)
1162*e887ea33SDavid du Colombier 			sf = 0;
1163*e887ea33SDavid du Colombier 		t = g2->from.type;
1164*e887ea33SDavid du Colombier 		if(t == D_ADDR)
1165*e887ea33SDavid du Colombier 			t = g2->from.index;
1166*e887ea33SDavid du Colombier 		if(h[sf].type == t)
1167*e887ea33SDavid du Colombier 		if(h[sf].sym == s)
1168*e887ea33SDavid du Colombier 			break;
1169*e887ea33SDavid du Colombier 		zname(s->name, t, sym);
1170*e887ea33SDavid du Colombier 		s->sym = sym;
1171*e887ea33SDavid du Colombier 		h[sym].sym = s;
1172*e887ea33SDavid du Colombier 		h[sym].type = t;
1173*e887ea33SDavid du Colombier 		sf = sym;
1174*e887ea33SDavid du Colombier 		sym++;
1175*e887ea33SDavid du Colombier 		if(sym >= NSYM)
1176*e887ea33SDavid du Colombier 			sym = 1;
1177*e887ea33SDavid du Colombier 		break;
1178*e887ea33SDavid du Colombier 	}
1179*e887ea33SDavid du Colombier 	st = 0;
1180*e887ea33SDavid du Colombier 	s = g2->to.sym;
1181*e887ea33SDavid du Colombier 	while(s != S) {
1182*e887ea33SDavid du Colombier 		st = s->sym;
1183*e887ea33SDavid du Colombier 		if(st < 0 || st >= NSYM)
1184*e887ea33SDavid du Colombier 			st = 0;
1185*e887ea33SDavid du Colombier 		t = g2->to.type;
1186*e887ea33SDavid du Colombier 		if(t == D_ADDR)
1187*e887ea33SDavid du Colombier 			t = g2->to.index;
1188*e887ea33SDavid du Colombier 		if(h[st].type == t)
1189*e887ea33SDavid du Colombier 		if(h[st].sym == s)
1190*e887ea33SDavid du Colombier 			break;
1191*e887ea33SDavid du Colombier 		zname(s->name, t, sym);
1192*e887ea33SDavid du Colombier 		s->sym = sym;
1193*e887ea33SDavid du Colombier 		h[sym].sym = s;
1194*e887ea33SDavid du Colombier 		h[sym].type = t;
1195*e887ea33SDavid du Colombier 		st = sym;
1196*e887ea33SDavid du Colombier 		sym++;
1197*e887ea33SDavid du Colombier 		if(sym >= NSYM)
1198*e887ea33SDavid du Colombier 			sym = 1;
1199*e887ea33SDavid du Colombier 		if(st == sf)
1200*e887ea33SDavid du Colombier 			goto jackpot;
1201*e887ea33SDavid du Colombier 		break;
1202*e887ea33SDavid du Colombier 	}
1203*e887ea33SDavid du Colombier 	Bputc(&obuf, a);
1204*e887ea33SDavid du Colombier 	Bputc(&obuf, a>>8);
1205*e887ea33SDavid du Colombier 	Bputc(&obuf, lineno);
1206*e887ea33SDavid du Colombier 	Bputc(&obuf, lineno>>8);
1207*e887ea33SDavid du Colombier 	Bputc(&obuf, lineno>>16);
1208*e887ea33SDavid du Colombier 	Bputc(&obuf, lineno>>24);
1209*e887ea33SDavid du Colombier 	zaddr(&g2->from, sf);
1210*e887ea33SDavid du Colombier 	zaddr(&g2->to, st);
1211*e887ea33SDavid du Colombier 
1212*e887ea33SDavid du Colombier out:
1213*e887ea33SDavid du Colombier 	if(a != AGLOBL && a != ADATA && a != AMODE)
1214*e887ea33SDavid du Colombier 		pc++;
1215*e887ea33SDavid du Colombier }
1216*e887ea33SDavid du Colombier 
1217*e887ea33SDavid du Colombier void
outhist(void)1218*e887ea33SDavid du Colombier outhist(void)
1219*e887ea33SDavid du Colombier {
1220*e887ea33SDavid du Colombier 	Gen g;
1221*e887ea33SDavid du Colombier 	Hist *h;
1222*e887ea33SDavid du Colombier 	char *p, *q, *op, c;
1223*e887ea33SDavid du Colombier 	int n;
1224*e887ea33SDavid du Colombier 
1225*e887ea33SDavid du Colombier 	g = nullgen;
1226*e887ea33SDavid du Colombier 	c = pathchar();
1227*e887ea33SDavid du Colombier 	for(h = hist; h != H; h = h->link) {
1228*e887ea33SDavid du Colombier 		p = h->name;
1229*e887ea33SDavid du Colombier 		op = 0;
1230*e887ea33SDavid du Colombier 		/* on windows skip drive specifier in pathname */
1231*e887ea33SDavid du Colombier 		if(systemtype(Windows) && p && p[1] == ':'){
1232*e887ea33SDavid du Colombier 			p += 2;
1233*e887ea33SDavid du Colombier 			c = *p;
1234*e887ea33SDavid du Colombier 		}
1235*e887ea33SDavid du Colombier 		if(p && p[0] != c && h->offset == 0 && pathname){
1236*e887ea33SDavid du Colombier 			/* on windows skip drive specifier in pathname */
1237*e887ea33SDavid du Colombier 			if(systemtype(Windows) && pathname[1] == ':') {
1238*e887ea33SDavid du Colombier 				op = p;
1239*e887ea33SDavid du Colombier 				p = pathname+2;
1240*e887ea33SDavid du Colombier 				c = *p;
1241*e887ea33SDavid du Colombier 			} else if(pathname[0] == c){
1242*e887ea33SDavid du Colombier 				op = p;
1243*e887ea33SDavid du Colombier 				p = pathname;
1244*e887ea33SDavid du Colombier 			}
1245*e887ea33SDavid du Colombier 		}
1246*e887ea33SDavid du Colombier 		while(p) {
1247*e887ea33SDavid du Colombier 			q = strchr(p, c);
1248*e887ea33SDavid du Colombier 			if(q) {
1249*e887ea33SDavid du Colombier 				n = q-p;
1250*e887ea33SDavid du Colombier 				if(n == 0){
1251*e887ea33SDavid du Colombier 					n = 1;	/* leading "/" */
1252*e887ea33SDavid du Colombier 					*p = '/';	/* don't emit "\" on windows */
1253*e887ea33SDavid du Colombier 				}
1254*e887ea33SDavid du Colombier 				q++;
1255*e887ea33SDavid du Colombier 			} else {
1256*e887ea33SDavid du Colombier 				n = strlen(p);
1257*e887ea33SDavid du Colombier 				q = 0;
1258*e887ea33SDavid du Colombier 			}
1259*e887ea33SDavid du Colombier 			if(n) {
1260*e887ea33SDavid du Colombier 				Bputc(&obuf, ANAME);
1261*e887ea33SDavid du Colombier 				Bputc(&obuf, ANAME>>8);
1262*e887ea33SDavid du Colombier 				Bputc(&obuf, D_FILE);	/* type */
1263*e887ea33SDavid du Colombier 				Bputc(&obuf, 1);	/* sym */
1264*e887ea33SDavid du Colombier 				Bputc(&obuf, '<');
1265*e887ea33SDavid du Colombier 				Bwrite(&obuf, p, n);
1266*e887ea33SDavid du Colombier 				Bputc(&obuf, 0);
1267*e887ea33SDavid du Colombier 			}
1268*e887ea33SDavid du Colombier 			p = q;
1269*e887ea33SDavid du Colombier 			if(p == 0 && op) {
1270*e887ea33SDavid du Colombier 				p = op;
1271*e887ea33SDavid du Colombier 				op = 0;
1272*e887ea33SDavid du Colombier 			}
1273*e887ea33SDavid du Colombier 		}
1274*e887ea33SDavid du Colombier 		g.offset = h->offset;
1275*e887ea33SDavid du Colombier 
1276*e887ea33SDavid du Colombier 		Bputc(&obuf, AHISTORY);
1277*e887ea33SDavid du Colombier 		Bputc(&obuf, AHISTORY>>8);
1278*e887ea33SDavid du Colombier 		Bputc(&obuf, h->line);
1279*e887ea33SDavid du Colombier 		Bputc(&obuf, h->line>>8);
1280*e887ea33SDavid du Colombier 		Bputc(&obuf, h->line>>16);
1281*e887ea33SDavid du Colombier 		Bputc(&obuf, h->line>>24);
1282*e887ea33SDavid du Colombier 		zaddr(&nullgen, 0);
1283*e887ea33SDavid du Colombier 		zaddr(&g, 0);
1284*e887ea33SDavid du Colombier 	}
1285*e887ea33SDavid du Colombier }
1286*e887ea33SDavid du Colombier 
1287*e887ea33SDavid du Colombier #include "../cc/lexbody"
1288*e887ea33SDavid du Colombier #include "../cc/macbody"
1289*e887ea33SDavid du Colombier #include "../cc/compat"
1290