Skip to content

Instantly share code, notes, and snippets.

@matu3ba
Created December 13, 2021 21:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matu3ba/840a8a7772980a84c1411d95ddff92b0 to your computer and use it in GitHub Desktop.
Save matu3ba/840a8a7772980a84c1411d95ddff92b0 to your computer and use it in GitHub Desktop.
Helper to create test data for compiler_rt compare
const math = @import("std").math;
const print = @import("std").debug.print;
// a < b => 0
// a == b => 1
// a > b => 2
fn printTestCase(comptime T: type, a: T, b: T) !void {
var cmp: i32 = undefined;
if (a < b) {
cmp = 0;
} else if (a == b) {
cmp = 1;
} else {
cmp = 2;
}
print("try test__ucmpti2({d}, {d}, {d});\n", .{ a, b, cmp });
}
pub fn main() !void {
const ST = u128;
const min_int = math.minInt(ST);
const max_int = math.maxInt(ST);
const min_int_half = @divTrunc(min_int, 2);
const max_int_half = @divTrunc(max_int, 2);
print("// minInt == {d}\n", .{min_int});
print("// maxInt == {d}\n", .{max_int});
print("// minInt/2 == {d}\n", .{min_int / 2});
print("// maxInt/2 == {d}\n", .{max_int / 2});
print("// 1. equality minInt, minInt/2, 0, maxInt/2, maxInt\n", .{});
try printTestCase(ST, min_int, min_int);
try printTestCase(ST, min_int + 1, min_int + 1);
try printTestCase(ST, min_int_half, min_int_half);
//try printTestCase(ST, -1, -1);
try printTestCase(ST, 0, 0);
try printTestCase(ST, 1, 1);
try printTestCase(ST, max_int_half, max_int_half);
try printTestCase(ST, max_int - 1, max_int - 1);
try printTestCase(ST, max_int, max_int);
print("// 2. cmp minInt, {{ minInt + 1, minInt/2, -2,-1,0,1,2, maxInt/2, maxInt-1, maxInt}}\n", .{});
//try printTestCase(ST, min_int, min_int);
try printTestCase(ST, min_int, min_int + 1);
try printTestCase(ST, min_int, min_int_half);
//try printTestCase(ST, min_int, -1);
try printTestCase(ST, min_int, 0);
try printTestCase(ST, min_int, 1);
try printTestCase(ST, min_int, max_int_half);
try printTestCase(ST, min_int, max_int - 1);
try printTestCase(ST, min_int, max_int);
print("// 3. cmp minInt+1, {{minInt, minInt/2, -2,-1,0,1,2, maxInt/2, maxInt-1, maxInt}}\n", .{});
try printTestCase(ST, min_int + 1, min_int);
//try printTestCase(ST, min_int+1, min_int+1);
try printTestCase(ST, min_int + 1, min_int_half);
//try printTestCase(ST, min_int + 1, -1);
try printTestCase(ST, min_int + 1, 0);
try printTestCase(ST, min_int + 1, 1);
try printTestCase(ST, min_int + 1, max_int_half);
try printTestCase(ST, min_int + 1, max_int - 1);
try printTestCase(ST, min_int + 1, max_int);
print("// 4. cmp minInt/2, {{minInt, minInt + 1, -2,-1,0,1,2, maxInt/2, maxInt-1, maxInt}}\n", .{});
try printTestCase(ST, min_int_half, min_int);
try printTestCase(ST, min_int_half, min_int + 1);
//try printTestCase(ST, min_int_half, min_int_half);
//try printTestCase(ST, min_int_half, -1);
try printTestCase(ST, min_int_half, 0);
try printTestCase(ST, min_int_half, 1);
try printTestCase(ST, min_int_half, max_int_half);
try printTestCase(ST, min_int_half, max_int - 1);
try printTestCase(ST, min_int_half, max_int);
print("// 5. cmp -1, {{minInt, minInt + 1, minInt/2, -2, 0,1,2, maxInt/2, maxInt-1, maxInt}}\n", .{});
//try printTestCase(ST, -1, min_int);
//try printTestCase(ST, -1, min_int + 1);
//try printTestCase(ST, -1, min_int_half);
////try printTestCase(ST, -1, -1);
//try printTestCase(ST, -1, 0);
//try printTestCase(ST, -1, 1);
//try printTestCase(ST, -1, max_int_half);
//try printTestCase(ST, -1, max_int - 1);
//try printTestCase(ST, -1, max_int);
print("// 6. cmp 0, {{minInt, minInt + 1, minInt/2, -2,-1, 1,2, maxInt/2, maxInt-1, maxInt}}\n", .{});
try printTestCase(ST, 0, min_int);
try printTestCase(ST, 0, min_int + 1);
try printTestCase(ST, 0, min_int_half);
//try printTestCase(ST, 0, -1);
//try printTestCase(ST, 0, 0);
try printTestCase(ST, 0, 1);
try printTestCase(ST, 0, max_int_half);
try printTestCase(ST, 0, max_int - 1);
try printTestCase(ST, 0, max_int);
print("// 7. cmp 1, {{minInt, minInt + 1, minInt/2, -2,-1,0, 2, maxInt/2, maxInt-1, maxInt}}\n", .{});
try printTestCase(ST, 1, min_int);
try printTestCase(ST, 1, min_int + 1);
try printTestCase(ST, 1, min_int_half);
//try printTestCase(ST, 1, -1);
try printTestCase(ST, 1, 0);
//try printTestCase(ST, 1, 1);
try printTestCase(ST, 1, max_int_half);
try printTestCase(ST, 1, max_int - 1);
try printTestCase(ST, 1, max_int);
print("// 8. cmp maxInt/2, {{minInt, minInt + 1, minInt/2, -2,-1,0,1,2, maxInt-1, maxInt}}\n", .{});
try printTestCase(ST, max_int_half, min_int);
try printTestCase(ST, max_int_half, min_int + 1);
try printTestCase(ST, max_int_half, min_int_half);
//try printTestCase(ST, max_int_half, -1);
try printTestCase(ST, max_int_half, 0);
try printTestCase(ST, max_int_half, 1);
//try printTestCase(ST, max_int_half, max_int_half);
try printTestCase(ST, max_int_half, max_int - 1);
try printTestCase(ST, max_int_half, max_int);
print("// 9. cmp maxInt-1, {{minInt, minInt + 1, minInt/2, -2,-1,0,1,2, maxInt/2, maxInt}}\n", .{});
try printTestCase(ST, max_int - 1, min_int);
try printTestCase(ST, max_int - 1, min_int + 1);
try printTestCase(ST, max_int - 1, min_int_half);
//try printTestCase(ST, max_int - 1, -1);
try printTestCase(ST, max_int - 1, 0);
try printTestCase(ST, max_int - 1, 1);
try printTestCase(ST, max_int - 1, max_int_half);
//try printTestCase(ST, max_int-1, max_int-1);
try printTestCase(ST, max_int - 1, max_int);
print("// 10.cmp maxInt, {{minInt, minInt + 1, minInt/2, -2,-1,0,1,2, maxInt/2, maxInt-1, }}\n", .{});
try printTestCase(ST, max_int, min_int);
try printTestCase(ST, max_int, min_int + 1);
try printTestCase(ST, max_int, min_int_half);
//try printTestCase(ST, max_int, -1);
try printTestCase(ST, max_int, 0);
try printTestCase(ST, max_int, 1);
try printTestCase(ST, max_int, max_int_half);
try printTestCase(ST, max_int, max_int - 1);
//try printTestCase(ST, max_int, max_int);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment