00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __MMX_SIMD_HPP
00014 #define __MMX_SIMD_HPP
00015 #include <basix/fast_new.hpp>
00016 #include <numerix/numerix-config.hpp>
00017
00018 #if ! (defined (NUMERIX_HAVE_STDINT_H) && defined (MMX_ENABLE_FAST_ALLOCATORS))
00019 #undef NUMERIX_ENABLE_SIMD
00020 #endif
00021
00022
00023
00024
00025
00026 namespace mmx {
00027
00028 template<typename C> struct is_simd_helper {
00029 static const bool val = false; };
00030
00031 template<typename C> struct simd_helper {
00032 typedef C type;
00033 static const nat size = 1; };
00034
00035 template<typename C> struct simd_base_helper {
00036 typedef C type; };
00037
00038 #define Is_simd_type(C) is_simd_helper<C>::val
00039 #define Simd_type(C) simd_helper<C>::type
00040 #define Simd_size(C) simd_helper<C>::size
00041 #define Simd_base_type(C) simd_base_helper<C>::type
00042
00043 }
00044
00045 #endif // __MMX_SIMD_HPP