feat: add scalar fexp support
This commit is contained in:
@@ -538,6 +538,18 @@ module VX_decode #(
|
||||
endcase
|
||||
end
|
||||
end
|
||||
`ifdef EXT_F_ENABLE
|
||||
3'h2: begin
|
||||
if (func7 == 7'h30 && rs2 == 5'd0) begin
|
||||
ex_type = `EX_FPU;
|
||||
op_type = `INST_OP_BITS'(`INST_FPU_MISC);
|
||||
op_mod = `INST_MOD_BITS'(8); // FEXP.S
|
||||
use_rd = 1;
|
||||
`USED_FREG (rd);
|
||||
`USED_FREG (rs1);
|
||||
end
|
||||
end
|
||||
`endif
|
||||
default:;
|
||||
endcase
|
||||
end
|
||||
|
||||
@@ -145,6 +145,7 @@ module VX_fpu_unit import VX_fpu_pkg::*; #(
|
||||
|
||||
.valid_in (fpu_req_valid),
|
||||
.op_type (execute_if[block_idx].data.op_type),
|
||||
.op_mod (execute_if[block_idx].data.op_mod),
|
||||
.lane_mask (execute_if[block_idx].data.tmask),
|
||||
.fmt (fpu_fmt),
|
||||
.frm (fpu_req_frm),
|
||||
@@ -174,6 +175,7 @@ module VX_fpu_unit import VX_fpu_pkg::*; #(
|
||||
|
||||
.valid_in (fpu_req_valid),
|
||||
.op_type (execute_if[block_idx].data.op_type),
|
||||
.op_mod (execute_if[block_idx].data.op_mod),
|
||||
.lane_mask (execute_if[block_idx].data.tmask),
|
||||
.fmt (fpu_fmt),
|
||||
.frm (fpu_req_frm),
|
||||
@@ -204,6 +206,7 @@ module VX_fpu_unit import VX_fpu_pkg::*; #(
|
||||
.valid_in (fpu_req_valid),
|
||||
.lane_mask (execute_if[block_idx].data.tmask),
|
||||
.op_type (execute_if[block_idx].data.op_type),
|
||||
.op_mod (execute_if[block_idx].data.op_mod),
|
||||
.fmt (fpu_fmt),
|
||||
.frm (fpu_req_frm),
|
||||
.dataa (execute_if[block_idx].data.rs1_data),
|
||||
|
||||
@@ -327,6 +327,7 @@ task trace_ex_op(input int level,
|
||||
`INST_FPU_MISC: begin
|
||||
if (fdst_d) begin
|
||||
case (op_mod)
|
||||
8: `TRACE(level, ("FEXP.D"));
|
||||
0: `TRACE(level, ("FSGNJ.D"));
|
||||
1: `TRACE(level, ("FSGNJN.D"));
|
||||
2: `TRACE(level, ("FSGNJX.D"));
|
||||
@@ -338,6 +339,7 @@ task trace_ex_op(input int level,
|
||||
endcase
|
||||
end else begin
|
||||
case (op_mod)
|
||||
8: `TRACE(level, ("FEXP.S"));
|
||||
0: `TRACE(level, ("FSGNJ.S"));
|
||||
1: `TRACE(level, ("FSGNJN.S"));
|
||||
2: `TRACE(level, ("FSGNJX.S"));
|
||||
|
||||
Reference in New Issue
Block a user