| author | |
| committer | |
| log | 3c22cecee20d0c01d6c007c4fb8a8903498c66db |
| tree | 319a4795282a23f9b4e0829765904440534e9b09 |
| parent | a361f37b1c247a8a05383ceee48d0e2885f5bcd8 |
| signature |
* __aeabi_ldivmod
* __aeabi_uldivmod
* __aeabi_idivmod
* __aeabi_uidivmod3 files changed, 269 insertions(+), 42 deletions(-)
lib/compiler_rt/int.zig+81-41| ... | @@ -10,6 +10,7 @@ const is_test = builtin.is_test; | ... | @@ -10,6 +10,7 @@ const is_test = builtin.is_test; |
| 10 | const common = @import("common.zig"); | 10 | const common = @import("common.zig"); |
| 11 | const udivmod = @import("udivmod.zig").udivmod; | 11 | const udivmod = @import("udivmod.zig").udivmod; |
| 12 | const __divti3 = @import("divti3.zig").__divti3; | 12 | const __divti3 = @import("divti3.zig").__divti3; |
| 13 | const arm = @import("arm.zig"); | ||
| 13 | 14 | ||
| 14 | pub const panic = common.panic; | 15 | pub const panic = common.panic; |
| 15 | 16 | ||
| ... | @@ -73,31 +74,51 @@ pub fn __divmoddi4(a: i64, b: i64, rem: *i64) callconv(.C) i64 { | ... | @@ -73,31 +74,51 @@ pub fn __divmoddi4(a: i64, b: i64, rem: *i64) callconv(.C) i64 { |
| 73 | return d; | 74 | return d; |
| 74 | } | 75 | } |
| 75 | 76 | ||
| 76 | test "test_divmoddi4" { | 77 | fn test_one_divmoddi4(a: i64, b: i64, expected_q: i64, expected_r: i64) !void { |
| 77 | const cases = [_][4]i64{ | 78 | var r: i64 = undefined; |
| 78 | [_]i64{ 0, 1, 0, 0 }, | 79 | const q: i64 = __divmoddi4(a, b, &r); |
| 79 | [_]i64{ 0, -1, 0, 0 }, | 80 | try testing.expect(q == expected_q and r == expected_r); |
| 80 | [_]i64{ 2, 1, 2, 0 }, | 81 | } |
| 81 | [_]i64{ 2, -1, -2, 0 }, | ||
| 82 | [_]i64{ -2, 1, -2, 0 }, | ||
| 83 | [_]i64{ -2, -1, 2, 0 }, | ||
| 84 | [_]i64{ 7, 5, 1, 2 }, | ||
| 85 | [_]i64{ -7, 5, -1, -2 }, | ||
| 86 | [_]i64{ 19, 5, 3, 4 }, | ||
| 87 | [_]i64{ 19, -5, -3, 4 }, | ||
| 88 | [_]i64{ @bitCast(@as(u64, 0x8000000000000000)), 8, @bitCast(@as(u64, 0xf000000000000000)), 0 }, | ||
| 89 | [_]i64{ @bitCast(@as(u64, 0x8000000000000007)), 8, @bitCast(@as(u64, 0xf000000000000001)), -1 }, | ||
| 90 | }; | ||
| 91 | 82 | ||
| 92 | for (cases) |case| { | 83 | const cases__divmoddi4 = |
| 84 | [_][4]i64{ | ||
| 85 | [_]i64{ 0, 1, 0, 0 }, | ||
| 86 | [_]i64{ 0, -1, 0, 0 }, | ||
| 87 | [_]i64{ 2, 1, 2, 0 }, | ||
| 88 | [_]i64{ 2, -1, -2, 0 }, | ||
| 89 | [_]i64{ -2, 1, -2, 0 }, | ||
| 90 | [_]i64{ -2, -1, 2, 0 }, | ||
| 91 | [_]i64{ 7, 5, 1, 2 }, | ||
| 92 | [_]i64{ -7, 5, -1, -2 }, | ||
| 93 | [_]i64{ 19, 5, 3, 4 }, | ||
| 94 | [_]i64{ 19, -5, -3, 4 }, | ||
| 95 | [_]i64{ @as(i64, @bitCast(@as(u64, 0x8000000000000000))), 8, @as(i64, @bitCast(@as(u64, 0xf000000000000000))), 0 }, | ||
| 96 | [_]i64{ @as(i64, @bitCast(@as(u64, 0x8000000000000007))), 8, @as(i64, @bitCast(@as(u64, 0xf000000000000001))), -1 }, | ||
| 97 | }; | ||
| 98 | |||
| 99 | test "test_divmoddi4" { | ||
| 100 | for (cases__divmoddi4) |case| { | ||
| 93 | try test_one_divmoddi4(case[0], case[1], case[2], case[3]); | 101 | try test_one_divmoddi4(case[0], case[1], case[2], case[3]); |
| 94 | } | 102 | } |
| 95 | } | 103 | } |
| 96 | 104 | ||
| 97 | fn test_one_divmoddi4(a: i64, b: i64, expected_q: i64, expected_r: i64) !void { | 105 | fn test_one_aeabi_ldivmod(a: i64, b: i64, expected_q: i64, expected_r: i64) !void { |
| 98 | var r: i64 = undefined; | 106 | const LdivmodRes = extern struct { |
| 99 | const q: i64 = __divmoddi4(a, b, &r); | 107 | q: i64, // r1:r0 |
| 100 | try testing.expect(q == expected_q and r == expected_r); | 108 | r: i64, // r3:r2 |
| 109 | }; | ||
| 110 | const actualIdivmod = @as(*const fn (a: i64, b: i64) callconv(.AAPCS) LdivmodRes, @ptrCast(&arm.__aeabi_ldivmod)); | ||
| 111 | const arm_res = actualIdivmod(a, b); | ||
| 112 | try testing.expectEqual(expected_q, arm_res.q); | ||
| 113 | try testing.expectEqual(expected_r, arm_res.r); | ||
| 114 | } | ||
| 115 | |||
| 116 | test "arm.__aeabi_ldivmod" { | ||
| 117 | if (!builtin.cpu.arch.isARM()) return error.SkipZigTest; | ||
| 118 | |||
| 119 | for (cases__divmodsi4) |case| { | ||
| 120 | try test_one_aeabi_ldivmod(case[0], case[1], case[2], case[3]); | ||
| 121 | } | ||
| 101 | } | 122 | } |
| 102 | 123 | ||
| 103 | pub fn __udivmoddi4(a: u64, b: u64, maybe_rem: ?*u64) callconv(.C) u64 { | 124 | pub fn __udivmoddi4(a: u64, b: u64, maybe_rem: ?*u64) callconv(.C) u64 { |
| ... | @@ -212,27 +233,21 @@ pub fn __divmodsi4(a: i32, b: i32, rem: *i32) callconv(.C) i32 { | ... | @@ -212,27 +233,21 @@ pub fn __divmodsi4(a: i32, b: i32, rem: *i32) callconv(.C) i32 { |
| 212 | return d; | 233 | return d; |
| 213 | } | 234 | } |
| 214 | 235 | ||
| 215 | test "test_divmodsi4" { | 236 | const cases__divmodsi4 = |
| 216 | const cases = [_][4]i32{ | 237 | [_][4]i32{ |
| 217 | [_]i32{ 0, 1, 0, 0 }, | 238 | [_]i32{ 0, 1, 0, 0 }, |
| 218 | [_]i32{ 0, -1, 0, 0 }, | 239 | [_]i32{ 0, -1, 0, 0 }, |
| 219 | [_]i32{ 2, 1, 2, 0 }, | 240 | [_]i32{ 2, 1, 2, 0 }, |
| 220 | [_]i32{ 2, -1, -2, 0 }, | 241 | [_]i32{ 2, -1, -2, 0 }, |
| 221 | [_]i32{ -2, 1, -2, 0 }, | 242 | [_]i32{ -2, 1, -2, 0 }, |
| 222 | [_]i32{ -2, -1, 2, 0 }, | 243 | [_]i32{ -2, -1, 2, 0 }, |
| 223 | [_]i32{ 7, 5, 1, 2 }, | 244 | [_]i32{ 7, 5, 1, 2 }, |
| 224 | [_]i32{ -7, 5, -1, -2 }, | 245 | [_]i32{ -7, 5, -1, -2 }, |
| 225 | [_]i32{ 19, 5, 3, 4 }, | 246 | [_]i32{ 19, 5, 3, 4 }, |
| 226 | [_]i32{ 19, -5, -3, 4 }, | 247 | [_]i32{ 19, -5, -3, 4 }, |
| 227 | 248 | [_]i32{ @bitCast(@as(u32, 0x80000000)), 8, @bitCast(@as(u32, 0xf0000000)), 0 }, | |
| 228 | [_]i32{ @bitCast(@as(u32, 0x80000000)), 8, @bitCast(@as(u32, 0xf0000000)), 0 }, | 249 | [_]i32{ @bitCast(@as(u32, 0x80000007)), 8, @bitCast(@as(u32, 0xf0000001)), -1 }, |
| 229 | [_]i32{ @bitCast(@as(u32, 0x80000007)), 8, @bitCast(@as(u32, 0xf0000001)), -1 }, | 250 | }; |
| 230 | }; | ||
| 231 | |||
| 232 | for (cases) |case| { | ||
| 233 | try test_one_divmodsi4(case[0], case[1], case[2], case[3]); | ||
| 234 | } | ||
| 235 | } | ||
| 236 | 251 | ||
| 237 | fn test_one_divmodsi4(a: i32, b: i32, expected_q: i32, expected_r: i32) !void { | 252 | fn test_one_divmodsi4(a: i32, b: i32, expected_q: i32, expected_r: i32) !void { |
| 238 | var r: i32 = undefined; | 253 | var r: i32 = undefined; |
| ... | @@ -240,6 +255,31 @@ fn test_one_divmodsi4(a: i32, b: i32, expected_q: i32, expected_r: i32) !void { | ... | @@ -240,6 +255,31 @@ fn test_one_divmodsi4(a: i32, b: i32, expected_q: i32, expected_r: i32) !void { |
| 240 | try testing.expect(q == expected_q and r == expected_r); | 255 | try testing.expect(q == expected_q and r == expected_r); |
| 241 | } | 256 | } |
| 242 | 257 | ||
| 258 | test "test_divmodsi4" { | ||
| 259 | for (cases__divmodsi4) |case| { | ||
| 260 | try test_one_divmodsi4(case[0], case[1], case[2], case[3]); | ||
| 261 | } | ||
| 262 | } | ||
| 263 | |||
| 264 | fn test_one_aeabi_idivmod(a: i32, b: i32, expected_q: i32, expected_r: i32) !void { | ||
| 265 | const IdivmodRes = extern struct { | ||
| 266 | q: i32, // r0 | ||
| 267 | r: i32, // r1 | ||
| 268 | }; | ||
| 269 | const actualIdivmod = @as(*const fn (a: i32, b: i32) callconv(.AAPCS) IdivmodRes, @ptrCast(&arm.__aeabi_idivmod)); | ||
| 270 | const arm_res = actualIdivmod(a, b); | ||
| 271 | try testing.expectEqual(expected_q, arm_res.q); | ||
| 272 | try testing.expectEqual(expected_r, arm_res.r); | ||
| 273 | } | ||
| 274 | |||
| 275 | test "arm.__aeabi_idivmod" { | ||
| 276 | if (!builtin.cpu.arch.isARM()) return error.SkipZigTest; | ||
| 277 | |||
| 278 | for (cases__divmodsi4) |case| { | ||
| 279 | try test_one_aeabi_idivmod(case[0], case[1], case[2], case[3]); | ||
| 280 | } | ||
| 281 | } | ||
| 282 | |||
| 243 | pub fn __udivmodsi4(a: u32, b: u32, rem: *u32) callconv(.C) u32 { | 283 | pub fn __udivmodsi4(a: u32, b: u32, rem: *u32) callconv(.C) u32 { |
| 244 | const d = __udivsi3(a, b); | 284 | const d = __udivsi3(a, b); |
| 245 | rem.* = @bitCast(@as(i32, @bitCast(a)) -% (@as(i32, @bitCast(d)) * @as(i32, @bitCast(b)))); | 285 | rem.* = @bitCast(@as(i32, @bitCast(a)) -% (@as(i32, @bitCast(d)) * @as(i32, @bitCast(b)))); |
lib/compiler_rt/udivmoddi4_test.zig+23-1| ... | @@ -1,7 +1,9 @@ | ... | @@ -1,7 +1,9 @@ |
| 1 | // Disable formatting to avoid unnecessary source repository bloat. | 1 | // Disable formatting to avoid unnecessary source repository bloat. |
| 2 | // zig fmt: off | 2 | // zig fmt: off |
| 3 | const __udivmoddi4 = @import("int.zig").__udivmoddi4; | ||
| 4 | const testing = @import("std").testing; | 3 | const testing = @import("std").testing; |
| 4 | const builtin = @import("builtin"); | ||
| 5 | const __udivmoddi4 = @import("int.zig").__udivmoddi4; | ||
| 6 | const __aeabi_uldivmod = @import("arm.zig").__aeabi_uldivmod; | ||
| 5 | 7 | ||
| 6 | fn test__udivmoddi4(a: u64, b: u64, expected_q: u64, expected_r: u64) !void { | 8 | fn test__udivmoddi4(a: u64, b: u64, expected_q: u64, expected_r: u64) !void { |
| 7 | var r: u64 = undefined; | 9 | var r: u64 = undefined; |
| ... | @@ -16,6 +18,26 @@ test "udivmoddi4" { | ... | @@ -16,6 +18,26 @@ test "udivmoddi4" { |
| 16 | } | 18 | } |
| 17 | } | 19 | } |
| 18 | 20 | ||
| 21 | const ARMRes = extern struct { | ||
| 22 | q: u64, // r1:r0 | ||
| 23 | r: u64, // r3:r2 | ||
| 24 | }; | ||
| 25 | |||
| 26 | fn test__aeabi_uldivmod(a: u64, b: u64, expected_q: u64, expected_r: u64) !void { | ||
| 27 | const actualUldivmod = @as(*const fn (a: u64, b: u64) callconv(.AAPCS) ARMRes, @ptrCast(&__aeabi_uldivmod)); | ||
| 28 | const arm_res = actualUldivmod(a, b); | ||
| 29 | try testing.expectEqual(expected_q, arm_res.q); | ||
| 30 | try testing.expectEqual(expected_r, arm_res.r); | ||
| 31 | } | ||
| 32 | |||
| 33 | test "arm.__aeabi_uldivmod" { | ||
| 34 | if (!builtin.cpu.arch.isARM()) return error.SkipZigTest; | ||
| 35 | |||
| 36 | for (cases) |case| { | ||
| 37 | try test__aeabi_uldivmod(case[0], case[1], case[2], case[3]); | ||
| 38 | } | ||
| 39 | } | ||
| 40 | |||
| 19 | const cases = [_][4]u64{ | 41 | const cases = [_][4]u64{ |
| 20 | [_]u64{0x0000000000000000, 0x0000000000000001, 0x0000000000000000, 0x0000000000000000}, | 42 | [_]u64{0x0000000000000000, 0x0000000000000001, 0x0000000000000000, 0x0000000000000000}, |
| 21 | [_]u64{0x0000000000000000, 0x0000000000000002, 0x0000000000000000, 0x0000000000000000}, | 43 | [_]u64{0x0000000000000000, 0x0000000000000002, 0x0000000000000000, 0x0000000000000000}, |
lib/compiler_rt/udivmodsi4_test.zig created+165| ... | @@ -0,0 +1,165 @@ | ||
| 1 | // Disable formatting to avoid unnecessary source repository bloat. | ||
| 2 | // zig fmt: off | ||
| 3 | const testing = @import("std").testing; | ||
| 4 | const builtin = @import("builtin"); | ||
| 5 | const __aeabi_uidivmod = @import("arm.zig").__aeabi_uidivmod; | ||
| 6 | |||
| 7 | const ARMRes = extern struct { | ||
| 8 | q: u32, // r0 | ||
| 9 | r: u32, // r1 | ||
| 10 | }; | ||
| 11 | |||
| 12 | fn test__aeabi_uidivmod(a: u32, b: u32, expected_q: u32, expected_r: u32) !void { | ||
| 13 | const actualUidivmod = @as(*const fn (a: u32, b: u32) callconv(.AAPCS) ARMRes, @ptrCast(&__aeabi_uidivmod)); | ||
| 14 | const arm_res = actualUidivmod(a, b); | ||
| 15 | try testing.expectEqual(expected_q, arm_res.q); | ||
| 16 | try testing.expectEqual(expected_r, arm_res.r); | ||
| 17 | } | ||
| 18 | |||
| 19 | test "arm.__aeabi_uidivmod" { | ||
| 20 | if (!builtin.cpu.arch.isARM()) return error.SkipZigTest; | ||
| 21 | |||
| 22 | var i: i32 = 0; | ||
| 23 | for (cases) |case| { | ||
| 24 | try test__aeabi_uidivmod(case[0], case[1], case[2], case[3]); | ||
| 25 | i+=1; | ||
| 26 | } | ||
| 27 | } | ||
| 28 | |||
| 29 | const cases = [_][4]u32{ | ||
| 30 | [_]u32{0x00000000, 0x00000001, 0x00000000, 0x00000000}, | ||
| 31 | [_]u32{0x00000000, 0x00000002, 0x00000000, 0x00000000}, | ||
| 32 | [_]u32{0x00000000, 0x00000003, 0x00000000, 0x00000000}, | ||
| 33 | [_]u32{0x00000000, 0x00000010, 0x00000000, 0x00000000}, | ||
| 34 | [_]u32{0x00000000, 0x078644FA, 0x00000000, 0x00000000}, | ||
| 35 | [_]u32{0x00000000, 0x0747AE14, 0x00000000, 0x00000000}, | ||
| 36 | [_]u32{0x00000000, 0x7FFFFFFF, 0x00000000, 0x00000000}, | ||
| 37 | [_]u32{0x00000000, 0x80000000, 0x00000000, 0x00000000}, | ||
| 38 | [_]u32{0x00000000, 0xFFFFFFFD, 0x00000000, 0x00000000}, | ||
| 39 | [_]u32{0x00000000, 0xFFFFFFFE, 0x00000000, 0x00000000}, | ||
| 40 | [_]u32{0x00000000, 0xFFFFFFFF, 0x00000000, 0x00000000}, | ||
| 41 | [_]u32{0x00000001, 0x00000001, 0x00000001, 0x00000000}, // 1/1 => q=1, r=0 | ||
| 42 | [_]u32{0x00000001, 0x00000002, 0x00000000, 0x00000001}, | ||
| 43 | [_]u32{0x00000001, 0x00000003, 0x00000000, 0x00000001}, | ||
| 44 | [_]u32{0x00000001, 0x00000010, 0x00000000, 0x00000001}, | ||
| 45 | [_]u32{0x00000001, 0x078644FA, 0x00000000, 0x00000001}, | ||
| 46 | [_]u32{0x00000001, 0x0747AE14, 0x00000000, 0x00000001}, | ||
| 47 | [_]u32{0x00000001, 0x7FFFFFFF, 0x00000000, 0x00000001}, | ||
| 48 | [_]u32{0x00000001, 0x80000000, 0x00000000, 0x00000001}, | ||
| 49 | [_]u32{0x00000001, 0xFFFFFFFD, 0x00000000, 0x00000001}, | ||
| 50 | [_]u32{0x00000001, 0xFFFFFFFE, 0x00000000, 0x00000001}, | ||
| 51 | [_]u32{0x00000001, 0xFFFFFFFF, 0x00000000, 0x00000001}, | ||
| 52 | [_]u32{0x00000001, 0x00000000, 0x00000000, 0x00000001}, | ||
| 53 | [_]u32{0x00000001, 0x00000001, 0x00000001, 0x00000000}, | ||
| 54 | [_]u32{0x00000001, 0x00000002, 0x00000000, 0x00000001}, | ||
| 55 | [_]u32{0x00000001, 0x00000003, 0x00000000, 0x00000001}, | ||
| 56 | [_]u32{0x00000001, 0x00000010, 0x00000000, 0x00000001}, | ||
| 57 | [_]u32{0x00000001, 0x078644FA, 0x00000000, 0x00000001}, | ||
| 58 | [_]u32{0x00000001, 0x0747AE14, 0x00000000, 0x00000001}, | ||
| 59 | [_]u32{0x00000001, 0x7FFFFFFF, 0x00000000, 0x00000001}, | ||
| 60 | [_]u32{0x00000001, 0x80000000, 0x00000000, 0x00000001}, | ||
| 61 | [_]u32{0x00000001, 0xFFFFFFFD, 0x00000000, 0x00000001}, | ||
| 62 | [_]u32{0x00000001, 0xFFFFFFFE, 0x00000000, 0x00000001}, | ||
| 63 | [_]u32{0x00000001, 0xFFFFFFFF, 0x00000000, 0x00000001}, | ||
| 64 | [_]u32{0x00000002, 0x00000001, 0x00000002, 0x00000000}, | ||
| 65 | [_]u32{0x00000002, 0x00000002, 0x00000001, 0x00000000}, | ||
| 66 | [_]u32{0x00000002, 0x00000003, 0x00000000, 0x00000002}, | ||
| 67 | [_]u32{0x00000002, 0x00000010, 0x00000000, 0x00000002}, | ||
| 68 | [_]u32{0x00000002, 0x078644FA, 0x00000000, 0x00000002}, | ||
| 69 | [_]u32{0x00000002, 0x0747AE14, 0x00000000, 0x00000002}, | ||
| 70 | [_]u32{0x00000002, 0x7FFFFFFF, 0x00000000, 0x00000002}, | ||
| 71 | [_]u32{0x00000002, 0x80000000, 0x00000000, 0x00000002}, | ||
| 72 | [_]u32{0x00000002, 0xFFFFFFFD, 0x00000000, 0x00000002}, | ||
| 73 | [_]u32{0x00000002, 0xFFFFFFFE, 0x00000000, 0x00000002}, | ||
| 74 | [_]u32{0x00000002, 0xFFFFFFFF, 0x00000000, 0x00000002}, | ||
| 75 | |||
| 76 | [_]u32{0x00000010, 0x00000001, 0x00000010, 0x00000000}, | ||
| 77 | [_]u32{0x00000010, 0x00000002, 0x00000008, 0x00000000}, | ||
| 78 | [_]u32{0x00000010, 0x00000003, 0x00000005, 0x00000001}, | ||
| 79 | [_]u32{0x00000010, 0x00000010, 0x00000001, 0x00000000}, | ||
| 80 | [_]u32{0x00000010, 0x078644FA, 0x00000000, 0x00000010}, | ||
| 81 | [_]u32{0x00000010, 0x0747AE14, 0x00000000, 0x00000010}, | ||
| 82 | [_]u32{0x00000010, 0x7FFFFFFF, 0x00000000, 0x00000010}, | ||
| 83 | [_]u32{0x00000010, 0x80000000, 0x00000000, 0x00000010}, | ||
| 84 | [_]u32{0x00000010, 0xFFFFFFFD, 0x00000000, 0x00000010}, | ||
| 85 | [_]u32{0x00000010, 0xFFFFFFFE, 0x00000000, 0x00000010}, | ||
| 86 | [_]u32{0x00000010, 0xFFFFFFFF, 0x00000000, 0x00000010}, | ||
| 87 | |||
| 88 | [_]u32{0x078644FA, 0x00000001, 0x078644FA, 0x00000000}, | ||
| 89 | [_]u32{0x078644FA, 0x00000002, 0x03C3227D, 0x00000000}, | ||
| 90 | [_]u32{0x078644FA, 0x00000003, 0x028216FE, 0x00000000}, | ||
| 91 | [_]u32{0x078644FA, 0x00000010, 0x0078644F, 0x0000000A}, | ||
| 92 | [_]u32{0x078644FA, 0x078644FA, 0x00000001, 0x00000000}, | ||
| 93 | [_]u32{0x078644FA, 0x0747AE14, 0x00000001, 0x003E96E6}, | ||
| 94 | [_]u32{0x078644FA, 0x7FFFFFFF, 0x00000000, 0x078644FA}, | ||
| 95 | [_]u32{0x078644FA, 0x80000000, 0x00000000, 0x078644FA}, | ||
| 96 | [_]u32{0x078644FA, 0xFFFFFFFD, 0x00000000, 0x078644FA}, | ||
| 97 | [_]u32{0x078644FA, 0xFFFFFFFE, 0x00000000, 0x078644FA}, | ||
| 98 | [_]u32{0x078644FA, 0xFFFFFFFF, 0x00000000, 0x078644FA}, | ||
| 99 | [_]u32{0x0747AE14, 0x00000001, 0x0747AE14, 0x00000000}, | ||
| 100 | [_]u32{0x0747AE14, 0x00000002, 0x03A3D70A, 0x00000000}, | ||
| 101 | [_]u32{0x0747AE14, 0x00000003, 0x026D3A06, 0x00000002}, | ||
| 102 | [_]u32{0x0747AE14, 0x00000010, 0x00747AE1, 0x00000004}, | ||
| 103 | [_]u32{0x0747AE14, 0x078644FA, 0x00000000, 0x0747AE14}, | ||
| 104 | [_]u32{0x0747AE14, 0x0747AE14, 0x00000001, 0x00000000}, | ||
| 105 | [_]u32{0x0747AE14, 0x7FFFFFFF, 0x00000000, 0x0747AE14}, | ||
| 106 | [_]u32{0x0747AE14, 0x80000000, 0x00000000, 0x0747AE14}, | ||
| 107 | [_]u32{0x0747AE14, 0xFFFFFFFD, 0x00000000, 0x0747AE14}, | ||
| 108 | [_]u32{0x0747AE14, 0xFFFFFFFE, 0x00000000, 0x0747AE14}, | ||
| 109 | [_]u32{0x0747AE14, 0xFFFFFFFF, 0x00000000, 0x0747AE14}, | ||
| 110 | [_]u32{0x7FFFFFFF, 0x00000001, 0x7FFFFFFF, 0x00000000}, | ||
| 111 | [_]u32{0x7FFFFFFF, 0x00000002, 0x3FFFFFFF, 0x00000001}, | ||
| 112 | [_]u32{0x7FFFFFFF, 0x00000003, 0x2AAAAAAA, 0x00000001}, | ||
| 113 | [_]u32{0x7FFFFFFF, 0x00000010, 0x07FFFFFF, 0x0000000F}, | ||
| 114 | [_]u32{0x7FFFFFFF, 0x078644FA, 0x00000011, 0x00156B65}, | ||
| 115 | [_]u32{0x7FFFFFFF, 0x0747AE14, 0x00000011, 0x043D70AB}, | ||
| 116 | [_]u32{0x7FFFFFFF, 0x7FFFFFFF, 0x00000001, 0x00000000}, | ||
| 117 | [_]u32{0x7FFFFFFF, 0x80000000, 0x00000000, 0x7FFFFFFF}, | ||
| 118 | [_]u32{0x7FFFFFFF, 0xFFFFFFFD, 0x00000000, 0x7FFFFFFF}, | ||
| 119 | [_]u32{0x7FFFFFFF, 0xFFFFFFFE, 0x00000000, 0x7FFFFFFF}, | ||
| 120 | [_]u32{0x7FFFFFFF, 0xFFFFFFFF, 0x00000000, 0x7FFFFFFF}, | ||
| 121 | [_]u32{0x80000000, 0x00000001, 0x80000000, 0x00000000}, | ||
| 122 | [_]u32{0x80000000, 0x00000002, 0x40000000, 0x00000000}, | ||
| 123 | [_]u32{0x80000000, 0x00000003, 0x2AAAAAAA, 0x00000002}, | ||
| 124 | [_]u32{0x80000000, 0x00000010, 0x08000000, 0x00000000}, | ||
| 125 | [_]u32{0x80000000, 0x078644FA, 0x00000011, 0x00156B66}, | ||
| 126 | [_]u32{0x80000000, 0x0747AE14, 0x00000011, 0x043D70AC}, | ||
| 127 | [_]u32{0x80000000, 0x7FFFFFFF, 0x00000001, 0x00000001}, | ||
| 128 | [_]u32{0x80000000, 0x80000000, 0x00000001, 0x00000000}, | ||
| 129 | [_]u32{0x80000000, 0xFFFFFFFD, 0x00000000, 0x80000000}, | ||
| 130 | [_]u32{0x80000000, 0xFFFFFFFE, 0x00000000, 0x80000000}, | ||
| 131 | [_]u32{0x80000000, 0xFFFFFFFF, 0x00000000, 0x80000000}, | ||
| 132 | [_]u32{0xFFFFFFFD, 0x00000001, 0xFFFFFFFD, 0x00000000}, | ||
| 133 | [_]u32{0xFFFFFFFD, 0x00000002, 0x7FFFFFFE, 0x00000001}, | ||
| 134 | [_]u32{0xFFFFFFFD, 0x00000003, 0x55555554, 0x00000001}, | ||
| 135 | [_]u32{0xFFFFFFFD, 0x00000010, 0x0FFFFFFF, 0x0000000D}, | ||
| 136 | [_]u32{0xFFFFFFFD, 0x078644FA, 0x00000022, 0x002AD6C9}, | ||
| 137 | [_]u32{0xFFFFFFFD, 0x0747AE14, 0x00000023, 0x01333341}, | ||
| 138 | [_]u32{0xFFFFFFFD, 0x7FFFFFFF, 0x00000001, 0x7FFFFFFE}, | ||
| 139 | [_]u32{0xFFFFFFFD, 0x80000000, 0x00000001, 0x7FFFFFFD}, | ||
| 140 | [_]u32{0xFFFFFFFD, 0xFFFFFFFD, 0x00000001, 0x00000000}, | ||
| 141 | [_]u32{0xFFFFFFFD, 0xFFFFFFFE, 0x00000000, 0xFFFFFFFD}, | ||
| 142 | [_]u32{0xFFFFFFFD, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFD}, | ||
| 143 | [_]u32{0xFFFFFFFE, 0x00000001, 0xFFFFFFFE, 0x00000000}, | ||
| 144 | [_]u32{0xFFFFFFFE, 0x00000002, 0x7FFFFFFF, 0x00000000}, | ||
| 145 | [_]u32{0xFFFFFFFE, 0x00000003, 0x55555554, 0x00000002}, | ||
| 146 | [_]u32{0xFFFFFFFE, 0x00000010, 0x0FFFFFFF, 0x0000000E}, | ||
| 147 | [_]u32{0xFFFFFFFE, 0x078644FA, 0x00000022, 0x002AD6CA}, | ||
| 148 | [_]u32{0xFFFFFFFE, 0x0747AE14, 0x00000023, 0x01333342}, | ||
| 149 | [_]u32{0xFFFFFFFE, 0x7FFFFFFF, 0x00000002, 0x00000000}, | ||
| 150 | [_]u32{0xFFFFFFFE, 0x80000000, 0x00000001, 0x7FFFFFFE}, | ||
| 151 | [_]u32{0xFFFFFFFE, 0xFFFFFFFD, 0x00000001, 0x00000001}, | ||
| 152 | [_]u32{0xFFFFFFFE, 0xFFFFFFFE, 0x00000001, 0x00000000}, | ||
| 153 | [_]u32{0xFFFFFFFE, 0xFFFFFFFF, 0x00000000, 0xFFFFFFFE}, | ||
| 154 | [_]u32{0xFFFFFFFF, 0x00000001, 0xFFFFFFFF, 0x00000000}, | ||
| 155 | [_]u32{0xFFFFFFFF, 0x00000002, 0x7FFFFFFF, 0x00000001}, | ||
| 156 | [_]u32{0xFFFFFFFF, 0x00000003, 0x55555555, 0x00000000}, | ||
| 157 | [_]u32{0xFFFFFFFF, 0x00000010, 0x0FFFFFFF, 0x0000000F}, | ||
| 158 | [_]u32{0xFFFFFFFF, 0x078644FA, 0x00000022, 0x002AD6CB}, | ||
| 159 | [_]u32{0xFFFFFFFF, 0x0747AE14, 0x00000023, 0x01333343}, | ||
| 160 | [_]u32{0xFFFFFFFF, 0x7FFFFFFF, 0x00000002, 0x00000001}, | ||
| 161 | [_]u32{0xFFFFFFFF, 0x80000000, 0x00000001, 0x7FFFFFFF}, | ||
| 162 | [_]u32{0xFFFFFFFF, 0xFFFFFFFD, 0x00000001, 0x00000002}, | ||
| 163 | [_]u32{0xFFFFFFFF, 0xFFFFFFFE, 0x00000001, 0x00000001}, | ||
| 164 | [_]u32{0xFFFFFFFF, 0xFFFFFFFF, 0x00000001, 0x00000000}, | ||
| 165 | }; | ||