1// RUN: not llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx803 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=GCN,GFX8,NONGFX10,AMDHSA
2// RUN: not llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=GCN,GFX10,AMDHSA
3// RUN: not llvm-mc -triple amdgcn-amd- -mcpu=gfx803 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=GCN,NONAMDHSA
4
5.text
6
7// GCN-LABEL: warning: test_target
8// GFX8-NOT: error:
9// GFX10: error: target must match options
10// NONAMDHSA: error: unknown directive
11.warning "test_target"
12.amdgcn_target "amdgcn-amd-amdhsa--gfx803+xnack"
13
14// GCN-LABEL: warning: test_amdhsa_kernel_no_name
15// GCN: error: unknown directive
16.warning "test_amdhsa_kernel_no_name"
17.amdhsa_kernel
18.end_amdhsa_kernel
19
20// GCN-LABEL: warning: test_amdhsa_kernel_empty
21// AMDHSA-NOT: error: unknown directive
22// NONAMDHSA: error: unknown directive
23.warning "test_amdhsa_kernel_empty"
24.amdhsa_kernel test_amdhsa_kernel_empty
25.end_amdhsa_kernel
26
27// GCN-LABEL: warning: test_amdhsa_kernel_unknown_directive
28// AMDHSA: error: expected .amdhsa_ directive or .end_amdhsa_kernel
29// NONAMDHSA: error: unknown directive
30.warning "test_amdhsa_kernel_unknown_directive"
31.amdhsa_kernel test_amdhsa_kernel_unknown_directive
32  1
33.end_amdhsa_kernel
34
35// GCN-LABEL: warning: test_amdhsa_group_segment_fixed_size_invalid_size
36// AMDHSA: error: value out of range
37// NONAMDHSA: error: unknown directive
38.warning "test_amdhsa_group_segment_fixed_size_invalid_size"
39.amdhsa_kernel test_amdhsa_group_segment_fixed_size_invalid_size
40  .amdhsa_group_segment_fixed_size -1
41.end_amdhsa_kernel
42
43// GCN-LABEL: warning: test_amdhsa_group_segment_fixed_size_invalid_expression
44// AMDHSA: error: value out of range
45// NONAMDHSA: error: unknown directive
46.warning "test_amdhsa_group_segment_fixed_size_invalid_expression"
47.amdhsa_kernel test_amdhsa_group_segment_fixed_size_invalid_expression
48  .amdhsa_group_segment_fixed_size 10000000000 + 1
49.end_amdhsa_kernel
50
51// GCN-LABEL: warning: test_amdhsa_group_segment_fixed_size_repeated
52// AMDHSA: error: .amdhsa_ directives cannot be repeated
53// NONAMDHSA-: error: unknown directive
54.warning "test_amdhsa_group_segment_fixed_size_repeated"
55.amdhsa_kernel test_amdhsa_group_segment_fixed_size_repeated
56  .amdhsa_group_segment_fixed_size 1
57  .amdhsa_group_segment_fixed_size 1
58.end_amdhsa_kernel
59
60// GCN-LABEL: warning: test_amdhsa_next_free_vgpr_missing
61// AMDHSA: error: .amdhsa_next_free_vgpr directive is required
62// NONAMDHSA: error: unknown directive
63.warning "test_amdhsa_next_free_vgpr_missing"
64.amdhsa_kernel test_amdhsa_next_free_vgpr_missing
65.end_amdhsa_kernel
66
67// GCN-LABEL: warning: test_amdhsa_next_free_sgpr_missing
68// AMDHSA: error: .amdhsa_next_free_sgpr directive is required
69// NONAMDHSA: error: unknown directive
70.warning "test_amdhsa_next_free_sgpr_missing"
71.amdhsa_kernel test_amdhsa_next_free_sgpr_missing
72  .amdhsa_next_free_vgpr 0
73.end_amdhsa_kernel
74
75// GCN-LABEL: warning: test_amdhsa_wavefront_size32
76// NONGFX10: error: directive requires gfx10+
77// GFX10: error: .amdhsa_next_free_vgpr directive is required
78// NONAMDHSA: error: unknown directive
79.warning "test_amdhsa_wavefront_size32"
80.amdhsa_kernel test_amdhsa_wavefront_size32
81  .amdhsa_wavefront_size32 1
82.end_amdhsa_kernel
83
84// GCN-LABEL: warning: test_amdhsa_wavefront_size32_invalid
85// NONGFX10: error: directive requires gfx10+
86// GFX10: error: value out of range
87// NONAMDHSA: error: unknown directive
88.warning "test_amdhsa_wavefront_size32_invalid"
89.amdhsa_kernel test_amdhsa_wavefront_size32_invalid
90  .amdhsa_wavefront_size32 5
91.end_amdhsa_kernel
92
93// GCN-LABEL: warning: test_amdhsa_workgroup_processor_mode
94// NONGFX10: error: directive requires gfx10+
95// GFX10: error: .amdhsa_next_free_vgpr directive is required
96// NONAMDHSA: error: unknown directive
97.warning "test_amdhsa_workgroup_processor_mode"
98.amdhsa_kernel test_amdhsa_workgroup_processor_mode
99  .amdhsa_workgroup_processor_mode 1
100.end_amdhsa_kernel
101
102// GCN-LABEL: warning: test_amdhsa_workgroup_processor_mode_invalid
103// NONGFX10: error: directive requires gfx10+
104// GFX10: error: value out of range
105// NONAMDHSA: error: unknown directive
106.warning "test_amdhsa_workgroup_processor_mode_invalid"
107.amdhsa_kernel test_amdhsa_workgroup_processor_mode_invalid
108  .amdhsa_workgroup_processor_mode 5
109.end_amdhsa_kernel
110
111// GCN-LABEL: warning: test_amdhsa_memory_ordered
112// NONGFX10: error: directive requires gfx10+
113// GFX10: error: .amdhsa_next_free_vgpr directive is required
114// NONAMDHSA: error: unknown directive
115.warning "test_amdhsa_memory_ordered"
116.amdhsa_kernel test_amdhsa_memory_ordered
117  .amdhsa_memory_ordered 1
118.end_amdhsa_kernel
119
120// GCN-LABEL: warning: test_amdhsa_memory_ordered_invalid
121// NONGFX10: error: directive requires gfx10+
122// GFX10: error: value out of range
123// NONAMDHSA: error: unknown directive
124.warning "test_amdhsa_memory_ordered_invalid"
125.amdhsa_kernel test_amdhsa_memory_ordered_invalid
126  .amdhsa_memory_ordered 5
127.end_amdhsa_kernel
128
129// GCN-LABEL: warning: test_amdhsa_forward_progress
130// NONGFX10: error: directive requires gfx10+
131// GFX10: error: .amdhsa_next_free_vgpr directive is required
132// NONAMDHSA: error: unknown directive
133.warning "test_amdhsa_forward_progress"
134.amdhsa_kernel test_amdhsa_forward_progress
135  .amdhsa_forward_progress 1
136.end_amdhsa_kernel
137
138// GCN-LABEL: warning: test_amdhsa_forward_progress_invalid
139// NONGFX10: error: directive requires gfx10+
140// GFX10: error: value out of range
141// NONAMDHSA: error: unknown directive
142.warning "test_amdhsa_forward_progress_invalid"
143.amdhsa_kernel test_amdhsa_forward_progress_invalid
144  .amdhsa_forward_progress 5
145.end_amdhsa_kernel
146
147// GCN-LABEL: warning: test_next_free_vgpr_invalid
148// AMDHSA: error: .amdgcn.next_free_{v,s}gpr symbols must be absolute expressions
149// NONAMDHSA-NOT: error:
150.warning "test_next_free_vgpr_invalid"
151.set .amdgcn.next_free_vgpr, "foo"
152v_mov_b32_e32 v0, s0
153
154// GCN-LABEL: warning: test_end
155.warning "test_end"
156