static void sse2_test (void) { a128.s[0] = 0x01234567; a128.s[1] = 0x01234567; a128.s[2] = 0x01234567; a128.s[3] = 0x01234567; m128_32 = a128.v; d128.u[0] = 0x0123456789abcdefULL; d128.u[1] = 0x0123456789abcdefULL; m128_64 = d128.v; /* This is the 128-bit constant 0x00112233445566778899aabbccddeeff, expressed as two little-endian 64-bit words. */ e128.u[0] = 0x7766554433221100ULL; e128.u[1] = 0xffeeddccbbaa9988ULL; f128.t[0] = 0x0123; f128.t[1] = 0x0123; f128.t[2] = 0x0123; f128.t[3] = 0x0123; f128.t[4] = 0x0123; f128.t[5] = 0x0123; f128.t[6] = 0x0123; f128.t[7] = 0x0123; m128_16 = f128.v; m128_128 = e128.v; b128.s[0] = SHIFT; b128.s[1] = 0; b128.s[2] = 0; b128.s[3] = 0; s128 = b128.v; sse2_tests(); check (buf, reference_sse2); #ifdef DEBUG printf ("sse2 testing:\n"); printf (buf); printf ("\ncomparison:\n"); printf (comparison); #endif buf[0] = '\0'; if (errors != 0) abort (); }
int main() { unsigned long cpu_facilities; cpu_facilities = i386_cpuid (); if ((cpu_facilities & (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV)) != (bit_MMX | bit_SSE | bit_SSE2 | bit_CMOV)) /* If host has no vector support, pass. */ exit (0); a128.s[0] = 0x01234567; a128.s[1] = 0x01234567; a128.s[2] = 0x01234567; a128.s[3] = 0x01234567; m128_32 = a128.v; d128.u[0] = 0x0123456789abcdefULL; d128.u[1] = 0x0123456789abcdefULL; m128_64 = d128.v; /* This is the 128-bit constant 0x00112233445566778899aabbccddeeff, expressed as two little-endian 64-bit words. */ e128.u[0] = 0x7766554433221100ULL; e128.u[1] = 0xffeeddccbbaa9988ULL; f128.t[0] = 0x0123; f128.t[1] = 0x0123; f128.t[2] = 0x0123; f128.t[3] = 0x0123; f128.t[4] = 0x0123; f128.t[5] = 0x0123; f128.t[6] = 0x0123; f128.t[7] = 0x0123; m128_16 = f128.v; m128_128 = e128.v; b128.s[0] = SHIFT; b128.s[1] = 0; b128.s[2] = 0; b128.s[3] = 0; s128 = b128.v; if (cpu_facilities & bit_SSE2) { sse2_tests(); check (buf, reference_sse2); #ifdef DEBUG printf ("sse2 testing:\n"); printf (buf); printf ("\ncomparison:\n"); printf (comparison); #endif buf[0] = '\0'; } if (errors != 0) abort (); exit (0); }