diff options
author | Yunsup Lee <yunsup@cs.berkeley.edu> | 2010-09-09 23:21:11 -0700 |
---|---|---|
committer | Yunsup Lee <yunsup@cs.berkeley.edu> | 2010-09-09 23:21:51 -0700 |
commit | 05b409f48d36dff18bb354b3f3b4974c505d3850 (patch) | |
tree | 452b72489960aaf78a82eb5b5ec1eb19f16c5e9e | |
parent | a71855cfd61d4b98a1e88aafae3891fca32f6a36 (diff) | |
download | riscv-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.h | 123 |
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" |