~louis/ubuntu/trusty/clamav/lp799623_fix_logrotate

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/test/CodeGen/ARM/vmov.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 < %s -march=arm -mattr=+neon | FileCheck %s
 
2
 
 
3
define <8 x i8> @v_movi8() nounwind {
 
4
;CHECK: v_movi8:
 
5
;CHECK: vmov.i8
 
6
        ret <8 x i8> < i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8 >
 
7
}
 
8
 
 
9
define <4 x i16> @v_movi16a() nounwind {
 
10
;CHECK: v_movi16a:
 
11
;CHECK: vmov.i16
 
12
        ret <4 x i16> < i16 16, i16 16, i16 16, i16 16 >
 
13
}
 
14
 
 
15
; 0x1000 = 4096
 
16
define <4 x i16> @v_movi16b() nounwind {
 
17
;CHECK: v_movi16b:
 
18
;CHECK: vmov.i16
 
19
        ret <4 x i16> < i16 4096, i16 4096, i16 4096, i16 4096 >
 
20
}
 
21
 
 
22
define <2 x i32> @v_movi32a() nounwind {
 
23
;CHECK: v_movi32a:
 
24
;CHECK: vmov.i32
 
25
        ret <2 x i32> < i32 32, i32 32 >
 
26
}
 
27
 
 
28
; 0x2000 = 8192
 
29
define <2 x i32> @v_movi32b() nounwind {
 
30
;CHECK: v_movi32b:
 
31
;CHECK: vmov.i32
 
32
        ret <2 x i32> < i32 8192, i32 8192 >
 
33
}
 
34
 
 
35
; 0x200000 = 2097152
 
36
define <2 x i32> @v_movi32c() nounwind {
 
37
;CHECK: v_movi32c:
 
38
;CHECK: vmov.i32
 
39
        ret <2 x i32> < i32 2097152, i32 2097152 >
 
40
}
 
41
 
 
42
; 0x20000000 = 536870912
 
43
define <2 x i32> @v_movi32d() nounwind {
 
44
;CHECK: v_movi32d:
 
45
;CHECK: vmov.i32
 
46
        ret <2 x i32> < i32 536870912, i32 536870912 >
 
47
}
 
48
 
 
49
; 0x20ff = 8447
 
50
define <2 x i32> @v_movi32e() nounwind {
 
51
;CHECK: v_movi32e:
 
52
;CHECK: vmov.i32
 
53
        ret <2 x i32> < i32 8447, i32 8447 >
 
54
}
 
55
 
 
56
; 0x20ffff = 2162687
 
57
define <2 x i32> @v_movi32f() nounwind {
 
58
;CHECK: v_movi32f:
 
59
;CHECK: vmov.i32
 
60
        ret <2 x i32> < i32 2162687, i32 2162687 >
 
61
}
 
62
 
 
63
; 0xff0000ff0000ffff = 18374687574888349695
 
64
define <1 x i64> @v_movi64() nounwind {
 
65
;CHECK: v_movi64:
 
66
;CHECK: vmov.i64
 
67
        ret <1 x i64> < i64 18374687574888349695 >
 
68
}
 
69
 
 
70
define <16 x i8> @v_movQi8() nounwind {
 
71
;CHECK: v_movQi8:
 
72
;CHECK: vmov.i8
 
73
        ret <16 x i8> < i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8 >
 
74
}
 
75
 
 
76
define <8 x i16> @v_movQi16a() nounwind {
 
77
;CHECK: v_movQi16a:
 
78
;CHECK: vmov.i16
 
79
        ret <8 x i16> < i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16, i16 16 >
 
80
}
 
81
 
 
82
; 0x1000 = 4096
 
83
define <8 x i16> @v_movQi16b() nounwind {
 
84
;CHECK: v_movQi16b:
 
85
;CHECK: vmov.i16
 
86
        ret <8 x i16> < i16 4096, i16 4096, i16 4096, i16 4096, i16 4096, i16 4096, i16 4096, i16 4096 >
 
87
}
 
88
 
 
89
define <4 x i32> @v_movQi32a() nounwind {
 
90
;CHECK: v_movQi32a:
 
91
;CHECK: vmov.i32
 
92
        ret <4 x i32> < i32 32, i32 32, i32 32, i32 32 >
 
93
}
 
94
 
 
95
; 0x2000 = 8192
 
96
define <4 x i32> @v_movQi32b() nounwind {
 
97
;CHECK: v_movQi32b:
 
98
;CHECK: vmov.i32
 
99
        ret <4 x i32> < i32 8192, i32 8192, i32 8192, i32 8192 >
 
100
}
 
