diff options
author | Erik Schnetter <schnetter@gmail.com> | 2012-12-02 22:48:15 -0500 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2012-12-02 22:48:15 -0500 |
commit | 94b89a202430d972b04c8ed3b65a832127e38de8 (patch) | |
tree | 79bbf338ee27bdaf5962627222e254ec3c9a9c68 /example.cc | |
parent | 8f470967080fbff980f77d9dcd9656e9a152abf9 (diff) | |
download | vecmathlib-94b89a202430d972b04c8ed3b65a832127e38de8.zip vecmathlib-94b89a202430d972b04c8ed3b65a832127e38de8.tar.gz |
Optimize sum() functions
Diffstat (limited to 'example.cc')
-rw-r--r-- | example.cc | 39 |
1 files changed, 37 insertions, 2 deletions
@@ -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; |