Hi all,
Thanks for reading this.
I’m unable to set the ‘-march=native’ compiler flag from CGo.
CGo is ignoring the setting no matter what I do. I’ve also tried setting the ‘GO_ARCH’ environment variable and I’ve set the ‘CGO_FLAGS_ALLOW’ environment variable correctly. The command ‘go tool cgo -debug-gcc’ tells me that Go is replacing the ‘-march=native’ with ‘-m64’.
To reproduce:
//go:build amd64 && !purego && gc
// +build amd64,!purego,gc
// #cgo CFLAGS: -march=native
package keccakAVX512
/*
// check if the amd64 machine supports AVX512 instructions at build time and call
// an assembly function using AVX512 if so.
#ifdef __AVX2__
void keccakF1600_AVX512(unsigned long* state);
this should fail with a syntax error but doesn't
#endif
// void keccakF1600_AVX512(unsigned long* state) {};
*/
import "C"
func KeccakF1600AMDAVX512(a *[25]uint64) {
C.keccakF1600_AVX512((*C.ulong)(&a[0]))
}