1. In UEFI x86 arch, probestack need triple underscore.
2. In UEFI, probestack function do things like _chkstk(in MSVC).
MSVC x32's _chkstk and cygwin/mingw's _alloca adjust %esp themselves
MSVC x64's __chkstk and cygwin/mingw's ___chkstk_ms do not adjust
%rsp themselves.
But current probestack doesn't adjust esp. And LLVM doesn't generate
sub %eax, %esp after probestack. So we adjust esp in probestack like
MSVC x32's _chkstk.
* add 32 bit shift instructions to src/int/shift.rs
__ashlsi3
__ashrsi3
__lshrsi3
* add int_impl! for 16 bit numbers and large_int! for i32 and u32
* add tests in testcrate/build.rs
https://github.com/rust-lang/rust/pull/72700 caused the existing
`allow(improper_ctypes)` guard to stop working, we now need
`allow(improper_ctypes_definitions)` instead.
We keep the old one to avoid any issues with older nightlies.
Signed-off-by: Joe Richey <joerichey@google.com>
* Expand wasm32 testing on CI
Run the full `run.sh` test script to get full assertions, including that
nothing in the wasm compiler-builtins is panicking. Unfortunately it's
currently panicking, so this is good to weed out!
* Update libm
* Use macros for more division/array checks
This commit moves over more array accesses to the `i!` macro to avoid
bounds checks when debug assertions are disabled. This is surfaced from
rust-lang/compiler-builtins#360 where recent changes in codegen units
has caused some bounds checks to not get elided in release mode. This
also adds a `div!` macro to work around rust-lang/rust#72751.
* Don't test/bench our shim crate
It's not intended to run all our tests
`AArch64` GCCs exit with an error condition when they encounter any kind of
floating point code if the `nofp` and/or `nosimd` compiler flags have been set.
Therefore, evaluate if those flags are present and set a boolean that causes any
compiler-rt intrinsics that contain floating point source to be excluded for
this target.
This patch prepares https://github.com/rust-lang/rust/pull/68334
The `LICENSE.txt` file should be distributed to crates.io, but it wasn't
due to the `Cargo.toml` entry in the `includes` field being
`LICENSE.txt` with lower-case file extension while the file itself had
an upper-case extension.