1*7c91336eSMatthias Braun; RUN: llc < %s -mtriple=thumb-none-eabi -mcpu=cortex-m23 | \ 247eb9723SSanne Wouda; RUN: FileCheck %s -check-prefix=CHECK 347eb9723SSanne Wouda 447eb9723SSanne Woudadefine i32 @f1(i32 %a, i32 %b) { 547eb9723SSanne Woudaentry: 647eb9723SSanne Wouda; CHECK-LABEL: f1 747eb9723SSanne Wouda 847eb9723SSanne Wouda; CHECK: sdiv 947eb9723SSanne Wouda %tmp1 = sdiv i32 %a, %b ; <i32> [#uses=1] 1047eb9723SSanne Wouda ret i32 %tmp1 1147eb9723SSanne Wouda} 1247eb9723SSanne Wouda 1347eb9723SSanne Woudadefine i32 @f2(i32 %a, i32 %b) { 1447eb9723SSanne Woudaentry: 1547eb9723SSanne Wouda; CHECK-LABEL: f2 1647eb9723SSanne Wouda; CHECK: udiv 1747eb9723SSanne Wouda %tmp1 = udiv i32 %a, %b ; <i32> [#uses=1] 1847eb9723SSanne Wouda ret i32 %tmp1 1947eb9723SSanne Wouda} 2047eb9723SSanne Wouda 2147eb9723SSanne Woudadefine i32 @f3(i32 %a, i32 %b) { 2247eb9723SSanne Woudaentry: 2347eb9723SSanne Wouda; CHECK-LABEL: f3 2447eb9723SSanne Wouda 2547eb9723SSanne Wouda 2647eb9723SSanne Wouda %tmp1 = srem i32 %a, %b ; <i32> [#uses=1] 2747eb9723SSanne Wouda ret i32 %tmp1 2847eb9723SSanne Wouda; CHECK: sdiv 2947eb9723SSanne Wouda; CHECK-NEXT: muls 3047eb9723SSanne Wouda; CHECK-NEXT: subs 3147eb9723SSanne Wouda} 3247eb9723SSanne Wouda 3347eb9723SSanne Woudadefine i32 @f4(i32 %a, i32 %b) { 3447eb9723SSanne Woudaentry: 3547eb9723SSanne Wouda; CHECK-LABEL: f4 3647eb9723SSanne Wouda 3747eb9723SSanne Wouda; CHECK: udiv 3847eb9723SSanne Wouda; CHECK-NEXT: muls 3947eb9723SSanne Wouda; CHECK-NEXT: subs 4047eb9723SSanne Wouda %tmp1 = urem i32 %a, %b ; <i32> [#uses=1] 4147eb9723SSanne Wouda ret i32 %tmp1 4247eb9723SSanne Wouda} 4347eb9723SSanne Wouda 4447eb9723SSanne Wouda 4547eb9723SSanne Woudadefine i64 @f5(i64 %a, i64 %b) { 4647eb9723SSanne Woudaentry: 4747eb9723SSanne Wouda; CHECK-LABEL: f5 4847eb9723SSanne Wouda 4947eb9723SSanne Wouda; EABI MODE = Remainder in R2-R3, quotient in R0-R1 5047eb9723SSanne Wouda; CHECK: __aeabi_ldivmod 5147eb9723SSanne Wouda; CHECK-NEXT: mov r0, r2 5247eb9723SSanne Wouda; CHECK-NEXT: mov r1, r3 5347eb9723SSanne Wouda %tmp1 = srem i64 %a, %b ; <i64> [#uses=1] 5447eb9723SSanne Wouda ret i64 %tmp1 5547eb9723SSanne Wouda} 5647eb9723SSanne Wouda 5747eb9723SSanne Woudadefine i64 @f6(i64 %a, i64 %b) { 5847eb9723SSanne Woudaentry: 5947eb9723SSanne Wouda; CHECK-LABEL: f6 6047eb9723SSanne Wouda 6147eb9723SSanne Wouda; EABI MODE = Remainder in R2-R3, quotient in R0-R1 6247eb9723SSanne Wouda; CHECK: __aeabi_uldivmod 6347eb9723SSanne Wouda; CHECK: mov r0, r2 6447eb9723SSanne Wouda; CHECK: mov r1, r3 6547eb9723SSanne Wouda %tmp1 = urem i64 %a, %b ; <i64> [#uses=1] 6647eb9723SSanne Wouda ret i64 %tmp1 6747eb9723SSanne Wouda} 68