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