ARM pop of a single register encodes as post-indexed LDR.
[oota-llvm.git] / test / CodeGen / ARM / neon_div.ll
1 ; RUN: llc < %s -march=arm -mattr=+neon -pre-RA-sched=source | FileCheck %s
2
3 define <8 x i8> @sdivi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
4 ;CHECK: vrecpe.f32
5 ;CHECK: vrecpe.f32
6 ;CHECK: vmovn.i32
7 ;CHECK: vmovn.i32
8 ;CHECK: vmovn.i16
9         %tmp1 = load <8 x i8>* %A
10         %tmp2 = load <8 x i8>* %B
11         %tmp3 = sdiv <8 x i8> %tmp1, %tmp2
12         ret <8 x i8> %tmp3
13 }
14
15 define <8 x i8> @udivi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
16 ;CHECK: vrecpe.f32
17 ;CHECK: vrecps.f32
18 ;CHECK: vrecpe.f32
19 ;CHECK: vrecps.f32
20 ;CHECK: vmovn.i32
21 ;CHECK: vmovn.i32
22 ;CHECK: vqmovun.s16
23         %tmp1 = load <8 x i8>* %A
24         %tmp2 = load <8 x i8>* %B
25         %tmp3 = udiv <8 x i8> %tmp1, %tmp2
26         ret <8 x i8> %tmp3
27 }
28
29 define <4 x i16> @sdivi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
30 ;CHECK: vrecpe.f32
31 ;CHECK: vrecps.f32
32 ;CHECK: vmovn.i32
33         %tmp1 = load <4 x i16>* %A
34         %tmp2 = load <4 x i16>* %B
35         %tmp3 = sdiv <4 x i16> %tmp1, %tmp2
36         ret <4 x i16> %tmp3
37 }
38
39 define <4 x i16> @udivi16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
40 ;CHECK: vrecpe.f32
41 ;CHECK: vrecps.f32
42 ;CHECK: vrecps.f32
43 ;CHECK: vmovn.i32
44         %tmp1 = load <4 x i16>* %A
45         %tmp2 = load <4 x i16>* %B
46         %tmp3 = udiv <4 x i16> %tmp1, %tmp2
47         ret <4 x i16> %tmp3
48 }