209 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv6-eabi %s -o - | FileCheck %s3 4define void @test1(i32 %x, ptr %f) {5; CHECK-LABEL: test1:6; CHECK: @ %bb.0: @ %entry7; CHECK-NEXT: .save {r7, lr}8; CHECK-NEXT: push {r7, lr}9; CHECK-NEXT: lsls r0, r0, #210; CHECK-NEXT: cmp r0, #6811; CHECK-NEXT: beq .LBB0_212; CHECK-NEXT: @ %bb.1: @ %if.then13; CHECK-NEXT: blx r114; CHECK-NEXT: .LBB0_2: @ %if.end15; CHECK-NEXT: pop {r7, pc}16entry:17 %a = and i32 %x, 107374182318 %cmp = icmp eq i32 %a, 1719 br i1 %cmp, label %if.end, label %if.then20 21if.then:22 tail call void %f()23 br label %if.end24 25if.end:26 ret void27}28 29define void @test2(i32 %x, ptr %f) {30; CHECK-LABEL: test2:31; CHECK: @ %bb.0: @ %entry32; CHECK-NEXT: .save {r7, lr}33; CHECK-NEXT: push {r7, lr}34; CHECK-NEXT: lsls r0, r0, #835; CHECK-NEXT: bhi .LBB1_236; CHECK-NEXT: @ %bb.1: @ %if.then37; CHECK-NEXT: blx r138; CHECK-NEXT: .LBB1_2: @ %if.end39; CHECK-NEXT: pop {r7, pc}40entry:41 %a = shl i32 %x, 742 %cmp = icmp ugt i32 %a, 214748364843 br i1 %cmp, label %if.end, label %if.then44 45if.then:46 tail call void %f()47 br label %if.end48 49if.end:50 ret void51}52 53define void @test3(i32 %x, ptr %f) {54; CHECK-LABEL: test3:55; CHECK: @ %bb.0: @ %entry56; CHECK-NEXT: .save {r7, lr}57; CHECK-NEXT: push {r7, lr}58; CHECK-NEXT: lsls r0, r0, #359; CHECK-NEXT: bhi .LBB2_260; CHECK-NEXT: @ %bb.1: @ %if.then61; CHECK-NEXT: blx r162; CHECK-NEXT: .LBB2_2: @ %if.end63; CHECK-NEXT: pop {r7, pc}64entry:65 %a = and i32 %x, 107374182366 %cmp = icmp ugt i32 %a, 53687091267 br i1 %cmp, label %if.end, label %if.then68 69if.then:70 tail call void %f()71 br label %if.end72 73if.end:74 ret void75}76 77define void @test4(i32 %x, ptr %f) {78; CHECK-LABEL: test4:79; CHECK: @ %bb.0: @ %entry80; CHECK-NEXT: .save {r7, lr}81; CHECK-NEXT: push {r7, lr}82; CHECK-NEXT: uxtb r0, r083; CHECK-NEXT: cmp r0, #1784; CHECK-NEXT: beq .LBB3_285; CHECK-NEXT: @ %bb.1: @ %if.then86; CHECK-NEXT: blx r187; CHECK-NEXT: .LBB3_2: @ %if.end88; CHECK-NEXT: pop {r7, pc}89entry:90 %a = and i32 %x, 25591 %cmp = icmp eq i32 %a, 1792 br i1 %cmp, label %if.end, label %if.then93 94if.then:95 tail call void %f()96 br label %if.end97 98if.end:99 ret void100}101 102define void @test5(i32 %x, ptr %f) {103; CHECK-LABEL: test5:104; CHECK: @ %bb.0: @ %entry105; CHECK-NEXT: .save {r7, lr}106; CHECK-NEXT: push {r7, lr}107; CHECK-NEXT: uxth r0, r0108; CHECK-NEXT: cmp r0, #17109; CHECK-NEXT: beq .LBB4_2110; CHECK-NEXT: @ %bb.1: @ %if.then111; CHECK-NEXT: blx r1112; CHECK-NEXT: .LBB4_2: @ %if.end113; CHECK-NEXT: pop {r7, pc}114entry:115 %a = and i32 %x, 65535116 %cmp = icmp eq i32 %a, 17117 br i1 %cmp, label %if.end, label %if.then118 119if.then:120 tail call void %f()121 br label %if.end122 123if.end:124 ret void125}126 127define void @test6(i32 %x, ptr %f) {128; CHECK-LABEL: test6:129; CHECK: @ %bb.0: @ %entry130; CHECK-NEXT: .save {r7, lr}131; CHECK-NEXT: push {r7, lr}132; CHECK-NEXT: movs r2, #32133; CHECK-NEXT: ands r2, r0134; CHECK-NEXT: cmp r2, #17135; CHECK-NEXT: beq .LBB5_2136; CHECK-NEXT: @ %bb.1: @ %if.then137; CHECK-NEXT: blx r1138; CHECK-NEXT: .LBB5_2: @ %if.end139; CHECK-NEXT: pop {r7, pc}140entry:141 %a = and i32 %x, 32142 %cmp = icmp eq i32 %a, 17143 br i1 %cmp, label %if.end, label %if.then144 145if.then:146 tail call void %f()147 br label %if.end148 149if.end:150 ret void151}152 153define void @test7(i32 %x, ptr %f) {154; CHECK-LABEL: test7:155; CHECK: @ %bb.0: @ %entry156; CHECK-NEXT: .save {r7, lr}157; CHECK-NEXT: push {r7, lr}158; CHECK-NEXT: ldr r2, .LCPI6_0159; CHECK-NEXT: ands r2, r0160; CHECK-NEXT: cmp r2, #17161; CHECK-NEXT: beq .LBB6_2162; CHECK-NEXT: @ %bb.1: @ %if.then163; CHECK-NEXT: blx r1164; CHECK-NEXT: .LBB6_2: @ %if.end165; CHECK-NEXT: pop {r7, pc}166; CHECK-NEXT: .p2align 2167; CHECK-NEXT: @ %bb.3:168; CHECK-NEXT: .LCPI6_0:169; CHECK-NEXT: .long 1023 @ 0x3ff170entry:171 %a = and i32 %x, 1023172 %cmp = icmp eq i32 %a, 17173 br i1 %cmp, label %if.end, label %if.then174 175if.then:176 tail call void %f()177 br label %if.end178 179if.end:180 ret void181}182 183define void @test8(i32 %x, ptr %f) {184; CHECK-LABEL: test8:185; CHECK: @ %bb.0: @ %entry186; CHECK-NEXT: .save {r7, lr}187; CHECK-NEXT: push {r7, lr}188; CHECK-NEXT: movs r2, #129189; CHECK-NEXT: lsls r2, r2, #23190; CHECK-NEXT: lsls r0, r0, #22191; CHECK-NEXT: cmp r0, r2192; CHECK-NEXT: beq .LBB7_2193; CHECK-NEXT: @ %bb.1: @ %if.then194; CHECK-NEXT: blx r1195; CHECK-NEXT: .LBB7_2: @ %if.end196; CHECK-NEXT: pop {r7, pc}197entry:198 %a = and i32 %x, 1023199 %cmp = icmp eq i32 %a, 258200 br i1 %cmp, label %if.end, label %if.then201 202if.then:203 tail call void %f()204 br label %if.end205 206if.end:207 ret void208}209