[glsl][ir] Emit pass through builtin call functions.
This CL adds the `CoreBuiltinCall` instruction to the GLSL IR backend.
Bug: 42251044
Change-Id: Id852833e2b0f475054e0e1726323226fb722ecca
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/204476
Commit-Queue: James Price <jrprice@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/src/tint/lang/glsl/writer/BUILD.bazel b/src/tint/lang/glsl/writer/BUILD.bazel
index 3ae0bcf..27ea102 100644
--- a/src/tint/lang/glsl/writer/BUILD.bazel
+++ b/src/tint/lang/glsl/writer/BUILD.bazel
@@ -88,6 +88,7 @@
name = "test",
alwayslink = True,
srcs = [
+ "builtin_test.cc",
"call_test.cc",
"constant_test.cc",
"function_test.cc",
diff --git a/src/tint/lang/glsl/writer/BUILD.cmake b/src/tint/lang/glsl/writer/BUILD.cmake
index 4b6fa7c..267660d 100644
--- a/src/tint/lang/glsl/writer/BUILD.cmake
+++ b/src/tint/lang/glsl/writer/BUILD.cmake
@@ -102,6 +102,7 @@
# Condition: TINT_BUILD_GLSL_WRITER AND TINT_BUILD_GLSL_VALIDATOR
################################################################################
tint_add_target(tint_lang_glsl_writer_test test
+ lang/glsl/writer/builtin_test.cc
lang/glsl/writer/call_test.cc
lang/glsl/writer/constant_test.cc
lang/glsl/writer/function_test.cc
diff --git a/src/tint/lang/glsl/writer/BUILD.gn b/src/tint/lang/glsl/writer/BUILD.gn
index 04f5b02..e7fb0ff 100644
--- a/src/tint/lang/glsl/writer/BUILD.gn
+++ b/src/tint/lang/glsl/writer/BUILD.gn
@@ -92,6 +92,7 @@
if (tint_build_glsl_writer && tint_build_glsl_validator) {
tint_unittests_source_set("unittests") {
sources = [
+ "builtin_test.cc",
"call_test.cc",
"constant_test.cc",
"function_test.cc",
diff --git a/src/tint/lang/glsl/writer/builtin_test.cc b/src/tint/lang/glsl/writer/builtin_test.cc
new file mode 100644
index 0000000..13f6a27
--- /dev/null
+++ b/src/tint/lang/glsl/writer/builtin_test.cc
@@ -0,0 +1,72 @@
+// Copyright 2024 The Dawn & Tint Authors
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+//
+// 1. Redistributions of source code must retain the above copyright notice, this
+// list of conditions and the following disclaimer.
+//
+// 2. Redistributions in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// 3. Neither the name of the copyright holder nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#include "src/tint/lang/core/fluent_types.h"
+#include "src/tint/lang/core/ir/function.h"
+#include "src/tint/lang/core/number.h"
+#include "src/tint/lang/core/type/builtin_structs.h"
+#include "src/tint/lang/core/type/depth_multisampled_texture.h"
+#include "src/tint/lang/core/type/depth_texture.h"
+#include "src/tint/lang/core/type/multisampled_texture.h"
+#include "src/tint/lang/core/type/sampled_texture.h"
+#include "src/tint/lang/core/type/sampler.h"
+#include "src/tint/lang/core/type/sampler_kind.h"
+#include "src/tint/lang/core/type/storage_texture.h"
+#include "src/tint/lang/core/type/texture_dimension.h"
+#include "src/tint/lang/glsl/writer/helper_test.h"
+
+#include "gtest/gtest.h"
+
+using namespace tint::core::fluent_types; // NOLINT
+using namespace tint::core::number_suffixes; // NOLINT
+
+namespace tint::glsl::writer {
+namespace {
+
+TEST_F(GlslWriterTest, BuiltinGeneric) {
+ auto* func = b.Function("foo", ty.void_(), core::ir::Function::PipelineStage::kCompute);
+ func->SetWorkgroupSize(1, 1, 1);
+ b.Append(func->Block(), [&] {
+ auto* x = b.Let("x", 1_i);
+
+ auto* c = b.Call(ty.i32(), core::BuiltinFn::kAbs, x);
+ b.Let("w", c);
+ b.Return(func);
+ });
+
+ ASSERT_TRUE(Generate()) << err_ << output_.glsl;
+ EXPECT_EQ(output_.glsl, GlslHeader() + R"(
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ int x = 1;
+ int w = abs(x);
+}
+)");
+}
+
+} // namespace
+} // namespace tint::glsl::writer
diff --git a/src/tint/lang/glsl/writer/printer/BUILD.bazel b/src/tint/lang/glsl/writer/printer/BUILD.bazel
index 31f71a0..5899354 100644
--- a/src/tint/lang/glsl/writer/printer/BUILD.bazel
+++ b/src/tint/lang/glsl/writer/printer/BUILD.bazel
@@ -48,6 +48,7 @@
"//src/tint/api/common",
"//src/tint/lang/core",
"//src/tint/lang/core/constant",
+ "//src/tint/lang/core/intrinsic",
"//src/tint/lang/core/ir",
"//src/tint/lang/core/type",
"//src/tint/utils/containers",
diff --git a/src/tint/lang/glsl/writer/printer/BUILD.cmake b/src/tint/lang/glsl/writer/printer/BUILD.cmake
index efc7db1..2524044 100644
--- a/src/tint/lang/glsl/writer/printer/BUILD.cmake
+++ b/src/tint/lang/glsl/writer/printer/BUILD.cmake
@@ -49,6 +49,7 @@
tint_api_common
tint_lang_core
tint_lang_core_constant
+ tint_lang_core_intrinsic
tint_lang_core_ir
tint_lang_core_type
tint_utils_containers
diff --git a/src/tint/lang/glsl/writer/printer/BUILD.gn b/src/tint/lang/glsl/writer/printer/BUILD.gn
index cc7f687..e9b621c 100644
--- a/src/tint/lang/glsl/writer/printer/BUILD.gn
+++ b/src/tint/lang/glsl/writer/printer/BUILD.gn
@@ -49,6 +49,7 @@
"${tint_src_dir}/api/common",
"${tint_src_dir}/lang/core",
"${tint_src_dir}/lang/core/constant",
+ "${tint_src_dir}/lang/core/intrinsic",
"${tint_src_dir}/lang/core/ir",
"${tint_src_dir}/lang/core/type",
"${tint_src_dir}/utils/containers",
diff --git a/src/tint/lang/glsl/writer/printer/printer.cc b/src/tint/lang/glsl/writer/printer/printer.cc
index d3c554d..b8fbafa 100644
--- a/src/tint/lang/glsl/writer/printer/printer.cc
+++ b/src/tint/lang/glsl/writer/printer/printer.cc
@@ -30,11 +30,13 @@
#include <string>
#include <utility>
+#include "src/tint/lang/core/builtin_fn.h"
#include "src/tint/lang/core/constant/splat.h"
#include "src/tint/lang/core/ir/access.h"
#include "src/tint/lang/core/ir/bitcast.h"
#include "src/tint/lang/core/ir/construct.h"
#include "src/tint/lang/core/ir/core_binary.h"
+#include "src/tint/lang/core/ir/core_builtin_call.h"
#include "src/tint/lang/core/ir/core_unary.h"
#include "src/tint/lang/core/ir/exit_if.h"
#include "src/tint/lang/core/ir/function.h"
@@ -81,11 +83,11 @@
public:
/// Constructor
/// @param module the Tint IR module to generate
- explicit Printer(core::ir::Module& module) : ir_(module) {}
-
/// @param version the GLSL version information
+ Printer(core::ir::Module& module, const Version& version) : ir_(module), version_(version) {}
+
/// @returns the generated GLSL shader
- tint::Result<std::string> Generate(const Version& version) {
+ tint::Result<std::string> Generate() {
auto valid = core::ir::ValidateAndDumpIfNeeded(ir_, "GLSL writer");
if (valid != Success) {
return std::move(valid.Failure());
@@ -95,8 +97,8 @@
TINT_SCOPED_ASSIGNMENT(current_buffer_, &preamble_buffer_);
auto out = Line();
- out << "#version " << version.major_version << version.minor_version << "0";
- if (version.IsES()) {
+ out << "#version " << version_.major_version << version_.minor_version << "0";
+ if (version_.IsES()) {
out << " es";
}
}
@@ -117,6 +119,8 @@
private:
core::ir::Module& ir_;
+ const Version& version_;
+
/// The buffer holding preamble text
TextBuffer preamble_buffer_;
@@ -558,6 +562,7 @@
[&](const core::ir::InstructionResult* r) {
tint::Switch(
r->Instruction(), //
+ [&](const core::ir::CoreBuiltinCall* c) { EmitCoreBuiltinCall(out, c); },
[&](const core::ir::Let* l) { out << NameOf(l->Result(0)); },
[&](const core::ir::UserCall* c) { EmitUserCall(out, c); },
[&](const core::ir::Var* var) { out << NameOf(var->Result(0)); },
@@ -569,6 +574,164 @@
TINT_ICE_ON_NO_MATCH);
}
+ void EmitCoreBuiltinCall(StringStream& out, const core::ir::CoreBuiltinCall* c) {
+ EmitCoreBuiltinName(out, c->Func());
+
+ ScopedParen sp(out);
+ size_t i = 0;
+ for (const auto* arg : c->Args()) {
+ if (i > 0) {
+ out << ", ";
+ }
+ ++i;
+
+ EmitValue(out, arg);
+ }
+ }
+
+ void EmitCoreBuiltinName(StringStream& out, core::BuiltinFn func) {
+ switch (func) {
+ case core::BuiltinFn::kAbs:
+ case core::BuiltinFn::kAcos:
+ case core::BuiltinFn::kAcosh:
+ case core::BuiltinFn::kAll:
+ case core::BuiltinFn::kAny:
+ case core::BuiltinFn::kAsin:
+ case core::BuiltinFn::kAsinh:
+ case core::BuiltinFn::kAtan:
+ case core::BuiltinFn::kAtanh:
+ case core::BuiltinFn::kCeil:
+ case core::BuiltinFn::kClamp:
+ case core::BuiltinFn::kCos:
+ case core::BuiltinFn::kCosh:
+ case core::BuiltinFn::kCross:
+ case core::BuiltinFn::kDeterminant:
+ case core::BuiltinFn::kDistance:
+ case core::BuiltinFn::kDot:
+ case core::BuiltinFn::kExp:
+ case core::BuiltinFn::kExp2:
+ case core::BuiltinFn::kFloor:
+ case core::BuiltinFn::kFrexp:
+ case core::BuiltinFn::kLdexp:
+ case core::BuiltinFn::kLength:
+ case core::BuiltinFn::kLog:
+ case core::BuiltinFn::kLog2:
+ case core::BuiltinFn::kMax:
+ case core::BuiltinFn::kMin:
+ case core::BuiltinFn::kModf:
+ case core::BuiltinFn::kNormalize:
+ case core::BuiltinFn::kPow:
+ case core::BuiltinFn::kReflect:
+ case core::BuiltinFn::kRefract:
+ case core::BuiltinFn::kRound:
+ case core::BuiltinFn::kSign:
+ case core::BuiltinFn::kSin:
+ case core::BuiltinFn::kSinh:
+ case core::BuiltinFn::kSqrt:
+ case core::BuiltinFn::kStep:
+ case core::BuiltinFn::kTan:
+ case core::BuiltinFn::kTanh:
+ case core::BuiltinFn::kTranspose:
+ case core::BuiltinFn::kTrunc:
+ out << func;
+ break;
+ case core::BuiltinFn::kAtan2:
+ out << "atan";
+ break;
+ case core::BuiltinFn::kCountOneBits:
+ out << "bitCount";
+ break;
+ case core::BuiltinFn::kDpdx:
+ out << "dFdx";
+ break;
+ case core::BuiltinFn::kDpdxCoarse:
+ if (version_.IsES()) {
+ out << "dFdx";
+ }
+ out << "dFdxCoarse";
+ break;
+ case core::BuiltinFn::kDpdxFine:
+ if (version_.IsES()) {
+ out << "dFdx";
+ }
+ out << "dFdxFine";
+ break;
+ case core::BuiltinFn::kDpdy:
+ out << "dFdy";
+ break;
+ case core::BuiltinFn::kDpdyCoarse:
+ if (version_.IsES()) {
+ out << "dFdy";
+ }
+ out << "dFdyCoarse";
+ break;
+ case core::BuiltinFn::kDpdyFine:
+ if (version_.IsES()) {
+ out << "dFdy";
+ }
+ out << "dFdyFine";
+ break;
+ case core::BuiltinFn::kFaceForward:
+ out << "faceforward";
+ break;
+ case core::BuiltinFn::kFract:
+ out << "fract";
+ break;
+ case core::BuiltinFn::kFma:
+ out << "fma";
+ break;
+ case core::BuiltinFn::kFwidth:
+ case core::BuiltinFn::kFwidthCoarse:
+ case core::BuiltinFn::kFwidthFine:
+ out << "fwidth";
+ break;
+ case core::BuiltinFn::kInverseSqrt:
+ out << "inversesqrt";
+ break;
+ case core::BuiltinFn::kMix:
+ out << "mix";
+ break;
+ case core::BuiltinFn::kPack2X16Float:
+ out << "packHalf2x16";
+ break;
+ case core::BuiltinFn::kPack2X16Snorm:
+ out << "packSnorm2x16";
+ break;
+ case core::BuiltinFn::kPack2X16Unorm:
+ out << "packUnorm2x16";
+ break;
+ case core::BuiltinFn::kPack4X8Snorm:
+ out << "packSnorm4x8";
+ break;
+ case core::BuiltinFn::kPack4X8Unorm:
+ out << "packUnorm4x8";
+ break;
+ case core::BuiltinFn::kReverseBits:
+ out << "bitfieldReverse";
+ break;
+ case core::BuiltinFn::kSmoothstep:
+ out << "smoothstep";
+ break;
+ case core::BuiltinFn::kUnpack2X16Float:
+ out << "unpackHalf2x16";
+ break;
+ case core::BuiltinFn::kUnpack2X16Snorm:
+ out << "unpackSnorm2x16";
+ break;
+ case core::BuiltinFn::kUnpack2X16Unorm:
+ out << "unpackUnorm2x16";
+ break;
+ case core::BuiltinFn::kUnpack4X8Snorm:
+ out << "unpackSnorm4x8";
+ break;
+ case core::BuiltinFn::kUnpack4X8Unorm:
+ out << "unpackUnorm4x8";
+ break;
+ default:
+ TINT_UNREACHABLE() << "unhandled core builtin: " << func;
+ }
+ }
+
/// Emits a user call instruction
void EmitUserCall(StringStream& out, const core::ir::UserCall* c) {
out << NameOf(c->Target()) << "(";
@@ -677,7 +840,7 @@
} // namespace
Result<std::string> Print(core::ir::Module& module, const Version& version) {
- return Printer{module}.Generate(version);
+ return Printer{module, version}.Generate();
}
} // namespace tint::glsl::writer
diff --git a/test/tint/bug/tint/1332.wgsl.expected.ir.glsl b/test/tint/bug/tint/1332.wgsl.expected.ir.glsl
index 6c6485e..8b3b631 100644
--- a/test/tint/bug/tint/1332.wgsl.expected.ir.glsl
+++ b/test/tint/bug/tint/1332.wgsl.expected.ir.glsl
@@ -1,11 +1,7 @@
-SKIP: FAILED
+#version 310 es
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
+layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
+void main() {
+ float a = 1.24000000953674316406f;
+ float b = max(a, 1.17549435e-38f);
+}
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.ir.glsl
deleted file mode 100644
index b02d7ef..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Let
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.ir.glsl
deleted file mode 100644
index b02d7ef..0000000
--- a/test/tint/unittest/reader/spirv/Samples_SpvParserTest_GlslStd450_DataPacking_Valid_1.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Let
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_0.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_0.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_0.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_1.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_1.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_1.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_15.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_15.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_15.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_16.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_16.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_16.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_17.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_17.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_17.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_2.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_2.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_2.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_24.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_24.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_24.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_25.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_25.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_25.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_26.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_26.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_26.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_3.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_3.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_3.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_4.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_4.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_4.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_5.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_5.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_5.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_6.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_6.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_6.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_7.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_7.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_7.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_8.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_8.spvasm.expected.ir.glsl
deleted file mode 100644
index 6c6485e..0000000
--- a/test/tint/unittest/reader/spirv/SpvBinaryDerivativeTest_SpvBinaryDerivativeTest_Derivatives_8.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::CoreBuiltinCall
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction
diff --git a/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector4.spvasm.expected.ir.glsl b/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector4.spvasm.expected.ir.glsl
deleted file mode 100644
index b02d7ef..0000000
--- a/test/tint/unittest/reader/spirv/SpvParserTest_Normalize_Vector4.spvasm.expected.ir.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-SKIP: FAILED
-
-<dawn>/src/tint/lang/glsl/writer/printer/printer.cc:482 internal compiler error: Switch() matched no cases. Type: tint::core::ir::Let
-********************************************************************
-* The tint shader compiler has encountered an unexpected error. *
-* *
-* Please help us fix this issue by submitting a bug report at *
-* crbug.com/tint with the source program that triggered the bug. *
-********************************************************************
-
-tint executable returned error: signal: illegal instruction