1
0

simd_avx2.go 527 B

12345678910111213141516171819202122232425262728
  1. //go:build amd64
  2. package cpu
  3. // hasAVX2Kernel signals whether the AVX2 assembly implementation is available.
  4. const hasAVX2Kernel = true
  5. //go:noescape
  6. func dotAVX2(a *float32, b *float32, n int) float32
  7. //go:noescape
  8. func axpyAVX2(alpha float32, x *float32, y *float32, n int)
  9. func dotFloat32AVX2(a, b []float32) float32 {
  10. if len(a) == 0 {
  11. return 0
  12. }
  13. return dotAVX2(&a[0], &b[0], len(a))
  14. }
  15. func axpyFloat32AVX2(alpha float32, x, y []float32) {
  16. if len(x) == 0 {
  17. return
  18. }
  19. axpyAVX2(alpha, &x[0], &y[0], len(x))
  20. }