1b1cdada0SFangrui Song; RUN: sed -e "s,SRC_COMPDIR,%/p/Inputs,g" %s > %t.ll 2b1cdada0SFangrui Song; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx802 -filetype=obj -O0 -o %t.o %t.ll 36ed18eaaSFangrui Song; RUN: llvm-objdump --triple=amdgcn-amd-amdhsa --mcpu=gfx802 -d -l %t.o | FileCheck --check-prefix=LINE %t.ll 46ed18eaaSFangrui Song; RUN: llvm-objdump --triple=amdgcn-amd-amdhsa --mcpu=gfx802 -d -S %t.o | FileCheck --check-prefix=SOURCE %t.ll 5b1cdada0SFangrui Song 6b1cdada0SFangrui Song; Prologue. 7b1cdada0SFangrui Song; LINE: source_lines_test{{>?}}: 8b1cdada0SFangrui Song; LINE-NEXT: ; source_lines_test(): 9b1cdada0SFangrui Song; LINE-NEXT: ; {{.*}}source-lines.cl:1 10b1cdada0SFangrui Song; Kernel. 11b1cdada0SFangrui Song; LINE: v_mov_b32_e32 v{{[0-9]+}}, 0x777 12b1cdada0SFangrui Song; LINE: ; {{.*}}source-lines.cl:2 13b1cdada0SFangrui Song; LINE: v_mov_b32_e32 v{{[0-9]+}}, 0x888 14b1cdada0SFangrui Song; LINE: ; {{.*}}source-lines.cl:3 15b1cdada0SFangrui Song; LINE: ; {{.*}}source-lines.cl:4 16b1cdada0SFangrui Song; LINE: v_add_u32_e64 17b1cdada0SFangrui Song; LINE: ; {{.*}}source-lines.cl:5 18b1cdada0SFangrui Song; LINE: flat_store_dword 19b1cdada0SFangrui Song; Epilogue. 20b1cdada0SFangrui Song; LINE: ; {{.*}}source-lines.cl:6 21b1cdada0SFangrui Song; LINE-NEXT: s_endpgm 22b1cdada0SFangrui Song 23b1cdada0SFangrui Song; Prologue. 24b1cdada0SFangrui Song; SOURCE: source_lines_test{{>?}}: 25b1cdada0SFangrui Song; SOURCE-NEXT: ; kernel void source_lines_test(global int *Out) { 26b1cdada0SFangrui Song; Kernel. 27b1cdada0SFangrui Song; SOURCE: v_mov_b32_e32 v{{[0-9]+}}, 0x777 28b1cdada0SFangrui Song; SOURCE: ; int var0 = 0x777; 29b1cdada0SFangrui Song; SOURCE: v_mov_b32_e32 v{{[0-9]+}}, 0x888 30b1cdada0SFangrui Song; SOURCE: ; int var1 = 0x888; 31b1cdada0SFangrui Song; SOURCE: ; int var2 = var0 + var1; 32b1cdada0SFangrui Song; SOURCE: v_add_u32_e64 33b1cdada0SFangrui Song; SOURCE: ; *Out = var2; 34b1cdada0SFangrui Song; SOURCE: flat_store_dword 35b1cdada0SFangrui Song; Epilogue. 36b1cdada0SFangrui Song; SOURCE: ; } 37b1cdada0SFangrui Song; SOURCE-NEXT: s_endpgm 38b1cdada0SFangrui Song 39b1cdada0SFangrui Song; ModuleID = 'source-lines.cl' 40b1cdada0SFangrui Songsource_filename = "source-lines.cl" 41b1cdada0SFangrui Songtarget datalayout = "e-p:32:32-p1:64:64-p2:64:64-p3:32:32-p4:64:64-p5:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-A5" 42b1cdada0SFangrui Songtarget triple = "amdgcn-amd-amdhsa" 43b1cdada0SFangrui Song 44b1cdada0SFangrui Song; Function Attrs: noinline nounwind 45*a273c408SFangrui Songdefine amdgpu_kernel void @source_lines_test(ptr addrspace(1) %Out) #0 !dbg !7 !kernel_arg_addr_space !12 !kernel_arg_access_qual !13 !kernel_arg_type !14 !kernel_arg_base_type !14 !kernel_arg_type_qual !15 { 46b1cdada0SFangrui Songentry: 47*a273c408SFangrui Song %Out.addr = alloca ptr addrspace(1), align 4, addrspace(5) 48b1cdada0SFangrui Song %var0 = alloca i32, align 4, addrspace(5) 49b1cdada0SFangrui Song %var1 = alloca i32, align 4, addrspace(5) 50b1cdada0SFangrui Song %var2 = alloca i32, align 4, addrspace(5) 51*a273c408SFangrui Song store ptr addrspace(1) %Out, ptr addrspace(5) %Out.addr, align 4 52*a273c408SFangrui Song call void @llvm.dbg.declare(metadata ptr addrspace(5) %Out.addr, metadata !16, metadata !17), !dbg !18 53*a273c408SFangrui Song call void @llvm.dbg.declare(metadata ptr addrspace(5) %var0, metadata !19, metadata !17), !dbg !20 54*a273c408SFangrui Song store i32 1911, ptr addrspace(5) %var0, align 4, !dbg !20 55*a273c408SFangrui Song call void @llvm.dbg.declare(metadata ptr addrspace(5) %var1, metadata !21, metadata !17), !dbg !22 56*a273c408SFangrui Song store i32 2184, ptr addrspace(5) %var1, align 4, !dbg !22 57*a273c408SFangrui Song call void @llvm.dbg.declare(metadata ptr addrspace(5) %var2, metadata !23, metadata !17), !dbg !24 58*a273c408SFangrui Song %0 = load i32, ptr addrspace(5) %var0, align 4, !dbg !25 59*a273c408SFangrui Song %1 = load i32, ptr addrspace(5) %var1, align 4, !dbg !26 60b1cdada0SFangrui Song %add = add nsw i32 %0, %1, !dbg !27 61*a273c408SFangrui Song store i32 %add, ptr addrspace(5) %var2, align 4, !dbg !24 62*a273c408SFangrui Song %2 = load i32, ptr addrspace(5) %var2, align 4, !dbg !28 63*a273c408SFangrui Song %3 = load ptr addrspace(1), ptr addrspace(5) %Out.addr, align 4, !dbg !29 64*a273c408SFangrui Song store i32 %2, ptr addrspace(1) %3, align 4, !dbg !30 65b1cdada0SFangrui Song ret void, !dbg !31 66b1cdada0SFangrui Song} 67b1cdada0SFangrui Song 68b1cdada0SFangrui Song; Function Attrs: nounwind readnone 69b1cdada0SFangrui Songdeclare void @llvm.dbg.declare(metadata, metadata, metadata) #1 70b1cdada0SFangrui Song 714ab3041aSserge-sans-pailleattributes #0 = { noinline nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 72b1cdada0SFangrui Songattributes #1 = { nounwind readnone } 73b1cdada0SFangrui Song 74b1cdada0SFangrui Song!llvm.dbg.cu = !{!0} 75b1cdada0SFangrui Song!opencl.ocl.version = !{!3} 76b1cdada0SFangrui Song!llvm.module.flags = !{!4, !5} 77b1cdada0SFangrui Song!llvm.ident = !{!6} 78b1cdada0SFangrui Song 79b1cdada0SFangrui Song!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 5.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2) 80b1cdada0SFangrui Song!1 = !DIFile(filename: "source-lines.cl", directory: "SRC_COMPDIR") 81b1cdada0SFangrui Song!2 = !{} 82b1cdada0SFangrui Song!3 = !{i32 1, i32 0} 83b1cdada0SFangrui Song!4 = !{i32 2, !"Dwarf Version", i32 2} 84b1cdada0SFangrui Song!5 = !{i32 2, !"Debug Info Version", i32 3} 85b1cdada0SFangrui Song!6 = !{!"clang version 5.0.0"} 86b1cdada0SFangrui Song!7 = distinct !DISubprogram(name: "source_lines_test", scope: !1, file: !1, line: 1, type: !8, isLocal: false, isDefinition: true, scopeLine: 1, flags: DIFlagPrototyped, isOptimized: false, unit: !0, retainedNodes: !2) 87b1cdada0SFangrui Song!8 = !DISubroutineType(types: !9) 88b1cdada0SFangrui Song!9 = !{null, !10} 89b1cdada0SFangrui Song!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64) 90b1cdada0SFangrui Song!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 91b1cdada0SFangrui Song!12 = !{i32 1} 92b1cdada0SFangrui Song!13 = !{!"none"} 93b1cdada0SFangrui Song!14 = !{!"int*"} 94b1cdada0SFangrui Song!15 = !{!""} 95b1cdada0SFangrui Song!16 = !DILocalVariable(name: "Out", arg: 1, scope: !7, file: !1, line: 1, type: !10) 96b1cdada0SFangrui Song!17 = !DIExpression() 97b1cdada0SFangrui Song!18 = !DILocation(line: 1, column: 43, scope: !7) 98b1cdada0SFangrui Song!19 = !DILocalVariable(name: "var0", scope: !7, file: !1, line: 2, type: !11) 99b1cdada0SFangrui Song!20 = !DILocation(line: 2, column: 7, scope: !7) 100b1cdada0SFangrui Song!21 = !DILocalVariable(name: "var1", scope: !7, file: !1, line: 3, type: !11) 101b1cdada0SFangrui Song!22 = !DILocation(line: 3, column: 7, scope: !7) 102b1cdada0SFangrui Song!23 = !DILocalVariable(name: "var2", scope: !7, file: !1, line: 4, type: !11) 103b1cdada0SFangrui Song!24 = !DILocation(line: 4, column: 7, scope: !7) 104b1cdada0SFangrui Song!25 = !DILocation(line: 4, column: 14, scope: !7) 105b1cdada0SFangrui Song!26 = !DILocation(line: 4, column: 21, scope: !7) 106b1cdada0SFangrui Song!27 = !DILocation(line: 4, column: 19, scope: !7) 107b1cdada0SFangrui Song!28 = !DILocation(line: 5, column: 10, scope: !7) 108b1cdada0SFangrui Song!29 = !DILocation(line: 5, column: 4, scope: !7) 109b1cdada0SFangrui Song!30 = !DILocation(line: 5, column: 8, scope: !7) 110b1cdada0SFangrui Song!31 = !DILocation(line: 6, column: 1, scope: !7) 111