1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-apple-ios -mcpu=cortex-a8 | \ 2*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-SWDIV 3*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-apple-ios -mcpu=swift | \ 4*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-HWDIV 5*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-apple-ios -mcpu=cortex-r4 | \ 6*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-SWDIV 7*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-apple-ios -mcpu=cortex-r4f | \ 8*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-SWDIV 9*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-apple-ios -mcpu=cortex-r5 | \ 10*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-HWDIV 11*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-none-eabi -mcpu=cortex-a8 | \ 12*9880d681SAndroid Build Coastguard Worker; RUN: FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-EABI 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerdefine i32 @f1(i32 %a, i32 %b) { 15*9880d681SAndroid Build Coastguard Workerentry: 16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f1 17*9880d681SAndroid Build Coastguard Worker; CHECK-SWDIV: __divsi3 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: sdiv 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; CHECK-EABI: __aeabi_idiv 22*9880d681SAndroid Build Coastguard Worker %tmp1 = sdiv i32 %a, %b ; <i32> [#uses=1] 23*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine i32 @f2(i32 %a, i32 %b) { 27*9880d681SAndroid Build Coastguard Workerentry: 28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f2 29*9880d681SAndroid Build Coastguard Worker; CHECK-SWDIV: __udivsi3 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: udiv 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker; CHECK-EABI: __aeabi_uidiv 34*9880d681SAndroid Build Coastguard Worker %tmp1 = udiv i32 %a, %b ; <i32> [#uses=1] 35*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerdefine i32 @f3(i32 %a, i32 %b) { 39*9880d681SAndroid Build Coastguard Workerentry: 40*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f3 41*9880d681SAndroid Build Coastguard Worker; CHECK-SWDIV: __modsi3 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: sdiv 44*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: mls 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Worker; EABI MODE = Remainder in R1, quotient in R0 47*9880d681SAndroid Build Coastguard Worker; CHECK-EABI: __aeabi_idivmod 48*9880d681SAndroid Build Coastguard Worker; CHECK-EABI-NEXT: mov r0, r1 49*9880d681SAndroid Build Coastguard Worker %tmp1 = srem i32 %a, %b ; <i32> [#uses=1] 50*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine i32 @f4(i32 %a, i32 %b) { 54*9880d681SAndroid Build Coastguard Workerentry: 55*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f4 56*9880d681SAndroid Build Coastguard Worker; CHECK-SWDIV: __umodsi3 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: udiv 59*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: mls 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker; EABI MODE = Remainder in R1, quotient in R0 62*9880d681SAndroid Build Coastguard Worker; CHECK-EABI: __aeabi_uidivmod 63*9880d681SAndroid Build Coastguard Worker; CHECK-EABI-NEXT: mov r0, r1 64*9880d681SAndroid Build Coastguard Worker %tmp1 = urem i32 %a, %b ; <i32> [#uses=1] 65*9880d681SAndroid Build Coastguard Worker ret i32 %tmp1 66*9880d681SAndroid Build Coastguard Worker} 67*9880d681SAndroid Build Coastguard Worker 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerdefine i64 @f5(i64 %a, i64 %b) { 70*9880d681SAndroid Build Coastguard Workerentry: 71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f5 72*9880d681SAndroid Build Coastguard Worker; CHECK-SWDIV: __moddi3 73*9880d681SAndroid Build Coastguard Worker 74*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: __moddi3 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Worker; EABI MODE = Remainder in R2-R3, quotient in R0-R1 77*9880d681SAndroid Build Coastguard Worker; CHECK-EABI: __aeabi_ldivmod 78*9880d681SAndroid Build Coastguard Worker; CHECK-EABI-NEXT: mov r0, r2 79*9880d681SAndroid Build Coastguard Worker; CHECK-EABI-NEXT: mov r1, r3 80*9880d681SAndroid Build Coastguard Worker %tmp1 = srem i64 %a, %b ; <i64> [#uses=1] 81*9880d681SAndroid Build Coastguard Worker ret i64 %tmp1 82*9880d681SAndroid Build Coastguard Worker} 83*9880d681SAndroid Build Coastguard Worker 84*9880d681SAndroid Build Coastguard Workerdefine i64 @f6(i64 %a, i64 %b) { 85*9880d681SAndroid Build Coastguard Workerentry: 86*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f6 87*9880d681SAndroid Build Coastguard Worker; CHECK-SWDIV: __umoddi3 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; CHECK-HWDIV: __umoddi3 90*9880d681SAndroid Build Coastguard Worker 91*9880d681SAndroid Build Coastguard Worker; EABI MODE = Remainder in R2-R3, quotient in R0-R1 92*9880d681SAndroid Build Coastguard Worker; CHECK-EABI: __aeabi_uldivmod 93*9880d681SAndroid Build Coastguard Worker; CHECK-EABI-NEXT: mov r0, r2 94*9880d681SAndroid Build Coastguard Worker; CHECK-EABI-NEXT: mov r1, r3 95*9880d681SAndroid Build Coastguard Worker %tmp1 = urem i64 %a, %b ; <i64> [#uses=1] 96*9880d681SAndroid Build Coastguard Worker ret i64 %tmp1 97*9880d681SAndroid Build Coastguard Worker} 98