1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=arm -mcpu=cortex-a8 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; XFAIL: * 3*9880d681SAndroid Build Coastguard Worker; PR11364 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; vmov s0, r0 + vmov r0, s0 should have been optimized away. 6*9880d681SAndroid Build Coastguard Worker; rdar://9104514 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; Peephole leaves a dead vmovsr instruction behind, and depends on linear scan 9*9880d681SAndroid Build Coastguard Worker; to remove it. 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Workerdefine void @t(float %x) nounwind ssp { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: t: 14*9880d681SAndroid Build Coastguard Worker; CHECK-NOT: vmov 15*9880d681SAndroid Build Coastguard Worker; CHECK: bl 16*9880d681SAndroid Build Coastguard Worker %0 = bitcast float %x to i32 17*9880d681SAndroid Build Coastguard Worker %cmp = icmp ult i32 %0, 2139095039 18*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %if.then, label %if.end 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerif.then: ; preds = %entry 21*9880d681SAndroid Build Coastguard Worker tail call void @doSomething(float %x) nounwind 22*9880d681SAndroid Build Coastguard Worker br label %if.end 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerif.end: ; preds = %if.then, %entry 25*9880d681SAndroid Build Coastguard Worker ret void 26*9880d681SAndroid Build Coastguard Worker} 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Workerdeclare void @doSomething(float) 29