diff --git a/benchmarks/platforms.nim b/benchmarks/platforms.nim index 51593fb..c057e17 100644 --- a/benchmarks/platforms.nim +++ b/benchmarks/platforms.nim @@ -6,25 +6,5 @@ # * Apache v2 license (license terms in the root directory or at http://www.apache.org/licenses/LICENSE-2.0). # at your option. This file may not be copied, modified, or distributed except according to those terms. -when defined(amd64): # TODO defined(i386) but it seems like RDTSC call is misconfigured - import platforms/x86 - export getTicks, cpuName - - const SupportsCPUName* = true - const SupportsGetTicks* = true -else: - const SupportsCPUName* = false - const SupportsGetTicks* = false - -# Prevent compiler optimizing benchmark away -# ----------------------------------------------- -# This doesn't always work unfortunately ... - -proc volatilize(x: ptr byte) {.codegenDecl: "$# $#(char const volatile *x)", inline.} = - discard - -template preventOptimAway*[T](x: var T) = - volatilize(cast[ptr byte](unsafeAddr x)) - -template preventOptimAway*[T](x: T) = - volatilize(cast[ptr byte](x)) +import ../constantine/platforms/metering/benchmarking +export benchmarking \ No newline at end of file diff --git a/constantine.nimble b/constantine.nimble index f8c27cc..86d4fb9 100644 --- a/constantine.nimble +++ b/constantine.nimble @@ -4,8 +4,6 @@ author = "Mamy Ratsimbazafy" description = "This library provides thoroughly tested and highly-optimized implementations of cryptography protocols." license = "MIT or Apache License 2.0" -installDirs = @["constantine", "metering"] - # Dependencies # ---------------------------------------------------------------- diff --git a/constantine/platforms/abstractions.nim b/constantine/platforms/abstractions.nim index 147e625..dac0ddc 100644 --- a/constantine/platforms/abstractions.nim +++ b/constantine/platforms/abstractions.nim @@ -13,7 +13,7 @@ # ############################################################ import ./primitives -import ../../metering/tracer +import ./metering/tracer export primitives, tracer diff --git a/constantine/platforms/metering/benchmarking.nim b/constantine/platforms/metering/benchmarking.nim new file mode 100644 index 0000000..097afe5 --- /dev/null +++ b/constantine/platforms/metering/benchmarking.nim @@ -0,0 +1,30 @@ +# Constantine +# Copyright (c) 2018-2019 Status Research & Development GmbH +# Copyright (c) 2020-Present Mamy André-Ratsimbazafy +# Licensed and distributed under either of +# * MIT license (license terms in the root directory or at http://opensource.org/licenses/MIT). +# * Apache v2 license (license terms in the root directory or at http://www.apache.org/licenses/LICENSE-2.0). +# at your option. This file may not be copied, modified, or distributed except according to those terms. + +when defined(amd64): # TODO defined(i386) but it seems like RDTSC call is misconfigured + import cycle_count/x86 + export getTicks, cpuName + + const SupportsCPUName* = true + const SupportsGetTicks* = true +else: + const SupportsCPUName* = false + const SupportsGetTicks* = false + +# Prevent compiler optimizing benchmark away +# ----------------------------------------------- +# This doesn't always work unfortunately ... + +proc volatilize(x: ptr byte) {.codegenDecl: "$# $#(char const volatile *x)", inline.} = + discard + +template preventOptimAway*[T](x: var T) = + volatilize(cast[ptr byte](unsafeAddr x)) + +template preventOptimAway*[T](x: T) = + volatilize(cast[ptr byte](x)) diff --git a/benchmarks/platforms/arm.nim b/constantine/platforms/metering/cycle_count/arm.nim similarity index 100% rename from benchmarks/platforms/arm.nim rename to constantine/platforms/metering/cycle_count/arm.nim diff --git a/benchmarks/platforms/x86.nim b/constantine/platforms/metering/cycle_count/x86.nim similarity index 100% rename from benchmarks/platforms/x86.nim rename to constantine/platforms/metering/cycle_count/x86.nim diff --git a/metering/reports.nim b/constantine/platforms/metering/reports.nim similarity index 99% rename from metering/reports.nim rename to constantine/platforms/metering/reports.nim index df6e576..4643b8c 100644 --- a/metering/reports.nim +++ b/constantine/platforms/metering/reports.nim @@ -8,8 +8,8 @@ import std/[strformat, strutils], - ../benchmarks/platforms, - tracer + ./benchmarking, + ./tracer # Reporting benchmark result # ------------------------------------------------------- diff --git a/metering/tracer.nim b/constantine/platforms/metering/tracer.nim similarity index 99% rename from metering/tracer.nim rename to constantine/platforms/metering/tracer.nim index 1c38c48..b9c87b6 100644 --- a/metering/tracer.nim +++ b/constantine/platforms/metering/tracer.nim @@ -20,7 +20,7 @@ const CTT_TRACE {.booldefine.} = off # For manual "debug-echo"-style timing. when CTT_METER or CTT_TRACE: - import ../benchmarks/platforms + import ./benchmarking type Metadata* = object diff --git a/metering/m_modexp.nim b/metering/m_modexp.nim index 4444733..920ee0c 100644 --- a/metering/m_modexp.nim +++ b/metering/m_modexp.nim @@ -7,7 +7,7 @@ # at your option. This file may not be copied, modified, or distributed except according to those terms. import - ./reports, ./tracer, + ../constantine/platforms/metering/[reports, tracer], ../constantine/ethereum_evm_precompiles, ../constantine/platforms/abstractions diff --git a/metering/m_msm.nim b/metering/m_msm.nim index f5be392..64e1282 100644 --- a/metering/m_msm.nim +++ b/metering/m_msm.nim @@ -8,7 +8,7 @@ import std/times, - ./reports, ./tracer, + ../constantine/platforms/metering/[reports, tracer], ../constantine/math/config/curves, ../constantine/math/[arithmetic, extension_fields, ec_shortweierstrass], ../constantine/math/constants/zoo_subgroups, diff --git a/metering/m_pairings.nim b/metering/m_pairings.nim index 2480ae4..352020d 100644 --- a/metering/m_pairings.nim +++ b/metering/m_pairings.nim @@ -8,7 +8,7 @@ import std/times, - ./reports, ./tracer, + ../constantine/platforms/metering/[reports, tracer], ../constantine/math/config/curves, ../constantine/math/[arithmetic, extension_fields, ec_shortweierstrass], ../constantine/math/constants/zoo_subgroups,