Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1117 - trunk/Model/Primitives


Chronological Thread 
  • From: bigler@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1117 - trunk/Model/Primitives
  • Date: Thu, 15 Jun 2006 17:27:37 -0600 (MDT)

Author: bigler
Date: Thu Jun 15 17:27:37 2006
New Revision: 1117

Modified:
   trunk/Model/Primitives/Parallelogram.cc
   trunk/Model/Primitives/Sphere.cc
Log:

Parallelogram.cc
Sphere.cc

  Added implementation for _mm_set1_epi64x for non GNU compilers.  I
  don't know how much of a performance hit this function is over the
  real one.

  Should cast pointers to long long to make sure it is a 64 bit
  number.  I know it can only be 32 bits on 32 bit architectures and
  this code is only for 64 bit architectures, but it should be made
  consistent.


Modified: trunk/Model/Primitives/Parallelogram.cc
==============================================================================
--- trunk/Model/Primitives/Parallelogram.cc     (original)
+++ trunk/Model/Primitives/Parallelogram.cc     Thu Jun 15 17:27:37 2006
@@ -8,6 +8,18 @@
 using namespace Manta;
 using SCIRun::Abs;
 
+#ifdef __x86_64
+#  ifndef __GNUC__
+static inline
+__m128i _mm_set1_epi64x(long long val)
+{
+  int low  = (0xFFFFFFFF00000000L & val) >> 32 ;
+  int high = (        0xFFFFFFFFL & val);
+  return _mm_set_epi32(low, high, low, high);
+}
+#  endif
+#endif
+  
 Parallelogram::Parallelogram(Material* material, const Vector& anchor,
                              const Vector& in_v1, const Vector& in_v2)
   : PrimitiveCommon(material, this), anchor(anchor), v1(in_v1), v2(in_v2)
@@ -136,12 +148,12 @@
         if(_mm_movemask_ps(hit) == 15){
           _mm_store_ps(&data->minT[i], t);
 #ifdef __x86_64
-          _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long)getMaterial()));
-          _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long)getMaterial()));
-          _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long)this));
-          _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long)this));
-          _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long)getTexCoordMapper()));
-          _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long)getTexCoordMapper()));
+          _mm_store_si128((__m128i*)&data->hitMatl[i], _mm_set1_epi64x((long 
long)getMaterial()));
+          _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long long)getMaterial()));
+          _mm_store_si128((__m128i*)&data->hitPrim[i], _mm_set1_epi64x((long 
long)this));
+          _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long long)this));
+          _mm_store_si128((__m128i*)&data->hitTex[i], _mm_set1_epi64x((long 
long)getTexCoordMapper()));
+          _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
 #else
           _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi32((int)getMaterial()));
           _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi32((int)this));
@@ -152,13 +164,13 @@
 #ifdef __x86_64
          __m128i lohit = (__m128i)_mm_unpacklo_ps(hit, hit);
          __m128i hihit = (__m128i)_mm_unpackhi_ps(hit, hit);
-         _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), lohit, 
(char*)&data->hitMatl[i]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), hihit, 
(char*)&data->hitMatl[i+2]);
+         _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
 
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), lohit, 
(char*)&data->hitPrim[i]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), hihit, 
(char*)&data->hitPrim[i+2]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
lohit, (char*)&data->hitTex[i]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
hihit, (char*)&data->hitTex[i+2]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), lohit, 
(char*)&data->hitPrim[i]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), hihit, 
(char*)&data->hitPrim[i+2]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), lohit, (char*)&data->hitTex[i]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), hihit, (char*)&data->hitTex[i+2]);
 #else
           _mm_maskmoveu_si128(_mm_set1_epi32((int)getMaterial()), 
(__m128i)hit, (char*)&data->hitMatl[i]);
           _mm_maskmoveu_si128(_mm_set1_epi32((int)this), (__m128i)hit, 
(char*)&data->hitPrim[i]);
@@ -300,12 +312,12 @@
         if(_mm_movemask_ps(hit) == 15){
           _mm_store_ps(&data->minT[i], t);
 #ifdef __x86_64
-          _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long)getMaterial()));
-          _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long)getMaterial()));
-          _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long)this));
-          _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long)this));
-          _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long)getTexCoordMapper()));
-          _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long)getTexCoordMapper()));
+          _mm_store_si128((__m128i*)&data->hitMatl[i], _mm_set1_epi64x((long 
long)getMaterial()));
+          _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long long)getMaterial()));
+          _mm_store_si128((__m128i*)&data->hitPrim[i], _mm_set1_epi64x((long 
long)this));
+          _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long long)this));
+          _mm_store_si128((__m128i*)&data->hitTex[i], _mm_set1_epi64x((long 
long)getTexCoordMapper()));
+          _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
 #else
           _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi32((int)getMaterial()));
           _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi32((int)this));
@@ -316,13 +328,13 @@
 #ifdef __x86_64
          __m128i lohit = (__m128i)_mm_unpacklo_ps(hit, hit);
          __m128i hihit = (__m128i)_mm_unpackhi_ps(hit, hit);
