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-NEXT: %if.else145 14 ; CHECK-NEXT: mov.w 15 16 %struct.hc = type { i32, i32, i32, i32 } 17 18 define i32 @t(i32 %type) optsize { 19 entry: 20 br i1 undef, label %if.then, label %if.else 21 22 if.then: 23 unreachable 24 25 if.else: 26 br i1 undef, label %if.then15, label %if.else18 27 28 if.then15: 29 unreachable 30 31 if.else18: 32 switch i32 %type, label %if.else173 [ 33 i32 3, label %if.then115 34 i32 1, label %if.then102 35 ] 36 37 if.then102: 38 br i1 undef, label %cond.true10.i, label %t.exit 39 40 cond.true10.i: 41 br label %t.exit 42 43 t.exit: 44 unreachable 45 46 if.then115: 47 br i1 undef, label %if.else163, label %if.else145 48 49 if.else145: 50 %call150 = call fastcc %struct.hc* @foo(%struct.hc* undef, i32 34865152) optsize 51 br label %while.body172 52 53 if.else163: 54 %call168 = call fastcc %struct.hc* @foo(%struct.hc* undef, i32 34078720) optsize 55 br label %while.body172 56 57 while.body172: 58 br label %while.body172 59 60 if.else173: 61 ret i32 -1 62 } 63 64 declare hidden fastcc %struct.hc* @foo(%struct.hc* nocapture, i32) nounwind optsize 65 66