Skip to content

Commit e1a7243

Browse files
chore: handling the case when --generate-only is passed to
`intrinsic-test`
2 parents 4062a20 + 3e43563 commit e1a7243

File tree

2 files changed

+32
-23
lines changed

2 files changed

+32
-23
lines changed

crates/intrinsic-test/src/arm/compile.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ pub fn build_cpp_compilation(config: &ProcessedCli) -> Option<CppCompilation> {
1212
.set_opt_level("2")
1313
.set_cxx_toolchain_dir(config.cxx_toolchain_dir.as_deref())
1414
.set_project_root("c_programs")
15-
.add_extra_flags(vec!["-ffp-contract=off", "-Wno-narrowing"]);
15+
.add_extra_flags(vec!["-ffp-contract=off", "-Wno-narrowing", "-mfpu=neon"]);
1616

1717
if !config.target.contains("v7") {
1818
command = command.add_arch_flags(vec!["faminmax", "lut", "sha3"]);

crates/intrinsic-test/src/arm/mod.rs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ mod intrinsic;
55
mod json_parser;
66
mod types;
77

8-
use std::fs::File;
8+
use std::fs;
99

1010
use rayon::prelude::*;
1111

@@ -69,28 +69,31 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
6969

7070
let (chunk_size, chunk_count) = chunk_info(self.intrinsics.len());
7171

72-
let cpp_compiler = compile::build_cpp_compilation(&self.cli_options).unwrap();
72+
let cpp_compiler_wrapped = compile::build_cpp_compilation(&self.cli_options);
7373

7474
let notice = &build_notices("// ");
75+
fs::create_dir_all("c_programs").unwrap();
7576
self.intrinsics
7677
.par_chunks(chunk_size)
7778
.enumerate()
7879
.map(|(i, chunk)| {
7980
let c_filename = format!("c_programs/mod_{i}.cpp");
80-
let mut file = File::create(&c_filename).unwrap();
81+
let mut file = fs::File::create(&c_filename).unwrap();
8182
write_mod_cpp(&mut file, notice, c_target, platform_headers, chunk).unwrap();
8283

8384
// compile this cpp file into a .o file
84-
let output = cpp_compiler
85-
.compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
86-
assert!(output.status.success(), "{output:?}");
85+
if let Some(cpp_compiler) = cpp_compiler_wrapped.as_ref() {
86+
let output = cpp_compiler
87+
.compile_object_file(&format!("mod_{i}.cpp"), &format!("mod_{i}.o"))?;
88+
assert!(output.status.success(), "{output:?}");
89+
}
8790

8891
Ok(())
8992
})
9093
.collect::<Result<(), std::io::Error>>()
9194
.unwrap();
9295

93-
let mut file = File::create("c_programs/main.cpp").unwrap();
96+
let mut file = fs::File::create("c_programs/main.cpp").unwrap();
9497
write_main_cpp(
9598
&mut file,
9699
c_target,
@@ -100,20 +103,22 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
100103
.unwrap();
101104

102105
// compile this cpp file into a .o file
103-
info!("compiling main.cpp");
104-
let output = cpp_compiler
105-
.compile_object_file("main.cpp", "intrinsic-test-programs.o")
106-
.unwrap();
107-
assert!(output.status.success(), "{output:?}");
108-
109-
let object_files = (0..chunk_count)
110-
.map(|i| format!("mod_{i}.o"))
111-
.chain(["intrinsic-test-programs.o".to_owned()]);
112-
113-
let output = cpp_compiler
114-
.link_executable(object_files, "intrinsic-test-programs")
115-
.unwrap();
116-
assert!(output.status.success(), "{output:?}");
106+
if let Some(cpp_compiler) = cpp_compiler_wrapped.as_ref() {
107+
info!("compiling main.cpp");
108+
let output = cpp_compiler
109+
.compile_object_file("main.cpp", "intrinsic-test-programs.o")
110+
.unwrap();
111+
assert!(output.status.success(), "{output:?}");
112+
113+
let object_files = (0..chunk_count)
114+
.map(|i| format!("mod_{i}.o"))
115+
.chain(["intrinsic-test-programs.o".to_owned()]);
116+
117+
let output = cpp_compiler
118+
.link_executable(object_files, "intrinsic-test-programs")
119+
.unwrap();
120+
assert!(output.status.success(), "{output:?}");
121+
}
117122

118123
true
119124
}
@@ -138,7 +143,11 @@ impl SupportedArchitectureTest for ArmArchitectureTest {
138143
AARCH_CONFIGURATIONS,
139144
);
140145

141-
compile_rust_programs(intrinsics_name_list, toolchain, target, linker)
146+
if self.cli_options.toolchain.is_some() {
147+
compile_rust_programs(intrinsics_name_list, toolchain, target, linker)
148+
} else {
149+
true
150+
}
142151
}
143152

144153
fn compare_outputs(&self) -> bool {

0 commit comments

Comments
 (0)