]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Undo 27799 on vectorization as the new trick did the same thing and obscured things.
authorkronbichler <kronbichler@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 12 Dec 2012 15:31:35 +0000 (15:31 +0000)
committerkronbichler <kronbichler@0785d39b-7218-0410-832d-ea1e28bc413d>
Wed, 12 Dec 2012 15:31:35 +0000 (15:31 +0000)
git-svn-id: https://svn.dealii.org/trunk@27801 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/include/deal.II/base/vectorization.h

index f5830f514f1e613aacb00d68fede95abd353916a..28403b7d48d53f468941f17dd27490a80916adf1 100644 (file)
@@ -103,10 +103,7 @@ public:
   operator [] (const unsigned int comp)
   {
     AssertIndexRange (comp, 4);
-    // __m256d stores doubles in adjacent memory blocks. to access one double
-    // data field at a time, first cast the address of the given data field to
-    // void* and then back to double*.
-    return *(static_cast<double *>(static_cast<void *>(&data))+comp);
+    return *(reinterpret_cast<double *>(&data)+comp);
   }
 
   /**
@@ -116,7 +113,7 @@ public:
   operator [] (const unsigned int comp) const
   {
     AssertIndexRange (comp, 4);
-    return *(static_cast<const double *>(static_cast<const void *>(&data))+comp);
+    return *(reinterpret_cast<const double *>(&data)+comp);
   }
 
   /**
@@ -289,7 +286,7 @@ public:
   operator [] (const unsigned int comp)
   {
     AssertIndexRange (comp, 8);
-    return *(static_cast<float *>(static_cast<void *>(&data))+comp);
+    return *(reinterpret_cast<float *>(&data)+comp);
   }
 
   /**
@@ -299,7 +296,7 @@ public:
   operator [] (const unsigned int comp) const
   {
     AssertIndexRange (comp, 8);
-    return *(static_cast<const float *>(static_cast<const void *>(&data))+comp);
+    return *(reinterpret_cast<const float *>(&data)+comp);
   }
 
   /**
@@ -475,7 +472,7 @@ public:
   operator [] (const unsigned int comp)
   {
     AssertIndexRange (comp, 2);
-    return *(static_cast<double *>(static_cast<void *>(&data))+comp);
+    return *(reinterpret_cast<double *>(&data)+comp);
   }
 
   /**
@@ -485,7 +482,7 @@ public:
   operator [] (const unsigned int comp) const
   {
     AssertIndexRange (comp, 2);
-    return *(static_cast<const double *>(static_cast<const void *>(&data))+comp);
+    return *(reinterpret_cast<const double *>(&data)+comp);
   }
 
   /**
@@ -654,7 +651,7 @@ public:
   operator [] (const unsigned int comp)
   {
     AssertIndexRange (comp, 4);
-    return *(static_cast<float *>(static_cast<void *>(&data))+comp);
+    return *(reinterpret_cast<float *>(&data)+comp);
   }
 
   /**
@@ -664,7 +661,7 @@ public:
   operator [] (const unsigned int comp) const
   {
     AssertIndexRange (comp, 4);
-    return *(static_cast<const float *>(static_cast<const void *>(&data))+comp);
+    return *(reinterpret_cast<const float *>(&data)+comp);;
   }
 
   /**

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.