xref: /aosp_15_r20/external/llvm/test/CodeGen/Thumb2/thumb2-cbnz.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -arm-atomic-cfg-tidy=0 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; rdar://7354379
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare double @foo(double) nounwind readnone
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @t(i32 %c, double %b) {
7*9880d681SAndroid Build Coastguard Workerentry:
8*9880d681SAndroid Build Coastguard Worker; CHECK:      cmp	r0, #0
9*9880d681SAndroid Build Coastguard Worker  %cmp1 = icmp ne i32 %c, 0
10*9880d681SAndroid Build Coastguard Worker  br i1 %cmp1, label %bb3, label %bb1
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Workerbb1:                                              ; preds = %entry
13*9880d681SAndroid Build Coastguard Worker  unreachable
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerbb3:                                              ; preds = %entry
16*9880d681SAndroid Build Coastguard Worker  %cmp2 = icmp ne i32 %c, 0
17*9880d681SAndroid Build Coastguard Worker  br i1 %cmp2, label %bb7, label %bb5
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Workerbb5:                                              ; preds = %bb3
20*9880d681SAndroid Build Coastguard Worker  unreachable
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Workerbb7:                                              ; preds = %bb3
23*9880d681SAndroid Build Coastguard Worker  %cmp3 = icmp ne i32 %c, 0
24*9880d681SAndroid Build Coastguard Worker  br i1 %cmp3, label %bb11, label %bb9
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Workerbb9:                                              ; preds = %bb7
27*9880d681SAndroid Build Coastguard Worker; CHECK:      cbnz
28*9880d681SAndroid Build Coastguard Worker  %0 = tail call  double @foo(double %b) nounwind readnone ; <double> [#uses=0]
29*9880d681SAndroid Build Coastguard Worker  br label %bb11
30*9880d681SAndroid Build Coastguard Worker
31*9880d681SAndroid Build Coastguard Workerbb11:                                             ; preds = %bb9, %bb7
32*9880d681SAndroid Build Coastguard Worker  %1 = getelementptr i32, i32* undef, i32 0
33*9880d681SAndroid Build Coastguard Worker  store i32 0, i32* %1
34*9880d681SAndroid Build Coastguard Worker  ret void
35*9880d681SAndroid Build Coastguard Worker}
36