Пример #1
0
I32 floorInt(F32 val) {
#ifdef USE_SSE4
    __m128 t = _mm_set_ss(val);
    t = _mm_floor_ss(t, t);
    I32 i = _mm_cvtss_si32(t);
#elif defined(USE_SSE2)
    val += -0.5f;
	__m128 t = _mm_set_ss(val);
	I32 i = (I32)_mm_cvtss_si32(t);
#else
	I32 i = (I32)core_floor(val);
#endif
    return i;
}
Пример #2
0
__m128 test_mm_floor_ss(__m128 x, __m128 y) {
  // CHECK-LABEL: test_mm_floor_ss
  // CHECK: call <4 x float> @llvm.x86.sse41.round.ss
  // CHECK-ASM: roundss $1, %xmm{{.*}}, %xmm{{.*}}
  return _mm_floor_ss(x, y);
}
Пример #3
0
__m128 test_mm_floor_ss(__m128 x, __m128 y) {
  // CHECK-LABEL: test_mm_floor_ss
  // CHECK: call <4 x float> @llvm.x86.sse41.round.ss(<4 x float> %{{.*}}, <4 x float> %{{.*}}, i32 1)
  return _mm_floor_ss(x, y);
}