From 904f0ccafcc5c708be1043c03f9738ac95d97d7b Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 13 Oct 2025 14:55:41 -0700 Subject: [PATCH 1/4] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20in?= =?UTF-8?q?itial=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.6 --- llvm/benchmarks/CMakeLists.txt | 1 + llvm/benchmarks/SpecialCaseListBM.cpp | 206 ++++++++++++++++++++++++++ 2 files changed, 207 insertions(+) create mode 100644 llvm/benchmarks/SpecialCaseListBM.cpp diff --git a/llvm/benchmarks/CMakeLists.txt b/llvm/benchmarks/CMakeLists.txt index 3cbfb0d44e5a3..e411ed4326a36 100644 --- a/llvm/benchmarks/CMakeLists.txt +++ b/llvm/benchmarks/CMakeLists.txt @@ -11,6 +11,7 @@ add_benchmark(FormatVariadicBM FormatVariadicBM.cpp PARTIAL_SOURCES_INTENDED) add_benchmark(GetIntrinsicInfoTableEntriesBM GetIntrinsicInfoTableEntriesBM.cpp PARTIAL_SOURCES_INTENDED) add_benchmark(SandboxIRBench SandboxIRBench.cpp PARTIAL_SOURCES_INTENDED) add_benchmark(MustacheBench Mustache.cpp PARTIAL_SOURCES_INTENDED) +add_benchmark(SpecialCaseListBM SpecialCaseListBM.cpp PARTIAL_SOURCES_INTENDED) add_benchmark(RuntimeLibcallsBench RuntimeLibcalls.cpp PARTIAL_SOURCES_INTENDED) diff --git a/llvm/benchmarks/SpecialCaseListBM.cpp b/llvm/benchmarks/SpecialCaseListBM.cpp new file mode 100644 index 0000000000000..41490c56a4067 --- /dev/null +++ b/llvm/benchmarks/SpecialCaseListBM.cpp @@ -0,0 +1,206 @@ +#include "benchmark/benchmark.h" +#include "llvm/ADT/SmallString.h" +#include "llvm/ADT/StringRef.h" +#include "llvm/Support/MemoryBuffer.h" +#include "llvm/Support/SpecialCaseList.h" +#include "llvm/Support/raw_ostream.h" +#include +#include +#include +#include +#include +#include + +using namespace llvm; + +namespace { +constexpr int RNG_SEED = 123456; +constexpr int MAX_LIST_SIZE = 100000; +constexpr int MAX_LIST_MUL = 1000; + +std::unique_ptr makeSpecialCaseList(StringRef List) { + std::string Error; + std::unique_ptr MB = MemoryBuffer::getMemBuffer(List); + auto SCL = SpecialCaseList::create(MB.get(), Error); + assert(SCL); + assert(Error == ""); + return SCL; +} + +static const std::string Dictionary[] = { + "orange", "tabby", "tortie", "tuxedo", "void", + "multiple", "spaces", "cute", "fluffy", "kittens", +}; + +std::vector genFiles(size_t N) { + std::vector R; + R.reserve(N); + std::mt19937 Rng(RNG_SEED); + std::uniform_int_distribution<> DepthDistrib(8, 16); + std::uniform_int_distribution<> WordDistrib(0, std::size(Dictionary) - 1); + + std::string S; + for (size_t i = 0; i < N; ++i) { + for (size_t D = DepthDistrib(Rng); D; --D) { + S += Dictionary[WordDistrib(Rng)]; + if (D > 1) + S += "/"; + } + R.push_back(std::move(S)); + S.clear(); + } + return R; +} + +std::string genFixedPath(const std::vector &Files) { + std::string S; + for (const auto &F : Files) { + S += "src:"; + S += F; + S += "\n"; + } + return S; +} + +std::string genGlobMid(const std::vector &Files) { + std::string S; + std::mt19937 Rng(RNG_SEED); + for (std::string F : Files) { + std::uniform_int_distribution<> PosDistrib(0, F.size() - 1); + F[PosDistrib(Rng)] = '*'; + S += "src:"; + S += F; + S += "\n"; + } + return S; +} + +std::string genGlobStart(const std::vector &Files) { + std::string S; + for (auto F : Files) { + F.front() = '*'; + S += "src:"; + S += F; + S += "\n"; + } + return S; +} + +std::string genGlobEnd(const std::vector &Files) { + std::string S; + for (auto F : Files) { + F.back() = '*'; + S += "src:"; + S += F; + S += "\n"; + } + return S; +} + +std::string genGlobBoth(const std::vector &Files) { + std::string S; + for (auto F : Files) { + F.back() = '*'; + F.front() = '*'; + S += "src:"; + S += F; + S += "\n"; + } + return S; +} + +void BM_Create( + benchmark::State &state, + std::string (*GenerateCaseList)(const std::vector &Files)) { + std::vector BigFileList = genFiles(state.range(0)); + std::string BigCaseList = GenerateCaseList(BigFileList); + for (auto _ : state) { + auto SCL = makeSpecialCaseList(BigCaseList); + benchmark::DoNotOptimize(SCL); + } +} +void BM_Pos( + benchmark::State &state, + std::string (*GenerateCaseList)(const std::vector &Files)) { + std::vector BigFileList = genFiles(state.range(0)); + std::string BigCaseList = GenerateCaseList(BigFileList); + auto SCL = makeSpecialCaseList(BigCaseList); + std::mt19937 Rng(RNG_SEED); + std::uniform_int_distribution<> LineDistrib(0, BigFileList.size() - 1); + for (auto _ : state) { + auto &Q = BigFileList[LineDistrib(Rng)]; + bool R = SCL->inSection("", "src", Q); + if (!R) + abort(); + benchmark::DoNotOptimize(R); + } +} + +void BM_Neg( + benchmark::State &state, + std::string (*GenerateCaseList)(const std::vector &Files)) { + std::vector BigFileList = genFiles(state.range(0)); + std::string BigCaseList = GenerateCaseList(BigFileList); + auto SCL = makeSpecialCaseList(BigCaseList); + std::mt19937 Rng(RNG_SEED); + std::uniform_int_distribution<> LineDistrib(0, BigFileList.size() - 1); + for (auto _ : state) { + std::string Q = BigFileList[LineDistrib(Rng)]; + std::uniform_int_distribution<> PosDistrib(0, Q.size() - 1); + Q[PosDistrib(Rng)] = '_'; + bool R = SCL->inSection("", "src", Q); + benchmark::DoNotOptimize(R); + } +} + +} // namespace + +BENCHMARK_CAPTURE(BM_Create, Exact, genFixedPath) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Create, Start, genGlobStart) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Create, End, genGlobEnd) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Create, Mid, genGlobMid) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Create, EndBoth, genGlobBoth) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); + +BENCHMARK_CAPTURE(BM_Pos, Exact, genFixedPath) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Pos, Start, genGlobStart) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Pos, End, genGlobEnd) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Pos, Mid, genGlobMid) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Pos, Both, genGlobBoth) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); + +BENCHMARK_CAPTURE(BM_Neg, Exact, genFixedPath) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Neg, Start, genGlobStart) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Neg, End, genGlobEnd) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Neg, Mid, genGlobMid) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); +BENCHMARK_CAPTURE(BM_Neg, End, genGlobBoth) + ->RangeMultiplier(MAX_LIST_MUL) + ->Range(1, MAX_LIST_SIZE); + +BENCHMARK_MAIN(); From e4f6e1576732b69d54c1f842e4057e52170a66db Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 13 Oct 2025 14:56:43 -0700 Subject: [PATCH 2/4] renames Created using spr 1.3.6 --- llvm/benchmarks/SpecialCaseListBM.cpp | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/llvm/benchmarks/SpecialCaseListBM.cpp b/llvm/benchmarks/SpecialCaseListBM.cpp index 41490c56a4067..fefb5f5254e84 100644 --- a/llvm/benchmarks/SpecialCaseListBM.cpp +++ b/llvm/benchmarks/SpecialCaseListBM.cpp @@ -52,7 +52,7 @@ std::vector genFiles(size_t N) { return R; } -std::string genFixedPath(const std::vector &Files) { +std::string genFixed(const std::vector &Files) { std::string S; for (const auto &F : Files) { S += "src:"; @@ -62,7 +62,7 @@ std::string genFixedPath(const std::vector &Files) { return S; } -std::string genGlobMid(const std::vector &Files) { +std::string genMid(const std::vector &Files) { std::string S; std::mt19937 Rng(RNG_SEED); for (std::string F : Files) { @@ -75,7 +75,7 @@ std::string genGlobMid(const std::vector &Files) { return S; } -std::string genGlobStart(const std::vector &Files) { +std::string genStart(const std::vector &Files) { std::string S; for (auto F : Files) { F.front() = '*'; @@ -86,7 +86,7 @@ std::string genGlobStart(const std::vector &Files) { return S; } -std::string genGlobEnd(const std::vector &Files) { +std::string genEnd(const std::vector &Files) { std::string S; for (auto F : Files) { F.back() = '*'; @@ -97,7 +97,7 @@ std::string genGlobEnd(const std::vector &Files) { return S; } -std::string genGlobBoth(const std::vector &Files) { +std::string genBoth(const std::vector &Files) { std::string S; for (auto F : Files) { F.back() = '*'; @@ -155,51 +155,51 @@ void BM_Neg( } // namespace -BENCHMARK_CAPTURE(BM_Create, Exact, genFixedPath) +BENCHMARK_CAPTURE(BM_Create, Exact, genFixed) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Create, Start, genGlobStart) +BENCHMARK_CAPTURE(BM_Create, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Create, End, genGlobEnd) +BENCHMARK_CAPTURE(BM_Create, End, genEnd) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Create, Mid, genGlobMid) +BENCHMARK_CAPTURE(BM_Create, Mid, genMid) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Create, EndBoth, genGlobBoth) +BENCHMARK_CAPTURE(BM_Create, EndBoth, genBoth) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Pos, Exact, genFixedPath) +BENCHMARK_CAPTURE(BM_Pos, Exact, genFixed) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Pos, Start, genGlobStart) +BENCHMARK_CAPTURE(BM_Pos, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Pos, End, genGlobEnd) +BENCHMARK_CAPTURE(BM_Pos, End, genEnd) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Pos, Mid, genGlobMid) +BENCHMARK_CAPTURE(BM_Pos, Mid, genMid) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Pos, Both, genGlobBoth) +BENCHMARK_CAPTURE(BM_Pos, Both, genBoth) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Neg, Exact, genFixedPath) +BENCHMARK_CAPTURE(BM_Neg, Exact, genFixed) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Neg, Start, genGlobStart) +BENCHMARK_CAPTURE(BM_Neg, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Neg, End, genGlobEnd) +BENCHMARK_CAPTURE(BM_Neg, End, genEnd) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Neg, Mid, genGlobMid) +BENCHMARK_CAPTURE(BM_Neg, Mid, genMid) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); -BENCHMARK_CAPTURE(BM_Neg, End, genGlobBoth) +BENCHMARK_CAPTURE(BM_Neg, End, genBoth) ->RangeMultiplier(MAX_LIST_MUL) ->Range(1, MAX_LIST_SIZE); From 5347d391157af7a588f013a8ebbfc120dc75e4c9 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 13 Oct 2025 15:03:01 -0700 Subject: [PATCH 3/4] ranges Created using spr 1.3.6 --- llvm/benchmarks/SpecialCaseListBM.cpp | 35 ++++++++++++++------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/llvm/benchmarks/SpecialCaseListBM.cpp b/llvm/benchmarks/SpecialCaseListBM.cpp index fefb5f5254e84..afe06785ed0de 100644 --- a/llvm/benchmarks/SpecialCaseListBM.cpp +++ b/llvm/benchmarks/SpecialCaseListBM.cpp @@ -15,8 +15,9 @@ using namespace llvm; namespace { constexpr int RNG_SEED = 123456; -constexpr int MAX_LIST_SIZE = 100000; -constexpr int MAX_LIST_MUL = 1000; +constexpr int MAX_LIST_MIN = 10; +constexpr int MAX_LIST_MAX = 1000000; +constexpr int MAX_LIST_MUL = 10; std::unique_ptr makeSpecialCaseList(StringRef List) { std::string Error; @@ -157,50 +158,50 @@ void BM_Neg( BENCHMARK_CAPTURE(BM_Create, Exact, genFixed) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Create, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Create, End, genEnd) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Create, Mid, genMid) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Create, EndBoth, genBoth) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Pos, Exact, genFixed) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Pos, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Pos, End, genEnd) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Pos, Mid, genMid) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Pos, Both, genBoth) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Neg, Exact, genFixed) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Neg, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Neg, End, genEnd) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Neg, Mid, genMid) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_CAPTURE(BM_Neg, End, genBoth) ->RangeMultiplier(MAX_LIST_MUL) - ->Range(1, MAX_LIST_SIZE); + ->Range(MAX_LIST_MIN, MAX_LIST_MAX); BENCHMARK_MAIN(); From 9fe2d6db4fbf303ac3a5418028ffb23418729170 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Mon, 13 Oct 2025 15:28:30 -0700 Subject: [PATCH 4/4] align names Created using spr 1.3.6 --- llvm/benchmarks/SpecialCaseListBM.cpp | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/llvm/benchmarks/SpecialCaseListBM.cpp b/llvm/benchmarks/SpecialCaseListBM.cpp index afe06785ed0de..765787aaeda9d 100644 --- a/llvm/benchmarks/SpecialCaseListBM.cpp +++ b/llvm/benchmarks/SpecialCaseListBM.cpp @@ -110,7 +110,7 @@ std::string genBoth(const std::vector &Files) { return S; } -void BM_Create( +void BM_Make_( benchmark::State &state, std::string (*GenerateCaseList)(const std::vector &Files)) { std::vector BigFileList = genFiles(state.range(0)); @@ -120,7 +120,7 @@ void BM_Create( benchmark::DoNotOptimize(SCL); } } -void BM_Pos( +void BM_True_( benchmark::State &state, std::string (*GenerateCaseList)(const std::vector &Files)) { std::vector BigFileList = genFiles(state.range(0)); @@ -137,7 +137,7 @@ void BM_Pos( } } -void BM_Neg( +void BM_False( benchmark::State &state, std::string (*GenerateCaseList)(const std::vector &Files)) { std::vector BigFileList = genFiles(state.range(0)); @@ -156,51 +156,51 @@ void BM_Neg( } // namespace -BENCHMARK_CAPTURE(BM_Create, Exact, genFixed) +BENCHMARK_CAPTURE(BM_Make_, None_, genFixed) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Create, Start, genStart) +BENCHMARK_CAPTURE(BM_Make_, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Create, End, genEnd) +BENCHMARK_CAPTURE(BM_Make_, End__, genEnd) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Create, Mid, genMid) +BENCHMARK_CAPTURE(BM_Make_, Mid__, genMid) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Create, EndBoth, genBoth) +BENCHMARK_CAPTURE(BM_Make_, Both_, genBoth) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Pos, Exact, genFixed) +BENCHMARK_CAPTURE(BM_True_, None_, genFixed) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Pos, Start, genStart) +BENCHMARK_CAPTURE(BM_True_, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Pos, End, genEnd) +BENCHMARK_CAPTURE(BM_True_, End__, genEnd) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Pos, Mid, genMid) +BENCHMARK_CAPTURE(BM_True_, Mid__, genMid) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Pos, Both, genBoth) +BENCHMARK_CAPTURE(BM_True_, Both_, genBoth) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Neg, Exact, genFixed) +BENCHMARK_CAPTURE(BM_False, None_, genFixed) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Neg, Start, genStart) +BENCHMARK_CAPTURE(BM_False, Start, genStart) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Neg, End, genEnd) +BENCHMARK_CAPTURE(BM_False, End__, genEnd) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Neg, Mid, genMid) +BENCHMARK_CAPTURE(BM_False, Mid__, genMid) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX); -BENCHMARK_CAPTURE(BM_Neg, End, genBoth) +BENCHMARK_CAPTURE(BM_False, Both_, genBoth) ->RangeMultiplier(MAX_LIST_MUL) ->Range(MAX_LIST_MIN, MAX_LIST_MAX);