diff --git a/hpvm/test/CMakeLists.txt b/hpvm/test/CMakeLists.txt
index 5ffc073164b4d3d586725ce15665faaa5374c4b7..654197c16cf9c086d348e16cbc83e34130c3c39b 100644
--- a/hpvm/test/CMakeLists.txt
+++ b/hpvm/test/CMakeLists.txt
@@ -161,4 +161,7 @@ add_custom_target(hpvm-check)
 add_dependencies(hpvm-check check-hpvm)
 set_target_properties(hpvm-check PROPERTIES FOLDER "Tests")
 
+# HPVM-C benchmarks uses ctest instead of LLVM's test mechanism
+# because they are compiled in a custom way
+include(CTest)
 add_subdirectory(dnn_benchmarks/hpvm-c)
diff --git a/hpvm/test/dnn_benchmarks/hpvm-c/CMakeLists.txt b/hpvm/test/dnn_benchmarks/hpvm-c/CMakeLists.txt
index b19e62930bd3f72f11bd3091eaff2c7ff80da1e6..4d38998191ad93300d06d4b0e6f111fc5d97b85b 100644
--- a/hpvm/test/dnn_benchmarks/hpvm-c/CMakeLists.txt
+++ b/hpvm/test/dnn_benchmarks/hpvm-c/CMakeLists.txt
@@ -23,6 +23,8 @@ function(approxhpvm_py_codegen bin_filename src_filepath codegen_target)
       -t ${codegen_target} -I ${CONFIG_INCLUDE_DIR} ${ARGV}
   )
   add_custom_target(${bin_filename} DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${bin_filename})
+  add_test(NAME test_${bin_filename} COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${bin_filename})
+  set_tests_properties(test_${bin_filename} PROPERTIES RUN_SERIAL TRUE)
   set(test_compile_targets ${test_compile_targets} ${bin_filename} PARENT_SCOPE)
 endfunction(approxhpvm_py_codegen)
 
@@ -44,12 +46,8 @@ foreach(dir ${entries})
     --quant-file ${dir}/data/quant_ranges_rt.txt
     --conf-file ${dir}/data/tuner_confs.txt
   )
-  # Run tensor binary
-  run_single_benchmark(run_${dirname} ${dirname})
   # Generate "cudnn"-targeted code
   approxhpvm_py_codegen(${dirname}_cudnn ${dir}/${dirname}_cudnn.cpp cudnn)
-  # Run cudnn binary
-  run_single_benchmark(run_${dirname}_cudnn ${dirname}_cudnn)
 endforeach(dir)
 
 message(STATUS "List of test dnn benchmarks: ${test_compile_targets}")