summaryrefslogtreecommitdiff
path: root/src/common/uint128.h
diff options
context:
space:
mode:
authorFernando S <fsahmkow27@gmail.com>2022-06-30 12:38:50 +0200
committerGitHub <noreply@github.com>2022-06-30 12:38:50 +0200
commit603952bc27aca2e17d39def7710d9af36791f15c (patch)
tree8b6b2f943bbf2fc749dbe144eee26cd144c084c9 /src/common/uint128.h
parent4ef66ec8fbb8c863db9063fe2bd332f22a5748ee (diff)
parent3196d957b02266293b68a60c75c3db9a00faf1f6 (diff)
Merge pull request #7454 from FernandoS27/new-core-timing
Core: Remake Core Timing
Diffstat (limited to 'src/common/uint128.h')
-rw-r--r--src/common/uint128.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/common/uint128.h b/src/common/uint128.h
index f890ffec2..199d0f55e 100644
--- a/src/common/uint128.h
+++ b/src/common/uint128.h
@@ -31,12 +31,17 @@ namespace Common {
return _udiv128(r[1], r[0], d, &remainder);
#endif
#else
+#ifdef __SIZEOF_INT128__
+ const auto product = static_cast<unsigned __int128>(a) * static_cast<unsigned __int128>(b);
+ return static_cast<u64>(product / d);
+#else
const u64 diva = a / d;
const u64 moda = a % d;
const u64 divb = b / d;
const u64 modb = b % d;
return diva * b + moda * divb + moda * modb / d;
#endif
+#endif
}
// This function multiplies 2 u64 values and produces a u128 value;