mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-09 15:19:07 +00:00
Add support for half-precision floating point operations. Introduce `__extendhfsf2` and `__truncsfhf2` in std/special/compiler_rt. Add `__gnu_h2f_ieee` and `__gnu_f2h_ieee` as aliases that are used in Windows builds. The logic in std/special/compiler_rt/extendXfYf2.zig has been reworked and can now operate on 16 bits floating point types. `extendXfYf2()` and `truncXfYf2()` are marked `inline` to work around a not entirely understood stack alignment issue on Windows when calling the f16 versions of the builtins. closes #1122 |
||
|---|---|---|
| .. | ||
| aulldiv.zig | ||
| aullrem.zig | ||
| comparetf2.zig | ||
| divti3.zig | ||
| divti3_test.zig | ||
| extendXfYf2.zig | ||
| extendXfYf2_test.zig | ||
| fixuint.zig | ||
| fixunsdfdi.zig | ||
| fixunsdfdi_test.zig | ||
| fixunsdfsi.zig | ||
| fixunsdfsi_test.zig | ||
| fixunsdfti.zig | ||
| fixunsdfti_test.zig | ||
| fixunssfdi.zig | ||
| fixunssfdi_test.zig | ||
| fixunssfsi.zig | ||
| fixunssfsi_test.zig | ||
| fixunssfti.zig | ||
| fixunssfti_test.zig | ||
| fixunstfdi.zig | ||
| fixunstfdi_test.zig | ||
| fixunstfsi.zig | ||
| fixunstfsi_test.zig | ||
| fixunstfti.zig | ||
| fixunstfti_test.zig | ||
| floatuntidf.zig | ||
| floatuntidf_test.zig | ||
| index.zig | ||
| muloti4.zig | ||
| muloti4_test.zig | ||
| README.md | ||
| truncXfYf2.zig | ||
| truncXfYf2_test.zig | ||
| udivmod.zig | ||
| udivmoddi4.zig | ||
| udivmoddi4_test.zig | ||
| udivmodti4.zig | ||
| udivmodti4_test.zig | ||
| udivti3.zig | ||
| umodti3.zig | ||
This compiler-rt library is ported from LLVM.
It's needed because LLVM emits library calls to compiler-rt when hardware lacks functionality, for example, 64-bit integer multiplication on 32-bit x86.
This library is automatically built as-needed for the compilation target and then statically linked and therefore is a transparent dependency for the programmer.
Any bugs should be solved by trying to duplicate the bug upstream.
- If the bug exists upstream, get it fixed with the LLVM team and then port the fix downstream to Zig.
- If the bug only exists in Zig, something went wrong porting the code, and you can run the C code and Zig code side by side in a debugger to figure out what's happening differently.