-         _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), lohit, 
(char*)&data->hitMatl[i]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), hihit, 
(char*)&data->hitMatl[i+2]);
+         _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
 
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), lohit, 
(char*)&data->hitPrim[i]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), hihit, 
(char*)&data->hitPrim[i+2]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
lohit, (char*)&data->hitTex[i]);
-          _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
hihit, (char*)&data->hitTex[i+2]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), lohit, 
(char*)&data->hitPrim[i]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), hihit, 
(char*)&data->hitPrim[i+2]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), lohit, (char*)&data->hitTex[i]);
+          _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), hihit, (char*)&data->hitTex[i+2]);
 #else
           _mm_maskmoveu_si128(_mm_set1_epi32((int)getMaterial()), 
(__m128i)hit, (char*)&data->hitMatl[i]);
           _mm_maskmoveu_si128(_mm_set1_epi32((int)this), (__m128i)hit, 
(char*)&data->hitPrim[i]);

Modified: trunk/Model/Primitives/Sphere.cc
==============================================================================
--- trunk/Model/Primitives/Sphere.cc    (original)
+++ trunk/Model/Primitives/Sphere.cc    Thu Jun 15 17:27:37 2006
@@ -11,6 +11,18 @@
 using namespace SCIRun;
 using namespace std;
 
+#ifdef __x86_64
+#  ifndef __GNUC__
+static inline
+__m128i _mm_set1_epi64x(long long val)
+{
+  int low  = (0xFFFFFFFF00000000L & val) >> 32 ;
+  int high = (        0xFFFFFFFFL & val);
+  return _mm_set_epi32(low, high, low, high);
+}
+#  endif
+#endif
+  
 Sphere::Sphere(Material* material, const Vector& center, Real radius)
 : PrimitiveCommon(material, this), center(center), radius(radius)
 {
@@ -123,12 +135,12 @@
            if(_mm_movemask_ps(hit0) == 15){
              _mm_store_ps(&data->minT[i], t0);
 #ifdef __x86_64
-             _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long)getMaterial()));
-             _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long)getMaterial()));
-             _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long)this));
-             _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long)this));
-             _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long)getTexCoordMapper()));
-             _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long)getTexCoordMapper()));
+             _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long long)getMaterial()));
+             _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long long)getMaterial()));
+             _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long long)this));
+             _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long long)this));
+             _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
+             _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
 #else
              _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi32((int)getMaterial()));
              _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi32((int)this));
@@ -139,13 +151,13 @@
 #ifdef __x86_64
              __m128i lohit = (__m128i)_mm_unpacklo_ps(hit0, hit0);
              __m128i hihit = (__m128i)_mm_unpackhi_ps(hit0, hit0);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
          
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), lohit, 
(char*)&data->hitPrim[i]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), hihit, 
(char*)&data->hitPrim[i+2]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
lohit, (char*)&data->hitTex[i]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
hihit, (char*)&data->hitTex[i+2]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), lohit, 
(char*)&data->hitPrim[i]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), hihit, 
(char*)&data->hitPrim[i+2]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), lohit, (char*)&data->hitTex[i]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), hihit, (char*)&data->hitTex[i+2]);
 #else
              _mm_maskmoveu_si128(_mm_set1_epi32((int)getMaterial()), 
(__m128i)hit0, (char*)&data->hitMatl[i]);
              _mm_maskmoveu_si128(_mm_set1_epi32((int)this), (__m128i)hit0, 
(char*)&data->hitPrim[i]);
@@ -164,12 +176,12 @@
          if(_mm_movemask_ps(hit1) == 15){
            _mm_store_ps(&data->minT[i], t1);
 #ifdef __x86_64
-           _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long)getMaterial()));
-           _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long)getMaterial()));
-           _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long)this));
-           _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long)this));
-           _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long)getTexCoordMapper()));
-           _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long)getTexCoordMapper()));
+           _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long long)getMaterial()));
+           _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long long)getMaterial()));
+           _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long long)this));
+           _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long long)this));
+           _mm_store_si128((__m128i*)&data->hitTex[i], _mm_set1_epi64x((long 
long)getTexCoordMapper()));
+           _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
 #else
            _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi32((int)getMaterial()));
            _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi32((int)this));
@@ -180,13 +192,13 @@
 #ifdef __x86_64
            __m128i lohit = (__m128i)_mm_unpacklo_ps(hit1, hit1);
            __m128i hihit = (__m128i)_mm_unpackhi_ps(hit1, hit1);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), lohit, 
