~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/CodeGen/ARM/vqdmul.ll

  • Committer: Bazaar Package Importer
  • Author(s): Scott Kitterman
  • Date: 2010-03-12 11:30:04 UTC
  • mfrom: (0.41.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100312113004-b0fop4bkycszdd0z
Tags: 0.96~rc1+dfsg-0ubuntu1
* New upstream RC - FFE (LP: #537636):
  - Add OfficialDatabaseOnly option to clamav-base.postinst.in
  - Add LocalSocketGroup option to clamav-base.postinst.in
  - Add LocalSocketMode option to clamav-base.postinst.in
  - Add CrossFilesystems option to clamav-base.postinst.in
  - Add ClamukoScannerCount option to clamav-base.postinst.in
  - Add BytecodeSecurity opiton to clamav-base.postinst.in
  - Add DetectionStatsHostID option to clamav-freshclam.postinst.in
  - Add Bytecode option to clamav-freshclam.postinst.in
  - Add MilterSocketGroup option to clamav-milter.postinst.in
  - Add MilterSocketMode option to clamav-milter.postinst.in
  - Add ReportHostname option to clamav-milter.postinst.in
  - Bump libclamav SO version to 6.1.0 in libclamav6.install
  - Drop clamdmon from clamav.examples (no longer shipped by upstream)
  - Drop libclamav.a from libclamav-dev.install (not built by upstream)
  - Update SO version for lintian override for libclamav6
  - Add new Bytecode Testing Tool, usr/bin/clambc, to clamav.install
  - Add build-depends on python and python-setuptools for new test suite
  - Update debian/copyright for the embedded copy of llvm (using the system
    llvm is not currently feasible)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; RUN: llc -mattr=+neon < %s | FileCheck %s
 
2
target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32"
 
3
target triple = "thumbv7-elf"
 
4
 
 
5
define <4 x i16> @vqdmulhs16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
 
6
;CHECK: vqdmulhs16:
 
7
;CHECK: vqdmulh.s16
 
8
        %tmp1 = load <4 x i16>* %A
 
9
        %tmp2 = load <4 x i16>* %B
 
10
        %tmp3 = call <4 x i16> @llvm.arm.neon.vqdmulh.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
 
11
        ret <4 x i16> %tmp3
 
12
}
 
13
 
 
14
define <2 x i32> @vqdmulhs32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
 
15
;CHECK: vqdmulhs32:
 
16
;CHECK: vqdmulh.s32
 
17
        %tmp1 = load <2 x i32>* %A
 
18
        %tmp2 = load <2 x i32>* %B
 
19
        %tmp3 = call <2 x i32> @llvm.arm.neon.vqdmulh.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
 
20
        ret <2 x i32> %tmp3
 
21
}
 
22
 
 
23
define <8 x i16> @vqdmulhQs16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
 
24
;CHECK: vqdmulhQs16:
 
25
;CHECK: vqdmulh.s16
 
26
        %tmp1 = load <8 x i16>* %A
 
27
        %tmp2 = load <8 x i16>* %B
 
28
        %tmp3 = call <8 x i16> @llvm.arm.neon.vqdmulh.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
 
29
        ret <8 x i16> %tmp3
 
30
}
 
31
 
 
32
define <4 x i32> @vqdmulhQs32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
 
33
;CHECK: vqdmulhQs32:
 
34
;CHECK: vqdmulh.s32
 
35
        %tmp1 = load <4 x i32>* %A
 
36
        %tmp2 = load <4 x i32>* %B
 
37
        %tmp3 = call <4 x i32> @llvm.arm.neon.vqdmulh.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
 
38
        ret <4 x i32> %tmp3
 
39
}
 
