summaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorPeter Gavin <pgavin@gmail.com>2017-12-09 05:57:25 +0900
committerStafford Horne <shorne@gmail.com>2017-12-12 23:43:02 +0900
commit58884b0e451043ed2fb4d2fba18134f0fb451ce5 (patch)
treeafcfc4afe19d19e881a8b142a8d0291867f42dac /sim
parent07b95864f35f19636e2a95eaf3083a8b18ac7cda (diff)
downloadbinutils-gdb-58884b0e451043ed2fb4d2fba18134f0fb451ce5.tar.gz
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/ChangeLog7
-rw-r--r--sim/common/cgen-ops.h18
2 files changed, 25 insertions, 0 deletions
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 091ca429298..313a467c36e 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 97585d7943d..0fa327630c4 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