|  | ; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck %s | 
|  |  | 
|  | ; Attribute not specified. | 
|  | ; CHECK-LABEL: {{^}}empty_no_attribute: | 
|  | define amdgpu_kernel void @empty_no_attribute() { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  |  | 
|  | ; Ignore if number of work groups for x dimension is 0. | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_x0: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_x0() #0 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #0 = {"amdgpu-max-num-workgroups"="0,2,3"} | 
|  |  | 
|  | ; Ignore if number of work groups for y dimension is 0. | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_y0: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_y0() #1 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #1 = {"amdgpu-max-num-workgroups"="1,0,3"} | 
|  |  | 
|  | ; Ignore if number of work groups for z dimension is 0. | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_z0: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_z0() #2 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #2 = {"amdgpu-max-num-workgroups"="1,2,0"} | 
|  |  | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_1_2_3: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_1_2_3() #3 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #3 = {"amdgpu-max-num-workgroups"="1,2,3"} | 
|  |  | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_1024_1024_1024: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_1024_1024_1024() #4 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #4 = {"amdgpu-max-num-workgroups"="1024,1024,1024"} | 
|  |  | 
|  |  | 
|  |  | 
|  | ; Ignore if number of work groups for x dimension is 0. | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_x_max: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_x_max() #5 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #5 = {"amdgpu-max-num-workgroups"="4294967295,2,3"} | 
|  |  | 
|  | ; Ignore if number of work groups for y dimension is 0. | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_y_max: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_y_max() #6 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #6 = {"amdgpu-max-num-workgroups"="1,4294967295,3"} | 
|  |  | 
|  | ; Ignore if number of work groups for z dimension is 0. | 
|  | ; CHECK-LABEL: {{^}}empty_max_num_workgroups_z_max: | 
|  | define amdgpu_kernel void @empty_max_num_workgroups_z_max() #7 { | 
|  | entry: | 
|  | ret void | 
|  | } | 
|  | attributes #7 = {"amdgpu-max-num-workgroups"="1,2,4294967295"} | 
|  |  | 
|  |  | 
|  | ; CHECK: .amdgpu_metadata | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .name:           empty_no_attribute | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_y: 2 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_z: 3 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_x0 | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_x: 1 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_z: 3 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_y0 | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_x: 1 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_y: 2 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_z0 | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_x: 1 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_y: 2 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_z: 3 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_1_2_3 | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_x: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_y: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_z: 1024 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_1024_1024_1024 | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_y: 2 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_z: 3 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_x_max | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_x: 1 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_z: 3 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_y_max | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 | 
|  |  | 
|  | ; CHECK: - .args: | 
|  | ; CHECK:        .max_flat_workgroup_size: 1024 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_x: 1 | 
|  | ; CHECK-NEXT:   .max_num_workgroups_y: 2 | 
|  | ; CHECK-NEXT:   .name:           empty_max_num_workgroups_z_max | 
|  | ; CHECK-NEXT:   .private_segment_fixed_size: 0 |