diff --git a/mlir/CMakeLists.txt b/mlir/CMakeLists.txt --- a/mlir/CMakeLists.txt +++ b/mlir/CMakeLists.txt @@ -188,3 +188,34 @@ endif() add_subdirectory(cmake/modules) + +#============================================================================== +# Build Google Benchmark +#============================================================================== +set(GOOGLE_BENCHMARK_TARGET_FLAGS ${BENCHMARK_DIALECT_FLAG}) +if (MLIR_BENCHMARK_GCC_TOOLCHAIN) + set(GOOGLE_BENCHMARK_TARGET_FLAGS + --gcc-toolchain=${MLIR_BENCHMARK_GCC_TOOLCHAIN}) +endif() +string(REPLACE ";" " " GOOGLE_BENCHMARK_TARGET_FLAGS "${GOOGLE_BENCHMARK_TARGET_FLAGS}") + +ExternalProject_Add(google-benchmark + EXCLUDE_FROM_ALL ON + PREFIX google-benchmark + SOURCE_DIR ${MLIR_SOURCE_DIR}/../llvm/utils/benchmark + INSTALL_DIR ${CMAKE_CURRENT_BINARY_DIR}/google-benchmark + CMAKE_CACHE_ARGS + -DBUILD_SHARED_LIBS:BOOL=OFF + -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON + -DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER} + -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} + -DCMAKE_CXX_FLAGS:STRING=${GOOGLE_BENCHMARK_TARGET_FLAGS} + -DCMAKE_CXX_STANDARD:STRING=14 + -DCMAKE_BUILD_TYPE:STRING=RELEASE + -DCMAKE_INSTALL_PREFIX:PATH= + -DBENCHMARK_ENABLE_TESTING:BOOL=OFF) + +set(GOOGLE_BENCHMARK_MLIR_INSTALL ${CMAKE_CURRENT_BINARY_DIR}/google-benchmark) +set(GOOGLE_BENCHMARK_LINK_FLAGS -L${GOOGLE_BENCHMARK_MLIR_INSTALL}/lib/) + +add_subdirectory(benchmarks) \ No newline at end of file diff --git a/mlir/benchmarks/CMakeLists.txt b/mlir/benchmarks/CMakeLists.txt new file mode 100644 --- /dev/null +++ b/mlir/benchmarks/CMakeLists.txt @@ -0,0 +1,4 @@ +set(LLVM_LINK_COMPONENTS + Support) + +add_benchmark(MLIRStarter MLIRStarter.cpp) diff --git a/mlir/benchmarks/MLIRStarter.cpp b/mlir/benchmarks/MLIRStarter.cpp new file mode 100644 --- /dev/null +++ b/mlir/benchmarks/MLIRStarter.cpp @@ -0,0 +1,11 @@ +#include "benchmark/benchmark.h" + +static void BM_MLIRStarter(benchmark::State &state) { + std::string x = "hello"; + for (auto _ : state) { + std::string copy(x); + } +} +BENCHMARK(BM_MLIRStarter); + +BENCHMARK_MAIN();