1 # SPDX-License-Identifier: GPL-2.0
2 obj-
$(CONFIG_RAID6_PQ
) += raid6_pq.o
4 raid6_pq-y
+= algos.o recov.o tables.o int1.o int2.o int4.o \
7 raid6_pq-
$(CONFIG_X86
) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o avx512.o recov_avx512.o
8 raid6_pq-
$(CONFIG_ALTIVEC
) += altivec1.o altivec2.o altivec4.o altivec8.o
9 raid6_pq-
$(CONFIG_KERNEL_MODE_NEON
) += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o
10 raid6_pq-
$(CONFIG_TILEGX
) += tilegx8.o
11 raid6_pq-
$(CONFIG_S390
) += s390vx8.o recov_s390xc.o
13 hostprogs-y
+= mktables
15 quiet_cmd_unroll
= UNROLL
$@
16 cmd_unroll
= $(AWK
) -f
$(srctree
)/$(src
)/unroll.awk
-vN
=$(UNROLL
) \
17 < $< > $@ ||
( rm -f
$@
&& exit
1 )
19 ifeq ($(CONFIG_ALTIVEC
),y
)
20 altivec_flags
:= -maltivec
$(call cc-option
,-mabi
=altivec
)
22 ifeq ($(cc-name
),clang
)
23 # clang ppc port does not yet support -maltivec when -msoft-float is
24 # enabled. A future release of clang will resolve this
25 # https://bugs.llvm.org/show_bug.cgi?id=31177
26 CFLAGS_REMOVE_altivec1.o
+= -msoft-float
27 CFLAGS_REMOVE_altivec2.o
+= -msoft-float
28 CFLAGS_REMOVE_altivec4.o
+= -msoft-float
29 CFLAGS_REMOVE_altivec8.o
+= -msoft-float
30 CFLAGS_REMOVE_altivec8.o
+= -msoft-float
31 CFLAGS_REMOVE_vpermxor1.o
+= -msoft-float
32 CFLAGS_REMOVE_vpermxor2.o
+= -msoft-float
33 CFLAGS_REMOVE_vpermxor4.o
+= -msoft-float
34 CFLAGS_REMOVE_vpermxor8.o
+= -msoft-float
38 # The GCC option -ffreestanding is required in order to compile code containing
39 # ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel)
40 ifeq ($(CONFIG_KERNEL_MODE_NEON
),y
)
41 NEON_FLAGS
:= -ffreestanding
43 NEON_FLAGS
+= -march
=armv7-a
-mfloat-abi
=softfp
-mfpu
=neon
45 CFLAGS_recov_neon_inner.o
+= $(NEON_FLAGS
)
47 CFLAGS_REMOVE_recov_neon_inner.o
+= -mgeneral-regs-only
48 CFLAGS_REMOVE_neon1.o
+= -mgeneral-regs-only
49 CFLAGS_REMOVE_neon2.o
+= -mgeneral-regs-only
50 CFLAGS_REMOVE_neon4.o
+= -mgeneral-regs-only
51 CFLAGS_REMOVE_neon8.o
+= -mgeneral-regs-only
56 $(obj
)/int1.c
: UNROLL
:= 1
57 $(obj
)/int1.c
: $(src
)/int.uc
$(src
)/unroll.awk FORCE
58 $(call if_changed
,unroll
)
61 $(obj
)/int2.c
: UNROLL
:= 2
62 $(obj
)/int2.c
: $(src
)/int.uc
$(src
)/unroll.awk FORCE
63 $(call if_changed
,unroll
)
66 $(obj
)/int4.c
: UNROLL
:= 4
67 $(obj
)/int4.c
: $(src
)/int.uc
$(src
)/unroll.awk FORCE
68 $(call if_changed
,unroll
)
71 $(obj
)/int8.c
: UNROLL
:= 8
72 $(obj
)/int8.c
: $(src
)/int.uc
$(src
)/unroll.awk FORCE
73 $(call if_changed
,unroll
)
76 $(obj
)/int16.c
: UNROLL
:= 16
77 $(obj
)/int16.c
: $(src
)/int.uc
$(src
)/unroll.awk FORCE
78 $(call if_changed
,unroll
)
81 $(obj
)/int32.c
: UNROLL
:= 32
82 $(obj
)/int32.c
: $(src
)/int.uc
$(src
)/unroll.awk FORCE
83 $(call if_changed
,unroll
)
85 CFLAGS_altivec1.o
+= $(altivec_flags
)
87 $(obj
)/altivec1.c
: UNROLL
:= 1
88 $(obj
)/altivec1.c
: $(src
)/altivec.uc
$(src
)/unroll.awk FORCE
89 $(call if_changed
,unroll
)
91 CFLAGS_altivec2.o
+= $(altivec_flags
)
93 $(obj
)/altivec2.c
: UNROLL
:= 2
94 $(obj
)/altivec2.c
: $(src
)/altivec.uc
$(src
)/unroll.awk FORCE
95 $(call if_changed
,unroll
)
97 CFLAGS_altivec4.o
+= $(altivec_flags
)
99 $(obj
)/altivec4.c
: UNROLL
:= 4
100 $(obj
)/altivec4.c
: $(src
)/altivec.uc
$(src
)/unroll.awk FORCE
101 $(call if_changed
,unroll
)
103 CFLAGS_altivec8.o
+= $(altivec_flags
)
104 targets
+= altivec8.c
105 $(obj
)/altivec8.c
: UNROLL
:= 8
106 $(obj
)/altivec8.c
: $(src
)/altivec.uc
$(src
)/unroll.awk FORCE
107 $(call if_changed
,unroll
)
109 CFLAGS_neon1.o
+= $(NEON_FLAGS
)
111 $(obj
)/neon1.c
: UNROLL
:= 1
112 $(obj
)/neon1.c
: $(src
)/neon.uc
$(src
)/unroll.awk FORCE
113 $(call if_changed
,unroll
)
115 CFLAGS_neon2.o
+= $(NEON_FLAGS
)
117 $(obj
)/neon2.c
: UNROLL
:= 2
118 $(obj
)/neon2.c
: $(src
)/neon.uc
$(src
)/unroll.awk FORCE
119 $(call if_changed
,unroll
)
121 CFLAGS_neon4.o
+= $(NEON_FLAGS
)
123 $(obj
)/neon4.c
: UNROLL
:= 4
124 $(obj
)/neon4.c
: $(src
)/neon.uc
$(src
)/unroll.awk FORCE
125 $(call if_changed
,unroll
)
127 CFLAGS_neon8.o
+= $(NEON_FLAGS
)
129 $(obj
)/neon8.c
: UNROLL
:= 8
130 $(obj
)/neon8.c
: $(src
)/neon.uc
$(src
)/unroll.awk FORCE
131 $(call if_changed
,unroll
)
134 $(obj
)/tilegx8.c
: UNROLL
:= 8
135 $(obj
)/tilegx8.c
: $(src
)/tilegx.uc
$(src
)/unroll.awk FORCE
136 $(call if_changed
,unroll
)
139 $(obj
)/s390vx8.c
: UNROLL
:= 8
140 $(obj
)/s390vx8.c
: $(src
)/s390vx.uc
$(src
)/unroll.awk FORCE
141 $(call if_changed
,unroll
)
143 quiet_cmd_mktable
= TABLE
$@
144 cmd_mktable
= $(obj
)/mktables
> $@ ||
( rm -f
$@
&& exit
1 )
147 $(obj
)/tables.c
: $(obj
)/mktables FORCE
148 $(call if_changed
,mktable
)