}
case 0x1a:
{
- if((insn.bits & 0x801f) == 0x1a)
+ if((insn.bits & 0x801f) == 0x801a)
{
- #include "insns/c_add.h"
+ #include "insns/c_sub.h"
break;
}
- if((insn.bits & 0x801f) == 0x801a)
+ if((insn.bits & 0x801f) == 0x1a)
{
- #include "insns/c_sub.h"
+ #include "insns/c_add.h"
break;
}
throw trap_illegal_instruction;
}
case 0x3a:
{
- if((insn.bits & 0x801f) == 0x1a)
+ if((insn.bits & 0x801f) == 0x801a)
{
- #include "insns/c_add.h"
+ #include "insns/c_sub.h"
break;
}
- if((insn.bits & 0x801f) == 0x801a)
+ if((insn.bits & 0x801f) == 0x1a)
{
- #include "insns/c_sub.h"
+ #include "insns/c_add.h"
break;
}
throw trap_illegal_instruction;
#include "insns/fcvt_d_l.h"
break;
}
- if((insn.bits & 0x3fffff) == 0xe0d3)
+ if((insn.bits & 0x3ff1ff) == 0xe0d3)
{
#include "insns/fcvt_d_w.h"
break;
}
- if((insn.bits & 0x3fffff) == 0x100d3)
+ if((insn.bits & 0x3ff1ff) == 0x100d3)
{
#include "insns/fcvt_d_s.h"
break;
#include "insns/feq_d.h"
break;
}
- if((insn.bits & 0x3fffff) == 0xf0d3)
+ if((insn.bits & 0x3ff1ff) == 0xf0d3)
{
#include "insns/fcvt_d_wu.h"
break;
}
case 0x5a:
{
- if((insn.bits & 0x801f) == 0x1a)
+ if((insn.bits & 0x801f) == 0x801a)
{
- #include "insns/c_add.h"
+ #include "insns/c_sub.h"
break;
}
- if((insn.bits & 0x801f) == 0x801a)
+ if((insn.bits & 0x801f) == 0x1a)
{
- #include "insns/c_sub.h"
+ #include "insns/c_add.h"
break;
}
throw trap_illegal_instruction;
}
case 0x77:
{
+ if((insn.bits & 0x7ffffff) == 0x277)
+ {
+ #include "insns/rdcycle.h"
+ break;
+ }
if((insn.bits & 0xffffffff) == 0x177)
{
#include "insns/stop.h"
#include "insns/utidx.h"
break;
}
+ if((insn.bits & 0x7ffffff) == 0xa77)
+ {
+ #include "insns/rdinstret.h"
+ break;
+ }
+ if((insn.bits & 0x7ffffff) == 0x677)
+ {
+ #include "insns/rdtime.h"
+ break;
+ }
if((insn.bits & 0xffffffff) == 0x77)
{
#include "insns/syscall.h"
}
case 0x7a:
{
- if((insn.bits & 0x801f) == 0x1a)
+ if((insn.bits & 0x801f) == 0x801a)
{
- #include "insns/c_add.h"
+ #include "insns/c_sub.h"
break;
}
- if((insn.bits & 0x801f) == 0x801a)
+ if((insn.bits & 0x801f) == 0x1a)
{
- #include "insns/c_sub.h"
+ #include "insns/c_add.h"
break;
}
throw trap_illegal_instruction;
#include "insns/mfpcr.h"
break;
}
- if((insn.bits & 0xf801ffff) == 0x1fb)
+ if((insn.bits & 0x7ffffff) == 0xfb)
{
- #include "insns/mtpcr.h"
+ #include "insns/di.h"
break;
}
- if((insn.bits & 0x7ffffff) == 0xfb)
+ if((insn.bits & 0xf801ffff) == 0x1fb)
{
- #include "insns/di.h"
+ #include "insns/mtpcr.h"
break;
}
if((insn.bits & 0xffffffff) == 0x2fb)