Browse Source
Simplify vwmulsu_vv and vwmulsu_vx (#861)
Leverage macro VI_WIDE_OP_AND_ASSIGN_MIX
pull/880/head
Yueh-Ting (eop) Chen
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
2 additions and
22 deletions
-
riscv/insns/vwmulsu_vv.h
-
riscv/insns/vwmulsu_vx.h
|
|
|
@ -2,15 +2,5 @@ |
|
|
|
VI_CHECK_DSS(true); |
|
|
|
VI_VV_LOOP_WIDEN |
|
|
|
({ |
|
|
|
switch(P.VU.vsew) { |
|
|
|
case e8: |
|
|
|
P.VU.elt<uint16_t>(rd_num, i, true) = (int16_t)(int8_t)vs2 * (int16_t)(uint8_t)vs1; |
|
|
|
break; |
|
|
|
case e16: |
|
|
|
P.VU.elt<uint32_t>(rd_num, i, true) = (int32_t)(int16_t)vs2 * (int32_t)(uint16_t)vs1; |
|
|
|
break; |
|
|
|
default: |
|
|
|
P.VU.elt<uint64_t>(rd_num, i, true) = (int64_t)(int32_t)vs2 * (int64_t)(uint32_t)vs1; |
|
|
|
break; |
|
|
|
} |
|
|
|
VI_WIDE_OP_AND_ASSIGN_MIX(vs2, vs1, 0, *, +, uint, int, uint) |
|
|
|
}) |
|
|
|
|
|
|
|
@ -2,15 +2,5 @@ |
|
|
|
VI_CHECK_DSS(false); |
|
|
|
VI_VX_LOOP_WIDEN |
|
|
|
({ |
|
|
|
switch(P.VU.vsew) { |
|
|
|
case e8: |
|
|
|
P.VU.elt<uint16_t>(rd_num, i, true) = (int16_t)(int8_t)vs2 * (int16_t)(uint8_t)rs1; |
|
|
|
break; |
|
|
|
case e16: |
|
|
|
P.VU.elt<uint32_t>(rd_num, i, true) = (int32_t)(int16_t)vs2 * (int32_t)(uint16_t)rs1; |
|
|
|
break; |
|
|
|
default: |
|
|
|
P.VU.elt<uint64_t>(rd_num, i, true) = (int64_t)(int32_t)vs2 * (int64_t)(uint32_t)rs1; |
|
|
|
break; |
|
|
|
} |
|
|
|
VI_WIDE_OP_AND_ASSIGN_MIX(vs2, rs1, 0, *, +, uint, int, uint) |
|
|
|
}) |
|
|
|
|