OSDN Git Service

update readme
[bytom/vapor.git] / mining / tensority / cgo_algorithm / algorithm_simd.go
1 // +build simd
2
3 package cgo_algorithm
4
5 // #cgo !darwin CFLAGS: -I.
6 // #cgo !darwin LDFLAGS: -L. -l:./lib/cSimdTs.o -lstdc++ -lgomp -lpthread
7 // #cgo darwin CFLAGS: -I. -I/usr/local/opt/llvm/include
8 // #cgo darwin LDFLAGS: -L. -l./lib/cSimdTs.o -lstdc++ -lomp -L/usr/local/opt/llvm/lib
9 // #include "./lib/cSimdTs.h"
10 import "C"
11
12 import (
13         "unsafe"
14
15         "github.com/vapor/protocol/bc"
16 )
17
18 func SimdAlgorithm(bh, seed *bc.Hash) *bc.Hash {
19         bhBytes := bh.Bytes()
20         sdBytes := seed.Bytes()
21         bhPtr := (*C.uint8_t)(unsafe.Pointer(&bhBytes[0]))
22         seedPtr := (*C.uint8_t)(unsafe.Pointer(&sdBytes[0]))
23
24         resPtr := C.SimdTs(bhPtr, seedPtr)
25         resHash := bc.NewHash(*(*[32]byte)(unsafe.Pointer(resPtr)))
26
27         return &resHash
28 }