1 |
|
|
/*************************************** |
2 |
|
|
Auteur : Pierre Aubert |
3 |
|
|
Mail : pierre.aubert@lapp.in2p3.fr |
4 |
|
|
Licence : CeCILL-C |
5 |
|
|
****************************************/ |
6 |
|
|
|
7 |
|
|
|
8 |
|
|
|
9 |
|
|
#ifndef __PHOENIX_ASSUME_ALIGNED_H__ |
10 |
|
|
#define __PHOENIX_ASSUME_ALIGNED_H__ |
11 |
|
|
|
12 |
|
|
#include "alignement_type.h" |
13 |
|
|
|
14 |
|
|
///Call __builtin_assume_aligned with proper argument by respect to the table type |
15 |
|
|
/** @param tabValue : table of value |
16 |
|
|
* @return pointer assumed to be aligned |
17 |
|
|
*/ |
18 |
|
|
template<typename T> |
19 |
|
16 |
inline const T * phoenix_assume_aligned(const T * tabValue){ |
20 |
|
16 |
return (const T *)__builtin_assume_aligned(tabValue, alignement_type<T>()); |
21 |
|
|
} |
22 |
|
|
|
23 |
|
|
///Call __builtin_assume_aligned with proper argument by respect to the table type |
24 |
|
|
/** @param tabValue : table of value |
25 |
|
|
* @return pointer assumed to be aligned |
26 |
|
|
*/ |
27 |
|
|
template<typename T> |
28 |
|
10 |
inline T * phoenix_assume_aligned(T * tabValue){ |
29 |
|
10 |
return (T *)__builtin_assume_aligned(tabValue, alignement_type<T>()); |
30 |
|
|
} |
31 |
|
|
|
32 |
|
|
|
33 |
|
|
|
34 |
|
|
#endif |