mirror of
				https://github.com/paboyle/Grid.git
				synced 2025-10-31 12:04:33 +00:00 
			
		
		
		
	Force inlining on ICPC because inline apparently is not enoguh
This commit is contained in:
		| @@ -14,14 +14,14 @@ namespace Grid { | ||||
| // Vector +/- Vector | ||||
| // Matrix +/- Matrix | ||||
| // Matrix /- scalar | ||||
| template<class vtype,class ltype,class rtype> inline void sub(iScalar<vtype> * __restrict__ ret, | ||||
| template<class vtype,class ltype,class rtype> strong_inline void sub(iScalar<vtype> * __restrict__ ret, | ||||
|                                                               const iScalar<ltype> * __restrict__ lhs, | ||||
|                                                               const iScalar<rtype> * __restrict__ rhs) | ||||
| { | ||||
|     sub(&ret->_internal,&lhs->_internal,&rhs->_internal); | ||||
| } | ||||
|  | ||||
| template<class vtype,class ltype,class rtype,int N> inline void sub(iVector<vtype,N> * __restrict__ ret, | ||||
| template<class vtype,class ltype,class rtype,int N> strong_inline void sub(iVector<vtype,N> * __restrict__ ret, | ||||
|                                                                     const iVector<ltype,N> * __restrict__ lhs, | ||||
|                                                                     const iVector<rtype,N> * __restrict__ rhs) | ||||
| { | ||||
| @@ -30,7 +30,7 @@ template<class vtype,class ltype,class rtype,int N> inline void sub(iVector<vtyp | ||||
|     } | ||||
|     return; | ||||
| } | ||||
| template<class vtype,class ltype,class rtype, int N> inline void sub(iMatrix<vtype,N> * __restrict__ ret, | ||||
| template<class vtype,class ltype,class rtype, int N> strong_inline void sub(iMatrix<vtype,N> * __restrict__ ret, | ||||
|                                                                      const iMatrix<ltype,N> * __restrict__ lhs, | ||||
|                                                                      const iMatrix<rtype,N> * __restrict__ rhs){ | ||||
|     for(int c2=0;c2<N;c2++){ | ||||
| @@ -39,7 +39,7 @@ template<class vtype,class ltype,class rtype, int N> inline void sub(iMatrix<vty | ||||
|     }} | ||||
|     return; | ||||
| } | ||||
| template<class vtype,class ltype,class rtype, int N> inline void sub(iMatrix<vtype,N> * __restrict__ ret, | ||||
| template<class vtype,class ltype,class rtype, int N> strong_inline void sub(iMatrix<vtype,N> * __restrict__ ret, | ||||
|                                                                      const iScalar<ltype> * __restrict__ lhs, | ||||
|                                                                      const iMatrix<rtype,N> * __restrict__ rhs){ | ||||
|     for(int c2=0;c2<N;c2++){ | ||||
| @@ -55,7 +55,7 @@ template<class vtype,class ltype,class rtype, int N> inline void sub(iMatrix<vty | ||||
|     }} | ||||
|     return; | ||||
| } | ||||
| template<class vtype,class ltype,class rtype, int N> inline void sub(iMatrix<vtype,N> * __restrict__ ret, | ||||
| template<class vtype,class ltype,class rtype, int N> strong_inline void sub(iMatrix<vtype,N> * __restrict__ ret, | ||||
|                                                                      const iMatrix<ltype,N> * __restrict__ lhs, | ||||
|                                                                      const iScalar<rtype> * __restrict__ rhs){ | ||||
|     for(int c2=0;c2<N;c2++){ | ||||
| @@ -69,7 +69,7 @@ template<class vtype,class ltype,class rtype, int N> inline void sub(iMatrix<vty | ||||
| } | ||||
|  | ||||
|     // - operator for scalar, vector, matrix | ||||
| template<class ltype,class rtype> inline auto | ||||
| template<class ltype,class rtype> strong_inline auto | ||||
| operator - (const iScalar<ltype>& lhs, const iScalar<rtype>& rhs) -> iScalar<decltype(lhs._internal - rhs._internal)> | ||||
| { | ||||
|     typedef iScalar<decltype(lhs._internal-rhs._internal)> ret_t; | ||||
| @@ -78,7 +78,7 @@ operator - (const iScalar<ltype>& lhs, const iScalar<rtype>& rhs) -> iScalar<dec | ||||
|     return ret; | ||||
| } | ||||
| template<class ltype,class rtype,int N> | ||||
| inline auto operator - (const iVector<ltype,N>& lhs,const iVector<rtype,N>& rhs) ->iVector<decltype(lhs._internal[0]-rhs._internal[0]),N> | ||||
| strong_inline auto operator - (const iVector<ltype,N>& lhs,const iVector<rtype,N>& rhs) ->iVector<decltype(lhs._internal[0]-rhs._internal[0]),N> | ||||
| { | ||||
|     typedef iVector<decltype(lhs._internal[0]-rhs._internal[0]),N> ret_t; | ||||
|     ret_t ret; | ||||
| @@ -86,7 +86,7 @@ inline auto operator - (const iVector<ltype,N>& lhs,const iVector<rtype,N>& rhs) | ||||
|     return ret; | ||||
| } | ||||
| template<class ltype,class rtype,int N> | ||||
| inline auto operator - (const iMatrix<ltype,N>& lhs,const iMatrix<rtype,N>& rhs) ->iMatrix<decltype(lhs._internal[0][0]-rhs._internal[0][0]),N> | ||||
| strong_inline auto operator - (const iMatrix<ltype,N>& lhs,const iMatrix<rtype,N>& rhs) ->iMatrix<decltype(lhs._internal[0][0]-rhs._internal[0][0]),N> | ||||
| { | ||||
|     typedef iMatrix<decltype(lhs._internal[0][0]-rhs._internal[0][0]),N> ret_t; | ||||
|     ret_t ret; | ||||
| @@ -94,7 +94,7 @@ inline auto operator - (const iMatrix<ltype,N>& lhs,const iMatrix<rtype,N>& rhs) | ||||
|     return ret; | ||||
| } | ||||
| template<class ltype,class rtype,int N> | ||||
| inline auto operator - (const iScalar<ltype>& lhs,const iMatrix<rtype,N>& rhs)->iMatrix<decltype(lhs._internal-rhs._internal[0][0]),N> | ||||
| strong_inline auto operator - (const iScalar<ltype>& lhs,const iMatrix<rtype,N>& rhs)->iMatrix<decltype(lhs._internal-rhs._internal[0][0]),N> | ||||
| { | ||||
|     typedef iMatrix<decltype(lhs._internal-rhs._internal[0][0]),N> ret_t; | ||||
|     ret_t ret; | ||||
| @@ -102,7 +102,7 @@ inline auto operator - (const iScalar<ltype>& lhs,const iMatrix<rtype,N>& rhs)-> | ||||
|     return ret; | ||||
| } | ||||
| template<class ltype,class rtype,int N> | ||||
| inline auto operator - (const iMatrix<ltype,N>& lhs,const iScalar<rtype>& rhs)->iMatrix<decltype(lhs._internal[0][0]-rhs._internal),N> | ||||
| strong_inline auto operator - (const iMatrix<ltype,N>& lhs,const iScalar<rtype>& rhs)->iMatrix<decltype(lhs._internal[0][0]-rhs._internal),N> | ||||
| { | ||||
|     typedef iMatrix<decltype(lhs._internal[0][0]-rhs._internal),N> ret_t; | ||||
|     ret_t ret; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user