Skip to content

Commit ceb9940

Browse files
committed
[AMDGPU] Correct hsa-diag-v3.s test
- Use file_check -LABEL markers to prevent false positives being reported due to messages from different tests causing success to be reported. - Add checks for all the run commands for more robust testing. - Add checks for the absence of errors. - Name and order tests more sensibly. Differential Revision: https://reviews.llvm.org/D89635
1 parent 225065b commit ceb9940

File tree

1 file changed

+113
-48
lines changed

1 file changed

+113
-48
lines changed

llvm/test/MC/AMDGPU/hsa-diag-v3.s

Lines changed: 113 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,90 +1,155 @@
1-
// RUN: not llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx803 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s
2-
// RUN: not llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefix=GFX10
3-
// RUN: not llvm-mc -triple amdgcn-amd- -mcpu=gfx803 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefix=NOT-AMDHSA
1+
// RUN: not llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx803 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=GFX8,NONGFX90A,NONGFX10,AMDHSA,ALL
2+
// RUN: not llvm-mc -triple amdgcn-amd-amdhsa -mcpu=gfx1010 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=NONGFX8,NONGFX90A,GFX10,AMDHSA,ALL
3+
// RUN: not llvm-mc -triple amdgcn-amd- -mcpu=gfx803 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=NONAMDHSA,ALL
44

55
.text
66

7-
.amdgcn_target "amdgcn--amdhsa-gfx803+xnack"
8-
// CHECK: error: target must match options
7+
// ALL-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"
913

14+
// ALL-LABEL: warning: test_amdhsa_kernel_no_name
15+
// ALL: error: unknown directive
16+
.warning "test_amdhsa_kernel_no_name"
1017
.amdhsa_kernel
11-
// CHECK: error: unknown directive
1218
.end_amdhsa_kernel
1319

14-
.amdhsa_kernel foo
15-
.amdhsa_group_segment_fixed_size -1
16-
// CHECK: error: value out of range
20+
// ALL-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
1725
.end_amdhsa_kernel
1826

19-
.amdhsa_kernel foo
20-
.amdhsa_group_segment_fixed_size 10000000000 + 1
21-
// CHECK: error: value out of range
27+
// ALL-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+
// ALL-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
2241
.end_amdhsa_kernel
2342

24-
.amdhsa_kernel foo
25-
// NOT-AMDHSA: error: unknown directive
43+
// ALL-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
2649
.end_amdhsa_kernel
2750

28-
.amdhsa_kernel foo
51+
// ALL-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
2956
.amdhsa_group_segment_fixed_size 1
3057
.amdhsa_group_segment_fixed_size 1
31-
// CHECK: error: .amdhsa_ directives cannot be repeated
3258
.end_amdhsa_kernel
3359

34-
.amdhsa_kernel foo
35-
// CHECK: error: .amdhsa_next_free_vgpr directive is required
60+
// ALL-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
3665
.end_amdhsa_kernel
3766

38-
.amdhsa_kernel foo
67+
// ALL-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
3972
.amdhsa_next_free_vgpr 0
40-
// CHECK: error: .amdhsa_next_free_sgpr directive is required
41-
.end_amdhsa_kernel
42-
43-
.amdhsa_kernel foo
44-
1
45-
// CHECK: error: expected .amdhsa_ directive or .end_amdhsa_kernel
4673
.end_amdhsa_kernel
4774

48-
.amdhsa_kernel foo
75+
// ALL-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
4981
.amdhsa_wavefront_size32 1
50-
// CHECK: error: directive requires gfx10+
5182
.end_amdhsa_kernel
5283

53-
.amdhsa_kernel foo
54-
.amdhsa_workgroup_processor_mode 1
55-
// CHECK: error: directive requires gfx10+
84+
// ALL-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
5691
.end_amdhsa_kernel
5792

58-
.amdhsa_kernel foo
59-
.amdhsa_memory_ordered 1
60-
// CHECK: error: directive requires gfx10+
93+
// ALL-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
61100
.end_amdhsa_kernel
62101

63-
.amdhsa_kernel foo
64-
.amdhsa_forward_progress 1
65-
// CHECK: error: directive requires gfx10+
102+
// ALL-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
66109
.end_amdhsa_kernel
67110

68-
.amdhsa_kernel foo
69-
.amdhsa_wavefront_size32 5
70-
// GFX10: error: value out of range
111+
// ALL-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
71118
.end_amdhsa_kernel
72119

73-
.amdhsa_kernel foo
74-
.amdhsa_workgroup_processor_mode 5
75-
// GFX10: error: value out of range
120+
// ALL-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
76127
.end_amdhsa_kernel
77128

78-
.amdhsa_kernel foo
79-
.amdhsa_memory_ordered 5
80-
// GFX10: error: value out of range
129+
// ALL-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
81136
.end_amdhsa_kernel
82137

83-
.amdhsa_kernel foo
138+
// ALL-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
84144
.amdhsa_forward_progress 5
85-
// GFX10: error: value out of range
86145
.end_amdhsa_kernel
87146

147+
// ALL-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"
88151
.set .amdgcn.next_free_vgpr, "foo"
89152
v_mov_b32_e32 v0, s0
90-
// CHECK: error: .amdgcn.next_free_{v,s}gpr symbols must be absolute expressions
153+
154+
// ALL-LABEL: warning: test_end
155+
.warning "test_end"

0 commit comments

Comments
 (0)