#include #include "m128-check.h" void check_mm_vmfrcz_sd (__m128d __A, __m128d __B) { union128d a, b, c; double d[2]; a.x = __A; b.x = __B; c.x = _mm_frcz_sd (__A, __B); d[0] = b.a[0] - (int)b.a[0] ; d[1] = a.a[1]; if (check_union128d (c, d)) abort (); } void check_mm_vmfrcz_ss (__m128 __A, __m128 __B) { union128 a, b, c; float f[4]; a.x = __A; b.x = __B; c.x = _mm_frcz_ss (__A, __B); f[0] = b.a[0] - (int)b.a[0] ; f[1] = a.a[1]; f[2] = a.a[2]; f[3] = a.a[3]; if (check_union128 (c, f)) abort (); } void main (void) { union128 a, b; union128d c,d; int i; for (i = 0; i < 4; i++) { a.a[i] = i + 3.5; b.a[i] = i + 7.9; } for (i = 0; i < 2; i++) { c.a[i] = i + 3.5; d.a[i] = i + 7.987654321; } check_mm_vmfrcz_ss (a.x, b.x); check_mm_vmfrcz_sd (c.x, d.x); }