mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
fix 18186 with adding importc _umul128 (#18200)
This commit is contained in:
@@ -867,10 +867,11 @@ when defined(sizeof_Int128):
|
||||
return (hi, lo)
|
||||
|
||||
elif defined(vcc) and defined(cpu64):
|
||||
proc umul128(x, y: uint64, z: ptr uint64): uint64 {.importc: "_umul128", header: "<intrin.h>".}
|
||||
proc mul128*(x: uint64; y: uint64): uint64x2 {.inline.} =
|
||||
var hi: uint64 = 0
|
||||
var lo: uint64 = umul128(x, y, addr(hi))
|
||||
return (hi, lo)
|
||||
return uint64x2(hi: hi, lo: lo)
|
||||
|
||||
else:
|
||||
proc lo32*(x: uint64): uint32 {.inline.} =
|
||||
|
||||
@@ -147,6 +147,7 @@ when defined(sizeof_Int128):
|
||||
return y1 or uint32(y0 > 1)
|
||||
|
||||
elif defined(vcc) and defined(cpu64):
|
||||
proc umul128(x, y: uint64, z: ptr uint64): uint64 {.importc: "_umul128", header: "<intrin.h>".}
|
||||
proc roundToOdd(g: uint64; cpHi: uint32): uint32 {.inline.} =
|
||||
var p1: uint64 = 0
|
||||
var p0: uint64 = umul128(g, cpHi, addr(p1))
|
||||
|
||||
Reference in New Issue
Block a user