diff options
Diffstat (limited to 'sci-libs/openblas/files')
-rw-r--r-- | sci-libs/openblas/files/openblas-0.3.20-fix-loong.patch | 178 | ||||
-rw-r--r-- | sci-libs/openblas/files/openblas-0.3.20-fix-riscv.patch | 99 |
2 files changed, 0 insertions, 277 deletions
diff --git a/sci-libs/openblas/files/openblas-0.3.20-fix-loong.patch b/sci-libs/openblas/files/openblas-0.3.20-fix-loong.patch deleted file mode 100644 index 2745d26cb3a5..000000000000 --- a/sci-libs/openblas/files/openblas-0.3.20-fix-loong.patch +++ /dev/null @@ -1,178 +0,0 @@ -https://github.com/xianyi/OpenBLAS/pull/3626, rebased on top of v0.3.20. - -From: WANG Xuerui <xen0n@gentoo.org> -Date: Fri, 13 May 2022 15:26:33 +0800 -Subject: [PATCH 1/3] Move LoongArch make rules to Makefile.loongarch64 - ---- a/Makefile.loongarch64 -+++ b/Makefile.loongarch64 -@@ -1,3 +1,4 @@ --ifdef BINARY64 --else -+ifeq ($(CORE), LOONGSON3R5) -+CCOMMON_OPT += -march=loongarch64 -mabi=lp64 -+FCOMMON_OPT += -march=loongarch64 -mabi=lp64 - endif ---- a/Makefile.system -+++ b/Makefile.system -@@ -886,13 +886,6 @@ ifeq ($(OSNAME), AIX) - BINARY_DEFINED = 1 - endif - --ifeq ($(ARCH), loongarch64) --ifeq ($(CORE), LOONGSON3R5) --CCOMMON_OPT += -march=loongarch64 -mabi=lp64 --FCOMMON_OPT += -march=loongarch64 -mabi=lp64 --endif --endif -- - endif - - ifndef BINARY_DEFINED -From: WANG Xuerui <xen0n@gentoo.org> -Date: Fri, 13 May 2022 15:53:22 +0800 -Subject: [PATCH 2/3] Probe for old-world LASX flavor on LoongArch and use - generic DGEMM kernel otherwise - -See: https://bugs.gentoo.org/844013 ---- a/Makefile.system -+++ b/Makefile.system -@@ -1683,6 +1683,7 @@ export TARGET_CORE - export NO_AVX512 - export NO_AVX2 - export BUILD_BFLOAT16 -+export NO_LASX - - export SBGEMM_UNROLL_M - export SBGEMM_UNROLL_N ---- a/c_check -+++ b/c_check -@@ -270,6 +270,37 @@ if (($architecture eq "x86") || ($architecture eq "x86_64")) { - } - } - -+$no_lasx = 0; -+if (($architecture eq "loongarch64")) { -+ eval "use File::Temp qw(tempfile)"; -+ if ($@){ -+ warn "could not load PERL module File::Temp, so could not check compiler compatibility with the LoongArch LASX extension"; -+ # Assume no LASX, because currently LASX is only present in vendor -+ # toolchains, undocumented nor upstreamed. -+ $no_lasx = 1; -+ } else { -+ # Old-world assembly flavor: LASX registers named "$xrNN", different -+ # from the ISA manual which suggests "$xNN". This is the flavor we -+ # currently support. -+ # -+ # As the LASX ISA manual is not out yet, we cannot predict what the -+ # new-world flavor would look like, so do not probe flavor for now. -+ # The compiler flags are also unsuitable for new-world gcc. -+ ($fh,$tmpf) = tempfile( SUFFIX => '.c' , UNLINK => 1 ); -+ $code = '"xvld $xr0, $a0, 0\n"'; -+ print $fh "int main(void){ __asm__ volatile($code); }\n"; -+ $args = " -march=loongarch64 -mabi=lp64 -mlasx -c -o $tmpf.o $tmpf"; -+ my @cmd = ("$compiler_name $flags $args >/dev/null 2>/dev/null"); -+ system(@cmd) == 0; -+ if ($? != 0) { -+ $no_lasx = 1; -+ } else { -+ $no_lasx = 0; -+ } -+ unlink("$tmpf.o"); -+ } -+} -+ - $c11_atomics = 0; - if ($data =~ /HAVE_C11/) { - eval "use File::Temp qw(tempfile)"; -@@ -393,6 +424,7 @@ print MAKEFILE "HAVE_MSA=1\n" if $have_msa eq 1; - print MAKEFILE "MSA_FLAGS=$msa_flags\n" if $have_msa eq 1; - print MAKEFILE "NO_AVX512=1\n" if $no_avx512 eq 1; - print MAKEFILE "NO_AVX2=1\n" if $no_avx2 eq 1; -+print MAKEFILE "NO_LASX=1\n" if $no_lasx eq 1; - print MAKEFILE "OLDGCC=1\n" if $oldgcc eq 1; - - $os =~ tr/[a-z]/[A-Z]/; ---- a/kernel/loongarch64/KERNEL.LOONGSON3R5 -+++ b/kernel/loongarch64/KERNEL.LOONGSON3R5 -@@ -1,3 +1,7 @@ -+ifeq ($(NO_LASX), 1) -+# No LASX support in compiler, unable to consume the optimized version -+# leave out DGEMMKERNEL to pull in the generic version -+else - DGEMMKERNEL = dgemm_kernel_16x4.S - DGEMMINCOPY = dgemm_ncopy_16.S - DGEMMITCOPY = dgemm_tcopy_16.S -@@ -7,6 +11,7 @@ DGEMMINCOPYOBJ = dgemm_incopy.o - DGEMMITCOPYOBJ = dgemm_itcopy.o - DGEMMONCOPYOBJ = dgemm_oncopy.o - DGEMMOTCOPYOBJ = dgemm_otcopy.o -+endif - - DTRSMKERNEL_LN = ../generic/trsm_kernel_LN.c - DTRSMKERNEL_LT = ../generic/trsm_kernel_LT.c -From: WANG Xuerui <xen0n@gentoo.org> -Date: Fri, 13 May 2022 16:23:46 +0800 -Subject: [PATCH 3/3] Fix ABI CFLAGS setting on new-world LoongArch - -See: https://bugs.gentoo.org/844013 ---- a/Makefile.loongarch64 -+++ b/Makefile.loongarch64 -@@ -1,4 +1,13 @@ - ifeq ($(CORE), LOONGSON3R5) --CCOMMON_OPT += -march=loongarch64 -mabi=lp64 --FCOMMON_OPT += -march=loongarch64 -mabi=lp64 -+CCOMMON_OPT += -march=loongarch64 -+FCOMMON_OPT += -march=loongarch64 -+ -+ifeq ($(LOONGARCH_CC_FLAVOR), NEW) -+CCOMMON_OPT += -mabi=lp64d -+FCOMMON_OPT += -mabi=lp64d -+endif -+ifeq ($(LOONGARCH_CC_FLAVOR), OLD) -+CCOMMON_OPT += -mabi=lp64 -+FCOMMON_OPT += -mabi=lp64 -+endif - endif ---- a/Makefile.system -+++ b/Makefile.system -@@ -1683,6 +1683,7 @@ export TARGET_CORE - export NO_AVX512 - export NO_AVX2 - export BUILD_BFLOAT16 -+export LOONGARCH_CC_FLAVOR - export NO_LASX - - export SBGEMM_UNROLL_M ---- a/c_check -+++ b/c_check -@@ -270,6 +270,21 @@ if (($architecture eq "x86") || ($architecture eq "x86_64")) { - } - } - -+$loongarch_cc_flavor = ""; -+if (($architecture eq "loongarch64")) { -+ # Currently there are only 2 flavors: new-world and old-world. -+ # They differ in ABI names accepted, so check it to avoid creating temp -+ # files. -+ $args = " -mabi=lp64d -E -o - /dev/null"; -+ my @cmd = ("$compiler_name $flags $args >/dev/null 2>/dev/null"); -+ system(@cmd) == 0; -+ if ($? != 0) { -+ $loongarch_cc_flavor = "OLD"; -+ } else { -+ $loongarch_cc_flavor = "NEW"; -+ } -+} -+ - $no_lasx = 0; - if (($architecture eq "loongarch64")) { - eval "use File::Temp qw(tempfile)"; -@@ -424,6 +439,7 @@ print MAKEFILE "HAVE_MSA=1\n" if $have_msa eq 1; - print MAKEFILE "MSA_FLAGS=$msa_flags\n" if $have_msa eq 1; - print MAKEFILE "NO_AVX512=1\n" if $no_avx512 eq 1; - print MAKEFILE "NO_AVX2=1\n" if $no_avx2 eq 1; -+print MAKEFILE "LOONGARCH_CC_FLAVOR=$loongarch_cc_flavor\n" if $architecture eq "loongarch64"; - print MAKEFILE "NO_LASX=1\n" if $no_lasx eq 1; - print MAKEFILE "OLDGCC=1\n" if $oldgcc eq 1; - diff --git a/sci-libs/openblas/files/openblas-0.3.20-fix-riscv.patch b/sci-libs/openblas/files/openblas-0.3.20-fix-riscv.patch deleted file mode 100644 index a386a0b38467..000000000000 --- a/sci-libs/openblas/files/openblas-0.3.20-fix-riscv.patch +++ /dev/null @@ -1,99 +0,0 @@ -Bug: https://bugs.gentoo.org/837806 -From https://github.com/xianyi/OpenBLAS/pull/3613 - -From: Han Gao <gaohan@uniontech.com> -Date: Wed, 27 Apr 2022 01:34:55 +0800 -Subject: [PATCH 1/2] Fix other arch build in detect. - -When CORE is empty, use -march=loongson3a. Fix it. - -Signed-off-by: Han Gao <gaohan@uniontech.com> ---- a/Makefile.system -+++ b/Makefile.system -@@ -847,7 +847,7 @@ CCOMMON_OPT += -mabi=32 - BINARY_DEFINED = 1 - endif - --ifeq ($(CORE), $(filter $(CORE),LOONGSON3R3 LOONGSON3R4)) -+ifneq (, $(filter $(CORE),LOONGSON3R3 LOONGSON3R4)) - CCOMMON_OPT += -march=loongson3a - FCOMMON_OPT += -march=loongson3a - endif - -From: Han Gao <gaohan@uniontech.com> -Date: Wed, 27 Apr 2022 02:29:43 +0800 -Subject: [PATCH 2/2] Fix riscv64 arch detect - -Signed-off-by: Han Gao <gaohan@uniontech.com> ---- a/cpuid_riscv64.c -+++ b/cpuid_riscv64.c -@@ -1,5 +1,5 @@ - /***************************************************************************** --Copyright (c) 2011-2014, The OpenBLAS Project -+Copyright (c) 2011-2022, The OpenBLAS Project - All rights reserved. - - Redistribution and use in source and binary forms, with or without -@@ -13,9 +13,9 @@ modification, are permitted provided that the following conditions are - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. -- 3. Neither the name of the OpenBLAS project nor the names of -- its contributors may be used to endorse or promote products -- derived from this software without specific prior written -+ 3. Neither the name of the OpenBLAS project nor the names of -+ its contributors may be used to endorse or promote products -+ derived from this software without specific prior written - permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -@@ -70,16 +70,16 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - /* or implied, of The University of Texas at Austin. */ - /*********************************************************************/ - --#define CPU_UNKNOWN 0 --#define CPU_C910V 1 -+#define CPU_GENERIC 0 -+#define CPU_C910V 1 - - static char *cpuname[] = { -- "UNKOWN", -+ "RISCV64_GENERIC", - "C910V" - }; - - int detect(void){ -- return CPU_UNKNOWN; -+ return CPU_GENERIC; - } - - char *get_corename(void){ -@@ -98,7 +98,7 @@ void get_subdirname(void){ - } - - void get_cpuconfig(void){ -- printf("#define UNKNOWN\n"); -+ printf("#define %s\n", cpuname[detect()]); - printf("#define L1_DATA_SIZE 65536\n"); - printf("#define L1_DATA_LINESIZE 32\n"); - printf("#define L2_SIZE 512488\n"); ---- a/getarch.c -+++ b/getarch.c -@@ -1731,7 +1731,7 @@ int main(int argc, char *argv[]){ - #ifdef FORCE - printf("CORE=%s\n", CORENAME); - #else --#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) -+#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv) - printf("CORE=%s\n", get_corename()); - #endif - #endif -@@ -1879,7 +1879,7 @@ printf("ELF_VERSION=2\n"); - #ifdef FORCE - printf("#define CHAR_CORENAME \"%s\"\n", CORENAME); - #else --#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) -+#if defined(INTEL_AMD) || defined(POWER) || defined(__mips__) || defined(__arm__) || defined(__aarch64__) || defined(ZARCH) || defined(sparc) || defined(__loongarch__) || defined(__riscv) - printf("#define CHAR_CORENAME \"%s\"\n", get_corename()); - #endif - #endif |