
rustc-builtins
[WIP] Porting compiler-rt
intrinsics to Rust
See rust-lang/rust#35437.
Contributing
- Pick one or more intrinsics from the [pending list][/#progress].
- Fork this repository
- Port the intrinsic(s) and their corresponding unit tests from their C implementation to
Rust.
- Send a Pull Request (PR)
- Once the PR passes our extensive testing infrastructure, we'll merge it!
- Celebrate :tada:
Progress
Unimplemented functions
These builtins involve floating-point types ("f128
", "f80
" and complex numbers) that are not supported by Rust.
addtf3.c
comparetf2.c
divdc3.c
divsc3.c
divtc3.c
divtf3.c
divxc3.c
extenddftf2.c
extendsftf2.c
fixtfdi.c
fixtfsi.c
fixtfti.c
fixunstfdi.c
fixunstfsi.c
fixunstfti.c
fixunsxfdi.c
fixunsxfsi.c
fixunsxfti.c
fixxfdi.c
fixxfti.c
floatditf.c
floatdixf.c
floatsitf.c
floattixf.c
floatunditf.c
floatundixf.c
floatunsitf.c
floatuntixf.c
i386/floatdixf.S
i386/floatundixf.S
muldc3.c
mulsc3.c
multc3.c
multf3.c
mulxc3.c
powitf2.c
powixf2.c
ppc/divtc3.c
ppc/fixtfdi.c
ppc/fixunstfdi.c
ppc/floatditf.c
ppc/floatunditf.c
ppc/multc3.c
subtf3.c
trunctfdf2.c
trunctfsf2.c
x86_64/floatdixf.c
x86_64/floatundixf.S
Rust only exposes atomic types on platforms that support them, and therefore does not need to fall back to software implementations.
arm/sync_fetch_and_add_4.S
arm/sync_fetch_and_add_8.S
arm/sync_fetch_and_and_4.S
arm/sync_fetch_and_and_8.S
arm/sync_fetch_and_max_4.S
arm/sync_fetch_and_max_8.S
arm/sync_fetch_and_min_4.S
arm/sync_fetch_and_min_8.S
arm/sync_fetch_and_nand_4.S
arm/sync_fetch_and_nand_8.S
arm/sync_fetch_and_or_4.S
arm/sync_fetch_and_or_8.S
arm/sync_fetch_and_sub_4.S
arm/sync_fetch_and_sub_8.S
arm/sync_fetch_and_umax_4.S
arm/sync_fetch_and_umax_8.S
arm/sync_fetch_and_umin_4.S
arm/sync_fetch_and_umin_8.S
arm/sync_fetch_and_xor_4.S
arm/sync_fetch_and_xor_8.S
arm/sync_synchronize.S
atomic.c
atomic_flag_clear.c
atomic_flag_clear_explicit.c
atomic_flag_test_and_set.c
atomic_flag_test_and_set_explicit.c
atomic_signal_fence.c
atomic_thread_fence.c
Miscellaneous functionality that is not used by Rust.
apple_versioning.c
clear_cache.c
emutls.c
enable_execute_stack.c
eprintf.c
gcc_personality_v0.c
trampoline_setup.c
License
Licensed under either of
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the
work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.