mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-15 23:54:19 +00:00
bug fix (#14149) [backport:1.2]
Co-authored-by: cooldome <ariabushenko@bk.ru>
This commit is contained in:
@@ -99,7 +99,10 @@ proc hiXorLo(a, b: uint64): uint64 {.inline.} =
|
||||
elif defined(gcc) or defined(llvm_gcc) or defined(clang):
|
||||
{.emit: """__uint128_t r = a; r *= b; `result` = (r >> 64) ^ r;""".}
|
||||
elif defined(windows) and not defined(tcc):
|
||||
{.emit: """a = _umul128(a, b, &b); `result` = a ^ b;""".}
|
||||
proc umul128(a, b: uint64, c: ptr uint64): uint64 {.importc: "_umul128", header: "intrin.h".}
|
||||
var b = b
|
||||
let c = umul128(a, b, addr b)
|
||||
result = c xor b
|
||||
else:
|
||||
result = hiXorLoFallback64(a, b)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user