Browse Source
Corrects swapped add/subtract operators in packed 2-way multiply loop. Spec requires (p0 - p1) but implementation computed (p1 - p0). Even elements should add, odd elements should subtract. Fixed instructions: - PM2WSUB.H: P-ext spec - PM2WSUBA.H: P-ext spec Changed: Swapped += and -= for (j & 1) conditional Signed-off-by: Max Chou <max.chou@sifive.com>pull/2310/head
committed by
Chih-Min Chao
2 changed files with 4 additions and 4 deletions
@ -1,7 +1,7 @@ |
|||||
require_rv32; |
require_rv32; |
||||
P_WIDEN_REDUCTION_LOOP(32, 16, false, false, { |
P_WIDEN_REDUCTION_LOOP(32, 16, false, false, { |
||||
if (j & 1) |
if (j & 1) |
||||
p_res += p_rs1 * p_rs2; |
|
||||
else |
|
||||
p_res -= p_rs1 * p_rs2; |
p_res -= p_rs1 * p_rs2; |
||||
|
else |
||||
|
p_res += p_rs1 * p_rs2; |
||||
}) |
}) |
||||
@ -1,7 +1,7 @@ |
|||||
require_rv32; |
require_rv32; |
||||
P_WIDEN_REDUCTION_LOOP(32, 16, true, false, { |
P_WIDEN_REDUCTION_LOOP(32, 16, true, false, { |
||||
if (j & 1) |
if (j & 1) |
||||
p_res += p_rs1 * p_rs2; |
|
||||
else |
|
||||
p_res -= p_rs1 * p_rs2; |
p_res -= p_rs1 * p_rs2; |
||||
|
else |
||||
|
p_res += p_rs1 * p_rs2; |
||||
}) |
}) |
||||
Loading…
Reference in new issue