1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=aarch64-linux-gnuabi -O2 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; marked as external to prevent possible optimizations 4*9880d681SAndroid Build Coastguard Worker@a = external global i32 5*9880d681SAndroid Build Coastguard Worker@b = external global i32 6*9880d681SAndroid Build Coastguard Worker@c = external global i32 7*9880d681SAndroid Build Coastguard Worker@d = external global i32 8*9880d681SAndroid Build Coastguard Worker@e = external global i32 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine void @combine-sign-comparisons-by-cse(i32 *%arg) { 11*9880d681SAndroid Build Coastguard Worker; CHECK: cmp 12*9880d681SAndroid Build Coastguard Worker; CHECK: b.ge 13*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: cmp 14*9880d681SAndroid Build Coastguard Worker; CHECK: b.le 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker %a = load i32, i32* @a, align 4 18*9880d681SAndroid Build Coastguard Worker %b = load i32, i32* @b, align 4 19*9880d681SAndroid Build Coastguard Worker %c = load i32, i32* @c, align 4 20*9880d681SAndroid Build Coastguard Worker %d = load i32, i32* @d, align 4 21*9880d681SAndroid Build Coastguard Worker %e = load i32, i32* @e, align 4 22*9880d681SAndroid Build Coastguard Worker 23*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %a, %e 24*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %land.lhs.true, label %lor.lhs.false 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerland.lhs.true: 27*9880d681SAndroid Build Coastguard Worker %cmp1 = icmp eq i32 %b, %c 28*9880d681SAndroid Build Coastguard Worker br i1 %cmp1, label %return, label %if.end 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerlor.lhs.false: 31*9880d681SAndroid Build Coastguard Worker %cmp2 = icmp sgt i32 %a, %e 32*9880d681SAndroid Build Coastguard Worker br i1 %cmp2, label %land.lhs.true3, label %if.end 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerland.lhs.true3: 35*9880d681SAndroid Build Coastguard Worker %cmp4 = icmp eq i32 %b, %d 36*9880d681SAndroid Build Coastguard Worker br i1 %cmp4, label %return, label %if.end 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerif.end: 39*9880d681SAndroid Build Coastguard Worker br label %return 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerreturn: 42*9880d681SAndroid Build Coastguard Worker %retval.0 = phi i32 [ 0, %if.end ], [ 1, %land.lhs.true3 ], [ 1, %land.lhs.true ] 43*9880d681SAndroid Build Coastguard Worker store i32 %a, i32 *%arg 44*9880d681SAndroid Build Coastguard Worker ret void 45*9880d681SAndroid Build Coastguard Worker} 46