static void f16c_test (void) { union256 val; union128i_w res; short exp[8]; val.a[0] = 1; val.a[1] = 2; val.a[2] = 4; val.a[3] = 8; val.a[4] = -1; val.a[5] = -2; val.a[6] = -4; val.a[7] = -8; exp[0] = 0x3c00; exp[1] = 0x4000; exp[2] = 0x4400; exp[3] = 0x4800; exp[4] = 0xbc00; exp[5] = 0xc000; exp[6] = 0xc400; exp[7] = 0xc800; res.x = _mm256_cvtps_ph (val.x, 0); if (check_union128i_w (res, exp)) abort (); }
static void TEST (void) { union128i_w u, s1, s2; short e[8]; int i; s1.x = _mm_set_epi16 (1,2,3,4,5,6,7,8); s2.x = _mm_set_epi16 (8,7,6,5,4,3,2,1); u.x = test (s1.x, s2.x); for (i=0; i<8; i++) e[i] = s1.a[i]>s2.a[i]?s1.a[i]:s2.a[i]; if (check_union128i_w (u, e)) abort (); }
static void TEST (void) { union128i_w u, s1, s2; short e[8]; int i; s1.x = _mm_set_epi16 (10,20,30,90,-80,-40,-100,-15); s2.x = _mm_set_epi16 (11, 98, 76, -100, -34, -78, -39, 14); u.x = test (s1.x, s2.x); for (i = 0; i < 8; i++) e[i] = s1.a[i] + s2.a[i]; if (check_union128i_w (u, e)) abort (); }
static void TEST (void) { union128i_w u, s; union128i_q c; short e[8] = {0}; int i; s.x = _mm_set_epi16 (1, -2, 3, 4, 5, 6, -0x7000, 0x9000); c.x = _mm_set_epi64x (12, 13); u.x = test (s.x, c.x); if (c.a[0] < 16) for (i = 0; i < 8; i++) e[i] = s.a[i] >> c.a[0]; if (check_union128i_w (u, e)) abort (); }
static void TEST (void) { union128i_w u, s1, s2; short e[8]; int i, tmp; s1.x = _mm_set_epi16 (10,2067,-3033,90,80,40,-1000,15); s2.x = _mm_set_epi16 (11, 9834, 7444, -10222, 34, -7833, 39, 14); u.x = test (s1.x, s2.x); for (i = 0; i < 8; i++) { tmp = s1.a[i] * s2.a[i]; e[i] = tmp; } if (check_union128i_w (u, e)) abort (); }