[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.
[llvm-core.git] / test / CodeGen / Thumb2 / thumb2-cbnz.ll
blobc1a53825e3b10ed8596d0c8682bb12c3ee562941
1 ; RUN: llc < %s -mtriple=thumbv7-apple-darwin -mcpu=cortex-a8 -arm-atomic-cfg-tidy=0 | FileCheck %s
2 ; rdar://7354379
4 declare double @foo(double) nounwind readnone
6 define void @t(i32 %c, double %b) {
7 entry:
8 ; CHECK:      cmp       r0, #0
9   %cmp1 = icmp ne i32 %c, 0
10   br i1 %cmp1, label %bb3, label %bb1
12 bb1:                                              ; preds = %entry
13   unreachable
15 bb3:                                              ; preds = %entry
16   %cmp2 = icmp ne i32 %c, 0
17   br i1 %cmp2, label %bb7, label %bb5
19 bb5:                                              ; preds = %bb3
20   unreachable
22 bb7:                                              ; preds = %bb3
23   %cmp3 = icmp ne i32 %c, 0
24   br i1 %cmp3, label %bb11, label %bb9
26 bb9:                                              ; preds = %bb7
27 ; CHECK:      cbnz
28   %0 = tail call  double @foo(double %b) nounwind readnone ; <double> [#uses=0]
29   br label %bb11
31 bb11:                                             ; preds = %bb9, %bb7
32   %1 = getelementptr i32, i32* undef, i32 0
33   store i32 0, i32* %1
34   ret void