1extern void abort (void); 2 3int16x8_t 4test_vextq_s16_1 (int16x8_t a, int16x8_t b) 5{ 6 return vextq_s16 (a, b, 1); 7} 8 9int16x8_t 10test_vextq_s16_2 (int16x8_t a, int16x8_t b) 11{ 12 return vextq_s16 (a, b, 2); 13} 14 15int16x8_t 16test_vextq_s16_3 (int16x8_t a, int16x8_t b) 17{ 18 return vextq_s16 (a, b, 3); 19} 20 21int16x8_t 22test_vextq_s16_4 (int16x8_t a, int16x8_t b) 23{ 24 return vextq_s16 (a, b, 4); 25} 26 27int16x8_t 28test_vextq_s16_5 (int16x8_t a, int16x8_t b) 29{ 30 return vextq_s16 (a, b, 5); 31} 32 33int16x8_t 34test_vextq_s16_6 (int16x8_t a, int16x8_t b) 35{ 36 return vextq_s16 (a, b, 6); 37} 38 39int16x8_t 40test_vextq_s16_7 (int16x8_t a, int16x8_t b) 41{ 42 return vextq_s16 (a, b, 7); 43} 44 45int 46main (int argc, char **argv) 47{ 48 int i, off; 49 int16_t arr1[] = {0, 1, 2, 3, 4, 5, 6, 7}; 50 int16x8_t in1 = vld1q_s16 (arr1); 51 int16_t arr2[] = {8, 9, 10, 11, 12, 13, 14, 15}; 52 int16x8_t in2 = vld1q_s16 (arr2); 53 int16_t exp[8]; 54 int16x8_t expected; 55 int16x8_t actual = test_vextq_s16_1 (in1, in2); 56 57 for (i = 0; i < 8; i++) 58 exp[i] = i + 1; 59 expected = vld1q_s16 (exp); 60 for (i = 0; i < 8; i++) 61 if (actual[i] != expected[i]) 62 abort (); 63 64 actual = test_vextq_s16_2 (in1, in2); 65 for (i = 0; i < 8; i++) 66 exp[i] = i + 2; 67 expected = vld1q_s16 (exp); 68 for (i = 0; i < 8; i++) 69 if (actual[i] != expected[i]) 70 abort (); 71 72 actual = test_vextq_s16_3 (in1, in2); 73 for (i = 0; i < 8; i++) 74 exp[i] = i + 3; 75 expected = vld1q_s16 (exp); 76 for (i = 0; i < 8; i++) 77 if (actual[i] != expected[i]) 78 abort (); 79 80 actual = test_vextq_s16_4 (in1, in2); 81 for (i = 0; i < 8; i++) 82 exp[i] = i + 4; 83 expected = vld1q_s16 (exp); 84 for (i = 0; i < 8; i++) 85 if (actual[i] != expected[i]) 86 abort (); 87 88 actual = test_vextq_s16_5 (in1, in2); 89 for (i = 0; i < 8; i++) 90 exp[i] = i + 5; 91 expected = vld1q_s16 (exp); 92 for (i = 0; i < 8; i++) 93 if (actual[i] != expected[i]) 94 abort (); 95 96 actual = test_vextq_s16_6 (in1, in2); 97 for (i = 0; i < 8; i++) 98 exp[i] = i + 6; 99 expected = vld1q_s16 (exp); 100 for (i = 0; i < 8; i++) 101 if (actual[i] != expected[i]) 102 abort (); 103 104 actual = test_vextq_s16_7 (in1, in2); 105 for (i = 0; i < 8; i++) 106 exp[i] = i + 7; 107 expected = vld1q_s16 (exp); 108 for (i = 0; i < 8; i++) 109 if (actual[i] != expected[i]) 110 abort (); 111 112 return 0; 113} 114 115