101
 
 
102
; 0x200000 = 2097152
 
103
define <4 x i32> @v_movQi32c() nounwind {
 
104
;CHECK: v_movQi32c:
 
105
;CHECK: vmov.i32
 
106
        ret <4 x i32> < i32 2097152, i32 2097152, i32 2097152, i32 2097152 >
 
107
}
 
108
 
 
109
; 0x20000000 = 536870912
 
110
define <4 x i32> @v_movQi32d() nounwind {
 
111
;CHECK: v_movQi32d:
 
112
;CHECK: vmov.i32
 
113
        ret <4 x i32> < i32 536870912, i32 536870912, i32 536870912, i32 536870912 >
 
114
}
 
115
 
 
116
; 0x20ff = 8447
 
117
define <4 x i32> @v_movQi32e() nounwind {
 
118
;CHECK: v_movQi32e:
 
119
;CHECK: vmov.i32
 
120
        ret <4 x i32> < i32 8447, i32 8447, i32 8447, i32 8447 >
 
121
}
 
122
 
 
123
; 0x20ffff = 2162687
 
124
define <4 x i32> @v_movQi32f() nounwind {
 
125
;CHECK: v_movQi32f:
 
126
;CHECK: vmov.i32
 
127
        ret <4 x i32> < i32 2162687, i32 2162687, i32 2162687, i32 2162687 >
 
128
}
 
129
 
 
130
; 0xff0000ff0000ffff = 18374687574888349695
 
131
define <2 x i64> @v_movQi64() nounwind {
 
132
;CHECK: v_movQi64:
 
133
;CHECK: vmov.i64
 
134
        ret <2 x i64> < i64 18374687574888349695, i64 18374687574888349695 >
 
135
}
 
136
 
 
137
; Check for correct assembler printing for immediate values.
 
138
%struct.int8x8_t = type { <8 x i8> }
 
