================
@@ -51,6 +51,9 @@ __attribute__((amdgpu_waves_per_eu(0, 4))) kernel void 
kernel_waves_per_eu_0_4()
 __attribute__((amdgpu_flat_work_group_size(64, 32))) kernel void 
kernel_flat_work_group_size_64_32() {} // expected-error 
{{'amdgpu_flat_work_group_size' attribute argument is invalid: min must not be 
greater than max}}
 __attribute__((amdgpu_waves_per_eu(4, 2))) kernel void 
kernel_waves_per_eu_4_2() {} // expected-error {{'amdgpu_waves_per_eu' 
attribute argument is invalid: min must not be greater than max}}
 
+__attribute__((reqd_work_group_size(32, 2, 1), amdgpu_flat_work_group_size(16, 
128))) kernel void 
kernel_reqd_work_group_size_32_2_1_flat_work_group_size_16_128() {} // 
expected-error {{'amdgpu_flat_work_group_size' attribute must match 
'reqd_work_group_size' product}}
+__attribute__((amdgpu_flat_work_group_size(16, 128), reqd_work_group_size(32, 
2, 1))) kernel void 
kernel_flat_work_group_size_16_128_reqd_work_group_size_32_2_1() {} // 
expected-error {{'amdgpu_flat_work_group_size' attribute must match 
'reqd_work_group_size' product}}
+
----------------
steffenlarsen wrote:

Would be great to also see a .cpp or .cu test for this new diagnostic. In 
particular, it would be good to test that dependent functions can also detect 
the mismatch. Maybe something like:
```c++
template <unsigned a, unsigned b, unsigned c, unsigned d, unsigned e>
__attribute__((reqd_work_group_size(a, b, c), amdgpu_flat_work_group_size(d, 
e))) __global__ void f() {}

template __global__ void f<32, 2, 1, 16, 128>(void);
```
and some variants thereof?

https://github.com/llvm/llvm-project/pull/200989
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to