[tint][wgsl] Migrate IR roundtrip fuzzer to be an IR fuzzer

Instead of a WGSL fuzzer.

Change-Id: I7f994e1b2baace90811a9a0351766e0a493b0390
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/162308
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/lang/wgsl/BUILD.cmake b/src/tint/lang/wgsl/BUILD.cmake
index 5c9aa4b..406ab8e 100644
--- a/src/tint/lang/wgsl/BUILD.cmake
+++ b/src/tint/lang/wgsl/BUILD.cmake
@@ -176,6 +176,7 @@
 
 tint_target_add_dependencies(tint_lang_wgsl_fuzz fuzz
   tint_api_common
+  tint_cmd_fuzz_ir_fuzz
   tint_lang_core
   tint_lang_core_constant
   tint_lang_core_ir
@@ -183,7 +184,6 @@
   tint_lang_wgsl
   tint_lang_wgsl_ast
   tint_lang_wgsl_common
-  tint_lang_wgsl_helpers
   tint_lang_wgsl_program
   tint_lang_wgsl_reader_lower
   tint_lang_wgsl_resolver
@@ -208,7 +208,6 @@
 
 if(TINT_BUILD_WGSL_READER)
   tint_target_add_dependencies(tint_lang_wgsl_fuzz fuzz
-    tint_cmd_fuzz_wgsl_fuzz
     tint_lang_wgsl_reader_parser
     tint_lang_wgsl_reader_program_to_ir
   )
diff --git a/src/tint/lang/wgsl/BUILD.gn b/src/tint/lang/wgsl/BUILD.gn
index 9aa5213..ce68bfa 100644
--- a/src/tint/lang/wgsl/BUILD.gn
+++ b/src/tint/lang/wgsl/BUILD.gn
@@ -150,6 +150,7 @@
   sources = []
   deps = [
     "${tint_src_dir}/api/common",
+    "${tint_src_dir}/cmd/fuzz/ir:fuzz",
     "${tint_src_dir}/lang/core",
     "${tint_src_dir}/lang/core/constant",
     "${tint_src_dir}/lang/core/ir",
@@ -157,7 +158,6 @@
     "${tint_src_dir}/lang/wgsl",
     "${tint_src_dir}/lang/wgsl/ast",
     "${tint_src_dir}/lang/wgsl/common",
-    "${tint_src_dir}/lang/wgsl/helpers",
     "${tint_src_dir}/lang/wgsl/program",
     "${tint_src_dir}/lang/wgsl/reader/lower",
     "${tint_src_dir}/lang/wgsl/resolver",
@@ -182,7 +182,6 @@
 
   if (tint_build_wgsl_reader) {
     deps += [
-      "${tint_src_dir}/cmd/fuzz/wgsl:fuzz",
       "${tint_src_dir}/lang/wgsl/reader/parser",
       "${tint_src_dir}/lang/wgsl/reader/program_to_ir",
     ]
diff --git a/src/tint/lang/wgsl/ir_roundtrip_fuzz.cc b/src/tint/lang/wgsl/ir_roundtrip_fuzz.cc
index 0ff0abe..12d97c1 100644
--- a/src/tint/lang/wgsl/ir_roundtrip_fuzz.cc
+++ b/src/tint/lang/wgsl/ir_roundtrip_fuzz.cc
@@ -29,9 +29,8 @@
 
 #include <iostream>
 
-#include "src/tint/cmd/fuzz/wgsl/fuzz.h"
+#include "src/tint/cmd/fuzz/ir/fuzz.h"
 #include "src/tint/lang/core/ir/disassembler.h"
-#include "src/tint/lang/wgsl/helpers/apply_substitute_overrides.h"
 #include "src/tint/lang/wgsl/reader/lower/lower.h"
 #include "src/tint/lang/wgsl/reader/parser/parser.h"
 #include "src/tint/lang/wgsl/reader/program_to_ir/program_to_ir.h"
@@ -40,57 +39,16 @@
 #include "src/tint/lang/wgsl/writer/writer.h"
 
 namespace tint::wgsl {
-namespace {
 
-bool IsUnsupported(const tint::ast::Enable* enable) {
-    for (auto ext : enable->extensions) {
-        switch (ext->name) {
-            case tint::wgsl::Extension::kChromiumExperimentalDp4A:
-            case tint::wgsl::Extension::kChromiumExperimentalFullPtrParameters:
-            case tint::wgsl::Extension::kChromiumExperimentalPixelLocal:
-            case tint::wgsl::Extension::kChromiumExperimentalPushConstant:
-            case tint::wgsl::Extension::kChromiumInternalDualSourceBlending:
-            case tint::wgsl::Extension::kChromiumInternalRelaxedUniformLayout:
-                return true;
-            default:
-                break;
-        }
-    }
-    return false;
-}
-
-}  // namespace
-
-void IRRoundtripFuzzer(const tint::Program& program) {
-    if (program.AST().Enables().Any(IsUnsupported)) {
-        return;
-    }
-
-    auto transformed = tint::wgsl::ApplySubstituteOverrides(program);
-    auto& src = transformed ? transformed.value() : program;
-    if (!src.IsValid()) {
-        return;
-    }
-
-    auto ir = tint::wgsl::reader::ProgramToIR(src);
-    if (!ir) {
-        TINT_ICE() << ir.Failure();
-        return;
-    }
-
-    if (auto res = tint::wgsl::reader::Lower(ir.Get()); !res) {
+void IRRoundtripFuzzer(core::ir::Module& ir) {
+    if (auto res = tint::wgsl::writer::Raise(ir); !res) {
         TINT_ICE() << res.Failure();
         return;
     }
 
-    if (auto res = tint::wgsl::writer::Raise(ir.Get()); !res) {
-        TINT_ICE() << res.Failure();
-        return;
-    }
-
-    auto dst = tint::wgsl::writer::IRToProgram(ir.Get());
+    auto dst = tint::wgsl::writer::IRToProgram(ir);
     if (!dst.IsValid()) {
-        std::cerr << "IR:\n" << core::ir::Disassemble(ir.Get()) << std::endl;
+        std::cerr << "IR:\n" << core::ir::Disassemble(ir) << std::endl;
         if (auto result = tint::wgsl::writer::Generate(dst, {}); result) {
             std::cerr << "WGSL:\n" << result->wgsl << std::endl << std::endl;
         }
@@ -103,4 +61,4 @@
 
 }  // namespace tint::wgsl
 
-TINT_WGSL_PROGRAM_FUZZER(tint::wgsl::IRRoundtripFuzzer);
+TINT_IR_MODULE_FUZZER(tint::wgsl::IRRoundtripFuzzer);