#ifndef _ops_h
#define _ops_h
/******************************************************************************
** FILE: ops.h
** Manifest constants to describe SPARC v.9 operations.
*/

#define OP_NOP		0

/* branch/call instructions */

#define OP_BRZ		1
#define OP_BRLEZ	2
#define OP_BRLZ		3
#define OP_BRNZ		4
#define OP_BRGZ		5
#define OP_BRGEZ	6

#define OP_FBU		7
#define OP_FBG		8
#define OP_FBUG		9
#define OP_FBL		10
#define OP_FBUL		11
#define OP_FBLG		12
#define OP_FBNE		13
#define OP_FBE		14
#define OP_FBUE		15
#define OP_FBGE		16
#define OP_FBUGE	17
#define OP_FBLE		18
#define OP_FBULE	19
#define OP_FBO		20

#define OP_BNE		21
#define OP_BE		22
#define OP_BG		23
#define OP_BLE		24
#define OP_BGE		25
#define OP_BL		26
#define OP_BGU		27
#define OP_BLEU		28
#define OP_BCC		29
#define OP_BCS		30
#define OP_BPOS		31
#define OP_BNEG		32
#define OP_BVC		33
#define OP_BVS		34

#define OP_BRANCH_BEGIN	OP_BRZ		/* start of branch ops */
#define OP_BRANCH_END	OP_BVS		/* end of branch ops */

/* Conditional moves */

#define OP_MOVA		35

#define OP_MOVNE	36
#define OP_MOVE		37
#define OP_MOVG		38
#define OP_MOVLE	39
#define OP_MOVGE	40
#define OP_MOVL		41
#define OP_MOVGU	42
#define OP_MOVLEU	43
#define OP_MOVCC	44
#define OP_MOVCS	45
#define OP_MOVPOS	46
#define OP_MOVNEG	47
#define OP_MOVVC	48
#define OP_MOVVS	49

#define OP_MOVFU	50
#define OP_MOVFG	51
#define OP_MOVFUG	52
#define OP_MOVFL	53
#define OP_MOVFUL	54
#define OP_MOVFLG	55
#define OP_MOVFNE	56
#define OP_MOVFE	57
#define OP_MOVFUE	58
#define OP_MOVFGE	59
#define OP_MOVFUGE	60
#define OP_MOVFLE	61
#define OP_MOVFULE	62
#define OP_MOVFO	63

#define OP_MOVRZ	64
#define OP_MOVRLEZ	65
#define OP_MOVRLZ	66
#define OP_MOVRNZ	67
#define OP_MOVRGZ	68
#define OP_MOVRGEZ	69

/* System traps */

#define OP_TA		70
#define OP_TNE		71
#define OP_TE		72
#define OP_TG		73
#define OP_TLE		74
#define OP_TGE		75
#define OP_TL		76
#define OP_TGU		77
#define OP_TLEU		78
#define OP_TCC		79
#define OP_TCS		80
#define OP_TPOS		81
#define OP_TNEG		82
#define OP_TVC		83
#define OP_TVS		84

/* Arithmetic ops */

#define OP_ADD		85
#define OP_ADDCC	86
#define OP_ADDC		87
#define OP_ADDCCC	88
#define OP_SUB		89
#define OP_SUBCC	90
#define OP_SUBC		91
#define OP_SUBCCC	92

#define OP_AND		93
#define OP_ANDCC	94
#define OP_ANDN		95
#define OP_ANDNCC	96
#define OP_OR		97
#define OP_ORCC		98
#define OP_ORN		99
#define OP_ORNCC	100
#define OP_XOR		101
#define OP_XORCC	102
#define OP_XNOR		103
#define OP_XNORCC	104

#define OP_MULX		105
#define OP_SDIVX	106
#define OP_UDIVX	107

#define OP_SLL		108
#define OP_SRL		109
#define OP_SRA		110
#define OP_SLLX		111
#define OP_SRLX		112
#define OP_SRAX		113

#define OP_TADDCC	114
#define OP_TADDCCTV	115
#define OP_TSUBCC	116
#define OP_TSUBCCTV	117

#define OP_UDIV		118
#define OP_SDIV		119
#define OP_UMUL		120
#define OP_SMUL		121

#define OP_UDIVCC	122
#define OP_SDIVCC	123
#define OP_UMULCC	124
#define OP_SMULCC	125

#define OP_MULSCC	126

#define OP_POPC		127

#define OP_FLUSH	128
#define OP_FLUSHW	129

#define OP_RD		130
#define OP_WR		131

#define OP_SETHI	132

/* Floating-point arithmetic */

#define OP_FADDS	133
#define OP_FADDD	134
#define OP_FSUBS	135
#define OP_FSUBD	136

#define OP_FCMPS	137
#define OP_FCMPD	138
#define OP_FCMPES	139
#define OP_FCMPED	140

#define OP_FSTOX	141
#define OP_FDTOX	142
#define OP_FSTOI	143
#define OP_FDTOI	144
#define OP_FSTOD	145
#define OP_FXTOS	146
#define OP_FXTOD	147
#define OP_FITOS	148
#define OP_FITOD	149
#define OP_FDTOS	150

#define OP_FMOVS	151
#define OP_FMOVD	152
#define OP_FNEGS	153
#define OP_FNEGD	154
#define OP_FABSS	155
#define OP_FABSD	156

#define OP_FMULS	157
#define OP_FMULD	158
#define OP_FDIVS	159
#define OP_FDIVD	160
#define OP_FSMULD	161

#define OP_FSQRTS	162
#define OP_FSQRTD	163

/* Load, store, etc. */

#define OP_LDSB		164
#define OP_LDSH		165
#define OP_LDSW		166
#define OP_LDUB		167
#define OP_LDUH		168
#define OP_LDUW		169
#define OP_LDX		170
#define OP_LDD		171
#define OP_LDFSR	172
#define OP_LDXFSR	173

#define OP_LOAD_BEGIN	OP_LDSB		/* start of load op tags */
#define OP_LOAD_END	OP_LDXFSR	/* end of load op tags */

#define OP_STB		174
#define OP_STH		175
#define OP_STW		176
#define OP_STX		177
#define OP_STD		178
#define OP_STFSR	179
#define OP_STXFSR	180

#define OP_STORE_BEGIN	OP_STB		/* start of store op tags */
#define OP_STORE_END	OP_STXFSR	/* end of store op tags */

#define OP_CASA		181
#define OP_CASXA	182
#define OP_LDSTUB	183
#define OP_SWAP		184

#define OP_SWAP_BEGIN	OP_CASA		/* start of swap op tags */
#define OP_SWAP_END	OP_SWAP		/* end of swap op tags */

/* Save/restore ops */

#define OP_SAVE		185
#define OP_RESTORE	186
#define OP_RETRN	187

/* Indirect jump instruction */

#define OP_JMPL		188

/* Illegal instruction */

#define OP_ILL		189

#endif