---
 .../jerasure/ErasureCodePluginSelectJerasure.cc    |  3 +++
 src/erasure-code/jerasure/Makefile.am              | 24 +++++++++++++++++++++
 src/test/erasure-code/Makefile.am                  | 10 +++++++++
 src/test/erasure-code/TestJerasurePluginNEON.cc    | 25 ++++++++++++++++++++++
 4 files changed, 62 insertions(+)
 create mode 100644 src/test/erasure-code/TestJerasurePluginNEON.cc

diff --git a/src/erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc 
b/src/erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc
index 53c7026..32560b4 100644
--- a/src/erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc
+++ b/src/erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc
@@ -19,6 +19,7 @@
 #include "common/debug.h"
 #include "arch/probe.h"
 #include "arch/intel.h"
+#include "arch/neon.h"
 #include "erasure-code/ErasureCodePlugin.h"
 
 #define dout_subsys ceph_subsys_osd
@@ -44,6 +45,8 @@ static string get_variant() {
             ceph_arch_intel_sse3 &&
             ceph_arch_intel_sse2) {
     return "sse3";
+  } else if (ceph_arch_neon) {
+    return "neon";
   } else {
     return "generic";
   }
diff --git a/src/erasure-code/jerasure/Makefile.am 
b/src/erasure-code/jerasure/Makefile.am
index 142c612..de9c14a 100644
--- a/src/erasure-code/jerasure/Makefile.am
+++ b/src/erasure-code/jerasure/Makefile.am
@@ -50,6 +50,30 @@ endif
 
 erasure_codelib_LTLIBRARIES += libec_jerasure_generic.la
 
+libec_jerasure_neon_la_SOURCES = ${jerasure_sources}                           
            \
+                                  
erasure-code/jerasure/gf-complete/src/neon/gf_w4_neon.c  \
+                                  
erasure-code/jerasure/gf-complete/src/neon/gf_w8_neon.c  \
+                                  
erasure-code/jerasure/gf-complete/src/neon/gf_w16_neon.c \
+                                  
erasure-code/jerasure/gf-complete/src/neon/gf_w32_neon.c \
+                                  
erasure-code/jerasure/gf-complete/src/neon/gf_w64_neon.c
+libec_jerasure_neon_la_CFLAGS = ${AM_CFLAGS}  \
+       ${ARM_NEON_FLAGS} \
+       -I$(srcdir)/erasure-code/jerasure/gf-complete/include \
+       -I$(srcdir)/erasure-code/jerasure/jerasure/include
+libec_jerasure_neon_la_CXXFLAGS= ${AM_CXXFLAGS} \
+       ${ARM_NEON_FLAGS} \
+       -I$(srcdir)/erasure-code/jerasure/gf-complete/include \
+       -I$(srcdir)/erasure-code/jerasure/jerasure/include
+libec_jerasure_neon_la_LIBADD = $(LIBCRUSH) $(PTHREAD_LIBS) $(EXTRALIBS)
+libec_jerasure_neon_la_LDFLAGS = ${AM_LDFLAGS} -version-info 2:0:0
+if LINUX
+libec_jerasure_neon_la_LDFLAGS += -export-symbols-regex '.*__erasure_code_.*'
+endif
+
+if HAVE_NEON
+erasure_codelib_LTLIBRARIES += libec_jerasure_neon.la
+endif
+
 libec_jerasure_sse3_la_SOURCES = ${jerasure_sources}
 libec_jerasure_sse3_la_CFLAGS = ${AM_CFLAGS}  \
        ${INTEL_SSE_FLAGS} \
diff --git a/src/test/erasure-code/Makefile.am 
b/src/test/erasure-code/Makefile.am
index 958ae4d..7f9e27f 100644
--- a/src/test/erasure-code/Makefile.am
+++ b/src/test/erasure-code/Makefile.am
@@ -68,6 +68,16 @@ libec_fail_to_register_la_LIBADD = $(PTHREAD_LIBS) 
$(EXTRALIBS)
 libec_fail_to_register_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex 
'.*__erasure_code_.*'
 erasure_codelib_LTLIBRARIES += libec_fail_to_register.la
 
+libec_test_jerasure_neon_la_SOURCES = 
test/erasure-code/TestJerasurePluginNEON.cc
+test/erasure-code/TestJerasurePluginNEON.cc: ./ceph_ver.h
+libec_test_jerasure_neon_la_CFLAGS = ${AM_CFLAGS}
+libec_test_jerasure_neon_la_CXXFLAGS= ${AM_CXXFLAGS}
+libec_test_jerasure_neon_la_LIBADD = $(PTHREAD_LIBS) $(EXTRALIBS)
+libec_test_jerasure_neon_la_LDFLAGS = ${AM_LDFLAGS} -export-symbols-regex 
'.*__erasure_code_.*'
+if HAVE_NEON
+erasure_codelib_LTLIBRARIES += libec_test_jerasure_neon.la
+endif
+
 libec_test_jerasure_sse4_la_SOURCES = 
test/erasure-code/TestJerasurePluginSSE4.cc
 test/erasure-code/TestJerasurePluginSSE4.cc: ./ceph_ver.h
 libec_test_jerasure_sse4_la_CFLAGS = ${AM_CFLAGS}
diff --git a/src/test/erasure-code/TestJerasurePluginNEON.cc 
b/src/test/erasure-code/TestJerasurePluginNEON.cc
new file mode 100644
index 0000000..3060485
--- /dev/null
+++ b/src/test/erasure-code/TestJerasurePluginNEON.cc
@@ -0,0 +1,25 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph distributed storage system
+ *
+ * Copyright (C) 2014 Cloudwatt <[email protected]>
+ * Copyright (C) 2014 Red Hat <[email protected]>
+ *
+ * Author: Loic Dachary <[email protected]>
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License as published by the Free Software Foundation; either
+ *  version 2.1 of the License, or (at your option) any later version.
+ *
+ */
+
+#include "ceph_ver.h"
+
+extern "C" const char *__erasure_code_version() { return CEPH_GIT_NICE_VER; }
+
+extern "C" int __erasure_code_init(char *plugin_name, char *directory)
+{
+  return -444;
+}
-- 
2.1.2

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to