Author: echuraev Date: Tue Dec 13 08:02:35 2016 New Revision: 289535 URL: http://llvm.org/viewvc/llvm-project?rev=289535&view=rev Log: [OpenCL] Enable unroll hint for OpenCL 1.x.
Summary: Although the feature was introduced only in OpenCL C v2.0 spec., it's useful for OpenCL 1.x too and doesn't require HW support. Reviewers: Anastasia Subscribers: yaxunl, cfe-commits, bader Differential Revision: https://reviews.llvm.org/D27453 Modified: cfe/trunk/lib/Sema/SemaStmtAttr.cpp cfe/trunk/test/CodeGenOpenCL/unroll-hint.cl cfe/trunk/test/SemaOpenCL/unroll-hint.cl Modified: cfe/trunk/lib/Sema/SemaStmtAttr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmtAttr.cpp?rev=289535&r1=289534&r2=289535&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaStmtAttr.cpp (original) +++ cfe/trunk/lib/Sema/SemaStmtAttr.cpp Tue Dec 13 08:02:35 2016 @@ -225,16 +225,12 @@ CheckForIncompatibleAttributes(Sema &S, static Attr *handleOpenCLUnrollHint(Sema &S, Stmt *St, const AttributeList &A, SourceRange Range) { - // OpenCL v2.0 s6.11.5 - opencl_unroll_hint can have 0 arguments (compiler + // Although the feature was introduced only in OpenCL C v2.0 s6.11.5, it's + // useful for OpenCL 1.x too and doesn't require HW support. + // opencl_unroll_hint can have 0 arguments (compiler // determines unrolling factor) or 1 argument (the unroll factor provided // by the user). - if (S.getLangOpts().OpenCLVersion < 200) { - S.Diag(A.getLoc(), diag::err_attribute_requires_opencl_version) - << A.getName() << "2.0" << 1; - return nullptr; - } - unsigned NumArgs = A.getNumArgs(); if (NumArgs > 1) { Modified: cfe/trunk/test/CodeGenOpenCL/unroll-hint.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/unroll-hint.cl?rev=289535&r1=289534&r2=289535&view=diff ============================================================================== --- cfe/trunk/test/CodeGenOpenCL/unroll-hint.cl (original) +++ cfe/trunk/test/CodeGenOpenCL/unroll-hint.cl Tue Dec 13 08:02:35 2016 @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -emit-llvm -O0 -cl-std=CL2.0 -o - %s | FileCheck %s +// RUN: %clang_cc1 -emit-llvm -O0 -cl-std=CL1.2 -o - %s | FileCheck %s /*** for ***/ void for_count() Modified: cfe/trunk/test/SemaOpenCL/unroll-hint.cl URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaOpenCL/unroll-hint.cl?rev=289535&r1=289534&r2=289535&view=diff ============================================================================== --- cfe/trunk/test/SemaOpenCL/unroll-hint.cl (original) +++ cfe/trunk/test/SemaOpenCL/unroll-hint.cl Tue Dec 13 08:02:35 2016 @@ -1,17 +1,5 @@ -//RUN: %clang_cc1 -O0 -fsyntax-only -verify %s -//RUN: %clang_cc1 -O0 -cl-std=CL2.0 -fsyntax-only -verify -DCL20 %s +//RUN: %clang_cc1 -O0 -cl-std=CL2.0 -fsyntax-only -verify %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}} @@ -27,4 +15,3 @@ 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits