aboutsummaryrefslogtreecommitdiff
path: root/lib/std/special/compiler_rt/fixunstfsi_test.zig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/special/compiler_rt/fixunstfsi_test.zig')
-rw-r--r--lib/std/special/compiler_rt/fixunstfsi_test.zig22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/std/special/compiler_rt/fixunstfsi_test.zig b/lib/std/special/compiler_rt/fixunstfsi_test.zig
new file mode 100644
index 0000000000..e709636912
--- /dev/null
+++ b/lib/std/special/compiler_rt/fixunstfsi_test.zig
@@ -0,0 +1,22 @@
+const __fixunstfsi = @import("fixunstfsi.zig").__fixunstfsi;
+const testing = @import("std").testing;
+
+fn test__fixunstfsi(a: f128, expected: u32) void {
+ const x = __fixunstfsi(a);
+ testing.expect(x == expected);
+}
+
+const inf128 = @bitCast(f128, u128(0x7fff0000000000000000000000000000));
+
+test "fixunstfsi" {
+ test__fixunstfsi(inf128, 0xffffffff);
+ test__fixunstfsi(0, 0x0);
+ test__fixunstfsi(0x1.23456789abcdefp+5, 0x24);
+ test__fixunstfsi(0x1.23456789abcdefp-3, 0x0);
+ test__fixunstfsi(0x1.23456789abcdefp+20, 0x123456);
+ test__fixunstfsi(0x1.23456789abcdefp+40, 0xffffffff);
+ test__fixunstfsi(0x1.23456789abcdefp+256, 0xffffffff);
+ test__fixunstfsi(-0x1.23456789abcdefp+3, 0x0);
+
+ test__fixunstfsi(0x1.p+32, 0xFFFFFFFF);
+}