Commit 156a84e80f

Andrew Kelley <superjoe30@gmail.com>
2017-08-31 07:39:20
compiler-rt: add __aeabi_uldivmod
1 parent 021155d
Changed files (1)
std
special
compiler_rt
std/special/compiler_rt/index.zig
@@ -36,6 +36,23 @@ export fn __umoddi3(a: u64, b: u64) -> u64 {
     return r;
 }
 
+const AeabiUlDivModResult = extern struct {
+    quot: u64,
+    rem: u64,
+};
+export fn __aeabi_uldivmod(numerator: u64, denominator: u64) -> AeabiUlDivModResult {
+    @setDebugSafety(this, is_test);
+    if (comptime isArmArch()) {
+        @setGlobalLinkage(__aeabi_uldivmod, builtin.GlobalLinkage.LinkOnce);
+        var result: AeabiUlDivModResult = undefined;
+        result.quot = __udivmoddi4(numerator, denominator, &result.rem);
+        return result;
+    }
+
+    @setGlobalLinkage(__aeabi_uldivmod, builtin.GlobalLinkage.Internal);
+    unreachable;
+}
+
 fn isArmArch() -> bool {
     return switch (builtin.arch) {
         builtin.Arch.armv8_2a,