aboutsummaryrefslogtreecommitdiff
path: root/lib/std/special/compiler_rt/fixunstfti_test.zig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/special/compiler_rt/fixunstfti_test.zig')
-rw-r--r--lib/std/special/compiler_rt/fixunstfti_test.zig32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/std/special/compiler_rt/fixunstfti_test.zig b/lib/std/special/compiler_rt/fixunstfti_test.zig
new file mode 100644
index 0000000000..833e4779dd
--- /dev/null
+++ b/lib/std/special/compiler_rt/fixunstfti_test.zig
@@ -0,0 +1,32 @@
+const __fixunstfti = @import("fixunstfti.zig").__fixunstfti;
+const testing = @import("std").testing;
+
+fn test__fixunstfti(a: f128, expected: u128) void {
+ const x = __fixunstfti(a);
+ testing.expect(x == expected);
+}
+
+const inf128 = @bitCast(f128, u128(0x7fff0000000000000000000000000000));
+
+test "fixunstfti" {
+ test__fixunstfti(inf128, 0xffffffffffffffffffffffffffffffff);
+
+ test__fixunstfti(0.0, 0);
+
+ test__fixunstfti(0.5, 0);
+ test__fixunstfti(0.99, 0);
+ test__fixunstfti(1.0, 1);
+ test__fixunstfti(1.5, 1);
+ test__fixunstfti(1.99, 1);
+ test__fixunstfti(2.0, 2);
+ test__fixunstfti(2.01, 2);
+ test__fixunstfti(-0.01, 0);
+ test__fixunstfti(-0.99, 0);
+
+ test__fixunstfti(0x1.p+128, 0xffffffffffffffffffffffffffffffff);
+
+ test__fixunstfti(0x1.FFFFFEp+126, 0x7fffff80000000000000000000000000);
+ test__fixunstfti(0x1.FFFFFEp+127, 0xffffff00000000000000000000000000);
+ test__fixunstfti(0x1.FFFFFEp+128, 0xffffffffffffffffffffffffffffffff);
+ test__fixunstfti(0x1.FFFFFEp+129, 0xffffffffffffffffffffffffffffffff);
+}