d6d03d0970f56b1b68982ac73cc79e67810954ba
[oota-llvm.git] / test / Bitcode / neon-intrinsics.ll
1 ; RUN: llvm-dis < %s.bc | FileCheck %s
2
3 ; vmovls should be auto-upgraded to sext
4
5 ; CHECK: vmovls8
6 ; CHECK-NOT: arm.neon.vmovls.v8i16
7 ; CHECK: sext <8 x i8>
8
9 ; CHECK: vmovls16
10 ; CHECK-NOT: arm.neon.vmovls.v4i32
11 ; CHECK: sext <4 x i16>
12
13 ; CHECK: vmovls32
14 ; CHECK-NOT: arm.neon.vmovls.v2i64
15 ; CHECK: sext <2 x i32>
16
17 ; vmovlu should be auto-upgraded to zext
18
19 ; CHECK: vmovlu8
20 ; CHECK-NOT: arm.neon.vmovlu.v8i16
21 ; CHECK: zext <8 x i8>
22
23 ; CHECK: vmovlu16
24 ; CHECK-NOT: arm.neon.vmovlu.v4i32
25 ; CHECK: zext <4 x i16>
26
27 ; CHECK: vmovlu32
28 ; CHECK-NOT: arm.neon.vmovlu.v2i64
29 ; CHECK: zext <2 x i32>
30
31 ; vaddl/vaddw should be auto-upgraded to add with sext/zext
32
33 ; CHECK: vaddls16
34 ; CHECK-NOT: arm.neon.vaddls.v4i32
35 ; CHECK: sext <4 x i16>
36 ; CHECK-NEXT: sext <4 x i16>
37 ; CHECK-NEXT: add <4 x i32>
38
39 ; CHECK: vaddlu32
40 ; CHECK-NOT: arm.neon.vaddlu.v2i64
41 ; CHECK: zext <2 x i32>
42 ; CHECK-NEXT: zext <2 x i32>
43 ; CHECK-NEXT: add <2 x i64>
44
45 ; CHECK: vaddws8
46 ; CHECK-NOT: arm.neon.vaddws.v8i16
47 ; CHECK: sext <8 x i8>
48 ; CHECK-NEXT: add <8 x i16>
49
50 ; CHECK: vaddwu16
51 ; CHECK-NOT: arm.neon.vaddwu.v4i32
52 ; CHECK: zext <4 x i16>
53 ; CHECK-NEXT: add <4 x i32>
54
55 ; vsubl/vsubw should be auto-upgraded to sub with sext/zext
56
57 ; CHECK: vsubls16
58 ; CHECK-NOT: arm.neon.vsubls.v4i32
59 ; CHECK: sext <4 x i16>
60 ; CHECK-NEXT: sext <4 x i16>
61 ; CHECK-NEXT: sub <4 x i32>
62
63 ; CHECK: vsublu32
64 ; CHECK-NOT: arm.neon.vsublu.v2i64
65 ; CHECK: zext <2 x i32>
66 ; CHECK-NEXT: zext <2 x i32>
67 ; CHECK-NEXT: sub <2 x i64>
68
69 ; CHECK: vsubws8
70 ; CHECK-NOT: arm.neon.vsubws.v8i16
71 ; CHECK: sext <8 x i8>
72 ; CHECK-NEXT: sub <8 x i16>
73
74 ; CHECK: vsubwu16
75 ; CHECK-NOT: arm.neon.vsubwu.v4i32
76 ; CHECK: zext <4 x i16>
77 ; CHECK-NEXT: sub <4 x i32>
78
79 ; vld* and vst* intrinsic calls need an alignment argument (defaulted to 1)
80
81 ; CHECK: vld1i8
82 ; CHECK: i32 1
83 ; CHECK: vld2Qi16
84 ; CHECK: i32 1
85 ; CHECK: vld3i32
86 ; CHECK: i32 1
87 ; CHECK: vld4Qf
88 ; CHECK: i32 1
89
90 ; CHECK: vst1i8
91 ; CHECK: i32 1
92 ; CHECK: vst2Qi16
93 ; CHECK: i32 1
94 ; CHECK: vst3i32
95 ; CHECK: i32 1
96 ; CHECK: vst4Qf
97 ; CHECK: i32 1
98
99 ; CHECK: vld2laneQi16
100 ; CHECK: i32 1
101 ; CHECK: vld3lanei32
102 ; CHECK: i32 1
103 ; CHECK: vld4laneQf
104 ; CHECK: i32 1
105
106 ; CHECK: vst2laneQi16
107 ; CHECK: i32 1
108 ; CHECK: vst3lanei32
109 ; CHECK: i32 1
110 ; CHECK: vst4laneQf
111 ; CHECK: i32 1