blob: 7bf049fa9d47245fa66ed22eacf51910a65e8c8c [file] [log] [blame]
Bob Wilsond48ca592009-10-07 23:47:21 +00001; RUN: llc < %s -march=arm -mattr=+neon | FileCheck %s
Bob Wilsone60fee02009-06-22 23:27:02 +00002
3define <8 x i8> @vmovni16(<8 x i16>* %A) nounwind {
Bob Wilsond48ca592009-10-07 23:47:21 +00004;CHECK: vmovni16:
5;CHECK: vmovn.i16
Bob Wilsone60fee02009-06-22 23:27:02 +00006 %tmp1 = load <8 x i16>* %A
7 %tmp2 = call <8 x i8> @llvm.arm.neon.vmovn.v8i8(<8 x i16> %tmp1)
8 ret <8 x i8> %tmp2
9}
10
11define <4 x i16> @vmovni32(<4 x i32>* %A) nounwind {
Bob Wilsond48ca592009-10-07 23:47:21 +000012;CHECK: vmovni32:
13;CHECK: vmovn.i32
Bob Wilsone60fee02009-06-22 23:27:02 +000014 %tmp1 = load <4 x i32>* %A
15 %tmp2 = call <4 x i16> @llvm.arm.neon.vmovn.v4i16(<4 x i32> %tmp1)
16 ret <4 x i16> %tmp2
17}
18
19define <2 x i32> @vmovni64(<2 x i64>* %A) nounwind {
Bob Wilsond48ca592009-10-07 23:47:21 +000020;CHECK: vmovni64:
21;CHECK: vmovn.i64
Bob Wilsone60fee02009-06-22 23:27:02 +000022 %tmp1 = load <2 x i64>* %A
23 %tmp2 = call <2 x i32> @llvm.arm.neon.vmovn.v2i32(<2 x i64> %tmp1)
24 ret <2 x i32> %tmp2
25}
26
27declare <8 x i8> @llvm.arm.neon.vmovn.v8i8(<8 x i16>) nounwind readnone
28declare <4 x i16> @llvm.arm.neon.vmovn.v4i16(<4 x i32>) nounwind readnone
29declare <2 x i32> @llvm.arm.neon.vmovn.v2i32(<2 x i64>) nounwind readnone