Skip to content

Commit 24e9a5b

Browse files
committed
Add support for fmaf16
1 parent 10d745c commit 24e9a5b

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/intrinsic/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ use rustc_codegen_ssa::mir::place::{PlaceRef, PlaceValue};
1616
use rustc_codegen_ssa::traits::{
1717
ArgAbiBuilderMethods, BuilderMethods, ConstCodegenMethods, IntrinsicCallBuilderMethods,
1818
};
19+
use rustc_codegen_ssa::traits::BaseTypeCodegenMethods;
1920
#[cfg(feature = "master")]
20-
use rustc_codegen_ssa::traits::{BaseTypeCodegenMethods, MiscCodegenMethods};
21+
use rustc_codegen_ssa::traits::MiscCodegenMethods;
2122
use rustc_middle::bug;
2223
#[cfg(feature = "master")]
2324
use rustc_middle::ty::layout::{FnAbiOf, HasTyCtxt};
@@ -139,6 +140,17 @@ impl<'a, 'gcc, 'tcx> IntrinsicCallBuilderMethods<'tcx> for Builder<'a, 'gcc, 'tc
139140
&args.iter().map(|arg| arg.immediate()).collect::<Vec<_>>(),
140141
)
141142
}
143+
sym::fmaf16 => {
144+
let func = self.cx.context.get_builtin_function("fmaf");
145+
let args: Vec<_> = args
146+
.iter()
147+
.map(|arg| {
148+
self.cx.context.new_cast(self.location, arg.immediate(), self.cx.type_f32())
149+
})
150+
.collect();
151+
let result = self.cx.context.new_call(self.location, func, &args);
152+
self.cx.context.new_cast(self.location, result, self.cx.type_f16())
153+
}
142154
sym::is_val_statically_known => {
143155
let a = args[0].immediate();
144156
let builtin = self.context.get_builtin_function("__builtin_constant_p");

0 commit comments

Comments
 (0)