@@ -309,19 +309,19 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #(
309309 automatic logic [16 : 0 ] sub = opb.w16[b] - opa.w16[b];
310310 vxsat.w16[b] = (! opb.w16[b][15 ] & opa.w16[b][15 ] & sub[15 ]) |
311311 (opb.w16[b][15 ] & ! opa.w16[b][15 ] & ! sub[15 ]);
312- res.w16[b] = vxsat.w16[b] ? (opb.w16[b][15 ] ? 16'h8000 : 16'h7FFF ) : sub[15 : 0 ];
312+ res.w16[b] = & vxsat.w16[b] ? (opb.w16[b][15 ] ? 16'h8000 : 16'h7FFF ) : sub[15 : 0 ];
313313 end
314314 EW32 : for (int b = 0 ; b < 2 ; b++ ) begin
315315 automatic logic [32 : 0 ] sub = opb.w32[b] - opa.w32[b];
316316 vxsat.w32[b] = (! opb.w32[b][31 ] & opa.w32[b][31 ] & sub[31 ]) |
317317 (opb.w32[b][31 ] & ! opa.w32[b][31 ] & ! sub[31 ]);
318- res.w32[b] = vxsat.w32[b] ? (opb.w32[b][31 ] ? 32'h80000000 : 32'h7FFFFFFF ) : sub[31 : 0 ];
318+ res.w32[b] = & vxsat.w32[b] ? (opb.w32[b][31 ] ? 32'h80000000 : 32'h7FFFFFFF ) : sub[31 : 0 ];
319319 end
320320 EW64 : for (int b = 0 ; b < 1 ; b++ ) begin
321321 automatic logic [64 : 0 ] sub = opb.w64[b] - opa.w64[b];
322322 vxsat.w64[b] = (! opb.w64[b][63 ] & opa.w64[b][63 ] & sub[63 ]) |
323323 (opb.w64[b][63 ] & ! opa.w64[b][63 ] & ! sub[63 ]);
324- res.w64[b] = vxsat.w64[b] ? (opb.w64[b][63 ] ? 64'h8000000000000000 : 64'h7FFFFFFFFFFFFFFF ) : sub[63 : 0 ];
324+ res.w64[b] = & vxsat.w64[b] ? (opb.w64[b][63 ] ? 64'h8000000000000000 : 64'h7FFFFFFFFFFFFFFF ) : sub[63 : 0 ];
325325 end
326326 endcase
327327 VASUB , VASUBU : if (FixPtSupport == FixedPointEnable) begin
@@ -335,7 +335,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #(
335335 2'b10 : r = 1'b0 ;
336336 2'b11 : r = ! sub[1 ] & (sub[0 ]!= 0 );
337337 endcase
338- res.w8[b] = (op_i == VASUBU ) ? (sub[7 : 0 ] >> 1 ) + r : ( $signed (sub[7 : 0 ]) >>> 1 ) + r ;
338+ res.w8[b] = (op_i == VASUBU ) ? (sub[7 : 0 ] >> 1 ) + { 7'b0 , r } : $unsigned (( $signed (sub[7 : 0 ]) >>> 1 ) + $signed ( { 7'b0 , r } )) ;
339339 end
340340 EW16 : for (int b = 0 ; b < 4 ; b++ ) begin
341341 automatic logic [ 16 : 0 ] sub = opb.w16[b] - opa.w16[b];
@@ -345,7 +345,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #(
345345 2'b10 : r = 1'b0 ;
346346 2'b11 : r = ! sub[1 ] & (sub[0 ]!= 0 );
347347 endcase
348- res.w16[b] = (op_i == VASUBU ) ? (sub[15 : 0 ] >> 1 ) + r : ( $signed (sub[15 : 0 ]) >>> 1 ) + r ;
348+ res.w16[b] = (op_i == VASUBU ) ? (sub[15 : 0 ] >> 1 ) + { 15'b0 , r } : $unsigned (( $signed (sub[15 : 0 ]) >>> 1 ) + $signed ( { 15'b0 , r } )) ;
349349 end
350350 EW32 : for (int b = 0 ; b < 2 ; b++ ) begin
351351 automatic logic [ 32 : 0 ] sub = opb.w32[b] - opa.w32[b];
@@ -355,7 +355,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #(
355355 2'b10 : r = 1'b0 ;
356356 2'b11 : r = ! sub[1 ] & (sub[0 ]!= 0 );
357357 endcase
358- res.w32[b] = (op_i == VASUBU ) ? (sub[31 : 0 ] >> 1 ) + r : ( $signed (sub[31 : 0 ]) >>> 1 ) + r ;
358+ res.w32[b] = (op_i == VASUBU ) ? (sub[31 : 0 ] >> 1 ) + { 31'b0 , r } : $unsigned (( $signed (sub[31 : 0 ]) >>> 1 ) + $signed ( { 31'b0 , r } )) ;
359359 end
360360 EW64 : for (int b = 0 ; b < 1 ; b++ ) begin
361361 automatic logic [ 64 : 0 ] sub = opb.w64[b] - opa.w64[b];
@@ -365,7 +365,7 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #(
365365 2'b10 : r = 1'b0 ;
366366 2'b11 : r = ! sub[1 ] & (sub[0 ]!= 0 );
367367 endcase
368- res.w64[b] = (op_i == VASUBU ) ? (sub[63 : 0 ] >> 1 ) + r : ( $signed (sub[63 : 0 ]) >>> 1 ) + r ;
368+ res.w64[b] = (op_i == VASUBU ) ? (sub[63 : 0 ] >> 1 ) + { 63'b0 , r } : $unsigned (( $signed (sub[63 : 0 ]) >>> 1 ) + $signed ( { 63'b0 , r } )) ;
369369 end
370370 endcase end
371371
@@ -446,19 +446,19 @@ module simd_alu import ara_pkg::*; import rvv_pkg::*; #(
446446 // Fixed point clip instructions
447447 VNCLIP : if (FixPtSupport == FixedPointEnable) unique case (vew_i)
448448 EW8 : for (int b = 0 ; b < 4 ; b++ ) begin
449- automatic logic [15 : 0 ] clip = $signed (opb.w16[b]) >>> opa.w16[b][3 : 0 ];
449+ automatic logic [15 : 0 ] clip = $unsigned ( $ signed (opb.w16[b]) >>> opa.w16[b][3 : 0 ]) ;
450450 vxsat.w8[b] = | clip[15 : 8 ];
451- res.w8 [2 * b + narrowing_select_i] = ( $signed (opb.w16[b]) >>> opa.w16[b][3 : 0 ]) + rm[b];
451+ res.w8 [2 * b + narrowing_select_i] = $unsigned (( $signed (opb.w16[b]) >>> opa.w16[b][3 : 0 ]) + $signed ( rm[b])) ;
452452 end
453453 EW16 : for (int b = 0 ; b < 2 ; b++ ) begin
454- automatic logic [31 : 0 ] clip = $signed (opb.w32[b]) >>> opa.w32[b][4 : 0 ];
454+ automatic logic [31 : 0 ] clip = $unsigned ( $ signed (opb.w32[b]) >>> opa.w32[b][4 : 0 ]) ;
455455 vxsat.w8[b] = | clip[31 : 16 ];
456- res.w16[2 * b + narrowing_select_i] = ( $signed (opb.w32[b]) >>> opa.w32[b][4 : 0 ]) + rm[b];
456+ res.w16[2 * b + narrowing_select_i] = $unsigned (( $signed (opb.w32[b]) >>> opa.w32[b][4 : 0 ]) + $signed ( rm[b])) ;
457457 end
458458 EW32 : for (int b = 0 ; b < 1 ; b++ ) begin
459459 automatic logic [63 : 0 ] clip = $signed (opb.w64[b]) >>> opa.w64[b][5 : 0 ];
460460 vxsat.w8[b] = | clip[63 : 32 ];
461- res.w32[2 * b + narrowing_select_i] = ( $signed (opb.w64[b]) >>> opa.w64[b][5 : 0 ]) + rm[b];
461+ res.w32[2 * b + narrowing_select_i] = $unsigned (( $signed (opb.w64[b]) >>> opa.w64[b][5 : 0 ]) + $signed ( rm[b])) ;
462462 end
463463 endcase
464464 VNCLIPU : if (FixPtSupport == FixedPointEnable) unique case (vew_i)
0 commit comments