@@ -201,10 +201,10 @@ fn main() {{
201
201
{passes}
202
202
}}
203
203
"# ,
204
- target_arch = if target. starts_with( "aarch64" ) {
205
- "aarch64"
206
- } else {
204
+ target_arch = if target. contains( "v7" ) {
207
205
"arm"
206
+ } else {
207
+ "aarch64"
208
208
} ,
209
209
arglists = intrinsic
210
210
. arguments
@@ -226,10 +226,10 @@ fn compile_c(
226
226
cxx_toolchain_dir : Option < & str > ,
227
227
) -> bool {
228
228
let flags = std:: env:: var ( "CPPFLAGS" ) . unwrap_or ( "" . into ( ) ) ;
229
- let arch_flags = if target. starts_with ( "aarch64" ) {
230
- "-march=armv8.6-a+crypto+sha3+crc+dotprod"
231
- } else {
229
+ let arch_flags = if target. contains ( "v7" ) {
232
230
"-march=armv8.6-a+crypto+crc+dotprod"
231
+ } else {
232
+ "-march=armv8.6-a+crypto+sha3+crc+dotprod"
233
233
} ;
234
234
235
235
let intrinsic_name = & intrinsic. name ;
@@ -394,7 +394,6 @@ path = "{intrinsic}/main.rs""#,
394
394
395
395
/* If there has been a linker explicitly set from the command line then
396
396
* we want to set it via setting it in the RUSTFLAGS*/
397
- let mut rust_flags = "-Cdebuginfo=0" . to_string ( ) ;
398
397
399
398
let cargo_command = format ! (
400
399
"cargo {toolchain} build --target {target} --release" ,
@@ -403,12 +402,12 @@ path = "{intrinsic}/main.rs""#,
403
402
) ;
404
403
405
404
let mut command = Command :: new ( "sh" ) ;
406
-
407
405
command
408
406
. current_dir ( "rust_programs" )
409
407
. arg ( "-c" )
410
408
. arg ( cargo_command) ;
411
409
410
+ let mut rust_flags = "-Cdebuginfo=0" . to_string ( ) ;
412
411
if let Some ( linker) = linker {
413
412
rust_flags. push_str ( " -C linker=" ) ;
414
413
rust_flags. push_str ( linker) ;
@@ -418,6 +417,7 @@ path = "{intrinsic}/main.rs""#,
418
417
}
419
418
420
419
command. env ( "RUSTFLAGS" , rust_flags) ;
420
+ println ! ( "{:?}" , command) ;
421
421
let output = command. output ( ) ;
422
422
423
423
if let Ok ( output) = output {
@@ -552,8 +552,8 @@ fn main() {
552
552
std:: process:: exit ( 3 ) ;
553
553
}
554
554
555
- if let Some ( ref _toolchain ) = toolchain {
556
- if !compare_outputs ( & intrinsics, & c_runner, target) {
555
+ if let Some ( ref toolchain ) = toolchain {
556
+ if !compare_outputs ( & intrinsics, toolchain , & c_runner, target) {
557
557
std:: process:: exit ( 1 )
558
558
}
559
559
}
@@ -565,7 +565,12 @@ enum FailureReason {
565
565
Difference ( String , String , String ) ,
566
566
}
567
567
568
- fn compare_outputs ( intrinsics : & Vec < Intrinsic > , runner : & str , target : & str ) -> bool {
568
+ fn compare_outputs (
569
+ intrinsics : & Vec < Intrinsic > ,
570
+ toolchain : & str ,
571
+ runner : & str ,
572
+ target : & str ,
573
+ ) -> bool {
569
574
let intrinsics = intrinsics
570
575
. par_iter ( )
571
576
. filter_map ( |intrinsic| {
@@ -578,15 +583,29 @@ fn compare_outputs(intrinsics: &Vec<Intrinsic>, runner: &str, target: &str) -> b
578
583
) )
579
584
. output ( ) ;
580
585
581
- let rust = Command :: new ( "sh" )
582
- . arg ( "-c" )
583
- . arg ( format ! (
584
- "{runner} ./rust_programs/target/{target}/release/{intrinsic}" ,
585
- runner = runner,
586
- target = target,
587
- intrinsic = intrinsic. name,
588
- ) )
589
- . output ( ) ;
586
+ let rust = if target != "aarch64_be-none-linux-gnu" {
587
+ Command :: new ( "sh" )
588
+ . current_dir ( "rust_programs" )
589
+ . arg ( "-c" )
590
+ . arg ( format ! (
591
+ "cargo {toolchain} run --target {target} --bin {intrinsic} --release" ,
592
+ intrinsic = intrinsic. name,
593
+ toolchain = toolchain,
594
+ target = target
595
+ ) )
596
+ . env ( "RUSTFLAGS" , "-Cdebuginfo=0" )
597
+ . output ( )
598
+ } else {
599
+ Command :: new ( "sh" )
600
+ . arg ( "-c" )
601
+ . arg ( format ! (
602
+ "{runner} ./rust_programs/target/{target}/release/{intrinsic}" ,
603
+ runner = runner,
604
+ target = target,
605
+ intrinsic = intrinsic. name,
606
+ ) )
607
+ . output ( )
608
+ } ;
590
609
591
610
let ( c, rust) = match ( c, rust) {
592
611
( Ok ( c) , Ok ( rust) ) => ( c, rust) ,
0 commit comments