40
 
 
41
define arm_aapcs_vfpcc <8 x i16> @test_vqdmulhQ_lanes16(<8 x i16> %arg0_int16x8_t, <4 x i16> %arg1_int16x4_t) nounwind readnone {
 
42
entry:
 
43
; CHECK: test_vqdmulhQ_lanes16
 
44
; CHECK: vqdmulh.s16 q0, q0, d2[1]
 
45
  %0 = shufflevector <4 x i16> %arg1_int16x4_t, <4 x i16> undef, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> ; <<8 x i16>> [#uses=1]
 
46
  %1 = tail call <8 x i16> @llvm.arm.neon.vqdmulh.v8i16(<8 x i16> %arg0_int16x8_t, <8 x i16> %0) ; <<8 x i16>> [#uses=1]
 
47
  ret <8 x i16> %1
 
48
}
 
49
 
 
50
define arm_aapcs_vfpcc <4 x i32> @test_vqdmulhQ_lanes32(<4 x i32> %arg0_int32x4_t, <2 x i32> %arg1_int32x2_t) nounwind readnone {
 
51
entry:
 
52
; CHECK: test_vqdmulhQ_lanes32
 
53
; CHECK: vqdmulh.s32 q0, q0, d2[1]
 
54
  %0 = shufflevector <2 x i32> %arg1_int32x2_t, <2 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x i32>> [#uses=1]
 
55
  %1 = tail call <4 x i32> @llvm.arm.neon.vqdmulh.v4i32(<4 x i32> %arg0_int32x4_t, <4 x i32> %0) ; <<4 x i32>> [#uses=1]
 
56
  ret <4 x i32> %1
 
57
}
 
58
 
 
59
define arm_aapcs_vfpcc <4 x i16> @test_vqdmulh_lanes16(<4 x i16> %arg0_int16x4_t, <4 x i16> %arg1_int16x4_t) nounwind readnone {
 
60
entry:
 
61
; CHECK: test_vqdmulh_lanes16
 
62
; CHECK: vqdmulh.s16 d0, d0, d1[1]
 
63
  %0 = shufflevector <4 x i16> %arg1_int16x4_t, <4 x i16> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x i16>> [#uses=1]
 
64
  %1 = tail call <4 x i16> @llvm.arm.neon.vqdmulh.v4i16(<4 x i16> %arg0_int16x4_t, <4 x i16> %0) ; <<4 x i16>> [#uses=1]
 
65
  ret <4 x i16> %1
 
66
}
 
67
 
 
68
define arm_aapcs_vfpcc <2 x i32> @test_vqdmulh_lanes32(<2 x i32> %arg0_int32x2_t, <2 x i32> %arg1_int32x2_t) nounwind readnone {
 
69
entry:
 
70
; CHECK: test_vqdmulh_lanes32
 
71
; CHECK: vqdmulh.s32 d0, d0, d1[1]
 
72
  %0 = shufflevector <2 x i32> %arg1_int32x2_t, <2 x i32> undef, <2 x i32> <i32 1, i32 1> ; <<2 x i32>> [#uses=1]
 
73
  %1 = tail call <2 x i32> @llvm.arm.neon.vqdmulh.v2i32(<2 x i32> %arg0_int32x2_t, <2 x i32> %0) ; <<2 x i32>> [#uses=1]
 
74
  ret <2 x i32> %1
 
75
}
 
76
 
 
77
declare <4 x i16> @llvm.arm.neon.vqdmulh.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
 
78
declare <2 x i32> @llvm.arm.neon.vqdmulh.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
 
79
 
 
80
declare <8 x i16> @llvm.arm.neon.vqdmulh.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
 
81
declare <4 x i32> @llvm.arm.neon.vqdmulh.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
 
82
 
 
83
define <4 x i16> @vqrdmulhs16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
 
84
;CHECK: vqrdmulhs16:
 
85
;CHECK: vqrdmulh.s16
 
86
        %tmp1 = load <4 x i16>* %A
 
87
        %tmp2 = load <4 x i16>* %B
 
88
        %tmp3 = call <4 x i16> @llvm.arm.neon.vqrdmulh.v4i16(<4 x i16> %tmp1, <4 x i16> %tmp2)
 
89
        ret <4 x i16> %tmp3
 
90
}
 
91
 
 
92
define <2 x i32> @vqrdmulhs32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
 
93
;CHECK: vqrdmulhs32:
 
94
;CHECK: vqrdmulh.s32
 
95
        %tmp1 = load <2 x i32>* %A
 
96
        %tmp2 = load <2 x i32>* %B
 
97
        %tmp3 = call <2 x i32> @llvm.arm.neon.vqrdmulh.v2i32(<2 x i32> %tmp1, <2 x i32> %tmp2)
 
98
        ret <2 x i32> %tmp3
 
99
}
 
100
 
 
101
define <8 x i16> @vqrdmulhQs16(<8 x i16>* %A, <8 x i16>* %B) nounwind {
 
102
;CHECK: vqrdmulhQs16:
 
103
;CHECK: vqrdmulh.s16
 
104
        %tmp1 = load <8 x i16>* %A
 
105
        %tmp2 = load <8 x i16>* %B
 
106
        %tmp3 = call <8 x i16> @llvm.arm.neon.vqrdmulh.v8i16(<8 x i16> %tmp1, <8 x i16> %tmp2)
 
107
        ret <8 x i16> %tmp3
 
108
}
 
109
 
 
110
define <4 x i32> @vqrdmulhQs32(<4 x i32>* %A, <4 x i32>* %B) nounwind {
 
111
;CHECK: vqrdmulhQs32:
 
112
;CHECK: vqrdmulh.s32
 
113
        %tmp1 = load <4 x i32>* %A
 
114
        %tmp2 = load <4 x i32>* %B
 
115
        %tmp3 = call <4 x i32> @llvm.arm.neon.vqrdmulh.v4i32(<4 x i32> %tmp1, <4 x i32> %tmp2)
 
116
        ret <4 x i32> %tmp3
 
117
}
 
118
 
 
119
define arm_aapcs_vfpcc <8 x i16> @test_vqRdmulhQ_lanes16(<8 x i16> %arg0_int16x8_t, <4 x i16> %arg1_int16x4_t) nounwind readnone {
 
120
entry:
 
121
; CHECK: test_vqRdmulhQ_lanes16
 
122
; CHECK: vqrdmulh.s16 q0, q0, d2[1]
 
123
  %0 = shufflevector <4 x i16> %arg1_int16x4_t, <4 x i16> undef, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1> ; <<8 x i16>> [#uses=1]
 
124
  %1 = tail call <8 x i16> @llvm.arm.neon.vqrdmulh.v8i16(<8 x i16> %arg0_int16x8_t, <8 x i16> %0) ; <<8 x i16>> [#uses=1]
 
125
  ret <8 x i16> %1
 
126
}
 
127
 
 
128
define arm_aapcs_vfpcc <4 x i32> @test_vqRdmulhQ_lanes32(<4 x i32> %arg0_int32x4_t, <2 x i32> %arg1_int32x2_t) nounwind readnone {
 
129
entry:
 
130
; CHECK: test_vqRdmulhQ_lanes32
 
131
; CHECK: vqrdmulh.s32 q0, q0, d2[1]
 
132
  %0 = shufflevector <2 x i32> %arg1_int32x2_t, <2 x i32> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x i32>> [#uses=1]
 
133
  %1 = tail call <4 x i32> @llvm.arm.neon.vqrdmulh.v4i32(<4 x i32> %arg0_int32x4_t, <4 x i32> %0) ; <<4 x i32>> [#uses=1]
 
134
  ret <4 x i32> %1
 
135
}
 
136
 
 
137
define arm_aapcs_vfpcc <4 x i16> @test_vqRdmulh_lanes16(<4 x i16> %arg0_int16x4_t, <4 x i16> %arg1_int16x4_t) nounwind readnone {
 
138
entry:
 
139
; CHECK: test_vqRdmulh_lanes16
 
140
; CHECK: vqrdmulh.s16 d0, d0, d1[1]
 
141
  %0 = shufflevector <4 x i16> %arg1_int16x4_t, <4 x i16> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x i16>> [#uses=1]
 
142
  %1 = tail call <4 x i16> @llvm.arm.neon.vqrdmulh.v4i16(<4 x i16> %arg0_int16x4_t, <4 x i16> %0) ; <<4 x i16>> [#uses=1]
 
143
  ret <4 x i16> %1
 
144
}
 
145
 
 
146
define arm_aapcs_vfpcc <2 x i32> @test_vqRdmulh_lanes32(<2 x i32> %arg0_int32x2_t, <2 x i32> %arg1_int32x2_t) nounwind readnone {
 
147
entry:
 
148
; CHECK: test_vqRdmulh_lanes32
 
149
; CHECK: vqrdmulh.s32 d0, d0, d1[1]
 
150
  %0 = shufflevector <2 x i32> %arg1_int32x2_t, <2 x i32> undef, <2 x i32> <i32 1, i32 1> ; <<2 x i32>> [#uses=1]
 
151
  %1 = tail call <2 x i32> @llvm.arm.neon.vqrdmulh.v2i32(<2 x i32> %arg0_int32x2_t, <2 x i32> %0) ; <<2 x i32>> [#uses=1]
 
152
  ret <2 x i32> %1
 
153
}
 
154
 
 
155
declare <2 x i32> @llvm.arm.neon.vqrdmulh.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
 
156
declare <4 x i16> @llvm.arm.neon.vqrdmulh.v4i16(<4 x i16>, <4 x i16>) nounwind readnone
 
157
declare <2 x i32> @llvm.arm.neon.vqrdmulh.v2i32(<2 x i32>, <2 x i32>) nounwind readnone
 
158
 
 
159
declare <8 x i16> @llvm.arm.neon.vqrdmulh.v8i16(<8 x i16>, <8 x i16>) nounwind readnone
 
160
declare <4 x i32> @llvm.arm.neon.vqrdmulh.v4i32(<4 x i32>, <4 x i32>) nounwind readnone
 
161
 
 
162
define <4 x i32> @vqdmulls16(<4 x i16>* %A, <4 x i16>* %B) nounwind {
 
163
;CHECK: vqdmulls16:
 
164
;CHECK: vqdmull.s16
 
165
        %tmp1 = load <4 x i16>* %A
 
166
        %tmp2 = load <4 x i16>* %B
 
167
        %tmp3 = call <4 x i32> @llvm.arm.neon.vqdmull.v4i32(<4 x i16> %tmp1, <4 x i16> %tmp2)
 
168
        ret <4 x i32> %tmp3
 
169
}
 
170
 
 
171
define <2 x i64> @vqdmulls32(<2 x i32>* %A, <2 x i32>* %B) nounwind {
 
172
;CHECK: vqdmulls32:
 
173
;CHECK: vqdmull.s32
 
174
        %tmp1 = load <2 x i32>* %A
 
175
        %tmp2 = load <2 x i32>* %B
 
176
        %tmp3 = call <2 x i64> @llvm.arm.neon.vqdmull.v2i64(<2 x i32> %tmp1, <2 x i32> %tmp2)
 
177
        ret <2 x i64> %tmp3
 
178
}
 
179
 
 
180
define arm_aapcs_vfpcc <4 x i32> @test_vqdmull_lanes16(<4 x i16> %arg0_int16x4_t, <4 x i16> %arg1_int16x4_t) nounwind readnone {
 
181
entry:
 
182
; CHECK: test_vqdmull_lanes16
 
183
; CHECK: vqdmull.s16 q0, d0, d1[1]
 
184
  %0 = shufflevector <4 x i16> %arg1_int16x4_t, <4 x i16> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x i16>> [#uses=1]
 
185
  %1 = tail call <4 x i32> @llvm.arm.neon.vqdmull.v4i32(<4 x i16> %arg0_int16x4_t, <4 x i16> %0) ; <<4 x i32>> [#uses=1]
 
186
  ret <4 x i32> %1
 
187
}
 
188
 
 
189
define arm_aapcs_vfpcc <2 x i64> @test_vqdmull_lanes32(<2 x i32> %arg0_int32x2_t, <2 x i32> %arg1_int32x2_t) nounwind readnone {
 
190
entry:
 
191
; CHECK: test_vqdmull_lanes32
 
192
; CHECK: vqdmull.s32 q0, d0, d1[1]
 
193
  %0 = shufflevector <2 x i32> %arg1_int32x2_t, <2 x i32> undef, <2 x i32> <i32 1, i32 1> ; <<2 x i32>> [#uses=1]
 
194
  %1 = tail call <2 x i64> @llvm.arm.neon.vqdmull.v2i64(<2 x i32> %arg0_int32x2_t, <2 x i32> %0) ; <<2 x i64>> [#uses=1]
 
195
  ret <2 x i64> %1
 
196
}
 
197
 
 
198
declare <4 x i32>  @llvm.arm.neon.vqdmull.v4i32(<4 x i16>, <4 x i16>) nounwind readnone
 
199
declare <2 x i64>  @llvm.arm.neon.vqdmull.v2i64(<2 x i32>, <2 x i32>) nounwind readnone
 
200
 
 
201
define <4 x i32> @vqdmlals16(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind {
 
202
;CHECK: vqdmlals16:
 
203
;CHECK: vqdmlal.s16
 
204
        %tmp1 = load <4 x i32>* %A
 
205
        %tmp2 = load <4 x i16>* %B
 
206
        %tmp3 = load <4 x i16>* %C
 
207
        %tmp4 = call <4 x i32> @llvm.arm.neon.vqdmlal.v4i32(<4 x i32> %tmp1, <4 x i16> %tmp2, <4 x i16> %tmp3)
 
208
        ret <4 x i32> %tmp4
 
209
}
 
210
 
 
211
define <2 x i64> @vqdmlals32(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind {
 
212
;CHECK: vqdmlals32:
 
213
;CHECK: vqdmlal.s32
 
214
        %tmp1 = load <2 x i64>* %A
 
215
        %tmp2 = load <2 x i32>* %B
 
216
        %tmp3 = load <2 x i32>* %C
 
217
        %tmp4 = call <2 x i64> @llvm.arm.neon.vqdmlal.v2i64(<2 x i64> %tmp1, <2 x i32> %tmp2, <2 x i32> %tmp3)
 
218
        ret <2 x i64> %tmp4
 
219
}
 
220
 
 
221
define arm_aapcs_vfpcc <4 x i32> @test_vqdmlal_lanes16(<4 x i32> %arg0_int32x4_t, <4 x i16> %arg1_int16x4_t, <4 x i16> %arg2_int16x4_t) nounwind readnone {
 
222
entry:
 
223
; CHECK: test_vqdmlal_lanes16
 
224
; CHECK: vqdmlal.s16 q0, d2, d3[1]
 
225
  %0 = shufflevector <4 x i16> %arg2_int16x4_t, <4 x i16> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x i16>> [#uses=1]
 
226
  %1 = tail call <4 x i32> @llvm.arm.neon.vqdmlal.v4i32(<4 x i32> %arg0_int32x4_t, <4 x i16> %arg1_int16x4_t, <4 x i16> %0) ; <<4 x i32>> [#uses=1]
 
227
  ret <4 x i32> %1
 
228
}
 
229
 
 
230
define arm_aapcs_vfpcc <2 x i64> @test_vqdmlal_lanes32(<2 x i64> %arg0_int64x2_t, <2 x i32> %arg1_int32x2_t, <2 x i32> %arg2_int32x2_t) nounwind readnone {
 
231
entry:
 
232
; CHECK: test_vqdmlal_lanes32
 
233
; CHECK: vqdmlal.s32 q0, d2, d3[1]
 
234
  %0 = shufflevector <2 x i32> %arg2_int32x2_t, <2 x i32> undef, <2 x i32> <i32 1, i32 1> ; <<2 x i32>> [#uses=1]
 
235
  %1 = tail call <2 x i64> @llvm.arm.neon.vqdmlal.v2i64(<2 x i64> %arg0_int64x2_t, <2 x i32> %arg1_int32x2_t, <2 x i32> %0) ; <<2 x i64>> [#uses=1]
 
236
  ret <2 x i64> %1
 
237
}
 
238
 
 
239
declare <4 x i32>  @llvm.arm.neon.vqdmlal.v4i32(<4 x i32>, <4 x i16>, <4 x i16>) nounwind readnone
 
240
declare <2 x i64>  @llvm.arm.neon.vqdmlal.v2i64(<2 x i64>, <2 x i32>, <2 x i32>) nounwind readnone
 
241
 
 
242
define <4 x i32> @vqdmlsls16(<4 x i32>* %A, <4 x i16>* %B, <4 x i16>* %C) nounwind {
 
243
;CHECK: vqdmlsls16:
 
244
;CHECK: vqdmlsl.s16
 
245
        %tmp1 = load <4 x i32>* %A
 
246
        %tmp2 = load <4 x i16>* %B
 
247
        %tmp3 = load <4 x i16>* %C
 
248
        %tmp4 = call <4 x i32> @llvm.arm.neon.vqdmlsl.v4i32(<4 x i32> %tmp1, <4 x i16> %tmp2, <4 x i16> %tmp3)
 
249
        ret <4 x i32> %tmp4
 
250
}
 
251
 
 
252
define <2 x i64> @vqdmlsls32(<2 x i64>* %A, <2 x i32>* %B, <2 x i32>* %C) nounwind {
 
253
;CHECK: vqdmlsls32:
 
254
;CHECK: vqdmlsl.s32
 
255
        %tmp1 = load <2 x i64>* %A
 
256
        %tmp2 = load <2 x i32>* %B
 
257
        %tmp3 = load <2 x i32>* %C
 
258
        %tmp4 = call <2 x i64> @llvm.arm.neon.vqdmlsl.v2i64(<2 x i64> %tmp1, <2 x i32> %tmp2, <2 x i32> %tmp3)
 
259
        ret <2 x i64> %tmp4
 
260
}
 
261
 
 
262
define arm_aapcs_vfpcc <4 x i32> @test_vqdmlsl_lanes16(<4 x i32> %arg0_int32x4_t, <4 x i16> %arg1_int16x4_t, <4 x i16> %arg2_int16x4_t) nounwind readnone {
 
263
entry:
 
264
; CHECK: test_vqdmlsl_lanes16
 
265
; CHECK: vqdmlsl.s16 q0, d2, d3[1]
 
266
  %0 = shufflevector <4 x i16> %arg2_int16x4_t, <4 x i16> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1> ; <<4 x i16>> [#uses=1]
 
267
  %1 = tail call <4 x i32> @llvm.arm.neon.vqdmlsl.v4i32(<4 x i32> %arg0_int32x4_t, <4 x i16> %arg1_int16x4_t, <4 x i16> %0) ; <<4 x i32>> [#uses=1]
 
268
  ret <4 x i32> %1
 
269
}
 
270
 
 
271
define arm_aapcs_vfpcc <2 x i64> @test_vqdmlsl_lanes32(<2 x i64> %arg0_int64x2_t, <2 x i32> %arg1_int32x2_t, <2 x i32> %arg2_int32x2_t) nounwind readnone {
 
272
entry:
 
273
; CHECK: test_vqdmlsl_lanes32
 
274
; CHECK: vqdmlsl.s32 q0, d2, d3[1]
 
275
  %0 = shufflevector <2 x i32> %arg2_int32x2_t, <2 x i32> undef, <2 x i32> <i32 1, i32 1> ; <<2 x i32>> [#uses=1]
 
276
  %1 = tail call <2 x i64> @llvm.arm.neon.vqdmlsl.v2i64(<2 x i64> %arg0_int64x2_t, <2 x i32> %arg1_int32x2_t, <2 x i32> %0) ; <<2 x i64>> [#uses=1]
 
277
  ret <2 x i64> %1
 
278
}
 
279
 
 
280
declare <4 x i32>  @llvm.arm.neon.vqdmlsl.v4i32(<4 x i32>, <4 x i16>, <4 x i16>) nounwind readnone
 
281
declare <2 x i64>  @llvm.arm.neon.vqdmlsl.v2i64(<2 x i64>, <2 x i32>, <2 x i32>) nounwind readnone