aboutsummaryrefslogtreecommitdiff
path: root/pk
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2011-02-01 23:22:54 -0800
committerAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2011-02-01 23:22:54 -0800
commit4385a34442562b246038b13ef055e257030fd30e (patch)
treec45d3e1e3825c9ac2dc5f375f27aa8878f7fb8a3 /pk
parent9c3ff9eccdc398ddb5707a98793c5a2fdfb14f33 (diff)
downloadpk-4385a34442562b246038b13ef055e257030fd30e.zip
pk-4385a34442562b246038b13ef055e257030fd30e.tar.gz
pk-4385a34442562b246038b13ef055e257030fd30e.tar.bz2
[xcc,opcodes,pk,sim] cleanup to FP ISA
- Added 5th rounding mode - Removed MFCR/MTCR in favor of MFFSR/MTFSR (it was the only CR...) - merged MTF.D with MTFLH.D; operation depends on RV32/RV64 mode - made MFFL.D and MFFH.D illegal in RV64
Diffstat (limited to 'pk')
-rw-r--r--pk/fp_asm.S4
-rw-r--r--pk/riscv-opc.h54
2 files changed, 28 insertions, 30 deletions
diff --git a/pk/fp_asm.S b/pk/fp_asm.S
index 81a81bf..67589a8 100644
--- a/pk/fp_asm.S
+++ b/pk/fp_asm.S
@@ -5,7 +5,7 @@
.ent get_fp_state
get_fp_state:
- mfcr $v0, ASM_CR(CR_FSR)
+ mffsr $v0
sf.d $f0 , 0($a0)
sf.d $f1 , 8($a0)
@@ -81,7 +81,7 @@ put_fp_state:
lf.d $f30,240($a0)
lf.d $f31,248($a0)
- mtcr $a1, ASM_CR(CR_FSR)
+ mtfsr $a1
ret
diff --git a/pk/riscv-opc.h b/pk/riscv-opc.h
index c7e187f..a1309ea 100644
--- a/pk/riscv-opc.h
+++ b/pk/riscv-opc.h
@@ -1,25 +1,27 @@
/* Automatically generated by parse-opcodes */
-#define MATCH_MFF_D 0x184d3
+#define MATCH_MFF_D 0x18ed3
#define MASK_MFF_D 0x7c1ffff
-#define MATCH_FSINJN_D 0x60d3
+#define MATCH_FSINJN_D 0x6ed3
#define MASK_FSINJN_D 0x1ffff
#define MATCH_REMUW 0x7bb
#define MASK_REMUW 0x1ffff
#define MATCH_BLTU 0x363
#define MASK_BLTU 0x3ff
-#define MATCH_FSINJN_S 0x6053
+#define MATCH_FSINJN_S 0x6e53
#define MASK_FSINJN_S 0x1ffff
-#define MATCH_MFF_S 0x18453
+#define MATCH_MFF_S 0x18e53
#define MASK_MFF_S 0x7c1ffff
+#define MATCH_MTFSR 0x1de53
+#define MASK_MTFSR 0xf83fffff
#define MATCH_SLLIW 0x9b
#define MASK_SLLIW 0x3f83ff
#define MATCH_FCVT_D_L 0xc0d3
#define MASK_FCVT_D_L 0x3ff1ff
-#define MATCH_FCVT_D_W 0xe0d3
+#define MATCH_FCVT_D_W 0xeed3
#define MASK_FCVT_D_W 0x3fffff
#define MATCH_ADD 0x33
#define MASK_ADD 0x1ffff
-#define MATCH_FCVT_D_S 0x100d3
+#define MATCH_FCVT_D_S 0x10ed3
#define MASK_FCVT_D_S 0x3fffff
#define MATCH_LF_D 0x187
#define MASK_LF_D 0x3ff
@@ -37,7 +39,7 @@
#define MASK_DI 0x7ffffff
#define MATCH_SLTIU 0x193
#define MASK_SLTIU 0x3ff
-#define MATCH_MFFL_D 0x194d3
+#define MATCH_MFFL_D 0x19ed3
#define MASK_MFFL_D 0x7c1ffff
#define MATCH_FADD_S 0x53
#define MASK_FADD_S 0x1f1ff
@@ -55,12 +57,10 @@
#define MASK_AMOMINU_W 0x1ffff
#define MATCH_DIVUW 0x6bb
#define MASK_DIVUW 0x1ffff
-#define MATCH_MFFH_D 0x1a4d3
+#define MATCH_MFFH_D 0x1aed3
#define MASK_MFFH_D 0x7c1ffff
#define MATCH_SRLW 0x2bb
#define MASK_SRLW 0x1ffff
-#define MATCH_MFCR 0x97
-#define MASK_MFCR 0x7c1ffff
#define MATCH_DIV 0x633
#define MASK_DIV 0x1ffff
#define MATCH_S_D 0x1a3
@@ -77,16 +77,18 @@
#define MASK_SYNC 0xffffffff
#define MATCH_S_H 0xa3
#define MASK_S_H 0x3ff
-#define MATCH_MTF_S 0x1c453
+#define MATCH_MTF_S 0x1ce53
#define MASK_MTF_S 0x3fffff
#define MATCH_S_W 0x123
#define MASK_S_W 0x3ff
+#define MATCH_MFFSR 0x1be53
+#define MASK_MFFSR 0x7ffffff
#define MATCH_FDIV_S 0x3053
#define MASK_FDIV_S 0x1f1ff
#define MATCH_SF_D 0x1a7
#define MASK_SF_D 0x3ff
-#define MATCH_MTCR 0x497
-#define MASK_MTCR 0xf801ffff
+#define MATCH_MTF_D 0x1ced3
+#define MASK_MTF_D 0x1ffff
#define MATCH_FCVT_L_D 0x80d3
#define MASK_FCVT_L_D 0x3ff1ff
#define MATCH_FNMSUB_D 0xcb
@@ -101,11 +103,11 @@
#define MASK_SUB 0x1ffff
#define MATCH_ERET 0x17f
#define MASK_ERET 0xffffffff
-#define MATCH_FCVTU_D_W 0xf0d3
+#define MATCH_FCVTU_D_W 0xfed3
#define MASK_FCVTU_D_W 0x3fffff
#define MATCH_BLT 0x263
#define MASK_BLT 0x3ff
-#define MATCH_FC_LT_S 0x16053
+#define MATCH_FC_LT_S 0x16e53
#define MASK_FC_LT_S 0x1ffff
#define MATCH_REM 0x733
#define MASK_REM 0x1ffff
@@ -117,7 +119,7 @@
#define MASK_L_W 0x3ff
#define MATCH_ADDI 0x13
#define MASK_ADDI 0x3ff
-#define MATCH_FC_LT_D 0x160d3
+#define MATCH_FC_LT_D 0x16ed3
#define MASK_FC_LT_D 0x1ffff
#define MATCH_MULH 0x4b3
#define MASK_MULH 0x1ffff
@@ -137,8 +139,6 @@
#define MASK_ADDIW 0x3ff
#define MATCH_AMOAND_W 0x943
#define MASK_AMOAND_W 0x1ffff
-#define MATCH_MTFLH_D 0x1c6d3
-#define MASK_MTFLH_D 0x1ffff
#define MATCH_SRA 0x102b3
#define MASK_SRA 0x1ffff
#define MATCH_L_BU 0x203
@@ -147,7 +147,7 @@
#define MASK_SRAIW 0x3f83ff
#define MATCH_SRL 0x2b3
#define MASK_SRL 0x1ffff
-#define MATCH_FC_EQ_D 0x150d3
+#define MATCH_FC_EQ_D 0x15ed3
#define MASK_FC_EQ_D 0x1ffff
#define MATCH_OR 0x333
#define MASK_OR 0x1ffff
@@ -175,7 +175,7 @@
#define MASK_AMOMIN_D 0x1ffff
#define MATCH_EI 0x7f
#define MASK_EI 0x7ffffff
-#define MATCH_FSMUL_S 0x7053
+#define MATCH_FSMUL_S 0x7e53
#define MASK_FSMUL_S 0x1ffff
#define MATCH_ANDI 0x393
#define MASK_ANDI 0x3ff
@@ -185,13 +185,13 @@
#define MASK_JAL 0x7f
#define MATCH_MULW 0x43b
#define MASK_MULW 0x1ffff
-#define MATCH_FSMUL_D 0x70d3
+#define MATCH_FSMUL_D 0x7ed3
#define MASK_FSMUL_D 0x1ffff
#define MATCH_FNMADD_D 0xcf
#define MASK_FNMADD_D 0x1ff
#define MATCH_AMOADD_D 0x1c3
#define MASK_AMOADD_D 0x1ffff
-#define MATCH_FSINJ_D 0x50d3
+#define MATCH_FSINJ_D 0x5ed3
#define MASK_FSINJ_D 0x1ffff
#define MATCH_AMOMAX_W 0x1543
#define MASK_AMOMAX_W 0x1ffff
@@ -201,7 +201,7 @@
#define MASK_MULHSU 0x1ffff
#define MATCH_AMOADD_W 0x143
#define MASK_AMOADD_W 0x1ffff
-#define MATCH_FSINJ_S 0x5053
+#define MATCH_FSINJ_S 0x5e53
#define MASK_FSINJ_S 0x1ffff
#define MATCH_AMOMAX_D 0x15c3
#define MASK_AMOMAX_D 0x1ffff
@@ -235,15 +235,13 @@
#define MASK_FSUB_S 0x1f1ff
#define MATCH_AND 0x3b3
#define MASK_AND 0x1ffff
-#define MATCH_FC_LE_S 0x17053
+#define MATCH_FC_LE_S 0x17e53
#define MASK_FC_LE_S 0x1ffff
#define MATCH_SYSCALL 0x197
#define MASK_SYSCALL 0xffc003ff
#define MATCH_FCVTU_S_W 0xf053
#define MASK_FCVTU_S_W 0x3ff1ff
-#define MATCH_MTF_D 0x1c4d3
-#define MASK_MTF_D 0x3fffff
-#define MATCH_FC_LE_D 0x170d3
+#define MATCH_FC_LE_D 0x17ed3
#define MASK_FC_LE_D 0x1ffff
#define MATCH_FCVTU_S_L 0xd053
#define MASK_FCVTU_S_L 0x3ff1ff
@@ -277,7 +275,7 @@
#define MASK_AMOSWAP_D 0x1ffff
#define MATCH_FSQRT_D 0x40d3
#define MASK_FSQRT_D 0x3ff1ff
-#define MATCH_FC_EQ_S 0x15053
+#define MATCH_FC_EQ_S 0x15e53
#define MASK_FC_EQ_S 0x1ffff
#define MATCH_FDIV_D 0x30d3
#define MASK_FDIV_D 0x1f1ff