diff options
| author | gingerBill <bill@gingerbill.org> | 2021-04-25 20:22:26 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-04-25 20:22:26 +0100 |
| commit | 72aa0e6e3891c034863476751b2aefda781de5b2 (patch) | |
| tree | fc49f4821dcb900a30d472803e5340587c1cd65a /core/runtime/internal.odin | |
| parent | cb2e6ea31db90ca80314e5ff8ce8f43371fade7c (diff) | |
Replace many `foreign` llvm calls with intrinsics
Diffstat (limited to 'core/runtime/internal.odin')
| -rw-r--r-- | core/runtime/internal.odin | 45 |
1 files changed, 9 insertions, 36 deletions
diff --git a/core/runtime/internal.odin b/core/runtime/internal.odin index e2f8c7287..0e128567a 100644 --- a/core/runtime/internal.odin +++ b/core/runtime/internal.odin @@ -415,59 +415,32 @@ foreign { @(link_name="llvm.sqrt.f64") _sqrt_f64 :: proc(x: f64) -> f64 --- } abs_f16 :: #force_inline proc "contextless" (x: f16) -> f16 { - foreign { - @(link_name="llvm.fabs.f16") _abs :: proc "none" (x: f16) -> f16 --- - } - return _abs(x); + return -x if x < 0 else x; } abs_f32 :: #force_inline proc "contextless" (x: f32) -> f32 { - foreign { - @(link_name="llvm.fabs.f32") _abs :: proc "none" (x: f32) -> f32 --- - } - return _abs(x); + return -x if x < 0 else x; } abs_f64 :: #force_inline proc "contextless" (x: f64) -> f64 { - foreign { - @(link_name="llvm.fabs.f64") _abs :: proc "none" (x: f64) -> f64 --- - } - return _abs(x); + return -x if x < 0 else x; } min_f16 :: proc(a, b: f16) -> f16 { - foreign { - @(link_name="llvm.minnum.f16") _min :: proc "none" (a, b: f16) -> f16 --- - } - return _min(a, b); + return a if a < b else b; } min_f32 :: proc(a, b: f32) -> f32 { - foreign { - @(link_name="llvm.minnum.f32") _min :: proc "none" (a, b: f32) -> f32 --- - } - return _min(a, b); + return a if a < b else b; } min_f64 :: proc(a, b: f64) -> f64 { - foreign { - @(link_name="llvm.minnum.f64") _min :: proc "none" (a, b: f64) -> f64 --- - } - return _min(a, b); + return a if a < b else b; } max_f16 :: proc(a, b: f16) -> f16 { - foreign { - @(link_name="llvm.maxnum.f16") _max :: proc "none" (a, b: f16) -> f16 --- - } - return _max(a, b); + return a if a > b else b; } max_f32 :: proc(a, b: f32) -> f32 { - foreign { - @(link_name="llvm.maxnum.f32") _max :: proc "none" (a, b: f32) -> f32 --- - } - return _max(a, b); + return a if a > b else b; } max_f64 :: proc(a, b: f64) -> f64 { - foreign { - @(link_name="llvm.maxnum.f64") _max :: proc "none" (a, b: f64) -> f64 --- - } - return _max(a, b); + return a if a > b else b; } abs_complex32 :: #force_inline proc "contextless" (x: complex32) -> f16 { |