blob: 695c3cef72fdc3745833ecffd226bb3cbc2fbb3e [file]
# REQUIRES: amdgpu-registered-target
# Regression test for:
# - DW_AT_ranges not being read properly
# - Instructions at DW_AT_high_pc of a scope incorrectly included in the scope
# test.hlsl
# 01 RWBuffer<float> u0 : register(u0);
# 02 RWBuffer<float> u1 : register(u1);
# 03
# 04 [RootSignature("DescriptorTable(UAV(u0,numDescriptors=2))")]
# 05 [numthreads(64,1,1)]
# 06 void main(uint3 dtid : SV_DispatchThreadID) {
# 07 float my_var = u0[dtid.x];
# 08 [loop]
# 09 for (int i = 0; i < 10; i++) {
# 10 float my_local_var = i*2;
# 11 my_var += my_local_var;
# 12 }
# 13 u1[dtid.x] = my_var;
# 14 }
# RUN: llvm-mc %s --mcpu=gfx1100 -triple=amdgcn-amd-amdpal -filetype=obj -o - | \
# RUN: llvm-debuginfo-analyzer --attribute=all \
# RUN: --print=all \
# RUN: --output-sort=offset \
# RUN: - 2>&1 | \
# RUN: FileCheck %s
# Make sure these two ranges are present and point to the correct offsets
# CHECK: [005] {Range} Lines 10:9 [0x00000000b0:0x00000000c8]
# CHECK: [005] {Range} Lines 11:13 [0x00000000f4:0x0000000114]
# Make sure the offset 0x114 does not show up at the scope level 005 and 004
# CHECK-NOT: [0x0000000114][005]
# CHECK-NOT: [0x0000000114][004]
# CHECK: [0x0000000114][003]
.file 0 "test.hlsl"
.text
.globl _amdgpu_cs_main
.p2align 8
.type _amdgpu_cs_main,@function
_amdgpu_cs_main:
.Lfunc_begin0:
.loc 0 6 0
.cfi_sections .debug_frame
.cfi_startproc
v_writelane_b32 v1, s4, 0
s_mov_b32 s0, s2
s_mov_b32 s4, s1
v_readlane_b32 s1, v1, 0
s_mov_b32 s8, s0
.Ltmp0:
.loc 0 6 24 prologue_end
s_getpc_b64 s[2:3]
s_mov_b32 s1, 0x3ff
v_and_b32_e64 v0, v0, s1
s_mov_b32 s1, 6
v_lshl_add_u32 v0, s0, s1, v0
scratch_store_b32 off, v0, off offset:4
.Ltmp1:
.loc 0 0 24 is_stmt 0
s_mov_b32 s1, -1
s_mov_b32 s0, 0
s_mov_b32 s6, s0
s_mov_b32 s7, s1
.loc 0 7 25 is_stmt 1
s_and_b64 s[2:3], s[2:3], s[6:7]
s_mov_b32 s1, 0
s_mov_b32 s5, s1
s_or_b64 s[2:3], s[2:3], s[4:5]
v_writelane_b32 v1, s2, 1
v_writelane_b32 v1, s3, 2
.Ltmp2:
s_load_b128 s[4:7], s[2:3], 0x0
s_waitcnt lgkmcnt(0)
buffer_load_format_x v0, v0, s[4:7], s0 idxen
.Ltmp3:
.loc 0 9 10
s_waitcnt vmcnt(0)
scratch_store_b32 off, v0, off
.Ltmp4:
v_writelane_b32 v1, s0, 3
.Ltmp5:
.LBB0_1:
.loc 0 0 10 is_stmt 0
v_readlane_b32 s0, v1, 3
scratch_load_b32 v0, off, off
.Ltmp6:
s_mov_b32 s1, 1
.Ltmp7:
.loc 0 10 34 is_stmt 1
s_lshl_b32 s2, s0, s1
.loc 0 10 33 is_stmt 0
v_cvt_f32_u32_e64 v2, s2
.Ltmp8:
.loc 0 11 19 is_stmt 1
s_waitcnt vmcnt(0)
v_add_f32_e64 v0, v0, v2
.Ltmp9:
.loc 0 9 35
s_add_i32 s0, s0, s1
.Ltmp10:
.loc 0 0 35 is_stmt 0
s_mov_b32 s1, 10
.loc 0 9 28
s_cmp_lg_u32 s0, s1
v_mov_b32_e32 v2, v0
.Ltmp11:
.loc 0 0 28
scratch_store_b32 off, v2, off
v_writelane_b32 v1, s0, 3
.Ltmp12:
.loc 0 9 10
scratch_store_b32 off, v0, off offset:8
.Ltmp13:
s_cbranch_scc1 .LBB0_1
.Ltmp14:
.loc 0 11 19 is_stmt 1
v_readlane_b32 s0, v1, 1
.Ltmp15:
v_readlane_b32 s1, v1, 2
scratch_load_b32 v0, off, off offset:4
scratch_load_b32 v6, off, off offset:8
.Ltmp16:
.loc 0 13 21
s_waitcnt vmcnt(0)
v_mov_b32_e32 v2, v6
v_mov_b32_e32 v3, v6
v_mov_b32_e32 v4, v6
v_mov_b32_e32 v5, v6
s_load_b128 s[0:3], s[0:1], 0x20
s_mov_b32 s4, 0
s_waitcnt lgkmcnt(0)
buffer_store_format_xyzw v[2:5], v0, s[0:3], s4 idxen
.loc 0 14 8
s_endpgm
.Ltmp17:
.Lfunc_end0:
.size _amdgpu_cs_main, .Lfunc_end0-_amdgpu_cs_main
.cfi_endproc
.set _amdgpu_cs_main.num_vgpr, 7
.set _amdgpu_cs_main.num_agpr, 0
.set _amdgpu_cs_main.numbered_sgpr, 11
.set _amdgpu_cs_main.num_named_barrier, 0
.set _amdgpu_cs_main.private_seg_size, 16
.set _amdgpu_cs_main.uses_vcc, 0
.set _amdgpu_cs_main.uses_flat_scratch, 0
.set _amdgpu_cs_main.has_dyn_sized_stack, 0
.set _amdgpu_cs_main.has_recursion, 0
.set _amdgpu_cs_main.has_indirect_call, 0
.set _amdgpu_cs_main.num_vgpr_rank_sum, 0
.p2alignl 7, 3214868480
.fill 96, 4, 3214868480
.section .AMDGPU.gpr_maximums,"",@progbits
.set amdgpu.max_num_vgpr, 0
.set amdgpu.max_num_agpr, 0
.set amdgpu.max_num_sgpr, 0
.text
.section .debug_loclists,"",@progbits
.long .Ldebug_list_header_end0-.Ldebug_list_header_start0
.Ldebug_list_header_start0:
.short 5
.byte 8
.byte 0
.long 4
.Lloclists_table_base0:
.long .Ldebug_loc0-.Lloclists_table_base0
.long .Ldebug_loc1-.Lloclists_table_base0
.long .Ldebug_loc2-.Lloclists_table_base0
.long .Ldebug_loc3-.Lloclists_table_base0
.Ldebug_loc0:
.byte 4
.uleb128 .Ltmp1-.Lfunc_begin0
.uleb128 .Ltmp3-.Lfunc_begin0
.byte 5
.byte 144
.byte 128
.byte 20
.byte 147
.byte 4
.byte 0
.Ldebug_loc1:
.byte 4
.uleb128 .Ltmp3-.Lfunc_begin0
.uleb128 .Ltmp4-.Lfunc_begin0
.byte 3
.byte 144
.byte 128
.byte 20
.byte 4
.uleb128 .Ltmp6-.Lfunc_begin0
.uleb128 .Ltmp13-.Lfunc_begin0
.byte 3
.byte 144
.byte 128
.byte 20
.byte 4
.uleb128 .Ltmp16-.Lfunc_begin0
.uleb128 .Lfunc_end0-.Lfunc_begin0
.byte 3
.byte 144
.byte 134
.byte 20
.byte 0
.Ldebug_loc2:
.byte 4
.uleb128 .Ltmp2-.Lfunc_begin0
.uleb128 .Ltmp5-.Lfunc_begin0
.byte 3
.byte 17
.byte 0
.byte 159
.byte 4
.uleb128 .Ltmp6-.Lfunc_begin0
.uleb128 .Ltmp15-.Lfunc_begin0
.byte 2
.byte 144
.byte 32
.byte 0
.Ldebug_loc3:
.byte 4
.uleb128 .Ltmp8-.Lfunc_begin0
.uleb128 .Ltmp11-.Lfunc_begin0
.byte 3
.byte 144
.byte 130
.byte 20
.byte 0
.Ldebug_list_header_end0:
.section .debug_abbrev,"",@progbits
.byte 1
.byte 17
.byte 1
.byte 37
.byte 37
.byte 19
.byte 5
.byte 3
.byte 37
.byte 114
.byte 23
.byte 16
.byte 23
.byte 17
.byte 27
.byte 18
.byte 6
.byte 115
.byte 23
.byte 116
.byte 23
.ascii "\214\001"
.byte 23
.byte 0
.byte 0
.byte 2
.byte 52
.byte 0
.byte 3
.byte 37
.byte 73
.byte 19
.byte 63
.byte 25
.byte 58
.byte 11
.byte 59
.byte 11
.byte 110
.byte 37
.byte 0
.byte 0
.byte 3
.byte 2
.byte 1
.byte 3
.byte 37
.byte 11
.byte 11
.byte 58
.byte 11
.byte 59
.byte 11
.ascii "\210\001"
.byte 15
.byte 0
.byte 0
.byte 4
.byte 47
.byte 0
.byte 73
.byte 19
.byte 3
.byte 37
.byte 0
.byte 0
.byte 5
.byte 36
.byte 0
.byte 3
.byte 37
.byte 62
.byte 11
.byte 11
.byte 11
.byte 0
.byte 0
.byte 6
.byte 46
.byte 1
.byte 17
.byte 27
.byte 18
.byte 6
.byte 3
.byte 37
.byte 58
.byte 11
.byte 59
.byte 11
.byte 63
.byte 25
.byte 0
.byte 0
.byte 7
.byte 5
.byte 0
.byte 2
.byte 34
.byte 3
.byte 37
.byte 58
.byte 11
.byte 59
.byte 11
.byte 73
.byte 19
.byte 0
.byte 0
.byte 8
.byte 52
.byte 0
.byte 2
.byte 34
.byte 3
.byte 37
.byte 58
.byte 11
.byte 59
.byte 11
.byte 73
.byte 19
.byte 0
.byte 0
.byte 9
.byte 11
.byte 1
.byte 17
.byte 27
.byte 18
.byte 6
.byte 0
.byte 0
.byte 10
.byte 11
.byte 1
.byte 85
.byte 35
.byte 0
.byte 0
.byte 11
.byte 22
.byte 0
.byte 73
.byte 19
.byte 3
.byte 37
.byte 0
.byte 0
.byte 12
.byte 2
.byte 1
.byte 3
.byte 37
.byte 11
.byte 11
.ascii "\210\001"
.byte 15
.byte 0
.byte 0
.byte 13
.byte 48
.byte 0
.byte 73
.byte 19
.byte 3
.byte 37
.byte 28
.byte 13
.byte 0
.byte 0
.byte 14
.byte 13
.byte 0
.byte 3
.byte 37
.byte 73
.byte 19
.ascii "\210\001"
.byte 15
.byte 56
.byte 11
.byte 50
.byte 11
.byte 0
.byte 0
.byte 0
.section .debug_info,"",@progbits
.Lcu_begin0:
.long .Ldebug_info_end0-.Ldebug_info_start0
.Ldebug_info_start0:
.short 5
.byte 1
.byte 8
.long .debug_abbrev
.byte 1
.byte 0
.short 4
.byte 1
.long .Lstr_offsets_base0
.long .Lline_table_start0
.byte 0
.long .Lfunc_end0-.Lfunc_begin0
.long .Laddr_table_base0
.long .Lrnglists_table_base0
.long .Lloclists_table_base0
.byte 2
.byte 2
.long 51
.byte 0
.byte 1
.byte 6
.byte 3
.byte 5
.byte 4
.byte 0
.byte 1
.byte 4
.byte 4
.long 64
.byte 4
.byte 0
.byte 5
.byte 3
.byte 4
.byte 4
.byte 2
.byte 7
.long 51
.byte 0
.byte 2
.byte 8
.byte 6
.byte 0
.long .Lfunc_end0-.Lfunc_begin0
.byte 9
.byte 0
.byte 6
.byte 7
.byte 0
.byte 10
.byte 0
.byte 6
.long 133
.byte 8
.byte 1
.byte 19
.byte 0
.byte 7
.long 64
.byte 9
.byte 1
.long .Ltmp16-.Ltmp3
.byte 8
.byte 2
.byte 20
.byte 0
.byte 9
.long 188
.byte 10
.byte 0
.byte 8
.byte 3
.byte 21
.byte 0
.byte 10
.long 64
.byte 0
.byte 0
.byte 0
.byte 11
.long 139
.byte 18
.byte 12
.byte 17
.byte 12
.byte 4
.byte 4
.long 184
.byte 4
.byte 13
.long 188
.byte 13
.byte 3
.byte 14
.byte 14
.long 184
.byte 4
.byte 0
.byte 1
.byte 14
.byte 15
.long 184
.byte 4
.byte 4
.byte 1
.byte 14
.byte 16
.long 184
.byte 4
.byte 8
.byte 1
.byte 0
.byte 5
.byte 11
.byte 7
.byte 4
.byte 5
.byte 12
.byte 5
.byte 4
.byte 0
.Ldebug_info_end0:
.section .debug_rnglists,"",@progbits
.long .Ldebug_list_header_end1-.Ldebug_list_header_start1
.Ldebug_list_header_start1:
.short 5
.byte 8
.byte 0
.long 1
.Lrnglists_table_base0:
.long .Ldebug_ranges0-.Lrnglists_table_base0
.Ldebug_ranges0:
.byte 4
.uleb128 .Ltmp7-.Lfunc_begin0
.uleb128 .Ltmp9-.Lfunc_begin0
.byte 4
.uleb128 .Ltmp14-.Lfunc_begin0
.uleb128 .Ltmp16-.Lfunc_begin0
.byte 0
.Ldebug_list_header_end1:
.section .debug_str_offsets,"",@progbits
.long 92
.short 5
.short 0
.Lstr_offsets_base0:
.section .debug_str,"MS",@progbits,1
.Linfo_string0:
.asciz "dxc"
.Linfo_string1:
.asciz "test.hlsl"
.Linfo_string2:
.asciz "u0"
.Linfo_string3:
.asciz "RWBuffer<float>"
.Linfo_string4:
.asciz "float"
.Linfo_string5:
.asciz "element"
.Linfo_string6:
.asciz "?u0@@3V?$RWBuffer@M@@A"
.Linfo_string7:
.asciz "u1"
.Linfo_string8:
.asciz "?u1@@3V?$RWBuffer@M@@A"
.Linfo_string9:
.asciz "main"
.Linfo_string10:
.asciz "dtid"
.Linfo_string11:
.asciz "uint3"
.Linfo_string12:
.asciz "vector<unsigned int, 3>"
.Linfo_string13:
.asciz "unsigned int"
.Linfo_string14:
.asciz "int"
.Linfo_string15:
.asciz "element_count"
.Linfo_string16:
.asciz "x"
.Linfo_string17:
.asciz "y"
.Linfo_string18:
.asciz "z"
.Linfo_string19:
.asciz "my_var"
.Linfo_string20:
.asciz "i"
.Linfo_string21:
.asciz "my_local_var"
.section .debug_str_offsets,"",@progbits
.long .Linfo_string0
.long .Linfo_string1
.long .Linfo_string2
.long .Linfo_string4
.long .Linfo_string5
.long .Linfo_string3
.long .Linfo_string6
.long .Linfo_string7
.long .Linfo_string8
.long .Linfo_string9
.long .Linfo_string10
.long .Linfo_string13
.long .Linfo_string14
.long .Linfo_string15
.long .Linfo_string16
.long .Linfo_string17
.long .Linfo_string18
.long .Linfo_string12
.long .Linfo_string11
.long .Linfo_string19
.long .Linfo_string20
.long .Linfo_string21
.section .debug_addr,"",@progbits
.long .Ldebug_addr_end0-.Ldebug_addr_start0
.Ldebug_addr_start0:
.short 5
.byte 8
.byte 0
.Laddr_table_base0:
.quad .Lfunc_begin0
.quad .Ltmp3
.Ldebug_addr_end0:
.section .debug_names,"",@progbits
.section ".note.GNU-stack","",@progbits
.section .debug_line,"",@progbits
.Lline_table_start0: