diff options
Diffstat (limited to 'test/Object/AMDGPU')
| -rw-r--r-- | test/Object/AMDGPU/elf-definitios.yaml | 7 | ||||
| -rw-r--r-- | test/Object/AMDGPU/elf32-unknown.yaml | 11 | ||||
| -rw-r--r-- | test/Object/AMDGPU/elf64-relocs.yaml | 66 | ||||
| -rw-r--r-- | test/Object/AMDGPU/elf64-unknown.yaml | 11 | ||||
| -rw-r--r-- | test/Object/AMDGPU/lit.local.cfg | 2 | ||||
| -rw-r--r-- | test/Object/AMDGPU/objdump.s | 75 |
6 files changed, 170 insertions, 2 deletions
diff --git a/test/Object/AMDGPU/elf-definitios.yaml b/test/Object/AMDGPU/elf-definitios.yaml index 5f5e200b49b3..819786aa1902 100644 --- a/test/Object/AMDGPU/elf-definitios.yaml +++ b/test/Object/AMDGPU/elf-definitios.yaml @@ -1,6 +1,8 @@ -# RUN: yaml2obj -format=elf %s > %t.o +# RUN: yaml2obj %s > %t.o # RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s +# CHECK: Format: ELF64-amdgpu-hsacobj +# CHECK: Arch: amdgcn # CHECK: Machine: EM_AMDGPU (0xE0) # CHECK: Sections [ # CHECK: Section { @@ -12,12 +14,13 @@ # CHECK: SHF_AMDGPU_HSA_READONLY (0x200000) # CHECK: } ---- +--- !ELF FileHeader: Class: ELFCLASS64 Data: ELFDATA2LSB Type: ET_REL Machine: EM_AMDGPU + OSABI: ELFOSABI_AMDGPU_HSA Sections: - Name: .shf_amdgpu diff --git a/test/Object/AMDGPU/elf32-unknown.yaml b/test/Object/AMDGPU/elf32-unknown.yaml new file mode 100644 index 000000000000..c4305950607e --- /dev/null +++ b/test/Object/AMDGPU/elf32-unknown.yaml @@ -0,0 +1,11 @@ +# RUN: yaml2obj %s > %t.o +# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s + +# CHECK: Format: ELF32-amdgpu + +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU diff --git a/test/Object/AMDGPU/elf64-relocs.yaml b/test/Object/AMDGPU/elf64-relocs.yaml new file mode 100644 index 000000000000..896fcdbefa09 --- /dev/null +++ b/test/Object/AMDGPU/elf64-relocs.yaml @@ -0,0 +1,66 @@ +# RUN: yaml2obj %s > %t +# RUN: llvm-readobj -r %t | FileCheck %s + +# CHECK: Relocations [ +# CHECK: Section (2) .rela.text { +# CHECK: 0x0 R_AMDGPU_NONE main 0x0 +# CHECK: 0x8 R_AMDGPU_ABS32_LO - 0x0 +# CHECK: 0x10 R_AMDGPU_ABS32_HI - 0x0 +# CHECK: 0x18 R_AMDGPU_ABS64 - 0x0 +# CHECK: 0x20 R_AMDGPU_REL32 - 0x0 +# CHECK: 0x28 R_AMDGPU_REL64 - 0x0 +# CHECK: 0x30 R_AMDGPU_ABS32 - 0x0 +# CHECK: } +# CHECK: ] + +!ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU +Sections: + - Type: SHT_PROGBITS + Name: .text + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x08 + Content: 0000000000000000 + - Type: SHT_RELA + Name: .rela.text + Link: .symtab + Info: .text + AddressAlign: 0x08 + Relocations: + - Offset: 0x0 + Symbol: main + Type: R_AMDGPU_NONE + - Offset: 0x8 + Symbol: a + Type: R_AMDGPU_ABS32_LO + - Offset: 0x10 + Symbol: b + Type: R_AMDGPU_ABS32_HI + - Offset: 0x18 + Symbol: c + Type: R_AMDGPU_ABS64 + - Offset: 0x20 + Symbol: d + Type: R_AMDGPU_REL32 + - Offset: 0x28 + Symbol: e + Type: R_AMDGPU_REL64 + - Offset: 0x30 + Symbol: f + Type: R_AMDGPU_ABS32 + +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + + Global: + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x08 diff --git a/test/Object/AMDGPU/elf64-unknown.yaml b/test/Object/AMDGPU/elf64-unknown.yaml new file mode 100644 index 000000000000..600eb7442d5a --- /dev/null +++ b/test/Object/AMDGPU/elf64-unknown.yaml @@ -0,0 +1,11 @@ +# RUN: yaml2obj %s > %t.o +# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s + +# CHECK: Format: ELF64-amdgpu + +--- !ELF +FileHeader: + Class: ELFCLASS64 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_AMDGPU diff --git a/test/Object/AMDGPU/lit.local.cfg b/test/Object/AMDGPU/lit.local.cfg new file mode 100644 index 000000000000..2a665f06be72 --- /dev/null +++ b/test/Object/AMDGPU/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'AMDGPU' in config.root.targets: + config.unsupported = True diff --git a/test/Object/AMDGPU/objdump.s b/test/Object/AMDGPU/objdump.s new file mode 100644 index 000000000000..ca02a7ac2059 --- /dev/null +++ b/test/Object/AMDGPU/objdump.s @@ -0,0 +1,75 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=tonga %s -filetype=obj | llvm-objdump -disassemble -arch-name=amdgcn -mcpu=tonga - | FileCheck %s + + .text + + .amdgpu_hsa_kernel hello_world +hello_world: + .amd_kernel_code_t + .end_amd_kernel_code_t + + s_mov_b32 m0, 0x10000 + s_load_dwordx2 s[0:1], s[4:5], 0x8 + s_waitcnt lgkmcnt(0) + s_add_u32 s0, s7, s0 + v_add_i32_e32 v1, vcc, s0, v1 + s_movk_i32 s0, 0x483 + v_cmp_ge_i32_e32 vcc, s0, v0 + s_and_saveexec_b64 s[0:1], vcc + v_lshlrev_b32_e32 v4, 2, v0 + s_cbranch_execz 21 + s_mov_b64 s[2:3], exec + s_mov_b64 s[10:11], exec + v_mov_b32_e32 v3, v0 + s_endpgm + + .amdgpu_hsa_kernel hello_world2 +hello_world2: + .amd_kernel_code_t + .end_amd_kernel_code_t + + s_and_saveexec_b64 s[0:1], vcc + s_cbranch_execz 85 + s_load_dwordx4 s[8:11], s[4:5], 0x40 + v_ashrrev_i32_e32 v77, 31, v76 + v_lshlrev_b64 v[10:11], 2, v[76:77] + s_waitcnt lgkmcnt(0) + v_add_i32_e32 v10, vcc, s8, v10 + v_mov_b32_e32 v6, s9 + v_addc_u32_e32 v11, vcc, v6, v11, vcc + flat_load_dword v0, v[10:11] + v_lshlrev_b32_e32 v6, 5, v8 + v_lshlrev_b32_e32 v7, 2, v7 + s_endpgm + +// CHECK: file format ELF64-amdgpu-hsacobj +// CHECK: Disassembly of section .text: +// CHECK: hello_world: +// CHECK: s_mov_b32 m0, 0x10000 // 000000000100: BEFC00FF 00010000 +// CHECK: s_load_dwordx2 s[0:1], s[4:5], 0x8 // 000000000108: C0060002 00000008 +// CHECK: s_waitcnt lgkmcnt(0) // 000000000110: BF8C007F +// CHECK: s_add_u32 s0, s7, s0 // 000000000114: 80000007 +// CHECK: v_add_i32_e32 v1, vcc, s0, v1 // 000000000118: 32020200 +// CHECK: s_movk_i32 s0, 0x483 // 00000000011C: B0000483 +// CHECK: v_cmp_ge_i32_e32 vcc, s0, v0 // 000000000120: 7D8C0000 +// CHECK: s_and_saveexec_b64 s[0:1], vcc // 000000000124: BE80206A +// CHECK: v_lshlrev_b32_e32 v4, 2, v0 // 000000000128: 24080082 +// CHECK: s_cbranch_execz 21 // 00000000012C: BF880015 +// CHECK: s_mov_b64 s[2:3], exec // 000000000130: BE82017E +// CHECK: s_mov_b64 s[10:11], exec // 000000000134: BE8A017E +// CHECK: v_mov_b32_e32 v3, v0 // 000000000138: 7E060300 +// CHECK: s_endpgm // 00000000013C: BF810000 + +// CHECK: hello_world2: +// CHECK: s_and_saveexec_b64 s[0:1], vcc // 000000000240: BE80206A +// CHECK: s_cbranch_execz 85 // 000000000244: BF880055 +// CHECK: s_load_dwordx4 s[8:11], s[4:5], 0x40 // 000000000248: C00A0202 00000040 +// CHECK: v_ashrrev_i32_e32 v77, 31, v76 // 000000000250: 229A989F +// CHECK: v_lshlrev_b64 v[10:11], 2, v[76:77] // 000000000254: D28F000A 00029882 +// CHECK: s_waitcnt lgkmcnt(0) // 00000000025C: BF8C007F +// CHECK: v_add_i32_e32 v10, vcc, s8, v10 // 000000000260: 32141408 +// CHECK: v_mov_b32_e32 v6, s9 // 000000000264: 7E0C0209 +// CHECK: v_addc_u32_e32 v11, vcc, v6, v11, vcc // 000000000268: 38161706 +// CHECK: flat_load_dword v0, v[10:11] // 00000000026C: DC500000 0000000A +// CHECK: v_lshlrev_b32_e32 v6, 5, v8 // 000000000274: 240C1085 +// CHECK: v_lshlrev_b32_e32 v7, 2, v7 // 000000000278: 240E0E82 +// CHECK: s_endpgm // 00000000027C: BF810000 |
