Import Tint changes from Dawn
Changes:
- 51249b83e664c3983e2ae5112d2570867ea5bb96 tint/hlsl: don't use min16float to implement quantizeToF16 by Antonio Maiorano <amaiorano@google.com>
GitOrigin-RevId: 51249b83e664c3983e2ae5112d2570867ea5bb96
Change-Id: Ic639809f49d5538d394a76c404064bb13676dbd1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/125961
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
diff --git a/src/tint/writer/hlsl/generator_impl.cc b/src/tint/writer/hlsl/generator_impl.cc
index 2c4279c..9ea120c 100644
--- a/src/tint/writer/hlsl/generator_impl.cc
+++ b/src/tint/writer/hlsl/generator_impl.cc
@@ -2106,12 +2106,13 @@
bool GeneratorImpl::EmitQuantizeToF16Call(utils::StringStream& out,
const ast::CallExpression* expr,
const sem::Builtin* builtin) {
- // Emulate by casting to min16float and back again.
+ // Cast to f16 and back
std::string width;
if (auto* vec = builtin->ReturnType()->As<type::Vector>()) {
width = std::to_string(vec->Width());
}
- out << "float" << width << "(min16float" << width << "(";
+ out << "f16tof32(f32tof16"
+ << "(";
if (!EmitExpression(out, expr->args[0])) {
return false;
}
diff --git a/src/tint/writer/hlsl/generator_impl_import_test.cc b/src/tint/writer/hlsl/generator_impl_import_test.cc
index 3fbad50..ed41b32 100644
--- a/src/tint/writer/hlsl/generator_impl_import_test.cc
+++ b/src/tint/writer/hlsl/generator_impl_import_test.cc
@@ -275,7 +275,7 @@
utils::StringStream out;
ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
- EXPECT_EQ(out.str(), std::string("float(min16float(v))"));
+ EXPECT_EQ(out.str(), std::string("f16tof32(f32tof16(v))"));
}
TEST_F(HlslGeneratorImplTest_Import, HlslImportData_QuantizeToF16_Vector) {
@@ -288,7 +288,7 @@
utils::StringStream out;
ASSERT_TRUE(gen.EmitCall(out, expr)) << gen.error();
- EXPECT_EQ(out.str(), std::string("float3(min16float3(v))"));
+ EXPECT_EQ(out.str(), std::string("f16tof32(f32tof16(v))"));
}
} // namespace