github.com/vc42/parquet-go@v0.0.0-20240320194221-1a9adb5f23f5/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)