1 /* { dg-require-effective-target size32plus } */
3 extern void abort (void);
4 float r
= 1.0f
, a
[1024], b
[1024];
6 __attribute__((noipa
)) void
7 foo (float *a
, float *b
)
9 #pragma omp for reduction (inscan, *:r)
10 for (int i
= 0; i
< 1024; i
++)
13 #pragma omp scan inclusive(r)
18 __attribute__((noipa
)) float
21 float s
= -__builtin_inff ();
22 #pragma omp parallel for reduction (inscan, max:s)
23 for (int i
= 0; i
< 1024; i
++)
25 s
= s
> a
[i
] ? s
: a
[i
];
26 #pragma omp scan inclusive(s)
36 for (int i
= 0; i
< 1024; ++i
)
39 a
[i
] = (i
& 1) ? 0.25f
: 0.5f
;
41 a
[i
] = (i
% 3) == 0 ? 2.0f
: (i
% 3) == 1 ? 4.0f
: 1.0f
;
43 a
[i
] = (i
& 1) ? 0.25f
: 0.5f
;
45 a
[i
] = (i
% 3) == 0 ? 2.0f
: (i
% 3) == 1 ? 4.0f
: 1.0f
;
49 case 0: a
[i
] = 0.25f
; break;
50 case 1: a
[i
] = 2.0f
; break;
51 case 2: a
[i
] = -1.0f
; break;
52 case 3: a
[i
] = -4.0f
; break;
53 case 4: a
[i
] = 0.5f
; break;
54 case 5: a
[i
] = 1.0f
; break;
55 default: a
[i
] = 0.0f
; break;
62 if (r
* 16384.0f
!= 0.125f
)
65 for (int i
= 0; i
< 1024; ++i
)
72 a
[i
] = m
- ((i
% 3) == 1 ? 2.0f
: (i
% 3) == 2 ? 4.0f
: 0.0f
);
79 s
= -__builtin_inff ();
80 for (int i
= 0; i
< 1024; ++i
)