github.com/egonelbre/exp@v0.0.0-20240430123955-ed1d3aa93911/sse/sse.go (about)

     1  package sse
     2  
     3  func AddU32_ASM(dst, src []uint32)
     4  func SubU32_ASM(dst, src []uint32)
     5  func MulU32_ASM(dst, src []uint32)
     6  
     7  func AddU32_SSE(dst, src []uint32)
     8  func SubU32_SSE(dst, src []uint32)
     9  func MulU32_SSE(dst, src []uint32)
    10  
    11  func AddU32_Slow(dst, src []uint32) {
    12  	n := len(dst)
    13  	if n > len(src) {
    14  		n = len(src)
    15  	}
    16  
    17  	for i := range dst[:n] {
    18  		dst[i] += src[i]
    19  	}
    20  }
    21  
    22  func SubU32_Slow(dst, src []uint32) {
    23  	n := len(dst)
    24  	if n > len(src) {
    25  		n = len(src)
    26  	}
    27  
    28  	for i := range dst[:n] {
    29  		dst[i] -= src[i]
    30  	}
    31  }
    32  
    33  func MulU32_Slow(dst, src []uint32) {
    34  	n := len(dst)
    35  	if n > len(src) {
    36  		n = len(src)
    37  	}
    38  
    39  	for i := range dst[:n] {
    40  		dst[i] *= src[i]
    41  	}
    42  }