mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Zfa fmvh complete and passing tests:
This commit is contained in:
parent
07e7e02241
commit
4cfc86140c
@ -148,10 +148,10 @@ module fctrl import cvw::*; #(parameter cvw_t P) (
|
|||||||
else if (Funct3D == 3'b000 & Rs2D == 5'b00000)
|
else if (Funct3D == 3'b000 & Rs2D == 5'b00000)
|
||||||
ControlsD = `FCTRLW'b0_1_11_00_000_0_0_0_0; // fmv.x.w/d/h/q fp to int register
|
ControlsD = `FCTRLW'b0_1_11_00_000_0_0_0_0; // fmv.x.w/d/h/q fp to int register
|
||||||
else if (P.ZFA_SUPPORTED & P.XLEN == 32 & P.D_SUPPORTED & Funct7D[1:0] == 2'b01 & Funct3D == 3'b000 & Rs2D == 5'b00001)
|
else if (P.ZFA_SUPPORTED & P.XLEN == 32 & P.D_SUPPORTED & Funct7D[1:0] == 2'b01 & Funct3D == 3'b000 & Rs2D == 5'b00001)
|
||||||
ControlsD = '0; // fmvh.x.d (Zfa) *** needs values for all moves
|
ControlsD = `FCTRLW'b0_1_11_00_000_0_0_0_1; // fmvh.x.d (Zfa)
|
||||||
// coverage off Q not supported in RV64GC
|
// coverage off Q not supported in RV64GC
|
||||||
else if (P.ZFA_SUPPORTED & P.XLEN == 64 & P.Q_SUPPORTED & Funct7D[1:0] == 2'b11 & Funct3D == 3'b000 & Rs2D == 5'b00001)
|
else if (P.ZFA_SUPPORTED & P.XLEN == 64 & P.Q_SUPPORTED & Funct7D[1:0] == 2'b11 & Funct3D == 3'b000 & Rs2D == 5'b00001)
|
||||||
ControlsD = '0; // fmvh.x.q (Zfa)
|
ControlsD = `FCTRLW'b0_1_11_00_000_0_0_0_1; // fmvh.x.q (Zfa)
|
||||||
// coverage on
|
// coverage on
|
||||||
7'b11110??: if (Funct3D == 3'b000 & Rs2D == 5'b00000)
|
7'b11110??: if (Funct3D == 3'b000 & Rs2D == 5'b00000)
|
||||||
ControlsD = `FCTRLW'b1_0_00_00_011_0_0_0_0; // fmv.w/d/h/q.x int to fp reg
|
ControlsD = `FCTRLW'b1_0_00_00_011_0_0_0_0; // fmv.w/d/h/q.x int to fp reg
|
||||||
|
@ -310,7 +310,8 @@ module fpu import cvw::*; #(parameter cvw_t P) (
|
|||||||
|
|
||||||
// sign extend to XLEN if necessary
|
// sign extend to XLEN if necessary
|
||||||
if (P.FLEN>P.XLEN)
|
if (P.FLEN>P.XLEN)
|
||||||
assign IntSrcXE = SgnExtXE[P.XLEN-1:0];
|
if (P.ZFA_SUPPORTED) assign IntSrcXE = ZfaE ? XE[P.FLEN-1:P.FLEN/2] : SgnExtXE[P.XLEN-1:0]; // either fmvh.x.* or fmv.x.*
|
||||||
|
else assign IntSrcXE = SgnExtXE[P.XLEN-1:0];
|
||||||
else
|
else
|
||||||
assign IntSrcXE = {{P.XLEN-P.FLEN{mvsgn}}, SgnExtXE};
|
assign IntSrcXE = {{P.XLEN-P.FLEN{mvsgn}}, SgnExtXE};
|
||||||
mux3 #(P.XLEN) IntResMux (ClassResE, IntSrcXE, CmpIntResE, {~FResSelE[1], FResSelE[0]}, FIntResE);
|
mux3 #(P.XLEN) IntResMux (ClassResE, IntSrcXE, CmpIntResE, {~FResSelE[1], FResSelE[0]}, FIntResE);
|
||||||
|
@ -2031,7 +2031,14 @@ string arch64zbs[] = '{
|
|||||||
"rv32i_m/D_Zfa/src/fmaxm_b1-01.S",
|
"rv32i_m/D_Zfa/src/fmaxm_b1-01.S",
|
||||||
"rv32i_m/D_Zfa/src/fmaxm_b19-01.S",
|
"rv32i_m/D_Zfa/src/fmaxm_b19-01.S",
|
||||||
"rv32i_m/D_Zfa/src/fmaxm.d_b1-01.S",
|
"rv32i_m/D_Zfa/src/fmaxm.d_b1-01.S",
|
||||||
"rv32i_m/D_Zfa/src/fmaxm.d_b19-01.S"
|
"rv32i_m/D_Zfa/src/fmaxm.d_b19-01.S",
|
||||||
|
"rv32i_m/D_Zfa/src/fmvh.x.d_b1-01.S",
|
||||||
|
"rv32i_m/D_Zfa/src/fmvh.x.d_b22-01.S",
|
||||||
|
"rv32i_m/D_Zfa/src/fmvh.x.d_b23-01.S",
|
||||||
|
"rv32i_m/D_Zfa/src/fmvh.x.d_b24-01.S",
|
||||||
|
"rv32i_m/D_Zfa/src/fmvh.x.d_b27-01.S",
|
||||||
|
"rv32i_m/D_Zfa/src/fmvh.x.d_b28-01.S",
|
||||||
|
"rv32i_m/D_Zfa/src/fmvh.x.d_b29-01.S"
|
||||||
/* "rv32i_m/D_Zfa/src/fround_b1-01.S" */
|
/* "rv32i_m/D_Zfa/src/fround_b1-01.S" */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user