1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=armv7-unknown-linux < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-ARM %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumbv6-unknown-linux < %s | FileCheck --check-prefix=CHECK-THUMB1 %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=thumbv7-unknown-linux < %s | FileCheck --check-prefix=CHECK --check-prefix=CHECK-THUMB2 %s 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; CHECK-THUMB1-NOT: sbc 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_slt1: 8*9880d681SAndroid Build Coastguard Workerdefine i32 @test_slt1(i64 %a, i64 %b) { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: subs {{[^,]+}}, r0, r2 11*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: mov [[TMP:[0-9a-z]+]], #2 12*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: sbcs {{[^,]+}}, r1, r3 13*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: movwlt [[TMP]], #1 14*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: mov r0, [[TMP]] 15*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: bx lr 16*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: subs {{[^,]+}}, r0, r2 17*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: mov.w [[TMP:[0-9a-z]+]], #2 18*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: sbcs.w {{[^,]+}}, r1, r3 19*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: it lt 20*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: movlt.w [[TMP]], #1 21*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: mov r0, [[TMP]] 22*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: bx lr 23*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i64 %a, %b 24*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %bb1, label %bb2 25*9880d681SAndroid Build Coastguard Workerbb1: 26*9880d681SAndroid Build Coastguard Worker ret i32 1 27*9880d681SAndroid Build Coastguard Workerbb2: 28*9880d681SAndroid Build Coastguard Worker ret i32 2 29*9880d681SAndroid Build Coastguard Worker} 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test_slt2: 32*9880d681SAndroid Build Coastguard Workerdefine void @test_slt2(i64 %a, i64 %b) { 33*9880d681SAndroid Build Coastguard Workerentry: 34*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i64 %a, %b 35*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: subs {{[^,]+}}, r0, r2 36*9880d681SAndroid Build Coastguard Worker ; CHECK-ARM: sbcs {{[^,]+}}, r1, r3 37*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: subs {{[^,]+}}, r0, r2 38*9880d681SAndroid Build Coastguard Worker ; CHECK-THUMB2: sbcs.w {{[^,]+}}, r1, r3 39*9880d681SAndroid Build Coastguard Worker ; CHECK: bge [[BB2:\.[0-9A-Za-z_]+]] 40*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %bb1, label %bb2 41*9880d681SAndroid Build Coastguard Workerbb1: 42*9880d681SAndroid Build Coastguard Worker call void @f() 43*9880d681SAndroid Build Coastguard Worker ret void 44*9880d681SAndroid Build Coastguard Workerbb2: 45*9880d681SAndroid Build Coastguard Worker ; CHECK: [[BB2]]: 46*9880d681SAndroid Build Coastguard Worker ; CHECK-NEXT: bl g 47*9880d681SAndroid Build Coastguard Worker call void @g() 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdeclare void @f() 52*9880d681SAndroid Build Coastguard Workerdeclare void @g() 53