Created
December 13, 2021 21:47
-
-
Save matu3ba/840a8a7772980a84c1411d95ddff92b0 to your computer and use it in GitHub Desktop.
Helper to create test data for compiler_rt compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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