[MIPS GlobalISel] Select MSA vector generic and builtin add
[llvm-complete.git] / utils / benchmark / test / filter_test.cc
blob0e27065c1558eff5797e52f631d24ed19c53d664
1 #include "benchmark/benchmark.h"
3 #include <cassert>
4 #include <cmath>
5 #include <cstdint>
6 #include <cstdlib>
8 #include <iostream>
9 #include <limits>
10 #include <sstream>
11 #include <string>
13 namespace {
15 class TestReporter : public benchmark::ConsoleReporter {
16 public:
17 virtual bool ReportContext(const Context& context) {
18 return ConsoleReporter::ReportContext(context);
21 virtual void ReportRuns(const std::vector<Run>& report) {
22 ++count_;
23 ConsoleReporter::ReportRuns(report);
26 TestReporter() : count_(0) {}
28 virtual ~TestReporter() {}
30 size_t GetCount() const { return count_; }
32 private:
33 mutable size_t count_;
36 } // end namespace
38 static void NoPrefix(benchmark::State& state) {
39 for (auto _ : state) {
42 BENCHMARK(NoPrefix);
44 static void BM_Foo(benchmark::State& state) {
45 for (auto _ : state) {
48 BENCHMARK(BM_Foo);
50 static void BM_Bar(benchmark::State& state) {
51 for (auto _ : state) {
54 BENCHMARK(BM_Bar);
56 static void BM_FooBar(benchmark::State& state) {
57 for (auto _ : state) {
60 BENCHMARK(BM_FooBar);
62 static void BM_FooBa(benchmark::State& state) {
63 for (auto _ : state) {
66 BENCHMARK(BM_FooBa);
68 int main(int argc, char **argv) {
69 bool list_only = false;
70 for (int i = 0; i < argc; ++i)
71 list_only |= std::string(argv[i]).find("--benchmark_list_tests") !=
72 std::string::npos;
74 benchmark::Initialize(&argc, argv);
76 TestReporter test_reporter;
77 const size_t returned_count =
78 benchmark::RunSpecifiedBenchmarks(&test_reporter);
80 if (argc == 2) {
81 // Make sure we ran all of the tests
82 std::stringstream ss(argv[1]);
83 size_t expected_return;
84 ss >> expected_return;
86 if (returned_count != expected_return) {
87 std::cerr << "ERROR: Expected " << expected_return
88 << " tests to match the filter but returned_count = "
89 << returned_count << std::endl;
90 return -1;
93 const size_t expected_reports = list_only ? 0 : expected_return;
94 const size_t reports_count = test_reporter.GetCount();
95 if (reports_count != expected_reports) {
96 std::cerr << "ERROR: Expected " << expected_reports
97 << " tests to be run but reported_count = " << reports_count
98 << std::endl;
99 return -1;
103 return 0;