FflasFfpack
Data Structures | Macros | Typedefs | Functions
test-simd.C File Reference
#include "givaro/givinteger.h"
#include "givaro/givprint.h"
#include "fflas-ffpack/fflas-ffpack-config.h"
#include "fflas-ffpack/fflas/fflas_simd.h"
#include "fflas-ffpack/utils/args-parser.h"
#include "fflas-ffpack/utils/test-utils.h"
#include "fflas-ffpack/utils/align-allocator.h"
#include <array>
#include <vector>
#include <random>
#include <string>
#include <functional>
#include <limits>
#include <type_traits>
#include <algorithm>

Data Structures

struct  ScalFunctions< Element, typename enable_if< is_floating_point< Element >::value >::type >
 
struct  ScalFunctions< Element, typename enable_if< is_integral< Element >::value >::type >
 

Macros

#define REGISTER_TYPE_NAME(type)    template<> const char *TypeName<type>(){return #type;}
 
#define TEST_ONE_OP(name)    btest &= test_op<simd> (simd::name, Scal::name, #name);
 

Typedefs

typedef Givaro::Integer integer
 

Functions

template<typename... >
const char * TypeName ()
 
 REGISTER_TYPE_NAME (float)
 
 REGISTER_TYPE_NAME (double)
 
 REGISTER_TYPE_NAME (int16_t)
 
 REGISTER_TYPE_NAME (int32_t)
 
 REGISTER_TYPE_NAME (int64_t)
 
 REGISTER_TYPE_NAME (uint16_t)
 
 REGISTER_TYPE_NAME (uint32_t)
 
 REGISTER_TYPE_NAME (uint64_t)
 
template<class Element , class Alloc >
enable_if< is_integral< Element >::value >::type generate_random_vector (vector< Element, Alloc > &a)
 
template<class Element , class Alloc >
enable_if< is_floating_point< Element >::value >::type generate_random_vector (vector< Element, Alloc > &a)
 
template<class Element >
enable_if< is_integral< Element >::value, bool >::type check_eq (Element x, Element y)
 
template<class Element >
enable_if< is_floating_point< Element >::value, bool >::type check_eq (Element x, Element y)
 
template<class Ret , class T >
Ret eval_func_on_array (function< Ret()> f, array< T, 0 > arr)
 
template<class Ret , class T , class... TArgs>
Ret eval_func_on_array (function< Ret(T, TArgs...)> f, array< typename remove_reference< T >::type, sizeof...(TArgs)+1 > &arr)
 
template<class Simd , class RScal , class... AScal, class RSimd , class... ASimd>
enable_if< sizeof...(AScal)==sizeof...(ASimd), bool >::type test_op (RSimd(&FSimd)(ASimd...), RScal(&FScal)(AScal...), string fname)
 
template<class simd , class Element >
enable_if< is_floating_point< Element >::value, bool >::type test_impl ()
 
template<class simd , class Element >
enable_if< is_integral< Element >::value, bool >::type test_impl ()
 
template<class Element >
enable_if< is_integral< Element >::value, bool >::type test ()
 
template<class Element >
enable_if< is_floating_point< Element >::value, bool >::type test ()
 
int main (int argc, char *argv[])
 

Macro Definition Documentation

◆ REGISTER_TYPE_NAME

#define REGISTER_TYPE_NAME (   type)     template<> const char *TypeName<type>(){return #type;}

◆ TEST_ONE_OP

#define TEST_ONE_OP (   name)     btest &= test_op<simd> (simd::name, Scal::name, #name);

Typedef Documentation

◆ integer

typedef Givaro::Integer integer

Function Documentation

◆ TypeName()

const char* TypeName ( )

◆ REGISTER_TYPE_NAME() [1/8]

REGISTER_TYPE_NAME ( float  )

◆ REGISTER_TYPE_NAME() [2/8]

REGISTER_TYPE_NAME ( double  )

◆ REGISTER_TYPE_NAME() [3/8]

REGISTER_TYPE_NAME ( int16_t  )

◆ REGISTER_TYPE_NAME() [4/8]

REGISTER_TYPE_NAME ( int32_t  )

◆ REGISTER_TYPE_NAME() [5/8]

REGISTER_TYPE_NAME ( int64_t  )

◆ REGISTER_TYPE_NAME() [6/8]

REGISTER_TYPE_NAME ( uint16_t  )

◆ REGISTER_TYPE_NAME() [7/8]

REGISTER_TYPE_NAME ( uint32_t  )

◆ REGISTER_TYPE_NAME() [8/8]

REGISTER_TYPE_NAME ( uint64_t  )

◆ generate_random_vector() [1/2]

enable_if<is_integral<Element>::value>::type generate_random_vector ( vector< Element, Alloc > &  a)

◆ generate_random_vector() [2/2]

enable_if<is_floating_point<Element>::value>::type generate_random_vector ( vector< Element, Alloc > &  a)

◆ check_eq() [1/2]

enable_if<is_integral<Element>::value, bool>::type check_eq ( Element  x,
Element  y 
)

◆ check_eq() [2/2]

enable_if<is_floating_point<Element>::value, bool>::type check_eq ( Element  x,
Element  y 
)

◆ eval_func_on_array() [1/2]

Ret eval_func_on_array ( function< Ret()>  f,
array< T, 0 >  arr 
)

◆ eval_func_on_array() [2/2]

Ret eval_func_on_array ( function< Ret(T, TArgs...)>  f,
array< typename remove_reference< T >::type, sizeof...(TArgs)+1 > &  arr 
)

◆ test_op()

enable_if<sizeof...(AScal) == sizeof...(ASimd), bool>::type test_op ( RSimd(&)(ASimd...)  FSimd,
RScal(&)(AScal...)  FScal,
string  fname 
)

◆ test_impl() [1/2]

enable_if<is_floating_point<Element>::value, bool>::type test_impl ( )

◆ test_impl() [2/2]

enable_if<is_integral<Element>::value, bool>::type test_impl ( )

◆ test() [1/2]

enable_if<is_integral<Element>::value, bool>::type test ( )

◆ test() [2/2]

enable_if<is_floating_point<Element>::value, bool>::type test ( )

◆ main()

int main ( int  argc,
char *  argv[] 
)