aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYunsup Lee <yunsup@cs.berkeley.edu>2010-09-09 23:21:11 -0700
committerYunsup Lee <yunsup@cs.berkeley.edu>2010-09-09 23:21:51 -0700
commit05b409f48d36dff18bb354b3f3b4974c505d3850 (patch)
tree452b72489960aaf78a82eb5b5ec1eb19f16c5e9e
parenta71855cfd61d4b98a1e88aafae3891fca32f6a36 (diff)
downloadriscv-isa-sim-05b409f48d36dff18bb354b3f3b4974c505d3850.zip
riscv-isa-sim-05b409f48d36dff18bb354b3f3b4974c505d3850.tar.gz
riscv-isa-sim-05b409f48d36dff18bb354b3f3b4974c505d3850.tar.bz2
[opcodes,sim,xcc] move opcodes for 3 source instructions
-rw-r--r--riscv/execute.h123
1 files changed, 67 insertions, 56 deletions
diff --git a/riscv/execute.h b/riscv/execute.h
index 15f90ef..b4ae6b9 100644
--- a/riscv/execute.h
+++ b/riscv/execute.h
@@ -277,62 +277,6 @@ switch((insn.bits >> 0x19) & 0x7f)
}
#include "insns/unimp.h"
}
- case 0x4:
- {
- if((insn.bits & 0xfe007c00) == 0xd0004000)
- {
- #include "insns/madd_s.h"
- break;
- }
- if((insn.bits & 0xfe007c00) == 0xd0004c00)
- {
- #include "insns/madd_d.h"
- break;
- }
- #include "insns/unimp.h"
- }
- case 0x5:
- {
- if((insn.bits & 0xfe007c00) == 0xd0005000)
- {
- #include "insns/msub_s.h"
- break;
- }
- if((insn.bits & 0xfe007c00) == 0xd0005c00)
- {
- #include "insns/msub_d.h"
- break;
- }
- #include "insns/unimp.h"
- }
- case 0x6:
- {
- if((insn.bits & 0xfe007c00) == 0xd0006000)
- {
- #include "insns/nmadd_s.h"
- break;
- }
- if((insn.bits & 0xfe007c00) == 0xd0006c00)
- {
- #include "insns/nmadd_d.h"
- break;
- }
- #include "insns/unimp.h"
- }
- case 0x7:
- {
- if((insn.bits & 0xfe007c00) == 0xd0007c00)
- {
- #include "insns/nmsub_d.h"
- break;
- }
- if((insn.bits & 0xfe007c00) == 0xd0007000)
- {
- #include "insns/nmsub_s.h"
- break;
- }
- #include "insns/unimp.h"
- }
default:
{
#include "insns/unimp.h"
@@ -418,6 +362,73 @@ switch((insn.bits >> 0x19) & 0x7f)
}
break;
}
+ case 0x6b:
+ {
+ switch((insn.bits >> 0xc) & 0x7)
+ {
+ case 0x0:
+ {
+ if((insn.bits & 0xfe007c00) == 0xd6000000)
+ {
+ #include "insns/madd_s.h"
+ break;
+ }
+ if((insn.bits & 0xfe007c00) == 0xd6000c00)
+ {
+ #include "insns/madd_d.h"
+ break;
+ }
+ #include "insns/unimp.h"
+ }
+ case 0x1:
+ {
+ if((insn.bits & 0xfe007c00) == 0xd6001000)
+ {
+ #include "insns/msub_s.h"
+ break;
+ }
+ if((insn.bits & 0xfe007c00) == 0xd6001c00)
+ {
+ #include "insns/msub_d.h"
+ break;
+ }
+ #include "insns/unimp.h"
+ }
+ case 0x2:
+ {
+ if((insn.bits & 0xfe007c00) == 0xd6002000)
+ {
+ #include "insns/nmadd_s.h"
+ break;
+ }
+ if((insn.bits & 0xfe007c00) == 0xd6002c00)
+ {
+ #include "insns/nmadd_d.h"
+ break;
+ }
+ #include "insns/unimp.h"
+ }
+ case 0x3:
+ {
+ if((insn.bits & 0xfe007c00) == 0xd6003c00)
+ {
+ #include "insns/nmsub_d.h"
+ break;
+ }
+ if((insn.bits & 0xfe007c00) == 0xd6003000)
+ {
+ #include "insns/nmsub_s.h"
+ break;
+ }
+ #include "insns/unimp.h"
+ }
+ default:
+ {
+ #include "insns/unimp.h"
+ }
+ }
+ break;
+ }
case 0x71:
{
#include "insns/lui.h"