1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=arm-eabi -mcpu=cortex-a8 %s -o - | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; Radar 7872877 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine void @test(float* %fltp, i32 %packedValue, float* %table) nounwind { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %fltp 7*9880d681SAndroid Build Coastguard Worker %1 = insertelement <4 x float> undef, float %0, i32 0 8*9880d681SAndroid Build Coastguard Worker %2 = shufflevector <4 x float> %1, <4 x float> undef, <4 x i32> zeroinitializer 9*9880d681SAndroid Build Coastguard Worker %3 = shl i32 %packedValue, 16 10*9880d681SAndroid Build Coastguard Worker %4 = ashr i32 %3, 30 11*9880d681SAndroid Build Coastguard Worker %.sum = add i32 %4, 4 12*9880d681SAndroid Build Coastguard Worker %5 = getelementptr inbounds float, float* %table, i32 %.sum 13*9880d681SAndroid Build Coastguard Worker;CHECK: vldr s 14*9880d681SAndroid Build Coastguard Worker %6 = load float, float* %5, align 4 15*9880d681SAndroid Build Coastguard Worker %tmp11 = insertelement <4 x float> undef, float %6, i32 0 16*9880d681SAndroid Build Coastguard Worker %7 = shl i32 %packedValue, 18 17*9880d681SAndroid Build Coastguard Worker %8 = ashr i32 %7, 30 18*9880d681SAndroid Build Coastguard Worker %.sum12 = add i32 %8, 4 19*9880d681SAndroid Build Coastguard Worker %9 = getelementptr inbounds float, float* %table, i32 %.sum12 20*9880d681SAndroid Build Coastguard Worker;CHECK: vldr s 21*9880d681SAndroid Build Coastguard Worker %10 = load float, float* %9, align 4 22*9880d681SAndroid Build Coastguard Worker %tmp9 = insertelement <4 x float> %tmp11, float %10, i32 1 23*9880d681SAndroid Build Coastguard Worker %11 = shl i32 %packedValue, 20 24*9880d681SAndroid Build Coastguard Worker %12 = ashr i32 %11, 30 25*9880d681SAndroid Build Coastguard Worker %.sum13 = add i32 %12, 4 26*9880d681SAndroid Build Coastguard Worker %13 = getelementptr inbounds float, float* %table, i32 %.sum13 27*9880d681SAndroid Build Coastguard Worker;CHECK: vldr s 28*9880d681SAndroid Build Coastguard Worker %14 = load float, float* %13, align 4 29*9880d681SAndroid Build Coastguard Worker %tmp7 = insertelement <4 x float> %tmp9, float %14, i32 2 30*9880d681SAndroid Build Coastguard Worker %15 = shl i32 %packedValue, 22 31*9880d681SAndroid Build Coastguard Worker %16 = ashr i32 %15, 30 32*9880d681SAndroid Build Coastguard Worker %.sum14 = add i32 %16, 4 33*9880d681SAndroid Build Coastguard Worker %17 = getelementptr inbounds float, float* %table, i32 %.sum14 34*9880d681SAndroid Build Coastguard Worker;CHECK: vldr s 35*9880d681SAndroid Build Coastguard Worker %18 = load float, float* %17, align 4 36*9880d681SAndroid Build Coastguard Worker %tmp5 = insertelement <4 x float> %tmp7, float %18, i32 3 37*9880d681SAndroid Build Coastguard Worker %19 = fmul <4 x float> %tmp5, %2 38*9880d681SAndroid Build Coastguard Worker %20 = bitcast float* %fltp to i8* 39*9880d681SAndroid Build Coastguard Worker tail call void @llvm.arm.neon.vst1.p0i8.v4f32(i8* %20, <4 x float> %19, i32 1) 40*9880d681SAndroid Build Coastguard Worker ret void 41*9880d681SAndroid Build Coastguard Worker} 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.arm.neon.vst1.p0i8.v4f32(i8*, <4 x float>, i32) nounwind 44