|
@@ -4,13 +4,14 @@
|
|
|
// to link due to the missing intrinsic (symbol).
|
|
|
|
|
|
#![allow(unused_features)]
|
|
|
+#![cfg_attr(thumb, no_main)]
|
|
|
#![deny(dead_code)]
|
|
|
+#![feature(asm)]
|
|
|
#![feature(core_float)]
|
|
|
#![feature(lang_items)]
|
|
|
#![feature(libc)]
|
|
|
#![feature(start)]
|
|
|
#![no_std]
|
|
|
-#![cfg_attr(thumb, no_main)]
|
|
|
|
|
|
#[cfg(not(thumb))]
|
|
|
extern crate libc;
|
|
@@ -304,50 +305,56 @@ mod intrinsics {
|
|
|
fn run() {
|
|
|
use intrinsics::*;
|
|
|
|
|
|
- aeabi_d2f(2.);
|
|
|
- aeabi_d2i(2.);
|
|
|
- aeabi_d2l(2.);
|
|
|
- aeabi_d2uiz(2.);
|
|
|
- aeabi_d2ulz(2.);
|
|
|
- aeabi_dadd(2., 3.);
|
|
|
- aeabi_dcmpeq(2., 3.);
|
|
|
- aeabi_dcmpgt(2., 3.);
|
|
|
- aeabi_dcmplt(2., 3.);
|
|
|
- aeabi_ddiv(2., 3.);
|
|
|
- aeabi_dmul(2., 3.);
|
|
|
- aeabi_dsub(2., 3.);
|
|
|
- aeabi_f2d(2.);
|
|
|
- aeabi_f2iz(2.);
|
|
|
- aeabi_f2lz(2.);
|
|
|
- aeabi_f2uiz(2.);
|
|
|
- aeabi_f2ulz(2.);
|
|
|
- aeabi_fadd(2., 3.);
|
|
|
- aeabi_fcmpeq(2., 3.);
|
|
|
- aeabi_fcmpgt(2., 3.);
|
|
|
- aeabi_fcmplt(2., 3.);
|
|
|
- aeabi_fdiv(2., 3.);
|
|
|
- aeabi_fmul(2., 3.);
|
|
|
- aeabi_fsub(2., 3.);
|
|
|
- aeabi_i2d(2);
|
|
|
- aeabi_i2f(2);
|
|
|
- aeabi_idiv(2, 3);
|
|
|
- aeabi_idivmod(2, 3);
|
|
|
- aeabi_l2d(2);
|
|
|
- aeabi_l2f(2);
|
|
|
- aeabi_ldivmod(2, 3);
|
|
|
- aeabi_lmul(2, 3);
|
|
|
- aeabi_ui2d(2);
|
|
|
- aeabi_ui2f(2);
|
|
|
- aeabi_uidiv(2, 3);
|
|
|
- aeabi_uidivmod(2, 3);
|
|
|
- aeabi_ul2d(2);
|
|
|
- aeabi_ul2f(2);
|
|
|
- aeabi_uldivmod(2, 3);
|
|
|
- moddi3(2, 3);
|
|
|
- mulodi4(2, 3);
|
|
|
- powidf2(2., 3);
|
|
|
- powisf2(2., 3);
|
|
|
- umoddi3(2, 3);
|
|
|
+ // A copy of "test::black_box". Used to prevent LLVM from optimizing away the intrinsics during LTO
|
|
|
+ fn bb<T>(dummy: T) -> T {
|
|
|
+ unsafe { asm!("" : : "r"(&dummy)) }
|
|
|
+ dummy
|
|
|
+ }
|
|
|
+
|
|
|
+ bb(aeabi_d2f(bb(2.)));
|
|
|
+ bb(aeabi_d2i(bb(2.)));
|
|
|
+ bb(aeabi_d2l(bb(2.)));
|
|
|
+ bb(aeabi_d2uiz(bb(2.)));
|
|
|
+ bb(aeabi_d2ulz(bb(2.)));
|
|
|
+ bb(aeabi_dadd(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_dcmpeq(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_dcmpgt(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_dcmplt(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_ddiv(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_dmul(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_dsub(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_f2d(bb(2.)));
|
|
|
+ bb(aeabi_f2iz(bb(2.)));
|
|
|
+ bb(aeabi_f2lz(bb(2.)));
|
|
|
+ bb(aeabi_f2uiz(bb(2.)));
|
|
|
+ bb(aeabi_f2ulz(bb(2.)));
|
|
|
+ bb(aeabi_fadd(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_fcmpeq(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_fcmpgt(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_fcmplt(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_fdiv(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_fmul(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_fsub(bb(2.), bb(3.)));
|
|
|
+ bb(aeabi_i2d(bb(2)));
|
|
|
+ bb(aeabi_i2f(bb(2)));
|
|
|
+ bb(aeabi_idiv(bb(2), bb(3)));
|
|
|
+ bb(aeabi_idivmod(bb(2), bb(3)));
|
|
|
+ bb(aeabi_l2d(bb(2)));
|
|
|
+ bb(aeabi_l2f(bb(2)));
|
|
|
+ bb(aeabi_ldivmod(bb(2), bb(3)));
|
|
|
+ bb(aeabi_lmul(bb(2), bb(3)));
|
|
|
+ bb(aeabi_ui2d(bb(2)));
|
|
|
+ bb(aeabi_ui2f(bb(2)));
|
|
|
+ bb(aeabi_uidiv(bb(2), bb(3)));
|
|
|
+ bb(aeabi_uidivmod(bb(2), bb(3)));
|
|
|
+ bb(aeabi_ul2d(bb(2)));
|
|
|
+ bb(aeabi_ul2f(bb(2)));
|
|
|
+ bb(aeabi_uldivmod(bb(2), bb(3)));
|
|
|
+ bb(moddi3(bb(2), bb(3)));
|
|
|
+ bb(mulodi4(bb(2), bb(3)));
|
|
|
+ bb(powidf2(bb(2.), bb(3)));
|
|
|
+ bb(powisf2(bb(2.), bb(3)));
|
|
|
+ bb(umoddi3(bb(2), bb(3)));
|
|
|
}
|
|
|
|
|
|
#[cfg(all(feature = "c", not(thumb)))]
|