From 289d48e5fe8b0a53cb8d11f4ca4a1183e9752e59 Mon Sep 17 00:00:00 2001 From: cooldome Date: Tue, 28 Apr 2020 17:02:14 +0100 Subject: [PATCH] bug fix (#14149) [backport:1.2] Co-authored-by: cooldome --- lib/pure/hashes.nim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/pure/hashes.nim b/lib/pure/hashes.nim index f7b4e907b0..9fd2a74d08 100644 --- a/lib/pure/hashes.nim +++ b/lib/pure/hashes.nim @@ -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)