diff options
author | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-05-31 16:38:24 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@cs.berkeley.edu> | 2015-05-31 18:29:45 -0700 |
commit | 56701b230823f52c252ce6ab69c18639daa02a14 (patch) | |
tree | 96935c7b7154db38f675210f94b5dea34bef84f2 /riscv/insns/c_addiw.h | |
parent | 5235a77475ff00aecafb9db4c1b003043d2d7f20 (diff) | |
download | spike-56701b230823f52c252ce6ab69c18639daa02a14.zip spike-56701b230823f52c252ce6ab69c18639daa02a14.tar.gz spike-56701b230823f52c252ce6ab69c18639daa02a14.tar.bz2 |
Add rest of RV32C instructions
Diffstat (limited to 'riscv/insns/c_addiw.h')
-rw-r--r-- | riscv/insns/c_addiw.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/riscv/insns/c_addiw.h b/riscv/insns/c_addiw.h index 27ffd8f..ae4980e 100644 --- a/riscv/insns/c_addiw.h +++ b/riscv/insns/c_addiw.h @@ -1,4 +1,7 @@ require_extension('C'); -require_rv64; -require(insn.rvc_rd() != 0); -WRITE_RD(sext32(RVC_RS1 + insn.rvc_imm())); +if (xlen == 32) { + WRITE_RD(RVC_RS1 & insn.rvc_imm()); // c.andi +} else { + require(insn.rvc_rd() != 0); + WRITE_RD(sext32(RVC_RS1 + insn.rvc_imm())); +} |