xref: /aosp_15_r20/external/llvm/test/CodeGen/AArch64/arm64-bcc.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm64-apple-darwin  | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; Checks for conditional branch b.vs
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind
5*9880d681SAndroid Build Coastguard Workerdefine i32 @add(i32, i32) {
6*9880d681SAndroid Build Coastguard Workerentry:
7*9880d681SAndroid Build Coastguard Worker  %2 = tail call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %0, i32 %1)
8*9880d681SAndroid Build Coastguard Worker  %3 = extractvalue { i32, i1 } %2, 1
9*9880d681SAndroid Build Coastguard Worker  br i1 %3, label %6, label %4
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker; <label>:4                                       ; preds = %entry
12*9880d681SAndroid Build Coastguard Worker  %5 = extractvalue { i32, i1 } %2, 0
13*9880d681SAndroid Build Coastguard Worker  ret i32 %5
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Worker; <label>:6                                       ; preds = %entry
16*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.trap()
17*9880d681SAndroid Build Coastguard Worker  unreachable
18*9880d681SAndroid Build Coastguard Worker; CHECK: b.vs
19*9880d681SAndroid Build Coastguard Worker}
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker%S64 = type <{ i64 }>
22*9880d681SAndroid Build Coastguard Worker%S32 = type <{ i32 }>
23*9880d681SAndroid Build Coastguard Worker%Sstruct = type <{ %S64, %S32 }>
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Worker; Checks for compfail when optimizing csincr-cbz sequence
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine { i64, i1 } @foo(i64* , %Sstruct* , i1, i64) {
28*9880d681SAndroid Build Coastguard Workerentry:
29*9880d681SAndroid Build Coastguard Worker  %.sroa.0 = alloca i72, align 16
30*9880d681SAndroid Build Coastguard Worker  %.count.value = getelementptr inbounds %Sstruct, %Sstruct* %1, i64 0, i32 0, i32 0
31*9880d681SAndroid Build Coastguard Worker  %4 = load i64, i64* %.count.value, align 8
32*9880d681SAndroid Build Coastguard Worker  %.repeatedValue.value = getelementptr inbounds %Sstruct, %Sstruct* %1, i64 0, i32 1, i32 0
33*9880d681SAndroid Build Coastguard Worker  %5 = load i32, i32* %.repeatedValue.value, align 8
34*9880d681SAndroid Build Coastguard Worker  %6 = icmp eq i64 %4, 0
35*9880d681SAndroid Build Coastguard Worker  br label %7
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker; <label>:7                                      ; preds = %entry
38*9880d681SAndroid Build Coastguard Worker  %.mask58 = and i32 %5, -2048
39*9880d681SAndroid Build Coastguard Worker  %8 = icmp eq i32 %.mask58, 55296
40*9880d681SAndroid Build Coastguard Worker  %.not134 = xor i1 %8, true
41*9880d681SAndroid Build Coastguard Worker  %9 = icmp eq i32 %5, 1114112
42*9880d681SAndroid Build Coastguard Worker  %or.cond135 = and i1 %9, %.not134
43*9880d681SAndroid Build Coastguard Worker  br i1 %or.cond135, label %10, label %.loopexit
44*9880d681SAndroid Build Coastguard Worker
45*9880d681SAndroid Build Coastguard Worker; <label>:10                                      ; preds = %7
46*9880d681SAndroid Build Coastguard Worker  %11 = and i32 %5, -2048
47*9880d681SAndroid Build Coastguard Worker  %12 = icmp eq i32 %11, 55296
48*9880d681SAndroid Build Coastguard Worker  br i1 %12, label %.loopexit, label %10
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard Worker.loopexit:                                        ; preds = %.entry,%7,%10
52*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.trap()
53*9880d681SAndroid Build Coastguard Worker  unreachable
54*9880d681SAndroid Build Coastguard Worker}
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone
57*9880d681SAndroid Build Coastguard Workerdeclare { i32, i1 } @llvm.sadd.with.overflow.i32(i32, i32)
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker; Function Attrs: noreturn nounwind
60*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.trap()
61