Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / BPF / selectiondag-bug.ll
blob2351994e4589531ffc1d44fc7243f368e0dd975c
1 ; RUN: llc -march=bpf < %s | FileCheck %s
3 ; The IR is generated from a bpftrace script (https://github.com/iovisor/bpftrace/issues/1305)
4 ; and then slightly adapted for easy unit testing.
5 ; The llvm bugzilla link: https://bugs.llvm.org/show_bug.cgi?id=47591
7 %printf_t = type { i64, i64 }
9 define i64 @"kprobe:blk_update_request"(ptr %0) local_unnamed_addr section "s_kprobe:blk_update_request_1" {
10 entry:
11   %"struct kernfs_node.parent" = alloca i64, align 8
12   %printf_args = alloca %printf_t, align 8
13   %"struct cgroup.kn" = alloca i64, align 8
14   %"struct cgroup_subsys_state.cgroup" = alloca i64, align 8
15   %"struct blkcg_gq.blkcg" = alloca i64, align 8
16   %"struct bio.bi_blkg" = alloca i64, align 8
17   %"struct request.bio" = alloca i64, align 8
18   %1 = getelementptr i8, ptr %0, i64 112
19   %arg0 = load volatile i64, ptr %1, align 8
20   %2 = add i64 %arg0, 56
21   %3 = bitcast ptr %"struct request.bio" to ptr
22   call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %3)
23   %probe_read = call i64 inttoptr (i64 4 to ptr)(ptr nonnull %"struct request.bio", i32 8, i64 %2)
24   %4 = load i64, ptr %"struct request.bio", align 8
25   call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %3)
26   %5 = add i64 %4, 72
27   %6 = bitcast ptr %"struct bio.bi_blkg" to ptr
28   call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %6)
29   %probe_read1 = call i64 inttoptr (i64 5 to ptr)(ptr nonnull %"struct bio.bi_blkg", i32 8, i64 %5)
30   %7 = load i64, ptr %"struct bio.bi_blkg", align 8
31   call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %6)
32   %8 = add i64 %7, 40
33   %9 = bitcast ptr %"struct blkcg_gq.blkcg" to ptr
34   call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %9)
35   %probe_read2 = call i64 inttoptr (i64 6 to ptr)(ptr nonnull %"struct blkcg_gq.blkcg", i32 8, i64 %8)
36   %10 = load i64, ptr %"struct blkcg_gq.blkcg", align 8
37   call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %9)
38   %11 = bitcast ptr %"struct cgroup_subsys_state.cgroup" to ptr
39   call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %11)
40   %probe_read3 = call i64 inttoptr (i64 7 to ptr)(ptr nonnull %"struct cgroup_subsys_state.cgroup", i32 8, i64 %10)
41   %12 = load i64, ptr %"struct cgroup_subsys_state.cgroup", align 8
42   call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %11)
43   %13 = add i64 %12, 288
44   %14 = bitcast ptr %"struct cgroup.kn" to ptr
45   call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %14)
46   %probe_read4 = call i64 inttoptr (i64 8 to ptr)(ptr nonnull %"struct cgroup.kn", i32 8, i64 %13)
47   %15 = load i64, ptr %"struct cgroup.kn", align 8
48   call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %14)
49   call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %printf_args)
50   %16 = add i64 %15, 8
51   %17 = bitcast ptr %"struct kernfs_node.parent" to ptr
52   store i64 0, ptr %printf_args, align 8
53   call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %17)
55 ; CHECK:        call 8
56 ; CHECK-NOT:    r{{[0-9]+}} = 0
57 ; CHECK:        [[REG3:r[0-9]+]] = *(u64 *)(r10 - 24)
58 ; CHECK:        [[REG1:r[0-9]+]] = 0
59 ; CHECK:        *(u64 *)(r10 - 24) = [[REG1]]
61   %probe_read5 = call i64 inttoptr (i64 9 to ptr)(ptr nonnull %"struct kernfs_node.parent", i32 8, i64 %16)
62   %18 = load i64, ptr %"struct kernfs_node.parent", align 8
63   call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %17)
64   %19 = getelementptr inbounds %printf_t, ptr %printf_args, i64 0, i32 1
65   store i64 %18, ptr %19, align 8
66   %get_cpu_id = call i64 inttoptr (i64 18 to ptr)()
67   %perf_event_output = call i64 inttoptr (i64 10 to ptr)(ptr %0, i64 2, i64 %get_cpu_id, ptr nonnull %printf_args, i64 16)
68   call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %printf_args)
69   ret i64 0
72 ; Function Attrs: argmemonly nounwind willreturn
73 declare void @llvm.lifetime.start.p0(i64 immarg %0, ptr nocapture %1) #1
75 ; Function Attrs: argmemonly nounwind willreturn
76 declare void @llvm.lifetime.end.p0(i64 immarg %0, ptr nocapture %1) #1
78 attributes #0 = { nounwind }
79 attributes #1 = { argmemonly nounwind willreturn }