xref: /aosp_15_r20/external/libcxx/utils/google-benchmark/src/benchmark_register.h (revision 58b9f456b02922dfdb1fad8a988d5fd8765ecb80)
1*58b9f456SAndroid Build Coastguard Worker #ifndef BENCHMARK_REGISTER_H
2*58b9f456SAndroid Build Coastguard Worker #define BENCHMARK_REGISTER_H
3*58b9f456SAndroid Build Coastguard Worker 
4*58b9f456SAndroid Build Coastguard Worker #include <vector>
5*58b9f456SAndroid Build Coastguard Worker 
6*58b9f456SAndroid Build Coastguard Worker #include "check.h"
7*58b9f456SAndroid Build Coastguard Worker 
8*58b9f456SAndroid Build Coastguard Worker template <typename T>
AddRange(std::vector<T> * dst,T lo,T hi,int mult)9*58b9f456SAndroid Build Coastguard Worker void AddRange(std::vector<T>* dst, T lo, T hi, int mult) {
10*58b9f456SAndroid Build Coastguard Worker   CHECK_GE(lo, 0);
11*58b9f456SAndroid Build Coastguard Worker   CHECK_GE(hi, lo);
12*58b9f456SAndroid Build Coastguard Worker   CHECK_GE(mult, 2);
13*58b9f456SAndroid Build Coastguard Worker 
14*58b9f456SAndroid Build Coastguard Worker   // Add "lo"
15*58b9f456SAndroid Build Coastguard Worker   dst->push_back(lo);
16*58b9f456SAndroid Build Coastguard Worker 
17*58b9f456SAndroid Build Coastguard Worker   static const T kmax = std::numeric_limits<T>::max();
18*58b9f456SAndroid Build Coastguard Worker 
19*58b9f456SAndroid Build Coastguard Worker   // Now space out the benchmarks in multiples of "mult"
20*58b9f456SAndroid Build Coastguard Worker   for (T i = 1; i < kmax / mult; i *= mult) {
21*58b9f456SAndroid Build Coastguard Worker     if (i >= hi) break;
22*58b9f456SAndroid Build Coastguard Worker     if (i > lo) {
23*58b9f456SAndroid Build Coastguard Worker       dst->push_back(i);
24*58b9f456SAndroid Build Coastguard Worker     }
25*58b9f456SAndroid Build Coastguard Worker   }
26*58b9f456SAndroid Build Coastguard Worker 
27*58b9f456SAndroid Build Coastguard Worker   // Add "hi" (if different from "lo")
28*58b9f456SAndroid Build Coastguard Worker   if (hi != lo) {
29*58b9f456SAndroid Build Coastguard Worker     dst->push_back(hi);
30*58b9f456SAndroid Build Coastguard Worker   }
31*58b9f456SAndroid Build Coastguard Worker }
32*58b9f456SAndroid Build Coastguard Worker 
33*58b9f456SAndroid Build Coastguard Worker #endif  // BENCHMARK_REGISTER_H
34