All pastes #640753 Raw Edit

Mine

public text v1 · immutable
#640753 ·published 2007-07-31 17:08 UTC
rendered paste body
inline vectype bbox_test_ray_ints(bbox_p bbox, ray_p ray, ray_extra_p re)
{
 vectype tmin;
 __m128 m_tmp1, m_tmp2, m_min, m_max;

 if(!( (++numtests) % 25000000 )) fprintf(stderr, "%d ", numtests);

/* return bbox_test_ray_ints_nosse(bbox, ray, re); */

 m_tmp1 = _mm_load_ps(bbox->bounds[0]);
 m_tmp2 = _mm_load_ps(bbox->bounds[1]);
 m_tmp1 = _mm_sub_ps(m_tmp1, re->m_point);
 m_tmp2 = _mm_sub_ps(m_tmp2, re->m_point);
 m_tmp1 = _mm_mul_ps(m_tmp1, re->m_invdir);
 m_tmp2 = _mm_mul_ps(m_tmp2, re->m_invdir);

 m_max = _mm_max_ps(m_tmp1, m_tmp2);
 m_min = _mm_min_ps(m_tmp1, m_tmp2);

 m_tmp1 = _mm_shuffle_ps(m_min, m_min, 0xB1);
 m_min = _mm_max_ps(m_min, m_tmp1);
 m_tmp1 = _mm_shuffle_ps(m_min, m_min, 0x4E);
 m_min = _mm_max_ps(m_min, m_tmp1);

 if(_mm_movemask_ps(_mm_cmpgt_ps(m_min, m_max)) & 0x7) return -1;

 _mm_store_ss(&tmin, m_min);
 return tmin;
}