1/* $NetBSD: db_instruction.h,v 1.8 2001/08/31 04:44:54 simonb Exp $ */
2
3/*
4 * Copyright (c) 1999 Christopher G. Demetriou.  All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 * 1. Redistributions of source code must retain the above copyright
10 *    notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 *    notice, this list of conditions and the following disclaimer in the
13 *    documentation and/or other materials provided with the distribution.
14 * 3. All advertising materials mentioning features or use of this software
15 *    must display the following acknowledgement:
16 *      This product includes software developed by Christopher G. Demetriou
17 *	for the NetBSD Project.
18 * 4. The name of the author may not be used to endorse or promote products
19 *    derived from this software without specific prior written permission
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
22 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
23 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
24 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
25 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
26 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
30 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32
33/*
34 * Mach Operating System
35 * Copyright (c) 1993,1992 Carnegie Mellon University
36 * All Rights Reserved.
37 *
38 * Permission to use, copy, modify and distribute this software and its
39 * documentation is hereby granted, provided that both the copyright
40 * notice and this permission notice appear in all copies of the
41 * software, derivative works or modified versions, and any portions
42 * thereof, and that both notices appear in supporting documentation.
43 *
44 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
45 * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
46 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
47 *
48 * Carnegie Mellon requests users of this software to return to
49 *
50 *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
51 *  School of Computer Science
52 *  Carnegie Mellon University
53 *  Pittsburgh PA 15213-3890
54 *
55 * any improvements or extensions that they make and grant Carnegie Mellon
56 * the rights to redistribute these changes.
57 */
58
59/*
60 *	File: alpha_instruction.h
61 * 	Author: Alessandro Forin, Carnegie Mellon University
62 *	Date:	11/91
63 *
64 *	Alpha Instruction set definition
65 *
66 *	Reference: "Alpha System Reference Manual", V4.0, April 1991
67 *
68 */
69
70#ifndef	_ALPHA_INSTRUCTION_H_
71#define	_ALPHA_INSTRUCTION_H_ 1
72
73#if	!defined(ASSEMBLER)
74
75/*
76 *	All instructions are in one of five formats:
77 *		Memory, Branch, Operate, Floating-point Operate, PAL
78 *
79 *	The original Mach sources attempted to use 'smarter' names
80 *	for registers, which reflected source and destination.  These
81 *	definitions use the names from the Architecture Reference Manual,
82 *	both for clarity and because you can't differentiate between
83 *	'source' and 'destinations' for some types of instructions (loads
84 *	and stores; they'd be correct for one, but swapped for the other).
85 */
86
87
88typedef union {
89	/*
90	 *	All instructions are 32 bits wide
91	 */
92	unsigned int	bits;
93
94	/*
95	 *	Generic instruction pseudo format; look at
96	 *	opcode to see how to interpret the rest.
97	 */
98	struct {
99		unsigned	bits:26,
100				opcode:6;
101	} generic_format;
102
103	/*
104	 *	Memory instructions contain a 16 bit
105	 *	signed immediate value and two register
106	 *	specifiers
107	 */
108	struct {
109		signed short	displacement;
110		unsigned	rb : 5,
111				ra : 5,
112				opcode : 6;
113	} mem_format;
114
115	/*
116	 *	Branch instruction contain a 21 bit offset,
117	 *	which is sign-extended, shifted and combined
118	 *	with the PC to form a 64 bit destination address.
119	 *
120	 *	In computed jump instructions the opcode is further
121	 *	specified in the offset field, the rest of it is
122	 *	used as branch target hint.  The destination of the
123	 *	jump is the source register.
124	 */
125	struct {
126		signed int	displacement : 21;
127		unsigned	ra : 5,
128				opcode : 6;
129	} branch_format;
130
131	struct {
132		signed int	hint : 14;
133		unsigned	action : 2,
134				rb : 5,
135				ra : 5,
136				opcode : 6;
137	} jump_format;
138
139
140	/*
141	 *	Operate instructions are of two types, with
142	 *	a second source register or with a literal
143	 *	specifier.  Bit 12 sez which is which.
144	 */
145	struct {
146		unsigned	rc : 5,
147				function : 7,
148				is_lit : 1,
149				sbz_or_litlo : 3,
150				rb_or_lithi : 5,
151				ra : 5,
152				opcode : 6;
153	} operate_generic_format;
154
155	struct {
156		unsigned	rc : 5,
157				function : 7,
158				zero : 1,
159				sbz : 3,
160				rb : 5,
161				ra : 5,
162				opcode : 6;
163	} operate_reg_format;
164
165	struct {
166		unsigned	rc : 5,
167				function : 7,
168				one : 1,
169				literal : 8,
170				ra : 5,
171				opcode : 6;
172	} operate_lit_format;
173
174
175	/*
176	 *	Floating point operate instruction are quite
177	 *	uniform in the encoding.  As for the semantics..
178	 */
179	struct {
180		unsigned	fc : 5,
181				function : 11,
182				fb : 5,
183				fa : 5,
184				opcode : 6;
185	} float_format;
186
187	struct {
188		unsigned	fc : 5,
189				opclass : 4,
190				src : 2,
191				rnd : 2,
192				trp : 3,
193				fb : 5,
194				fa : 5,
195				opcode : 6;
196	} float_detail;
197
198	/*
199	 *	PAL instructions just define the major opcode
200	 */
201
202	struct {
203		unsigned	function : 26,
204				opcode : 6;
205	} pal_format;
206
207} alpha_instruction;
208
209#endif /* !defined(ASSEMBLER) */
210
211/*
212 *
213 *	Encoding of regular instructions  (Appendix C op cit)
214 *
215 */
216
217		/* OPCODE, bits 26..31 */
218
219#define	op_pal		0x00		/* see PAL sub-table */
220					/* 1..7 reserved */
221#define	op_lda		0x08
222#define	op_ldah		0x09
223#define	op_ldbu		0x0a
224#define	op_ldq_u	0x0b
225#define	op_ldwu		0x0c
226#define	op_stw		0x0d
227#define	op_stb		0x0e
228#define	op_stq_u	0x0f
229
230#define	op_arit		0x10		/* see ARIT sub-table */
231#define	op_logical	0x11		/* see LOGICAL sub-table */
232#define	op_bit		0x12		/* see BIT sub-table */
233#define	op_mul		0x13		/* see MUL sub-table */
234#define op_fix_float	0x14		/* if ALPHA_AMASK_FIX */
235#define	op_vax_float	0x15		/* see FLOAT sub-table */
236#define	op_ieee_float	0x16		/* see FLOAT sub-table */
237#define	op_any_float	0x17		/* see FLOAT sub-table */
238
239#define	op_special	0x18		/* see SPECIAL sub-table */
240#define	op_pal19	0x19		/* reserved for pal code */
241#define	op_j		0x1a		/* see JUMP sub-table */
242#define	op_pal1b	0x1b		/* reserved for pal code */
243#define	op_intmisc	0x1c		/* see INTMISC sub-table */
244#define	op_pal1d	0x1d		/* reserved for pal code */
245#define	op_pal1e	0x1e		/* reserved for pal code */
246#define	op_pal1f	0x1f		/* reserved for pal code */
247
248#define	op_ldf		0x20
249#define	op_ldg		0x21
250#define	op_lds		0x22
251#define	op_ldt		0x23
252#define	op_stf		0x24
253#define	op_stg		0x25
254#define	op_sts		0x26
255#define	op_stt		0x27
256#define	op_ldl		0x28
257#define	op_ldq		0x29
258#define	op_ldl_l	0x2a
259#define	op_ldq_l	0x2b
260#define	op_stl		0x2c
261#define	op_stq		0x2d
262#define	op_stl_c	0x2e
263#define	op_stq_c	0x2f
264#define	op_br		0x30
265#define	op_fbeq		0x31
266#define	op_fblt		0x32
267#define	op_fble		0x33
268#define	op_bsr		0x34
269#define	op_fbne		0x35
270#define	op_fbge		0x36
271#define	op_fbgt		0x37
272#define	op_blbc		0x38
273#define	op_beq		0x39
274#define	op_blt		0x3a
275#define	op_ble		0x3b
276#define	op_blbs		0x3c
277#define	op_bne		0x3d
278#define	op_bge		0x3e
279#define op_bgt		0x3f
280
281
282		/* PAL, "function" opcodes (bits 0..25) */
283/*
284 * What we will implement is TBD.  These are the unprivileged ones
285 * that we probably have to support for compat reasons.
286 */
287
288/* See <machine/pal.h> */
289
290		/* ARIT, "function" opcodes (bits 5..11)  */
291
292#define	op_addl		0x00
293#define	op_s4addl	0x02
294#define	op_subl		0x09
295#define	op_s4subl	0x0b
296#define	op_cmpbge	0x0f
297#define	op_s8addl	0x12
298#define	op_s8subl	0x1b
299#define	op_cmpult	0x1d
300#define	op_addq		0x20
301#define	op_s4addq	0x22
302#define	op_subq		0x29
303#define	op_s4subq	0x2b
304#define	op_cmpeq	0x2d
305#define	op_s8addq	0x32
306#define	op_s8subq	0x3b
307#define	op_cmpule	0x3d
308#define	op_addl_v	0x40
309#define	op_subl_v	0x49
310#define	op_cmplt	0x4d
311#define	op_addq_v	0x60
312#define	op_subq_v	0x69
313#define	op_cmple	0x6d
314
315
316		/* LOGICAL, "function" opcodes (bits 5..11)  */
317
318#define	op_and		0x00
319#define	op_andnot	0x08	/* bic */
320#define	op_cmovlbs	0x14
321#define	op_cmovlbc	0x16
322#define	op_or		0x20	/* bis */
323#define	op_cmoveq	0x24
324#define	op_cmovne	0x26
325#define	op_ornot	0x28
326#define	op_xor		0x40
327#define	op_cmovlt	0x44
328#define	op_cmovge	0x46
329#define	op_xornot	0x48	/* eqv */
330#define	op_amask	0x61
331#define	op_cmovle	0x64
332#define	op_cmovgt	0x66
333#define	op_implver	0x6c
334
335		/* BIT, "function" opcodes (bits 5..11)  */
336
337#define	op_mskbl	0x02
338#define	op_extbl	0x06
339#define	op_insbl	0x0b
340#define	op_mskwl	0x12
341#define	op_extwl	0x16
342#define	op_inswl	0x1b
343#define	op_mskll	0x22
344#define	op_extll	0x26
345#define	op_insll	0x2b
346#define	op_zap		0x30
347#define	op_zapnot	0x31
348#define	op_mskql	0x32
349#define	op_srl		0x34
350#define	op_extql	0x36
351#define	op_sll		0x39
352#define	op_insql	0x3b
353#define	op_sra		0x3c
354#define	op_mskwh	0x52
355#define	op_inswh	0x57
356#define	op_extwh	0x5a
357#define	op_msklh	0x62
358#define	op_inslh	0x67
359#define	op_extlh	0x6a
360#define	op_extqh	0x7a
361#define	op_insqh	0x77
362#define	op_mskqh	0x72
363
364		/* MUL, "function" opcodes (bits 5..11)  */
365
366#define	op_mull		0x00
367#define	op_mulq_v	0x60
368#define	op_mull_v	0x40
369#define	op_umulh	0x30
370#define	op_mulq		0x20
371
372
373		/* SPECIAL, "displacement" opcodes (bits 0..15)  */
374
375#define	op_trapb	0x0000
376#define	op_excb		0x0400
377#define	op_mb		0x4000
378#define	op_wmb		0x4400
379#define	op_fetch	0x8000
380#define	op_fetch_m	0xa000
381#define	op_rpcc		0xc000
382#define op_rc		0xe000
383#define	op_ecb		0xe800
384#define	op_rs		0xf000
385#define	op_wh64		0xf800
386
387		/* JUMP, "action" opcodes (bits 14..15) */
388
389#define	op_jmp		0x0
390#define	op_jsr		0x1
391#define	op_ret		0x2
392#define	op_jcr		0x3
393
394		/* INTMISC, "function" opcodes (operate format) */
395
396#define	op_sextb	0x00
397#define	op_sextw	0x01
398#define	op_ctpop	0x30
399#define	op_perr		0x31
400#define	op_ctlz		0x32
401#define	op_cttz		0x33
402#define	op_unpkbw	0x34
403#define	op_unpkbl	0x35
404#define	op_pkwb		0x36
405#define	op_pklb		0x37
406#define	op_minsb8	0x38
407#define	op_minsw4	0x39
408#define	op_minub8	0x3a
409#define	op_minuw4	0x3b
410#define	op_maxub8	0x3c
411#define	op_maxuw4	0x3d
412#define	op_maxsb8	0x3e
413#define	op_maxsw4	0x3f
414#define	op_ftoit	0x70
415#define	op_ftois	0x78
416
417/*
418 *
419 *	Encoding of floating point instructions (pagg. C-5..6 op cit)
420 *
421 *	Load and store operations use opcodes op_ldf..op_stt
422 */
423
424		/* src encoding from function, 9..10 */
425#define	op_src_sf	0
426#define	op_src_xd	1
427#define	op_src_tg	2
428#define	op_src_qq	3
429
430		/* any FLOAT, "function" opcodes (bits 5..11)  */
431
432#define	op_cvtlq	0x010
433#define	op_cpys		0x020
434#define	op_cpysn	0x021
435#define	op_cpyse	0x022
436#define	op_mt_fpcr	0x024
437#define	op_mf_fpcr	0x025
438#define	op_fcmoveq	0x02a
439#define	op_fcmovne	0x02b
440#define	op_fcmovlt	0x02c
441#define	op_fcmovge	0x02d
442#define	op_fcmovle	0x02e
443#define	op_fcmovgt	0x02f
444#define	op_cvtql	0x030
445#define	op_cvtql_v	0x130
446#define	op_cvtql_sv	0x530
447
448
449		/* ieee FLOAT, "function" opcodes (bits 5..11)  */
450
451#define	op_adds_c	0x000
452#define	op_subs_c	0x001
453#define	op_muls_c	0x002
454#define	op_divs_c	0x003
455#define	op_addt_c	0x020
456#define	op_subt_c	0x021
457#define	op_mult_c	0x022
458#define	op_divt_c	0x023
459#define	op_cvtts_c	0x02c
460#define	op_cvttq_c	0x02f
461#define	op_cvtqs_c	0x03c
462#define	op_cvtqt_c	0x03e
463#define	op_adds_m	0x040
464#define	op_subs_m	0x041
465#define	op_muls_m	0x042
466#define	op_divs_m	0x043
467#define	op_addt_m	0x060
468#define	op_subt_m	0x061
469#define	op_mult_m	0x062
470#define	op_divt_m	0x063
471#define	op_cvtts_m	0x06c
472#define	op_cvtqs_m	0x07c
473#define	op_cvtqt_m	0x07e
474#define	op_adds		0x080
475#define	op_subs		0x081
476#define	op_muls		0x082
477#define	op_divs		0x083
478#define	op_addt		0x0a0
479#define	op_subt		0x0a1
480#define	op_mult		0x0a2
481#define	op_divt		0x0a3
482#define	op_cmptun	0x0a4
483#define	op_cmpteq	0x0a5
484#define	op_cmptlt	0x0a6
485#define	op_cmptle	0x0a7
486#define	op_cvtts	0x0ac
487#define	op_cvttq	0x0af
488#define	op_cvtqs	0x0bc
489#define	op_cvtqt	0x0be
490#define	op_adds_d	0x0c0
491#define	op_subs_d	0x0c1
492#define	op_muls_d	0x0c2
493#define	op_divs_d	0x0c3
494#define	op_addt_d	0x0e0
495#define	op_subt_d	0x0e1
496#define	op_mult_d	0x0e2
497#define	op_divt_d	0x0e3
498#define	op_cvtts_d	0x0ec
499#define	op_cvtqs_d	0x0fc
500#define	op_cvtqt_d	0x0fe
501#define	op_adds_uc	0x100
502#define	op_subs_uc	0x101
503#define	op_muls_uc	0x102
504#define	op_divs_uc	0x103
505#define	op_addt_uc	0x120
506#define	op_subt_uc	0x121
507#define	op_mult_uc	0x122
508#define	op_divt_uc	0x123
509#define	op_cvtts_uc	0x12c
510#define	op_cvttq_vc	0x12f
511#define	op_adds_um	0x140
512#define	op_subs_um	0x141
513#define	op_muls_um	0x142
514#define	op_divs_um	0x143
515#define	op_addt_um	0x160
516#define	op_subt_um	0x161
517#define	op_mult_um	0x162
518#define	op_divt_um	0x163
519#define	op_cvtts_um	0x16c
520#define	op_adds_u	0x180
521#define	op_subs_u	0x181
522#define	op_muls_u	0x182
523#define	op_divs_u	0x183
524#define	op_addt_u	0x1a0
525#define	op_subt_u	0x1a1
526#define	op_mult_u	0x1a2
527#define	op_divt_u	0x1a3
528#define	op_cvtts_u	0x1ac
529#define	op_cvttq_v	0x1af
530#define	op_adds_ud	0x1c0
531#define	op_subs_ud	0x1c1
532#define	op_muls_ud	0x1c2
533#define	op_divs_ud	0x1c3
534#define	op_addt_ud	0x1e0
535#define	op_subt_ud	0x1e1
536#define	op_mult_ud	0x1e2
537#define	op_divt_ud	0x1e3
538#define	op_cvtts_ud	0x1ec
539#define op_cvtst	0x2ac
540#define	op_adds_suc	0x500
541#define	op_subs_suc	0x501
542#define	op_muls_suc	0x502
543#define	op_divs_suc	0x503
544#define	op_addt_suc	0x520
545#define	op_subt_suc	0x521
546#define	op_mult_suc	0x522
547#define	op_divt_suc	0x523
548#define	op_cvtts_suc	0x52c
549#define	op_cvttq_svc	0x52f
550#define	op_adds_sum	0x540
551#define	op_subs_sum	0x541
552#define	op_muls_sum	0x542
553#define	op_divs_sum	0x543
554#define	op_addt_sum	0x560
555#define	op_subt_sum	0x561
556#define	op_mult_sum	0x562
557#define	op_divt_sum	0x563
558#define	op_cvtts_sum	0x56c
559#define	op_adds_su	0x580
560#define	op_subs_su	0x581
561#define	op_muls_su	0x582
562#define	op_divs_su	0x583
563#define	op_addt_su	0x5a0
564#define	op_subt_su	0x5a1
565#define	op_mult_su	0x5a2
566#define	op_divt_su	0x5a3
567#define	op_cmptun_su	0x5a4
568#define	op_cmpteq_su	0x5a5
569#define	op_cmptlt_su	0x5a6
570#define	op_cmptle_su	0x5a7
571#define	op_cvtts_su	0x5ac
572#define	op_cvttq_sv	0x5af
573#define	op_adds_sud	0x5c0
574#define	op_subs_sud	0x5c1
575#define	op_muls_sud	0x5c2
576#define	op_divs_sud	0x5c3
577#define	op_addt_sud	0x5e0
578#define	op_subt_sud	0x5e1
579#define	op_mult_sud	0x5e2
580#define	op_divt_sud	0x5e3
581#define	op_cvtts_sud	0x5ec
582#define	op_cvtst_u	0x6ac
583#define	op_adds_suic	0x700
584#define	op_subs_suic	0x701
585#define	op_muls_suic	0x702
586#define	op_divs_suic	0x703
587#define	op_addt_suic	0x720
588#define	op_subt_suic	0x721
589#define	op_mult_suic	0x722
590#define	op_divt_suic	0x723
591#define	op_cvtts_suic	0x72c
592#define	op_cvttq_svic	0x72f
593#define	op_cvtqs_suic	0x73c
594#define	op_cvtqt_suic	0x73e
595#define	op_adds_suim	0x740
596#define	op_subs_suim	0x741
597#define	op_muls_suim	0x742
598#define	op_divs_suim	0x743
599#define	op_addt_suim	0x760
600#define	op_subt_suim	0x761
601#define	op_mult_suim	0x762
602#define	op_divt_suim	0x763
603#define	op_cvtts_suim	0x76c
604#define	op_cvtqs_suim	0x77c
605#define	op_cvtqt_suim	0x77e
606#define	op_adds_sui	0x780
607#define	op_subs_sui	0x781
608#define	op_muls_sui	0x782
609#define	op_divs_sui	0x783
610#define	op_addt_sui	0x7a0
611#define	op_subt_sui	0x7a1
612#define	op_mult_sui	0x7a2
613#define	op_divt_sui	0x7a3
614#define	op_cvtts_sui	0x7ac
615#define	op_cvttq_svi	0x7af
616#define	op_cvtqs_sui	0x7bc
617#define	op_cvtqt_sui	0x7be
618#define	op_adds_suid	0x7c0
619#define	op_subs_suid	0x7c1
620#define	op_muls_suid	0x7c2
621#define	op_divs_suid	0x7c3
622#define	op_addt_suid	0x7e0
623#define	op_subt_suid	0x7e1
624#define	op_mult_suid	0x7e2
625#define	op_divt_suid	0x7e3
626#define	op_cvtts_suid	0x7ec
627#define	op_cvtqs_suid	0x7fc
628#define	op_cvtqt_suid	0x7fe
629
630
631		/* vax FLOAT, "function" opcodes (bits 5..11)  */
632
633#define	op_addf_c	0x000
634#define	op_subf_c	0x001
635#define	op_mulf_c	0x002
636#define	op_divf_c	0x003
637#define	op_cvtdg_c	0x01e
638#define	op_addg_c	0x020
639#define	op_subg_c	0x021
640#define	op_mulg_c	0x022
641#define	op_divg_c	0x023
642#define	op_cvtgf_c	0x02c
643#define	op_cvtgd_c	0x02d
644#define	op_cvtgqg_c	0x02f
645#define	op_cvtqf_c	0x03c
646#define	op_cvtqg_c	0x03e
647#define	op_addf		0x080
648#define	op_subf		0x081
649#define	op_mulf		0x082
650#define	op_divf		0x083
651#define	op_cvtdg	0x09e
652#define	op_addg		0x0a0
653#define	op_subg		0x0a1
654#define	op_mulg		0x0a2
655#define	op_divg		0x0a3
656#define	op_cmpgeq	0x0a5
657#define	op_cmpglt	0x0a6
658#define	op_cmpgle	0x0a7
659#define	op_cvtgf	0x0ac
660#define	op_cvtgd	0x0ad
661#define	op_cvtgq	0x0af
662#define	op_cvtqf	0x0bc
663#define	op_cvtqg	0x0be
664#define	op_addf_uc	0x100
665#define	op_subf_uc	0x101
666#define	op_mulf_uc	0x102
667#define	op_divf_uc	0x103
668#define	op_cvtdg_uc	0x11e
669#define	op_addg_uc	0x120
670#define	op_subg_uc	0x121
671#define	op_mulg_uc	0x122
672#define	op_divg_uc	0x123
673#define	op_cvtgf_uc	0x12c
674#define	op_cvtgd_uc	0x12d
675#define	op_cvtgqg_vc	0x12f
676#define	op_addf_u	0x180
677#define	op_subf_u	0x181
678#define	op_mulf_u	0x182
679#define	op_divf_u	0x183
680#define	op_cvtdg_u	0x19e
681#define	op_addg_u	0x1a0
682#define	op_subg_u	0x1a1
683#define	op_mulg_u	0x1a2
684#define	op_divg_u	0x1a3
685#define	op_cvtgf_u	0x1ac
686#define	op_cvtgd_u	0x1ad
687#define	op_cvtgqg_v	0x1af
688#define	op_addf_sc	0x400
689#define	op_subf_sc	0x401
690#define	op_mulf_sc	0x402
691#define	op_divf_sc	0x403
692#define	op_cvtdg_sc	0x41e
693#define	op_addg_sc	0x420
694#define	op_subg_sc	0x421
695#define	op_mulg_sc	0x422
696#define	op_divg_sc	0x423
697#define	op_cvtgf_sc	0x42c
698#define	op_cvtgd_sc	0x42d
699#define	op_cvtgqg_sc	0x42f
700#define	op_cvtqf_sc	0x43c
701#define	op_cvtqg_sc	0x43e
702#define	op_addf_s	0x480
703#define	op_subf_s	0x481
704#define	op_mulf_s	0x482
705#define	op_divf_s	0x483
706#define	op_cvtdg_s	0x49e
707#define	op_addg_s	0x4a0
708#define	op_subg_s	0x4a1
709#define	op_mulg_s	0x4a2
710#define	op_divg_s	0x4a3
711#define	op_cmpgeq_s	0x4a5
712#define	op_cmpglt_s	0x4a6
713#define	op_cmpgle_s	0x4a7
714#define	op_cvtgf_s	0x4ac
715#define	op_cvtgd_s	0x4ad
716#define	op_cvtgqg_s	0x4af
717#define	op_cvtqf_s	0x4bc
718#define	op_cvtqg_s	0x4be
719#define	op_addf_suc	0x500
720#define	op_subf_suc	0x501
721#define	op_mulf_suc	0x502
722#define	op_divf_suc	0x503
723#define	op_cvtdg_suc	0x51e
724#define	op_addg_suc	0x520
725#define	op_subg_suc	0x521
726#define	op_mulg_suc	0x522
727#define	op_divg_suc	0x523
728#define	op_cvtgf_suc	0x52c
729#define	op_cvtgd_suc	0x52d
730#define	op_cvtgqg_svc	0x52f
731#define	op_addf_su	0x580
732#define	op_subf_su	0x581
733#define	op_mulf_su	0x582
734#define	op_divf_su	0x583
735#define	op_cvtdg_su	0x59e
736#define	op_addg_su	0x5a0
737#define	op_subg_su	0x5a1
738#define	op_mulg_su	0x5a2
739#define	op_divg_su	0x5a3
740#define	op_cvtgf_su	0x5ac
741#define	op_cvtgd_su	0x5ad
742#define	op_cvtgqg_sv	0x5af
743
744
745#endif	/* _ALPHA_INSTRUCTION_H_ */
746