OpenCores
URL https://opencores.org/ocsvn/thor/thor/trunk

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v5/] [software/] [CC64/] [source/] [const.h] - Rev 48

Compare with Previous | Blame | View Log

#ifndef _CONST_H
#define _CONST_H
 
enum e_bt {
		bt_none,
		bt_byte, bt_ubyte,
        bt_char, bt_short, bt_long, bt_float, bt_double, bt_triple, bt_quad, bt_pointer,
		bt_uchar, bt_ushort, bt_ulong,
        bt_unsigned, bt_vector, bt_vector_mask,
        bt_struct, bt_union, bt_class, bt_enum, bt_void,
        bt_func, bt_ifunc, bt_label,
		bt_interrupt, bt_oscall, bt_pascal, bt_kernel, bt_bitfield, bt_ubitfield,
		bt_exception, bt_ellipsis,
        bt_last};
 
enum e_node {
        en_void,        /* used for parameter lists */
		en_list, en_aggregate,
		en_cbu, en_ccu, en_chu,
		en_cubu, en_cucu, en_cuhu,
		en_cbw, en_ccw, en_chw,
		en_cubw, en_cucw, en_cuhw,
		en_cucwp, en_ccwp,
 
        en_cbc, en_cbh,
		en_cch,
		en_cwl, en_cld, en_cfd,
		en_sxb, en_sxc, en_sxh,
		en_zxb, en_zxc, en_zxh,
        en_icon, en_fcon, en_fqcon, en_dcon, en_tcon, en_labcon, en_nacon, en_autocon, en_autofcon, en_classcon,
		en_clabcon, en_cnacon,
		en_dlabcon, en_dnacon, // 30<-
 
		en_c_ref, en_uc_ref, en_h_ref, en_uh_ref,
        en_b_ref, en_w_ref, en_ub_ref, en_uw_ref,
		en_ref32, en_ref32u,
		en_hp_ref, en_wp_ref,
        en_fcall, en_ifcall,
         en_tempref, en_regvar, en_fpregvar, en_tempfpref,
		en_add, en_sub, en_mul, en_mod,
		en_ftadd, en_ftsub, en_ftmul, en_ftdiv,
		en_fdadd, en_fdsub, en_fdmul, en_fddiv,
		en_fsadd, en_fssub, en_fsmul, en_fsdiv,
		en_fadd, en_fsub, en_fmul, en_fdiv,
		en_d2t, en_d2q, en_t2q,
		en_i2d, en_i2t, en_i2q, en_d2i, en_q2i, en_s2q, en_t2i, // 63<-
        en_div, en_asl, en_shl, en_shlu, en_shr, en_shru, en_asr, en_rol, en_ror,
		en_cond, en_assign, 
        en_asadd, en_assub, en_asmul, en_asdiv, en_asdivu, en_asmod, en_asmodu,
		en_asrsh, en_asrshu, en_asmulu, //81
        en_aslsh, en_asand, en_asor, en_asxor, en_uminus, en_not, en_compl,
        en_eq, en_ne, en_lt, en_le, en_gt, en_ge,
        en_feq, en_fne, en_flt, en_fle, en_fgt, en_fge,
        en_veq, en_vne, en_vlt, en_vle, en_vgt, en_vge,
		en_and, en_or, en_land, en_lor, //104
        en_xor, en_mulu, en_udiv, en_umod, en_ugt,
        en_uge, en_ule, en_ult,
		en_ref, en_ursh,
		en_uwfieldref,en_wfieldref,en_bfieldref,en_ubfieldref,
		en_uhfieldref,en_hfieldref,en_ucfieldref,en_cfieldref,
		en_dbl_ref, en_flt_ref, en_triple_ref, en_quad_ref,
		en_bchk, en_chk,
		en_abs, en_max, en_min,
		// Vector
		en_autovcon, en_autovmcon, en_vector_ref, en_vex, en_veins,
		en_vadd, en_vsub, en_vmul, en_vdiv,
		en_vadds, en_vsubs, en_vmuls, en_vdivs,
 
		en_object_list
		};
 
enum e_stmt {
		st_empty, st_funcbody,
        st_expr, st_compound, st_while, 
		st_until, st_forever, st_firstcall, st_asm,
		st_dountil, st_doloop, st_dowhile, st_doonce,
		st_try, st_catch, st_throw, st_critical, st_spinlock, st_spinunlock,
		st_for,
		st_do, st_if, st_switch, st_default,
        st_case, st_goto, st_break, st_continue, st_label,
        st_return, st_vortex, st_intoff, st_inton, st_stop, st_check };
 
