1 ; RUN: llc -mtriple armv7 %s -o - | FileCheck %s
4 define float @f(ptr nocapture %in) {
7 %1 = load <4 x i16>, ptr %in
9 %2 = uitofp <4 x i16> %1 to <4 x float>
10 %3 = extractelement <4 x float> %2, i32 0
11 %4 = extractelement <4 x float> %2, i32 1
12 %5 = extractelement <4 x float> %2, i32 2
15 %6 = fadd float %3, %4
16 %7 = fadd float %6, %5
22 define float @g(ptr nocapture %in) {
23 ; Note: vld1 here is reasonably important. Mixing VFP and NEON
24 ; instructions is bad on some cores
28 %1 = load <4 x i8>, ptr %in
30 %2 = uitofp <4 x i8> %1 to <4 x float>
31 %3 = extractelement <4 x float> %2, i32 0
32 %4 = extractelement <4 x float> %2, i32 1
33 %5 = extractelement <4 x float> %2, i32 2
36 %6 = fadd float %3, %4
37 %7 = fadd float %6, %5
43 define <4 x i8> @h(<4 x float> %v) {
44 ; CHECK: vcvt.{{[us]}}32.f32
46 %1 = fptoui <4 x float> %v to <4 x i8>
51 define <4 x i8> @i(ptr %x, <4 x i8> %y) {
52 ; Note: vld1 here is reasonably important. Mixing VFP and NEON
53 ; instructions is bad on some cores
61 %1 = load <4 x i8>, ptr %x, align 4
62 %2 = sdiv <4 x i8> %y, %1
66 define <4 x i32> @j(ptr %in) nounwind {
71 %1 = load <4 x i8>, ptr %in, align 4
72 %2 = zext <4 x i8> %1 to <4 x i32>