diff --git a/src/fuzzers/BUILD.gn b/src/fuzzers/BUILD.gn
index 7c8e3dd..76d8f9f 100644
--- a/src/fuzzers/BUILD.gn
+++ b/src/fuzzers/BUILD.gn
@@ -104,24 +104,6 @@
   asan_options = [ "allow_user_segv_handler=1" ]
 }
 
-# TODO(rharrison): Remove asan_options once signal trap is no longer
-#                  needed.
-# Uses Dawn specific options and varies input data
-dawn_fuzzer_test("dawn_spirv_cross_hlsl_fast_fuzzer") {
-  sources = [ "DawnSPIRVCrossHLSLFastFuzzer.cpp" ]
-  deps = [ ":dawn_spirv_cross_fuzzer_common" ]
-  asan_options = [ "allow_user_segv_handler=1" ]
-}
-
-# TODO(rharrison): Remove asan_options once signal trap is no longer
-#                  needed.
-# Uses Dawn specific options and varies input data
-dawn_fuzzer_test("dawn_spirv_cross_msl_fast_fuzzer") {
-  sources = [ "DawnSPIRVCrossMSLFastFuzzer.cpp" ]
-  deps = [ ":dawn_spirv_cross_fuzzer_common" ]
-  asan_options = [ "allow_user_segv_handler=1" ]
-}
-
 dawn_fuzzer_test("dawn_wire_server_and_frontend_fuzzer") {
   sources = [ "DawnWireServerAndFrontendFuzzer.cpp" ]
 
@@ -153,8 +135,6 @@
   testonly = true
   deps = [
     ":dawn_spirv_cross_glsl_fast_fuzzer",
-    ":dawn_spirv_cross_hlsl_fast_fuzzer",
-    ":dawn_spirv_cross_msl_fast_fuzzer",
     ":dawn_wire_server_and_frontend_fuzzer",
     ":dawn_wire_server_and_vulkan_backend_fuzzer",
   ]
diff --git a/src/fuzzers/DawnSPIRVCrossHLSLFastFuzzer.cpp b/src/fuzzers/DawnSPIRVCrossHLSLFastFuzzer.cpp
deleted file mode 100644
index d6154b5..0000000
--- a/src/fuzzers/DawnSPIRVCrossHLSLFastFuzzer.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2018 The Dawn Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstdint>
-#include <string>
-#include <vector>
-
-#include <spirv_hlsl.hpp>
-
-#include "DawnSPIRVCrossFuzzer.h"
-
-namespace {
-
-    int FuzzTask(const std::vector<uint32_t>& input) {
-        // Values come from ShaderModuleD3D12.cpp
-        spirv_cross::CompilerGLSL::Options options_glsl;
-        // Force all uninitialized variables to be 0, otherwise they will fail to compile
-        // by FXC.
-        options_glsl.force_zero_initialized_variables = true;
-
-        spirv_cross::CompilerHLSL::Options options_hlsl;
-        options_hlsl.shader_model = 51;
-        options_hlsl.point_coord_compat = true;
-        options_hlsl.point_size_compat = true;
-        options_hlsl.nonwritable_uav_texture_as_srv = true;
-
-        spirv_cross::CompilerHLSL compiler(input);
-        compiler.set_common_options(options_glsl);
-        compiler.set_hlsl_options(options_hlsl);
-        compiler.compile();
-
-        return 0;
-    }
-}  // namespace
-
-extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
-    return 0;
-}
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-    return DawnSPIRVCrossFuzzer::Run(data, size, FuzzTask);
-}
diff --git a/src/fuzzers/DawnSPIRVCrossMSLFastFuzzer.cpp b/src/fuzzers/DawnSPIRVCrossMSLFastFuzzer.cpp
deleted file mode 100644
index 4649d23..0000000
--- a/src/fuzzers/DawnSPIRVCrossMSLFastFuzzer.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2018 The Dawn Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-#include <cstdint>
-#include <string>
-#include <vector>
-
-#include <spirv_msl.hpp>
-
-#include "DawnSPIRVCrossFuzzer.h"
-
-namespace {
-
-    int FuzzTask(const std::vector<uint32_t>& input) {
-        // Values come from ShaderModuleMTL.mm
-        spirv_cross::CompilerMSL::Options options_msl;
-        options_msl.enable_point_size_builtin = false;
-        options_msl.buffer_size_buffer_index = 30;
-
-        spirv_cross::CompilerMSL compiler(input);
-        compiler.set_msl_options(options_msl);
-        compiler.compile();
-
-        return 0;
-    }
-
-}  // namespace
-
-extern "C" int LLVMFuzzerInitialize(int* argc, char*** argv) {
-    return 0;
-}
-
-extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
-    return DawnSPIRVCrossFuzzer::Run(data, size, FuzzTask);
-}
