|
|
|
@@ -188,13 +188,13 @@ if (($architecture eq "mips") || ($architecture eq "mips64")) { |
|
|
|
if ($@){ |
|
|
|
warn "could not load PERL module File::Temp, so could not check MSA capatibility"; |
|
|
|
} else { |
|
|
|
$tmpf = new File::Temp( UNLINK => 1 ); |
|
|
|
$tmpf = new File::Temp( SUFFIX => '.c' , UNLINK => 1 ); |
|
|
|
$code = '"addvi.b $w0, $w1, 1"'; |
|
|
|
$msa_flags = "-mmsa -mfp64 -msched-weight -mload-store-pairs"; |
|
|
|
print $tmpf "#include <msa.h>\n\n"; |
|
|
|
print $tmpf "void main(void){ __asm__ volatile($code); }\n"; |
|
|
|
|
|
|
|
$args = "$msa_flags -o $tmpf.o -x c $tmpf"; |
|
|
|
$args = "$msa_flags -o $tmpf.o $tmpf"; |
|
|
|
my @cmd = ("$compiler_name $args"); |
|
|
|
system(@cmd) == 0; |
|
|
|
if ($? != 0) { |
|
|
|
@@ -229,10 +229,13 @@ if (($architecture eq "x86") || ($architecture eq "x86_64")) { |
|
|
|
$no_avx512 = 0; |
|
|
|
} else { |
|
|
|
# $tmpf = new File::Temp( UNLINK => 1 ); |
|
|
|
($fh,$tmpf) = tempfile( UNLINK => 1 ); |
|
|
|
($fh,$tmpf) = tempfile( SUFFIX => '.c' , UNLINK => 1 ); |
|
|
|
$code = '"vbroadcastss -4 * 4(%rsi), %zmm2"'; |
|
|
|
print $tmpf "#include <immintrin.h>\n\nint main(void){ __asm__ volatile($code); }\n"; |
|
|
|
$args = " -march=skylake-avx512 -c -o $tmpf.o -x c $tmpf"; |
|
|
|
$args = " -march=skylake-avx512 -c -o $tmpf.o $tmpf"; |
|
|
|
if ($compiler eq "PGI") { |
|
|
|
$args = " -tp skylake -c -o $tmpf.o $tmpf"; |
|
|
|
} |
|
|
|
my @cmd = ("$compiler_name $args >/dev/null 2>/dev/null"); |
|
|
|
system(@cmd) == 0; |
|
|
|
if ($? != 0) { |
|
|
|
@@ -318,6 +321,7 @@ $linker_a = ""; |
|
|
|
&& ($flags !~ /kernel32/) |
|
|
|
&& ($flags !~ /advapi32/) |
|
|
|
&& ($flags !~ /shell32/) |
|
|
|
&& ($flags !~ /omp/) |
|
|
|
) { |
|
|
|
$linker_l .= $flags . " " |
|
|
|
} |
|
|
|
|