1# SPDX-License-Identifier: GPL-2.0 2obj-$(CONFIG_RAID6_PQ) += raid6_pq.o 3 4raid6_pq-y += algos.o recov.o tables.o int1.o int2.o int4.o \ 5 int8.o int16.o int32.o 6 7raid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o avx512.o recov_avx512.o 8raid6_pq-$(CONFIG_ALTIVEC) += altivec1.o altivec2.o altivec4.o altivec8.o 9raid6_pq-$(CONFIG_KERNEL_MODE_NEON) += neon.o neon1.o neon2.o neon4.o neon8.o recov_neon.o recov_neon_inner.o 10raid6_pq-$(CONFIG_TILEGX) += tilegx8.o 11raid6_pq-$(CONFIG_S390) += s390vx8.o recov_s390xc.o 12 13hostprogs-y += mktables 14 15quiet_cmd_unroll = UNROLL $@ 16 cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) \ 17 < $< > $@ || ( rm -f $@ && exit 1 ) 18 19ifeq ($(CONFIG_ALTIVEC),y) 20altivec_flags := -maltivec $(call cc-option,-mabi=altivec) 21endif 22 23# The GCC option -ffreestanding is required in order to compile code containing 24# ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel) 25ifeq ($(CONFIG_KERNEL_MODE_NEON),y) 26NEON_FLAGS := -ffreestanding 27ifeq ($(ARCH),arm) 28NEON_FLAGS += -mfloat-abi=softfp -mfpu=neon 29endif 30CFLAGS_recov_neon_inner.o += $(NEON_FLAGS) 31ifeq ($(ARCH),arm64) 32CFLAGS_REMOVE_recov_neon_inner.o += -mgeneral-regs-only 33CFLAGS_REMOVE_neon1.o += -mgeneral-regs-only 34CFLAGS_REMOVE_neon2.o += -mgeneral-regs-only 35CFLAGS_REMOVE_neon4.o += -mgeneral-regs-only 36CFLAGS_REMOVE_neon8.o += -mgeneral-regs-only 37endif 38endif 39 40targets += int1.c 41$(obj)/int1.c: UNROLL := 1 42$(obj)/int1.c: $(src)/int.uc $(src)/unroll.awk FORCE 43 $(call if_changed,unroll) 44 45targets += int2.c 46$(obj)/int2.c: UNROLL := 2 47$(obj)/int2.c: $(src)/int.uc $(src)/unroll.awk FORCE 48 $(call if_changed,unroll) 49 50targets += int4.c 51$(obj)/int4.c: UNROLL := 4 52$(obj)/int4.c: $(src)/int.uc $(src)/unroll.awk FORCE 53 $(call if_changed,unroll) 54 55targets += int8.c 56$(obj)/int8.c: UNROLL := 8 57$(obj)/int8.c: $(src)/int.uc $(src)/unroll.awk FORCE 58 $(call if_changed,unroll) 59 60targets += int16.c 61$(obj)/int16.c: UNROLL := 16 62$(obj)/int16.c: $(src)/int.uc $(src)/unroll.awk FORCE 63 $(call if_changed,unroll) 64 65targets += int32.c 66$(obj)/int32.c: UNROLL := 32 67$(obj)/int32.c: $(src)/int.uc $(src)/unroll.awk FORCE 68 $(call if_changed,unroll) 69 70CFLAGS_altivec1.o += $(altivec_flags) 71targets += altivec1.c 72$(obj)/altivec1.c: UNROLL := 1 73$(obj)/altivec1.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 74 $(call if_changed,unroll) 75 76CFLAGS_altivec2.o += $(altivec_flags) 77targets += altivec2.c 78$(obj)/altivec2.c: UNROLL := 2 79$(obj)/altivec2.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 80 $(call if_changed,unroll) 81 82CFLAGS_altivec4.o += $(altivec_flags) 83targets += altivec4.c 84$(obj)/altivec4.c: UNROLL := 4 85$(obj)/altivec4.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 86 $(call if_changed,unroll) 87 88CFLAGS_altivec8.o += $(altivec_flags) 89targets += altivec8.c 90$(obj)/altivec8.c: UNROLL := 8 91$(obj)/altivec8.c: $(src)/altivec.uc $(src)/unroll.awk FORCE 92 $(call if_changed,unroll) 93 94CFLAGS_neon1.o += $(NEON_FLAGS) 95targets += neon1.c 96$(obj)/neon1.c: UNROLL := 1 97$(obj)/neon1.c: $(src)/neon.uc $(src)/unroll.awk FORCE 98 $(call if_changed,unroll) 99 100CFLAGS_neon2.o += $(NEON_FLAGS) 101targets += neon2.c 102$(obj)/neon2.c: UNROLL := 2 103$(obj)/neon2.c: $(src)/neon.uc $(src)/unroll.awk FORCE 104 $(call if_changed,unroll) 105 106CFLAGS_neon4.o += $(NEON_FLAGS) 107targets += neon4.c 108$(obj)/neon4.c: UNROLL := 4 109$(obj)/neon4.c: $(src)/neon.uc $(src)/unroll.awk FORCE 110 $(call if_changed,unroll) 111 112CFLAGS_neon8.o += $(NEON_FLAGS) 113targets += neon8.c 114$(obj)/neon8.c: UNROLL := 8 115$(obj)/neon8.c: $(src)/neon.uc $(src)/unroll.awk FORCE 116 $(call if_changed,unroll) 117 118targets += tilegx8.c 119$(obj)/tilegx8.c: UNROLL := 8 120$(obj)/tilegx8.c: $(src)/tilegx.uc $(src)/unroll.awk FORCE 121 $(call if_changed,unroll) 122 123targets += s390vx8.c 124$(obj)/s390vx8.c: UNROLL := 8 125$(obj)/s390vx8.c: $(src)/s390vx.uc $(src)/unroll.awk FORCE 126 $(call if_changed,unroll) 127 128quiet_cmd_mktable = TABLE $@ 129 cmd_mktable = $(obj)/mktables > $@ || ( rm -f $@ && exit 1 ) 130 131targets += tables.c 132$(obj)/tables.c: $(obj)/mktables FORCE 133 $(call if_changed,mktable) 134