mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-01 01:15:55 +00:00

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> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287300 91177308-0d34-0410-b5e6-96231b3b80d8
26 lines
737 B
LLVM
26 lines
737 B
LLVM
; RUN: llc < %s -march=bpf | FileCheck %s
|
|
|
|
%struct.key_t = type { i32, [16 x i8] }
|
|
|
|
; Function Attrs: nounwind uwtable
|
|
define i32 @test() #0 {
|
|
%key = alloca %struct.key_t, align 4
|
|
%1 = bitcast %struct.key_t* %key to i8*
|
|
; CHECK: r1 = 0
|
|
; CHECK: *(u32 *)(r10 - 8) = r1
|
|
; CHECK: *(u64 *)(r10 - 16) = r1
|
|
; CHECK: *(u64 *)(r10 - 24) = r1
|
|
call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 20, i32 4, i1 false)
|
|
; CHECK: r1 = r10
|
|
; CHECK: r1 += -20
|
|
%2 = getelementptr inbounds %struct.key_t, %struct.key_t* %key, i64 0, i32 1, i64 0
|
|
; CHECK: call test1
|
|
call void @test1(i8* %2) #3
|
|
ret i32 0
|
|
}
|
|
|
|
; Function Attrs: nounwind argmemonly
|
|
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #1
|
|
|
|
declare void @test1(i8*) #2
|