summaryrefslogtreecommitdiffstats
path: root/example.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2012-12-02 22:48:15 -0500
committerErik Schnetter <schnetter@gmail.com>2012-12-02 22:48:15 -0500
commit94b89a202430d972b04c8ed3b65a832127e38de8 (patch)
tree79bbf338ee27bdaf5962627222e254ec3c9a9c68 /example.cc
parent8f470967080fbff980f77d9dcd9656e9a152abf9 (diff)
downloadvecmathlib-94b89a202430d972b04c8ed3b65a832127e38de8.zip
vecmathlib-94b89a202430d972b04c8ed3b65a832127e38de8.tar.gz
Optimize sum() functions
Diffstat (limited to 'example.cc')
-rw-r--r--example.cc39
1 files changed, 37 insertions, 2 deletions
diff --git a/example.cc b/example.cc
index 50415c2..f3150b0 100644
--- a/example.cc
+++ b/example.cc
@@ -1,12 +1,47 @@
// -*-C++-*-
-#include "vec_float.h"
-#include "vec_double_avx.h"
+#include "vecmathlib.h"
#include <iostream>
using namespace std;
+float arg_f1(float x) { return -vecmathlib::realvec<float,1>(x)[0]; }
+float arg_f4(__m128 x) { return -vecmathlib::realvec<float,4>(x)[0]; }
+float arg_f8(__m256 x) { return -vecmathlib::realvec<float,8>(x)[0]; }
+
+int size_f1(float x) { return sizeof(vecmathlib::realvec<float,1>); }
+int size_f4(__m128 x) { return sizeof(vecmathlib::realvec<float,4>); }
+int size_f8(__m256 x) { return sizeof(vecmathlib::realvec<float,8>); }
+
+float sum_f1(vecmathlib::realvec<float,1> x) { return sum(x); }
+float sum_f4(vecmathlib::realvec<float,4> x) { return sum(x); }
+float sum_f8(vecmathlib::realvec<float,8> x) { return sum(x); }
+double sum_d1(vecmathlib::realvec<double,1> x) { return sum(x); }
+double sum_d2(vecmathlib::realvec<double,2> x) { return sum(x); }
+double sum_d4(vecmathlib::realvec<double,4> x) { return sum(x); }
+
+float elt0_f1(vecmathlib::realvec<float,1> x) { return x[0]; }
+float elt0_f4(vecmathlib::realvec<float,4> x) { return x[0]; }
+float elt1_f4(vecmathlib::realvec<float,4> x) { return x[1]; }
+float elt2_f4(vecmathlib::realvec<float,4> x) { return x[2]; }
+float elt3_f4(vecmathlib::realvec<float,4> x) { return x[3]; }
+float elt0_f8(vecmathlib::realvec<float,8> x) { return x[0]; }
+float elt1_f8(vecmathlib::realvec<float,8> x) { return x[1]; }
+float elt2_f8(vecmathlib::realvec<float,8> x) { return x[2]; }
+float elt3_f8(vecmathlib::realvec<float,8> x) { return x[3]; }
+float elt4_f8(vecmathlib::realvec<float,8> x) { return x[4]; }
+float elt5_f8(vecmathlib::realvec<float,8> x) { return x[5]; }
+float elt6_f8(vecmathlib::realvec<float,8> x) { return x[6]; }
+float elt7_f8(vecmathlib::realvec<float,8> x) { return x[7]; }
+double elt0_d1(vecmathlib::realvec<double,1> x) { return x[0]; }
+double elt0_d2(vecmathlib::realvec<double,2> x) { return x[0]; }
+double elt1_d2(vecmathlib::realvec<double,2> x) { return x[1]; }
+double elt0_d4(vecmathlib::realvec<double,4> x) { return x[0]; }
+double elt1_d4(vecmathlib::realvec<double,4> x) { return x[1]; }
+double elt2_d4(vecmathlib::realvec<double,4> x) { return x[2]; }
+double elt3_d4(vecmathlib::realvec<double,4> x) { return x[3]; }
+
int main(int argc, char** argv)
{
using namespace vecmathlib;
OpenPOWER on IntegriCloud