[ARM] Generate 8.1-m CSINC, CSNEG and CSINV instructions.
[llvm-core.git] / test / CodeGen / Thumb2 / v8_IT_5.ll
blob4e9ebac7d157a4072df7a3d1283d3c36f0586a3e
1 ; RUN: llc < %s -mtriple=thumbv8 -arm-atomic-cfg-tidy=0 | FileCheck %s
2 ; RUN: llc < %s -mtriple=thumbv7 -arm-atomic-cfg-tidy=0 -arm-restrict-it | FileCheck %s
3 ; CHECK: it ne
4 ; CHECK-NEXT: cmpne
5 ; CHECK-NEXT: bne [[JUMPTARGET:.LBB[0-9]+_[0-9]+]]
6 ; CHECK: cbz
7 ; CHECK-NEXT: %if.else163
8 ; CHECK-NEXT: mov.w
9 ; CHECK-NEXT: b
10 ; CHECK: [[JUMPTARGET]]:{{.*}}%if.else173
11 ; CHECK-NEXT: mov.w
12 ; CHECK-NEXT: bx lr
13 ; CHECK: %if.else145
14 ; CHECK-NEXT: mov.w
15 ; CHECK: pop.w
17 %struct.hc = type { i32, i32, i32, i32 }
19 define i32 @t(i32 %type) optsize {
20 entry:
21   switch i32 %type, label %if.else173 [
22     i32 13, label %if.then115
23     i32 6, label %if.then102
24   ]
26 if.then102:
27  br label %if.then115
29 if.then115:
30   br i1 undef, label %if.else163, label %if.else145
32 if.else145:
33   %call150 = call fastcc %struct.hc* @foo(%struct.hc* undef, i32 34865152) optsize
34   br label %while.body172
36 if.else163:
37   %call168 = call fastcc %struct.hc* @foo(%struct.hc* undef, i32 34078720) optsize
38   br label %while.body172
40 while.body172:
41   br label %while.body172
43 if.else173:
44   ret i32 -1
47 declare hidden fastcc %struct.hc* @foo(%struct.hc* nocapture, i32) nounwind optsize