// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package math

import 

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 (,  uintptr) (uintptr, bool) {
	if | < 1<<(4*goarch.PtrSize) ||  == 0 {
		return  * , false
	}
	 :=  > MaxUintptr/
	return  * , 
}

// Mul64 returns the 128-bit product of x and y: (hi, lo) = x * y
// with the product bits' upper half returned in hi and the lower
// half returned in lo.
// This is a copy from math/bits.Mul64
// On supported platforms this is an intrinsic lowered by the compiler.
func (,  uint64) (,  uint64) {
	const  = 1<<32 - 1
	 :=  & 
	 :=  >> 32
	 :=  & 
	 :=  >> 32
	 :=  * 
	 := * + >>32
	 :=  & 
	 :=  >> 32
	 +=  * 
	 = * +  + >>32
	 =  * 
	return
}