diff options
author | Peter Gavin <pgavin@gmail.com> | 2017-12-09 05:57:25 +0900 |
---|---|---|
committer | Stafford Horne <shorne@gmail.com> | 2017-12-12 23:43:02 +0900 |
commit | 58884b0e451043ed2fb4d2fba18134f0fb451ce5 (patch) | |
tree | afcfc4afe19d19e881a8b142a8d0291867f42dac /sim | |
parent | 07b95864f35f19636e2a95eaf3083a8b18ac7cda (diff) | |
download | gdb-58884b0e451043ed2fb4d2fba18134f0fb451ce5.zip gdb-58884b0e451043ed2fb4d2fba18134f0fb451ce5.tar.gz gdb-58884b0e451043ed2fb4d2fba18134f0fb451ce5.tar.bz2 |
sim: cgen: add MUL2OFSI and MUL1OFSI functions (needed for OR1K l.mul[u])
sim/common/ChangeLog:
2017-12-12 Peter Gavin <pgavin@gmail.com>
Stafford Horne <shorne@gmail.com>
* cgen-ops.h (MUL2OFSI): New function, 2's complement overflow
flag.
(MUL1OFSI): New function, 1's complement overflow flag.
Diffstat (limited to 'sim')
-rw-r--r-- | sim/common/ChangeLog | 7 | ||||
-rw-r--r-- | sim/common/cgen-ops.h | 18 |
2 files changed, 25 insertions, 0 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 091ca42..313a467 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,4 +1,11 @@ 2017-12-12 Peter Gavin <pgavin@gmail.com> + Stafford Horne <shorne@gmail.com> + + * cgen-ops.h (MUL2OFSI): New function, 2's complement overflow + flag. + (MUL1OFSI): New function, 1's complement overflow flag. + +2017-12-12 Peter Gavin <pgavin@gmail.com> Stafford Horne <shorne@gmail.com> * cgen-accfp.c (remsf, remdf): New function. diff --git a/sim/common/cgen-ops.h b/sim/common/cgen-ops.h index 97585d7..0fa3276 100644 --- a/sim/common/cgen-ops.h +++ b/sim/common/cgen-ops.h @@ -631,6 +631,22 @@ SUBOFQI (QI a, QI b, BI c) return res; } +SEMOPS_INLINE BI +MUL2OFSI (SI a, SI b) +{ + DI tmp = MULDI (EXTSIDI (a), EXTSIDI (b)); + BI res = tmp < -0x80000000LL || tmp > 0x7fffffffLL; + return res; +} + +SEMOPS_INLINE BI +MUL1OFSI (USI a, USI b) +{ + UDI tmp = MULDI (ZEXTSIDI (a), ZEXTSIDI (b)); + BI res = (tmp > 0xFFFFFFFFULL); + return res; +} + #else SI ADDCSI (SI, SI, BI); @@ -651,6 +667,8 @@ UBI ADDOFQI (QI, QI, BI); QI SUBCQI (QI, QI, BI); UBI SUBCFQI (QI, QI, BI); UBI SUBOFQI (QI, QI, BI); +BI MUL1OFSI (SI a, SI b); +BI MUL2OFSI (SI a, SI b); #endif |