1typedef short __v2hi __attribute__ ((__vector_size__ (4))); 2typedef short __v4hi __attribute__ ((__vector_size__ (8))); 3 4extern void abort (void); 5 6static void 7compare64 (int n, void *p, unsigned long long val) 8{ 9 unsigned long long *x = (unsigned long long *) p; 10 11 if (*x != val) 12 abort(); 13} 14 15static void 16compare32 (int n, void *p, unsigned int val) 17{ 18 unsigned int *x = (unsigned int *) p; 19 if (*x != val) 20 abort(); 21} 22 23#define V2HI_TEST(N, elt0, elt1) \ 24static void \ 25test_v2hi_##N (unsigned short x, unsigned short y) \ 26{ \ 27 __v2hi v = { (elt0), (elt1) }; \ 28 compare32(N, &v, ((int)(elt0) << 16) | (elt1)); \ 29} 30 31V2HI_TEST(1, x, y) 32V2HI_TEST(2, y, x) 33V2HI_TEST(3, x, x) 34V2HI_TEST(4, x, 0) 35V2HI_TEST(5, 0, x) 36V2HI_TEST(6, y, 1) 37V2HI_TEST(7, 1, y) 38V2HI_TEST(8, 2, 3) 39V2HI_TEST(9, 0x400, x) 40V2HI_TEST(10, y, 0x8000) 41 42#define V4HI_TEST(N, elt0, elt1, elt2, elt3) \ 43static void \ 44test_v4hi_##N (unsigned short a, unsigned short b, unsigned short c, unsigned short d) \ 45{ \ 46 __v4hi v = { (elt0), (elt1), (elt2), (elt3) }; \ 47 compare64(N, &v, \ 48 ((long long)(elt0) << 48) | \ 49 ((long long)(elt1) << 32) | \ 50 ((long long)(elt2) << 16) | \ 51 ((long long)(elt3))); \ 52} 53 54V4HI_TEST(1, a, a, a, a) 55V4HI_TEST(2, a, b, c, d) 56V4HI_TEST(3, a, a, b, b) 57V4HI_TEST(4, d, c, b, a) 58V4HI_TEST(5, a, 0, 0, 0) 59V4HI_TEST(6, a, 0, b, 0) 60V4HI_TEST(7, c, 5, 5, 5) 61V4HI_TEST(8, d, 6, a, 6) 62V4HI_TEST(9, 0x200, 0x300, 0x500, 0x8800) 63V4HI_TEST(10, 0x600, a, a, a) 64 65unsigned short a16 = 0x3344; 66unsigned short b16 = 0x5566; 67unsigned short c16 = 0x7788; 68unsigned short d16 = 0x9911; 69 70int main(void) 71{ 72 test_v2hi_1 (a16, b16); 73 test_v2hi_2 (a16, b16); 74 test_v2hi_3 (a16, b16); 75 test_v2hi_4 (a16, b16); 76 test_v2hi_5 (a16, b16); 77 test_v2hi_6 (a16, b16); 78 test_v2hi_7 (a16, b16); 79 test_v2hi_8 (a16, b16); 80 test_v2hi_9 (a16, b16); 81 test_v2hi_10 (a16, b16); 82 83 test_v4hi_1 (a16, b16, c16, d16); 84 test_v4hi_2 (a16, b16, c16, d16); 85 test_v4hi_3 (a16, b16, c16, d16); 86 test_v4hi_4 (a16, b16, c16, d16); 87 test_v4hi_5 (a16, b16, c16, d16); 88 test_v4hi_6 (a16, b16, c16, d16); 89 test_v4hi_7 (a16, b16, c16, d16); 90 test_v4hi_8 (a16, b16, c16, d16); 91 test_v4hi_9 (a16, b16, c16, d16); 92 test_v4hi_10 (a16, b16, c16, d16); 93 return 0; 94} 95