- 
                Notifications
    
You must be signed in to change notification settings  - Fork 92
 
Open
Description
gen code:
const MM_CMPINT_NLT = operand.U8(5)
//go:generate go run gen.go -pkg main -out ../ge_amd64.s -stubs ../ge_amd64.go
func main() {
	TEXT("ge", NOSPLIT, "func(a,b []uint64, r *uint8)")
	Doc("r_bits[i] = a[i] >= b[i], a,b must have 8 elements")
	aPtr := operand.Mem{Base: Load(Param("a").Base(), GP64())}
	bPtr := operand.Mem{Base: Load(Param("b").Base(), GP64())}
	rPtr := operand.Mem{Base: Load(Param("r"), GP64())}
	k := K()
	zmm := ZMM()
	VMOVDQU64(bPtr, zmm)
	VPCMPUQ(MM_CMPINT_NLT, aPtr, zmm, k)
	KMOVB(k, rPtr)
	RET()
	Generate()
}expect r_bits[i] = a[i] >= b[i],but all bits is reversed:
var r uint8
var a = []uint64{1, 2, 3, 4, 0, 0, 0, 0}
var b = []uint64{0, 3, 0, 0, 1, 1, 1, 1}
ge(a, b, &r)
fmt.Printf("%.8b \n", r)
// exp: 00001101
// act: 11110010source code:
ge.zip
Metadata
Metadata
Assignees
Labels
No labels