Skip to content

Commit 2565e61

Browse files
authored
Merge pull request #3880 from martin-frbg/rework_msa
Rework MIPS MSA capability detection/handling
2 parents 5d6fde5 + 2a203ee commit 2565e61

File tree

7 files changed

+22
-20
lines changed

7 files changed

+22
-20
lines changed

Makefile.mips

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
MSA_FLAGS = -mmsa -mfp64 -mload-store-pairs
12
ifdef BINARY64
23
else
34
endif

Makefile.mips64

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
MSA_FLAGS = -mmsa -mfp64 -mload-store-pairs
12
ifdef BINARY64
23
else
34
endif

c_check

+4-8
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ fi
162162
exit 1
163163
}
164164

165-
have_msa=0
165+
no_msa=0
166166
if [ "$architecture" = "mips" ] || [ "$architecture" = "mips64" ]; then
167167
tmpd="$(mktemp -d)"
168168
tmpf="$tmpd/a.c"
@@ -172,11 +172,10 @@ if [ "$architecture" = "mips" ] || [ "$architecture" = "mips64" ]; then
172172
printf "void main(void){ __asm__ volatile(%s); }\n" "$code" >> "$tmpf"
173173

174174
args="$msa_flags -o $tmpf.o $tmpf"
175-
have_msa=1
176175
{
177176
$compiler_name $flags $args >/dev/null 2>&1
178177
} || {
179-
have_msa=0
178+
no_msa=1
180179
}
181180

182181
rm -rf "$tmpd"
@@ -390,10 +389,7 @@ done
390389
printf "CROSS_SUFFIX=%s\n" "$cross_suffix"
391390
[ "$cross" -ne 0 ] && printf "CROSS=1\n"
392391
printf "CEXTRALIB=%s %s %s\n" "$linker_L" "$linker_l" "$linker_a"
393-
[ "$have_msa" -eq 1 ] && {
394-
printf "HAVE_MSA=1\n"
395-
printf "MSA_FLAGS=%s\n" "$msa_flags"
396-
}
392+
[ "$no_msa" -eq 1 ] && printf "NO_MSA=1\n"
397393
[ "$no_sve" -eq 1 ] && printf "NO_SVE=1\n"
398394
[ "$no_rv64gv" -eq 1 ] && printf "NO_RV64GV=1\n"
399395
[ "$no_avx512" -eq 1 ] && printf "NO_AVX512=1\n"
@@ -412,7 +408,7 @@ compiler=`echo "$compiler" | tr '[[:lower:]]' '[[:upper:]]' `
412408
[ "$binformat" = "bin32" ] && printf "#define __32BIT__\t1\n"
413409
[ "$binformat" = "bin64" ] && printf "#define __64BIT__\t1\n"
414410
[ -n "$need_fu" ] && printf "#define FUNDERSCORE\t%s\n" "$need_fu"
415-
[ "$have_msa" -eq 1 ] && printf "#define HAVE_MSA\t1\n"
411+
[ "$no_msa" -eq 1 ] && printf "#define NO_MSA\t1\n"
416412
[ "$c11_atomics" -eq 1 ] && printf "#define HAVE_C11\t1\n"
417413
} >> "$config"
418414

cpuid_mips.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,9 @@ void get_cpuconfig(void){
165165
}else{
166166
printf("#define UNKNOWN\n");
167167
}
168-
if (!get_feature("msa")) printf("#define NO_MSA\n");
168+
#ifndef NO_MSA
169+
if (get_feature("msa")) printf("#define HAVE_MSA\n");
170+
#endif
169171
}
170172

171173
void get_libname(void){

cpuid_mips64.c

+3-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,9 @@ void get_cpuconfig(void){
208208
printf("#define DTB_SIZE 4096\n");
209209
printf("#define L2_ASSOCIATIVE 8\n");
210210
}
211-
if (!get_feature("msa")) printf("#define NO_MSA\n");
211+
#ifndef NO_MSA
212+
if (get_feature("msa")) printf("#define HAVE_MSA\n");
213+
#endif
212214
}
213215

