diff options
Diffstat (limited to 'clang/test/SemaOpenCL/unroll-hint.cl')
| -rw-r--r-- | clang/test/SemaOpenCL/unroll-hint.cl | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/SemaOpenCL/unroll-hint.cl b/clang/test/SemaOpenCL/unroll-hint.cl new file mode 100644 index 00000000000..99698660369 --- /dev/null +++ b/clang/test/SemaOpenCL/unroll-hint.cl @@ -0,0 +1,30 @@ +//RUN: %clang_cc1 -O0 -fsyntax-only -verify %s +//RUN: %clang_cc1 -O0 -cl-std=CL2.0 -fsyntax-only -verify -DCL20 %s + +kernel void D (global int *x) { + int i = 10; +#ifndef CL20 + // expected-error@+2 {{'opencl_unroll_hint' attribute requires OpenCL version 2.0 or above}} +#endif + __attribute__((opencl_unroll_hint)) + do { + } while(i--); +} + +#ifdef CL20 +kernel void C (global int *x) { + int I = 3; + __attribute__((opencl_unroll_hint(I))) // expected-error {{'opencl_unroll_hint' attribute requires an integer constant}} + while (I--); +} + +kernel void E() { + __attribute__((opencl_unroll_hint(2,4))) // expected-error {{'opencl_unroll_hint' attribute takes no more than 1 argument}} + for(int i=0; i<100; i++); +} + +kernel void F() { + __attribute__((opencl_unroll_hint(-1))) // expected-error {{'opencl_unroll_hint' attribute requires a positive integral compile time constant expression}} + for(int i=0; i<100; i++); +} +#endif |

