mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
target/hppa: Implement HADD
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
d265360f07
commit
0843563f3e
4 changed files with 79 additions and 1 deletions
|
@ -377,3 +377,35 @@ target_ulong HELPER(read_interval_timer)(void)
|
|||
return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) >> 2;
|
||||
#endif
|
||||
}
|
||||
|
||||
uint64_t HELPER(hadd_ss)(uint64_t r1, uint64_t r2)
|
||||
{
|
||||
uint64_t ret = 0;
|
||||
|
||||
for (int i = 0; i < 64; i += 16) {
|
||||
int f1 = sextract64(r1, i, 16);
|
||||
int f2 = sextract64(r2, i, 16);
|
||||
int fr = f1 + f2;
|
||||
|
||||
fr = MIN(fr, INT16_MAX);
|
||||
fr = MAX(fr, INT16_MIN);
|
||||
ret = deposit64(ret, i, 16, fr);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
uint64_t HELPER(hadd_us)(uint64_t r1, uint64_t r2)
|
||||
{
|
||||
uint64_t ret = 0;
|
||||
|
||||
for (int i = 0; i < 64; i += 16) {
|
||||
int f1 = extract64(r1, i, 16);
|
||||
int f2 = sextract64(r2, i, 16);
|
||||
int fr = f1 + f2;
|
||||
|
||||
fr = MIN(fr, UINT16_MAX);
|
||||
fr = MAX(fr, 0);
|
||||
ret = deposit64(ret, i, 16, fr);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue