aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/BPF/bpf-fastcall-5.ll
blob: 62dd6c3ed50bba2478510108720f0cca8b7d5983 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
; RUN: llc -O2 --mtriple=bpfel %s -o - | FileCheck %s

; Generated from the following C code:
;
;   extern int foo(void) __attribute__((bpf_fastcall));
;
;   int bar(int a, int b, int c, int d, int e) {
;     foo();
;     return e;
;   }
;
; Using the following command:
;
;   clang --target=bpf -emit-llvm -O2 -S -o - t.c
;
; (unnecessary attrs removed maually)

; Check that function marked with bpf_fastcall does not clobber W1-W5.

define dso_local i32 @bar(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e) {
entry:
  %call = tail call i32 @foo() #0
  ret i32 %e
}

; CHECK:      # %bb.0:
; CHECK-NEXT:   *(u64 *)(r10 - 8) = r5
; CHECK-NEXT:   call foo
; CHECK-NEXT:   r5 = *(u64 *)(r10 - 8)
; CHECK-NEXT:   w0 = w5
; CHECK-NEXT:   exit

declare dso_local i32 @foo() #0

attributes #0 = { "bpf_fastcall" }