125 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; This test check if redundant truncate for eq/ne cmp is skipped during code gen.3;RUN: llc -mtriple=thumbv7-eabi < %s | FileCheck %s4 5define void @test_zero(i16 signext %x) optsize {6; CHECK-LABEL: test_zero:7; CHECK: @ %bb.0: @ %entry8; CHECK-NEXT: cbz r0, .LBB0_29; CHECK-NEXT: @ %bb.1: @ %if.then10; CHECK-NEXT: b foo111; CHECK-NEXT: .LBB0_2: @ %if.else12; CHECK-NEXT: b foo213entry:14 %tobool = icmp eq i16 %x, 015 br i1 %tobool, label %if.else, label %if.then16if.then: ; preds = %entry17 tail call void @foo1()18 br label %if.end19 20if.else: ; preds = %entry21 tail call void @foo2()22 br label %if.end23 24if.end: ; preds = %if.else, %if.then25 ret void26}27 28define void @test_i8_nonzero(i18 signext %x) optsize {29; CHECK-LABEL: test_i8_nonzero:30; CHECK: @ %bb.0: @ %entry31; CHECK-NEXT: cmp r0, #15032; CHECK-NEXT: it eq33; CHECK-NEXT: beq foo234; CHECK-NEXT: .LBB1_1: @ %if.then35; CHECK-NEXT: b foo136entry:37 %tobool = icmp eq i18 %x, 15038 br i1 %tobool, label %if.else, label %if.then39if.then: ; preds = %entry40 tail call void @foo1()41 br label %if.end42 43if.else: ; preds = %entry44 tail call void @foo2()45 br label %if.end46 47if.end: ; preds = %if.else, %if.then48 ret void49}50 51define void @test_i8_i16(i8 signext %x) optsize {52; CHECK-LABEL: test_i8_i16:53; CHECK: @ %bb.0: @ %entry54; CHECK-NEXT: cmp.w r0, #30055; CHECK-NEXT: it eq56; CHECK-NEXT: beq foo257; CHECK-NEXT: .LBB2_1: @ %if.then58; CHECK-NEXT: b foo159entry:60 %x16 = sext i8 %x to i1661 %tobool = icmp eq i16 %x16, 30062 br i1 %tobool, label %if.else, label %if.then63if.then: ; preds = %entry64 tail call void @foo1()65 br label %if.end66 67if.else: ; preds = %entry68 tail call void @foo2()69 br label %if.end70 71if.end: ; preds = %if.else, %if.then72 ret void73}74 75define void @test_i16_i8(i16 signext %x) optsize {76; CHECK-LABEL: test_i16_i8:77; CHECK: @ %bb.0: @ %entry78; CHECK-NEXT: uxtb r0, r079; CHECK-NEXT: cmp r0, #12880; CHECK-NEXT: it eq81; CHECK-NEXT: beq foo282; CHECK-NEXT: .LBB3_1: @ %if.then83; CHECK-NEXT: b foo184entry:85 %x8 = trunc i16 %x to i886 %tobool = icmp eq i8 %x8, 12887 br i1 %tobool, label %if.else, label %if.then88if.then: ; preds = %entry89 tail call void @foo1()90 br label %if.end91 92if.else: ; preds = %entry93 tail call void @foo2()94 br label %if.end95 96if.end: ; preds = %if.else, %if.then97 ret void98}99 100define void @test_zext_zero(i16 zeroext %x) optsize {101; CHECK-LABEL: test_zext_zero:102; CHECK: @ %bb.0: @ %entry103; CHECK-NEXT: cbz r0, .LBB4_2104; CHECK-NEXT: @ %bb.1: @ %if.then105; CHECK-NEXT: b foo1106; CHECK-NEXT: .LBB4_2: @ %if.else107; CHECK-NEXT: b foo2108entry:109 %tobool = icmp eq i16 %x, 0110 br i1 %tobool, label %if.else, label %if.then111if.then: ; preds = %entry112 tail call void @foo1()113 br label %if.end114 115if.else: ; preds = %entry116 tail call void @foo2()117 br label %if.end118 119if.end: ; preds = %if.else, %if.then120 ret void121}122 123declare void @foo1(...)124declare void @foo2(...)125