214216
void get_libname(void){

getarch.c

+9-9
Original file line numberDiff line numberDiff line change
@@ -969,7 +969,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
969969
#define ARCHCONFIG "-DLOONGSON3R4 " \
970970
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
971971
"-DL2_SIZE=512488 -DL2_LINESIZE=32 " \
972-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=4 "
972+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=4 -DHAVE_MSA"
973973
#define LIBNAME "loongson3r4"
974974
#define CORENAME "LOONGSON3R4"
975975
#else
@@ -983,7 +983,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
983983
#define ARCHCONFIG "-DLOONGSON3R5 " \
984984
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=64 " \
985985
"-DL2_SIZE=1048576 -DL2_LINESIZE=64 " \
986-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=16 "
986+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=16 -DHAVE_MSA"
987987
#define LIBNAME "loongson3r5"
988988
#define CORENAME "LOONGSON3R5"
989989
#else
@@ -997,7 +997,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
997997
#define ARCHCONFIG "-DLOONGSON2K1000 " \
998998
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=64 " \
999999
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
1000-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=16 "
1000+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=16 -DHAVE_MSA"
10011001
#define LIBNAME "loongson2k1000"
10021002
#define CORENAME "LOONGSON2K1000"
10031003
#else
@@ -1011,7 +1011,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10111011
#define ARCHCONFIG "-DLOONGSONGENERIC " \
10121012
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=64 " \
10131013
"-DL2_SIZE=262144 -DL2_LINESIZE=64 " \
1014-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=16 "
1014+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=16 -DHAVE_MSA"
10151015
#define LIBNAME "loongsongeneric"
10161016
#define CORENAME "LOONGSONGENERIC"
10171017
#else
@@ -1025,7 +1025,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10251025
#define ARCHCONFIG "-DI6400 " \
10261026
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
10271027
"-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \
1028-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
1028+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 -DHAVE_MSA "
10291029
#define LIBNAME "i6400"
10301030
#define CORENAME "I6400"
10311031
#else
@@ -1053,7 +1053,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10531053
#define ARCHCONFIG "-DP5600 " \
10541054
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
10551055
"-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \
1056-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 -DNO_MSA"
1056+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8"
10571057
#define LIBNAME "p5600"
10581058
#define CORENAME "P5600"
10591059
#else
@@ -1067,7 +1067,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10671067
#define ARCHCONFIG "-DMIPS1004K " \
10681068
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \
10691069
"-DL2_SIZE=262144 -DL2_LINESIZE=32 " \
1070-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 -DNO_MSA"
1070+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8"
10711071
#define LIBNAME "mips1004K"
10721072
#define CORENAME "MIPS1004K"
10731073
#else
@@ -1081,7 +1081,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10811081
#define ARCHCONFIG "-DMIPS24K " \
10821082
"-DL1_DATA_SIZE=32768 -DL1_DATA_LINESIZE=32 " \
10831083
"-DL2_SIZE=32768 -DL2_LINESIZE=32 " \
1084-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 -DNO_MSA"
1084+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8"
10851085
#define LIBNAME "mips24K"
10861086
#define CORENAME "MIPS24K"
10871087
#else
@@ -1095,7 +1095,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10951095
#define ARCHCONFIG "-DI6500 " \
10961096
"-DL1_DATA_SIZE=65536 -DL1_DATA_LINESIZE=32 " \
10971097
"-DL2_SIZE=1048576 -DL2_LINESIZE=32 " \
1098-
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 "
1098+
"-DDTB_DEFAULT_ENTRIES=64 -DDTB_SIZE=4096 -DL2_ASSOCIATIVE=8 -DHAVE_MSA"
10991099
#define LIBNAME "i6500"
11001100
#define CORENAME "I6500"
11011101
#else

param.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2955,7 +2955,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29552955
#define GEMM_DEFAULT_OFFSET_B 0
29562956
#define GEMM_DEFAULT_ALIGN (BLASLONG) 0x03fffUL
29572957

2958-
#if defined(HAVE_MSA) && !defined(NO_MSA)
2958+
#if defined(HAVE_MSA)
29592959
#define SGEMM_DEFAULT_UNROLL_M 8
29602960
#define SGEMM_DEFAULT_UNROLL_N 8
29612961

0 commit comments

Comments
 (0)