blob: 63abda9eea37eaa58073a41790447850ba3ee0e9 [file] [log] [blame]
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +00002#include "Inputs/cuda.h"
3
4
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +00005__attribute__((amdgpu_flat_work_group_size(32, 64)))
6__global__ void flat_work_group_size_32_64() {}
7
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +00008__attribute__((amdgpu_waves_per_eu(2)))
9__global__ void waves_per_eu_2() {}
10
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000011__attribute__((amdgpu_waves_per_eu(2, 4)))
12__global__ void waves_per_eu_2_4() {}
13
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000014__attribute__((amdgpu_num_sgpr(32)))
15__global__ void num_sgpr_32() {}
16
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000017__attribute__((amdgpu_num_vgpr(64)))
18__global__ void num_vgpr_64() {}
19
20
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000021__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2)))
22__global__ void flat_work_group_size_32_64_waves_per_eu_2() {}
23
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000024__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2, 4)))
25__global__ void flat_work_group_size_32_64_waves_per_eu_2_4() {}
26
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000027__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_num_sgpr(32)))
28__global__ void flat_work_group_size_32_64_num_sgpr_32() {}
29
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000030__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_num_vgpr(64)))
31__global__ void flat_work_group_size_32_64_num_vgpr_64() {}
32
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000033__attribute__((amdgpu_waves_per_eu(2), amdgpu_num_sgpr(32)))
34__global__ void waves_per_eu_2_num_sgpr_32() {}
35
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000036__attribute__((amdgpu_waves_per_eu(2), amdgpu_num_vgpr(64)))
37__global__ void waves_per_eu_2_num_vgpr_64() {}
38
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000039__attribute__((amdgpu_waves_per_eu(2, 4), amdgpu_num_sgpr(32)))
40__global__ void waves_per_eu_2_4_num_sgpr_32() {}
41
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000042__attribute__((amdgpu_waves_per_eu(2, 4), amdgpu_num_vgpr(64)))
43__global__ void waves_per_eu_2_4_num_vgpr_64() {}
44
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000045__attribute__((amdgpu_num_sgpr(32), amdgpu_num_vgpr(64)))
46__global__ void num_sgpr_32_num_vgpr_64() {}
47
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000048__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2), amdgpu_num_sgpr(32)))
49__global__ void flat_work_group_size_32_64_waves_per_eu_2_num_sgpr_32() {}
50
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000051__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2), amdgpu_num_vgpr(64)))
52__global__ void flat_work_group_size_32_64_waves_per_eu_2_num_vgpr_64() {}
53
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000054__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2, 4), amdgpu_num_sgpr(32)))
55__global__ void flat_work_group_size_32_64_waves_per_eu_2_4_num_sgpr_32() {}
56
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000057__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2, 4), amdgpu_num_vgpr(64)))
58__global__ void flat_work_group_size_32_64_waves_per_eu_2_4_num_vgpr_64() {}
59
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000060__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2), amdgpu_num_sgpr(32), amdgpu_num_vgpr(64)))
61__global__ void flat_work_group_size_32_64_waves_per_eu_2_num_sgpr_32_num_vgpr_64() {}
62
Konstantin Zhuravlyov5b48d722016-09-26 01:02:57 +000063__attribute__((amdgpu_flat_work_group_size(32, 64), amdgpu_waves_per_eu(2, 4), amdgpu_num_sgpr(32), amdgpu_num_vgpr(64)))
64__global__ void flat_work_group_size_32_64_waves_per_eu_2_4_num_sgpr_32_num_vgpr_64() {}
Yaxun Liuaa246012018-06-12 23:58:59 +000065
66// expected-error@+2{{attribute 'reqd_work_group_size' can only be applied to an OpenCL kernel function}}
67__attribute__((reqd_work_group_size(32, 64, 64)))
68__global__ void reqd_work_group_size_32_64_64() {}
69
70// expected-error@+2{{attribute 'work_group_size_hint' can only be applied to an OpenCL kernel function}}
71__attribute__((work_group_size_hint(2, 2, 2)))
72__global__ void work_group_size_hint_2_2_2() {}
73
74// expected-error@+2{{attribute 'vec_type_hint' can only be applied to an OpenCL kernel function}}
75__attribute__((vec_type_hint(int)))
76__global__ void vec_type_hint_int() {}
77
78// expected-error@+2{{attribute 'intel_reqd_sub_group_size' can only be applied to an OpenCL kernel function}}
79__attribute__((intel_reqd_sub_group_size(64)))
80__global__ void intel_reqd_sub_group_size_64() {}