mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
79a4851ba7
add BPF disassembler, so tools like llvm-objdump can be used: $ llvm-objdump -d -no-show-raw-insn ./sockex1_kern.o ./sockex1_kern.o: file format ELF64-BPF Disassembly of section socket1: bpf_prog1: 0: r6 = r1 8: r0 = *(u8 *)skb[23] 10: *(u32 *)(r10 - 4) = r0 18: r1 = *(u32 *)(r6 + 4) 20: if r1 != 4 goto 8 28: r2 = r10 30: r2 += -4 ld_imm64 (the only 16-byte insn) and special ld_abs/ld_ind instructions had to be treated in a special way. The decoders for the rest of the insns are automatically generated. Add tests to cover new functionality. Signed-off-by: Alexei Starovoitov <ast@kernel.org> llvm-svn: 287477
20 lines
518 B
LLVM
20 lines
518 B
LLVM
; RUN: llc < %s -march=bpfel -verify-machineinstrs -show-mc-encoding | FileCheck %s
|
|
|
|
; CHECK-LABEL: test_load_add_32
|
|
; CHECK: lock *(u32 *)(r1 + 0) += r2
|
|
; CHECK: encoding: [0xc3,0x21
|
|
define void @test_load_add_32(i32* %p, i32 zeroext %v) {
|
|
entry:
|
|
atomicrmw add i32* %p, i32 %v seq_cst
|
|
ret void
|
|
}
|
|
|
|
; CHECK-LABEL: test_load_add_64
|
|
; CHECK: lock *(u64 *)(r1 + 0) += r2
|
|
; CHECK: encoding: [0xdb,0x21
|
|
define void @test_load_add_64(i64* %p, i64 zeroext %v) {
|
|
entry:
|
|
atomicrmw add i64* %p, i64 %v seq_cst
|
|
ret void
|
|
}
|