Add AMOXOR
authorAndrew Waterman <waterman@cs.berkeley.edu>
Wed, 11 Sep 2013 11:13:27 +0000 (04:13 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Wed, 11 Sep 2013 11:13:27 +0000 (04:13 -0700)
riscv/insns/amoxor_d.h [new file with mode: 0644]
riscv/insns/amoxor_w.h [new file with mode: 0644]
riscv/opcodes.h

diff --git a/riscv/insns/amoxor_d.h b/riscv/insns/amoxor_d.h
new file mode 100644 (file)
index 0000000..25d4fcb
--- /dev/null
@@ -0,0 +1,4 @@
+require_xpr64;
+reg_t v = MMU.load_uint64(RS1);
+MMU.store_uint64(RS1, RS2 ^ v);
+RD = v;
diff --git a/riscv/insns/amoxor_w.h b/riscv/insns/amoxor_w.h
new file mode 100644 (file)
index 0000000..f59a43e
--- /dev/null
@@ -0,0 +1,3 @@
+reg_t v = MMU.load_int32(RS1);
+MMU.store_uint32(RS1, RS2 ^ v);
+RD = v;
index b18efbbea28d9a0db89c9fe9dbcba6111a347e86..af1939df24faa3c327b7b90a6015d30442310d62 100644 (file)
@@ -1,7 +1,8 @@
 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(lr_w, 0x412b, 0x3e7fff)
+DECLARE_INSN(amomax_d, 0x51ab, 0x7fff)
 DECLARE_INSN(bltu, 0x363, 0x3ff)
 DECLARE_INSN(fmin_s, 0x18053, 0x1ffff)
 DECLARE_INSN(slliw, 0x9b, 0x3f07ff)
@@ -26,9 +27,9 @@ 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, 0x19ab, 0x7fff)
+DECLARE_INSN(amominu_d, 0x61ab, 0x7fff)
 DECLARE_INSN(srli, 0x293, 0x3e07ff)
-DECLARE_INSN(amominu_w, 0x192b, 0x7fff)
+DECLARE_INSN(amominu_w, 0x612b, 0x7fff)
 DECLARE_INSN(divuw, 0x6bb, 0x1ffff)
 DECLARE_INSN(mulw, 0x43b, 0x1ffff)
 DECLARE_INSN(srlw, 0x2bb, 0x1ffff)
@@ -49,7 +50,7 @@ DECLARE_INSN(xor, 0x233, 0x1ffff)
 DECLARE_INSN(sub, 0x10033, 0x1ffff)
 DECLARE_INSN(eret, 0x273, 0xffffffff)
 DECLARE_INSN(blt, 0x263, 0x3ff)
-DECLARE_INSN(sc_w, 0x452b, 0x7fff)
+DECLARE_INSN(sc_w, 0xd2b, 0x7fff)
 DECLARE_INSN(rem, 0x733, 0x1ffff)
 DECLARE_INSN(srliw, 0x29b, 0x3f07ff)
 DECLARE_INSN(lui, 0x37, 0x7f)
@@ -58,7 +59,7 @@ 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, 0x9ab, 0x7fff)
+DECLARE_INSN(amoand_d, 0x31ab, 0x7fff)
 DECLARE_INSN(flt_d, 0x160d3, 0x1ffff)
 DECLARE_INSN(sraw, 0x102bb, 0x1ffff)
 DECLARE_INSN(fmul_d, 0x20d3, 0x1f1ff)
@@ -66,7 +67,7 @@ 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, 0x92b, 0x7fff)
+DECLARE_INSN(amoand_w, 0x312b, 0x7fff)
 DECLARE_INSN(feq_s, 0x15053, 0x1ffff)
 DECLARE_INSN(fsgnjx_d, 0x70d3, 0x1ffff)
 DECLARE_INSN(sra, 0x102b3, 0x1ffff)
@@ -82,9 +83,10 @@ 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, 0x1dab, 0x7fff)
+DECLARE_INSN(amomaxu_d, 0x71ab, 0x7fff)
 DECLARE_INSN(xori, 0x213, 0x3ff)
-DECLARE_INSN(amomaxu_w, 0x1d2b, 0x7fff)
+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)
@@ -97,24 +99,24 @@ 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, 0x41ab, 0x3e7fff)
+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(amomax_d, 0x15ab, 0x7fff)
+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, 0xdab, 0x7fff)
+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, 0xd2b, 0x7fff)
+DECLARE_INSN(amoor_w, 0x212b, 0x7fff)
 DECLARE_INSN(beq, 0x63, 0x3ff)
 DECLARE_INSN(fld, 0x187, 0x3ff)
 DECLARE_INSN(fsub_s, 0x1053, 0x1f1ff)
@@ -123,7 +125,7 @@ DECLARE_INSN(fmv_d_x, 0x1e0d3, 0x3fffff)
 DECLARE_INSN(lbu, 0x203, 0x3ff)
 DECLARE_INSN(syscall, 0x77, 0xffffffff)
 DECLARE_INSN(fsgnj_s, 0x5053, 0x1ffff)
-DECLARE_INSN(amomax_w, 0x152b, 0x7fff)
+DECLARE_INSN(amomax_w, 0x512b, 0x7fff)
 DECLARE_INSN(fsgnj_d, 0x50d3, 0x1ffff)
 DECLARE_INSN(mulhu, 0x5b3, 0x1ffff)
 DECLARE_INSN(fence_v_g, 0x1af, 0x1ff)
@@ -133,16 +135,16 @@ DECLARE_INSN(fcvt_lu_s, 0x9053, 0x3ff1ff)
 DECLARE_INSN(fcvt_s_l, 0xc053, 0x3ff1ff)
 DECLARE_INSN(auipc, 0x17, 0x7f)
 DECLARE_INSN(fcvt_lu_d, 0x90d3, 0x3ff1ff)
-DECLARE_INSN(sc_d, 0x45ab, 0x7fff)
+DECLARE_INSN(sc_d, 0xdab, 0x7fff)
 DECLARE_INSN(fmadd_s, 0x43, 0x1ff)
 DECLARE_INSN(fsqrt_s, 0x4053, 0x3ff1ff)
-DECLARE_INSN(amomin_w, 0x112b, 0x7fff)
+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, 0x11ab, 0x7fff)
+DECLARE_INSN(amomin_d, 0x41ab, 0x7fff)
 DECLARE_INSN(divu, 0x6b3, 0x1ffff)
 DECLARE_INSN(amoswap_w, 0x52b, 0x7fff)
 DECLARE_INSN(jalr, 0x67, 0x3ff)