xref: /openbmc/linux/lib/raid6/Makefile (revision 474fd6e8)
1f5e70d0fSDavid Woodhouseobj-$(CONFIG_RAID6_PQ)	+= raid6_pq.o
2f5e70d0fSDavid Woodhouse
34f8c55c5SYuanhan Liuraid6_pq-y	+= algos.o recov.o tables.o int1.o int2.o int4.o \
44f8c55c5SYuanhan Liu		   int8.o int16.o int32.o
54f8c55c5SYuanhan Liu
64f8c55c5SYuanhan Liuraid6_pq-$(CONFIG_X86) += recov_ssse3.o recov_avx2.o mmx.o sse1.o sse2.o avx2.o
74f8c55c5SYuanhan Liuraid6_pq-$(CONFIG_ALTIVEC) += altivec1.o altivec2.o altivec4.o altivec8.o
87d11965dSArd Biesheuvelraid6_pq-$(CONFIG_KERNEL_MODE_NEON) += neon.o neon1.o neon2.o neon4.o neon8.o
9ae77cbc1SKen Steeleraid6_pq-$(CONFIG_TILEGX) += tilegx8.o
10474fd6e8SMartin Schwidefskyraid6_pq-$(CONFIG_S390) += s390vx8.o
114f8c55c5SYuanhan Liu
12f5e70d0fSDavid Woodhousehostprogs-y	+= mktables
13f5e70d0fSDavid Woodhouse
14f5e70d0fSDavid Woodhousequiet_cmd_unroll = UNROLL  $@
152144381dSDavid Woodhouse      cmd_unroll = $(AWK) -f$(srctree)/$(src)/unroll.awk -vN=$(UNROLL) \
16f5e70d0fSDavid Woodhouse                   < $< > $@ || ( rm -f $@ && exit 1 )
17f5e70d0fSDavid Woodhouse
18f5e70d0fSDavid Woodhouseifeq ($(CONFIG_ALTIVEC),y)
191fb3f5a7SAnton Blanchardaltivec_flags := -maltivec $(call cc-option,-mabi=altivec)
20f5e70d0fSDavid Woodhouseendif
21f5e70d0fSDavid Woodhouse
227d11965dSArd Biesheuvel# The GCC option -ffreestanding is required in order to compile code containing
237d11965dSArd Biesheuvel# ARM/NEON intrinsics in a non C99-compliant environment (such as the kernel)
247d11965dSArd Biesheuvelifeq ($(CONFIG_KERNEL_MODE_NEON),y)
257d11965dSArd BiesheuvelNEON_FLAGS := -ffreestanding
267d11965dSArd Biesheuvelifeq ($(ARCH),arm)
277d11965dSArd BiesheuvelNEON_FLAGS += -mfloat-abi=softfp -mfpu=neon
287d11965dSArd Biesheuvelendif
297d11965dSArd Biesheuvelifeq ($(ARCH),arm64)
307d11965dSArd BiesheuvelCFLAGS_REMOVE_neon1.o += -mgeneral-regs-only
317d11965dSArd BiesheuvelCFLAGS_REMOVE_neon2.o += -mgeneral-regs-only
327d11965dSArd BiesheuvelCFLAGS_REMOVE_neon4.o += -mgeneral-regs-only
337d11965dSArd BiesheuvelCFLAGS_REMOVE_neon8.o += -mgeneral-regs-only
347d11965dSArd Biesheuvelendif
357d11965dSArd Biesheuvelendif
367d11965dSArd Biesheuvel
37cc4589ebSDavid Woodhousetargets += int1.c
38cc4589ebSDavid Woodhouse$(obj)/int1.c:   UNROLL := 1
39cc4589ebSDavid Woodhouse$(obj)/int1.c:   $(src)/int.uc $(src)/unroll.awk FORCE
40f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
41f5e70d0fSDavid Woodhouse
42cc4589ebSDavid Woodhousetargets += int2.c
43cc4589ebSDavid Woodhouse$(obj)/int2.c:   UNROLL := 2
44cc4589ebSDavid Woodhouse$(obj)/int2.c:   $(src)/int.uc $(src)/unroll.awk FORCE
45f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
46f5e70d0fSDavid Woodhouse
47cc4589ebSDavid Woodhousetargets += int4.c
48cc4589ebSDavid Woodhouse$(obj)/int4.c:   UNROLL := 4
49cc4589ebSDavid Woodhouse$(obj)/int4.c:   $(src)/int.uc $(src)/unroll.awk FORCE
50f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
51f5e70d0fSDavid Woodhouse
52cc4589ebSDavid Woodhousetargets += int8.c
53cc4589ebSDavid Woodhouse$(obj)/int8.c:   UNROLL := 8
54cc4589ebSDavid Woodhouse$(obj)/int8.c:   $(src)/int.uc $(src)/unroll.awk FORCE
55f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
56f5e70d0fSDavid Woodhouse
57cc4589ebSDavid Woodhousetargets += int16.c
58cc4589ebSDavid Woodhouse$(obj)/int16.c:  UNROLL := 16
59cc4589ebSDavid Woodhouse$(obj)/int16.c:  $(src)/int.uc $(src)/unroll.awk FORCE
60f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
61f5e70d0fSDavid Woodhouse
62cc4589ebSDavid Woodhousetargets += int32.c
63cc4589ebSDavid Woodhouse$(obj)/int32.c:  UNROLL := 32
64cc4589ebSDavid Woodhouse$(obj)/int32.c:  $(src)/int.uc $(src)/unroll.awk FORCE
65f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
66f5e70d0fSDavid Woodhouse
67cc4589ebSDavid WoodhouseCFLAGS_altivec1.o += $(altivec_flags)
68cc4589ebSDavid Woodhousetargets += altivec1.c
69cc4589ebSDavid Woodhouse$(obj)/altivec1.c:   UNROLL := 1
70cc4589ebSDavid Woodhouse$(obj)/altivec1.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
71f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
72f5e70d0fSDavid Woodhouse
73cc4589ebSDavid WoodhouseCFLAGS_altivec2.o += $(altivec_flags)
74cc4589ebSDavid Woodhousetargets += altivec2.c
75cc4589ebSDavid Woodhouse$(obj)/altivec2.c:   UNROLL := 2
76cc4589ebSDavid Woodhouse$(obj)/altivec2.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
77f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
78f5e70d0fSDavid Woodhouse
79cc4589ebSDavid WoodhouseCFLAGS_altivec4.o += $(altivec_flags)
80cc4589ebSDavid Woodhousetargets += altivec4.c
81cc4589ebSDavid Woodhouse$(obj)/altivec4.c:   UNROLL := 4
82cc4589ebSDavid Woodhouse$(obj)/altivec4.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
83f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
84f5e70d0fSDavid Woodhouse
85cc4589ebSDavid WoodhouseCFLAGS_altivec8.o += $(altivec_flags)
86cc4589ebSDavid Woodhousetargets += altivec8.c
87cc4589ebSDavid Woodhouse$(obj)/altivec8.c:   UNROLL := 8
88cc4589ebSDavid Woodhouse$(obj)/altivec8.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
89f5e70d0fSDavid Woodhouse	$(call if_changed,unroll)
90f5e70d0fSDavid Woodhouse
917d11965dSArd BiesheuvelCFLAGS_neon1.o += $(NEON_FLAGS)
927d11965dSArd Biesheuveltargets += neon1.c
937d11965dSArd Biesheuvel$(obj)/neon1.c:   UNROLL := 1
947d11965dSArd Biesheuvel$(obj)/neon1.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
957d11965dSArd Biesheuvel	$(call if_changed,unroll)
967d11965dSArd Biesheuvel
977d11965dSArd BiesheuvelCFLAGS_neon2.o += $(NEON_FLAGS)
987d11965dSArd Biesheuveltargets += neon2.c
997d11965dSArd Biesheuvel$(obj)/neon2.c:   UNROLL := 2
1007d11965dSArd Biesheuvel$(obj)/neon2.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
1017d11965dSArd Biesheuvel	$(call if_changed,unroll)
1027d11965dSArd Biesheuvel
1037d11965dSArd BiesheuvelCFLAGS_neon4.o += $(NEON_FLAGS)
1047d11965dSArd Biesheuveltargets += neon4.c
1057d11965dSArd Biesheuvel$(obj)/neon4.c:   UNROLL := 4
1067d11965dSArd Biesheuvel$(obj)/neon4.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
1077d11965dSArd Biesheuvel	$(call if_changed,unroll)
1087d11965dSArd Biesheuvel
1097d11965dSArd BiesheuvelCFLAGS_neon8.o += $(NEON_FLAGS)
1107d11965dSArd Biesheuveltargets += neon8.c
1117d11965dSArd Biesheuvel$(obj)/neon8.c:   UNROLL := 8
1127d11965dSArd Biesheuvel$(obj)/neon8.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
1137d11965dSArd Biesheuvel	$(call if_changed,unroll)
1147d11965dSArd Biesheuvel
115ae77cbc1SKen Steeletargets += tilegx8.c
116ae77cbc1SKen Steele$(obj)/tilegx8.c:   UNROLL := 8
117ae77cbc1SKen Steele$(obj)/tilegx8.c:   $(src)/tilegx.uc $(src)/unroll.awk FORCE
118ae77cbc1SKen Steele	$(call if_changed,unroll)
119ae77cbc1SKen Steele
120474fd6e8SMartin Schwidefskytargets += s390vx8.c
121474fd6e8SMartin Schwidefsky$(obj)/s390vx8.c:   UNROLL := 8
122474fd6e8SMartin Schwidefsky$(obj)/s390vx8.c:   $(src)/s390vx.uc $(src)/unroll.awk FORCE
123474fd6e8SMartin Schwidefsky	$(call if_changed,unroll)
124474fd6e8SMartin Schwidefsky
125f5e70d0fSDavid Woodhousequiet_cmd_mktable = TABLE   $@
126f5e70d0fSDavid Woodhouse      cmd_mktable = $(obj)/mktables > $@ || ( rm -f $@ && exit 1 )
127f5e70d0fSDavid Woodhouse
128cc4589ebSDavid Woodhousetargets += tables.c
129cc4589ebSDavid Woodhouse$(obj)/tables.c: $(obj)/mktables FORCE
130f5e70d0fSDavid Woodhouse	$(call if_changed,mktable)
131