diff --git a/src/tint/lang/glsl/writer/writer_bench.cc b/src/tint/lang/glsl/writer/writer_bench.cc
index 659adb9..2b54db8 100644
--- a/src/tint/lang/glsl/writer/writer_bench.cc
+++ b/src/tint/lang/glsl/writer/writer_bench.cc
@@ -35,7 +35,7 @@
 namespace tint::glsl::writer {
 namespace {
 
-void GenerateGLSL(benchmark::State& state, std::string input_name) {
+void GenerateGLSL_AST(benchmark::State& state, std::string input_name) {
     auto res = bench::GetWgslProgram(input_name);
     if (res != Success) {
         state.SkipWithError(res.Failure().reason.Str());
@@ -59,7 +59,7 @@
     }
 }
 
-TINT_BENCHMARK_PROGRAMS(GenerateGLSL);
+TINT_BENCHMARK_PROGRAMS(GenerateGLSL_AST);
 
 }  // namespace
 }  // namespace tint::glsl::writer
diff --git a/src/tint/lang/hlsl/writer/writer_bench.cc b/src/tint/lang/hlsl/writer/writer_bench.cc
index f84d151..33db1c0 100644
--- a/src/tint/lang/hlsl/writer/writer_bench.cc
+++ b/src/tint/lang/hlsl/writer/writer_bench.cc
@@ -33,7 +33,7 @@
 namespace tint::hlsl::writer {
 namespace {
 
-void GenerateHLSL(benchmark::State& state, std::string input_name) {
+void GenerateHLSL_AST(benchmark::State& state, std::string input_name) {
     auto res = bench::GetWgslProgram(input_name);
     if (res != Success) {
         state.SkipWithError(res.Failure().reason.Str());
@@ -47,7 +47,7 @@
     }
 }
 
-TINT_BENCHMARK_PROGRAMS(GenerateHLSL);
+TINT_BENCHMARK_PROGRAMS(GenerateHLSL_AST);
 
 }  // namespace
 }  // namespace tint::hlsl::writer
diff --git a/src/tint/lang/msl/writer/writer_bench.cc b/src/tint/lang/msl/writer/writer_bench.cc
index e9f30ae..1ea4f19 100644
--- a/src/tint/lang/msl/writer/writer_bench.cc
+++ b/src/tint/lang/msl/writer/writer_bench.cc
@@ -36,7 +36,7 @@
 namespace tint::msl::writer {
 namespace {
 
-void GenerateMSL(benchmark::State& state, std::string input_name) {
+void GenerateMSL_AST(benchmark::State& state, std::string input_name) {
     auto res = bench::GetWgslProgram(input_name);
     if (res != Success) {
         state.SkipWithError(res.Failure().reason.Str());
@@ -72,7 +72,7 @@
     }
 }
 
-TINT_BENCHMARK_PROGRAMS(GenerateMSL);
+TINT_BENCHMARK_PROGRAMS(GenerateMSL_AST);
 
 }  // namespace
 }  // namespace tint::msl::writer
diff --git a/src/tint/lang/spirv/writer/writer_bench.cc b/src/tint/lang/spirv/writer/writer_bench.cc
index a89e10d..813f32f 100644
--- a/src/tint/lang/spirv/writer/writer_bench.cc
+++ b/src/tint/lang/spirv/writer/writer_bench.cc
@@ -29,10 +29,7 @@
 
 #include "src/tint/cmd/bench/bench.h"
 #include "src/tint/lang/spirv/writer/writer.h"
-
-#if TINT_BUILD_WGSL_READER
 #include "src/tint/lang/wgsl/reader/reader.h"
-#endif  // TINT_BUILD_WGSL_READER
 
 #if TINT_BUILD_IS_MSVC
 #if _MSC_VER > 1930 && _MSC_VER < 1939
@@ -52,21 +49,6 @@
         return;
     }
     for (auto _ : state) {
-        auto gen_res = Generate(res->program, {});
-        if (gen_res != Success) {
-            state.SkipWithError(gen_res.Failure().reason.Str());
-        }
-    }
-}
-
-void GenerateSPIRV_UseIR(benchmark::State& state, std::string input_name) {
-#if TINT_BUILD_WGSL_READER
-    auto res = bench::GetWgslProgram(input_name);
-    if (res != Success) {
-        state.SkipWithError(res.Failure().reason.Str());
-        return;
-    }
-    for (auto _ : state) {
         // Convert the AST program to an IR module.
         auto ir = tint::wgsl::reader::ProgramToLoweredIR(res->program);
         if (ir != Success) {
@@ -79,13 +61,9 @@
             state.SkipWithError(gen_res.Failure().reason.Str());
         }
     }
-#else
-#error "WGSL Reader is required to build IR generator"
-#endif  // TINT_BUILD_WGSL_READER
 }
 
 TINT_BENCHMARK_PROGRAMS(GenerateSPIRV);
-TINT_BENCHMARK_PROGRAMS(GenerateSPIRV_UseIR);
 
 }  // namespace
 }  // namespace tint::spirv::writer
