summaryrefslogtreecommitdiff
path: root/test/Object/AMDGPU
diff options
context:
space:
mode:
Diffstat (limited to 'test/Object/AMDGPU')
-rw-r--r--test/Object/AMDGPU/elf-definitios.yaml7
-rw-r--r--test/Object/AMDGPU/elf32-unknown.yaml11
-rw-r--r--test/Object/AMDGPU/elf64-relocs.yaml66
-rw-r--r--test/Object/AMDGPU/elf64-unknown.yaml11
-rw-r--r--test/Object/AMDGPU/lit.local.cfg2
-rw-r--r--test/Object/AMDGPU/objdump.s75
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