Certain OpenCL builtin functions are supposed to be executed by all threads in a work group or sub group. Such functions should not be made divergent during transformation. It makes sense to mark them with convergent attribute. The adding of convergent attribute is based on Ettore Speziale's work and the original proposal and patch can be found at https://www.mail-archive.com/cfe-commits@lists.llvm.org/msg22271.html. Differential Revision: https://reviews.llvm.org/D25343 llvm-svn: 285725
13 lines
479 B
Common Lisp
13 lines
479 B
Common Lisp
// RUN: %clang_cc1 -triple spir-unknown-unknown -fsyntax-only -verify %s
|
|
|
|
void f1(void) __attribute__((convergent));
|
|
|
|
void f2(void) __attribute__((convergent(1))); // expected-error {{'convergent' attribute takes no arguments}}
|
|
|
|
void f3(int a __attribute__((convergent))); // expected-warning {{'convergent' attribute only applies to functions}}
|
|
|
|
void f4(void) {
|
|
int var1 __attribute__((convergent)); // expected-warning {{'convergent' attribute only applies to functions}}
|
|
}
|
|
|