| ... | @@ -1,11 +1,11 @@ | ... | @@ -1,11 +1,11 @@ |
| 1 | // Builtin functions that operate on integer types | 1 | // Builtin functions that operate on integer types |
| 2 | const builtin = @import("builtin"); | 2 | const builtin = @import("builtin"); |
| 3 | const is_test = builtin.is_test; | 3 | const testing = @import("std").testing; |
| 4 | | 4 | |
| 5 | const udivmod = @import("udivmod.zig").udivmod; | 5 | const udivmod = @import("udivmod.zig").udivmod; |
| 6 | | 6 | |
| 7 | pub fn __divmoddi4(a: i64, b: i64, rem: *i64) callconv(.C) i64 { | 7 | pub fn __divmoddi4(a: i64, b: i64, rem: *i64) callconv(.C) i64 { |
| 8 | @setRuntimeSafety(is_test); | 8 | @setRuntimeSafety(builtin.is_test); |
| 9 | | 9 | |
| 10 | const d = __divdi3(a, b); | 10 | const d = __divdi3(a, b); |
| 11 | rem.* = a -% (d *% b); | 11 | rem.* = a -% (d *% b); |
| ... | @@ -22,7 +22,7 @@ test "test_udivmoddi4" { | ... | @@ -22,7 +22,7 @@ test "test_udivmoddi4" { |
| 22 | } | 22 | } |
| 23 | | 23 | |
| 24 | pub fn __divdi3(a: i64, b: i64) callconv(.C) i64 { | 24 | pub fn __divdi3(a: i64, b: i64) callconv(.C) i64 { |
| 25 | @setRuntimeSafety(is_test); | 25 | @setRuntimeSafety(builtin.is_test); |
| 26 | | 26 | |
| 27 | // Set aside the sign of the quotient. | 27 | // Set aside the sign of the quotient. |
| 28 | const sign = @bitCast(u64, (a ^ b) >> 63); | 28 | const sign = @bitCast(u64, (a ^ b) >> 63); |
| ... | @@ -61,7 +61,7 @@ fn test_one_divdi3(a: i64, b: i64, expected_q: i64) void { | ... | @@ -61,7 +61,7 @@ fn test_one_divdi3(a: i64, b: i64, expected_q: i64) void { |
| 61 | } | 61 | } |
| 62 | | 62 | |
| 63 | pub fn __moddi3(a: i64, b: i64) callconv(.C) i64 { | 63 | pub fn __moddi3(a: i64, b: i64) callconv(.C) i64 { |
| 64 | @setRuntimeSafety(is_test); | 64 | @setRuntimeSafety(builtin.is_test); |
| 65 | | 65 | |
| 66 | // Take absolute value of a and b via abs(x) = (x^(x >> 63)) - (x >> 63). | 66 | // Take absolute value of a and b via abs(x) = (x^(x >> 63)) - (x >> 63). |
| 67 | const abs_a = (a ^ (a >> 63)) -% (a >> 63); | 67 | const abs_a = (a ^ (a >> 63)) -% (a >> 63); |
| ... | @@ -101,12 +101,12 @@ fn test_one_moddi3(a: i64, b: i64, expected_r: i64) void { | ... | @@ -101,12 +101,12 @@ fn test_one_moddi3(a: i64, b: i64, expected_r: i64) void { |
| 101 | } | 101 | } |
| 102 | | 102 | |
| 103 | pub fn __udivdi3(a: u64, b: u64) callconv(.C) u64 { | 103 | pub fn __udivdi3(a: u64, b: u64) callconv(.C) u64 { |
| 104 | @setRuntimeSafety(is_test); | 104 | @setRuntimeSafety(builtin.is_test); |
| 105 | return __udivmoddi4(a, b, null); | 105 | return __udivmoddi4(a, b, null); |
| 106 | } | 106 | } |
| 107 | | 107 | |
| 108 | pub fn __umoddi3(a: u64, b: u64) callconv(.C) u64 { | 108 | pub fn __umoddi3(a: u64, b: u64) callconv(.C) u64 { |
| 109 | @setRuntimeSafety(is_test); | 109 | @setRuntimeSafety(builtin.is_test); |
| 110 | | 110 | |
| 111 | var r: u64 = undefined; | 111 | var r: u64 = undefined; |
| 112 | _ = __udivmoddi4(a, b, &r); | 112 | _ = __udivmoddi4(a, b, &r); |
| ... | @@ -127,7 +127,7 @@ fn test_one_umoddi3(a: u64, b: u64, expected_r: u64) void { | ... | @@ -127,7 +127,7 @@ fn test_one_umoddi3(a: u64, b: u64, expected_r: u64) void { |
| 127 | } | 127 | } |
| 128 | | 128 | |
| 129 | pub fn __divmodsi4(a: i32, b: i32, rem: *i32) callconv(.C) i32 { | 129 | pub fn __divmodsi4(a: i32, b: i32, rem: *i32) callconv(.C) i32 { |
| 130 | @setRuntimeSafety(is_test); | 130 | @setRuntimeSafety(builtin.is_test); |
| 131 | | 131 | |
| 132 | const d = __divsi3(a, b); | 132 | const d = __divsi3(a, b); |
| 133 | rem.* = a -% (d * b); | 133 | rem.* = a -% (d * b); |
| ... | @@ -163,7 +163,7 @@ fn test_one_divmodsi4(a: i32, b: i32, expected_q: i32, expected_r: i32) void { | ... | @@ -163,7 +163,7 @@ fn test_one_divmodsi4(a: i32, b: i32, expected_q: i32, expected_r: i32) void { |
| 163 | } | 163 | } |
| 164 | | 164 | |
| 165 | pub fn __udivmodsi4(a: u32, b: u32, rem: *u32) callconv(.C) u32 { | 165 | pub fn __udivmodsi4(a: u32, b: u32, rem: *u32) callconv(.C) u32 { |
| 166 | @setRuntimeSafety(is_test); | 166 | @setRuntimeSafety(builtin.is_test); |
| 167 | | 167 | |
| 168 | const d = __udivsi3(a, b); | 168 | const d = __udivsi3(a, b); |
| 169 | rem.* = @bitCast(u32, @bitCast(i32, a) -% (@bitCast(i32, d) * @bitCast(i32, b))); | 169 | rem.* = @bitCast(u32, @bitCast(i32, a) -% (@bitCast(i32, d) * @bitCast(i32, b))); |
| ... | @@ -171,7 +171,7 @@ pub fn __udivmodsi4(a: u32, b: u32, rem: *u32) callconv(.C) u32 { | ... | @@ -171,7 +171,7 @@ pub fn __udivmodsi4(a: u32, b: u32, rem: *u32) callconv(.C) u32 { |
| 171 | } | 171 | } |
| 172 | | 172 | |
| 173 | pub fn __divsi3(n: i32, d: i32) callconv(.C) i32 { | 173 | pub fn __divsi3(n: i32, d: i32) callconv(.C) i32 { |
| 174 | @setRuntimeSafety(is_test); | 174 | @setRuntimeSafety(builtin.is_test); |
| 175 | | 175 | |
| 176 | // Set aside the sign of the quotient. | 176 | // Set aside the sign of the quotient. |
| 177 | const sign = @bitCast(u32, (n ^ d) >> 31); | 177 | const sign = @bitCast(u32, (n ^ d) >> 31); |
| ... | @@ -210,7 +210,7 @@ fn test_one_divsi3(a: i32, b: i32, expected_q: i32) void { | ... | @@ -210,7 +210,7 @@ fn test_one_divsi3(a: i32, b: i32, expected_q: i32) void { |
| 210 | } | 210 | } |
| 211 | | 211 | |
| 212 | pub fn __udivsi3(n: u32, d: u32) callconv(.C) u32 { | 212 | pub fn __udivsi3(n: u32, d: u32) callconv(.C) u32 { |
| 213 | @setRuntimeSafety(is_test); | 213 | @setRuntimeSafety(builtin.is_test); |
| 214 | | 214 | |
| 215 | const n_uword_bits: c_uint = u32.bit_count; | 215 | const n_uword_bits: c_uint = u32.bit_count; |
| 216 | // special cases | 216 | // special cases |
| ... | @@ -397,7 +397,7 @@ fn test_one_udivsi3(a: u32, b: u32, expected_q: u32) void { | ... | @@ -397,7 +397,7 @@ fn test_one_udivsi3(a: u32, b: u32, expected_q: u32) void { |
| 397 | } | 397 | } |
| 398 | | 398 | |
| 399 | pub fn __modsi3(n: i32, d: i32) callconv(.C) i32 { | 399 | pub fn __modsi3(n: i32, d: i32) callconv(.C) i32 { |
| 400 | @setRuntimeSafety(is_test); | 400 | @setRuntimeSafety(builtin.is_test); |
| 401 | | 401 | |
| 402 | return n -% __divsi3(n, d) *% d; | 402 | return n -% __divsi3(n, d) *% d; |
| 403 | } | 403 | } |
| ... | @@ -428,7 +428,7 @@ fn test_one_modsi3(a: i32, b: i32, expected_r: i32) void { | ... | @@ -428,7 +428,7 @@ fn test_one_modsi3(a: i32, b: i32, expected_r: i32) void { |
| 428 | } | 428 | } |
| 429 | | 429 | |
| 430 | pub fn __umodsi3(n: u32, d: u32) callconv(.C) u32 { | 430 | pub fn __umodsi3(n: u32, d: u32) callconv(.C) u32 { |
| 431 | @setRuntimeSafety(is_test); | 431 | @setRuntimeSafety(builtin.is_test); |
| 432 | | 432 | |
| 433 | return n -% __udivsi3(n, d) *% d; | 433 | return n -% __udivsi3(n, d) *% d; |
| 434 | } | 434 | } |