add hwacha vfmsv instructions
authorYunsup Lee <yunsup@cs.berkeley.edu>
Sun, 2 Mar 2014 08:49:32 +0000 (00:49 -0800)
committerYunsup Lee <yunsup@cs.berkeley.edu>
Sun, 2 Mar 2014 08:49:32 +0000 (00:49 -0800)
hwacha/encodings_hwacha.h
hwacha/hwacha_disasm.cc
hwacha/insns/vfmsv.h [deleted file]
hwacha/insns/vfmsv_d.h [new file with mode: 0644]
hwacha/insns/vfmsv_s.h [new file with mode: 0644]
hwacha/opcodes_hwacha.h

index 2be35eb48ba3854aa57003476a5e9e90960048fd..11fa889a5edf870a65ac3c221e090e277cd28f95 100644 (file)
@@ -73,8 +73,9 @@
 #define MASK_VFLSEGSTD  0x1e00707f
 #define MASK_VFLSEGSTW  0x1e00707f
 #define MASK_VFLSEGW  0x1ff0707f
-#define MASK_VFMSV  0xfff0707f
 #define MASK_VFMVV  0xfff0707f
+#define MASK_VFMSV_S  0xfff0707f
+#define MASK_VFMSV_D  0xfff0707f
 #define MASK_VFSSEGD  0x1ff0707f
 #define MASK_VFSSEGSTD  0x1e00707f
 #define MASK_VFSSEGSTW  0x1e00707f
 #define MATCH_VFLSEGSTD 0x1600305b
 #define MATCH_VFLSEGSTW 0x1400305b
 #define MATCH_VFLSEGW 0x1400205b
-#define MATCH_VFMSV 0x1200202b
-#define MATCH_VFMVV 0x1200002b
+#define MATCH_VFMVV 0x1000002b
+#define MATCH_VFMSV_S 0x1000202b
+#define MATCH_VFMSV_D 0x1200202b
 #define MATCH_VFSSEGD 0x1600207b
 #define MATCH_VFSSEGSTD 0x1600307b
 #define MATCH_VFSSEGSTW 0x1400307b
index 6d3f13ffe9a00b70e6c7eab95054a9558737e55e..02e3d5711e01d4df1b650e44bc0452aa5f569a42 100644 (file)
@@ -133,7 +133,8 @@ std::vector<disasm_insn_t*> hwacha_t::get_disasms()
   DISASM_INSN("vmvv", vmvv, 0, {&vxrd, &vxrs1});
   DISASM_INSN("vmsv", vmsv, 0, {&vxrd, &xrs1});
   DISASM_INSN("vfmvv", vfmvv, 0, {&vfrd, &vfrs1});
-  DISASM_INSN("vfmsv", vfmsv, 0, {&vfrd, &xrs1});
+  DISASM_INSN("vfmsv.s", vfmsv_s, 0, {&vfrd, &xrs1});
+  DISASM_INSN("vfmsv.d", vfmsv_d, 0, {&vfrd, &xrs1});
   DISASM_INSN("vf", vf, 0, {&vf_addr});
 
   DISASM_INSN("vxcptcause", vxcptcause, 0, {&xrd});
diff --git a/hwacha/insns/vfmsv.h b/hwacha/insns/vfmsv.h
deleted file mode 100644 (file)
index d1df3a1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-for (uint32_t i=0; i<VL; i++) {
-  UT_WRITE_FRD(i, XS1);
-}
diff --git a/hwacha/insns/vfmsv_d.h b/hwacha/insns/vfmsv_d.h
new file mode 100644 (file)
index 0000000..d1df3a1
--- /dev/null
@@ -0,0 +1,3 @@
+for (uint32_t i=0; i<VL; i++) {
+  UT_WRITE_FRD(i, XS1);
+}
diff --git a/hwacha/insns/vfmsv_s.h b/hwacha/insns/vfmsv_s.h
new file mode 100644 (file)
index 0000000..d1df3a1
--- /dev/null
@@ -0,0 +1,3 @@
+for (uint32_t i=0; i<VL; i++) {
+  UT_WRITE_FRD(i, XS1);
+}
index 7fa05e3c9c97a861e3382957d384dce2d104b329..b6dbe8b6529aa6ffb4629b82ae43a017b8e864d2 100644 (file)
@@ -5,7 +5,8 @@ DECLARE_INSN(vflsegd, MATCH_VFLSEGD, MASK_VFLSEGD)
 DECLARE_INSN(vflsegstd, MATCH_VFLSEGSTD, MASK_VFLSEGSTD)
 DECLARE_INSN(vflsegstw, MATCH_VFLSEGSTW, MASK_VFLSEGSTW)
 DECLARE_INSN(vflsegw, MATCH_VFLSEGW, MASK_VFLSEGW)
-DECLARE_INSN(vfmsv, MATCH_VFMSV, MASK_VFMSV)
+DECLARE_INSN(vfmsv_d, MATCH_VFMSV_D, MASK_VFMSV_D)
+DECLARE_INSN(vfmsv_s, MATCH_VFMSV_S, MASK_VFMSV_S)
 DECLARE_INSN(vfmvv, MATCH_VFMVV, MASK_VFMVV)
 DECLARE_INSN(vfssegd, MATCH_VFSSEGD, MASK_VFSSEGD)
 DECLARE_INSN(vfssegstd, MATCH_VFSSEGSTD, MASK_VFSSEGSTD)