mirror of
https://github.com/ziglang/zig.git
synced 2026-02-12 20:37:54 +00:00
compiler-rt: inline sin and cos into sincos
This avoids the optimizer turning sincos into a recursive call to itself.
This commit is contained in:
parent
0ffe82e624
commit
0b2ed45f5f
@ -1,24 +1,27 @@
|
||||
const sin = @import("sin.zig");
|
||||
const cos = @import("cos.zig");
|
||||
|
||||
pub fn __sincosh(a: f16, r_sin: *f16, r_cos: *f16) callconv(.C) void {
|
||||
r_sin.* = @sin(a);
|
||||
r_cos.* = @cos(a);
|
||||
r_sin.* = sin.__sinh(a);
|
||||
r_cos.* = cos.__cosh(a);
|
||||
}
|
||||
|
||||
pub fn sincosf(a: f32, r_sin: *f32, r_cos: *f32) callconv(.C) void {
|
||||
r_sin.* = @sin(a);
|
||||
r_cos.* = @cos(a);
|
||||
r_sin.* = sin.sinf(a);
|
||||
r_cos.* = cos.cosf(a);
|
||||
}
|
||||
|
||||
pub fn sincos(a: f64, r_sin: *f64, r_cos: *f64) callconv(.C) void {
|
||||
r_sin.* = @sin(a);
|
||||
r_cos.* = @cos(a);
|
||||
r_sin.* = sin.sin(a);
|
||||
r_cos.* = cos.cos(a);
|
||||
}
|
||||
|
||||
pub fn __sincosx(a: f80, r_sin: *f80, r_cos: *f80) callconv(.C) void {
|
||||
r_sin.* = @sin(a);
|
||||
r_cos.* = @cos(a);
|
||||
r_sin.* = sin.__sinx(a);
|
||||
r_cos.* = cos.__cosx(a);
|
||||
}
|
||||
|
||||
pub fn sincosq(a: f128, r_sin: *f128, r_cos: *f128) callconv(.C) void {
|
||||
r_sin.* = @sin(a);
|
||||
r_cos.* = @cos(a);
|
||||
r_sin.* = sin.sinq(a);
|
||||
r_cos.* = cos.cosq(a);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user