From: Loic Dachary Date: Mon, 24 Nov 2014 16:48:59 +0000 (+0100) Subject: erasure-code: test NEON arch selection logic X-Git-Tag: v0.91~163^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F2694%2Fhead;p=ceph.git erasure-code: test NEON arch selection logic The jerasure plugin loads the plugin that matches the architecture supported by the CPU at runtime. Include the NEON plugin in the tests. Signed-off-by: Loic Dachary --- diff --git a/src/test/erasure-code/TestErasureCodePluginJerasure.cc b/src/test/erasure-code/TestErasureCodePluginJerasure.cc index e6cb4c4458b8..e8128a8bdee1 100644 --- a/src/test/erasure-code/TestErasureCodePluginJerasure.cc +++ b/src/test/erasure-code/TestErasureCodePluginJerasure.cc @@ -4,6 +4,7 @@ * Ceph distributed storage system * * Copyright (C) 2013,2014 Cloudwatt + * Copyright (C) 2014 Red Hat * * Author: Loic Dachary * @@ -17,6 +18,7 @@ #include #include "arch/probe.h" #include "arch/intel.h" +#include "arch/neon.h" #include "global/global_init.h" #include "erasure-code/ErasureCodePlugin.h" #include "common/ceph_argparse.h" @@ -65,6 +67,7 @@ TEST(ErasureCodePlugin, select) int arch_intel_ssse3 = ceph_arch_intel_ssse3; int arch_intel_sse3 = ceph_arch_intel_sse3; int arch_intel_sse2 = ceph_arch_intel_sse2; + int arch_neon = ceph_arch_neon; ErasureCodePluginRegistry &instance = ErasureCodePluginRegistry::instance(); map parameters; @@ -82,6 +85,7 @@ TEST(ErasureCodePlugin, select) ceph_arch_intel_ssse3 = 1; ceph_arch_intel_sse3 = 1; ceph_arch_intel_sse2 = 1; + ceph_arch_neon = 0; ErasureCodeInterfaceRef erasure_code; int sse4_side_effect = -444; @@ -96,6 +100,7 @@ TEST(ErasureCodePlugin, select) ceph_arch_intel_ssse3 = 1; ceph_arch_intel_sse3 = 1; ceph_arch_intel_sse2 = 1; + ceph_arch_neon = 0; ErasureCodeInterfaceRef erasure_code; int sse3_side_effect = -333; @@ -110,11 +115,27 @@ TEST(ErasureCodePlugin, select) ceph_arch_intel_ssse3 = 1; ceph_arch_intel_sse3 = 0; ceph_arch_intel_sse2 = 1; + ceph_arch_neon = 0; ErasureCodeInterfaceRef erasure_code; int generic_side_effect = -111; EXPECT_EQ(generic_side_effect, instance.factory("jerasure", parameters, - &erasure_code, cerr)); + &erasure_code, cerr)); + } + // neon is set, load the neon plugin + { + ceph_arch_intel_pclmul = 0; + ceph_arch_intel_sse42 = 0; + ceph_arch_intel_sse41 = 0; + ceph_arch_intel_ssse3 = 0; + ceph_arch_intel_sse3 = 0; + ceph_arch_intel_sse2 = 0; + ceph_arch_neon = 1; + + ErasureCodeInterfaceRef erasure_code; + int generic_side_effect = -555; + EXPECT_EQ(generic_side_effect, instance.factory("jerasure", parameters, + &erasure_code, cerr)); } @@ -125,6 +146,7 @@ TEST(ErasureCodePlugin, select) ceph_arch_intel_ssse3 = arch_intel_ssse3; ceph_arch_intel_sse3 = arch_intel_sse3; ceph_arch_intel_sse2 = arch_intel_sse2; + ceph_arch_neon = arch_neon; } TEST(ErasureCodePlugin, sse) diff --git a/src/test/erasure-code/TestJerasurePluginNEON.cc b/src/test/erasure-code/TestJerasurePluginNEON.cc index 30604857e223..cd38ccbd1e89 100644 --- a/src/test/erasure-code/TestJerasurePluginNEON.cc +++ b/src/test/erasure-code/TestJerasurePluginNEON.cc @@ -21,5 +21,5 @@ 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; + return -555; }