]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
erasure-code: build and use a NEON jerasure variant
authorJanne Grunau <j@jannau.net>
Tue, 9 Sep 2014 09:17:39 +0000 (11:17 +0200)
committerLoic Dachary <ldachary@redhat.com>
Tue, 25 Nov 2014 13:17:38 +0000 (14:17 +0100)
src/erasure-code/jerasure/ErasureCodePluginSelectJerasure.cc
src/erasure-code/jerasure/Makefile.am
src/test/erasure-code/Makefile.am
src/test/erasure-code/TestJerasurePluginNEON.cc [new file with mode: 0644]

index 53c70266a9b239b4f4f30e842ae6dfbaa7f4152d..32560b40fcbb7872f6ea32c5a81e40180dbbc50b 100644 (file)
@@ -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";
   }
index 142c612e4d6dced15b6310eee3abef10914b682c..de9c14a94b112f0b8d06e584223b356becb1dc1d 100644 (file)
@@ -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} \
index 2c10d163b4769541dc2f33f872c6ed2b9d50b3e9..376fb787e61ebb68d615176c61b2db5eea1c5f40 100644 (file)
@@ -78,6 +78,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 (file)
index 0000000..3060485
--- /dev/null
@@ -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 <libre.licensing@cloudwatt.com>
+ * Copyright (C) 2014 Red Hat <contact@redhat.com>
+ *
+ * Author: Loic Dachary <loic@dachary.org>
+ *
+ *  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;
+}