blob: 8b7153503b1f87113eecb464f26a8a44287a2840 [file] [log] [blame]
James Molloy1ea64732012-04-05 10:01:12 +00001; RUN: llc -mtriple armv7 %s -o - | FileCheck %s
2
Stephen Lind24ab202013-07-14 06:24:09 +00003; CHECK-LABEL: f:
James Molloy1ea64732012-04-05 10:01:12 +00004define float @f(<4 x i16>* nocapture %in) {
Ahmed Bougacha4200cc92015-03-05 19:37:53 +00005 ; CHECK: vld1
James Molloy1ea64732012-04-05 10:01:12 +00006 ; CHECK: vmovl.u16
7 ; CHECK-NOT: vand
David Blaikiea79ac142015-02-27 21:17:42 +00008 %1 = load <4 x i16>, <4 x i16>* %in
James Molloy1ea64732012-04-05 10:01:12 +00009 ; CHECK: vcvt.f32.u32
10 %2 = uitofp <4 x i16> %1 to <4 x float>
11 %3 = extractelement <4 x float> %2, i32 0
12 %4 = extractelement <4 x float> %2, i32 1
13 %5 = extractelement <4 x float> %2, i32 2
14
15 ; CHECK: vadd.f32
16 %6 = fadd float %3, %4
17 %7 = fadd float %6, %5
18
19 ret float %7
20}
21
22define float @g(<4 x i16>* nocapture %in) {
23 ; CHECK: vldr
David Blaikiea79ac142015-02-27 21:17:42 +000024 %1 = load <4 x i16>, <4 x i16>* %in
James Molloy1ea64732012-04-05 10:01:12 +000025 ; CHECK-NOT: uxth
26 %2 = extractelement <4 x i16> %1, i32 0
27 ; CHECK: vcvt.f32.u32
28 %3 = uitofp i16 %2 to float
29 ret float %3
30}