From df5b8d4cd4a335e8531a4db8b78c829fb7fb4030 Mon Sep 17 00:00:00 2001 From: Bowen Date: Fri, 6 Sep 2024 17:07:32 +0800 Subject: [PATCH] =?UTF-8?q?[hardware]=20=F0=9F=90=9BFix=20vasub&vasubu=20e?= =?UTF-8?q?rror=20in=20simd=5Falu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hardware/src/lane/simd_alu.sv | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hardware/src/lane/simd_alu.sv b/hardware/src/lane/simd_alu.sv index 88e4913a9..242c0d2bc 100644 --- a/hardware/src/lane/simd_alu.sv +++ b/hardware/src/lane/simd_alu.sv @@ -328,7 +328,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #( 2'b10: r = 1'b0; 2'b11: r = !sub[1] & (sub[0]!=0); endcase - res.w8[b] = (op_i == VSSUBU) ? (sub[7:0] >> 1) + r : $signed(sub[7:0]) >>> 1 + r; + res.w8[b] = (op_i == VASUBU) ? (sub[7:0] >> 1) + r : ($signed(sub[7:0]) >>> 1) + r; end EW16: for (int b = 0; b < 4; b++) begin automatic logic [ 16:0] sub = opb.w16[b] - opa.w16[b]; @@ -338,7 +338,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #( 2'b10: r = 1'b0; 2'b11: r = !sub[1] & (sub[0]!=0); endcase - res.w16[b] = (op_i == VSSUBU) ? (sub[15:0] >> 1) + r : $signed(sub[15:0]) >>> 1 + r; + res.w16[b] = (op_i == VASUBU) ? (sub[15:0] >> 1) + r : ($signed(sub[15:0]) >>> 1) + r; end EW32: for (int b = 0; b < 2; b++) begin automatic logic [ 32:0] sub = opb.w32[b] - opa.w32[b]; @@ -348,7 +348,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #( 2'b10: r = 1'b0; 2'b11: r = !sub[1] & (sub[0]!=0); endcase - res.w32[b] = (op_i == VSSUBU) ? (sub[31:0] >> 1) + r : $signed(sub[31:0]) >>> 1 + r; + res.w32[b] = (op_i == VASUBU) ? (sub[31:0] >> 1) + r : ($signed(sub[31:0]) >>> 1) + r; end EW64: for (int b = 0; b < 1; b++) begin automatic logic [ 64:0] sub = opb.w64[b] - opa.w64[b]; @@ -358,7 +358,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #( 2'b10: r = 1'b0; 2'b11: r = !sub[1] & (sub[0]!=0); endcase - res.w64[b] = (op_i == VSSUBU) ? (sub[63:0] >> 1) + r : $signed(sub[63:0]) >>> 1 + r; + res.w64[b] = (op_i == VASUBU) ? (sub[63:0] >> 1) + r : ($signed(sub[63:0]) >>> 1) + r; end endcase