mirror of
https://github.com/torvalds/linux.git
synced 2025-01-01 15:51:46 +00:00
lib/raid6: build proper files on corresponding arch
sse and avx2 stuff only exist on x86 arch, and we don't need to build altivec on x86. And we can do that at lib/raid6/Makefile. Proposed-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com> Reviewed-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Jim Kukunas <james.t.kukunas@linux.intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
2c935842bd
commit
4f8c55c5ad
@ -1,8 +1,11 @@
|
||||
obj-$(CONFIG_RAID6_PQ) += raid6_pq.o
|
||||
|
||||
raid6_pq-y += algos.o recov.o recov_ssse3.o recov_avx2.o tables.o int1.o int2.o int4.o \
|
||||
int8.o int16.o int32.o altivec1.o altivec2.o altivec4.o \
|
||||
altivec8.o mmx.o sse1.o sse2.o avx2.o
|
||||
raid6_pq-y += algos.o recov.o tables.o int1.o int2.o int4.o \
|
||||
int8.o int16.o int32.o
|
||||
|
||||
raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o
|
||||
raid6_pq-$(CONFIG_ALTIVEC) += altivec1.o altivec2.o altivec4.o altivec8.o
|
||||
|
||||
hostprogs-y += mktables
|
||||
|
||||
quiet_cmd_unroll = UNROLL $@
|
||||
|
@ -24,13 +24,10 @@
|
||||
|
||||
#include <linux/raid/pq.h>
|
||||
|
||||
#ifdef CONFIG_ALTIVEC
|
||||
|
||||
#include <altivec.h>
|
||||
#ifdef __KERNEL__
|
||||
# include <asm/cputable.h>
|
||||
# include <asm/switch_to.h>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This is the C data type to use. We use a vector of
|
||||
|
@ -16,7 +16,7 @@
|
||||
* MMX implementation of RAID-6 syndrome functions
|
||||
*/
|
||||
|
||||
#if defined(__i386__) && !defined(__arch_um__)
|
||||
#ifdef CONFIG_X86_32
|
||||
|
||||
#include <linux/raid/pq.h>
|
||||
#include "x86.h"
|
||||
|
@ -8,8 +8,6 @@
|
||||
* of the License.
|
||||
*/
|
||||
|
||||
#if (defined(__i386__) || defined(__x86_64__)) && !defined(__arch_um__)
|
||||
|
||||
#if CONFIG_AS_AVX2
|
||||
|
||||
#include <linux/raid/pq.h>
|
||||
@ -323,5 +321,3 @@ const struct raid6_recov_calls raid6_recov_avx2 = {
|
||||
#else
|
||||
#warning "your version of binutils lacks AVX2 support"
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -7,8 +7,6 @@
|
||||
* of the License.
|
||||
*/
|
||||
|
||||
#if (defined(__i386__) || defined(__x86_64__)) && !defined(__arch_um__)
|
||||
|
||||
#include <linux/raid/pq.h>
|
||||
#include "x86.h"
|
||||
|
||||
@ -332,5 +330,3 @@ const struct raid6_recov_calls raid6_recov_ssse3 = {
|
||||
#endif
|
||||
.priority = 1,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -21,7 +21,7 @@
|
||||
* worthwhile as a separate implementation.
|
||||
*/
|
||||
|
||||
#if defined(__i386__) && !defined(__arch_um__)
|
||||
#ifdef CONFIG_X86_32
|
||||
|
||||
#include <linux/raid/pq.h>
|
||||
#include "x86.h"
|
||||
|
@ -17,8 +17,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#if (defined(__i386__) || defined(__x86_64__)) && !defined(__arch_um__)
|
||||
|
||||
#include <linux/raid/pq.h>
|
||||
#include "x86.h"
|
||||
|
||||
@ -159,9 +157,7 @@ const struct raid6_calls raid6_sse2x2 = {
|
||||
1 /* Has cache hints */
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(__x86_64__) && !defined(__arch_um__)
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
/*
|
||||
* Unrolled-by-4 SSE2 implementation
|
||||
@ -259,4 +255,4 @@ const struct raid6_calls raid6_sse2x4 = {
|
||||
1 /* Has cache hints */
|
||||
};
|
||||
|
||||
#endif
|
||||
#endif /* CONFIG_X86_64 */
|
||||
|
@ -10,16 +10,31 @@ LD = ld
|
||||
AWK = awk -f
|
||||
AR = ar
|
||||
RANLIB = ranlib
|
||||
OBJS = int1.o int2.o int4.o int8.o int16.o int32.o recov.o algos.o tables.o
|
||||
|
||||
ARCH := $(shell uname -m 2>/dev/null | sed -e /s/i.86/i386/)
|
||||
ifeq ($(ARCH),i386)
|
||||
CFLAGS += -DCONFIG_X86_32
|
||||
IS_X86 = yes
|
||||
endif
|
||||
ifeq ($(ARCH),x86_64)
|
||||
CFLAGS += -DCONFIG_X86_64
|
||||
IS_X86 = yes
|
||||
endif
|
||||
|
||||
ifeq ($(IS_X86),yes)
|
||||
OBJS += mmx.o sse1.o sse2.o avx2.o recov_ssse3.o recov_avx2.o
|
||||
CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1" | \
|
||||
gcc -c -x assembler - >&/dev/null && \
|
||||
rm ./-.o && echo -DCONFIG_AS_AVX2=1)
|
||||
else
|
||||
HAS_ALTIVEC := $(shell echo -e '\#include <altivec.h>\nvector int a;' |\
|
||||
gcc -c -x c - >&/dev/null && \
|
||||
rm ./-.o && echo yes)
|
||||
ifeq ($(HAS_ALTIVEC),yes)
|
||||
OBJS += altivec1.o altivec2.o altivec4.o altivec8.o
|
||||
endif
|
||||
endif
|
||||
CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1"| gcc -c -x assembler - &&\
|
||||
rm ./-.o && echo -DCONFIG_AS_AVX2=1)
|
||||
|
||||
.c.o:
|
||||
$(CC) $(CFLAGS) -c -o $@ $<
|
||||
@ -32,9 +47,7 @@ CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1"| gcc -c -x assembler - &&\
|
||||
|
||||
all: raid6.a raid6test
|
||||
|
||||
raid6.a: int1.o int2.o int4.o int8.o int16.o int32.o mmx.o sse1.o sse2.o avx2.o \
|
||||
altivec1.o altivec2.o altivec4.o altivec8.o recov.o recov_ssse3.o recov_avx2.o algos.o \
|
||||
tables.o
|
||||
raid6.a: $(OBJS)
|
||||
rm -f $@
|
||||
$(AR) cq $@ $^
|
||||
$(RANLIB) $@
|
||||
|
Loading…
Reference in New Issue
Block a user