aboutsummaryrefslogtreecommitdiff
path: root/std/math/sqrt.zig
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2018-01-10 10:22:40 -0500
committerGitHub <noreply@github.com>2018-01-10 10:22:40 -0500
commit891c93c118a85ce16225ed2e97676cdae2abe657 (patch)
tree8fb47079465fbcd5d58f7d477678987ade56c032 /std/math/sqrt.zig
parentd4f791cf6c560da25a0b84b4eb2ad68f8e7d27fd (diff)
parent24cd99160c2eeea34088ef3e3d631233d8913dc1 (diff)
downloadzig-891c93c118a85ce16225ed2e97676cdae2abe657.tar.gz
zig-891c93c118a85ce16225ed2e97676cdae2abe657.zip
Merge pull request #681 from zig-lang/hw-math
Add hw sqrt for x86_64
Diffstat (limited to 'std/math/sqrt.zig')
-rw-r--r--std/math/sqrt.zig18
1 files changed, 14 insertions, 4 deletions
diff --git a/std/math/sqrt.zig b/std/math/sqrt.zig
index 4d84756b4a..18cee6e248 100644
--- a/std/math/sqrt.zig
+++ b/std/math/sqrt.zig
@@ -18,11 +18,21 @@ pub fn sqrt(x: var) -> (if (@typeId(@typeOf(x)) == TypeId.Int) @IntType(false, @
return T(sqrt64(x));
},
TypeId.Float => {
- return switch (T) {
- f32 => sqrt32(x),
- f64 => sqrt64(x),
+ switch (T) {
+ f32 => {
+ switch (builtin.arch) {
+ builtin.Arch.x86_64 => return @import("x86_64/sqrt.zig").sqrt32(x),
+ else => return sqrt32(x),
+ }
+ },
+ f64 => {
+ switch (builtin.arch) {
+ builtin.Arch.x86_64 => return @import("x86_64/sqrt.zig").sqrt64(x),
+ else => return sqrt64(x),
+ }
+ },
else => @compileError("sqrt not implemented for " ++ @typeName(T)),
- };
+ }
},
TypeId.IntLiteral => comptime {
if (x > @maxValue(u128)) {