diff options
author | Valery Pykhtin <Valery.Pykhtin@amd.com> | 2016-04-07 07:24:01 +0000 |
---|---|---|
committer | Valery Pykhtin <Valery.Pykhtin@amd.com> | 2016-04-07 07:24:01 +0000 |
commit | de04805e9f05da0e7271d508d2ea09f962749803 (patch) | |
tree | f7b8e83992c3d93916d3f604d18a2ebbfbbe68e6 /llvm/test/Object | |
parent | 8bd973c90bb113897d30bf1a0c4e4964a9ec230a (diff) | |
download | bcm5719-llvm-de04805e9f05da0e7271d508d2ea09f962749803.tar.gz bcm5719-llvm-de04805e9f05da0e7271d508d2ea09f962749803.zip |
[AMDGPU] llvm-objdump: Minimal HSA Code Object disassembler support.
Reenable reverted r265550 with endianness issue fixed. Variables of
endian-aware types such as ulittle32_t should be explicitly casted
to their natural equivalent types before passing it as vararg to
printf like functions (format in my case). Added lit config file
depending on AMDGPU target as the testcase uses assembler.
Differential revision: http://reviews.llvm.org/D16998
llvm-svn: 265645
Diffstat (limited to 'llvm/test/Object')
-rw-r--r-- | llvm/test/Object/AMDGPU/lit.local.cfg | 2 | ||||
-rw-r--r-- | llvm/test/Object/AMDGPU/objdump.s | 75 |
2 files changed, 77 insertions, 0 deletions
diff --git a/llvm/test/Object/AMDGPU/lit.local.cfg b/llvm/test/Object/AMDGPU/lit.local.cfg new file mode 100644 index 00000000000..2a665f06be7 --- /dev/null +++ b/llvm/test/Object/AMDGPU/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'AMDGPU' in config.root.targets: + config.unsupported = True diff --git a/llvm/test/Object/AMDGPU/objdump.s b/llvm/test/Object/AMDGPU/objdump.s new file mode 100644 index 00000000000..997bcb1f325 --- /dev/null +++ b/llvm/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 .hsatext: +// 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 |