Update ISA encoding and AUIPC semantics
authorAndrew Waterman <waterman@cs.berkeley.edu>
Sat, 21 Sep 2013 13:40:54 +0000 (06:40 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Sat, 21 Sep 2013 13:40:54 +0000 (06:40 -0700)
riscv/decode.h
riscv/insns/auipc.h
riscv/opcodes.h

index e1a6b7401f8913f2126567429187874d3269c438..3d20b62735e175991207a594d18674a7a8a31315 100644 (file)
@@ -3,6 +3,10 @@
 #ifndef _RISCV_DECODE_H
 #define _RISCV_DECODE_H
 
+#if (-1 != ~0) || ((-1 >> 1) != -1)
+# error spike requires a two''s-complement c++ implementation
+#endif
+
 #define __STDC_LIMIT_MACROS
 #include <stdint.h>
 #include <string.h>
@@ -49,20 +53,20 @@ class insn_t
 {
 public:
   uint32_t bits() { return b; }
-  reg_t i_imm() { return x(11, 11) | (imm_sign() << 11); }
-  reg_t s_imm() { return x(11, 6) | (x(27, 5) << 6) | (imm_sign() << 11); }
-  reg_t sb_imm() { return (x(12, 5) << 1) | (x(27, 5) << 6) | (x(11, 1) << 11) | (imm_sign() << 12); }
-  reg_t u_imm() { return (x(22, 5) << 12) | (x(7, 3) << 17) | (x(11, 11) << 20) | (imm_sign() << 31); }
-  reg_t uj_imm() { return (x(12, 10) << 1) | (x(11, 1) << 11) | (x(22, 5) << 12) | (x(7, 3) << 17) | (imm_sign() << 20); }
-  uint32_t rd() { return x(27, 5); }
-  uint32_t rs1() { return x(22, 5); }
-  uint32_t rs2() { return x(17, 5); }
-  uint32_t rs3() { return x(12, 5); }
-  uint32_t rm() { return x(9, 3); }
+  reg_t i_imm() { return int64_t(int32_t(b) >> 20); }
+  reg_t s_imm() { return x(7, 5) | (x(25, 7) << 5) | (imm_sign() << 12); }
+  reg_t sb_imm() { return (x(8, 4) << 1) | (x(25,6) << 5) | (x(7,1) << 11) | (imm_sign() << 12); }
+  reg_t u_imm() { return int64_t(int32_t(b) >> 12 << 12); }
+  reg_t uj_imm() { return (x(21, 10) << 1) | (x(20, 1) << 11) | (x(12, 8) << 12) | (imm_sign() << 20); }
+  uint32_t rd() { return x(7, 5); }
+  uint32_t rs1() { return x(15, 5); }
+  uint32_t rs2() { return x(20, 5); }
+  uint32_t rs3() { return x(27, 5); }
+  uint32_t rm() { return x(12, 3); }
 private:
   uint32_t b;
   reg_t x(int lo, int len) { return b << (32-lo-len) >> (32-len); }
-  reg_t imm_sign() { return -x(10, 1); }
+  reg_t imm_sign() { return int64_t(int32_t(b) >> 31); }
 };
 
 template <class T>
index 1c75a406cfd4755ce7bfda202f81601761e15c57..b58a0c924e1f9392c0f51a6716e6ac0dcab1b748 100644 (file)
@@ -1 +1 @@
-RD = sext_xprlen(insn.u_imm() + pc);
+RD = sext_xprlen(insn.u_imm() + (pc >> 12 << 12));
index 4e3f3ed8a38cc4c76d6de6f8da24a0acc4f695b3..2a42554cd1d0b9fdea5a985adae350b0805ef30a 100644 (file)
-DECLARE_INSN(fmv_s_x, 0x1e053, 0x3fffff)
-DECLARE_INSN(amoxor_w, 0x112b, 0x7fff)
-DECLARE_INSN(remuw, 0x7bb, 0x1ffff)
-DECLARE_INSN(fmin_d, 0x180d3, 0x1ffff)
-DECLARE_INSN(amomax_d, 0x51ab, 0x7fff)
-DECLARE_INSN(bltu, 0x363, 0x3ff)
-DECLARE_INSN(fmin_s, 0x18053, 0x1ffff)
-DECLARE_INSN(slliw, 0x9b, 0x3f07ff)
-DECLARE_INSN(lb, 0x3, 0x3ff)
-DECLARE_INSN(fcvt_s_wu, 0xf053, 0x3ff1ff)
-DECLARE_INSN(fcvt_d_l, 0xc0d3, 0x3ff1ff)
-DECLARE_INSN(lh, 0x83, 0x3ff)
-DECLARE_INSN(frsr, 0x1d053, 0x7ffffff)
-DECLARE_INSN(fcvt_d_w, 0xe0d3, 0x3ff1ff)
-DECLARE_INSN(lw, 0x103, 0x3ff)
-DECLARE_INSN(add, 0x33, 0x1ffff)
-DECLARE_INSN(fcvt_d_s, 0x100d3, 0x3ff1ff)
-DECLARE_INSN(mfpcr, 0xf3, 0x3fffff)
-DECLARE_INSN(fmax_d, 0x190d3, 0x1ffff)
-DECLARE_INSN(bne, 0xe3, 0x3ff)
-DECLARE_INSN(rdcycle, 0x277, 0x7ffffff)
-DECLARE_INSN(fcvt_s_d, 0x11053, 0x3ff1ff)
-DECLARE_INSN(bgeu, 0x3e3, 0x3ff)
-DECLARE_INSN(fadd_d, 0xd3, 0x1f1ff)
-DECLARE_INSN(sltiu, 0x193, 0x3ff)
-DECLARE_INSN(mtpcr, 0x73, 0x1ffff)
-DECLARE_INSN(break, 0xf7, 0xffffffff)
-DECLARE_INSN(fcvt_s_w, 0xe053, 0x3ff1ff)
-DECLARE_INSN(mul, 0x433, 0x1ffff)
-DECLARE_INSN(amominu_d, 0x61ab, 0x7fff)
-DECLARE_INSN(srli, 0x293, 0x3e07ff)
-DECLARE_INSN(amominu_w, 0x612b, 0x7fff)
-DECLARE_INSN(divuw, 0x6bb, 0x1ffff)
-DECLARE_INSN(mulw, 0x43b, 0x1ffff)
-DECLARE_INSN(srlw, 0x2bb, 0x1ffff)
-DECLARE_INSN(div, 0x633, 0x1ffff)
-DECLARE_INSN(fdiv_d, 0x30d3, 0x1f1ff)
-DECLARE_INSN(fence, 0x2f, 0x1ff)
-DECLARE_INSN(fnmsub_s, 0x4b, 0x1ff)
-DECLARE_INSN(fcvt_l_s, 0x8053, 0x3ff1ff)
-DECLARE_INSN(fle_s, 0x17053, 0x1ffff)
-DECLARE_INSN(fence_v_l, 0x12f, 0x1ff)
-DECLARE_INSN(fdiv_s, 0x3053, 0x1f1ff)
-DECLARE_INSN(fle_d, 0x170d3, 0x1ffff)
-DECLARE_INSN(fence_i, 0xaf, 0x1ff)
-DECLARE_INSN(fnmsub_d, 0xcb, 0x1ff)
-DECLARE_INSN(addw, 0x3b, 0x1ffff)
-DECLARE_INSN(sll, 0xb3, 0x1ffff)
-DECLARE_INSN(xor, 0x233, 0x1ffff)
-DECLARE_INSN(sub, 0x10033, 0x1ffff)
-DECLARE_INSN(eret, 0x273, 0xffffffff)
-DECLARE_INSN(blt, 0x263, 0x3ff)
-DECLARE_INSN(sc_w, 0xd2b, 0x7fff)
-DECLARE_INSN(rem, 0x733, 0x1ffff)
-DECLARE_INSN(srliw, 0x29b, 0x3f07ff)
+DECLARE_INSN(fmv_s_x, 0xf0000053, 0xfff0707f)
+DECLARE_INSN(amoxor_w, 0x2000202f, 0xf800707f)
+DECLARE_INSN(remuw, 0x200703b, 0xfe00707f)
+DECLARE_INSN(fmin_d, 0xc2000053, 0xfe00707f)
+DECLARE_INSN(amomax_d, 0xa000302f, 0xf800707f)
+DECLARE_INSN(bltu, 0x6063, 0x707f)
+DECLARE_INSN(fmin_s, 0xc0000053, 0xfe00707f)
+DECLARE_INSN(slliw, 0x4000101b, 0xfe00707f)
+DECLARE_INSN(lb, 0x3, 0x707f)
+DECLARE_INSN(fcvt_s_wu, 0x78000053, 0xfff0007f)
+DECLARE_INSN(fcvt_d_l, 0x62000053, 0xfff0007f)
+DECLARE_INSN(lh, 0x1003, 0x707f)
+DECLARE_INSN(frsr, 0xe8000053, 0xfffff07f)
+DECLARE_INSN(fcvt_d_w, 0x72000053, 0xfff0007f)
+DECLARE_INSN(lw, 0x2003, 0x707f)
+DECLARE_INSN(add, 0x33, 0xfe00707f)
+DECLARE_INSN(fcvt_d_s, 0x82000053, 0xfff0007f)
+DECLARE_INSN(mfpcr, 0x1073, 0xfff0707f)
+DECLARE_INSN(fmax_d, 0xca000053, 0xfe00707f)
+DECLARE_INSN(bne, 0x1063, 0x707f)
+DECLARE_INSN(rdcycle, 0x4077, 0xfffff07f)
+DECLARE_INSN(fcvt_s_d, 0x88000053, 0xfff0007f)
+DECLARE_INSN(bgeu, 0x7063, 0x707f)
+DECLARE_INSN(fadd_d, 0x2000053, 0xfe00007f)
+DECLARE_INSN(sltiu, 0x3013, 0x707f)
+DECLARE_INSN(mtpcr, 0x73, 0xfe00707f)
+DECLARE_INSN(break, 0x1077, 0xffffffff)
+DECLARE_INSN(fcvt_s_w, 0x70000053, 0xfff0007f)
+DECLARE_INSN(mul, 0x2000033, 0xfe00707f)
+DECLARE_INSN(amominu_d, 0xc000302f, 0xf800707f)
+DECLARE_INSN(srli, 0x5013, 0xfc00707f)
+DECLARE_INSN(amominu_w, 0xc000202f, 0xf800707f)
+DECLARE_INSN(divuw, 0x200503b, 0xfe00707f)
+DECLARE_INSN(mulw, 0x200003b, 0xfe00707f)
+DECLARE_INSN(srlw, 0x503b, 0xfe00707f)
+DECLARE_INSN(div, 0x2004033, 0xfe00707f)
+DECLARE_INSN(fdiv_d, 0x1a000053, 0xfe00007f)
+DECLARE_INSN(fence, 0xf, 0x707f)
+DECLARE_INSN(fnmsub_s, 0x4b, 0x600007f)
+DECLARE_INSN(fcvt_l_s, 0x40000053, 0xfff0007f)
+DECLARE_INSN(fle_s, 0xb8000053, 0xfe00707f)
+DECLARE_INSN(fdiv_s, 0x18000053, 0xfe00007f)
+DECLARE_INSN(fle_d, 0xba000053, 0xfe00707f)
+DECLARE_INSN(fence_i, 0x100f, 0x707f)
+DECLARE_INSN(fnmsub_d, 0x200004b, 0x600007f)
+DECLARE_INSN(addw, 0x3b, 0xfe00707f)
+DECLARE_INSN(sll, 0x1033, 0xfe00707f)
+DECLARE_INSN(xor, 0x4033, 0xfe00707f)
+DECLARE_INSN(sub, 0x40000033, 0xfe00707f)
+DECLARE_INSN(eret, 0x4073, 0xffffffff)
+DECLARE_INSN(blt, 0x4063, 0x707f)
+DECLARE_INSN(sc_w, 0x1800202f, 0xf800707f)
+DECLARE_INSN(rem, 0x2006033, 0xfe00707f)
+DECLARE_INSN(srliw, 0x501b, 0xfe00707f)
 DECLARE_INSN(lui, 0x37, 0x7f)
-DECLARE_INSN(fcvt_s_lu, 0xd053, 0x3ff1ff)
-DECLARE_INSN(addi, 0x13, 0x3ff)
-DECLARE_INSN(mulh, 0x4b3, 0x1ffff)
-DECLARE_INSN(fmul_s, 0x2053, 0x1f1ff)
-DECLARE_INSN(srai, 0x693, 0x3e07ff)
-DECLARE_INSN(amoand_d, 0x31ab, 0x7fff)
-DECLARE_INSN(flt_d, 0x160d3, 0x1ffff)
-DECLARE_INSN(sraw, 0x102bb, 0x1ffff)
-DECLARE_INSN(fmul_d, 0x20d3, 0x1f1ff)
-DECLARE_INSN(ld, 0x183, 0x3ff)
-DECLARE_INSN(ori, 0x313, 0x3ff)
-DECLARE_INSN(flt_s, 0x16053, 0x1ffff)
-DECLARE_INSN(addiw, 0x1b, 0x3ff)
-DECLARE_INSN(amoand_w, 0x312b, 0x7fff)
-DECLARE_INSN(feq_s, 0x15053, 0x1ffff)
-DECLARE_INSN(fsgnjx_d, 0x70d3, 0x1ffff)
-DECLARE_INSN(sra, 0x102b3, 0x1ffff)
-DECLARE_INSN(bge, 0x2e3, 0x3ff)
-DECLARE_INSN(sraiw, 0x69b, 0x3f07ff)
-DECLARE_INSN(srl, 0x2b3, 0x1ffff)
-DECLARE_INSN(fsub_d, 0x10d3, 0x1f1ff)
-DECLARE_INSN(fsgnjx_s, 0x7053, 0x1ffff)
-DECLARE_INSN(feq_d, 0x150d3, 0x1ffff)
-DECLARE_INSN(fcvt_d_wu, 0xf0d3, 0x3ff1ff)
-DECLARE_INSN(or, 0x333, 0x1ffff)
-DECLARE_INSN(rdinstret, 0xa77, 0x7ffffff)
-DECLARE_INSN(fcvt_wu_d, 0xb0d3, 0x3ff1ff)
-DECLARE_INSN(subw, 0x1003b, 0x1ffff)
-DECLARE_INSN(fmax_s, 0x19053, 0x1ffff)
-DECLARE_INSN(amomaxu_d, 0x71ab, 0x7fff)
-DECLARE_INSN(xori, 0x213, 0x3ff)
-DECLARE_INSN(amoxor_d, 0x11ab, 0x7fff)
-DECLARE_INSN(amomaxu_w, 0x712b, 0x7fff)
-DECLARE_INSN(fcvt_wu_s, 0xb053, 0x3ff1ff)
-DECLARE_INSN(rdtime, 0x677, 0x7ffffff)
-DECLARE_INSN(andi, 0x393, 0x3ff)
-DECLARE_INSN(clearpcr, 0x1f3, 0x3ff)
-DECLARE_INSN(fmv_x_s, 0x1c053, 0x3fffff)
-DECLARE_INSN(fsgnjn_d, 0x60d3, 0x1ffff)
-DECLARE_INSN(fnmadd_s, 0x4f, 0x1ff)
+DECLARE_INSN(fcvt_s_lu, 0x68000053, 0xfff0007f)
+DECLARE_INSN(addi, 0x13, 0x707f)
+DECLARE_INSN(mulh, 0x2001033, 0xfe00707f)
+DECLARE_INSN(fmul_s, 0x10000053, 0xfe00007f)
+DECLARE_INSN(srai, 0x40005013, 0xfc00707f)
+DECLARE_INSN(amoand_d, 0x6000302f, 0xf800707f)
+DECLARE_INSN(flt_d, 0xb2000053, 0xfe00707f)
+DECLARE_INSN(sraw, 0x4000503b, 0xfe00707f)
+DECLARE_INSN(fmul_d, 0x12000053, 0xfe00007f)
+DECLARE_INSN(ld, 0x3003, 0x707f)
+DECLARE_INSN(ori, 0x6013, 0x707f)
+DECLARE_INSN(flt_s, 0xb0000053, 0xfe00707f)
+DECLARE_INSN(addiw, 0x1b, 0x707f)
+DECLARE_INSN(amoand_w, 0x6000202f, 0xf800707f)
+DECLARE_INSN(feq_s, 0xa8000053, 0xfe00707f)
+DECLARE_INSN(fsgnjx_d, 0x3a000053, 0xfe00707f)
+DECLARE_INSN(sra, 0x40005033, 0xfe00707f)
+DECLARE_INSN(bge, 0x5063, 0x707f)
+DECLARE_INSN(sraiw, 0x4000501b, 0xfe00707f)
+DECLARE_INSN(srl, 0x5033, 0xfe00707f)
+DECLARE_INSN(fsub_d, 0xa000053, 0xfe00007f)
+DECLARE_INSN(fsgnjx_s, 0x38000053, 0xfe00707f)
+DECLARE_INSN(feq_d, 0xaa000053, 0xfe00707f)
+DECLARE_INSN(fcvt_d_wu, 0x7a000053, 0xfff0007f)
+DECLARE_INSN(or, 0x6033, 0xfe00707f)
+DECLARE_INSN(rdinstret, 0x4004077, 0xfffff07f)
+DECLARE_INSN(fcvt_wu_d, 0x5a000053, 0xfff0007f)
+DECLARE_INSN(subw, 0x4000003b, 0xfe00707f)
+DECLARE_INSN(fmax_s, 0xc8000053, 0xfe00707f)
+DECLARE_INSN(amomaxu_d, 0xe000302f, 0xf800707f)
+DECLARE_INSN(xori, 0x4013, 0x707f)
+DECLARE_INSN(amoxor_d, 0x2000302f, 0xf800707f)
+DECLARE_INSN(amomaxu_w, 0xe000202f, 0xf800707f)
+DECLARE_INSN(fcvt_wu_s, 0x58000053, 0xfff0007f)
+DECLARE_INSN(rdtime, 0x2004077, 0xfffff07f)
+DECLARE_INSN(andi, 0x7013, 0x707f)
+DECLARE_INSN(clearpcr, 0x3073, 0x707f)
+DECLARE_INSN(fmv_x_s, 0xe0000053, 0xfff0707f)
+DECLARE_INSN(fsgnjn_d, 0x32000053, 0xfe00707f)
+DECLARE_INSN(fnmadd_s, 0x4f, 0x600007f)
 DECLARE_INSN(jal, 0x67, 0x7f)
-DECLARE_INSN(lwu, 0x303, 0x3ff)
-DECLARE_INSN(fmv_x_d, 0x1c0d3, 0x3fffff)
-DECLARE_INSN(fnmadd_d, 0xcf, 0x1ff)
-DECLARE_INSN(amoadd_d, 0x1ab, 0x7fff)
-DECLARE_INSN(lr_d, 0x9ab, 0x3e7fff)
-DECLARE_INSN(fcvt_w_s, 0xa053, 0x3ff1ff)
-DECLARE_INSN(mulhsu, 0x533, 0x1ffff)
-DECLARE_INSN(amoadd_w, 0x12b, 0x7fff)
-DECLARE_INSN(fcvt_d_lu, 0xd0d3, 0x3ff1ff)
-DECLARE_INSN(lr_w, 0x92b, 0x3e7fff)
-DECLARE_INSN(fsd, 0x1a7, 0x3ff)
-DECLARE_INSN(fcvt_w_d, 0xa0d3, 0x3ff1ff)
-DECLARE_INSN(slt, 0x133, 0x1ffff)
-DECLARE_INSN(sllw, 0xbb, 0x1ffff)
-DECLARE_INSN(amoor_d, 0x21ab, 0x7fff)
-DECLARE_INSN(slti, 0x113, 0x3ff)
-DECLARE_INSN(remu, 0x7b3, 0x1ffff)
-DECLARE_INSN(flw, 0x107, 0x3ff)
-DECLARE_INSN(remw, 0x73b, 0x1ffff)
-DECLARE_INSN(sltu, 0x1b3, 0x1ffff)
-DECLARE_INSN(slli, 0x93, 0x3e07ff)
-DECLARE_INSN(amoor_w, 0x212b, 0x7fff)
-DECLARE_INSN(beq, 0x63, 0x3ff)
-DECLARE_INSN(fld, 0x187, 0x3ff)
-DECLARE_INSN(fsub_s, 0x1053, 0x1f1ff)
-DECLARE_INSN(and, 0x3b3, 0x1ffff)
-DECLARE_INSN(fmv_d_x, 0x1e0d3, 0x3fffff)
-DECLARE_INSN(lbu, 0x203, 0x3ff)
+DECLARE_INSN(lwu, 0x6003, 0x707f)
+DECLARE_INSN(fmv_x_d, 0xe2000053, 0xfff0707f)
+DECLARE_INSN(fnmadd_d, 0x200004f, 0x600007f)
+DECLARE_INSN(amoadd_d, 0x302f, 0xf800707f)
+DECLARE_INSN(lr_d, 0x1000302f, 0xf9f0707f)
+DECLARE_INSN(fcvt_w_s, 0x50000053, 0xfff0007f)
+DECLARE_INSN(mulhsu, 0x2002033, 0xfe00707f)
+DECLARE_INSN(amoadd_w, 0x202f, 0xf800707f)
+DECLARE_INSN(fcvt_d_lu, 0x6a000053, 0xfff0007f)
+DECLARE_INSN(lr_w, 0x1000202f, 0xf9f0707f)
+DECLARE_INSN(fcvt_w_d, 0x52000053, 0xfff0007f)
+DECLARE_INSN(slt, 0x2033, 0xfe00707f)
+DECLARE_INSN(sllw, 0x103b, 0xfe00707f)
+DECLARE_INSN(amoor_d, 0x4000302f, 0xf800707f)
+DECLARE_INSN(slti, 0x2013, 0x707f)
+DECLARE_INSN(remu, 0x2007033, 0xfe00707f)
+DECLARE_INSN(flw, 0x2007, 0x707f)
+DECLARE_INSN(remw, 0x200603b, 0xfe00707f)
+DECLARE_INSN(sltu, 0x3033, 0xfe00707f)
+DECLARE_INSN(slli, 0x40001013, 0xfc00707f)
+DECLARE_INSN(amoor_w, 0x4000202f, 0xf800707f)
+DECLARE_INSN(beq, 0x63, 0x707f)
+DECLARE_INSN(fld, 0x3007, 0x707f)
+DECLARE_INSN(fsub_s, 0x8000053, 0xfe00007f)
+DECLARE_INSN(and, 0x7033, 0xfe00707f)
+DECLARE_INSN(fmv_d_x, 0xf2000053, 0xfff0707f)
+DECLARE_INSN(lbu, 0x4003, 0x707f)
 DECLARE_INSN(syscall, 0x77, 0xffffffff)
-DECLARE_INSN(fsgnj_s, 0x5053, 0x1ffff)
-DECLARE_INSN(amomax_w, 0x512b, 0x7fff)
-DECLARE_INSN(fsgnj_d, 0x50d3, 0x1ffff)
-DECLARE_INSN(mulhu, 0x5b3, 0x1ffff)
-DECLARE_INSN(fence_v_g, 0x1af, 0x1ff)
-DECLARE_INSN(fssr, 0x1f053, 0x3fffff)
-DECLARE_INSN(setpcr, 0x173, 0x3ff)
-DECLARE_INSN(fcvt_lu_s, 0x9053, 0x3ff1ff)
-DECLARE_INSN(fcvt_s_l, 0xc053, 0x3ff1ff)
+DECLARE_INSN(fsgnj_s, 0x28000053, 0xfe00707f)
+DECLARE_INSN(amomax_w, 0xa000202f, 0xf800707f)
+DECLARE_INSN(fsgnj_d, 0x2a000053, 0xfe00707f)
+DECLARE_INSN(mulhu, 0x2003033, 0xfe00707f)
+DECLARE_INSN(fcvt_l_d, 0x42000053, 0xfff0007f)
+DECLARE_INSN(fssr, 0xf8000053, 0xfff0707f)
+DECLARE_INSN(setpcr, 0x2073, 0x707f)
+DECLARE_INSN(fcvt_lu_s, 0x48000053, 0xfff0007f)
+DECLARE_INSN(fcvt_s_l, 0x60000053, 0xfff0007f)
 DECLARE_INSN(auipc, 0x17, 0x7f)
-DECLARE_INSN(fcvt_lu_d, 0x90d3, 0x3ff1ff)
-DECLARE_INSN(sc_d, 0xdab, 0x7fff)
-DECLARE_INSN(fmadd_s, 0x43, 0x1ff)
-DECLARE_INSN(fsqrt_s, 0x4053, 0x3ff1ff)
-DECLARE_INSN(amomin_w, 0x412b, 0x7fff)
-DECLARE_INSN(fsgnjn_s, 0x6053, 0x1ffff)
-DECLARE_INSN(amoswap_d, 0x5ab, 0x7fff)
-DECLARE_INSN(fsqrt_d, 0x40d3, 0x3ff1ff)
-DECLARE_INSN(fmadd_d, 0xc3, 0x1ff)
-DECLARE_INSN(divw, 0x63b, 0x1ffff)
-DECLARE_INSN(amomin_d, 0x41ab, 0x7fff)
-DECLARE_INSN(divu, 0x6b3, 0x1ffff)
-DECLARE_INSN(amoswap_w, 0x52b, 0x7fff)
-DECLARE_INSN(jalr, 0x6f, 0x3ff)
-DECLARE_INSN(fadd_s, 0x53, 0x1f1ff)
-DECLARE_INSN(fcvt_l_d, 0x80d3, 0x3ff1ff)
-DECLARE_INSN(sw, 0x123, 0x3ff)
-DECLARE_INSN(fmsub_s, 0x47, 0x1ff)
-DECLARE_INSN(lhu, 0x283, 0x3ff)
-DECLARE_INSN(sh, 0xa3, 0x3ff)
-DECLARE_INSN(fsw, 0x127, 0x3ff)
-DECLARE_INSN(sb, 0x23, 0x3ff)
-DECLARE_INSN(fmsub_d, 0xc7, 0x1ff)
-DECLARE_INSN(sd, 0x1a3, 0x3ff)
+DECLARE_INSN(fcvt_lu_d, 0x4a000053, 0xfff0007f)
+DECLARE_INSN(sc_d, 0x1800302f, 0xf800707f)
+DECLARE_INSN(fmadd_s, 0x43, 0x600007f)
+DECLARE_INSN(fsqrt_s, 0x20000053, 0xfff0007f)
+DECLARE_INSN(amomin_w, 0x8000202f, 0xf800707f)
+DECLARE_INSN(fsgnjn_s, 0x30000053, 0xfe00707f)
+DECLARE_INSN(amoswap_d, 0x800302f, 0xf800707f)
+DECLARE_INSN(fsqrt_d, 0x22000053, 0xfff0007f)
+DECLARE_INSN(fmadd_d, 0x2000043, 0x600007f)
+DECLARE_INSN(divw, 0x200403b, 0xfe00707f)
+DECLARE_INSN(amomin_d, 0x8000302f, 0xf800707f)
+DECLARE_INSN(divu, 0x2005033, 0xfe00707f)
+DECLARE_INSN(amoswap_w, 0x800202f, 0xf800707f)
+DECLARE_INSN(jalr, 0x6f, 0x707f)
+DECLARE_INSN(fadd_s, 0x53, 0xfe00007f)
+DECLARE_INSN(fsd, 0x3027, 0x707f)
+DECLARE_INSN(sw, 0x2023, 0x707f)
+DECLARE_INSN(fmsub_s, 0x47, 0x600007f)
+DECLARE_INSN(lhu, 0x5003, 0x707f)
+DECLARE_INSN(sh, 0x1023, 0x707f)
+DECLARE_INSN(fsw, 0x2027, 0x707f)
+DECLARE_INSN(sb, 0x23, 0x707f)
+DECLARE_INSN(fmsub_d, 0x2000047, 0x600007f)
+DECLARE_INSN(sd, 0x3023, 0x707f)