diff options
| author | Madhav Madhusoodanan <f20200049@pilani.bits-pilani.ac.in> | 2025-04-19 23:41:25 +0530 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2025-05-27 23:27:38 +0000 |
| commit | a416e3ea11d5c1e0518aa5635c1f2474d9942c38 (patch) | |
| tree | 1366ea42bd7b8e06023252ef39f6b39f01ccd0d7 /library/stdarch/crates/intrinsic-test/src | |
| parent | 8d0141ee198560f4409e9274341a3277a0897336 (diff) | |
| download | rust-a416e3ea11d5c1e0518aa5635c1f2474d9942c38.tar.gz rust-a416e3ea11d5c1e0518aa5635c1f2474d9942c38.zip | |
code cleanup
Diffstat (limited to 'library/stdarch/crates/intrinsic-test/src')
| -rw-r--r-- | library/stdarch/crates/intrinsic-test/src/arm/functions.rs | 38 | ||||
| -rw-r--r-- | library/stdarch/crates/intrinsic-test/src/common/compile_c.rs | 8 |
2 files changed, 23 insertions, 23 deletions
diff --git a/library/stdarch/crates/intrinsic-test/src/arm/functions.rs b/library/stdarch/crates/intrinsic-test/src/arm/functions.rs index 6f39e4a6587..f471c4b33d4 100644 --- a/library/stdarch/crates/intrinsic-test/src/arm/functions.rs +++ b/library/stdarch/crates/intrinsic-test/src/arm/functions.rs @@ -11,7 +11,6 @@ use crate::common::intrinsic_types::IntrinsicTypeDefinition; use crate::common::write_file; use itertools::Itertools; use rayon::prelude::*; -use std::collections::BTreeMap; // The number of times each intrinsic will be called. const PASSES: u32 = 20; @@ -162,11 +161,11 @@ fn generate_rust_program_arm( fn compile_c_arm( intrinsics_name_list: &Vec<String>, - _filename_mapping: BTreeMap<&String, String>, compiler: &str, target: &str, cxx_toolchain_dir: Option<&str>, ) -> bool { + // -ffp-contract=off emulates Rust's approach of not fusing separate mul-add operations let mut command = CompilationCommandBuilder::new() .add_arch_flags(vec!["armv8.6-a", "crypto", "crc", "dotprod", "fp16"]) .set_compiler(compiler) @@ -180,8 +179,17 @@ fn compile_c_arm( command = command.add_arch_flags(vec!["faminmax", "lut", "sha3"]); } - command = if target == "aarch64_be-unknown-linux-gnu" { - command + /* + * clang++ cannot link an aarch64_be object file, so we invoke + * aarch64_be-unknown-linux-gnu's C++ linker. This ensures that we + * are testing the intrinsics against LLVM. + * + * Note: setting `--sysroot=<...>` which is the obvious thing to do + * does not work as it gets caught up with `#include_next <stdlib.h>` + * not existing... + */ + if target == "aarch64_be-unknown-linux-gnu" { + command = command .set_linker( cxx_toolchain_dir.unwrap_or("").to_string() + "/bin/aarch64_be-none-linux-gnu-g++", ) @@ -192,14 +200,12 @@ fn compile_c_arm( "/aarch64_be-none-linux-gnu/include/c++/14.2.1/aarch64_be-none-linux-gnu", "/aarch64_be-none-linux-gnu/include/c++/14.2.1/backward", "/aarch64_be-none-linux-gnu/libc/usr/include", - ]) - } else { - if compiler.contains("clang") { - command.add_extra_flag(format!("-target {target}").as_str()) - } else { - command.add_extra_flag("-flax-vector-conversions") - } - }; + ]); + } + + if !compiler.contains("clang") { + command = command.add_extra_flag("-flax-vector-conversions"); + } let compiler_commands = intrinsics_name_list .iter() @@ -237,13 +243,7 @@ pub fn build_c( match compiler { None => true, - Some(compiler) => compile_c_arm( - &intrinsics_name_list, - filename_mapping, - compiler, - target, - cxx_toolchain_dir, - ), + Some(compiler) => compile_c_arm(&intrinsics_name_list, compiler, target, cxx_toolchain_dir), } } diff --git a/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs b/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs index f018e02fb2f..b38e8b1499a 100644 --- a/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs +++ b/library/stdarch/crates/intrinsic-test/src/common/compile_c.rs @@ -116,11 +116,11 @@ impl CompilationCommandBuilder { command = command + " " + self.extra_flags.join(" ").as_str(); - if let (Some(linker), Some(cxx_toolchain_dir)) = (&self.linker, &self.cxx_toolchain_dir) { - if let Some(target) = &self.target { - command = command + " --target=" + target; - } + if let Some(target) = &self.target { + command = command + " --target=" + target; + } + if let (Some(linker), Some(cxx_toolchain_dir)) = (&self.linker, &self.cxx_toolchain_dir) { let include_args = self .include_paths .iter() |
