Viewing file: builtins-mergew-mergow.c (7.91 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run } */ /* { dg-require-effective-target p8vector_hw } */ /* { dg-options "-mpower8-vector" } */
#include <altivec.h> // vector #include <stdlib.h>
#ifdef DEBUG #include <stdio.h> #endif
void abort (void);
int main() { vector signed int vec_si_arg1, vec_si_arg2; vector signed int vec_si_expected, vec_si_result; vector unsigned int vec_ui_arg1, vec_ui_arg2; vector unsigned int vec_ui_expected, vec_ui_result; vector signed long long vec_sll_arg1, vec_sll_arg2; vector signed long long vec_sll_expected, vec_sll_result; vector unsigned long long vec_ull_arg1, vec_ull_arg2; vector unsigned long long vec_ull_expected, vec_ull_result; vector bool long long vec_bll_arg1, vec_bll_arg2; vector bool long long vec_bll_expected, vec_bll_result; vector float vec_f_arg1, vec_f_arg2; vector float vec_f_expected, vec_f_result; vector double vec_d_arg1, vec_d_arg2; vector double vec_d_expected, vec_d_result; int i; unsigned long long int value;
/* Tests for vec_mergeo, Merges the odd-numbered halves of two vectors. */ vec_si_arg1 = (vector int){-100, -101, 102, 103}; vec_si_arg2 = (vector int){200, 201, 202, 203};
vec_si_result = vec_mergeo (vec_si_arg1, vec_si_arg2);
vec_si_expected = (vector int){-101, 201, 103, 203};
for (i = 0; i < 4; i++) if (vec_si_result[i] != vec_si_expected[i]) #ifdef DEBUG printf("ERROR vec_mergeo(): vec_si_result[%d] = %d, vec_si_expected[%d] = %d\n", i, vec_si_result[i], i, vec_si_expected[i]); #else abort(); #endif
vec_ui_arg1 = (vector unsigned int){100, 101, 102, 103}; vec_ui_arg2 = (vector unsigned int){200, 201, 202, 203};
vec_ui_result = vec_mergeo (vec_ui_arg1, vec_ui_arg2);
vec_ui_expected = (vector unsigned int){101, 201, 103, 203};
for (i = 0; i < 4; i++) if (vec_ui_result[i] != vec_ui_expected[i]) #ifdef DEBUG printf("ERROR vec_mergeo(): vec_ui_result[%d] = %d, vec_ui_expected[%d] = %d\n", i, vec_ui_result[i], i, vec_ui_expected[i]); #else abort(); #endif
vec_sll_arg1 = (vector long long int){-300, -301}; vec_sll_arg2 = (vector long long int){400, 401};
vec_sll_result = vec_mergeo (vec_sll_arg1, vec_sll_arg2);
vec_sll_expected = (vector long long int){-301, 401};
for (i = 0; i < 2; i++) if (vec_sll_result[i] != vec_sll_expected[i]) #ifdef DEBUG printf("ERROR vec_mergeo(): vec_sll_result[%d] = %lld, vec_sll_expected[%d] = %lld\n", i, (long long int)vec_sll_result[i], i, (long long int)vec_sll_expected[i]); #else abort(); #endif
vec_ull_arg1 = (vector unsigned long long int){500, 501}; vec_ull_arg2 = (vector unsigned long long int){600, 601};
vec_ull_result = vec_mergeo (vec_ull_arg1, vec_ull_arg2);
vec_ull_expected = (vector unsigned long long int){501, 601};
for (i = 0; i < 2; i++) if (vec_ull_result[i] != vec_ull_expected[i]) #ifdef DEBUG printf("ERROR vec_mergeo(): vec_ull_result[%d] = %lld, vec_ull_expected[%d] = %lld\n", i, (unsigned long long int)vec_ull_result[i], i, (unsigned long long int)vec_ull_expected[i]); #else abort(); #endif
vec_bll_arg1 = (vector bool long long){0, 0}; vec_bll_arg2 = (vector bool long long){1, 1};
vec_bll_result = vec_mergeo (vec_bll_arg1, vec_bll_arg2);
vec_bll_expected = (vector bool long long){0, 1};
for (i = 0; i < 2; i++) if (vec_bll_result[i] != vec_bll_expected[i]) #ifdef DEBUG printf("ERROR vec_mergeo(): vec_bll_result[%d] = %lld, vec_bll_expected[%d] = %lld\n", i, vec_ull_result[i], i, vec_ull_expected[i]); #else abort(); #endif
vec_f_arg1 = (vector float){100.0, 101.1, 102.2, 103.3}; vec_f_arg2 = (vector float){200.0, 201.1, 202.2, 203.3};
vec_f_result = vec_mergeo (vec_f_arg1, vec_f_arg2);
vec_f_expected = (vector float){101.1, 201.1, 103.3, 203.3};
for (i = 0; i < 4; i++) if (vec_f_result[i] != vec_f_expected[i]) #ifdef DEBUG printf("ERROR vec_mergeo(): vec_f_result[%d] = %f, vec_f_expected[%d] = %f\n", i, vec_f_result[i], i, vec_f_expected[i]); #else abort(); #endif
vec_d_arg1 = (vector double){300.0, 301.1}; vec_d_arg2 = (vector double){400.0, 401.1};
vec_d_result = vec_mergeo (vec_d_arg1, vec_d_arg2);
vec_d_expected = (vector double){301.1, 401.1};
for (i = 0; i < 2; i++) if (vec_d_result[i] != vec_d_expected[i]) #ifdef DEBUG printf("ERROR vec_mergeo(): vec_d_result[%d] = %f, vec_d_expected[%d] = %f\n", i, vec_d_result[i], i, vec_d_expected[i]); #else abort(); #endif
/* Tests for vec_mergee, Merges the even-numbered halves of two vectors. */ vec_si_arg1 = (vector int){-100, -101, 102, 103}; vec_si_arg2 = (vector int){200, 201, 202, 203};
vec_si_result = vec_mergee (vec_si_arg1, vec_si_arg2);
vec_si_expected = (vector int){-100, 200, 102, 202};
for (i = 0; i < 4; i++) if (vec_si_result[i] != vec_si_expected[i]) #ifdef DEBUG printf("ERROR vec_mergee(): vec_si_result[%d] = %d, vec_si_expected[%d] = %d\n", i, vec_si_result[i], i, vec_si_expected[i]); #else abort(); #endif
vec_ui_arg1 = (vector unsigned int){100, 101, 102, 103}; vec_ui_arg2 = (vector unsigned int){200, 201, 202, 203};
vec_ui_result = vec_mergee (vec_ui_arg1, vec_ui_arg2);
vec_ui_expected = (vector unsigned int){100, 200, 102, 202};
for (i = 0; i < 4; i++) if (vec_ui_result[i] != vec_ui_expected[i]) #ifdef DEBUG printf("ERROR vec_mergee(): vec_ui_result[%d] = %d, vec_ui_expected[%d] = %d\n", i, vec_ui_result[i], i, vec_ui_expected[i]); #else abort(); #endif
vec_sll_arg1 = (vector signed long long int){-300, -301}; vec_sll_arg2 = (vector signed long long int){400, 401};
vec_sll_result = vec_mergee (vec_sll_arg1, vec_sll_arg2);
vec_sll_expected = (vector signed long long int){-300, 400};
for (i = 0; i < 2; i++) if (vec_sll_result[i] != vec_sll_expected[i]) #ifdef DEBUG printf("ERROR vec_mergee(): vec_sll_result[%d] = %lld, vec_sll_expected[%d] = %lld\n", i, (signed long long int)vec_sll_result[i], i, (signed long long int)vec_sll_expected[i]); #else abort(); #endif
vec_ull_arg1 = (vector unsigned long long int){500, 501}; vec_ull_arg2 = (vector unsigned long long int){600, 601};
vec_ull_result = vec_mergee (vec_ull_arg1, vec_ull_arg2);
vec_ull_expected = (vector unsigned long long int){500, 600};
for (i = 0; i < 2; i++) if (vec_ull_result[i] != vec_ull_expected[i]) #ifdef DEBUG printf("ERROR vec_mergee(): vec_ull_result[%d] = %lld, vec_ull_expected[%d] = %lld\n", i, (unsigned long long int)vec_ull_result[i], i, (unsigned long long int)vec_ull_expected[i]); #else abort(); #endif
vec_bll_arg1 = (vector bool long long){0, 0}; vec_bll_arg2 = (vector bool long long){1, 1};
vec_bll_result = vec_mergee (vec_bll_arg1, vec_bll_arg2);
vec_bll_expected = (vector bool long long){0, 1};
for (i = 0; i < 2; i++) if (vec_bll_result[i] != vec_bll_expected[i]) #ifdef DEBUG printf("ERROR vec_mergee(): vec_bll_result[%d] = %lld, vec_bll_expected[%d] = %lld\n", i, vec_ull_result[i], i, vec_ull_expected[i]); #else abort(); #endif
vec_f_arg1 = (vector float){100.0, 101.1, 102.2, 103.3}; vec_f_arg2 = (vector float){200.0, 201.1, 202.2, 203.3};
vec_f_result = vec_mergee (vec_f_arg1, vec_f_arg2);
vec_f_expected = (vector float){100.0, 200.0, 102.2, 202.2};
for (i = 0; i < 4; i++) if (vec_f_result[i] != vec_f_expected[i]) #ifdef DEBUG printf("ERROR vec_mergee(): vec_f_result[%d] = %f, vec_f_expected[%d] = %f\n", i, vec_f_result[i], i, vec_f_expected[i]); #else abort(); #endif
vec_d_arg1 = (vector double){300.0, 301.1}; vec_d_arg2 = (vector double){400.0, 401.1};
vec_d_result = vec_mergee (vec_d_arg1, vec_d_arg2);
vec_d_expected = (vector double){300.0, 400.0};
for (i = 0; i < 2; i++) if (vec_d_result[i] != vec_d_expected[i]) #ifdef DEBUG printf("ERROR vec_mergee(): vec_d_result[%d] = %f, vec_d_expected[%d] = %f\n", i, vec_d_result[i], i, vec_d_expected[i]); #else abort(); #endif }
|