github.com/parquet-go/parquet-go@v0.21.1-0.20240501160520-b3c3a0c3ed6f/encoding/bytestreamsplit/bytestreamsplit_amd64.go (about)

     1  //go:build !purego
     2  
     3  package bytestreamsplit
     4  
     5  import (
     6  	"golang.org/x/sys/cpu"
     7  )
     8  
     9  var encodeFloatHasAVX512 = cpu.X86.HasAVX512 &&
    10  	cpu.X86.HasAVX512F &&
    11  	cpu.X86.HasAVX512VL
    12  
    13  var encodeDoubleHasAVX512 = cpu.X86.HasAVX512 &&
    14  	cpu.X86.HasAVX512F &&
    15  	cpu.X86.HasAVX512VL &&
    16  	cpu.X86.HasAVX512VBMI // VPERMB
    17  
    18  var decodeFloatHasAVX2 = cpu.X86.HasAVX2
    19  
    20  var decodeDoubleHasAVX512 = cpu.X86.HasAVX512 &&
    21  	cpu.X86.HasAVX512F &&
    22  	cpu.X86.HasAVX512VL &&
    23  	cpu.X86.HasAVX512VBMI // VPERMB
    24  
    25  //go:noescape
    26  func encodeFloat(dst, src []byte)
    27  
    28  //go:noescape
    29  func encodeDouble(dst, src []byte)
    30  
    31  //go:noescape
    32  func decodeFloat(dst, src []byte)
    33  
    34  //go:noescape
    35  func decodeDouble(dst, src []byte)