|
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 |
4 | 4 |
|
5 | 5 | .text
|
6 | 6 |
|
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" |
9 | 13 |
|
| 14 | +// ALL-LABEL: warning: test_amdhsa_kernel_no_name |
| 15 | +// ALL: error: unknown directive |
| 16 | +.warning "test_amdhsa_kernel_no_name" |
10 | 17 | .amdhsa_kernel
|
11 |
| -// CHECK: error: unknown directive |
12 | 18 | .end_amdhsa_kernel
|
13 | 19 |
|
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 |
17 | 25 | .end_amdhsa_kernel
|
18 | 26 |
|
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 |
22 | 41 | .end_amdhsa_kernel
|
23 | 42 |
|
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 |
26 | 49 | .end_amdhsa_kernel
|
27 | 50 |
|
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 |
29 | 56 | .amdhsa_group_segment_fixed_size 1
|
30 | 57 | .amdhsa_group_segment_fixed_size 1
|
31 |
| - // CHECK: error: .amdhsa_ directives cannot be repeated |
32 | 58 | .end_amdhsa_kernel
|
33 | 59 |
|
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 |
36 | 65 | .end_amdhsa_kernel
|
37 | 66 |
|
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 |
39 | 72 | .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 |
46 | 73 | .end_amdhsa_kernel
|
47 | 74 |
|
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 |
49 | 81 | .amdhsa_wavefront_size32 1
|
50 |
| - // CHECK: error: directive requires gfx10+ |
51 | 82 | .end_amdhsa_kernel
|
52 | 83 |
|
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 |
56 | 91 | .end_amdhsa_kernel
|
57 | 92 |
|
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 |
61 | 100 | .end_amdhsa_kernel
|
62 | 101 |
|
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 |
66 | 109 | .end_amdhsa_kernel
|
67 | 110 |
|
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 |
71 | 118 | .end_amdhsa_kernel
|
72 | 119 |
|
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 |
76 | 127 | .end_amdhsa_kernel
|
77 | 128 |
|
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 |
81 | 136 | .end_amdhsa_kernel
|
82 | 137 |
|
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 |
84 | 144 | .amdhsa_forward_progress 5
|
85 |
| - // GFX10: error: value out of range |
86 | 145 | .end_amdhsa_kernel
|
87 | 146 |
|
| 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" |
88 | 151 | .set .amdgcn.next_free_vgpr, "foo"
|
89 | 152 | 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