Viewing file: reduc_14_run.c (4.81 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do run { target aarch64_sve256_hw } } */ /* { dg-options "-O3 -msve-vector-bits=256 --param vect-partial-vector-usage=1" } */
#define N 0x1100
#include "reduc_14.c"
int main (void) { unsigned int x[N]; for (int i = 0; i < N; ++i) x[i] = ((i + 1) * (i + 2)) & 0xfffff;
unsigned int add_res1[2] = { 11, 22 }; add_loop (x, 0, add_res1); if (add_res1[0] != 11 || add_res1[1] != 22) __builtin_abort ();
unsigned int add_res2[2] = { 10, 20 }; add_loop (x, 11, add_res2); if (add_res2[0] != 1902 || add_res2[1] != 2176) __builtin_abort ();
unsigned int add_res3[2] = { 15, 30 }; add_loop (x, 0x100, add_res3); if (add_res3[0] != 22435087 || add_res3[1] != 22566686) __builtin_abort ();
unsigned int add_res4[2] = { 100, 200 }; add_loop (x, 0x11f, add_res4); if (add_res4[0] != 31602244 || add_res4[1] != 31767656) __builtin_abort ();
unsigned int max_res1[2] = { 461, 500 }; max_loop (x, 11, max_res1); if (max_res1[0] != 462 || max_res1[1] != 506) __builtin_abort ();
unsigned int max_res2[2] = { 463, 507 }; max_loop (x, 11, max_res2); if (max_res2[0] != 463 || max_res2[1] != 507) __builtin_abort ();
unsigned int max_res3[2] = { 1000000, 1000000 }; max_loop (x, 0x200, max_res3); if (max_res3[0] != 1047552 || max_res3[1] != 1045506) __builtin_abort ();
unsigned int max_res4[2] = { 1047553, 1045507 }; max_loop (x, 0x200, max_res4); if (max_res4[0] != 1047553 || max_res4[1] != 1045507) __builtin_abort ();
unsigned int max_res5[2] = { 300000, 30000 }; max_loop (x, 0x11f, max_res5); if (max_res5[0] != 328902 || max_res5[1] != 330050) __builtin_abort ();
unsigned int max_res6[2] = { 328903, 330051 }; max_loop (x, 0x11f, max_res6); if (max_res6[0] != 328903 || max_res6[1] != 330051) __builtin_abort ();
unsigned int or_res1[2] = { 11, 22 }; or_loop (x, 0, or_res1); if (or_res1[0] != 11 || or_res1[1] != 22) __builtin_abort ();
unsigned int or_res2[2] = { 0x200000, 0xe00000 }; or_loop (x, 11, or_res2); if (or_res2[0] != 0x2001fe || or_res2[1] != 0xe001fe) __builtin_abort ();
unsigned int or_res3[2] = { 0x800000, 0x700000 }; or_loop (x, 0x40, or_res3); if (or_res3[0] != 0x803ffe || or_res3[1] != 0x707ffe) __builtin_abort ();
unsigned int or_res4[2] = { 0x100001, 0x300000 }; or_loop (x, 0x4f, or_res4); if (or_res4[0] != 0x107fff || or_res4[1] != 0x307ffe) __builtin_abort ();
unsigned int eor_res1[2] = { 11, 22 }; eor_loop (x, 0, eor_res1); if (eor_res1[0] != 11 || eor_res1[1] != 22) __builtin_abort ();
unsigned int eor_res2[2] = { 0x2000ff, 0xe000ff }; eor_loop (x, 11, eor_res2); if (eor_res2[0] != 0x2001cf || eor_res2[1] != 0xe000b7) __builtin_abort ();
unsigned int eor_res3[2] = { 0x805000, 0x70f000 }; eor_loop (x, 0x100, eor_res3); if (eor_res3[0] != 0x824200 || eor_res3[1] != 0x77dc00) __builtin_abort ();
unsigned int eor_res4[2] = { 0x101201, 0x300f00 }; eor_loop (x, 0x11f, eor_res4); if (eor_res4[0] != 0x178801 || eor_res4[1] != 0x337240) __builtin_abort ();
for (int i = 0; i < N; ++i) x[i] = ~x[i] & 0xfffff;
unsigned int min_res1[2] = { 1048200, 1048100 }; min_loop (x, 11, min_res1); if (min_res1[0] != 1048113 || min_res1[1] != 1048069) __builtin_abort ();
unsigned int min_res2[2] = { 1048112, 1048068 }; min_loop (x, 11, min_res2); if (min_res2[0] != 1048112 || min_res2[1] != 1048068) __builtin_abort ();
unsigned int min_res3[2] = { 10000, 10000 }; min_loop (x, 0x200, min_res3); if (min_res3[0] != 1023 || min_res3[1] != 3069) __builtin_abort ();
unsigned int min_res4[2] = { 1022, 3068 }; min_loop (x, 0x200, min_res4); if (min_res4[0] != 1022 || min_res4[1] != 3068) __builtin_abort ();
unsigned int min_res5[2] = { 719680, 718530 }; min_loop (x, 0x11f, min_res5); if (min_res5[0] != 719673 || min_res5[1] != 718525) __builtin_abort ();
unsigned int min_res6[2] = { 719672, 718524 }; min_loop (x, 0x11f, min_res6); if (min_res6[0] != 719672 || min_res6[1] != 718524) __builtin_abort ();
unsigned int and_res1[2] = { 11, 22 }; and_loop (x, 0, and_res1); if (and_res1[0] != 11 || and_res1[1] != 22) __builtin_abort ();
unsigned int and_res2[2] = { 0xf5cff, 0xf78ff }; and_loop (x, 11, and_res2); if (and_res2[0] != 0xf5c01 || and_res2[1] != 0xf7801) __builtin_abort ();
unsigned int and_res3[2] = { 0x7efff, 0xecfff }; and_loop (x, 0x40, and_res3); if (and_res3[0] != 0x7c001 || and_res3[1] != 0xe8001) __builtin_abort ();
unsigned int and_res4[2] = { 0xffffff, 0xffffff }; and_loop (x, 0x4f, and_res4); if (and_res4[0] != 0xf8001 || and_res4[1] != 0xf8001) __builtin_abort ();
return 0; }
|