54 lines · plain
1; RUN: llc < %s -mtriple=armv6-apple-ios0.0.0 -mcpu=arm1136jf-s -verify-machineinstrs | FileCheck %s2; RUN: llc -mtriple=thumbv6m-eabi -mattr=+execute-only -verify-machineinstrs %s -o - | FileCheck --check-prefix=CHECK-T1 %s3target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"4 5; Don't CSE a cmp across a call that clobbers CPSR.6;7; CHECK: cmp8 9; CHECK-T1: movs [[REG:r[0-7]+]], :upper8_15:10; CHECK-T1-NEXT: lsls [[REG]], [[REG]], #811; CHECK-T1-NEXT: adds [[REG]], :upper0_7:12; CHECK-T1-NEXT: lsls [[REG]], [[REG]], #813; CHECK-T1-NEXT: adds [[REG]], :lower8_15:14; CHECK-T1-NEXT: lsls [[REG]], [[REG]], #815; CHECK-T1-NEXT: adds [[REG]], :lower0_7:16 17; CHECK-T1: movs [[REG:r[0-7]+]], :upper8_15:18; CHECK-T1-NEXT: lsls [[REG]], [[REG]], #819; CHECK-T1-NEXT: adds [[REG]], :upper0_7:20; CHECK-T1-NEXT: lsls [[REG]], [[REG]], #821; CHECK-T1-NEXT: adds [[REG]], :lower8_15:22; CHECK-T1-NEXT: lsls [[REG]], [[REG]], #823; CHECK-T1-NEXT: adds [[REG]], :lower0_7:24 25; CHECK-T1: cmp26 27; CHECK: S_trimzeros28; CHECK-T1: S_trimzeros29; CHECK-NOT: moveq30; CHECK-T1-NOT: beq31; CHECK: strlen32 33@F_floatmul.man1 = external global [200 x i8], align 134@F_floatmul.man2 = external global [200 x i8], align 135 36declare i32 @strlen(ptr nocapture) nounwind readonly37declare void @S_trimzeros(...)38 39define ptr @F_floatmul(ptr %f1, ptr %f2, i32 %a, i32 %b) nounwind ssp {40entry:41 %0 = icmp eq i32 %a, %b42 br i1 %0, label %while.end42, label %while.body3743 44while.body37: ; preds = %while.body37, %entry45 br i1 false, label %while.end42, label %while.body3746 47while.end42: ; preds = %while.body37, %entry48 %. = select i1 %0, ptr @F_floatmul.man1, ptr @F_floatmul.man249 %.92 = select i1 %0, ptr @F_floatmul.man2, ptr @F_floatmul.man150 tail call void @S_trimzeros(ptr %.92) nounwind51 %call47 = tail call i32 @strlen(ptr %.) nounwind52 unreachable53}54