1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=arm-eabi -mattr=+neon -mcpu=cortex-a9 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; PR4986 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine arm_aapcs_vfpcc void @foo(i8* nocapture %pBuffer, i32 %numItems) nounwind { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker br i1 undef, label %return, label %bb.preheader 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerbb.preheader: ; preds = %entry 10*9880d681SAndroid Build Coastguard Worker br label %bb 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerbb: ; preds = %bb, %bb.preheader 13*9880d681SAndroid Build Coastguard Worker %0 = shufflevector <4 x float> zeroinitializer, <4 x float> undef, <4 x i32> zeroinitializer ; <<4 x float>> [#uses=1] 14*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x float> %0, float undef, i32 1 ; <<4 x float>> [#uses=1] 15*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x float> %1, float undef, i32 2 ; <<4 x float>> [#uses=1] 16*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x float> %2, float undef, i32 3 ; <<4 x float>> [#uses=1] 17*9880d681SAndroid Build Coastguard Worker %4 = fmul <4 x float> undef, %3 ; <<4 x float>> [#uses=1] 18*9880d681SAndroid Build Coastguard Worker %5 = extractelement <4 x float> %4, i32 3 ; <float> [#uses=1] 19*9880d681SAndroid Build Coastguard Worker store float %5, float* undef, align 4 20*9880d681SAndroid Build Coastguard Worker br i1 undef, label %return, label %bb 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerreturn: ; preds = %bb, %entry 23*9880d681SAndroid Build Coastguard Worker ret void 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine arm_aapcs_vfpcc <4 x float> @bar(i8* nocapture %pBuffer, i32 %numItems) nounwind { 27*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <4 x float> zeroinitializer, <4 x float> undef, <4 x i32> zeroinitializer ; <<4 x float>> [#uses=1] 28*9880d681SAndroid Build Coastguard Worker %2 = insertelement <4 x float> %1, float undef, i32 1 ; <<4 x float>> [#uses=1] 29*9880d681SAndroid Build Coastguard Worker %3 = insertelement <4 x float> %2, float undef, i32 2 ; <<4 x float>> [#uses=1] 30*9880d681SAndroid Build Coastguard Worker %4 = insertelement <4 x float> %3, float undef, i32 3 ; <<4 x float>> [#uses=1] 31*9880d681SAndroid Build Coastguard Worker %5 = shufflevector <4 x float> %4, <4 x float> undef, <2 x i32> <i32 0, i32 1> ; <<2 x float>> [#uses=1] 32*9880d681SAndroid Build Coastguard Worker %6 = shufflevector <2 x float> %5, <2 x float> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x float>> [#uses=1] 33*9880d681SAndroid Build Coastguard Worker ret <4 x float> %6 34*9880d681SAndroid Build Coastguard Worker} 35