m32r-opc.c

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

C
1,687
字号
    & ifmt_cmp, { 0x3040 }  },/* machi $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3040 }  },/* maclo $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x3050 }  },/* maclo $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3050 }  },/* macwhi $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x3060 }  },/* macwhi $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3060 }  },/* macwlo $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x3070 }  },/* macwlo $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3070 }  },/* mul $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x1060 }  },/* mulhi $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x3000 }  },/* mulhi $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3000 }  },/* mullo $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x3010 }  },/* mullo $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3010 }  },/* mulwhi $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x3020 }  },/* mulwhi $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3020 }  },/* mulwlo $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x3030 }  },/* mulwlo $src1,$src2,$acc */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 } },    & ifmt_machi_a, { 0x3030 }  },/* mv $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x1080 }  },/* mvfachi $dr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), 0 } },    & ifmt_mvfachi, { 0x50f0 }  },/* mvfachi $dr,$accs */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (ACCS), 0 } },    & ifmt_mvfachi_a, { 0x50f0 }  },/* mvfaclo $dr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), 0 } },    & ifmt_mvfachi, { 0x50f1 }  },/* mvfaclo $dr,$accs */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (ACCS), 0 } },    & ifmt_mvfachi_a, { 0x50f1 }  },/* mvfacmi $dr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), 0 } },    & ifmt_mvfachi, { 0x50f2 }  },/* mvfacmi $dr,$accs */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (ACCS), 0 } },    & ifmt_mvfachi_a, { 0x50f2 }  },/* mvfc $dr,$scr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SCR), 0 } },    & ifmt_mvfc, { 0x1090 }  },/* mvtachi $src1 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), 0 } },    & ifmt_mvtachi, { 0x5070 }  },/* mvtachi $src1,$accs */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (ACCS), 0 } },    & ifmt_mvtachi_a, { 0x5070 }  },/* mvtaclo $src1 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), 0 } },    & ifmt_mvtachi, { 0x5071 }  },/* mvtaclo $src1,$accs */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (ACCS), 0 } },    & ifmt_mvtachi_a, { 0x5071 }  },/* mvtc $sr,$dcr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SR), ',', OP (DCR), 0 } },    & ifmt_mvtc, { 0x10a0 }  },/* neg $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x30 }  },/* nop */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_nop, { 0x7000 }  },/* not $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0xb0 }  },/* rac */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_nop, { 0x5090 }  },/* rac $accd,$accs,$imm1 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (ACCD), ',', OP (ACCS), ',', OP (IMM1), 0 } },    & ifmt_rac_dsi, { 0x5090 }  },/* rach */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_nop, { 0x5080 }  },/* rach $accd,$accs,$imm1 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (ACCD), ',', OP (ACCS), ',', OP (IMM1), 0 } },    & ifmt_rac_dsi, { 0x5080 }  },/* rte */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_nop, { 0x10d6 }  },/* seth $dr,$hash$hi16 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (HI16), 0 } },    & ifmt_seth, { 0xd0c00000 }  },/* sll $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x1040 }  },/* sll3 $dr,$sr,$simm16 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (SIMM16), 0 } },    & ifmt_addv3, { 0x90c00000 }  },/* slli $dr,$uimm5 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (UIMM5), 0 } },    & ifmt_slli, { 0x5040 }  },/* sra $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x1020 }  },/* sra3 $dr,$sr,$simm16 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (SIMM16), 0 } },    & ifmt_addv3, { 0x90a00000 }  },/* srai $dr,$uimm5 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (UIMM5), 0 } },    & ifmt_slli, { 0x5020 }  },/* srl $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x1000 }  },/* srl3 $dr,$sr,$simm16 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (SIMM16), 0 } },    & ifmt_addv3, { 0x90800000 }  },/* srli $dr,$uimm5 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (UIMM5), 0 } },    & ifmt_slli, { 0x5000 }  },/* st $src1,@$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 } },    & ifmt_cmp, { 0x2040 }  },/* st $src1,@($slo16,$src2) */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SLO16), ',', OP (SRC2), ')', 0 } },    & ifmt_st_d, { 0xa0400000 }  },/* stb $src1,@$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 } },    & ifmt_cmp, { 0x2000 }  },/* stb $src1,@($slo16,$src2) */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SLO16), ',', OP (SRC2), ')', 0 } },    & ifmt_st_d, { 0xa0000000 }  },/* sth $src1,@$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 } },    & ifmt_cmp, { 0x2020 }  },/* sth $src1,@($slo16,$src2) */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SLO16), ',', OP (SRC2), ')', 0 } },    & ifmt_st_d, { 0xa0200000 }  },/* st $src1,@+$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', '+', OP (SRC2), 0 } },    & ifmt_cmp, { 0x2060 }  },/* st $src1,@-$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', '-', OP (SRC2), 0 } },    & ifmt_cmp, { 0x2070 }  },/* sub $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x20 }  },/* subv $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x0 }  },/* subx $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_add, { 0x10 }  },/* trap $uimm4 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (UIMM4), 0 } },    & ifmt_trap, { 0x10f0 }  },/* unlock $src1,@$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 } },    & ifmt_cmp, { 0x2050 }  },/* satb $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_satb, { 0x80600300 }  },/* sath $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_satb, { 0x80600200 }  },/* sat $dr,$sr */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },    & ifmt_satb, { 0x80600000 }  },/* pcmpbz $src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC2), 0 } },    & ifmt_cmpz, { 0x370 }  },/* sadd */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_nop, { 0x50e4 }  },/* macwu1 $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x50b0 }  },/* msblo $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x50d0 }  },/* mulwu1 $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x50a0 }  },/* maclh1 $src1,$src2 */  {    { 0, 0, 0, 0 },    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },    & ifmt_cmp, { 0x50c0 }  },/* sc */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_nop, { 0x7401 }  },/* snc */  {    { 0, 0, 0, 0 },    { { MNEM, 0 } },    & ifmt_nop, { 0x7501 }  },};#undef A#undef MNEM#undef OPERAND#undef OP/* Formats for ALIAS macro-insns.  */#define F(f) & m32r_cgen_ifld_table[CONCAT2 (M32R_,f)]static const CGEN_IFMT ifmt_bc8r = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } }};static const CGEN_IFMT ifmt_bc24r = {  32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } }};static const CGEN_IFMT ifmt_bl8r = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } }};static const CGEN_IFMT ifmt_bl24r = {  32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } }};static const CGEN_IFMT ifmt_bcl8r = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } }};static const CGEN_IFMT ifmt_bcl24r = {  32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } }};static const CGEN_IFMT ifmt_bnc8r = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } }};static const CGEN_IFMT ifmt_bnc24r = {  32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } }};static const CGEN_IFMT ifmt_bra8r = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } }};static const CGEN_IFMT ifmt_bra24r = {  32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } }};static const CGEN_IFMT ifmt_bncl8r = {  16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } }};static const CGEN_IFMT ifmt_bncl24r = {  32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } }};static const CGEN_IFMT ifmt_ld_2 = {  16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } }};static const CGEN_IFMT ifmt_ld_d2 = {  32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }};static const CGEN_IFMT ifmt_ldb_2 = {  16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } }};static const CGEN_IFMT ifmt_ldb_d2 = {  32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }};static const CGEN_IFMT ifmt_ldh_2 = {  16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } }};static const CGEN_IFMT ifmt_ldh_d2 = {  32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }};static const CGEN_IFMT ifmt_ldub_2 = {  16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } }};static const CGEN_IFMT ifmt_ldub_d2 = {  32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }};static const CGEN_IFMT ifmt_lduh_2 = {  16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } }};static const CGEN_IFMT ifmt_lduh_d2 = {  32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }};static const CGEN_IFMT ifmt_pop = {  16, 16, 0xf0ff, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } }};static const CGEN_IFMT ifmt_ldi8a = {  16, 16, 0xf000, { { F (F_OP1) }, { F (F_R1) }, { F (F_SIMM8) }, { 0 } }};static const CGEN_IFMT ifmt_ldi16a = {  32, 32, 0xf0ff0000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_R1) }, { F (F_SIMM16) }, { 0 } }};static const CGEN_IFMT ifmt_rac_d = {  16, 16, 0xf3ff, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } }};static const CGEN_IFMT ifmt_rac_ds = {  16, 16, 0xf3f3, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } }};static const CGEN_IFMT ifmt_rach_d = {  16, 16, 0xf3ff, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } }};static const CGEN_IFMT ifmt_rach_ds = {  16, 16, 0xf3f3, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } }};static const CGEN_IFMT ifmt_st_2 = {  16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } }};static const CGEN_IFMT ifmt_st_d2 = {  32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } }};

⌨️ 快捷键说明

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