diff options
author | tradke <tradke@c78560ca-4b45-4335-b268-5f3340f3cb52> | 2006-05-11 15:21:20 +0000 |
---|---|---|
committer | tradke <tradke@c78560ca-4b45-4335-b268-5f3340f3cb52> | 2006-05-11 15:21:20 +0000 |
commit | b19b451b9761d537e103b83720d2ad040b8d42b2 (patch) | |
tree | dc0b9826c7e52fef7a04fe7517fc01d472a06dc9 | |
parent | a6003a455caf4f1d08825a9a1b64ee6ecf225ba3 (diff) |
This applies Steve White's patch
http://www.cactuscode.org/pipermail/patches/2006-March/000154.html:
Intel icc complains about lots of questionabale type conversions in
CartGrid3D/src/Symmetry.c. Find attached a patch, to be applied from
within the CartGrid3D directory.
Notes
-----
* Code is macros within macros within macros that depend on outside
entities. Sometimes a type name is passed.
* The innermost macro performs the type conversion
* A typename is passed, but unfortunately, it isn't always the type
being converted. Sometimes it's a CCTK_COMPLEX type, but the type
being converted is only a component of the complex.
Solution
--------
Invented a new preprocessor symbol, NUMBER_TYPE, which indicates the
of a scalar multiplication.
git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/CartGrid3D/trunk@227 c78560ca-4b45-4335-b268-5f3340f3cb52
-rw-r--r-- | src/Symmetry.c | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/src/Symmetry.c b/src/Symmetry.c index bc7281b..27451ba 100644 --- a/src/Symmetry.c +++ b/src/Symmetry.c @@ -311,8 +311,9 @@ void CCTK_FCALL CCTK_FNAME (CartSymVN) { \ for (ii = 0; ii < gdata.nghostzones[dir/2]; ii++) \ { \ - _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART = GFSym[vindex][dir] * \ - _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART; \ + _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART \ + = (NUMBER_TYPE)(GFSym[vindex][dir] \ + * _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART); \ } \ } \ } \ @@ -326,8 +327,9 @@ void CCTK_FCALL CCTK_FNAME (CartSymVN) { \ for (ii = lsh[dir/2]-gdata.nghostzones[dir/2]; ii < lsh[dir/2]; ii++) \ { \ - _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART = GFSym[vindex][dir] * \ - _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART; \ + _var[INDEX_3D (lsh, i, j, k)] NUMBER_PART \ + = (NUMBER_TYPE)(GFSym[vindex][dir] \ + * _var[INDEX_3D (lsh, iii, jjj, kkk)] NUMBER_PART); \ } \ } \ } \ @@ -446,55 +448,91 @@ void CCTK_FCALL CCTK_FNAME (CartSymVN) */ #define NUMBER_PART .Re +#define NUMBER_TYPE CCTK_REAL SYMMETRY_FUNCTION(CCTK_COMPLEX,R) +#undef NUMBER_TYPE #ifdef HAVE_CCTK_COMPLEX8 +#define NUMBER_TYPE CCTK_REAL4 SYMMETRY_FUNCTION(CCTK_COMPLEX8,R) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_COMPLEX16 +#define NUMBER_TYPE CCTK_REAL8 SYMMETRY_FUNCTION(CCTK_COMPLEX16,R) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_COMPLEX32 +#define NUMBER_TYPE CCTK_REAL16 SYMMETRY_FUNCTION(CCTK_COMPLEX32,R) +#undef NUMBER_TYPE #endif #undef NUMBER_PART #define NUMBER_PART .Im +#define NUMBER_TYPE CCTK_REAL SYMMETRY_FUNCTION(CCTK_COMPLEX,I) +#undef NUMBER_TYPE +#define NUMBER_TYPE CCTK_REAL4 #ifdef HAVE_CCTK_COMPLEX8 SYMMETRY_FUNCTION(CCTK_COMPLEX8,I) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_COMPLEX16 +#define NUMBER_TYPE CCTK_REAL8 SYMMETRY_FUNCTION(CCTK_COMPLEX16,I) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_COMPLEX32 +#define NUMBER_TYPE CCTK_REAL16 SYMMETRY_FUNCTION(CCTK_COMPLEX32,I) +#undef NUMBER_TYPE #endif #undef NUMBER_PART #define NUMBER_PART +#define NUMBER_TYPE CCTK_BYTE SYMMETRY_FUNCTION(CCTK_BYTE,R) +#undef NUMBER_TYPE +#define NUMBER_TYPE CCTK_INT SYMMETRY_FUNCTION(CCTK_INT,R) +#undef NUMBER_TYPE #ifdef HAVE_CCTK_INT1 +#define NUMBER_TYPE CCTK_INT1 SYMMETRY_FUNCTION(CCTK_INT1,R) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_INT2 +#define NUMBER_TYPE CCTK_INT2 SYMMETRY_FUNCTION(CCTK_INT2,R) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_INT4 +#define NUMBER_TYPE CCTK_INT4 SYMMETRY_FUNCTION(CCTK_INT4,R) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_INT8 +#define NUMBER_TYPE CCTK_INT8 SYMMETRY_FUNCTION(CCTK_INT8,R) +#undef NUMBER_TYPE #endif +#define NUMBER_TYPE CCTK_REAL SYMMETRY_FUNCTION(CCTK_REAL,R) +#undef NUMBER_TYPE #ifdef HAVE_CCTK_REAL4 +#define NUMBER_TYPE CCTK_REAL4 SYMMETRY_FUNCTION(CCTK_REAL4,R) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_REAL8 +#define NUMBER_TYPE CCTK_REAL8 SYMMETRY_FUNCTION(CCTK_REAL8,R) +#undef NUMBER_TYPE #endif #ifdef HAVE_CCTK_REAL16 +#define NUMBER_TYPE CCTK_REAL16 SYMMETRY_FUNCTION(CCTK_REAL16,R) +#undef NUMBER_TYPE #endif #undef NUMBER_PART |