Viewing file: builtins-8-p9-runnable.c (44.3 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-require-effective-target p9vector_hw } */ /* { dg-options "-mdejagnu-cpu=power9 -O2" } */
#include <stdint.h> #include <stdio.h> #include <altivec.h> // vector
#ifdef DEBUG #include <stdio.h> #endif
#ifdef DEBUG2 #include <stdio.h> #endif
void abort (void);
#ifdef DEBUG2 void print_signed_char (char *name, vector signed char src) { int i;
for (i = 0; i < 8; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("\n");
for (i = 8; i < 15; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("%s[%d] = %d\n", name, 15, src[i]); }
void print_unsigned_char (char *name, vector unsigned char src) { int i;
for (i = 0; i < 8; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("\n");
for (i = 8; i < 15; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("%s[%d] = %d\n", name, 15, src[i]); }
void print_signed_short_int (char *name, vector signed short int src) { int i;
for (i = 0; i < 7; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("%s[%d] = %d\n", name, 7, src[i]); }
void print_unsigned_short_int (char *name, vector unsigned short int src) { int i;
for (i = 0; i < 7; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("%s[%d] = %d\n", name, 7, src[i]); }
void print_signed_int (char *name, vector signed int src) { int i;
for (i = 0; i < 3; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("%s[%d] = %d\n", name, 3, src[i]); }
void print_unsigned_int (char *name, vector unsigned int src) { int i;
for (i = 0; i < 3; i++) printf("%s[%d] = %d, ", name, i, src[i]);
printf("%s[%d] = %d\n", name, 3, src[i]); } #endif
int main() {
vector signed char char_src1, char_src2; vector unsigned char uchar_src1, uchar_src2; vector signed short int short_src1, short_src2; vector unsigned short int ushort_src1, ushort_src2; vector signed int int_src1, int_src2; vector unsigned int uint_src1, uint_src2; unsigned int result, expected_result;
/* Tests for: vec_first_match_index() The element index in natural element order is returned for the first match or the number of elements if there is no match. */ /* char */ char_src1 = (vector signed char) { 0x40, 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 }; char_src2 = (vector signed char) {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; expected_result = 1;
result = vec_first_match_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf(" vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {-1, 2, 3, 4, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {-1, 2, 3, 20, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 0;
result = vec_first_match_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf(" vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16}; expected_result = 16;
result = vec_first_match_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; uchar_src2 = (vector unsigned char) {1, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 2;
result = vec_first_match_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}; uchar_src2 = (vector unsigned char) {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}; expected_result = 16;
result = vec_first_match_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* short int */ short_src1 = (vector short int) {10, -20, -30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {-10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 3;
result = vec_first_match_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {10, 20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {0, 0, 0, 0, 0, 0, 0, 0};
expected_result = 8;
result = vec_first_match_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {0, 0, 0, 0, 0, 60, 70, 0}; ushort_src2 = (vector short unsigned int) {10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 5;
result = vec_first_match_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {-20, 30, -40, 50, 60, -70, 80, -90}; ushort_src2 = (vector short unsigned int) {20, -30, 40, -50, -60, 70, -80, 90};
expected_result = 8;
result = vec_first_match_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* int */ int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {10, 20, 30, 4};
expected_result = 3;
result = vec_first_match_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {4, 3, 2, 1};
expected_result = 4;
result = vec_first_match_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {11, 2, 33, 4};
expected_result = 1;
result = vec_first_match_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {2, 3, 4, 5};
expected_result = 4;
result = vec_first_match_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_match_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* Tests for: vec_first_mismatch_index() The element index in BE order is returned for the first mismatch or the number of elements if there is no match. */ /* char */ char_src1 = (vector signed char) {1, 2, 0, 4, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {1, 2, 0, 20, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 3;
result = vec_first_mismatch_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {0, 2, 3, 4, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {0, 2, 3, 20, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 3;
result = vec_first_mismatch_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {-1, 2, 3, 4, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {-1, 2, 3, 20, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 3;
result = vec_first_mismatch_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 16;
result = vec_first_mismatch_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; uchar_src2 = (vector unsigned char) {1, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 1;
result = vec_first_mismatch_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; uchar_src2 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 12, 13, 14, 15, 16}; expected_result = 8;
result = vec_first_mismatch_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; uchar_src2 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 16;
result = vec_first_mismatch_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* short int */ short_src1 = (vector short int) {-10, -20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {-10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 1;
result = vec_first_mismatch_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {10, 20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 8;
result = vec_first_mismatch_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {10, 20, 30, 40, 50, 60, 70, 0}; ushort_src2 = (vector short unsigned int) {10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 7;
result = vec_first_mismatch_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {20, 30, 40, 50, 60, 70, 80, 90}; ushort_src2 = (vector short unsigned int) {20, 30, 40, 50, 60, 70, 80, 90};
expected_result = 8;
result = vec_first_mismatch_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* int */ int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {1, 20, 3, 4};
expected_result = 1;
result = vec_first_mismatch_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {1, 2, 3, 4};
expected_result = 4;
result = vec_first_mismatch_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {1, 0, 3, 4}; int_src2 = (vector int) {1, 2, 3, 4};
expected_result = 1;
result = vec_first_mismatch_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {11, 2, 33, 4};
expected_result = 0;
result = vec_first_mismatch_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {1, 2, 3, 4};
expected_result = 4;
result = vec_first_mismatch_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_mismatch_index = %d\n\n", result); #endif
if (result != expected_result)
#ifdef DEBUG printf("Error: uint first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* Tests for: vec_first_match_or_eos_index() The element index in BE order is returned for the first match or the number of elements if there is no match. */ /* char */ char_src1 = (vector signed char) { 0x40, 0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 }; char_src2 = (vector signed char) { 0x41, 0, 0x43, 0x44, 0x45, 0x46, 0x47, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 }; expected_result = 1;
result = vec_first_match_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {-1, 2, 3, 4, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {-1, 2, 3, 20, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 0;
result = vec_first_match_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first match result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {-1, 2, 3, 0, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {2, 3, 20, 0, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 3;
result = vec_first_match_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16}; expected_result = 16;
result = vec_first_match_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; uchar_src2 = (vector unsigned char) {-1, 0, -3, -4, -5, -6, -7, -8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 1;
result = vec_first_match_or_eos_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}; uchar_src2 = (vector unsigned char) {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}; expected_result = 16;
result = vec_first_match_or_eos_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* short int */ short_src1 = (vector short int) {10, -20, -30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {-10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 3;
result = vec_first_match_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {1, 20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {10, 0, 30, 40, 50, 60, 70, 80};
expected_result = 1;
result = vec_first_match_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {-10, -20, -30, -40, -50, -60, -70, -80}; short_src2 = (vector short int) {10, 20, 30, 40, 50, 0, 70, 80};
expected_result = 5;
result = vec_first_match_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {10, 20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {0, 0, 0, 0, 0, 0, 0, 0};
expected_result = 0;
result = vec_first_match_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {1, 2, 0, 0, 60, 70, 0}; ushort_src2 = (vector short unsigned int) {10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 2;
result = vec_first_match_or_eos_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {-20, 30, -40, 50, 60, -70, 80, -90}; ushort_src2 = (vector short unsigned int) {20, -30, 40, -50, -60, 70, -80, 90};
expected_result = 8;
result = vec_first_match_or_eos_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif ushort_src1 = (vector short unsigned int) {-20, 30, -40, 50, 60, -70, 80, 0}; ushort_src2 = (vector short unsigned int) {20, -30, 40, -50, -60, 70, -80, 90};
expected_result = 7;
result = vec_first_match_or_eos_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* int */ int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {10, 20, 30, 4};
expected_result = 3;
result = vec_first_match_or_eos_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {0, 2, 3, 4}; int_src2 = (vector int) {4, 3, 2, 1};
expected_result = 0;
result = vec_first_match_or_eos_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {4, 3, 2, 1};
expected_result = 4;
result = vec_first_match_or_eos_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {11, 2, 33, 4};
expected_result = 1;
result = vec_first_match_or_eos_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 0, 4}; uint_src2 = (vector unsigned int) {2, 3, 4, 5};
expected_result = 2;
result = vec_first_match_or_eos_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {2, 3, 4, 5};
expected_result = 4;
result = vec_first_match_or_eos_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_match_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first match or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* Tests for: vec_first_mismatch_or_eos_index() The element index in BE order is returned for the first mismatch or the number of elements if there is no match. */ /* char */ char_src1 = (vector signed char) {1, 2, 0, 4, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {1, 2, 0, 20, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 2;
result = vec_first_mismatch_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {-1, 2, 3, 4, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {-1, 2, 3, 20, -5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 3;
result = vec_first_mismatch_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {1, 2, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {1, 2, 0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 2;
result = vec_first_mismatch_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
char_src1 = (vector signed char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; char_src2 = (vector signed char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 16;
result = vec_first_mismatch_or_eos_index (char_src1, char_src2);
#ifdef DEBUG2 print_signed_char("src1", char_src1); print_signed_char("src2", char_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: char first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; uchar_src2 = (vector unsigned char) {1, 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}; expected_result = 1;
result = vec_first_mismatch_or_eos_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 12, 13, 14, 15, 16}; uchar_src2 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 12, 13, 14, 15, 16}; expected_result = 8;
result = vec_first_mismatch_or_eos_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}; uchar_src2 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 0, 16, 17}; expected_result = 13;
result = vec_first_mismatch_or_eos_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uchar_src1 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}; uchar_src2 = (vector unsigned char) {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17}; expected_result = 16;
result = vec_first_mismatch_or_eos_index (uchar_src1, uchar_src2);
#ifdef DEBUG2 print_unsigned_char("src1", uchar_src1); print_unsigned_char("src2", uchar_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uchar first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* short int */ short_src1 = (vector short int) {-10, -20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {-10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 1;
result = vec_first_mismatch_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {0, 20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {0, 20, 30, 40, 50, 60, 70, 80};
expected_result = 0;
result = vec_first_mismatch_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {10, 20, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 8;
result = vec_first_mismatch_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
short_src1 = (vector short int) {10, 0, 30, 40, 50, 60, 70, 80}; short_src2 = (vector short int) {10, 0, 30, 40, 50, 60, 70, 80};
expected_result = 1;
result = vec_first_mismatch_or_eos_index (short_src1, short_src2);
#ifdef DEBUG2 print_signed_short_int("src1", short_src1); print_signed_short_int("src2", short_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: short int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {10, 20, 30, 40, 50, 60, 70, 0}; ushort_src2 = (vector short unsigned int) {10, 20, 30, 40, 50, 60, 70, 80};
expected_result = 7;
result = vec_first_mismatch_or_eos_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {20, 0, 40, 50, 60, 70, 80, 90}; ushort_src2 = (vector short unsigned int) {20, 0, 40, 50, 60, 70, 80, 90};
expected_result = 1;
result = vec_first_mismatch_or_eos_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
ushort_src1 = (vector short unsigned int) {20, 30, 40, 50, 60, 70, 80, 90}; ushort_src2 = (vector short unsigned int) {20, 30, 40, 50, 60, 70, 80, 90};
expected_result = 8;
result = vec_first_mismatch_or_eos_index (ushort_src1, ushort_src2);
#ifdef DEBUG2 print_unsigned_short_int("src1", ushort_src1); print_unsigned_short_int("src2", ushort_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: ushort int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
/* int */ int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {1, 20, 3, 4};
expected_result = 1;
result = vec_first_mismatch_or_eos_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first mismatch or EOS result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {1, 2, 3, 4}; int_src2 = (vector int) {1, 2, 3, 4};
expected_result = 4;
result = vec_first_mismatch_or_eos_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {1, 2, 0, 4}; int_src2 = (vector int) {1, 2, 0, 4};
expected_result = 2;
result = vec_first_mismatch_or_eos_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
int_src1 = (vector int) {1, 0, 3, 4}; int_src2 = (vector int) {1, 2, 3, 4};
expected_result = 1;
result = vec_first_mismatch_or_eos_index (int_src1, int_src2);
#ifdef DEBUG2 print_signed_int("src1", int_src1); print_signed_int("src2", int_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif if (result != expected_result) #ifdef DEBUG printf("Error: int first mismatch result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {11, 2, 33, 4};
expected_result = 0;
result = vec_first_mismatch_or_eos_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif if (result != expected_result) #ifdef DEBUG printf("Error: uint first mismatch or eos index result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 0}; uint_src2 = (vector unsigned int) {1, 2, 3, 0};
expected_result = 3;
result = vec_first_mismatch_or_eos_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first mismatch or eos index result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif
uint_src1 = (vector unsigned int) {1, 2, 3, 4}; uint_src2 = (vector unsigned int) {1, 2, 3, 4};
expected_result = 4;
result = vec_first_mismatch_or_eos_index (uint_src1, uint_src2);
#ifdef DEBUG2 print_unsigned_int("src1", uint_src1); print_unsigned_int("src2", uint_src2); printf("vec_first_mismatch_or_eos_index = %d\n\n", result); #endif
if (result != expected_result) #ifdef DEBUG printf("Error: uint first mismatch or eos index result (%d) does not match expected result (%d)\n", result, expected_result); #else abort(); #endif }
|