(char*)&data->hitMatl[i]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), hihit, 
(char*)&data->hitMatl[i+2]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
          
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), lohit, 
(char*)&data->hitPrim[i]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), hihit, 
(char*)&data->hitPrim[i+2]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
lohit, (char*)&data->hitTex[i]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
hihit, (char*)&data->hitTex[i+2]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), lohit, 
(char*)&data->hitPrim[i]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), hihit, 
(char*)&data->hitPrim[i+2]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), lohit, (char*)&data->hitTex[i]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), hihit, (char*)&data->hitTex[i+2]);
 #else
            _mm_maskmoveu_si128(_mm_set1_epi32((int)getMaterial()), 
(__m128i)hit1, (char*)&data->hitMatl[i]);
            _mm_maskmoveu_si128(_mm_set1_epi32((int)this), (__m128i)hit1, 
(char*)&data->hitPrim[i]);
@@ -318,12 +330,12 @@
            if(_mm_movemask_ps(hit0) == 15){
              _mm_store_ps(&data->minT[i], t0);
 #ifdef __x86_64
-             _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long)getMaterial()));
-             _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long)getMaterial()));
-             _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long)this));
-             _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long)this));
-             _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long)getTexCoordMapper()));
-             _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long)getTexCoordMapper()));
+             _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long long)getMaterial()));
+             _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long long)getMaterial()));
+             _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long long)this));
+             _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long long)this));
+             _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
+             _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
 #else
              _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi32((int)getMaterial()));
              _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi32((int)this));
@@ -334,13 +346,13 @@
 #ifdef __x86_64
              __m128i lohit = (__m128i)_mm_unpacklo_ps(hit0, hit0);
              __m128i hihit = (__m128i)_mm_unpackhi_ps(hit0, hit0);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
          
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), lohit, 
(char*)&data->hitPrim[i]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), hihit, 
(char*)&data->hitPrim[i+2]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
lohit, (char*)&data->hitTex[i]);
-             _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
hihit, (char*)&data->hitTex[i+2]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), lohit, 
(char*)&data->hitPrim[i]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), hihit, 
(char*)&data->hitPrim[i+2]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), lohit, (char*)&data->hitTex[i]);
+             _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), hihit, (char*)&data->hitTex[i+2]);
 #else
              _mm_maskmoveu_si128(_mm_set1_epi32((int)getMaterial()), 
(__m128i)hit0, (char*)&data->hitMatl[i]);
              _mm_maskmoveu_si128(_mm_set1_epi32((int)this), (__m128i)hit0, 
(char*)&data->hitPrim[i]);
@@ -359,12 +371,12 @@
          if(_mm_movemask_ps(hit1) == 15){
            _mm_store_ps(&data->minT[i], t1);
 #ifdef __x86_64
-           _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long)getMaterial()));
-           _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long)getMaterial()));
-           _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long)this));
-           _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long)this));
-           _mm_store_si128((__m128i*)&data->hitTex[i], 
_mm_set1_epi64x((long)getTexCoordMapper()));
-           _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long)getTexCoordMapper()));
+           _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi64x((long long)getMaterial()));
+           _mm_store_si128((__m128i*)&data->hitMatl[i+2], 
_mm_set1_epi64x((long long)getMaterial()));
+           _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi64x((long long)this));
+           _mm_store_si128((__m128i*)&data->hitPrim[i+2], 
_mm_set1_epi64x((long long)this));
+           _mm_store_si128((__m128i*)&data->hitTex[i], _mm_set1_epi64x((long 
long)getTexCoordMapper()));
+           _mm_store_si128((__m128i*)&data->hitTex[i+2], 
_mm_set1_epi64x((long long)getTexCoordMapper()));
 #else
            _mm_store_si128((__m128i*)&data->hitMatl[i], 
_mm_set1_epi32((int)getMaterial()));
            _mm_store_si128((__m128i*)&data->hitPrim[i], 
_mm_set1_epi32((int)this));
@@ -375,13 +387,13 @@
 #ifdef __x86_64
            __m128i lohit = (__m128i)_mm_unpacklo_ps(hit1, hit1);
            __m128i hihit = (__m128i)_mm_unpackhi_ps(hit1, hit1);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), lohit, 
(char*)&data->hitMatl[i]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getMaterial()), hihit, 
(char*)&data->hitMatl[i+2]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
lohit, (char*)&data->hitMatl[i]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)getMaterial()), 
hihit, (char*)&data->hitMatl[i+2]);
          
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), lohit, 
(char*)&data->hitPrim[i]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)this), hihit, 
(char*)&data->hitPrim[i+2]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
lohit, (char*)&data->hitTex[i]);
-           _mm_maskmoveu_si128(_mm_set1_epi64x((long)getTexCoordMapper()), 
hihit, (char*)&data->hitTex[i+2]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), lohit, 
(char*)&data->hitPrim[i]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long long)this), hihit, 
(char*)&data->hitPrim[i+2]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), lohit, (char*)&data->hitTex[i]);
+           _mm_maskmoveu_si128(_mm_set1_epi64x((long 
long)getTexCoordMapper()), hihit, (char*)&data->hitTex[i+2]);
 #else
            _mm_maskmoveu_si128(_mm_set1_epi32((int)getMaterial()), 
(__m128i)hit1, (char*)&data->hitMatl[i]);
            _mm_maskmoveu_si128(_mm_set1_epi32((int)this), (__m128i)hit1, 
(char*)&data->hitPrim[i]);




  • [MANTA] r1117 - trunk/Model/Primitives, bigler, 06/15/2006

Archive powered by MHonArc 2.6.16.

Top of page