//@ build-pass //@ compile-flags: --target=armv7-unknown-linux-gnueabihf //@ needs-llvm-components: arm #![feature(no_core, rustc_attrs, decl_macro, lang_items)] #![crate_type = "rlib"] #![no_std] #![no_core] // We accidentally classified "d0"..="d15" as dregs, even though they are in dreg_low16, // and thus didn't compile them on platforms with only 16 dregs. // Highlighted in https://github.com/rust-lang/rust/issues/126797 #[lang = "sized"] trait Sized {} #[lang = "copy"] trait Copy {} impl Copy for f64 {} #[rustc_builtin_macro] pub macro asm("assembly template", $(operands,)* $(options($(option),*))?) { /* compiler built-in */ } fn f(x: f64) -> f64 { let out: f64; unsafe { asm!("vmov.f64 d1, d0", out("d1") out, in("d0") x); } out }