Created
December 12, 2021 16:39
-
-
Save matu3ba/3fdecf00934bb064657b080ae2ff27a2 to your computer and use it in GitHub Desktop.
Helper to create test data for compiler_rt negation
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; | |
fn printTestCases(comptime T: type, min_divided: T, max_divided: T) !void { | |
print("try test__negsi2({d}, {d});\n", .{ min_divided, max_divided }); | |
print("try test__negsi2({d}, {d});\n", .{ max_divided, min_divided }); | |
} | |
pub fn main() !void { | |
const ST = i128; | |
const BS = @bitSizeOf(ST); | |
const min_usable = math.minInt(ST) + 1; | |
const max_usable = math.maxInt(ST); | |
print("// max_usable == MAX(i32) == -MIN(i32) == {d} == {x}\n", .{ max_usable, max_usable }); | |
print("// divTrunc: max_usable / i, i=1,2,3,5,100\n", .{}); | |
print("// {x} / i\n", .{max_usable}); | |
var min_divided: ST = @divTrunc(min_usable, 3); | |
var max_divided: ST = @divTrunc(max_usable, 3); | |
try printTestCases(ST, min_divided, max_divided); | |
min_divided = @divTrunc(min_usable, 5); | |
max_divided = @divTrunc(max_usable, 5); | |
try printTestCases(ST, min_divided, max_divided); | |
min_divided = @divTrunc(min_usable, 10); | |
max_divided = @divTrunc(max_usable, 10); | |
try printTestCases(ST, min_divided, max_divided); | |
print("// shifting1: max_usable >> i, i=0..bitsize\n", .{}); | |
print("// {x} >> i\n", .{max_usable}); | |
print("// {x} >> i + 1\n", .{max_usable}); | |
print("// {x} >> i + 3\n", .{max_usable}); | |
print("// {x} >> i + 7\n", .{max_usable}); | |
comptime var i = 0; | |
inline while (i < BS - 4) : (i += 1) { | |
min_divided = min_usable >> i; | |
max_divided = max_usable >> i; | |
try printTestCases(ST, min_divided, max_divided); | |
min_divided = (min_usable >> i) + 1; | |
max_divided = (max_usable >> i) - 1; | |
try printTestCases(ST, min_divided, max_divided); | |
min_divided = (min_usable >> i) + 3; | |
max_divided = (max_usable >> i) - 3; | |
try printTestCases(ST, min_divided, max_divided); | |
min_divided = (min_usable >> i) + 7; | |
max_divided = (max_usable >> i) - 7; | |
try printTestCases(ST, min_divided, max_divided); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment