| # RUN: yaml2obj %s -o %t |
| # RUN: llvm-objdump %t -d --symbolize-operands --no-show-raw-insn --no-leading-addr | \ |
| # RUN: FileCheck %s |
| |
| ## Expect to find the branch labels. |
| # CHECK: <break_cond_is_arg>: |
| # CHECK: s_branch L1 |
| # CHECK: <L0>: |
| # CHECK: s_cbranch_execz L2 |
| # CHECK: <L1>: |
| # CHECK: s_branch L0 |
| # CHECKL <L2>: |
| |
| # I created this YAML starting with this LLVM IR: |
| # |
| # define void @break_cond_is_arg(i32 %arg, i1 %breakcond) { |
| # entry: |
| # br label %loop |
| # loop: |
| # %tmp23phi = phi i32 [ %tmp23, %endif ], [ 0, %entry ] |
| # %tmp23 = add nuw i32 %tmp23phi, 1 |
| # %tmp27 = icmp ult i32 %arg, %tmp23 |
| # br i1 %tmp27, label %then, label %endif |
| # then: ; preds = %bb |
| # call void @llvm.amdgcn.raw.buffer.store.f32(float undef, <4 x i32> undef, i32 0, i32 undef, i32 0) |
| # br label %endif |
| # endif: ; preds = %bb28, %bb |
| # br i1 %breakcond, label %loop, label %loopexit |
| # loopexit: |
| # ret void |
| # } |
| # |
| # declare void @llvm.amdgcn.raw.buffer.store.f32(float, <4 x i32>, i32, i32, i32 immarg) #0 |
| # |
| # attributes #0 = { nounwind writeonly } |
| # |
| # I compiled it to a relocatable ELF: |
| # |
| # llc -march=amdgcn -mcpu=gfx1030 llvm/a.ll -filetype=obj -o a.elf |
| # |
| # then converted it to YAML: |
| # |
| # obj2yaml a.elf |
| # |
| # then manually removed the BB0_1 etc local symbols. |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_REL |
| Machine: EM_AMDGPU |
| Flags: [ EF_AMDGPU_MACH_AMDGCN_GFX1030 ] |
| Sections: |
| - Name: .text |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| AddressAlign: 0x4 |
| Content: 00008CBF0000FDBB81020236810385BE800384BE8102847D6AC10689040082BF7E077E88058105817E047E8A080088BF0500887D7E060787070404886A3C87BEF7FF88BF000070E000000104F4FF82BF7E047E880000FDBB1E2080BE |
| - Name: .AMDGPU.config |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| Content: 48B80000000000004CB800000000000060B800000000000004000000000000000800000000000000 |
| - Name: .note.GNU-stack |
| Type: SHT_PROGBITS |
| AddressAlign: 0x1 |
| - Name: .note |
| Type: SHT_NOTE |
| AddressAlign: 0x4 |
| Notes: |
| - Name: AMD |
| Desc: 616D6467636E2D756E6B6E6F776E2D6C696E75782D676E752D67667831303330 |
| Type: NT_FREEBSD_PROCSTAT_GROUPS |
| - Type: SectionHeaderTable |
| Sections: |
| - Name: .strtab |
| - Name: .shstrtab |
| - Name: .text |
| - Name: .AMDGPU.config |
| - Name: .note.GNU-stack |
| - Name: .note |
| - Name: .symtab |
| Symbols: |
| - Name: break_cond_is_arg |
| Type: STT_FUNC |
| Section: .text |
| Binding: STB_GLOBAL |
| Size: 0x5C |
| ... |