Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1120 - in trunk/Model: Primitives Textures


Chronological Thread 
  • From: abe@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1120 - in trunk/Model: Primitives Textures
  • Date: Fri, 16 Jun 2006 11:31:27 -0600 (MDT)

Author: abe
Date: Fri Jun 16 11:31:25 2006
New Revision: 1120

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

M    Model/Textures/CheckerTexture.cc
M    Model/Primitives/Parallelogram.cc
M    Model/Primitives/Sphere.cc
"Fixed" sse casts. Code now compiles on icc 9.0 and 9.1 in both 32bit and
64bit. (Also compiles on gcc 4.0.2).

Modified: trunk/Model/Primitives/Parallelogram.cc
==============================================================================
--- trunk/Model/Primitives/Parallelogram.cc     (original)
+++ trunk/Model/Primitives/Parallelogram.cc     Fri Jun 16 11:31:25 2006
@@ -315,8 +315,8 @@
         } else {
           _mm_maskmoveu_si128((__m128i)_mm_castps_si128(t), 
(__m128i)_mm_castps_si128(hit), (char*)&data->minT[i]);
 #ifdef __x86_64
-         __m128i lohit = (__m128i)_mm_unpacklo_ps(hit, hit);
-         __m128i hihit = (__m128i)_mm_unpackhi_ps(hit, hit);
+         __m128i lohit = (__m128i)_mm_castps_si128(_mm_unpacklo_ps(hit, 
hit));
+         __m128i hihit = (__m128i)_mm_castps_si128(_mm_unpackhi_ps(hit, 
hit));
          _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]);
 

Modified: trunk/Model/Primitives/Sphere.cc
==============================================================================
--- trunk/Model/Primitives/Sphere.cc    (original)
+++ trunk/Model/Primitives/Sphere.cc    Fri Jun 16 11:31:25 2006
@@ -333,8 +333,8 @@
            } else {
              _mm_maskmoveu_si128((__m128i)_mm_castps_si128(t0), 
(__m128i)_mm_castps_si128(hit0), (char*)&data->minT[i]);
 #ifdef __x86_64
-             __m128i lohit = (__m128i)_mm_unpacklo_ps(hit0, hit0);
-             __m128i hihit = (__m128i)_mm_unpackhi_ps(hit0, hit0);
+             __m128i lohit = (__m128i)_mm_castps_si128(_mm_unpacklo_ps(hit0, 
hit0));
+             __m128i hihit = (__m128i)_mm_castps_si128(_mm_unpackhi_ps(hit0, 
hit0));
              _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]);
          
@@ -374,8 +374,8 @@
          } else {
            _mm_maskmoveu_si128((__m128i)_mm_castps_si128(t1), 
(__m128i)_mm_castps_si128(hit1), (char*)&data->minT[i]);
 #ifdef __x86_64
-           __m128i lohit = (__m128i)_mm_unpacklo_ps(hit1, hit1);
-           __m128i hihit = (__m128i)_mm_unpackhi_ps(hit1, hit1);
+           __m128i lohit = (__m128i)_mm_castps_si128(_mm_unpacklo_ps(hit1, 
hit1));
+           __m128i hihit = (__m128i)_mm_castps_si128(_mm_unpackhi_ps(hit1, 
hit1));
            _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]);
          

Modified: trunk/Model/Textures/CheckerTexture.cc
==============================================================================
--- trunk/Model/Textures/CheckerTexture.cc      (original)
+++ trunk/Model/Textures/CheckerTexture.cc      Fri Jun 16 11:31:25 2006
@@ -55,14 +55,14 @@
         __m128i i2 = _mm_cvtps_epi32(vv2);
         __m128i which = _mm_and_si128(_mm_add_epi32(i1, i2), 
_mm_set1_epi32(1));
         __m128i mask = _mm_cmpeq_epi32(which, _mm_setzero_si128());
-        __m128 valuer = _mm_or_ps(_mm_and_ps((__m128)mask, 
_mm_set1_ps(values[0][0])),
-                                 _mm_andnot_ps((__m128)mask, 
_mm_set1_ps(values[1][0])));
+        __m128 valuer = _mm_or_ps(_mm_and_ps((__m128)_mm_castsi128_ps(mask), 
_mm_set1_ps(values[0][0])),
+                                 
_mm_andnot_ps((__m128)_mm_castsi128_ps(mask), _mm_set1_ps(values[1][0])));
         _mm_store_ps(&results.colordata[0][i], valuer);
-        __m128 valueg = _mm_or_ps(_mm_and_ps((__m128)mask, 
_mm_set1_ps(values[0][1])),
-                                 _mm_andnot_ps((__m128)mask, 
_mm_set1_ps(values[1][1])));
+        __m128 valueg = _mm_or_ps(_mm_and_ps((__m128)_mm_castsi128_ps(mask), 
_mm_set1_ps(values[0][1])),
+                                 
_mm_andnot_ps((__m128)_mm_castsi128_ps(mask), _mm_set1_ps(values[1][1])));
         _mm_store_ps(&results.colordata[1][i], valueg);
-        __m128 valueb = _mm_or_ps(_mm_and_ps((__m128)mask, 
_mm_set1_ps(values[0][2])),
-                                 _mm_andnot_ps((__m128)mask, 
_mm_set1_ps(values[1][2])));
+        __m128 valueb = _mm_or_ps(_mm_and_ps((__m128)_mm_castsi128_ps(mask), 
_mm_set1_ps(values[0][2])),
+                                 
_mm_andnot_ps((__m128)_mm_castsi128_ps(mask), _mm_set1_ps(values[1][2])));
         _mm_store_ps(&results.colordata[2][i], valueb);
       }
       _mm_setcsr(old_csr);
@@ -148,8 +148,8 @@
         __m128i i2 = _mm_cvtps_epi32(vv2);
         __m128i which = _mm_and_si128(_mm_add_epi32(i1, i2), 
_mm_set1_epi32(1));
         __m128i mask = _mm_cmpeq_epi32(which, _mm_setzero_si128());
-        __m128 value = _mm_or_ps(_mm_and_ps((__m128)mask, 
_mm_set1_ps(values[0])),
-                                 _mm_andnot_ps((__m128)mask, 
_mm_set1_ps(values[1])));
+        __m128 value = _mm_or_ps(_mm_and_ps((__m128)_mm_castsi128_ps(mask), 
_mm_set1_ps(values[0])),
+                                 
_mm_andnot_ps((__m128)_mm_castsi128_ps(mask), _mm_set1_ps(values[1])));
         _mm_store_ps(&results.data[i], value);
       }
       _mm_setcsr(old_csr);




  • [MANTA] r1120 - in trunk/Model: Primitives Textures, abe, 06/16/2006

Archive powered by MHonArc 2.6.16.

Top of page