- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
for(int i=0;i<size1;i+=4)
{
float4 boxMax(plist[i+0].Box().vmax[axis], plist[i+1].Box().vmax[axis], plist[i+2].Box().vmax[axis], plist[i+3].Box().vmax[axis]);
float4 boxMin(plist[i+0].Box().vmin[axis], plist[i+1].Box().vmin[axis], plist[i+2].Box().vmin[axis], plist[i+3].Box().vmin[axis]);
register __m128 a = _mm_and_ps(_mm_cmplt_ps(boxMax, vSplit), one);
register __m128 b = _mm_and_ps(_mm_cmpgt_ps(boxMin, vSplit), one);
register __m128 left = _mm_sub_ps(one, b); // left = 1 - b; same as not(b)
register __m128 right = _mm_sub_ps(one, a); // right = 1 - a; same as not(a)
summLeft += (left.m128_i32[0] + left.m128_i32[1] + left.m128_i32[2] + left.m128_i32[3]);
summRight+= (right.m128_i32[0] + right.m128_i32[1] + right.m128_i32[2] + right.m128_i32[3]);
}
CPPGovno 18.09.2011 00:12 # 0
Lure Of Chaos 18.09.2011 00:26 # +6
CPPGovno 18.09.2011 01:03 # 0
jQuery 18.09.2011 15:47 # −2
absolut 18.09.2011 19:16 # −3
Lure Of Chaos 18.09.2011 19:51 # −3
CPPGovno 18.09.2011 20:23 # −3
3.14159265 18.09.2011 08:52 # 0
Использовал SSE - молодец.
А насчет того, что оно тупит - нужно разобраться.
Может unaligned обращения к памяти или еще какой нюанс.
CPPGovno 18.09.2011 09:21 # +1
Dummy00001 18.09.2011 12:24 # +1
danilissimus 18.09.2011 11:31 # 0
CPPGovno 18.09.2011 11:42 # 0
guest 20.09.2011 00:18 # −1
CPPGovno 20.09.2011 06:01 # 0
Пройдите по ссылке, если вам интересно. Это не так.
guest8 09.04.2019 11:31 # −999