| /* { dg-do compile } */ |
| /* { dg-options "-fcilkplus -Wunknown-pragmas" } */ |
| |
| /* Tests the clauses in several combinations put in different locations. */ |
| /* This is mostly a parser test. */ |
| #define Q 4 |
| |
| int z = Q; |
| |
| __attribute__ ((vector (uniform(x), linear (y:1), vectorlength (4) ))) |
| int func (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| __attribute__ ((__vector__ (uniform(x), vectorlength (2), linear (y:1) ))) |
| int func2 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| __attribute__ ((vector (uniform(y), linear (x), vectorlength (4) ))) |
| int func3 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| __attribute__ ((vector (uniform(x), linear (y:1), mask))) |
| int func4 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| __attribute__ ((vector (uniform(x), linear (y:1), nomask))) |
| int func5 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| __attribute__ ((vector (uniform(x), mask, linear (y:1)))) |
| int func6 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| __attribute__ ((vector (uniform (x), mask, linear (y:1)), vector)) |
| int func7 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| __attribute__ ((vector (uniform (x), mask, linear (y:1)), vector (uniform (y), mask))) |
| int func8 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| __attribute__ ((vector, vector (uniform (y), mask))) |
| int func9 (int x, int y) |
| { |
| int zq = 5; |
| return x + (y*zq); |
| } |
| |
| int main (int argc, char *argv[]) |
| { |
| int ii = 0, q = 5; |
| for (ii = 0; ii < 10; ii++) |
| q += func (argc, ii); |
| return q; |
| } |