enum e_am {
		am_none = 0,
        am_reg = 1,
		am_fpreg = 2,
		am_vreg = 4,
		am_vmreg = 8,
		am_ind = 16,
		am_indx = 32,
		am_indx2 = 64,
        am_direct = 128,
		am_mem = 240,
		am_imm = 256,
		am_i5 = 512,
		am_ui6 = 1024,
		am_i8 = 2048,	// BEQI
		am_i26 = 4096,
		am_mask = 8192,
		am_ainc = 16384,
		am_adec = 32768,
		am_brind = 65536,
		am_breg = 131072,
		am_sreg = 262144
	};
 
enum e_sym {
	tk_nop,
	id, cconst, iconst, lconst, sconst, rconst, plus, minus,
	star, divide, lshift, rshift, lrot, rrot,
	modop, eq, neq, lt, leq, gt,
	geq, assign, asplus, asminus, astimes, asdivide, asmodop,
	aslshift, asrshift, aslrot, asrrot,
	asand, asor, asxor, autoinc, autodec, hook, cmpl,
	comma, colon, semicolon, double_colon, uparrow, openbr, closebr, begin, end,
	openpa, closepa, pointsto, dot, lor, land, nott, bitorr, bitandd,
	ellipsis,
	// functions
	kw_abs, kw_max, kw_min,
 
	kw_vector, kw_vector_mask,
	kw_int, kw_byte, kw_int8, kw_int16, kw_int32, kw_int40, kw_int64, kw_int80,
	kw_float128,
	kw_icache, kw_dcache, kw_thread,
	kw_void, kw_char, kw_float, kw_double, kw_triple,
	kw_struct, kw_union, kw_class,
	kw_long, kw_short, kw_unsigned, kw_auto, kw_extern,
	kw_register, kw_typedef, kw_static, kw_goto, kw_return,
	kw_sizeof, kw_break, kw_continue, kw_if, kw_else, kw_elsif,
	kw_for, kw_forever, kw_signed,
	kw_firstcall, kw_asm, kw_fallthru, kw_until, kw_loop,
	kw_try, kw_catch, kw_throw, kw_typenum, kw_const, kw_volatile,
	kw_do, kw_while, kw_switch, kw_case, kw_default, kw_enum,
	kw_interrupt, kw_vortex, kw_pascal, kw_oscall, kw_nocall, kw_naked,
	kw_intoff, kw_inton, kw_then,
	kw_private, kw_public, kw_stop, kw_critical, kw_spinlock, kw_spinunlock, kw_lockfail,
	kw_cdecl, kw_align, kw_prolog, kw_epilog, kw_check, kw_exception, kw_task,
	kw_unordered, kw_inline, kw_kernel, kw_inout, kw_leafs,
	kw_unique, kw_virtual, kw_this,
	kw_new, kw_delete, kw_using, kw_namespace, kw_not, kw_attribute,
	kw_no_temps, kw_no_parms, kw_floatmax,
	my_eof
};
 
enum e_sc {
	sc_static, sc_auto, sc_global, sc_thread, sc_external, sc_type, sc_const,
	sc_member, sc_label, sc_ulabel, sc_typedef, sc_register
};
 
enum e_sg { noseg, codeseg, dataseg, stackseg, bssseg, idataseg, tlsseg, rodataseg };
 
enum e_op {
	op_move, op_add, op_addu, op_addi, op_sub, op_subi, op_mov, op_mtspr, op_mfspr, op_ldi, op_ld,
	op_mul, op_muli, op_mulu, op_divi, op_modi, op_modui,
	op_div, op_divs, op_divsi, op_divu, op_and, op_andi, op_eor, op_eori,
	op_or, op_ori, op_xor, op_xori, op_redor,
	op_nand, op_nor, op_xnor,
	op_asr, op_asri, op_shl, op_shr, op_shru, op_ror, op_rol,
	op_shli, op_shri, op_shrui, op_shlu, op_shlui, op_rori, op_roli,
	op_bfext, op_bfextu, op_bfins,
	op_jmp, op_jsr, op_mului, op_mod, op_modu,
	op_bmi, op_subu, op_lwr, op_swc, op_loop, op_iret,
	op_sext32, op_sext16, op_sext8, op_sxb, op_sxc, op_sxh, op_zxb, op_zxc, op_zxh,
	op_dw, op_cache,
	op_subui, op_addui, op_sei,
	op_sw, op_sh, op_sc, op_sb, op_outb, op_inb, op_inbu,
	op_sfd, op_lfd,
	op_call, op_jal, op_beqi, op_bnei, op_tst,
 
