59 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=thumbv6-unknown-linux-gnu | FileCheck %s3 4%umul.ty = type { i32, i1 }5 6define i32 @test1(i32 %a, i1 %x) nounwind {7; CHECK-LABEL: test1:8; CHECK: @ %bb.0:9; CHECK-NEXT: push {r4, r5, r7, lr}10; CHECK-NEXT: mov r5, r111; CHECK-NEXT: movs r2, #3712; CHECK-NEXT: movs r4, #013; CHECK-NEXT: mov r1, r414; CHECK-NEXT: mov r3, r415; CHECK-NEXT: bl __muldi316; CHECK-NEXT: lsls r1, r5, #3117; CHECK-NEXT: beq .LBB0_218; CHECK-NEXT: @ %bb.1:19; CHECK-NEXT: mvns r0, r420; CHECK-NEXT: .LBB0_2:21; CHECK-NEXT: pop {r4, r5, r7, pc}22 %tmp0 = tail call %umul.ty @llvm.umul.with.overflow.i32(i32 %a, i32 37)23 %tmp1 = extractvalue %umul.ty %tmp0, 024 %tmp2 = select i1 %x, i32 -1, i32 %tmp125 ret i32 %tmp226}27 28declare %umul.ty @llvm.umul.with.overflow.i32(i32, i32) nounwind readnone29 30define i32 @test2(ptr %m_degree) ssp {31; CHECK-LABEL: test2:32; CHECK: @ %bb.0:33; CHECK-NEXT: push {r4, lr}34; CHECK-NEXT: ldr r1, [r0]35; CHECK-NEXT: lsls r0, r1, #336; CHECK-NEXT: lsrs r2, r0, #337; CHECK-NEXT: subs r1, r1, r238; CHECK-NEXT: subs r2, r1, #139; CHECK-NEXT: sbcs r1, r240; CHECK-NEXT: movs r4, #041; CHECK-NEXT: cmp r1, #042; CHECK-NEXT: beq .LBB1_243; CHECK-NEXT: @ %bb.1:44; CHECK-NEXT: mvns r0, r445; CHECK-NEXT: .LBB1_2:46; CHECK-NEXT: bl _Znam47; CHECK-NEXT: mov r0, r448; CHECK-NEXT: pop {r4, pc}49%val = load i32, ptr %m_degree, align 450%res = call %umul.ty @llvm.umul.with.overflow.i32(i32 %val, i32 8)51%ov = extractvalue %umul.ty %res, 152%mul = extractvalue %umul.ty %res, 053%sel = select i1 %ov, i32 -1, i32 %mul54%ret = call noalias ptr @_Znam(i32 %sel)55ret i32 056}57 58declare noalias ptr @_Znam(i32)59