xref: /llvm-project/llvm/test/Analysis/ValueTracking/aarch64.irg.ll (revision 7fbbbfd63899331a47a0265c45f1a2a2ae6918d4)
1; RUN: opt -S -passes=instsimplify,instcombine < %s | FileCheck %s
2
3; CHECK-LABEL: define void @checkNonnullIrg()
4define void @checkNonnullIrg() {
5; CHECK:   %[[p:.*]] = call ptr @llvm.aarch64.irg(ptr nonnull
6; CHECK:   call void @use(ptr nonnull %[[p]])
7entry:
8  %0 = alloca i8, align 16
9
10  %p = call ptr @llvm.aarch64.irg(ptr %0, i64 5)
11  call void @use(ptr %p)
12
13  ret void
14}
15
16; CHECK-LABEL: define void @checkNonnullTagp(
17define void @checkNonnullTagp(ptr %tag) {
18; CHECK:  %[[p:.*]] = call ptr @llvm.aarch64.tagp.p0(ptr nonnull %a, ptr %tag, i64 1)
19; CHECK:  %[[p2:.*]] = call ptr @llvm.aarch64.tagp.p0(ptr nonnull %[[p]], ptr %tag, i64 2)
20; CHECK:  call void @use(ptr nonnull %[[p2]])
21entry:
22  %a = alloca i8, align 8
23
24  %p = call ptr @llvm.aarch64.tagp.p0(ptr %a, ptr %tag, i64 1)
25  %p2 = call ptr @llvm.aarch64.tagp.p0(ptr %p, ptr %tag, i64 2)
26  call void @use(ptr %p2)
27
28  ret void
29}
30
31declare ptr @llvm.aarch64.irg(ptr, i64)
32declare ptr @llvm.aarch64.tagp.p0(ptr, ptr, i64)
33
34declare void @use(ptr)
35