94 lines · plain
1; RUN: llc -mtriple=thumb-eabi -mcpu=arm1156t2-s -mattr=+thumb2 %s -o - | FileCheck %s2 3; These tests could be improved by 'movs r0, #0' being rematerialized below the4; test as 'mov.w r0, #0'.5 6define i32 @f1(i32 %a, i32 %b) {7 %nb = sub i32 0, %b8 %tmp = icmp ne i32 %a, %nb9 %ret = select i1 %tmp, i32 42, i32 2410 ret i32 %ret11}12; CHECK-LABEL: f1:13; CHECK: cmn {{.*}}, r114 15define i32 @f2(i32 %a, i32 %b) {16 %nb = sub i32 0, %b17 %tmp = icmp ne i32 %nb, %a18 %ret = select i1 %tmp, i32 42, i32 2419 ret i32 %ret20}21; CHECK-LABEL: f2:22; CHECK: cmn {{.*}}, r123 24define i32 @f3(i32 %a, i32 %b) {25 %nb = sub i32 0, %b26 %tmp = icmp eq i32 %a, %nb27 %ret = select i1 %tmp, i32 42, i32 2428 ret i32 %ret29}30; CHECK-LABEL: f3:31; CHECK: cmn {{.*}}, r132 33define i32 @f4(i32 %a, i32 %b) {34 %nb = sub i32 0, %b35 %tmp = icmp eq i32 %nb, %a36 %ret = select i1 %tmp, i32 42, i32 2437 ret i32 %ret38}39; CHECK-LABEL: f4:40; CHECK: cmn {{.*}}, r141 42define i32 @f5(i32 %a, i32 %b) {43 %tmp = shl i32 %b, 544 %nb = sub i32 0, %tmp45 %tmp1 = icmp eq i32 %nb, %a46 %ret = select i1 %tmp1, i32 42, i32 2447 ret i32 %ret48}49; CHECK-LABEL: f5:50; CHECK: cmn.w {{.*}}, r1, lsl #551 52define i32 @f6(i32 %a, i32 %b) {53 %tmp = lshr i32 %b, 654 %nb = sub i32 0, %tmp55 %tmp1 = icmp ne i32 %nb, %a56 %ret = select i1 %tmp1, i32 42, i32 2457 ret i32 %ret58}59; CHECK-LABEL: f6:60; CHECK: cmn.w {{.*}}, r1, lsr #661 62define i32 @f7(i32 %a, i32 %b) {63 %tmp = ashr i32 %b, 764 %nb = sub i32 0, %tmp65 %tmp1 = icmp eq i32 %a, %nb66 %ret = select i1 %tmp1, i32 42, i32 2467 ret i32 %ret68}69; CHECK-LABEL: f7:70; CHECK: cmn.w {{.*}}, r1, asr #771 72define i32 @f8(i32 %a, i32 %b) {73 %l8 = shl i32 %a, 2474 %r8 = lshr i32 %a, 875 %tmp = or i32 %l8, %r876 %nb = sub i32 0, %tmp77 %tmp1 = icmp ne i32 %a, %nb78 %ret = select i1 %tmp1, i32 42, i32 2479 ret i32 %ret80}81; CHECK-LABEL: f8:82; CHECK: cmn.w {{.*}}, {{.*}}, ror #883 84 85define void @f9(i32 %a, i32 %b) nounwind optsize {86 tail call void asm sideeffect "cmn.w r0, r1", ""() nounwind, !srcloc !087 ret void88}89 90!0 = !{i32 81}91 92; CHECK-LABEL: f9:93; CHECK: cmn.w r0, r194