Text archives Help
- 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.