kernel_optimize_test/lib/mpi
Nathan Chancellor b0c091ae04 lib/mpi: Eliminate unused umul_ppmm definitions for MIPS
Clang errors out when building this macro:

lib/mpi/generic_mpih-mul1.c:37:24: error: invalid use of a cast in a
inline asm context requiring an l-value: remove the cast or build with
-fheinous-gnu-extensions
                umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb);
                ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/mpi/longlong.h:652:20: note: expanded from macro 'umul_ppmm'
        : "=l" ((USItype)(w0)), \
                ~~~~~~~~~~^~~
lib/mpi/generic_mpih-mul1.c:37:3: error: invalid output constraint '=h'
in asm
                umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb);
                ^
lib/mpi/longlong.h:653:7: note: expanded from macro 'umul_ppmm'
             "=h" ((USItype)(w1)) \
             ^
2 errors generated.

The C version that is used for GCC 4.4 and up works well with clang;
however, it is not currently being used because Clang masks itself
as GCC 4.2.1 for compatibility reasons. As Nick points out, we require
GCC 4.6 and newer in the kernel so we can eliminate all of the
versioning checks and just use the C version of umul_ppmm for all
supported compilers.

Link: https://github.com/ClangBuiltLinux/linux/issues/605
Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
2019-08-22 14:39:36 +10:00
..
generic_mpih-add1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-lshift.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-mul1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-mul2.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-mul3.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-rshift.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
generic_mpih-sub1.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
longlong.h lib/mpi: Eliminate unused umul_ppmm definitions for MIPS 2019-08-22 14:39:36 +10:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mpi-bit.c MPILIB: Provide count_leading/trailing_zeros() based on arch functions 2012-10-08 13:50:11 +10:30
mpi-cmp.c MPILIB: Fix comparison of negative MPIs 2015-01-14 16:10:12 +00:00
mpi-inline.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
mpi-internal.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
mpi-pow.c Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2019-07-05 13:31:19 +09:00
mpicoder.c lib/mpi: kunmap after finishing accessing buffer 2017-08-22 14:45:01 +08:00
mpih-cmp.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
mpih-div.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
mpih-mul.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 26 2019-05-24 17:27:10 +02:00
mpiutil.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00