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
 +raid6_pq-$(CONFIG_KERNEL_MODE_NEON) += neon.o neon1.o neon2.o neon4.o neon8.o
+ raid6_pq-$(CONFIG_TILEGX) += tilegx8.o
  
  hostprogs-y   += mktables
  
  $(obj)/altivec8.c:   $(src)/altivec.uc $(src)/unroll.awk FORCE
        $(call if_changed,unroll)
  
 +CFLAGS_neon1.o += $(NEON_FLAGS)
 +targets += neon1.c
 +$(obj)/neon1.c:   UNROLL := 1
 +$(obj)/neon1.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
 +      $(call if_changed,unroll)
 +
 +CFLAGS_neon2.o += $(NEON_FLAGS)
 +targets += neon2.c
 +$(obj)/neon2.c:   UNROLL := 2
 +$(obj)/neon2.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
 +      $(call if_changed,unroll)
 +
 +CFLAGS_neon4.o += $(NEON_FLAGS)
 +targets += neon4.c
 +$(obj)/neon4.c:   UNROLL := 4
 +$(obj)/neon4.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
 +      $(call if_changed,unroll)
 +
 +CFLAGS_neon8.o += $(NEON_FLAGS)
 +targets += neon8.c
 +$(obj)/neon8.c:   UNROLL := 8
 +$(obj)/neon8.c:   $(src)/neon.uc $(src)/unroll.awk FORCE
 +      $(call if_changed,unroll)
 +
+ targets += tilegx8.c
+ $(obj)/tilegx8.c:   UNROLL := 8
+ $(obj)/tilegx8.c:   $(src)/tilegx.uc $(src)/unroll.awk FORCE
+       $(call if_changed,unroll)
+ 
  quiet_cmd_mktable = TABLE   $@
        cmd_mktable = $(obj)/mktables > $@ || ( rm -f $@ && exit 1 )
  
 
          CFLAGS += $(shell echo "vpbroadcastb %xmm0, %ymm1" |  \
                      gcc -c -x assembler - >&/dev/null &&      \
                      rm ./-.o && echo -DCONFIG_AS_AVX2=1)
 +else ifeq ($(HAS_NEON),yes)
 +        OBJS   += neon.o neon1.o neon2.o neon4.o neon8.o
 +        CFLAGS += -DCONFIG_KERNEL_MODE_NEON=1
  else
-         HAS_ALTIVEC := $(shell echo -e '\#include <altivec.h>\nvector int a;' |\
+         HAS_ALTIVEC := $(shell printf '\#include <altivec.h>\nvector int a;\n' |\
                           gcc -c -x c - >&/dev/null && \
                           rm ./-.o && echo yes)
          ifeq ($(HAS_ALTIVEC),yes)
        ./mktables > tables.c
  
  clean:
 -      rm -f *.o *.a mktables mktables.c *.uc int*.c altivec*.c tables.c raid6test
 +      rm -f *.o *.a mktables mktables.c *.uc int*.c altivec*.c neon*.c tables.c raid6test
+       rm -f tilegx*.c
  
  spotless: clean
        rm -f *~