Skip to content

Commit e3f08b3

Browse files
committed
Auto merge of rust-lang#127027 - tgross35:f16-f128-math, r=<try>
Add `f16` and `f128` math functions This adds intrinsics and math functions for `f16` and `f128` floating point types. Support is quite limited and some things are broken so tests don't run on many platforms, but this provides a starting point. Checks will fail until rust-lang#126636 makes it to beta, which should be next week (July 19). try-job: aarch64-gnu
2 parents 032be6f + 858669f commit e3f08b3

File tree

12 files changed

+3717
-100
lines changed

12 files changed

+3717
-100
lines changed

compiler/rustc_codegen_llvm/src/context.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -778,10 +778,10 @@ impl<'ll> CodegenCx<'ll, '_> {
778778
ifn!("llvm.debugtrap", fn() -> void);
779779
ifn!("llvm.frameaddress", fn(t_i32) -> ptr);
780780

781-
ifn!("llvm.powi.f16", fn(t_f16, t_i32) -> t_f16);
782-
ifn!("llvm.powi.f32", fn(t_f32, t_i32) -> t_f32);
783-
ifn!("llvm.powi.f64", fn(t_f64, t_i32) -> t_f64);
784-
ifn!("llvm.powi.f128", fn(t_f128, t_i32) -> t_f128);
781+
ifn!("llvm.powi.f16.i32", fn(t_f16, t_i32) -> t_f16);
782+
ifn!("llvm.powi.f32.i32", fn(t_f32, t_i32) -> t_f32);
783+
ifn!("llvm.powi.f64.i32", fn(t_f64, t_i32) -> t_f64);
784+
ifn!("llvm.powi.f128.i32", fn(t_f128, t_i32) -> t_f128);
785785

786786
ifn!("llvm.pow.f16", fn(t_f16, t_f16) -> t_f16);
787787
ifn!("llvm.pow.f32", fn(t_f32, t_f32) -> t_f32);

compiler/rustc_codegen_llvm/src/intrinsic.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ fn get_simple_intrinsic<'ll>(
3535
sym::sqrtf64 => "llvm.sqrt.f64",
3636
sym::sqrtf128 => "llvm.sqrt.f128",
3737

38-
sym::powif16 => "llvm.powi.f16",
39-
sym::powif32 => "llvm.powi.f32",
40-
sym::powif64 => "llvm.powi.f64",
41-
sym::powif128 => "llvm.powi.f128",
38+
sym::powif16 => "llvm.powi.f16.i32",
39+
sym::powif32 => "llvm.powi.f32.i32",
40+
sym::powif64 => "llvm.powi.f64.i32",
41+
sym::powif128 => "llvm.powi.f128.i32",
4242

4343
sym::sinf16 => "llvm.sin.f16",
4444
sym::sinf32 => "llvm.sin.f32",

0 commit comments

Comments
 (0)