	op_beq, op_bne, op_blt, op_ble, op_bgt, op_bge,
	op_bltu, op_bleu, op_bgtu, op_bgeu,
	op_bltui, op_bleui, op_blti, op_blei, op_bgti, op_bgtui, op_bgei, op_bgeui,
	op_bbs, op_bbc, op_bor,
 
	op_brz, op_brnz, op_br,
	op_lft, op_sft,
	op_lw, op_lh, op_lc, op_lb, op_ret, op_sm, op_lm, op_ldis, op_lws, op_sws,
	op_lvb, op_lvc, op_lvh, op_lvw,
	op_inc, op_dec,
	op_lbu, op_lcu, op_lhu, op_sti,
	op_lf, op_sf,
	op_rts, op_rtd,
	op_push, op_pop, op_movs,
	op_seq, op_sne, op_slt, op_sle, op_sgt, op_sge, op_sltu, op_sleu, op_sgtu, op_sgeu,
	op_bra, op_bf, op_eq, op_ne, op_lt, op_le, op_gt, op_ge,
	op_feq, op_fne, op_flt, op_fle, op_fgt, op_fge,
	op_gtu, op_geu, op_ltu, op_leu, op_nr,
	op_bhi, op_bhs, op_blo, op_bls, op_ext, op_lea, op_swap,
	op_neg, op_not, op_com, op_cmp, op_clr, op_link, op_unlk, op_label,
	op_pea, op_cmpi, op_dc, op_asm, op_stop, op_fnname,
	// FISA64
	op_lc0i, op_lc1i, op_lc2i, op_lc3i, op_chk, op_chki,
	op_cmpu, op_bsr, op_bun,
	op_sll, op_slli, op_srl, op_srli, op_sra, op_srai, op_asl, op_lsr, op_asli, op_lsri, op_rem,
	// floating point
	op_fbeq, op_fbne, op_fbor, op_fbun, op_fblt, op_fble, op_fbgt, op_fbge,
	op_fcvtsq, op_fcvtdq, op_fcvttq,
	op_fadd, op_fsub, op_fmul, op_fdiv, op_fcmp, op_fneg,
	op_ftmul, op_ftsub, op_ftdiv, op_ftadd, op_ftneg, op_ftcmp,
	op_fdmul, op_fdsub, op_fddiv, op_fdadd, op_fdneg, op_fdcmp,
	op_fsmul, op_fssub, op_fsdiv, op_fsadd, op_fsneg, op_fscmp,
	op_fs2d, op_i2d, op_i2t, op_ftoi, op_itof, op_qtoi,
	op_fmov,
	op_fdmov, op_fix2flt, op_mtfp, op_mffp, op_flt2fix, op_mv2flt, op_mv2fix,
	// Vector
	op_lv, op_sv,
	op_vadd, op_vsub, op_vmul, op_vdiv,
	op_vadds, op_vsubs, op_vmuls, op_vdivs,
	op_vseq, op_vsne,
	op_vslt, op_vsge, op_vsle, op_vsgt,
	op_vex, op_veins,
	// DSD9
	op_ldd, op_ldb, op_ldp, op_ldw, op_ldbu, op_ldwu, op_ldpu, op_ldt, op_ldtu,
	op_std, op_stb, op_stp, op_stw, op_stt, op_calltgt,
	op_csrrw, op_nop,
	op_hint, op_hint2, op_rem2,
	// FT64
	op_fslt, op_fsle, op_fsgt, op_fsge, op_fseq, op_fsne, op_fsun,
	op_divmod,
	op_pushf, op_popf, op_mov2, op_sort, op_demux,
	op_lvbu, op_lvcu, op_lvhu,
	op_cmovenz,
	op_sptr, op_isptr, op_setwb, op_spt,
	op_bchk, op_ibne, op_dbnz,
	op_brk, op_rti, op_rte, op_bex,
	op_addq1, op_addq2, op_addq3,
	op_andq1, op_andq2, op_andq3,
	op_orq1, op_orq2, op_orq3,
	op_swp,
	// Built in functions
	op_abs,
	op_phi,
    op_empty
};
 
#define F_REG   1       /* register direct mode allowed */
#define F_BREG	2		/* branch register */
#define F_MEM   4       /* memory alterable modes allowed */
#define F_IMMED 8       /* immediate mode allowed */
#define F_ALT   7       /* alterable modes */
#define F_DALT  5       /* data alterable modes */
#define F_VOL   16      /* need volitile operand */
#define F_IMMED18	64	// 18-bit immediate constant
#define F_IMM0	128		/* immediate value 0 */
#define F_IMM8	256
#define F_IMMED13  512
#define F_FPREG 1024
#define F_IMM6  2048
#define BF_ASSIGN	4096
#define F_VREG	8192
#define F_VMREG	16384
#define F_ALL   (15|1024|F_VREG|F_VMREG)      /* all modes allowed */
#define F_NOVALUE 32768		/* dont need result value */
 
