Skip to content

Commit 40b9097

Browse files
author
Yonghong Song
committed
Update the test with utils/update_test_body.py
1 parent 40d98a3 commit 40b9097

File tree

4 files changed

+228
-146
lines changed

4 files changed

+228
-146
lines changed
Lines changed: 54 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
; RUN: llc -march=bpf -mcpu=v4 < %s | FileCheck %s
1+
; Checks generated using command:
2+
; llvm/utils/update_test_body.py llvm/test/CodeGen/BPF/jump_table_blockaddr.ll
3+
4+
; RUN: rm -rf %t && split-file %s %t && cd %t
5+
; RUN: llc -march=bpf -mcpu=v4 < test.ll | FileCheck %s
26
;
37
; Source code:
48
; int bar(int a) {
@@ -18,6 +22,8 @@
1822
; Compilation Flags:
1923
; clang --target=bpf -mcpu=v4 -O2 -emit-llvm -S test.c
2024

25+
.ifdef GEN
26+
;--- test.ll
2127
define dso_local range(i32 2, 4) i32 @bar(i32 noundef %a) local_unnamed_addr{
2228
entry:
2329
%tgt = alloca ptr, align 8
@@ -35,30 +41,51 @@ l2: ; preds = %l1, %entry
3541
ret i32 %ret.0
3642
}
3743

38-
; CHECK: r2 = BPF.JT.0.0 ll
39-
; CHECK-NEXT: r2 = *(u64 *)(r2 + 0)
40-
; CHECK-NEXT: r3 = BPF.JT.0.1 ll
41-
; CHECK-NEXT: r3 = *(u64 *)(r3 + 0)
42-
; CHECK-NEXT: if w1 == 0 goto LBB0_2
43-
; CHECK: r3 = r2
44-
; CHECK-NEXT: LBB0_2: # %entry
45-
; CHECK-NEXT: *(u64 *)(r10 - 8) = r3
46-
; CHECK-NEXT: r1 = *(u64 *)(r10 - 8)
47-
; CHECK-NEXT: gotox r1
48-
; CHECK-NEXT: .Ltmp0: # Block address taken
49-
; CHECK-NEXT: LBB0_3: # %l1
50-
; CHECK-NEXT: w0 = 3
51-
; CHECK-NEXT: goto LBB0_5
52-
; CHECK-NEXT: .Ltmp1: # Block address taken
53-
; CHECK-NEXT: LBB0_4: # %l2
54-
; CHECK-NEXT: w0 = 2
55-
; CHECK-NEXT: LBB0_5: # %.split
56-
; CHECK-NEXT: exit
44+
;--- gen
45+
echo ""
46+
echo "; Generated checks follow"
47+
echo ";"
48+
llc -march=bpf -mcpu=v4 < test.ll \
49+
| awk '/# -- End function/ {p=0} /@function/ {p=1} p {print "; CHECK" ": " $0}'
50+
51+
.endif
52+
53+
; Generated checks follow
5754
;
58-
; CHECK: .section .jumptables,"",@progbits
59-
; CHECK-NEXT: BPF.JT.0.0:
60-
; CHECK-NEXT: .quad LBB0_3
61-
; CHECK-NEXT: .size BPF.JT.0.0, 8
62-
; CHECK-NEXT: BPF.JT.0.1:
63-
; CHECK-NEXT: .quad LBB0_4
64-
; CHECK-NEXT: .size BPF.JT.0.1, 8
55+
; CHECK: .type bar,@function
56+
; CHECK: bar: # @bar
57+
; CHECK: .Lbar$local:
58+
; CHECK: .type .Lbar$local,@function
59+
; CHECK: .cfi_startproc
60+
; CHECK: # %bb.0: # %entry
61+
; CHECK: r2 = BPF.JT.0.0 ll
62+
; CHECK: r2 = *(u64 *)(r2 + 0)
63+
; CHECK: r3 = BPF.JT.0.1 ll
64+
; CHECK: r3 = *(u64 *)(r3 + 0)
65+
; CHECK: if w1 == 0 goto LBB0_2
66+
; CHECK: # %bb.1: # %entry
67+
; CHECK: r3 = r2
68+
; CHECK: LBB0_2: # %entry
69+
; CHECK: *(u64 *)(r10 - 8) = r3
70+
; CHECK: r1 = *(u64 *)(r10 - 8)
71+
; CHECK: gotox r1
72+
; CHECK: .Ltmp0: # Block address taken
73+
; CHECK: LBB0_3: # %l1
74+
; CHECK: w0 = 3
75+
; CHECK: goto LBB0_5
76+
; CHECK: .Ltmp1: # Block address taken
77+
; CHECK: LBB0_4: # %l2
78+
; CHECK: w0 = 2
79+
; CHECK: LBB0_5: # %.split
80+
; CHECK: exit
81+
; CHECK: .Lfunc_end0:
82+
; CHECK: .size bar, .Lfunc_end0-bar
83+
; CHECK: .size .Lbar$local, .Lfunc_end0-bar
84+
; CHECK: .cfi_endproc
85+
; CHECK: .section .jumptables,"",@progbits
86+
; CHECK: BPF.JT.0.0:
87+
; CHECK: .quad LBB0_3
88+
; CHECK: .size BPF.JT.0.0, 8
89+
; CHECK: BPF.JT.0.1:
90+
; CHECK: .quad LBB0_4
91+
; CHECK: .size BPF.JT.0.1, 8
Lines changed: 48 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
; RUN: llc -march=bpf -mcpu=v4 < %s | FileCheck %s
1+
; Checks generated using command:
2+
; llvm/utils/update_test_body.py llvm/test/CodeGen/BPF/jump_table_global_var.ll
3+
4+
; RUN: rm -rf %t && split-file %s %t && cd %t
5+
; RUN: llc -march=bpf -mcpu=v4 < test.ll | FileCheck %s
26
;
37
; Source code:
48
; int foo(unsigned a) {
@@ -15,6 +19,8 @@
1519
; Compilation Flags:
1620
; clang --target=bpf -mcpu=v4 -O2 -emit-llvm -S test.c
1721

22+
.ifdef GEN
23+
;--- test.ll
1824
@__const.foo.jt1 = private unnamed_addr constant [2 x ptr] [ptr blockaddress(@foo, %l1), ptr blockaddress(@foo, %l2)], align 8
1925

2026
define dso_local range(i32 3, 5) i32 @foo(i32 noundef %a) local_unnamed_addr {
@@ -33,24 +39,45 @@ l2: ; preds = %l1, %entry
3339
ret i32 %ret.0
3440
}
3541

36-
; CHECK: w1 &= 1
37-
; CHECK-NEXT: r1 <<= 3
38-
; CHECK-NEXT: r2 = BPF.JT.0.0 ll
39-
; CHECK-NEXT: r2 += r1
40-
; CHECK-NEXT: r1 = *(u64 *)(r2 + 0)
41-
; CHECK-NEXT: gotox r1
42-
; CHECK-NEXT: .Ltmp0: # Block address taken
43-
; CHECK-NEXT: LBB0_1: # %l1
44-
; CHECK-NEXT: w0 = 4
45-
; CHECK-NEXT: goto LBB0_3
46-
; CHECK-NEXT: .Ltmp1: # Block address taken
47-
; CHECK-NEXT: LBB0_2: # %l2
48-
; CHECK-NEXT: w0 = 3
49-
; CHECK-NEXT: LBB0_3: # %.split
50-
; CHECK-NEXT: exit
42+
;--- gen
43+
echo ""
44+
echo "; Generated checks follow"
45+
echo ";"
46+
llc -march=bpf -mcpu=v4 < test.ll \
47+
| awk '/# -- End function/ {p=0} /@function/ {p=1} p {print "; CHECK" ": " $0}'
48+
49+
.endif
50+
51+
; Generated checks follow
5152
;
52-
; CHECK: .section .jumptables,"",@progbits
53-
; CHECK-NEXT: BPF.JT.0.0:
54-
; CHECK-NEXT: .quad LBB0_1
55-
; CHECK-NEXT: .quad LBB0_2
56-
; CHECK-NEXT: .size BPF.JT.0.0, 16
53+
; CHECK: .type foo,@function
54+
; CHECK: foo: # @foo
55+
; CHECK: .Lfoo$local:
56+
; CHECK: .type .Lfoo$local,@function
57+
; CHECK: .cfi_startproc
58+
; CHECK: # %bb.0: # %entry
59+
; CHECK: # kill: def $w1 killed $w1 def $r1
60+
; CHECK: w1 &= 1
61+
; CHECK: r1 <<= 3
62+
; CHECK: r2 = BPF.JT.0.0 ll
63+
; CHECK: r2 += r1
64+
; CHECK: r1 = *(u64 *)(r2 + 0)
65+
; CHECK: gotox r1
66+
; CHECK: .Ltmp0: # Block address taken
67+
; CHECK: LBB0_1: # %l1
68+
; CHECK: w0 = 4
69+
; CHECK: goto LBB0_3
70+
; CHECK: .Ltmp1: # Block address taken
71+
; CHECK: LBB0_2: # %l2
72+
; CHECK: w0 = 3
73+
; CHECK: LBB0_3: # %.split
74+
; CHECK: exit
75+
; CHECK: .Lfunc_end0:
76+
; CHECK: .size foo, .Lfunc_end0-foo
77+
; CHECK: .size .Lfoo$local, .Lfunc_end0-foo
78+
; CHECK: .cfi_endproc
79+
; CHECK: .section .jumptables,"",@progbits
80+
; CHECK: BPF.JT.0.0:
81+
; CHECK: .quad LBB0_1
82+
; CHECK: .quad LBB0_2
83+
; CHECK: .size BPF.JT.0.0, 16
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
; Checks generated using command:
2+
; llvm/utils/update_test_body.py llvm/test/CodeGen/BPF/jump_table_switch_stmt.ll
3+
4+
; RUN: rm -rf %t && split-file %s %t && cd %t
5+
; RUN: llc -march=bpf -mcpu=v4 -bpf-min-jump-table-entries=3 < test.ll | FileCheck %s
6+
;
7+
; Source code:
8+
; int ret_user;
9+
; int foo(int a)
10+
; {
11+
; switch (a) {
12+
; case 1: ret_user = 18; break;
13+
; case 20: ret_user = 6; break;
14+
; case 30: ret_user = 2; break;
15+
; default: break;
16+
; }
17+
; return 0;
18+
; }
19+
;
20+
; Compilation Flags:
21+
; clang --target=bpf -mcpu=v4 -O2 -emit-llvm -S test.c
22+
23+
.ifdef GEN
24+
;--- test.ll
25+
@ret_user = dso_local local_unnamed_addr global i32 0, align 4
26+
27+
define dso_local noundef i32 @foo(i32 noundef %a) local_unnamed_addr {
28+
entry:
29+
switch i32 %a, label %sw.epilog [
30+
i32 1, label %sw.epilog.sink.split
31+
i32 20, label %sw.bb1
32+
i32 30, label %sw.bb2
33+
]
34+
35+
sw.bb1: ; preds = %entry
36+
br label %sw.epilog.sink.split
37+
38+
sw.bb2: ; preds = %entry
39+
br label %sw.epilog.sink.split
40+
41+
sw.epilog.sink.split: ; preds = %entry, %sw.bb1, %sw.bb2
42+
%.sink = phi i32 [ 2, %sw.bb2 ], [ 6, %sw.bb1 ], [ 18, %entry ]
43+
store i32 %.sink, ptr @ret_user, align 4
44+
br label %sw.epilog
45+
46+
sw.epilog: ; preds = %sw.epilog.sink.split, %entry
47+
ret i32 0
48+
}
49+
50+
;--- gen
51+
echo ""
52+
echo "; Generated checks follow"
53+
echo ";"
54+
llc -march=bpf -mcpu=v4 -bpf-min-jump-table-entries=3 < test.ll \
55+
| awk '/# -- End function/ {p=0} /@function/ {p=1} p {print "; CHECK" ": " $0}'
56+
57+
.endif
58+
59+
; Generated checks follow
60+
;
61+
; CHECK: .type foo,@function
62+
; CHECK: foo: # @foo
63+
; CHECK: .Lfoo$local:
64+
; CHECK: .type .Lfoo$local,@function
65+
; CHECK: .cfi_startproc
66+
; CHECK: # %bb.0: # %entry
67+
; CHECK: # kill: def $w1 killed $w1 def $r1
68+
; CHECK: w1 += -1
69+
; CHECK: if w1 > 29 goto LBB0_5
70+
; CHECK: # %bb.1: # %entry
71+
; CHECK: w2 = 18
72+
; CHECK: r1 <<= 3
73+
; CHECK: r3 = BPF.JT.0.0 ll
74+
; CHECK: r4 = BPF.JT.0.0 ll
75+
; CHECK: r4 += r1
76+
; CHECK: r1 = *(u64 *)(r4 + 0)
77+
; CHECK: r3 += r1
78+
; CHECK: gotox r3
79+
; CHECK: LBB0_2: # %sw.bb1
80+
; CHECK: w2 = 6
81+
; CHECK: goto LBB0_4
82+
; CHECK: LBB0_3: # %sw.bb2
83+
; CHECK: w2 = 2
84+
; CHECK: LBB0_4: # %sw.epilog.sink.split
85+
; CHECK: r1 = ret_user ll
86+
; CHECK: *(u32 *)(r1 + 0) = w2
87+
; CHECK: LBB0_5: # %sw.epilog
88+
; CHECK: w0 = 0
89+
; CHECK: exit
90+
; CHECK: .Lfunc_end0:
91+
; CHECK: .size foo, .Lfunc_end0-foo
92+
; CHECK: .size .Lfoo$local, .Lfunc_end0-foo
93+
; CHECK: .cfi_endproc
94+
; CHECK: .section .jumptables,"",@progbits
95+
; CHECK: BPF.JT.0.0:
96+
; CHECK: .quad LBB0_4
97+
; CHECK: .quad LBB0_5
98+
; CHECK: .quad LBB0_5
99+
; CHECK: .quad LBB0_5
100+
; CHECK: .quad LBB0_5
101+
; CHECK: .quad LBB0_5
102+
; CHECK: .quad LBB0_5
103+
; CHECK: .quad LBB0_5
104+
; CHECK: .quad LBB0_5
105+
; CHECK: .quad LBB0_5
106+
; CHECK: .quad LBB0_5
107+
; CHECK: .quad LBB0_5
108+
; CHECK: .quad LBB0_5
109+
; CHECK: .quad LBB0_5
110+
; CHECK: .quad LBB0_5
111+
; CHECK: .quad LBB0_5
112+
; CHECK: .quad LBB0_5
113+
; CHECK: .quad LBB0_5
114+
; CHECK: .quad LBB0_5
115+
; CHECK: .quad LBB0_2
116+
; CHECK: .quad LBB0_5
117+
; CHECK: .quad LBB0_5
118+
; CHECK: .quad LBB0_5
119+
; CHECK: .quad LBB0_5
120+
; CHECK: .quad LBB0_5
121+
; CHECK: .quad LBB0_5
122+
; CHECK: .quad LBB0_5
123+
; CHECK: .quad LBB0_5
124+
; CHECK: .quad LBB0_5
125+
; CHECK: .quad LBB0_3
126+
; CHECK: .size BPF.JT.0.0, 240

0 commit comments

Comments
 (0)