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 CONDITIONMASK = (1 << RANDOMX_JUMP_BITS) - 1
|
||||||
const STOREL3CONDITION = 14
|
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 {
|
func isZeroOrPowerOf2(x uint32) bool {
|
||||||
return (x & (x - 1)) == 0
|
return (x & (x - 1)) == 0
|
||||||
}
|
}
|
||||||
|
|
10
dataset.go
10
dataset.go
|
@ -11,6 +11,16 @@ type Dataset interface {
|
||||||
Memory() []RegisterLine
|
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) {
|
func InitDatasetParallel(dataset Dataset, n int) {
|
||||||
n = max(1, n)
|
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