diff --git a/core/math/math_basic.odin b/core/math/math_basic.odin index 4995ac9e3..fe7b07d98 100644 --- a/core/math/math_basic.odin +++ b/core/math/math_basic.odin @@ -1,15 +1,10 @@ //+build !js package math +import "core:intrinsics" + @(default_calling_convention="none") foreign _ { - @(link_name="llvm.sqrt.f16") - sqrt_f16 :: proc(x: f16) -> f16 --- - @(link_name="llvm.sqrt.f32") - sqrt_f32 :: proc(x: f32) -> f32 --- - @(link_name="llvm.sqrt.f64") - sqrt_f64 :: proc(x: f64) -> f64 --- - @(link_name="llvm.sin.f16") sin_f16 :: proc(θ: f16) -> f16 --- @(link_name="llvm.sin.f32") @@ -52,3 +47,13 @@ foreign _ { @(link_name="llvm.exp.f64") exp_f64 :: proc(x: f64) -> f64 --- } + +sqrt_f16 :: proc "contextless" (x: f16) -> f16 { + return intrinsics.sqrt(x) +} +sqrt_f32 :: proc "contextless" (x: f32) -> f32 { + return intrinsics.sqrt(x) +} +sqrt_f64 :: proc "contextless" (x: f64) -> f64 { + return intrinsics.sqrt(x) +} diff --git a/core/math/math_js.odin b/core/math/math_js.odin index 4d91b440c..06c8b636d 100644 --- a/core/math/math_js.odin +++ b/core/math/math_js.odin @@ -1,12 +1,12 @@ //+build js package math +import "core:intrinsics" + foreign import "odin_env" @(default_calling_convention="c") foreign odin_env { - @(link_name="sqrt") - sqrt_f64 :: proc(x: f64) -> f64 --- @(link_name="sin") sin_f64 :: proc(θ: f64) -> f64 --- @(link_name="cos") @@ -21,6 +21,9 @@ foreign odin_env { exp_f64 :: proc(x: f64) -> f64 --- } +sqrt_f64 :: proc "contextless" (x: f64) -> f64 { + return intrinsics.sqrt(x) +} sqrt_f16 :: proc "c" (x: f16) -> f16 { return f16(sqrt_f64(f64(x))) } sin_f16 :: proc "c" (θ: f16) -> f16 { return f16(sin_f64(f64(θ))) }