Text archives Help
- From: sparker@sci.utah.edu
- To: manta@sci.utah.edu
- Subject: [MANTA] r1049 - trunk/Model/Primitives
- Date: Mon, 8 May 2006 18:00:30 -0600 (MDT)
Author: sparker
Date: Mon May 8 18:00:28 2006
New Revision: 1049
Modified:
trunk/Model/Primitives/Parallelogram.cc
Log:
Almost a 10% performance improvement by avoiding masked stores where possible
Modified: trunk/Model/Primitives/Parallelogram.cc
==============================================================================
--- trunk/Model/Primitives/Parallelogram.cc (original)
+++ trunk/Model/Primitives/Parallelogram.cc Mon May 8 18:00:28 2006
@@ -133,10 +133,17 @@
if(_mm_movemask_ps(hit) == 0)
continue;
- _mm_maskmoveu_si128((__m128i)t, (__m128i)hit, (char*)&data->minT[i]);
- _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]);
- _mm_maskmoveu_si128(_mm_set1_epi32((int)getTexCoordMapper()),
(__m128i)hit, (char*)&data->hitTex[i]);
+ if(_mm_movemask_ps(hit) == 15){
+ _mm_store_ps(&data->minT[i], t);
+ _mm_store_si128((__m128i*)&data->hitMatl[i],
_mm_set1_epi32((int)getMaterial()));
+ _mm_store_si128((__m128i*)&data->hitPrim[i],
_mm_set1_epi32((int)this));
+ _mm_store_si128((__m128i*)&data->hitTex[i],
_mm_set1_epi32((int)getTexCoordMapper()));
+ } else {
+ _mm_maskmoveu_si128((__m128i)t, (__m128i)hit,
(char*)&data->minT[i]);
+ _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]);
+ _mm_maskmoveu_si128(_mm_set1_epi32((int)getTexCoordMapper()),
(__m128i)hit, (char*)&data->hitTex[i]);
+ }
}
for(;i<rays.rayEnd;i++){
Real dt=Dot(rays.getDirection(i), normal);
- [MANTA] r1049 - trunk/Model/Primitives, sparker, 05/08/2006
Archive powered by MHonArc 2.6.16.