diff options
author | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2010-10-25 19:41:39 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@s144.Millennium.Berkeley.EDU> | 2010-10-25 19:41:39 -0700 |
commit | 91615aeaf5e3f97a9a34375e911cd001c599a976 (patch) | |
tree | bce0b1cd486915bd5a77cdfd711ea3dfc916f340 /inst.v | |
parent | 02d5513802a9dac37643d3410cf250e8b8856ece (diff) | |
download | riscv-opcodes-91615aeaf5e3f97a9a34375e911cd001c599a976.zip riscv-opcodes-91615aeaf5e3f97a9a34375e911cd001c599a976.tar.gz riscv-opcodes-91615aeaf5e3f97a9a34375e911cd001c599a976.tar.bz2 |
[sim,xcc,pk,opcodes] static rounding modes for FP insns
Now, you can either use the RM in the FSR or specify it in the insn.
(Except for FP->int; no dynamic for that.)
Diffstat (limited to 'inst.v')
-rw-r--r-- | inst.v | 61 |
1 files changed, 43 insertions, 18 deletions
@@ -109,14 +109,24 @@ `define SGNINJ_D 32'b1101010_?????_?????_1100000101_????? `define SGNINJN_D 32'b1101010_?????_?????_1100000110_????? `define SGNMUL_D 32'b1101010_?????_?????_1100000111_????? -`define TRUNC_L_S 32'b1101010_00000_?????_0000001000_????? -`define TRUNCU_L_S 32'b1101010_00000_?????_0000001001_????? -`define TRUNC_W_S 32'b1101010_00000_?????_0000001010_????? -`define TRUNCU_W_S 32'b1101010_00000_?????_0000001011_????? -`define TRUNC_L_D 32'b1101010_00000_?????_1100001000_????? -`define TRUNCU_L_D 32'b1101010_00000_?????_1100001001_????? -`define TRUNC_W_D 32'b1101010_00000_?????_1100001010_????? -`define TRUNCU_W_D 32'b1101010_00000_?????_1100001011_????? +`define ADD_S_RM 32'b1101010_?????_?????_00_??_100000_????? +`define SUB_S_RM 32'b1101010_?????_?????_00_??_100001_????? +`define MUL_S_RM 32'b1101010_?????_?????_00_??_100010_????? +`define DIV_S_RM 32'b1101010_?????_?????_00_??_100011_????? +`define SQRT_S_RM 32'b1101010_00000_?????_00_??_100100_????? +`define ADD_D_RM 32'b1101010_?????_?????_11_??_100000_????? +`define SUB_D_RM 32'b1101010_?????_?????_11_??_100001_????? +`define MUL_D_RM 32'b1101010_?????_?????_11_??_100010_????? +`define DIV_D_RM 32'b1101010_?????_?????_11_??_100011_????? +`define SQRT_D_RM 32'b1101010_00000_?????_11_??_100100_????? +`define CVT_L_S_RM 32'b1101010_00000_?????_00_??_101000_????? +`define CVTU_L_S_RM 32'b1101010_00000_?????_00_??_101001_????? +`define CVT_W_S_RM 32'b1101010_00000_?????_00_??_101010_????? +`define CVTU_W_S_RM 32'b1101010_00000_?????_00_??_101011_????? +`define CVT_L_D_RM 32'b1101010_00000_?????_11_??_101000_????? +`define CVTU_L_D_RM 32'b1101010_00000_?????_11_??_101001_????? +`define CVT_W_D_RM 32'b1101010_00000_?????_11_??_101010_????? +`define CVTU_W_D_RM 32'b1101010_00000_?????_11_??_101011_????? `define CVT_S_L 32'b1101010_00000_?????_0000001100_????? `define CVTU_S_L 32'b1101010_00000_?????_0000001101_????? `define CVT_S_W 32'b1101010_00000_?????_0000001110_????? @@ -125,8 +135,15 @@ `define CVTU_D_L 32'b1101010_00000_?????_1100001101_????? `define CVT_D_W 32'b1101010_00000_?????_1100001110_????? `define CVTU_D_W 32'b1101010_00000_?????_1100001111_????? -`define CVT_S_D 32'b1101010_00000_?????_0000110011_????? -`define CVT_D_S 32'b1101010_00000_?????_1100110000_????? +`define CVT_S_L_RM 32'b1101010_00000_?????_00_??_101100_????? +`define CVTU_S_L_RM 32'b1101010_00000_?????_00_??_101101_????? +`define CVT_S_W_RM 32'b1101010_00000_?????_00_??_101110_????? +`define CVTU_S_W_RM 32'b1101010_00000_?????_00_??_101111_????? +`define CVT_D_L_RM 32'b1101010_00000_?????_11_??_101100_????? +`define CVTU_D_L_RM 32'b1101010_00000_?????_11_??_101101_????? +`define CVT_S_D 32'b1101010_00000_?????_0000010011_????? +`define CVT_D_S 32'b1101010_00000_?????_1100010000_????? +`define CVT_S_D_RM 32'b1101010_00000_?????_00_??_110011_????? `define C_EQ_S 32'b1101010_?????_?????_0000010101_????? `define C_LT_S 32'b1101010_?????_?????_0000010110_????? `define C_LE_S 32'b1101010_?????_?????_0000010111_????? @@ -144,11 +161,19 @@ `define L_D 32'b1101000_?????_?????_011_???????????? `define S_S 32'b1101001_?????_?????_010_???????????? `define S_D 32'b1101001_?????_?????_011_???????????? -`define MADD_S 32'b1101011_?????_?????_00000_?????_????? -`define MSUB_S 32'b1101011_?????_?????_00001_?????_????? -`define NMSUB_S 32'b1101011_?????_?????_00010_?????_????? -`define NMADD_S 32'b1101011_?????_?????_00011_?????_????? -`define MADD_D 32'b1101011_?????_?????_11000_?????_????? -`define MSUB_D 32'b1101011_?????_?????_11001_?????_????? -`define NMSUB_D 32'b1101011_?????_?????_11010_?????_????? -`define NMADD_D 32'b1101011_?????_?????_11011_?????_????? +`define MADD_S 32'b1101100_?????_?????_00000_?????_????? +`define MSUB_S 32'b1101101_?????_?????_00000_?????_????? +`define NMSUB_S 32'b1101110_?????_?????_00000_?????_????? +`define NMADD_S 32'b1101111_?????_?????_00000_?????_????? +`define MADD_D 32'b1101100_?????_?????_11000_?????_????? +`define MSUB_D 32'b1101101_?????_?????_11000_?????_????? +`define NMSUB_D 32'b1101110_?????_?????_11000_?????_????? +`define NMADD_D 32'b1101111_?????_?????_11000_?????_????? +`define MADD_S_RM 32'b1101100_?????_?????_00_??_1_?????_????? +`define MSUB_S_RM 32'b1101101_?????_?????_00_??_1_?????_????? +`define NMSUB_S_RM 32'b1101110_?????_?????_00_??_1_?????_????? +`define NMADD_S_RM 32'b1101111_?????_?????_00_??_1_?????_????? +`define MADD_D_RM 32'b1101100_?????_?????_11_??_1_?????_????? +`define MSUB_D_RM 32'b1101101_?????_?????_11_??_1_?????_????? +`define NMSUB_D_RM 32'b1101110_?????_?????_11_??_1_?????_????? +`define NMADD_D_RM 32'b1101111_?????_?????_11_??_1_?????_????? |