|
@@ -409,11 +409,6 @@ string_decode_rune :: #force_inline proc "contextless" (s: string) -> (rune, int
|
|
|
return rune(s0&MASK4)<<18 | rune(b1&MASKX)<<12 | rune(b2&MASKX)<<6 | rune(b3&MASKX), 4;
|
|
|
}
|
|
|
|
|
|
-@(default_calling_convention = "none")
|
|
|
-foreign {
|
|
|
- @(link_name="llvm.sqrt.f32") _sqrt_f32 :: proc(x: f32) -> f32 ---
|
|
|
- @(link_name="llvm.sqrt.f64") _sqrt_f64 :: proc(x: f64) -> f64 ---
|
|
|
-}
|
|
|
abs_f16 :: #force_inline proc "contextless" (x: f16) -> f16 {
|
|
|
return -x if x < 0 else x;
|
|
|
}
|
|
@@ -445,27 +440,27 @@ max_f64 :: proc(a, b: f64) -> f64 {
|
|
|
|
|
|
abs_complex32 :: #force_inline proc "contextless" (x: complex32) -> f16 {
|
|
|
r, i := real(x), imag(x);
|
|
|
- return f16(_sqrt_f32(f32(r*r + i*i)));
|
|
|
+ return f16(intrinsics.sqrt(f32(r*r + i*i)));
|
|
|
}
|
|
|
abs_complex64 :: #force_inline proc "contextless" (x: complex64) -> f32 {
|
|
|
r, i := real(x), imag(x);
|
|
|
- return _sqrt_f32(r*r + i*i);
|
|
|
+ return intrinsics.sqrt(r*r + i*i);
|
|
|
}
|
|
|
abs_complex128 :: #force_inline proc "contextless" (x: complex128) -> f64 {
|
|
|
r, i := real(x), imag(x);
|
|
|
- return _sqrt_f64(r*r + i*i);
|
|
|
+ return intrinsics.sqrt(r*r + i*i);
|
|
|
}
|
|
|
abs_quaternion64 :: #force_inline proc "contextless" (x: quaternion64) -> f16 {
|
|
|
r, i, j, k := real(x), imag(x), jmag(x), kmag(x);
|
|
|
- return f16(_sqrt_f32(f32(r*r + i*i + j*j + k*k)));
|
|
|
+ return f16(intrinsics.sqrt(f32(r*r + i*i + j*j + k*k)));
|
|
|
}
|
|
|
abs_quaternion128 :: #force_inline proc "contextless" (x: quaternion128) -> f32 {
|
|
|
r, i, j, k := real(x), imag(x), jmag(x), kmag(x);
|
|
|
- return _sqrt_f32(r*r + i*i + j*j + k*k);
|
|
|
+ return intrinsics.sqrt(r*r + i*i + j*j + k*k);
|
|
|
}
|
|
|
abs_quaternion256 :: #force_inline proc "contextless" (x: quaternion256) -> f64 {
|
|
|
r, i, j, k := real(x), imag(x), jmag(x), kmag(x);
|
|
|
- return _sqrt_f64(r*r + i*i + j*j + k*k);
|
|
|
+ return intrinsics.sqrt(r*r + i*i + j*j + k*k);
|
|
|
}
|
|
|
|
|
|
|