Version v3.1.0, implement generic NewDataset and GetFlags
This commit is contained in:
parent
36f1a90a20
commit
55d6161f6e
13
config.go
13
config.go
|
@ -106,19 +106,6 @@ const CONDITIONOFFSET = RANDOMX_JUMP_OFFSET
|
|||
const CONDITIONMASK = (1 << RANDOMX_JUMP_BITS) - 1
|
||||
const STOREL3CONDITION = 14
|
||||
|
||||
const RANDOMX_FLAG_DEFAULT = 0
|
||||
|
||||
const (
|
||||
RANDOMX_FLAG_LARGE_PAGES = 1 << iota
|
||||
RANDOMX_FLAG_HARD_AES
|
||||
RANDOMX_FLAG_FULL_MEM
|
||||
RANDOMX_FLAG_JIT
|
||||
RANDOMX_FLAG_SECURE
|
||||
RANDOMX_FLAG_ARGON2_SSSE3
|
||||
RANDOMX_FLAG_ARGON2_AVX2
|
||||
RANDOMX_FLAG_ARGON2
|
||||
)
|
||||
|
||||
func isZeroOrPowerOf2(x uint32) bool {
|
||||
return (x & (x - 1)) == 0
|
||||
}
|
||||
|
|
10
dataset.go
10
dataset.go
|
@ -11,6 +11,16 @@ type Dataset interface {
|
|||
Memory() []RegisterLine
|
||||
}
|
||||
|
||||
func NewDataset(cache *Cache) Dataset {
|
||||
if cache.Flags&RANDOMX_FLAG_FULL_MEM > 0 {
|
||||
if ds := NewFullDataset(cache); ds != nil {
|
||||
return ds
|
||||
}
|
||||
return nil
|
||||
}
|
||||
return NewLightDataset(cache)
|
||||
}
|
||||
|
||||
func InitDatasetParallel(dataset Dataset, n int) {
|
||||
n = max(1, n)
|
||||
|
||||
|
|
36
flags.go
Normal file
36
flags.go
Normal file
|
@ -0,0 +1,36 @@
|
|||
package randomx
|
||||
|
||||
import (
|
||||
"golang.org/x/sys/cpu"
|
||||
"runtime"
|
||||
)
|
||||
|
||||
const RANDOMX_FLAG_DEFAULT = 0
|
||||
|
||||
const (
|
||||
// RANDOMX_FLAG_LARGE_PAGES not implemented
|
||||
RANDOMX_FLAG_LARGE_PAGES = 1 << iota
|
||||
// RANDOMX_FLAG_HARD_AES not implemented
|
||||
RANDOMX_FLAG_HARD_AES
|
||||
// RANDOMX_FLAG_FULL_MEM Selects between full or light mode dataset
|
||||
RANDOMX_FLAG_FULL_MEM
|
||||
// RANDOMX_FLAG_JIT Enables JIT features
|
||||
RANDOMX_FLAG_JIT
|
||||
// RANDOMX_FLAG_SECURE Enables W^X for JIT code
|
||||
RANDOMX_FLAG_SECURE
|
||||
RANDOMX_FLAG_ARGON2_SSSE3
|
||||
RANDOMX_FLAG_ARGON2_AVX2
|
||||
RANDOMX_FLAG_ARGON2
|
||||
)
|
||||
|
||||
func GetFlags() (flags uint64) {
|
||||
flags = RANDOMX_FLAG_DEFAULT
|
||||
if runtime.GOARCH == "amd64" {
|
||||
flags |= RANDOMX_FLAG_JIT
|
||||
|
||||
if cpu.X86.HasAES {
|
||||
flags |= RANDOMX_FLAG_HARD_AES
|
||||
}
|
||||
}
|
||||
return flags
|
||||
}
|
Loading…
Reference in a new issue