enum e_seg {
	op_ns = 0,
	op_ds = 1 << 8,
	op_ts = 2 << 8,
	op_bs = 3 << 8,
	op_rs = 4 << 8,
	op_es = 5 << 8,
	op_seg6 = 6 << 8,
	op_seg7 = 7 << 8,
	op_seg8 = 8 << 8,
	op_seg9 = 9 << 8,
	op_seg10 = 10 << 8,
	op_seg11 = 11 << 8,
	op_seg12 = 12 << 8,
	op_seg13 = 13 << 8,
	op_ss = 14 << 8,
	op_cs = 15 << 8
};
 
#define LR		1
#define CLR		11
 
#define BP		26
#define SP		27
 
#define DS		0x21
#define BSS		0x23
#define LS		0x29
#define XLS		0x2A
#define SS		0x2E
#define CS		0x2F
 
#define MAX_STRLEN      120
#define MAX_STLP1       121
#define ERR_SYNTAX      0
#define ERR_ILLCHAR     1
#define ERR_FPCON       2
#define ERR_ILLTYPE     3
#define ERR_UNDEFINED   4
#define ERR_DUPSYM      5
#define ERR_PUNCT       6
#define ERR_IDEXPECT    7
#define ERR_NOINIT      8
#define ERR_INCOMPLETE  9
#define ERR_ILLINIT     10
#define ERR_INITSIZE    11
#define ERR_ILLCLASS    12
#define ERR_BLOCK       13
#define ERR_NOPOINTER   14
#define ERR_NOFUNC      15
#define ERR_NOMEMBER    16
#define ERR_LVALUE      17
#define ERR_DEREF       18
#define ERR_MISMATCH    19
#define ERR_EXPREXPECT  20
#define ERR_WHILEXPECT  21
#define ERR_NOCASE      22
#define ERR_DUPCASE     23
#define ERR_LABEL       24
#define ERR_PREPROC     25
#define ERR_INCLFILE    26
#define ERR_CANTOPEN    27
#define ERR_DEFINE      28
#define ERR_CATCHEXPECT	29
#define ERR_BITFIELD_WIDTH	30
#define ERR_EXPRTOOCOMPLEX	31
#define ERR_ASMTOOLONG	32
#define ERR_TOOMANYCASECONSTANTS	33
#define ERR_CATCHSTRUCT		34
#define ERR_SEMA_INCR	35
#define ERR_SEMA_ADDR	36
#define ERR_UNDEF_OP	37
#define ERR_INT_CONST	38
#define ERR_BAD_SWITCH_EXPR	39
#define ERR_NOT_IN_LOOP	40
#define ERR_CHECK       41
#define ERR_BADARRAYNDX	42
#define ERR_TOOMANYDIMEN	43
#define ERR_OUTOFPREDS  44 
#define ERR_PARMLIST_MISMATCH	45
#define ERR_PRIVATE		46
#define ERR_CALLSIG2	47
#define ERR_METHOD_NOTFOUND	48
#define ERR_OUT_OF_MEMORY   49
#define ERR_TOOMANY_SYMBOLS 50
#define ERR_TOOMANY_PARAMS  51
#define ERR_THIS            52
#define ERR_BADARG			53
#define ERR_CSETABLE		54
#define ERR_UBLTZ			55
#define ERR_UBGEQ			56
#define ERR_INFINITELOOP	57
#define ERR_TOOMANYELEMENTS	58
#define ERR_CONST			59
#define ERR_INIT_UNION      60
#define ERR_LOST_PREC		61
#define ERR_TOOMANY_TREES	62
#define ERR_STACKFULL		63
#define ERR_STACKEMPTY		64
#define ERR_IGNODES			65
#define ERR_NULLPOINTER		1000
#define ERR_CIRCULAR_LIST 1001
 
/*      alignment sizes         */
 
#define AL_BYTE			1
#define AL_CHAR         2
#define AL_SHORT        4
#define AL_LONG         8
#define AL_POINTER      8
#define AL_FLOAT        8
#define AL_DOUBLE       8
#define AL_QUAD			16
#define AL_STRUCT       2
#define AL_TRIPLE       12
 
#define TRUE	1
#define FALSE	0
//#define NULL	((void *)0)
 
// Register classes for instructions
#define RC_GP	1
#define RC_FP	2
#define RC_VEC	4
#define RC_ALL	7
 
#endif
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.