aboutsummaryrefslogtreecommitdiff
path: root/std
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-05-08 20:49:07 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-05-08 20:51:49 -0400
commit9bbd71c9ab3915b8bd8619a319a0eb6de2e2d152 (patch)
tree65ce7baa9c4fba0fbc25b72b81ce92faf9c5760a /std
parent3bd5c16f39a67889600a2102b716ccf7f9ba70f0 (diff)
downloadzig-9bbd71c9ab3915b8bd8619a319a0eb6de2e2d152.tar.gz
zig-9bbd71c9ab3915b8bd8619a319a0eb6de2e2d152.zip
add --bundle-compiler-rt function to link options
and use it when building libuserland.a The self-hosted part of stage1 relies on zig's compiler-rt, and so we include it in libuserland.a. This should potentially be the default, but for now it's behind a linker option. self-hosted translate-c: small progress on translating functions.
Diffstat (limited to 'std')
-rw-r--r--std/build.zig5
-rw-r--r--std/special/compiler_rt.zig387
2 files changed, 197 insertions, 195 deletions
diff --git a/std/build.zig b/std/build.zig
index 4d6c915438..fa3bac83d0 100644
--- a/std/build.zig
+++ b/std/build.zig
@@ -941,6 +941,7 @@ pub const LibExeObjStep = struct {
verbose_link: bool,
verbose_cc: bool,
disable_gen_h: bool,
+ bundle_compiler_rt: bool,
c_std: Builder.CStd,
override_std_dir: ?[]const u8,
override_lib_dir: ?[]const u8,
@@ -1050,6 +1051,7 @@ pub const LibExeObjStep = struct {
.name_prefix = "",
.filter = null,
.disable_gen_h = false,
+ .bundle_compiler_rt = false,
.output_dir = null,
.need_system_paths = false,
.single_threaded = false,
@@ -1452,6 +1454,9 @@ pub const LibExeObjStep = struct {
if (self.disable_gen_h) {
try zig_args.append("--disable-gen-h");
}
+ if (self.bundle_compiler_rt) {
+ try zig_args.append("--bundle-compiler-rt");
+ }
switch (self.target) {
Target.Native => {},
diff --git a/std/special/compiler_rt.zig b/std/special/compiler_rt.zig
index 2faec8eab7..8f6f30ccc1 100644
--- a/std/special/compiler_rt.zig
+++ b/std/special/compiler_rt.zig
@@ -1,15 +1,13 @@
const builtin = @import("builtin");
const is_test = builtin.is_test;
-const stack_probe = @import("compiler_rt/stack_probe.zig");
-
comptime {
const linkage = if (is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.Weak;
const strong_linkage = if (is_test) builtin.GlobalLinkage.Internal else builtin.GlobalLinkage.Strong;
switch (builtin.arch) {
.i386, .x86_64 => @export("__zig_probe_stack", @import("compiler_rt/stack_probe.zig").zig_probe_stack, linkage),
- else => { }
+ else => {},
}
@export("__lesf2", @import("compiler_rt/comparesf2.zig").__lesf2, linkage);
@@ -499,7 +497,6 @@ nakedcc fn __aeabi_memcmp() noreturn {
unreachable;
}
-
extern fn __divmodsi4(a: i32, b: i32, rem: *i32) i32 {
@setRuntimeSafety(is_test);
@@ -1272,17 +1269,17 @@ fn test_one_udivsi3(a: u32, b: u32, expected_q: u32) void {
test "test_divsi3" {
const cases = [][3]i32{
- []i32{ 0, 1, 0},
- []i32{ 0, -1, 0},
- []i32{ 2, 1, 2},
- []i32{ 2, -1, -2},
- []i32{-2, 1, -2},
- []i32{-2, -1, 2},
-
- []i32{@bitCast(i32, u32(0x80000000)), 1, @bitCast(i32, u32(0x80000000))},
- []i32{@bitCast(i32, u32(0x80000000)), -1, @bitCast(i32, u32(0x80000000))},
- []i32{@bitCast(i32, u32(0x80000000)), -2, 0x40000000},
- []i32{@bitCast(i32, u32(0x80000000)), 2, @bitCast(i32, u32(0xC0000000))},
+ []i32{ 0, 1, 0 },
+ []i32{ 0, -1, 0 },
+ []i32{ 2, 1, 2 },
+ []i32{ 2, -1, -2 },
+ []i32{ -2, 1, -2 },
+ []i32{ -2, -1, 2 },
+
+ []i32{ @bitCast(i32, u32(0x80000000)), 1, @bitCast(i32, u32(0x80000000)) },
+ []i32{ @bitCast(i32, u32(0x80000000)), -1, @bitCast(i32, u32(0x80000000)) },
+ []i32{ @bitCast(i32, u32(0x80000000)), -2, 0x40000000 },
+ []i32{ @bitCast(i32, u32(0x80000000)), 2, @bitCast(i32, u32(0xC0000000)) },
};
for (cases) |case| {
@@ -1297,19 +1294,19 @@ fn test_one_divsi3(a: i32, b: i32, expected_q: i32) void {
test "test_divmodsi4" {
const cases = [][4]i32{
- []i32{ 0, 1, 0, 0},
- []i32{ 0, -1, 0, 0},
- []i32{ 2, 1, 2, 0},
- []i32{ 2, -1, -2, 0},
- []i32{-2, 1, -2, 0},
- []i32{-2, -1, 2, 0},
- []i32{ 7, 5, 1, 2},
- []i32{-7, 5, -1, -2},
- []i32{19, 5, 3, 4},
- []i32{19, -5, -3, 4},
-
- []i32{@bitCast(i32, u32(0x80000000)), 8, @bitCast(i32, u32(0xf0000000)), 0},
- []i32{@bitCast(i32, u32(0x80000007)), 8, @bitCast(i32, u32(0xf0000001)), -1},
+ []i32{ 0, 1, 0, 0 },
+ []i32{ 0, -1, 0, 0 },
+ []i32{ 2, 1, 2, 0 },
+ []i32{ 2, -1, -2, 0 },
+ []i32{ -2, 1, -2, 0 },
+ []i32{ -2, -1, 2, 0 },
+ []i32{ 7, 5, 1, 2 },
+ []i32{ -7, 5, -1, -2 },
+ []i32{ 19, 5, 3, 4 },
+ []i32{ 19, -5, -3, 4 },
+
+ []i32{ @bitCast(i32, u32(0x80000000)), 8, @bitCast(i32, u32(0xf0000000)), 0 },
+ []i32{ @bitCast(i32, u32(0x80000007)), 8, @bitCast(i32, u32(0xf0000001)), -1 },
};
for (cases) |case| {
@@ -1325,17 +1322,17 @@ fn test_one_divmodsi4(a: i32, b: i32, expected_q: i32, expected_r: i32) void {
test "test_divdi3" {
const cases = [][3]i64{
- []i64{ 0, 1, 0},
- []i64{ 0, -1, 0},
- []i64{ 2, 1, 2},
- []i64{ 2, -1, -2},
- []i64{-2, 1, -2},
- []i64{-2, -1, 2},
-
- []i64{@bitCast(i64, u64(0x8000000000000000)), 1, @bitCast(i64, u64(0x8000000000000000))},
- []i64{@bitCast(i64, u64(0x8000000000000000)), -1, @bitCast(i64, u64(0x8000000000000000))},
- []i64{@bitCast(i64, u64(0x8000000000000000)), -2, 0x4000000000000000},
- []i64{@bitCast(i64, u64(0x8000000000000000)), 2, @bitCast(i64, u64(0xC000000000000000))},
+ []i64{ 0, 1, 0 },
+ []i64{ 0, -1, 0 },
+ []i64{ 2, 1, 2 },
+ []i64{ 2, -1, -2 },
+ []i64{ -2, 1, -2 },
+ []i64{ -2, -1, 2 },
+
+ []i64{ @bitCast(i64, u64(0x8000000000000000)), 1, @bitCast(i64, u64(0x8000000000000000)) },
+ []i64{ @bitCast(i64, u64(0x8000000000000000)), -1, @bitCast(i64, u64(0x8000000000000000)) },
+ []i64{ @bitCast(i64, u64(0x8000000000000000)), -2, 0x4000000000000000 },
+ []i64{ @bitCast(i64, u64(0x8000000000000000)), 2, @bitCast(i64, u64(0xC000000000000000)) },
};
for (cases) |case| {
@@ -1350,19 +1347,19 @@ fn test_one_divdi3(a: i64, b: i64, expected_q: i64) void {
test "test_moddi3" {
const cases = [][3]i64{
- []i64{0, 1, 0},
- []i64{0, -1, 0},
- []i64{5, 3, 2},
- []i64{5, -3, 2},
- []i64{-5, 3, -2},
- []i64{-5, -3, -2},
-
- []i64{@bitCast(i64, @intCast(u64, 0x8000000000000000)), 1, 0},
- []i64{@bitCast(i64, @intCast(u64, 0x8000000000000000)), -1, 0},
- []i64{@bitCast(i64, @intCast(u64, 0x8000000000000000)), 2, 0},
- []i64{@bitCast(i64, @intCast(u64, 0x8000000000000000)), -2, 0},
- []i64{@bitCast(i64, @intCast(u64, 0x8000000000000000)), 3, -2},
- []i64{@bitCast(i64, @intCast(u64, 0x8000000000000000)), -3, -2},
+ []i64{ 0, 1, 0 },
+ []i64{ 0, -1, 0 },
+ []i64{ 5, 3, 2 },
+ []i64{ 5, -3, 2 },
+ []i64{ -5, 3, -2 },
+ []i64{ -5, -3, -2 },
+
+ []i64{ @bitCast(i64, @intCast(u64, 0x8000000000000000)), 1, 0 },
+ []i64{ @bitCast(i64, @intCast(u64, 0x8000000000000000)), -1, 0 },
+ []i64{ @bitCast(i64, @intCast(u64, 0x8000000000000000)), 2, 0 },
+ []i64{ @bitCast(i64, @intCast(u64, 0x8000000000000000)), -2, 0 },
+ []i64{ @bitCast(i64, @intCast(u64, 0x8000000000000000)), 3, -2 },
+ []i64{ @bitCast(i64, @intCast(u64, 0x8000000000000000)), -3, -2 },
};
for (cases) |case| {
@@ -1377,17 +1374,17 @@ fn test_one_moddi3(a: i64, b: i64, expected_r: i64) void {
test "test_modsi3" {
const cases = [][3]i32{
- []i32{0, 1, 0},
- []i32{0, -1, 0},
- []i32{5, 3, 2},
- []i32{5, -3, 2},
- []i32{-5, 3, -2},
- []i32{-5, -3, -2},
- []i32{@bitCast(i32, @intCast(u32, 0x80000000)), 1, 0x0},
- []i32{@bitCast(i32, @intCast(u32, 0x80000000)), 2, 0x0},
- []i32{@bitCast(i32, @intCast(u32, 0x80000000)), -2, 0x0},
- []i32{@bitCast(i32, @intCast(u32, 0x80000000)), 3, -2},
- []i32{@bitCast(i32, @intCast(u32, 0x80000000)), -3, -2},
+ []i32{ 0, 1, 0 },
+ []i32{ 0, -1, 0 },
+ []i32{ 5, 3, 2 },
+ []i32{ 5, -3, 2 },
+ []i32{ -5, 3, -2 },
+ []i32{ -5, -3, -2 },
+ []i32{ @bitCast(i32, @intCast(u32, 0x80000000)), 1, 0x0 },
+ []i32{ @bitCast(i32, @intCast(u32, 0x80000000)), 2, 0x0 },
+ []i32{ @bitCast(i32, @intCast(u32, 0x80000000)), -2, 0x0 },
+ []i32{ @bitCast(i32, @intCast(u32, 0x80000000)), 3, -2 },
+ []i32{ @bitCast(i32, @intCast(u32, 0x80000000)), -3, -2 },
};
for (cases) |case| {
@@ -1402,138 +1399,138 @@ fn test_one_modsi3(a: i32, b: i32, expected_r: i32) void {
test "test_umodsi3" {
const cases = [][3]u32{
- []u32{0x00000000, 0x00000001, 0x00000000},
- []u32{0x00000000, 0x00000002, 0x00000000},
- []u32{0x00000000, 0x00000003, 0x00000000},
- []u32{0x00000000, 0x00000010, 0x00000000},
- []u32{0x00000000, 0x078644FA, 0x00000000},
- []u32{0x00000000, 0x0747AE14, 0x00000000},
- []u32{0x00000000, 0x7FFFFFFF, 0x00000000},
- []u32{0x00000000, 0x80000000, 0x00000000},
- []u32{0x00000000, 0xFFFFFFFD, 0x00000000},
- []u32{0x00000000, 0xFFFFFFFE, 0x00000000},
- []u32{0x00000000, 0xFFFFFFFF, 0x00000000},
- []u32{0x00000001, 0x00000001, 0x00000000},
- []u32{0x00000001, 0x00000002, 0x00000001},
- []u32{0x00000001, 0x00000003, 0x00000001},
- []u32{0x00000001, 0x00000010, 0x00000001},
- []u32{0x00000001, 0x078644FA, 0x00000001},
- []u32{0x00000001, 0x0747AE14, 0x00000001},
- []u32{0x00000001, 0x7FFFFFFF, 0x00000001},
- []u32{0x00000001, 0x80000000, 0x00000001},
- []u32{0x00000001, 0xFFFFFFFD, 0x00000001},
- []u32{0x00000001, 0xFFFFFFFE, 0x00000001},
- []u32{0x00000001, 0xFFFFFFFF, 0x00000001},
- []u32{0x00000002, 0x00000001, 0x00000000},
- []u32{0x00000002, 0x00000002, 0x00000000},
- []u32{0x00000002, 0x00000003, 0x00000002},
- []u32{0x00000002, 0x00000010, 0x00000002},
- []u32{0x00000002, 0x078644FA, 0x00000002},
- []u32{0x00000002, 0x0747AE14, 0x00000002},
- []u32{0x00000002, 0x7FFFFFFF, 0x00000002},
- []u32{0x00000002, 0x80000000, 0x00000002},
- []u32{0x00000002, 0xFFFFFFFD, 0x00000002},
- []u32{0x00000002, 0xFFFFFFFE, 0x00000002},
- []u32{0x00000002, 0xFFFFFFFF, 0x00000002},
- []u32{0x00000003, 0x00000001, 0x00000000},
- []u32{0x00000003, 0x00000002, 0x00000001},
- []u32{0x00000003, 0x00000003, 0x00000000},
- []u32{0x00000003, 0x00000010, 0x00000003},
- []u32{0x00000003, 0x078644FA, 0x00000003},
- []u32{0x00000003, 0x0747AE14, 0x00000003},
- []u32{0x00000003, 0x7FFFFFFF, 0x00000003},
- []u32{0x00000003, 0x80000000, 0x00000003},
- []u32{0x00000003, 0xFFFFFFFD, 0x00000003},
- []u32{0x00000003, 0xFFFFFFFE, 0x00000003},
- []u32{0x00000003, 0xFFFFFFFF, 0x00000003},
- []u32{0x00000010, 0x00000001, 0x00000000},
- []u32{0x00000010, 0x00000002, 0x00000000},
- []u32{0x00000010, 0x00000003, 0x00000001},
- []u32{0x00000010, 0x00000010, 0x00000000},
- []u32{0x00000010, 0x078644FA, 0x00000010},
- []u32{0x00000010, 0x0747AE14, 0x00000010},
- []u32{0x00000010, 0x7FFFFFFF, 0x00000010},
- []u32{0x00000010, 0x80000000, 0x00000010},
- []u32{0x00000010, 0xFFFFFFFD, 0x00000010},
- []u32{0x00000010, 0xFFFFFFFE, 0x00000010},
- []u32{0x00000010, 0xFFFFFFFF, 0x00000010},
- []u32{0x078644FA, 0x00000001, 0x00000000},
- []u32{0x078644FA, 0x00000002, 0x00000000},
- []u32{0x078644FA, 0x00000003, 0x00000000},
- []u32{0x078644FA, 0x00000010, 0x0000000A},
- []u32{0x078644FA, 0x078644FA, 0x00000000},
- []u32{0x078644FA, 0x0747AE14, 0x003E96E6},
- []u32{0x078644FA, 0x7FFFFFFF, 0x078644FA},
- []u32{0x078644FA, 0x80000000, 0x078644FA},
- []u32{0x078644FA, 0xFFFFFFFD, 0x078644FA},
- []u32{0x078644FA, 0xFFFFFFFE, 0x078644FA},
- []u32{0x078644FA, 0xFFFFFFFF, 0x078644FA},
- []u32{0x0747AE14, 0x00000001, 0x00000000},
- []u32{0x0747AE14, 0x00000002, 0x00000000},
- []u32{0x0747AE14, 0x00000003, 0x00000002},
- []u32{0x0747AE14, 0x00000010, 0x00000004},
- []u32{0x0747AE14, 0x078644FA, 0x0747AE14},
- []u32{0x0747AE14, 0x0747AE14, 0x00000000},
- []u32{0x0747AE14, 0x7FFFFFFF, 0x0747AE14},
- []u32{0x0747AE14, 0x80000000, 0x0747AE14},
- []u32{0x0747AE14, 0xFFFFFFFD, 0x0747AE14},
- []u32{0x0747AE14, 0xFFFFFFFE, 0x0747AE14},
- []u32{0x0747AE14, 0xFFFFFFFF, 0x0747AE14},
- []u32{0x7FFFFFFF, 0x00000001, 0x00000000},
- []u32{0x7FFFFFFF, 0x00000002, 0x00000001},
- []u32{0x7FFFFFFF, 0x00000003, 0x00000001},
- []u32{0x7FFFFFFF, 0x00000010, 0x0000000F},
- []u32{0x7FFFFFFF, 0x078644FA, 0x00156B65},
- []u32{0x7FFFFFFF, 0x0747AE14, 0x043D70AB},
- []u32{0x7FFFFFFF, 0x7FFFFFFF, 0x00000000},
- []u32{0x7FFFFFFF, 0x80000000, 0x7FFFFFFF},
- []u32{0x7FFFFFFF, 0xFFFFFFFD, 0x7FFFFFFF},
- []u32{0x7FFFFFFF, 0xFFFFFFFE, 0x7FFFFFFF},
- []u32{0x7FFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF},
- []u32{0x80000000, 0x00000001, 0x00000000},
- []u32{0x80000000, 0x00000002, 0x00000000},
- []u32{0x80000000, 0x00000003, 0x00000002},
- []u32{0x80000000, 0x00000010, 0x00000000},
- []u32{0x80000000, 0x078644FA, 0x00156B66},
- []u32{0x80000000, 0x0747AE14, 0x043D70AC},
- []u32{0x80000000, 0x7FFFFFFF, 0x00000001},
- []u32{0x80000000, 0x80000000, 0x00000000},
- []u32{0x80000000, 0xFFFFFFFD, 0x80000000},
- []u32{0x80000000, 0xFFFFFFFE, 0x80000000},
- []u32{0x80000000, 0xFFFFFFFF, 0x80000000},
- []u32{0xFFFFFFFD, 0x00000001, 0x00000000},
- []u32{0xFFFFFFFD, 0x00000002, 0x00000001},
- []u32{0xFFFFFFFD, 0x00000003, 0x00000001},
- []u32{0xFFFFFFFD, 0x00000010, 0x0000000D},
- []u32{0xFFFFFFFD, 0x078644FA, 0x002AD6C9},
- []u32{0xFFFFFFFD, 0x0747AE14, 0x01333341},
- []u32{0xFFFFFFFD, 0x7FFFFFFF, 0x7FFFFFFE},
- []u32{0xFFFFFFFD, 0x80000000, 0x7FFFFFFD},
- []u32{0xFFFFFFFD, 0xFFFFFFFD, 0x00000000},
- []u32{0xFFFFFFFD, 0xFFFFFFFE, 0xFFFFFFFD},
- []u32{0xFFFFFFFD, 0xFFFFFFFF, 0xFFFFFFFD},
- []u32{0xFFFFFFFE, 0x00000001, 0x00000000},
- []u32{0xFFFFFFFE, 0x00000002, 0x00000000},
- []u32{0xFFFFFFFE, 0x00000003, 0x00000002},
- []u32{0xFFFFFFFE, 0x00000010, 0x0000000E},
- []u32{0xFFFFFFFE, 0x078644FA, 0x002AD6CA},
- []u32{0xFFFFFFFE, 0x0747AE14, 0x01333342},
- []u32{0xFFFFFFFE, 0x7FFFFFFF, 0x00000000},
- []u32{0xFFFFFFFE, 0x80000000, 0x7FFFFFFE},
- []u32{0xFFFFFFFE, 0xFFFFFFFD, 0x00000001},
- []u32{0xFFFFFFFE, 0xFFFFFFFE, 0x00000000},
- []u32{0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFE},
- []u32{0xFFFFFFFF, 0x00000001, 0x00000000},
- []u32{0xFFFFFFFF, 0x00000002, 0x00000001},
- []u32{0xFFFFFFFF, 0x00000003, 0x00000000},
- []u32{0xFFFFFFFF, 0x00000010, 0x0000000F},
- []u32{0xFFFFFFFF, 0x078644FA, 0x002AD6CB},
- []u32{0xFFFFFFFF, 0x0747AE14, 0x01333343},
- []u32{0xFFFFFFFF, 0x7FFFFFFF, 0x00000001},
- []u32{0xFFFFFFFF, 0x80000000, 0x7FFFFFFF},
- []u32{0xFFFFFFFF, 0xFFFFFFFD, 0x00000002},
- []u32{0xFFFFFFFF, 0xFFFFFFFE, 0x00000001},
- []u32{0xFFFFFFFF, 0xFFFFFFFF, 0x00000000}
+ []u32{ 0x00000000, 0x00000001, 0x00000000 },
+ []u32{ 0x00000000, 0x00000002, 0x00000000 },
+ []u32{ 0x00000000, 0x00000003, 0x00000000 },
+ []u32{ 0x00000000, 0x00000010, 0x00000000 },
+ []u32{ 0x00000000, 0x078644FA, 0x00000000 },
+ []u32{ 0x00000000, 0x0747AE14, 0x00000000 },
+ []u32{ 0x00000000, 0x7FFFFFFF, 0x00000000 },
+ []u32{ 0x00000000, 0x80000000, 0x00000000 },
+ []u32{ 0x00000000, 0xFFFFFFFD, 0x00000000 },
+ []u32{ 0x00000000, 0xFFFFFFFE, 0x00000000 },
+ []u32{ 0x00000000, 0xFFFFFFFF, 0x00000000 },
+ []u32{ 0x00000001, 0x00000001, 0x00000000 },
+ []u32{ 0x00000001, 0x00000002, 0x00000001 },
+ []u32{ 0x00000001, 0x00000003, 0x00000001 },
+ []u32{ 0x00000001, 0x00000010, 0x00000001 },
+ []u32{ 0x00000001, 0x078644FA, 0x00000001 },
+ []u32{ 0x00000001, 0x0747AE14, 0x00000001 },
+ []u32{ 0x00000001, 0x7FFFFFFF, 0x00000001 },
+ []u32{ 0x00000001, 0x80000000, 0x00000001 },
+ []u32{ 0x00000001, 0xFFFFFFFD, 0x00000001 },
+ []u32{ 0x00000001, 0xFFFFFFFE, 0x00000001 },
+ []u32{ 0x00000001, 0xFFFFFFFF, 0x00000001 },
+ []u32{ 0x00000002, 0x00000001, 0x00000000 },
+ []u32{ 0x00000002, 0x00000002, 0x00000000 },
+ []u32{ 0x00000002, 0x00000003, 0x00000002 },
+ []u32{ 0x00000002, 0x00000010, 0x00000002 },
+ []u32{ 0x00000002, 0x078644FA, 0x00000002 },
+ []u32{ 0x00000002, 0x0747AE14, 0x00000002 },
+ []u32{ 0x00000002, 0x7FFFFFFF, 0x00000002 },
+ []u32{ 0x00000002, 0x80000000, 0x00000002 },
+ []u32{ 0x00000002, 0xFFFFFFFD, 0x00000002 },
+ []u32{ 0x00000002, 0xFFFFFFFE, 0x00000002 },
+ []u32{ 0x00000002, 0xFFFFFFFF, 0x00000002 },
+ []u32{ 0x00000003, 0x00000001, 0x00000000 },
+ []u32{ 0x00000003, 0x00000002, 0x00000001 },
+ []u32{ 0x00000003, 0x00000003, 0x00000000 },
+ []u32{ 0x00000003, 0x00000010, 0x00000003 },
+ []u32{ 0x00000003, 0x078644FA, 0x00000003 },
+ []u32{ 0x00000003, 0x0747AE14, 0x00000003 },
+ []u32{ 0x00000003, 0x7FFFFFFF, 0x00000003 },
+ []u32{ 0x00000003, 0x80000000, 0x00000003 },
+ []u32{ 0x00000003, 0xFFFFFFFD, 0x00000003 },
+ []u32{ 0x00000003, 0xFFFFFFFE, 0x00000003 },
+ []u32{ 0x00000003, 0xFFFFFFFF, 0x00000003 },
+ []u32{ 0x00000010, 0x00000001, 0x00000000 },
+ []u32{ 0x00000010, 0x00000002, 0x00000000 },
+ []u32{ 0x00000010, 0x00000003, 0x00000001 },
+ []u32{ 0x00000010, 0x00000010, 0x00000000 },
+ []u32{ 0x00000010, 0x078644FA, 0x00000010 },
+ []u32{ 0x00000010, 0x0747AE14, 0x00000010 },
+ []u32{ 0x00000010, 0x7FFFFFFF, 0x00000010 },
+ []u32{ 0x00000010, 0x80000000, 0x00000010 },
+ []u32{ 0x00000010, 0xFFFFFFFD, 0x00000010 },
+ []u32{ 0x00000010, 0xFFFFFFFE, 0x00000010 },
+ []u32{ 0x00000010, 0xFFFFFFFF, 0x00000010 },
+ []u32{ 0x078644FA, 0x00000001, 0x00000000 },
+ []u32{ 0x078644FA, 0x00000002, 0x00000000 },
+ []u32{ 0x078644FA, 0x00000003, 0x00000000 },
+ []u32{ 0x078644FA, 0x00000010, 0x0000000A },
+ []u32{ 0x078644FA, 0x078644FA, 0x00000000 },
+ []u32{ 0x078644FA, 0x0747AE14, 0x003E96E6 },
+ []u32{ 0x078644FA, 0x7FFFFFFF, 0x078644FA },
+ []u32{ 0x078644FA, 0x80000000, 0x078644FA },
+ []u32{ 0x078644FA, 0xFFFFFFFD, 0x078644FA },
+ []u32{ 0x078644FA, 0xFFFFFFFE, 0x078644FA },
+ []u32{ 0x078644FA, 0xFFFFFFFF, 0x078644FA },
+ []u32{ 0x0747AE14, 0x00000001, 0x00000000 },
+ []u32{ 0x0747AE14, 0x00000002, 0x00000000 },
+ []u32{ 0x0747AE14, 0x00000003, 0x00000002 },
+ []u32{ 0x0747AE14, 0x00000010, 0x00000004 },
+ []u32{ 0x0747AE14, 0x078644FA, 0x0747AE14 },
+ []u32{ 0x0747AE14, 0x0747AE14, 0x00000000 },
+ []u32{ 0x0747AE14, 0x7FFFFFFF, 0x0747AE14 },
+ []u32{ 0x0747AE14, 0x80000000, 0x0747AE14 },
+ []u32{ 0x0747AE14, 0xFFFFFFFD, 0x0747AE14 },
+ []u32{ 0x0747AE14, 0xFFFFFFFE, 0x0747AE14 },
+ []u32{ 0x0747AE14, 0xFFFFFFFF, 0x0747AE14 },
+ []u32{ 0x7FFFFFFF, 0x00000001, 0x00000000 },
+ []u32{ 0x7FFFFFFF, 0x00000002, 0x00000001 },
+ []u32{ 0x7FFFFFFF, 0x00000003, 0x00000001 },
+ []u32{ 0x7FFFFFFF, 0x00000010, 0x0000000F },
+ []u32{ 0x7FFFFFFF, 0x078644FA, 0x00156B65 },
+ []u32{ 0x7FFFFFFF, 0x0747AE14, 0x043D70AB },
+ []u32{ 0x7FFFFFFF, 0x7FFFFFFF, 0x00000000 },
+ []u32{ 0x7FFFFFFF, 0x80000000, 0x7FFFFFFF },
+ []u32{ 0x7FFFFFFF, 0xFFFFFFFD, 0x7FFFFFFF },
+ []u32{ 0x7FFFFFFF, 0xFFFFFFFE, 0x7FFFFFFF },
+ []u32{ 0x7FFFFFFF, 0xFFFFFFFF, 0x7FFFFFFF },
+ []u32{ 0x80000000, 0x00000001, 0x00000000 },
+ []u32{ 0x80000000, 0x00000002, 0x00000000 },
+ []u32{ 0x80000000, 0x00000003, 0x00000002 },
+ []u32{ 0x80000000, 0x00000010, 0x00000000 },
+ []u32{ 0x80000000, 0x078644FA, 0x00156B66 },
+ []u32{ 0x80000000, 0x0747AE14, 0x043D70AC },
+ []u32{ 0x80000000, 0x7FFFFFFF, 0x00000001 },
+ []u32{ 0x80000000, 0x80000000, 0x00000000 },
+ []u32{ 0x80000000, 0xFFFFFFFD, 0x80000000 },
+ []u32{ 0x80000000, 0xFFFFFFFE, 0x80000000 },
+ []u32{ 0x80000000, 0xFFFFFFFF, 0x80000000 },
+ []u32{ 0xFFFFFFFD, 0x00000001, 0x00000000 },
+ []u32{ 0xFFFFFFFD, 0x00000002, 0x00000001 },
+ []u32{ 0xFFFFFFFD, 0x00000003, 0x00000001 },
+ []u32{ 0xFFFFFFFD, 0x00000010, 0x0000000D },
+ []u32{ 0xFFFFFFFD, 0x078644FA, 0x002AD6C9 },
+ []u32{ 0xFFFFFFFD, 0x0747AE14, 0x01333341 },
+ []u32{ 0xFFFFFFFD, 0x7FFFFFFF, 0x7FFFFFFE },
+ []u32{ 0xFFFFFFFD, 0x80000000, 0x7FFFFFFD },
+ []u32{ 0xFFFFFFFD, 0xFFFFFFFD, 0x00000000 },
+ []u32{ 0xFFFFFFFD, 0xFFFFFFFE, 0xFFFFFFFD },
+ []u32{ 0xFFFFFFFD, 0xFFFFFFFF, 0xFFFFFFFD },
+ []u32{ 0xFFFFFFFE, 0x00000001, 0x00000000 },
+ []u32{ 0xFFFFFFFE, 0x00000002, 0x00000000 },
+ []u32{ 0xFFFFFFFE, 0x00000003, 0x00000002 },
+ []u32{ 0xFFFFFFFE, 0x00000010, 0x0000000E },
+ []u32{ 0xFFFFFFFE, 0x078644FA, 0x002AD6CA },
+ []u32{ 0xFFFFFFFE, 0x0747AE14, 0x01333342 },
+ []u32{ 0xFFFFFFFE, 0x7FFFFFFF, 0x00000000 },
+ []u32{ 0xFFFFFFFE, 0x80000000, 0x7FFFFFFE },
+ []u32{ 0xFFFFFFFE, 0xFFFFFFFD, 0x00000001 },
+ []u32{ 0xFFFFFFFE, 0xFFFFFFFE, 0x00000000 },
+ []u32{ 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFE },
+ []u32{ 0xFFFFFFFF, 0x00000001, 0x00000000 },
+ []u32{ 0xFFFFFFFF, 0x00000002, 0x00000001 },
+ []u32{ 0xFFFFFFFF, 0x00000003, 0x00000000 },
+ []u32{ 0xFFFFFFFF, 0x00000010, 0x0000000F },
+ []u32{ 0xFFFFFFFF, 0x078644FA, 0x002AD6CB },
+ []u32{ 0xFFFFFFFF, 0x0747AE14, 0x01333343 },
+ []u32{ 0xFFFFFFFF, 0x7FFFFFFF, 0x00000001 },
+ []u32{ 0xFFFFFFFF, 0x80000000, 0x7FFFFFFF },
+ []u32{ 0xFFFFFFFF, 0xFFFFFFFD, 0x00000002 },
+ []u32{ 0xFFFFFFFF, 0xFFFFFFFE, 0x00000001 },
+ []u32{ 0xFFFFFFFF, 0xFFFFFFFF, 0x00000000 },
};
for (cases) |case| {