fr30-desc.c

来自「基于4个mips核的noc设计」· C语言 代码 · 共 1,660 行 · 第 1/4 页

C
1,660
字号
    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },/* i32: 32 bit immediate */  { "i32", FR30_OPERAND_I32, HW_H_UINT, 0, 32,    { 0|A(HASH_PREFIX)|A(SIGN_OPT), { (1<<MACH_BASE) } }  },/* m4: 4  bit negative immediate */  { "m4", FR30_OPERAND_M4, HW_H_SINT, 8, 4,    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },/* i20: 20 bit immediate */  { "i20", FR30_OPERAND_I20, HW_H_UINT, 0, 20,    { 0|A(HASH_PREFIX)|A(VIRTUAL), { (1<<MACH_BASE) } }  },/* dir8: 8  bit direct address */  { "dir8", FR30_OPERAND_DIR8, HW_H_UINT, 8, 8,    { 0, { (1<<MACH_BASE) } }  },/* dir9: 9  bit direct address */  { "dir9", FR30_OPERAND_DIR9, HW_H_UINT, 8, 8,    { 0, { (1<<MACH_BASE) } }  },/* dir10: 10 bit direct address */  { "dir10", FR30_OPERAND_DIR10, HW_H_UINT, 8, 8,    { 0, { (1<<MACH_BASE) } }  },/* label9: 9  bit pc relative address */  { "label9", FR30_OPERAND_LABEL9, HW_H_IADDR, 8, 8,    { 0|A(PCREL_ADDR), { (1<<MACH_BASE) } }  },/* label12: 12 bit pc relative address */  { "label12", FR30_OPERAND_LABEL12, HW_H_IADDR, 5, 11,    { 0|A(PCREL_ADDR), { (1<<MACH_BASE) } }  },/* reglist_low_ld: 8 bit low register mask for ldm */  { "reglist_low_ld", FR30_OPERAND_REGLIST_LOW_LD, HW_H_UINT, 8, 8,    { 0, { (1<<MACH_BASE) } }  },/* reglist_hi_ld: 8 bit high register mask for ldm */  { "reglist_hi_ld", FR30_OPERAND_REGLIST_HI_LD, HW_H_UINT, 8, 8,    { 0, { (1<<MACH_BASE) } }  },/* reglist_low_st: 8 bit low register mask for stm */  { "reglist_low_st", FR30_OPERAND_REGLIST_LOW_ST, HW_H_UINT, 8, 8,    { 0, { (1<<MACH_BASE) } }  },/* reglist_hi_st: 8 bit high register mask for stm */  { "reglist_hi_st", FR30_OPERAND_REGLIST_HI_ST, HW_H_UINT, 8, 8,    { 0, { (1<<MACH_BASE) } }  },/* cc: condition codes */  { "cc", FR30_OPERAND_CC, HW_H_UINT, 4, 4,    { 0, { (1<<MACH_BASE) } }  },/* ccc: coprocessor calc */  { "ccc", FR30_OPERAND_CCC, HW_H_UINT, 0, 8,    { 0|A(HASH_PREFIX), { (1<<MACH_BASE) } }  },/* nbit: negative   bit */  { "nbit", FR30_OPERAND_NBIT, HW_H_NBIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* vbit: overflow   bit */  { "vbit", FR30_OPERAND_VBIT, HW_H_VBIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* zbit: zero       bit */  { "zbit", FR30_OPERAND_ZBIT, HW_H_ZBIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* cbit: carry      bit */  { "cbit", FR30_OPERAND_CBIT, HW_H_CBIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* ibit: interrupt  bit */  { "ibit", FR30_OPERAND_IBIT, HW_H_IBIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* sbit: stack      bit */  { "sbit", FR30_OPERAND_SBIT, HW_H_SBIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* tbit: trace trap bit */  { "tbit", FR30_OPERAND_TBIT, HW_H_TBIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* d0bit: division 0 bit */  { "d0bit", FR30_OPERAND_D0BIT, HW_H_D0BIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* d1bit: division 1 bit */  { "d1bit", FR30_OPERAND_D1BIT, HW_H_D1BIT, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* ccr: condition code bits */  { "ccr", FR30_OPERAND_CCR, HW_H_CCR, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* scr: system condition bits */  { "scr", FR30_OPERAND_SCR, HW_H_SCR, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },/* ilm: interrupt level mask */  { "ilm", FR30_OPERAND_ILM, HW_H_ILM, 0, 0,    { 0|A(SEM_ONLY), { (1<<MACH_BASE) } }  },  { 0, 0, 0, 0, 0, {0, {0}} }};#undef A#define A(a) (1 << CONCAT2 (CGEN_INSN_,a))#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))/* The instruction table.  */static const CGEN_IBASE fr30_cgen_insn_table[MAX_INSNS] ={  /* Special null first entry.     A `num' value of zero is thus invalid.     Also, the special `invalid' insn resides here.  */  { 0, 0, 0, 0, {0, {0}} },/* add $Rj,$Ri */  {    FR30_INSN_ADD, "add", "add", 16,    { 0, { (1<<MACH_BASE) } }  },/* add $u4,$Ri */  {    FR30_INSN_ADDI, "addi", "add", 16,    { 0, { (1<<MACH_BASE) } }  },/* add2 $m4,$Ri */  {    FR30_INSN_ADD2, "add2", "add2", 16,    { 0, { (1<<MACH_BASE) } }  },/* addc $Rj,$Ri */  {    FR30_INSN_ADDC, "addc", "addc", 16,    { 0, { (1<<MACH_BASE) } }  },/* addn $Rj,$Ri */  {    FR30_INSN_ADDN, "addn", "addn", 16,    { 0, { (1<<MACH_BASE) } }  },/* addn $u4,$Ri */  {    FR30_INSN_ADDNI, "addni", "addn", 16,    { 0, { (1<<MACH_BASE) } }  },/* addn2 $m4,$Ri */  {    FR30_INSN_ADDN2, "addn2", "addn2", 16,    { 0, { (1<<MACH_BASE) } }  },/* sub $Rj,$Ri */  {    FR30_INSN_SUB, "sub", "sub", 16,    { 0, { (1<<MACH_BASE) } }  },/* subc $Rj,$Ri */  {    FR30_INSN_SUBC, "subc", "subc", 16,    { 0, { (1<<MACH_BASE) } }  },/* subn $Rj,$Ri */  {    FR30_INSN_SUBN, "subn", "subn", 16,    { 0, { (1<<MACH_BASE) } }  },/* cmp $Rj,$Ri */  {    FR30_INSN_CMP, "cmp", "cmp", 16,    { 0, { (1<<MACH_BASE) } }  },/* cmp $u4,$Ri */  {    FR30_INSN_CMPI, "cmpi", "cmp", 16,    { 0, { (1<<MACH_BASE) } }  },/* cmp2 $m4,$Ri */  {    FR30_INSN_CMP2, "cmp2", "cmp2", 16,    { 0, { (1<<MACH_BASE) } }  },/* and $Rj,$Ri */  {    FR30_INSN_AND, "and", "and", 16,    { 0, { (1<<MACH_BASE) } }  },/* or $Rj,$Ri */  {    FR30_INSN_OR, "or", "or", 16,    { 0, { (1<<MACH_BASE) } }  },/* eor $Rj,$Ri */  {    FR30_INSN_EOR, "eor", "eor", 16,    { 0, { (1<<MACH_BASE) } }  },/* and $Rj,@$Ri */  {    FR30_INSN_ANDM, "andm", "and", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* andh $Rj,@$Ri */  {    FR30_INSN_ANDH, "andh", "andh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* andb $Rj,@$Ri */  {    FR30_INSN_ANDB, "andb", "andb", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* or $Rj,@$Ri */  {    FR30_INSN_ORM, "orm", "or", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* orh $Rj,@$Ri */  {    FR30_INSN_ORH, "orh", "orh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* orb $Rj,@$Ri */  {    FR30_INSN_ORB, "orb", "orb", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* eor $Rj,@$Ri */  {    FR30_INSN_EORM, "eorm", "eor", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* eorh $Rj,@$Ri */  {    FR30_INSN_EORH, "eorh", "eorh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* eorb $Rj,@$Ri */  {    FR30_INSN_EORB, "eorb", "eorb", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* bandl $u4,@$Ri */  {    FR30_INSN_BANDL, "bandl", "bandl", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* borl $u4,@$Ri */  {    FR30_INSN_BORL, "borl", "borl", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* beorl $u4,@$Ri */  {    FR30_INSN_BEORL, "beorl", "beorl", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* bandh $u4,@$Ri */  {    FR30_INSN_BANDH, "bandh", "bandh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* borh $u4,@$Ri */  {    FR30_INSN_BORH, "borh", "borh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* beorh $u4,@$Ri */  {    FR30_INSN_BEORH, "beorh", "beorh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* btstl $u4,@$Ri */  {    FR30_INSN_BTSTL, "btstl", "btstl", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* btsth $u4,@$Ri */  {    FR30_INSN_BTSTH, "btsth", "btsth", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* mul $Rj,$Ri */  {    FR30_INSN_MUL, "mul", "mul", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* mulu $Rj,$Ri */  {    FR30_INSN_MULU, "mulu", "mulu", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* mulh $Rj,$Ri */  {    FR30_INSN_MULH, "mulh", "mulh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* muluh $Rj,$Ri */  {    FR30_INSN_MULUH, "muluh", "muluh", 16,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* div0s $Ri */  {    FR30_INSN_DIV0S, "div0s", "div0s", 16,    { 0, { (1<<MACH_BASE) } }  },/* div0u $Ri */  {    FR30_INSN_DIV0U, "div0u", "div0u", 16,    { 0, { (1<<MACH_BASE) } }  },/* div1 $Ri */  {    FR30_INSN_DIV1, "div1", "div1", 16,    { 0, { (1<<MACH_BASE) } }  },/* div2 $Ri */  {    FR30_INSN_DIV2, "div2", "div2", 16,    { 0, { (1<<MACH_BASE) } }  },/* div3 */  {    FR30_INSN_DIV3, "div3", "div3", 16,    { 0, { (1<<MACH_BASE) } }  },/* div4s */  {    FR30_INSN_DIV4S, "div4s", "div4s", 16,    { 0, { (1<<MACH_BASE) } }  },/* lsl $Rj,$Ri */  {    FR30_INSN_LSL, "lsl", "lsl", 16,    { 0, { (1<<MACH_BASE) } }  },/* lsl $u4,$Ri */  {    FR30_INSN_LSLI, "lsli", "lsl", 16,    { 0, { (1<<MACH_BASE) } }  },/* lsl2 $u4,$Ri */  {    FR30_INSN_LSL2, "lsl2", "lsl2", 16,    { 0, { (1<<MACH_BASE) } }  },/* lsr $Rj,$Ri */  {    FR30_INSN_LSR, "lsr", "lsr", 16,    { 0, { (1<<MACH_BASE) } }  },/* lsr $u4,$Ri */  {    FR30_INSN_LSRI, "lsri", "lsr", 16,    { 0, { (1<<MACH_BASE) } }  },/* lsr2 $u4,$Ri */  {    FR30_INSN_LSR2, "lsr2", "lsr2", 16,    { 0, { (1<<MACH_BASE) } }  },/* asr $Rj,$Ri */  {    FR30_INSN_ASR, "asr", "asr", 16,    { 0, { (1<<MACH_BASE) } }  },/* asr $u4,$Ri */  {    FR30_INSN_ASRI, "asri", "asr", 16,    { 0, { (1<<MACH_BASE) } }  },/* asr2 $u4,$Ri */  {    FR30_INSN_ASR2, "asr2", "asr2", 16,    { 0, { (1<<MACH_BASE) } }  },/* ldi:8 $i8,$Ri */  {    FR30_INSN_LDI8, "ldi8", "ldi:8", 16,    { 0, { (1<<MACH_BASE) } }  },/* ldi:20 $i20,$Ri */  {    FR30_INSN_LDI20, "ldi20", "ldi:20", 32,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* ldi:32 $i32,$Ri */  {    FR30_INSN_LDI32, "ldi32", "ldi:32", 48,    { 0|A(NOT_IN_DELAY_SLOT), { (1<<MACH_BASE) } }  },/* ld @$Rj,$Ri */  {    FR30_INSN_LD, "ld", "ld", 16,    { 0, { (1<<MACH_BASE) } }  },/* lduh @$Rj,$Ri */  {    FR30_INSN_LDUH, "lduh", "lduh", 16,    { 0, { (1<<MACH_BASE) } }  },/* ldub @$Rj,$Ri */  {    FR30_INSN_LDUB, "ldub", "ldub", 16,    { 0, { (1<<MACH_BASE) } }  },/* ld @($R13,$Rj),$Ri */  {    FR30_INSN_LDR13, "ldr13", "ld", 16,    { 0, { (1<<MACH_BASE) } }  },/* lduh @($R13,$Rj),$Ri */  {    FR30_INSN_LDR13UH, "ldr13uh", "lduh", 16,    { 0, { (1<<MACH_BASE) } }  },/* ldub @($R13,$Rj),$Ri */  {    FR30_INSN_LDR13UB, "ldr13ub", "ldub", 16,    { 0, { (1<<MACH_BASE) } }  },/* ld @($R14,$disp10),$Ri */  {    FR30_INSN_LDR14, "ldr14", "ld", 16,    { 0, { (1<<MACH_BASE) } }  },/* lduh @($R14,$disp9),$Ri */  {    FR30_INSN_LDR14UH, "ldr14uh", "lduh", 16,    { 0, { (1<<MACH_BASE) } }  },/* ldub @($R14,$disp8),$Ri */  {    FR30_INSN_LDR14UB, "ldr14ub", "ldub", 16,    { 0, { (1<<MACH_BASE) } }  },

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?