65 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2 3; These tests would be improved by 'movs r0, #0' being rematerialized below the4; tst as 'mov.w r0, #0'.5 6define i32 @f2(i32 %a, i32 %b) {7; CHECK-LABEL: f2:8; CHECK: tst {{.*}}, r19 %tmp = and i32 %a, %b10 %tmp1 = icmp eq i32 %tmp, 011 %ret = select i1 %tmp1, i32 42, i32 2412 ret i32 %ret13}14 15define i32 @f4(i32 %a, i32 %b) {16; CHECK-LABEL: f4:17; CHECK: tst {{.*}}, r118 %tmp = and i32 %a, %b19 %tmp1 = icmp eq i32 0, %tmp20 %ret = select i1 %tmp1, i32 42, i32 2421 ret i32 %ret22}23 24define i32 @f6(i32 %a, i32 %b) {25; CHECK-LABEL: f6:26; CHECK: tst.w {{.*}}, r1, lsl #527 %tmp = shl i32 %b, 528 %tmp1 = and i32 %a, %tmp29 %tmp2 = icmp eq i32 %tmp1, 030 %ret = select i1 %tmp2, i32 42, i32 2431 ret i32 %ret32}33 34define i32 @f7(i32 %a, i32 %b) {35; CHECK-LABEL: f7:36; CHECK: tst.w {{.*}}, r1, lsr #637 %tmp = lshr i32 %b, 638 %tmp1 = and i32 %a, %tmp39 %tmp2 = icmp eq i32 %tmp1, 040 %ret = select i1 %tmp2, i32 42, i32 2441 ret i32 %ret42}43 44define i32 @f8(i32 %a, i32 %b) {45; CHECK-LABEL: f8:46; CHECK: tst.w {{.*}}, r1, asr #747 %tmp = ashr i32 %b, 748 %tmp1 = and i32 %a, %tmp49 %tmp2 = icmp eq i32 %tmp1, 050 %ret = select i1 %tmp2, i32 42, i32 2451 ret i32 %ret52}53 54define i32 @f9(i32 %a, i32 %b) {55; CHECK-LABEL: f9:56; CHECK: tst.w {{.*}}, {{.*}}, ror #857 %l8 = shl i32 %a, 2458 %r8 = lshr i32 %a, 859 %tmp = or i32 %l8, %r860 %tmp1 = and i32 %a, %tmp61 %tmp2 = icmp eq i32 %tmp1, 062 %ret = select i1 %tmp2, i32 42, i32 2463 ret i32 %ret64}65