mirror of https://github.com/xemu-project/xemu.git
target-mips: use DSP unions for reduction add instructions
Reviewed-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
75d012ac7f
commit
0a16c79cc4
|
@ -1352,31 +1352,29 @@ target_ulong helper_modsub(target_ulong rs, target_ulong rt)
|
||||||
|
|
||||||
target_ulong helper_raddu_w_qb(target_ulong rs)
|
target_ulong helper_raddu_w_qb(target_ulong rs)
|
||||||
{
|
{
|
||||||
uint8_t rs3, rs2, rs1, rs0;
|
target_ulong ret = 0;
|
||||||
uint16_t temp;
|
DSP32Value ds;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
MIPSDSP_SPLIT32_8(rs, rs3, rs2, rs1, rs0);
|
ds.uw[0] = rs;
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
temp = (uint16_t)rs3 + (uint16_t)rs2 + (uint16_t)rs1 + (uint16_t)rs0;
|
ret += ds.ub[i];
|
||||||
|
}
|
||||||
return (target_ulong)temp;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(TARGET_MIPS64)
|
#if defined(TARGET_MIPS64)
|
||||||
target_ulong helper_raddu_l_ob(target_ulong rs)
|
target_ulong helper_raddu_l_ob(target_ulong rs)
|
||||||
{
|
{
|
||||||
int i;
|
target_ulong ret = 0;
|
||||||
uint16_t rs_t[8];
|
DSP64Value ds;
|
||||||
uint64_t temp;
|
unsigned int i;
|
||||||
|
|
||||||
temp = 0;
|
|
||||||
|
|
||||||
|
ds.ul[0] = rs;
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
rs_t[i] = (rs >> (8 * i)) & MIPSDSP_Q0;
|
ret += ds.ub[i];
|
||||||
temp += (uint64_t)rs_t[i];
|
|
||||||
}
|
}
|
||||||
|
return ret;
|
||||||
return temp;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue