fix 18186 with adding importc _umul128 (#18200)
This commit is contained in:
parent
e7816a3e77
commit
e7aa41ff3f
2 changed files with 3 additions and 1 deletions
|
|
@ -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))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue