You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1065 lines
20 KiB
1065 lines
20 KiB
/* Automatically generated by parse-opcodes */
|
|
switch((insn.bits >> 0x0) & 0x7f)
|
|
{
|
|
case 0x0:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
if((insn.bits & 0xffffffff) == 0x0)
|
|
{
|
|
#include "insns/unimp.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x60:
|
|
{
|
|
#include "insns/j.h"
|
|
break;
|
|
}
|
|
case 0x61:
|
|
{
|
|
#include "insns/jal.h"
|
|
break;
|
|
}
|
|
case 0x62:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/jalr_c.h"
|
|
break;
|
|
}
|
|
case 0x1:
|
|
{
|
|
#include "insns/jalr_r.h"
|
|
break;
|
|
}
|
|
case 0x2:
|
|
{
|
|
#include "insns/jalr_j.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x63:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/beq.h"
|
|
break;
|
|
}
|
|
case 0x1:
|
|
{
|
|
#include "insns/bne.h"
|
|
break;
|
|
}
|
|
case 0x4:
|
|
{
|
|
#include "insns/blt.h"
|
|
break;
|
|
}
|
|
case 0x5:
|
|
{
|
|
#include "insns/bge.h"
|
|
break;
|
|
}
|
|
case 0x6:
|
|
{
|
|
#include "insns/bltu.h"
|
|
break;
|
|
}
|
|
case 0x7:
|
|
{
|
|
#include "insns/bgeu.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x68:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x2:
|
|
{
|
|
#include "insns/l_s.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/l_d.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x69:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x2:
|
|
{
|
|
#include "insns/s_s.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/s_d.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x6a:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0x1506a)
|
|
{
|
|
#include "insns/c_eq_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x506a)
|
|
{
|
|
#include "insns/sgninj_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xa06a)
|
|
{
|
|
#include "insns/cvt_w_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xe06a)
|
|
{
|
|
#include "insns/cvt_s_w.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x6a)
|
|
{
|
|
#include "insns/add_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0x906a)
|
|
{
|
|
#include "insns/cvtu_l_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x7c1ffff) == 0x1846a)
|
|
{
|
|
#include "insns/mff_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3fffff) == 0x1c46a)
|
|
{
|
|
#include "insns/mtf_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x606a)
|
|
{
|
|
#include "insns/sgninjn_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0x806a)
|
|
{
|
|
#include "insns/cvt_l_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xf06a)
|
|
{
|
|
#include "insns/cvtu_s_w.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xd06a)
|
|
{
|
|
#include "insns/cvtu_s_l.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x106a)
|
|
{
|
|
#include "insns/sub_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0x406a)
|
|
{
|
|
#include "insns/sqrt_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1606a)
|
|
{
|
|
#include "insns/c_lt_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x706a)
|
|
{
|
|
#include "insns/sgnmul_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xc06a)
|
|
{
|
|
#include "insns/cvt_s_l.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x306a)
|
|
{
|
|
#include "insns/div_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0x1306a)
|
|
{
|
|
#include "insns/cvt_s_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1706a)
|
|
{
|
|
#include "insns/c_le_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x206a)
|
|
{
|
|
#include "insns/mul_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xb06a)
|
|
{
|
|
#include "insns/cvtu_w_s.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x3:
|
|
{
|
|
if((insn.bits & 0x3ff1ff) == 0xa1ea)
|
|
{
|
|
#include "insns/cvt_w_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x7c1ffff) == 0x185ea)
|
|
{
|
|
#include "insns/mff_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x51ea)
|
|
{
|
|
#include "insns/sgninj_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x31ea)
|
|
{
|
|
#include "insns/div_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x151ea)
|
|
{
|
|
#include "insns/c_eq_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xd1ea)
|
|
{
|
|
#include "insns/cvtu_d_l.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3fffff) == 0xf1ea)
|
|
{
|
|
#include "insns/cvtu_d_w.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0x91ea)
|
|
{
|
|
#include "insns/cvtu_l_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x7c1ffff) == 0x195ea)
|
|
{
|
|
#include "insns/mffl_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x71ea)
|
|
{
|
|
#include "insns/sgnmul_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x1ea)
|
|
{
|
|
#include "insns/add_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x7c1ffff) == 0x1a5ea)
|
|
{
|
|
#include "insns/mffh_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x171ea)
|
|
{
|
|
#include "insns/c_le_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x61ea)
|
|
{
|
|
#include "insns/sgninjn_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0x81ea)
|
|
{
|
|
#include "insns/cvt_l_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x11ea)
|
|
{
|
|
#include "insns/sub_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3fffff) == 0x1c5ea)
|
|
{
|
|
#include "insns/mtf_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0x41ea)
|
|
{
|
|
#include "insns/sqrt_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3fffff) == 0x101ea)
|
|
{
|
|
#include "insns/cvt_d_s.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3fffff) == 0xe1ea)
|
|
{
|
|
#include "insns/cvt_d_w.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xc1ea)
|
|
{
|
|
#include "insns/cvt_d_l.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1f1ff) == 0x21ea)
|
|
{
|
|
#include "insns/mul_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x3ff1ff) == 0xb1ea)
|
|
{
|
|
#include "insns/cvtu_w_d.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x161ea)
|
|
{
|
|
#include "insns/c_lt_d.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x7:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0x1c7ea)
|
|
{
|
|
#include "insns/mtflh_d.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x6b:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
if((insn.bits & 0x7ffffff) == 0x46b)
|
|
{
|
|
#include "insns/di.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x7ffffff) == 0x6b)
|
|
{
|
|
#include "insns/ei.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x1:
|
|
{
|
|
if((insn.bits & 0x7c1ffff) == 0xeb)
|
|
{
|
|
#include "insns/mfpcr.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0xf801ffff) == 0x4eb)
|
|
{
|
|
#include "insns/mtpcr.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x2:
|
|
{
|
|
if((insn.bits & 0xffffffff) == 0x16b)
|
|
{
|
|
#include "insns/eret.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x6c:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/madd_s.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/madd_d.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x6d:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/msub_s.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/msub_d.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x6e:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/nmsub_s.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/nmsub_d.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x6f:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/nmadd_s.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/nmadd_d.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x71:
|
|
{
|
|
#include "insns/lui.h"
|
|
break;
|
|
}
|
|
case 0x74:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/addi.h"
|
|
break;
|
|
}
|
|
case 0x2:
|
|
{
|
|
#include "insns/slti.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/sltiu.h"
|
|
break;
|
|
}
|
|
case 0x4:
|
|
{
|
|
#include "insns/andi.h"
|
|
break;
|
|
}
|
|
case 0x5:
|
|
{
|
|
#include "insns/ori.h"
|
|
break;
|
|
}
|
|
case 0x6:
|
|
{
|
|
#include "insns/xori.h"
|
|
break;
|
|
}
|
|
case 0x7:
|
|
{
|
|
if((insn.bits & 0xffff) == 0xbf4)
|
|
{
|
|
#include "insns/srli.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0xffff) == 0xff4)
|
|
{
|
|
#include "insns/srai.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0xffff) == 0x7f4)
|
|
{
|
|
#include "insns/slli.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x75:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0x75)
|
|
{
|
|
#include "insns/add.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xc75)
|
|
{
|
|
#include "insns/sltu.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1875)
|
|
{
|
|
#include "insns/xor.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x475)
|
|
{
|
|
#include "insns/sub.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1475)
|
|
{
|
|
#include "insns/or.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x875)
|
|
{
|
|
#include "insns/slt.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1075)
|
|
{
|
|
#include "insns/and.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x1:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0xf5)
|
|
{
|
|
#include "insns/mul.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x10f5)
|
|
{
|
|
#include "insns/div.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x18f5)
|
|
{
|
|
#include "insns/rem.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x8f5)
|
|
{
|
|
#include "insns/mulh.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1cf5)
|
|
{
|
|
#include "insns/remu.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xcf5)
|
|
{
|
|
#include "insns/mulhu.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x14f5)
|
|
{
|
|
#include "insns/divu.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x7:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0xff5)
|
|
{
|
|
#include "insns/sra.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xbf5)
|
|
{
|
|
#include "insns/srl.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x7f5)
|
|
{
|
|
#include "insns/sll.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x76:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/addiw.h"
|
|
break;
|
|
}
|
|
case 0x7:
|
|
{
|
|
if((insn.bits & 0x20ffff) == 0x7f6)
|
|
{
|
|
#include "insns/slliw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x20ffff) == 0xbf6)
|
|
{
|
|
#include "insns/srliw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x20ffff) == 0xff6)
|
|
{
|
|
#include "insns/sraiw.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x77:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0x77)
|
|
{
|
|
#include "insns/addw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x477)
|
|
{
|
|
#include "insns/subw.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x1:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0x1cf7)
|
|
{
|
|
#include "insns/remuw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x14f7)
|
|
{
|
|
#include "insns/divuw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xcf7)
|
|
{
|
|
#include "insns/mulhuw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xf7)
|
|
{
|
|
#include "insns/mulw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x18f7)
|
|
{
|
|
#include "insns/remw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x8f7)
|
|
{
|
|
#include "insns/mulhw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x10f7)
|
|
{
|
|
#include "insns/divw.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x7:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0xbf7)
|
|
{
|
|
#include "insns/srlw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xff7)
|
|
{
|
|
#include "insns/sraw.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x7f7)
|
|
{
|
|
#include "insns/sllw.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x78:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/lb.h"
|
|
break;
|
|
}
|
|
case 0x1:
|
|
{
|
|
#include "insns/lh.h"
|
|
break;
|
|
}
|
|
case 0x2:
|
|
{
|
|
#include "insns/lw.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/ld.h"
|
|
break;
|
|
}
|
|
case 0x4:
|
|
{
|
|
#include "insns/lbu.h"
|
|
break;
|
|
}
|
|
case 0x5:
|
|
{
|
|
#include "insns/lhu.h"
|
|
break;
|
|
}
|
|
case 0x6:
|
|
{
|
|
#include "insns/lwu.h"
|
|
break;
|
|
}
|
|
case 0x7:
|
|
{
|
|
if((insn.bits & 0xf80003ff) == 0x3f8)
|
|
{
|
|
#include "insns/synci.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x79:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
#include "insns/sb.h"
|
|
break;
|
|
}
|
|
case 0x1:
|
|
{
|
|
#include "insns/sh.h"
|
|
break;
|
|
}
|
|
case 0x2:
|
|
{
|
|
#include "insns/sw.h"
|
|
break;
|
|
}
|
|
case 0x3:
|
|
{
|
|
#include "insns/sd.h"
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x7a:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x2:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0x157a)
|
|
{
|
|
#include "insns/amow_max.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x97a)
|
|
{
|
|
#include "insns/amow_and.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x117a)
|
|
{
|
|
#include "insns/amow_min.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xd7a)
|
|
{
|
|
#include "insns/amow_or.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x197a)
|
|
{
|
|
#include "insns/amow_minu.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x17a)
|
|
{
|
|
#include "insns/amow_add.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x57a)
|
|
{
|
|
#include "insns/amow_swap.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1d7a)
|
|
{
|
|
#include "insns/amow_maxu.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x3:
|
|
{
|
|
if((insn.bits & 0x1ffff) == 0x1fa)
|
|
{
|
|
#include "insns/amo_add.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x5fa)
|
|
{
|
|
#include "insns/amo_swap.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0xdfa)
|
|
{
|
|
#include "insns/amo_or.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x15fa)
|
|
{
|
|
#include "insns/amo_max.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x11fa)
|
|
{
|
|
#include "insns/amo_min.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x19fa)
|
|
{
|
|
#include "insns/amo_minu.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x9fa)
|
|
{
|
|
#include "insns/amo_and.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0x1ffff) == 0x1dfa)
|
|
{
|
|
#include "insns/amo_maxu.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case 0x7b:
|
|
{
|
|
switch((insn.bits >> 0x7) & 0x7)
|
|
{
|
|
case 0x0:
|
|
{
|
|
if((insn.bits & 0x7ffffff) == 0x7b)
|
|
{
|
|
#include "insns/rdnpc.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x1:
|
|
{
|
|
if((insn.bits & 0x7c1ffff) == 0xfb)
|
|
{
|
|
#include "insns/mfcr.h"
|
|
break;
|
|
}
|
|
if((insn.bits & 0xf801ffff) == 0x4fb)
|
|
{
|
|
#include "insns/mtcr.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x2:
|
|
{
|
|
if((insn.bits & 0xffffffff) == 0x17b)
|
|
{
|
|
#include "insns/sync.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
case 0x3:
|
|
{
|
|
if((insn.bits & 0xffc003ff) == 0x1fb)
|
|
{
|
|
#include "insns/syscall.h"
|
|
break;
|
|
}
|
|
#include "insns/unimp.h"
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
#include "insns/unimp.h"
|
|
}
|
|
}
|
|
|