mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
719b0399a8
since bpf instruction set was introduced people learned to read and understand kernel verifier output whereas llvm asm output stayed obscure and unknown. Convert llvm to emit assembler text similar to kernel to avoid this discrepancy Signed-off-by: Alexei Starovoitov <ast@kernel.org> llvm-svn: 287300
44 lines
895 B
LLVM
44 lines
895 B
LLVM
; RUN: llc < %s -march=bpfel | FileCheck %s
|
|
|
|
define i16 @am1(i16* %a) nounwind {
|
|
%1 = load i16, i16* %a
|
|
ret i16 %1
|
|
}
|
|
; CHECK-LABEL: am1:
|
|
; CHECK: r0 = *(u16 *)(r1 + 0)
|
|
|
|
@foo = external global i16
|
|
|
|
define i16 @am2() nounwind {
|
|
%1 = load i16, i16* @foo
|
|
ret i16 %1
|
|
}
|
|
; CHECK-LABEL: am2:
|
|
; CHECK: r0 = *(u16 *)(r1 + 0)
|
|
|
|
define i16 @am4() nounwind {
|
|
%1 = load volatile i16, i16* inttoptr(i16 32 to i16*)
|
|
ret i16 %1
|
|
}
|
|
; CHECK-LABEL: am4:
|
|
; CHECK: r1 = 32
|
|
; CHECK: r0 = *(u16 *)(r1 + 0)
|
|
|
|
define i16 @am5(i16* %a) nounwind {
|
|
%1 = getelementptr i16, i16* %a, i16 2
|
|
%2 = load i16, i16* %1
|
|
ret i16 %2
|
|
}
|
|
; CHECK-LABEL: am5:
|
|
; CHECK: r0 = *(u16 *)(r1 + 4)
|
|
|
|
%S = type { i16, i16 }
|
|
@baz = common global %S zeroinitializer, align 1
|
|
|
|
define i16 @am6() nounwind {
|
|
%1 = load i16, i16* getelementptr (%S, %S* @baz, i32 0, i32 1)
|
|
ret i16 %1
|
|
}
|
|
; CHECK-LABEL: am6:
|
|
; CHECK: r0 = *(u16 *)(r1 + 2)
|