// Code generated by modernc.org/undup from the per-target vec_*.go files; DO NOT EDIT.

//go:build (freebsd && amd64) || (freebsd && arm64) || (linux && amd64) || (linux && arm64) || (linux && loong64) || (linux && ppc64le) || (linux && riscv64) || (linux && s390x) || (netbsd && amd64)

package vec

import (
	"modernc.org/libc"
)

func _distance_hamming_u64(tls *libc.TLS, a uintptr, b uintptr, n Tsize_t) (r Tf32) {
	var i uint64
	var same int32
	_, _ = i, same
	same = 0
	i = uint64(0)
	for {
		if !(i < n) {
			break
		}
		same = same + libc.X__builtin_popcountl(tls, **(**Tu64)(__ccgo_up(a + uintptr(i)*8))^**(**Tu64)(__ccgo_up(b + uintptr(i)*8)))
		goto _1
	_1:
		;
		i = i + 1
	}
	return float32(same)
}