139
define arm_apcscc void @vdupn128(%struct.int8x8_t* noalias nocapture sret %agg.result) nounwind {
 
140
entry:
 
141
;CHECK: vdupn128:
 
142
;CHECK: vmov.i8 d0, #0x80
 
143
  %0 = getelementptr inbounds %struct.int8x8_t* %agg.result, i32 0, i32 0 ; <<8 x i8>*> [#uses=1]
 
144
  store <8 x i8> <i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128, i8 -128>, <8 x i8>* %0, align 8
 
145
  ret void
 
146
}
 
147
 
 
148
define arm_apcscc void @vdupnneg75(%struct.int8x8_t* noalias nocapture sret %agg.result) nounwind {
 
149
entry:
 
150
;CHECK: vdupnneg75:
 
151
;CHECK: vmov.i8 d0, #0xB5
 
152
  %0 = getelementptr inbounds %struct.int8x8_t* %agg.result, i32 0, i32 0 ; <<8 x i8>*> [#uses=1]
 
153
  store <8 x i8> <i8 -75, i8 -75, i8 -75, i8 -75, i8 -75, i8 -75, i8 -75, i8 -75>, <8 x i8>* %0, align 8
 
154
  ret void
 
155
}
 
156
 
 
157
define <8 x i16> @vmovls8(<8 x i8>* %A) nounwind {
 
158
;CHECK: vmovls8:
 
159
;CHECK: vmovl.s8
 
160
        %tmp1 = load <8 x i8>* %A
 
161
        %tmp2 = call <8 x i16> @llvm.arm.neon.vmovls.v8i16(<8 x i8> %tmp1)
 
162
        ret <8 x i16> %tmp2
 
163
}
 
164
 
 
165
define <4 x i32> @vmovls16(<4 x i16>* %A) nounwind {
 
166
;CHECK: vmovls16:
 
167
;CHECK: vmovl.s16
 
168
        %tmp1 = load <4 x i16>* %A
 
169
        %tmp2 = call <4 x i32> @llvm.arm.neon.vmovls.v4i32(<4 x i16> %tmp1)
 
170
        ret <4 x i32> %tmp2
 
171
}
 
172
 
 
173
define <2 x i64> @vmovls32(<2 x i32>* %A) nounwind {
 
174
;CHECK: vmovls32:
 
175
;CHECK: vmovl.s32
 
176
        %tmp1 = load <2 x i32>* %A
 
177
        %tmp2 = call <2 x i64> @llvm.arm.neon.vmovls.v2i64(<2 x i32> %tmp1)
 
178
        ret <2 x i64> %tmp2
 
179
}
 
180
 
 
181
define <8 x i16> @vmovlu8(<8 x i8>* %A) nounwind {
 
182
;CHECK: vmovlu8:
 
183
;CHECK: vmovl.u8
 
184
        %tmp1 = load <8 x i8>* %A
 
185
        %tmp2 = call <8 x i16> @llvm.arm.neon.vmovlu.v8i16(<8 x i8> %tmp1)
 
186
        ret <8 x i16> %tmp2
 
187
}
 
188
 
 
189
define <4 x i32> @vmovlu16(<4 x i16>* %A) nounwind {
 
190
;CHECK: vmovlu16:
 
191
;CHECK: vmovl.u16
 
192
        %tmp1 = load <4 x i16>* %A
 
193
        %tmp2 = call <4 x i32> @llvm.arm.neon.vmovlu.v4i32(<4 x i16> %tmp1)
 
194
        ret <4 x i32> %tmp2
 
195
}
 
196
 
 
197
define <2 x i64> @vmovlu32(<2 x i32>* %A) nounwind {
 
198
;CHECK: vmovlu32:
 
199
;CHECK: vmovl.u32
 
200
        %tmp1 = load <2 x i32>* %A
 
201
        %tmp2 = call <2 x i64> @llvm.arm.neon.vmovlu.v2i64(<2 x i32> %tmp1)
 
202
        ret <2 x i64> %tmp2
 
203
}
 
204
 
 
205
declare <8 x i16> @llvm.arm.neon.vmovls.v8i16(<8 x i8>) nounwind readnone
 
206
declare <4 x i32> @llvm.arm.neon.vmovls.v4i32(<4 x i16>) nounwind readnone
 
207
declare <2 x i64> @llvm.arm.neon.vmovls.v2i64(<2 x i32>) nounwind readnone
 
208
 
 
209
declare <8 x i16> @llvm.arm.neon.vmovlu.v8i16(<8 x i8>) nounwind readnone
 
210
declare <4 x i32> @llvm.arm.neon.vmovlu.v4i32(<4 x i16>) nounwind readnone
 
211
declare <2 x i64> @llvm.arm.neon.vmovlu.v2i64(<2 x i32>) nounwind readnone
 
212
 
 
213
define <8 x i8> @vmovni16(<8 x i16>* %A) nounwind {
 
214
;CHECK: vmovni16:
 
215
;CHECK: vmovn.i16
 
216
        %tmp1 = load <8 x i16>* %A
 
217
        %tmp2 = call <8 x i8> @llvm.arm.neon.vmovn.v8i8(<8 x i16> %tmp1)
 
218
        ret <8 x i8> %tmp2
 
219
}
 
220
 
 
221
define <4 x i16> @vmovni32(<4 x i32>* %A) nounwind {
 
222
;CHECK: vmovni32:
 
223
;CHECK: vmovn.i32
 
224
        %tmp1 = load <4 x i32>* %A
 
225
        %tmp2 = call <4 x i16> @llvm.arm.neon.vmovn.v4i16(<4 x i32> %tmp1)
 
226
        ret <4 x i16> %tmp2
 
227
}
 
228
 
 
229
define <2 x i32> @vmovni64(<2 x i64>* %A) nounwind {
 
230
;CHECK: vmovni64:
 
231
;CHECK: vmovn.i64
 
232
        %tmp1 = load <2 x i64>* %A
 
233
        %tmp2 = call <2 x i32> @llvm.arm.neon.vmovn.v2i32(<2 x i64> %tmp1)
 
234
        ret <2 x i32> %tmp2
 
235
}
 
236
 
 
237
declare <8 x i8>  @llvm.arm.neon.vmovn.v8i8(<8 x i16>) nounwind readnone
 
238
declare <4 x i16> @llvm.arm.neon.vmovn.v4i16(<4 x i32>) nounwind readnone
 
239
declare <2 x i32> @llvm.arm.neon.vmovn.v2i32(<2 x i64>) nounwind readnone
 
240
 
 
241
define <8 x i8> @vqmovns16(<8 x i16>* %A) nounwind {
 
242
;CHECK: vqmovns16:
 
243
;CHECK: vqmovn.s16
 
244
        %tmp1 = load <8 x i16>* %A
 
245
        %tmp2 = call <8 x i8> @llvm.arm.neon.vqmovns.v8i8(<8 x i16> %tmp1)
 
246
        ret <8 x i8> %tmp2
 
247
}
 
248
 
 
249
define <4 x i16> @vqmovns32(<4 x i32>* %A) nounwind {
 
250
;CHECK: vqmovns32:
 
251
;CHECK: vqmovn.s32
 
252
        %tmp1 = load <4 x i32>* %A
 
253
        %tmp2 = call <4 x i16> @llvm.arm.neon.vqmovns.v4i16(<4 x i32> %tmp1)
 
254
        ret <4 x i16> %tmp2
 
255
}
 
256
 
 
257
define <2 x i32> @vqmovns64(<2 x i64>* %A) nounwind {
 
258
;CHECK: vqmovns64:
 
259
;CHECK: vqmovn.s64
 
260
        %tmp1 = load <2 x i64>* %A
 
261
        %tmp2 = call <2 x i32> @llvm.arm.neon.vqmovns.v2i32(<2 x i64> %tmp1)
 
262
        ret <2 x i32> %tmp2
 
263
}
 
264
 
 
265
define <8 x i8> @vqmovnu16(<8 x i16>* %A) nounwind {
 
266
;CHECK: vqmovnu16:
 
267
;CHECK: vqmovn.u16
 
268
        %tmp1 = load <8 x i16>* %A
 
269
        %tmp2 = call <8 x i8> @llvm.arm.neon.vqmovnu.v8i8(<8 x i16> %tmp1)
 
270
        ret <8 x i8> %tmp2
 
271
}
 
272
 
 
273
define <4 x i16> @vqmovnu32(<4 x i32>* %A) nounwind {
 
274
;CHECK: vqmovnu32:
 
275
;CHECK: vqmovn.u32
 
276
        %tmp1 = load <4 x i32>* %A
 
277
        %tmp2 = call <4 x i16> @llvm.arm.neon.vqmovnu.v4i16(<4 x i32> %tmp1)
 
278
        ret <4 x i16> %tmp2
 
279
}
 
280
 
 
281
define <2 x i32> @vqmovnu64(<2 x i64>* %A) nounwind {
 
282
;CHECK: vqmovnu64:
 
283
;CHECK: vqmovn.u64
 
284
        %tmp1 = load <2 x i64>* %A
 
285
        %tmp2 = call <2 x i32> @llvm.arm.neon.vqmovnu.v2i32(<2 x i64> %tmp1)
 
286
        ret <2 x i32> %tmp2
 
287
}
 
288
 
 
289
define <8 x i8> @vqmovuns16(<8 x i16>* %A) nounwind {
 
290
;CHECK: vqmovuns16:
 
291
;CHECK: vqmovun.s16
 
292
        %tmp1 = load <8 x i16>* %A
 
293
        %tmp2 = call <8 x i8> @llvm.arm.neon.vqmovnsu.v8i8(<8 x i16> %tmp1)
 
294
        ret <8 x i8> %tmp2
 
295
}
 
296
 
 
297
define <4 x i16> @vqmovuns32(<4 x i32>* %A) nounwind {
 
298
;CHECK: vqmovuns32:
 
299
;CHECK: vqmovun.s32
 
300
        %tmp1 = load <4 x i32>* %A
 
301
        %tmp2 = call <4 x i16> @llvm.arm.neon.vqmovnsu.v4i16(<4 x i32> %tmp1)
 
302
        ret <4 x i16> %tmp2
 
303
}
 
304
 
 
305
define <2 x i32> @vqmovuns64(<2 x i64>* %A) nounwind {
 
306
;CHECK: vqmovuns64:
 
307
;CHECK: vqmovun.s64
 
308
        %tmp1 = load <2 x i64>* %A
 
309
        %tmp2 = call <2 x i32> @llvm.arm.neon.vqmovnsu.v2i32(<2 x i64> %tmp1)
 
310
        ret <2 x i32> %tmp2
 
311
}
 
312
 
 
313
declare <8 x i8>  @llvm.arm.neon.vqmovns.v8i8(<8 x i16>) nounwind readnone
 
314
declare <4 x i16> @llvm.arm.neon.vqmovns.v4i16(<4 x i32>) nounwind readnone
 
315
declare <2 x i32> @llvm.arm.neon.vqmovns.v2i32(<2 x i64>) nounwind readnone
 
316
 
 
317
declare <8 x i8>  @llvm.arm.neon.vqmovnu.v8i8(<8 x i16>) nounwind readnone
 
318
declare <4 x i16> @llvm.arm.neon.vqmovnu.v4i16(<4 x i32>) nounwind readnone
 
319
declare <2 x i32> @llvm.arm.neon.vqmovnu.v2i32(<2 x i64>) nounwind readnone
 
320
 
 
321
declare <8 x i8>  @llvm.arm.neon.vqmovnsu.v8i8(<8 x i16>) nounwind readnone
 
322
declare <4 x i16> @llvm.arm.neon.vqmovnsu.v4i16(<4 x i32>) nounwind readnone
 
323
declare <2 x i32> @llvm.arm.neon.vqmovnsu.v2i32(<2 x i64>) nounwind readnone