1;; Test disassembly for GRANULATED_WORKITEM_VGPR_COUNT in the kernel descriptor. 2 3; RUN: rm -rf %t && split-file %s %t && cd %t 4 5;--- 1.s 6; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx908 < 1.s > 1.o 7; RUN: echo '.amdhsa_code_object_version 5' > 1-disasm.s 8; RUN: llvm-objdump --disassemble-symbols=kernel.kd 1.o | tail -n +7 | tee -a 1-disasm.s | FileCheck 1.s 9; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx908 < 1-disasm.s > 1-disasm.o 10; RUN: cmp 1.o 1-disasm.o 11; CHECK: .amdhsa_kernel kernel 12; CHECK-NEXT: .amdhsa_group_segment_fixed_size 0 13; CHECK-NEXT: .amdhsa_private_segment_fixed_size 0 14; CHECK-NEXT: .amdhsa_kernarg_size 0 15; CHECK-NEXT: .amdhsa_next_free_vgpr 24 16; CHECK-NEXT: .amdhsa_reserve_vcc 0 17; CHECK-NEXT: .amdhsa_reserve_flat_scratch 0 18; CHECK-NEXT: .amdhsa_reserve_xnack_mask 0 19; CHECK-NEXT: .amdhsa_next_free_sgpr 8 20; CHECK-NEXT: .amdhsa_float_round_mode_32 0 21; CHECK-NEXT: .amdhsa_float_round_mode_16_64 0 22; CHECK-NEXT: .amdhsa_float_denorm_mode_32 0 23; CHECK-NEXT: .amdhsa_float_denorm_mode_16_64 3 24; CHECK-NEXT: .amdhsa_dx10_clamp 1 25; CHECK-NEXT: .amdhsa_ieee_mode 1 26; CHECK-NEXT: .amdhsa_fp16_overflow 0 27; CHECK-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset 0 28; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_x 1 29; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_y 0 30; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_z 0 31; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_info 0 32; CHECK-NEXT: .amdhsa_system_vgpr_workitem_id 0 33; CHECK-NEXT: .amdhsa_exception_fp_ieee_invalid_op 0 34; CHECK-NEXT: .amdhsa_exception_fp_denorm_src 0 35; CHECK-NEXT: .amdhsa_exception_fp_ieee_div_zero 0 36; CHECK-NEXT: .amdhsa_exception_fp_ieee_overflow 0 37; CHECK-NEXT: .amdhsa_exception_fp_ieee_underflow 0 38; CHECK-NEXT: .amdhsa_exception_fp_ieee_inexact 0 39; CHECK-NEXT: .amdhsa_exception_int_div_zero 0 40; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_buffer 0 41; CHECK-NEXT: .amdhsa_user_sgpr_dispatch_ptr 0 42; CHECK-NEXT: .amdhsa_user_sgpr_queue_ptr 0 43; CHECK-NEXT: .amdhsa_user_sgpr_kernarg_segment_ptr 0 44; CHECK-NEXT: .amdhsa_user_sgpr_dispatch_id 0 45; CHECK-NEXT: .amdhsa_user_sgpr_flat_scratch_init 0 46; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_size 0 47; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0 48; CHECK-NEXT: .end_amdhsa_kernel 49.amdhsa_code_object_version 5 50.amdhsa_kernel kernel 51 .amdhsa_next_free_vgpr 23 52 .amdhsa_next_free_sgpr 0 53.end_amdhsa_kernel 54 55;--- 2.s 56; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx908 < 2.s > 2.o 57; RUN: echo '.amdhsa_code_object_version 5' > 2-disasm.s 58; RUN: llvm-objdump --disassemble-symbols=kernel.kd 2.o | tail -n +7 | tee -a 2-disasm.s | FileCheck 2.s 59; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx908 < 2-disasm.s > 2-disasm.o 60; RUN: cmp 2.o 2-disasm.o 61; CHECK: .amdhsa_kernel kernel 62; CHECK-NEXT: .amdhsa_group_segment_fixed_size 0 63; CHECK-NEXT: .amdhsa_private_segment_fixed_size 0 64; CHECK-NEXT: .amdhsa_kernarg_size 0 65; CHECK-NEXT: .amdhsa_next_free_vgpr 16 66; CHECK-NEXT: .amdhsa_reserve_vcc 0 67; CHECK-NEXT: .amdhsa_reserve_flat_scratch 0 68; CHECK-NEXT: .amdhsa_reserve_xnack_mask 0 69; CHECK-NEXT: .amdhsa_next_free_sgpr 8 70; CHECK-NEXT: .amdhsa_float_round_mode_32 0 71; CHECK-NEXT: .amdhsa_float_round_mode_16_64 0 72; CHECK-NEXT: .amdhsa_float_denorm_mode_32 0 73; CHECK-NEXT: .amdhsa_float_denorm_mode_16_64 3 74; CHECK-NEXT: .amdhsa_dx10_clamp 1 75; CHECK-NEXT: .amdhsa_ieee_mode 1 76; CHECK-NEXT: .amdhsa_fp16_overflow 0 77; CHECK-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset 0 78; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_x 1 79; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_y 0 80; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_z 0 81; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_info 0 82; CHECK-NEXT: .amdhsa_system_vgpr_workitem_id 0 83; CHECK-NEXT: .amdhsa_exception_fp_ieee_invalid_op 0 84; CHECK-NEXT: .amdhsa_exception_fp_denorm_src 0 85; CHECK-NEXT: .amdhsa_exception_fp_ieee_div_zero 0 86; CHECK-NEXT: .amdhsa_exception_fp_ieee_overflow 0 87; CHECK-NEXT: .amdhsa_exception_fp_ieee_underflow 0 88; CHECK-NEXT: .amdhsa_exception_fp_ieee_inexact 0 89; CHECK-NEXT: .amdhsa_exception_int_div_zero 0 90; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_buffer 0 91; CHECK-NEXT: .amdhsa_user_sgpr_dispatch_ptr 0 92; CHECK-NEXT: .amdhsa_user_sgpr_queue_ptr 0 93; CHECK-NEXT: .amdhsa_user_sgpr_kernarg_segment_ptr 0 94; CHECK-NEXT: .amdhsa_user_sgpr_dispatch_id 0 95; CHECK-NEXT: .amdhsa_user_sgpr_flat_scratch_init 0 96; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_size 0 97; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0 98; CHECK-NEXT: .end_amdhsa_kernel 99.amdhsa_code_object_version 5 100.amdhsa_kernel kernel 101 .amdhsa_next_free_vgpr 14 102 .amdhsa_next_free_sgpr 0 103.end_amdhsa_kernel 104 105;--- 3.s 106; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx908 < 3.s > 3.o 107; RUN: echo '.amdhsa_code_object_version 5' > 3-disasm.s 108; RUN: llvm-objdump --disassemble-symbols=kernel.kd 3.o | tail -n +7 | tee -a 3-disasm.s | FileCheck 3.s 109; RUN: llvm-mc --triple=amdgcn-amd-amdhsa -mattr=-xnack -filetype=obj -mcpu=gfx908 < 3-disasm.s > 3-disasm.o 110; RUN: cmp 3.o 3-disasm.o 111; CHECK: .amdhsa_kernel kernel 112; CHECK-NEXT: .amdhsa_group_segment_fixed_size 0 113; CHECK-NEXT: .amdhsa_private_segment_fixed_size 0 114; CHECK-NEXT: .amdhsa_kernarg_size 0 115; CHECK-NEXT: .amdhsa_next_free_vgpr 32 116; CHECK-NEXT: .amdhsa_reserve_vcc 0 117; CHECK-NEXT: .amdhsa_reserve_flat_scratch 0 118; CHECK-NEXT: .amdhsa_reserve_xnack_mask 0 119; CHECK-NEXT: .amdhsa_next_free_sgpr 8 120; CHECK-NEXT: .amdhsa_float_round_mode_32 0 121; CHECK-NEXT: .amdhsa_float_round_mode_16_64 0 122; CHECK-NEXT: .amdhsa_float_denorm_mode_32 0 123; CHECK-NEXT: .amdhsa_float_denorm_mode_16_64 3 124; CHECK-NEXT: .amdhsa_dx10_clamp 1 125; CHECK-NEXT: .amdhsa_ieee_mode 1 126; CHECK-NEXT: .amdhsa_fp16_overflow 0 127; CHECK-NEXT: .amdhsa_system_sgpr_private_segment_wavefront_offset 0 128; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_x 1 129; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_y 0 130; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_id_z 0 131; CHECK-NEXT: .amdhsa_system_sgpr_workgroup_info 0 132; CHECK-NEXT: .amdhsa_system_vgpr_workitem_id 0 133; CHECK-NEXT: .amdhsa_exception_fp_ieee_invalid_op 0 134; CHECK-NEXT: .amdhsa_exception_fp_denorm_src 0 135; CHECK-NEXT: .amdhsa_exception_fp_ieee_div_zero 0 136; CHECK-NEXT: .amdhsa_exception_fp_ieee_overflow 0 137; CHECK-NEXT: .amdhsa_exception_fp_ieee_underflow 0 138; CHECK-NEXT: .amdhsa_exception_fp_ieee_inexact 0 139; CHECK-NEXT: .amdhsa_exception_int_div_zero 0 140; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_buffer 0 141; CHECK-NEXT: .amdhsa_user_sgpr_dispatch_ptr 0 142; CHECK-NEXT: .amdhsa_user_sgpr_queue_ptr 0 143; CHECK-NEXT: .amdhsa_user_sgpr_kernarg_segment_ptr 0 144; CHECK-NEXT: .amdhsa_user_sgpr_dispatch_id 0 145; CHECK-NEXT: .amdhsa_user_sgpr_flat_scratch_init 0 146; CHECK-NEXT: .amdhsa_user_sgpr_private_segment_size 0 147; CHECK-NEXT: .amdhsa_uses_dynamic_stack 0 148; CHECK-NEXT: .end_amdhsa_kernel 149.amdhsa_code_object_version 5 150.amdhsa_kernel kernel 151 .amdhsa_next_free_vgpr 32 152 .amdhsa_next_free_sgpr 0 153.end_amdhsa_kernel 154