16 lines
419 B
Go
16 lines
419 B
Go
package math
|
|
|
|
import "github.com/goplus/llgo/internal/runtime/goarch"
|
|
|
|
const MaxUintptr = ^uintptr(0)
|
|
|
|
// MulUintptr returns a * b and whether the multiplication overflowed.
|
|
// On supported platforms this is an intrinsic lowered by the compiler.
|
|
func MulUintptr(a, b uintptr) (uintptr, bool) {
|
|
if a|b < 1<<(4*goarch.PtrSize) || a == 0 {
|
|
return a * b, false
|
|
}
|
|
overflow := b > MaxUintptr/a
|
|
return a * b, overflow
|
|
}
|