diff options
Diffstat (limited to 'vendor/compiler_builtins/src/lib.rs')
-rw-r--r-- | vendor/compiler_builtins/src/lib.rs | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/vendor/compiler_builtins/src/lib.rs b/vendor/compiler_builtins/src/lib.rs new file mode 100644 index 000000000..009923d27 --- /dev/null +++ b/vendor/compiler_builtins/src/lib.rs @@ -0,0 +1,72 @@ +#![cfg_attr(feature = "compiler-builtins", compiler_builtins)] +#![cfg_attr(not(feature = "no-asm"), feature(asm))] +#![feature(abi_unadjusted)] +#![cfg_attr(not(feature = "no-asm"), feature(global_asm))] +#![feature(cfg_target_has_atomic)] +#![feature(compiler_builtins)] +#![feature(core_ffi_c)] +#![feature(core_intrinsics)] +#![feature(lang_items)] +#![feature(linkage)] +#![feature(naked_functions)] +#![feature(repr_simd)] +#![no_builtins] +#![no_std] +#![allow(unused_features)] +// We use `u128` in a whole bunch of places which we currently agree with the +// compiler on ABIs and such, so we should be "good enough" for now and changes +// to the `u128` ABI will be reflected here. +#![allow(improper_ctypes, improper_ctypes_definitions)] +// `mem::swap` cannot be used because it may generate references to memcpy in unoptimized code. +#![allow(clippy::manual_swap)] +// Support compiling on both stage0 and stage1 which may differ in supported stable features. +#![allow(stable_features)] + +// We disable #[no_mangle] for tests so that we can verify the test results +// against the native compiler-rt implementations of the builtins. + +// NOTE cfg(all(feature = "c", ..)) indicate that compiler-rt provides an arch optimized +// implementation of that intrinsic and we'll prefer to use that + +// NOTE(aapcs, aeabi, arm) ARM targets use intrinsics named __aeabi_* instead of the intrinsics +// that follow "x86 naming convention" (e.g. addsf3). Those aeabi intrinsics must adhere to the +// AAPCS calling convention (`extern "aapcs"`) because that's how LLVM will call them. + +#[cfg(test)] +extern crate core; + +#[macro_use] +mod macros; + +pub mod float; +pub mod int; + +#[cfg(any( + all(target_family = "wasm", target_os = "unknown"), + all(target_arch = "x86_64", target_os = "uefi"), + all(target_arch = "arm", target_os = "none"), + all(target_vendor = "fortanix", target_env = "sgx") +))] +pub mod math; +pub mod mem; + +#[cfg(target_arch = "arm")] +pub mod arm; + +#[cfg(all( + kernel_user_helpers, + any(target_os = "linux", target_os = "android"), + target_arch = "arm" +))] +pub mod arm_linux; + +#[cfg(any(target_arch = "riscv32", target_arch = "riscv64"))] +pub mod riscv; + +#[cfg(target_arch = "x86")] +pub mod x86; + +#[cfg(target_arch = "x86_64")] +pub mod x86_64; + +pub mod probestack; |