1// RUN: not llvm-mc --amdhsa-code-object-version=3 -triple amdgcn-amd-amdhsa -mcpu=gfx810 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=GCN,GFX8,NONGFX10,AMDHSA 2// RUN: not llvm-mc --amdhsa-code-object-version=3 -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 --amdhsa-code-object-version=3 -triple amdgcn-amd- -mcpu=gfx810 -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=GCN,NONAMDHSA 4// RUN: not llvm-mc --amdhsa-code-object-version=3 -triple amdgcn-amd-amdhsa -mcpu=gfx90a -mattr=+xnack -show-encoding %s 2>&1 >/dev/null | FileCheck %s --check-prefixes=GFX90A,NONGFX10,AMDHSA,ALL 5 6.text 7 8// GCN-LABEL: warning: test_target 9// GFX8-NOT: error: 10// GFX10: error: .amdgcn_target directive's target id amdgcn-amd-amdhsa--gfx810+xnack does not match the specified target id amdgcn-amd-amdhsa--gfx1010+xnack 11// NONAMDHSA: error: .amdgcn_target directive's target id amdgcn-amd-amdhsa--gfx810+xnack does not match the specified target id amdgcn-amd-unknown--gfx810 12.warning "test_target" 13.amdgcn_target "amdgcn-amd-amdhsa--gfx810+xnack" 14 15// GCN-LABEL: warning: test_amdhsa_kernel_no_name 16// GCN: error: unknown directive 17.warning "test_amdhsa_kernel_no_name" 18.amdhsa_kernel 19.end_amdhsa_kernel 20 21// GCN-LABEL: warning: test_amdhsa_kernel_empty 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// ALL-LABEL: warning: test_amdhsa_accum_offset 76// NONGFX9A: error: directive requires gfx90a+ 77// GFX90A: error: .amdhsa_next_free_vgpr directive is required 78// NONAMDHSA: error: unknown directive 79.warning "test_amdhsa_accum_offset" 80.amdhsa_kernel test_amdhsa_accum_offset 81 .amdhsa_accum_offset 4 82.end_amdhsa_kernel 83 84// ALL-LABEL: warning: test_amdhsa_accum_offset_missing 85// NONGFX9A: error: directive requires gfx90a+ 86// GFX90A: error: .amdhsa_accum_offset directive is required 87// NONAMDHSA: error: unknown directive 88.warning "test_amdhsa_accum_offset_missing" 89.amdhsa_kernel test_amdhsa_accum_offset_missing 90 .amdhsa_next_free_sgpr 0 91 .amdhsa_next_free_vgpr 0 92.end_amdhsa_kernel 93 94// ALL-LABEL: warning: test_amdhsa_accum_offset_invalid0 95// NONGFX9A: error: directive requires gfx90a+ 96// GFX90A: error: accum_offset should be in range [4..256] in increments of 4 97// NONAMDHSA: error: unknown directive 98.warning "test_amdhsa_accum_offset_invalid0" 99.amdhsa_kernel test_amdhsa_accum_offset_invalid0 100 .amdhsa_next_free_sgpr 0 101 .amdhsa_next_free_vgpr 0 102 .amdhsa_accum_offset 0 103.end_amdhsa_kernel 104 105// ALL-LABEL: warning: test_amdhsa_accum_offset_invalid5 106// NONGFX9A: error: directive requires gfx90a+ 107// GFX90A: error: accum_offset should be in range [4..256] in increments of 4 108// NONAMDHSA: error: unknown directive 109.warning "test_amdhsa_accum_offset_invalid5" 110.amdhsa_kernel test_amdhsa_accum_offset_invalid5 111 .amdhsa_next_free_sgpr 0 112 .amdhsa_next_free_vgpr 0 113 .amdhsa_accum_offset 5 114.end_amdhsa_kernel 115 116// ALL-LABEL: warning: test_amdhsa_accum_offset_invalid257 117// NONGFX9A: error: directive requires gfx90a+ 118// GFX90A: error: accum_offset should be in range [4..256] in increments of 4 119// NONAMDHSA: error: unknown directive 120.warning "test_amdhsa_accum_offset_invalid257" 121.amdhsa_kernel test_amdhsa_accum_offset_invalid257 122 .amdhsa_next_free_sgpr 0 123 .amdhsa_next_free_vgpr 0 124 .amdhsa_accum_offset 257 125.end_amdhsa_kernel 126 127// ALL-LABEL: warning: test_amdhsa_accum_offset_invalid8 128// NONGFX9A: error: directive requires gfx90a+ 129// GFX90A: error: accum_offset exceeds total VGPR allocation 130// NONAMDHSA: error: unknown directive 131.warning "test_amdhsa_accum_offset_invalid8" 132.amdhsa_kernel test_amdhsa_accum_offset_invalid8 133 .amdhsa_next_free_sgpr 0 134 .amdhsa_next_free_vgpr 0 135 .amdhsa_accum_offset 8 136.end_amdhsa_kernel 137 138// ALL-LABEL: warning: test_amdhsa_tg_split 139// NONGFX90A: error: directive requires gfx90a+ 140// GFX90A: error: .amdhsa_next_free_vgpr directive is required 141// NONAMDHSA: error: unknown directive 142.warning "test_amdhsa_tg_split" 143.amdhsa_kernel test_amdhsa_tg_split 144 .amdhsa_tg_split 1 145.end_amdhsa_kernel 146 147// ALL-LABEL: warning: test_amdhsa_tg_split_invalid 148// NONGFX90A: error: directive requires gfx90a+ 149// GFX90A: error: value out of range 150// NONAMDHSA: error: unknown directive 151.warning "test_amdhsa_tg_split_invalid" 152.amdhsa_kernel test_amdhsa_tg_split_invalid 153 .amdhsa_tg_split 5 154.end_amdhsa_kernel 155 156// ALL-LABEL: warning: test_amdhsa_wavefront_size32 157// NONGFX10: error: directive requires gfx10+ 158// GFX10: error: .amdhsa_next_free_vgpr directive is required 159// NONAMDHSA: error: unknown directive 160.warning "test_amdhsa_wavefront_size32" 161.amdhsa_kernel test_amdhsa_wavefront_size32 162 .amdhsa_wavefront_size32 1 163.end_amdhsa_kernel 164 165// GCN-LABEL: warning: test_amdhsa_wavefront_size32_invalid 166// NONGFX10: error: directive requires gfx10+ 167// GFX10: error: value out of range 168// NONAMDHSA: error: unknown directive 169.warning "test_amdhsa_wavefront_size32_invalid" 170.amdhsa_kernel test_amdhsa_wavefront_size32_invalid 171 .amdhsa_wavefront_size32 5 172.end_amdhsa_kernel 173 174// GCN-LABEL: warning: test_amdhsa_workgroup_processor_mode 175// NONGFX10: error: directive requires gfx10+ 176// GFX10: error: .amdhsa_next_free_vgpr directive is required 177// NONAMDHSA: error: unknown directive 178.warning "test_amdhsa_workgroup_processor_mode" 179.amdhsa_kernel test_amdhsa_workgroup_processor_mode 180 .amdhsa_workgroup_processor_mode 1 181.end_amdhsa_kernel 182 183// GCN-LABEL: warning: test_amdhsa_workgroup_processor_mode_invalid 184// NONGFX10: error: directive requires gfx10+ 185// GFX10: error: value out of range 186// NONAMDHSA: error: unknown directive 187.warning "test_amdhsa_workgroup_processor_mode_invalid" 188.amdhsa_kernel test_amdhsa_workgroup_processor_mode_invalid 189 .amdhsa_workgroup_processor_mode 5 190.end_amdhsa_kernel 191 192// GCN-LABEL: warning: test_amdhsa_memory_ordered 193// NONGFX10: error: directive requires gfx10+ 194// GFX10: error: .amdhsa_next_free_vgpr directive is required 195// NONAMDHSA: error: unknown directive 196.warning "test_amdhsa_memory_ordered" 197.amdhsa_kernel test_amdhsa_memory_ordered 198 .amdhsa_memory_ordered 1 199.end_amdhsa_kernel 200 201// GCN-LABEL: warning: test_amdhsa_memory_ordered_invalid 202// NONGFX10: error: directive requires gfx10+ 203// GFX10: error: value out of range 204// NONAMDHSA: error: unknown directive 205.warning "test_amdhsa_memory_ordered_invalid" 206.amdhsa_kernel test_amdhsa_memory_ordered_invalid 207 .amdhsa_memory_ordered 5 208.end_amdhsa_kernel 209 210// GCN-LABEL: warning: test_amdhsa_forward_progress 211// NONGFX10: error: directive requires gfx10+ 212// GFX10: error: .amdhsa_next_free_vgpr directive is required 213// NONAMDHSA: error: unknown directive 214.warning "test_amdhsa_forward_progress" 215.amdhsa_kernel test_amdhsa_forward_progress 216 .amdhsa_forward_progress 1 217.end_amdhsa_kernel 218 219// GCN-LABEL: warning: test_amdhsa_forward_progress_invalid 220// NONGFX10: error: directive requires gfx10+ 221// GFX10: error: value out of range 222// NONAMDHSA: error: unknown directive 223.warning "test_amdhsa_forward_progress_invalid" 224.amdhsa_kernel test_amdhsa_forward_progress_invalid 225 .amdhsa_forward_progress 5 226.end_amdhsa_kernel 227 228// GCN-LABEL: warning: test_next_free_vgpr_invalid 229// AMDHSA: error: .amdgcn.next_free_{v,s}gpr symbols must be absolute expressions 230// NONAMDHSA-NOT: error: 231.warning "test_next_free_vgpr_invalid" 232.set .amdgcn.next_free_vgpr, "foo" 233v_mov_b32_e32 v0, s0 234 235// GCN-LABEL: warning: test_end 236.warning "test_end" 237