From 0293651ba5b51aae3a01d18d35969caee891f510 Mon Sep 17 00:00:00 2001 From: Ashley Ruglys Date: Fri, 8 Jul 2022 13:41:20 +0200 Subject: [PATCH 1/2] Handle Unpack2x16float in hlsl --- src/back/hlsl/writer.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/back/hlsl/writer.rs b/src/back/hlsl/writer.rs index 39c9cdab75..e6e8b5c898 100644 --- a/src/back/hlsl/writer.rs +++ b/src/back/hlsl/writer.rs @@ -2422,6 +2422,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { enum Function { Asincosh { is_sin: bool }, Atanh, + Unpack2x16float, Regular(&'static str), MissingIntOverload(&'static str), } @@ -2489,6 +2490,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { Mf::ReverseBits => Function::MissingIntOverload("reversebits"), Mf::FindLsb => Function::Regular("firstbitlow"), Mf::FindMsb => Function::Regular("firstbithigh"), + Mf::Unpack2x16float => Function::Unpack2x16float, _ => return Err(Error::Unimplemented(format!("write_expr_math {:?}", fun))), }; @@ -2512,6 +2514,13 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { self.write_expr(module, arg, func_ctx)?; write!(self.out, "))")?; } + Function::Unpack2x16float => { + write!(self.out, "float2(f16tof32(")?; + self.write_expr(module, arg, func_ctx)?; + write!(self.out, "), f16tof32(")?; + self.write_expr(module, arg, func_ctx)?; + write!(self.out, " >> 16))")?; + } Function::Regular(fun_name) => { write!(self.out, "{}(", fun_name)?; self.write_expr(module, arg, func_ctx)?; From 705b73b7595b2a64b3b31ff2db951280efd675fe Mon Sep 17 00:00:00 2001 From: Ashley Ruglys Date: Fri, 8 Jul 2022 20:07:49 +0200 Subject: [PATCH 2/2] Add extra set of parens --- src/back/hlsl/writer.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/back/hlsl/writer.rs b/src/back/hlsl/writer.rs index e6e8b5c898..a37a89444a 100644 --- a/src/back/hlsl/writer.rs +++ b/src/back/hlsl/writer.rs @@ -2517,9 +2517,9 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { Function::Unpack2x16float => { write!(self.out, "float2(f16tof32(")?; self.write_expr(module, arg, func_ctx)?; - write!(self.out, "), f16tof32(")?; + write!(self.out, "), f16tof32((")?; self.write_expr(module, arg, func_ctx)?; - write!(self.out, " >> 16))")?; + write!(self.out, ") >> 16))")?; } Function::Regular(fun_name) => { write!(self.out, "{}(", fun_name)?;