1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-unknown-linux | FileCheck %s --check-prefix=X86
3 ; RUN: llc < %s -mtriple=x86_64-unknown-linux -mcpu=core2 | FileCheck %s --check-prefix=CORE2
4 ; RUN: llc < %s -mtriple=x86_64-unknown-linux -mcpu=nehalem | FileCheck %s --check-prefix=NEHALEM
5 ; RUN: llc < %s -mtriple=x86_64-unknown-linux -mcpu=sandybridge | FileCheck %s --check-prefix=SANDYBRIDGE
6 ; RUN: llc < %s -mtriple=x86_64-unknown-linux -mcpu=skylake | FileCheck %s --check-prefix=SKYLAKE
9 declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) nounwind
11 define void @memset_0(i8* %a) nounwind {
12 ; X86-LABEL: memset_0:
13 ; X86: # %bb.0: # %entry
16 ; CORE2-LABEL: memset_0:
17 ; CORE2: # %bb.0: # %entry
20 ; NEHALEM-LABEL: memset_0:
21 ; NEHALEM: # %bb.0: # %entry
24 ; SANDYBRIDGE-LABEL: memset_0:
25 ; SANDYBRIDGE: # %bb.0: # %entry
26 ; SANDYBRIDGE-NEXT: retq
28 ; SKYLAKE-LABEL: memset_0:
29 ; SKYLAKE: # %bb.0: # %entry
32 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 0, i1 false)
36 define void @memset_4(i8* %a) nounwind {
37 ; X86-LABEL: memset_4:
38 ; X86: # %bb.0: # %entry
39 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
40 ; X86-NEXT: movl $0, (%eax)
43 ; CORE2-LABEL: memset_4:
44 ; CORE2: # %bb.0: # %entry
45 ; CORE2-NEXT: movl $0, (%rdi)
48 ; NEHALEM-LABEL: memset_4:
49 ; NEHALEM: # %bb.0: # %entry
50 ; NEHALEM-NEXT: movl $0, (%rdi)
53 ; SANDYBRIDGE-LABEL: memset_4:
54 ; SANDYBRIDGE: # %bb.0: # %entry
55 ; SANDYBRIDGE-NEXT: movl $0, (%rdi)
56 ; SANDYBRIDGE-NEXT: retq
58 ; SKYLAKE-LABEL: memset_4:
59 ; SKYLAKE: # %bb.0: # %entry
60 ; SKYLAKE-NEXT: movl $0, (%rdi)
63 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 4, i1 false)
67 define void @memset_5(i8* %a) nounwind {
68 ; X86-LABEL: memset_5:
69 ; X86: # %bb.0: # %entry
70 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
71 ; X86-NEXT: movb $0, 4(%eax)
72 ; X86-NEXT: movl $0, (%eax)
75 ; CORE2-LABEL: memset_5:
76 ; CORE2: # %bb.0: # %entry
77 ; CORE2-NEXT: movb $0, 4(%rdi)
78 ; CORE2-NEXT: movl $0, (%rdi)
81 ; NEHALEM-LABEL: memset_5:
82 ; NEHALEM: # %bb.0: # %entry
83 ; NEHALEM-NEXT: movb $0, 4(%rdi)
84 ; NEHALEM-NEXT: movl $0, (%rdi)
87 ; SANDYBRIDGE-LABEL: memset_5:
88 ; SANDYBRIDGE: # %bb.0: # %entry
89 ; SANDYBRIDGE-NEXT: movb $0, 4(%rdi)
90 ; SANDYBRIDGE-NEXT: movl $0, (%rdi)
91 ; SANDYBRIDGE-NEXT: retq
93 ; SKYLAKE-LABEL: memset_5:
94 ; SKYLAKE: # %bb.0: # %entry
95 ; SKYLAKE-NEXT: movb $0, 4(%rdi)
96 ; SKYLAKE-NEXT: movl $0, (%rdi)
99 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 5, i1 false)
103 define void @memset_7(i8* %a) nounwind {
104 ; X86-LABEL: memset_7:
105 ; X86: # %bb.0: # %entry
106 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
107 ; X86-NEXT: movl $0, 3(%eax)
108 ; X86-NEXT: movl $0, (%eax)
111 ; CORE2-LABEL: memset_7:
112 ; CORE2: # %bb.0: # %entry
113 ; CORE2-NEXT: movl $0, 3(%rdi)
114 ; CORE2-NEXT: movl $0, (%rdi)
117 ; NEHALEM-LABEL: memset_7:
118 ; NEHALEM: # %bb.0: # %entry
119 ; NEHALEM-NEXT: movl $0, 3(%rdi)
120 ; NEHALEM-NEXT: movl $0, (%rdi)
123 ; SANDYBRIDGE-LABEL: memset_7:
124 ; SANDYBRIDGE: # %bb.0: # %entry
125 ; SANDYBRIDGE-NEXT: movl $0, 3(%rdi)
126 ; SANDYBRIDGE-NEXT: movl $0, (%rdi)
127 ; SANDYBRIDGE-NEXT: retq
129 ; SKYLAKE-LABEL: memset_7:
130 ; SKYLAKE: # %bb.0: # %entry
131 ; SKYLAKE-NEXT: movl $0, 3(%rdi)
132 ; SKYLAKE-NEXT: movl $0, (%rdi)
135 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 7, i1 false)
139 define void @memset_8(i8* %a) nounwind {
140 ; X86-LABEL: memset_8:
141 ; X86: # %bb.0: # %entry
142 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
143 ; X86-NEXT: movl $0, 4(%eax)
144 ; X86-NEXT: movl $0, (%eax)
147 ; CORE2-LABEL: memset_8:
148 ; CORE2: # %bb.0: # %entry
149 ; CORE2-NEXT: movq $0, (%rdi)
152 ; NEHALEM-LABEL: memset_8:
153 ; NEHALEM: # %bb.0: # %entry
154 ; NEHALEM-NEXT: movq $0, (%rdi)
157 ; SANDYBRIDGE-LABEL: memset_8:
158 ; SANDYBRIDGE: # %bb.0: # %entry
159 ; SANDYBRIDGE-NEXT: movq $0, (%rdi)
160 ; SANDYBRIDGE-NEXT: retq
162 ; SKYLAKE-LABEL: memset_8:
163 ; SKYLAKE: # %bb.0: # %entry
164 ; SKYLAKE-NEXT: movq $0, (%rdi)
167 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 8, i1 false)
171 define void @memset_11(i8* %a) nounwind {
172 ; X86-LABEL: memset_11:
173 ; X86: # %bb.0: # %entry
174 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
175 ; X86-NEXT: movl $0, 7(%eax)
176 ; X86-NEXT: movl $0, 4(%eax)
177 ; X86-NEXT: movl $0, (%eax)
180 ; CORE2-LABEL: memset_11:
181 ; CORE2: # %bb.0: # %entry
182 ; CORE2-NEXT: movl $0, 7(%rdi)
183 ; CORE2-NEXT: movq $0, (%rdi)
186 ; NEHALEM-LABEL: memset_11:
187 ; NEHALEM: # %bb.0: # %entry
188 ; NEHALEM-NEXT: movl $0, 7(%rdi)
189 ; NEHALEM-NEXT: movq $0, (%rdi)
192 ; SANDYBRIDGE-LABEL: memset_11:
193 ; SANDYBRIDGE: # %bb.0: # %entry
194 ; SANDYBRIDGE-NEXT: movl $0, 7(%rdi)
195 ; SANDYBRIDGE-NEXT: movq $0, (%rdi)
196 ; SANDYBRIDGE-NEXT: retq
198 ; SKYLAKE-LABEL: memset_11:
199 ; SKYLAKE: # %bb.0: # %entry
200 ; SKYLAKE-NEXT: movl $0, 7(%rdi)
201 ; SKYLAKE-NEXT: movq $0, (%rdi)
204 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 11, i1 false)
208 define void @memset_13(i8* %a) nounwind {
209 ; X86-LABEL: memset_13:
210 ; X86: # %bb.0: # %entry
211 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
212 ; X86-NEXT: movb $0, 12(%eax)
213 ; X86-NEXT: movl $0, 8(%eax)
214 ; X86-NEXT: movl $0, 4(%eax)
215 ; X86-NEXT: movl $0, (%eax)
218 ; CORE2-LABEL: memset_13:
219 ; CORE2: # %bb.0: # %entry
220 ; CORE2-NEXT: movq $0, 5(%rdi)
221 ; CORE2-NEXT: movq $0, (%rdi)
224 ; NEHALEM-LABEL: memset_13:
225 ; NEHALEM: # %bb.0: # %entry
226 ; NEHALEM-NEXT: movq $0, 5(%rdi)
227 ; NEHALEM-NEXT: movq $0, (%rdi)
230 ; SANDYBRIDGE-LABEL: memset_13:
231 ; SANDYBRIDGE: # %bb.0: # %entry
232 ; SANDYBRIDGE-NEXT: movq $0, 5(%rdi)
233 ; SANDYBRIDGE-NEXT: movq $0, (%rdi)
234 ; SANDYBRIDGE-NEXT: retq
236 ; SKYLAKE-LABEL: memset_13:
237 ; SKYLAKE: # %bb.0: # %entry
238 ; SKYLAKE-NEXT: movq $0, 5(%rdi)
239 ; SKYLAKE-NEXT: movq $0, (%rdi)
242 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 13, i1 false)
246 define void @memset_15(i8* %a) nounwind {
247 ; X86-LABEL: memset_15:
248 ; X86: # %bb.0: # %entry
249 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
250 ; X86-NEXT: movl $0, 11(%eax)
251 ; X86-NEXT: movl $0, 8(%eax)
252 ; X86-NEXT: movl $0, 4(%eax)
253 ; X86-NEXT: movl $0, (%eax)
256 ; CORE2-LABEL: memset_15:
257 ; CORE2: # %bb.0: # %entry
258 ; CORE2-NEXT: movq $0, 7(%rdi)
259 ; CORE2-NEXT: movq $0, (%rdi)
262 ; NEHALEM-LABEL: memset_15:
263 ; NEHALEM: # %bb.0: # %entry
264 ; NEHALEM-NEXT: movq $0, 7(%rdi)
265 ; NEHALEM-NEXT: movq $0, (%rdi)
268 ; SANDYBRIDGE-LABEL: memset_15:
269 ; SANDYBRIDGE: # %bb.0: # %entry
270 ; SANDYBRIDGE-NEXT: movq $0, 7(%rdi)
271 ; SANDYBRIDGE-NEXT: movq $0, (%rdi)
272 ; SANDYBRIDGE-NEXT: retq
274 ; SKYLAKE-LABEL: memset_15:
275 ; SKYLAKE: # %bb.0: # %entry
276 ; SKYLAKE-NEXT: movq $0, 7(%rdi)
277 ; SKYLAKE-NEXT: movq $0, (%rdi)
280 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 15, i1 false)
284 define void @memset_16(i8* %a) nounwind {
285 ; X86-LABEL: memset_16:
286 ; X86: # %bb.0: # %entry
287 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
288 ; X86-NEXT: movl $0, 12(%eax)
289 ; X86-NEXT: movl $0, 8(%eax)
290 ; X86-NEXT: movl $0, 4(%eax)
291 ; X86-NEXT: movl $0, (%eax)
294 ; CORE2-LABEL: memset_16:
295 ; CORE2: # %bb.0: # %entry
296 ; CORE2-NEXT: movq $0, 8(%rdi)
297 ; CORE2-NEXT: movq $0, (%rdi)
300 ; NEHALEM-LABEL: memset_16:
301 ; NEHALEM: # %bb.0: # %entry
302 ; NEHALEM-NEXT: xorps %xmm0, %xmm0
303 ; NEHALEM-NEXT: movups %xmm0, (%rdi)
306 ; SANDYBRIDGE-LABEL: memset_16:
307 ; SANDYBRIDGE: # %bb.0: # %entry
308 ; SANDYBRIDGE-NEXT: vxorps %xmm0, %xmm0, %xmm0
309 ; SANDYBRIDGE-NEXT: vmovups %xmm0, (%rdi)
310 ; SANDYBRIDGE-NEXT: retq
312 ; SKYLAKE-LABEL: memset_16:
313 ; SKYLAKE: # %bb.0: # %entry
314 ; SKYLAKE-NEXT: vxorps %xmm0, %xmm0, %xmm0
315 ; SKYLAKE-NEXT: vmovups %xmm0, (%rdi)
318 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 16, i1 false)
322 define void @memset_17(i8* %a) nounwind {
323 ; X86-LABEL: memset_17:
324 ; X86: # %bb.0: # %entry
325 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
326 ; X86-NEXT: movb $0, 16(%eax)
327 ; X86-NEXT: movl $0, 12(%eax)
328 ; X86-NEXT: movl $0, 8(%eax)
329 ; X86-NEXT: movl $0, 4(%eax)
330 ; X86-NEXT: movl $0, (%eax)
333 ; CORE2-LABEL: memset_17:
334 ; CORE2: # %bb.0: # %entry
335 ; CORE2-NEXT: movb $0, 16(%rdi)
336 ; CORE2-NEXT: movq $0, 8(%rdi)
337 ; CORE2-NEXT: movq $0, (%rdi)
340 ; NEHALEM-LABEL: memset_17:
341 ; NEHALEM: # %bb.0: # %entry
342 ; NEHALEM-NEXT: xorps %xmm0, %xmm0
343 ; NEHALEM-NEXT: movups %xmm0, (%rdi)
344 ; NEHALEM-NEXT: movb $0, 16(%rdi)
347 ; SANDYBRIDGE-LABEL: memset_17:
348 ; SANDYBRIDGE: # %bb.0: # %entry
349 ; SANDYBRIDGE-NEXT: vxorps %xmm0, %xmm0, %xmm0
350 ; SANDYBRIDGE-NEXT: vmovups %xmm0, (%rdi)
351 ; SANDYBRIDGE-NEXT: movb $0, 16(%rdi)
352 ; SANDYBRIDGE-NEXT: retq
354 ; SKYLAKE-LABEL: memset_17:
355 ; SKYLAKE: # %bb.0: # %entry
356 ; SKYLAKE-NEXT: vxorps %xmm0, %xmm0, %xmm0
357 ; SKYLAKE-NEXT: vmovups %xmm0, (%rdi)
358 ; SKYLAKE-NEXT: movb $0, 16(%rdi)
361 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 17, i1 false)
365 define void @memset_19(i8* %a) nounwind {
366 ; X86-LABEL: memset_19:
367 ; X86: # %bb.0: # %entry
368 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
369 ; X86-NEXT: movl $0, 15(%eax)
370 ; X86-NEXT: movl $0, 12(%eax)
371 ; X86-NEXT: movl $0, 8(%eax)
372 ; X86-NEXT: movl $0, 4(%eax)
373 ; X86-NEXT: movl $0, (%eax)
376 ; CORE2-LABEL: memset_19:
377 ; CORE2: # %bb.0: # %entry
378 ; CORE2-NEXT: movl $0, 15(%rdi)
379 ; CORE2-NEXT: movq $0, 8(%rdi)
380 ; CORE2-NEXT: movq $0, (%rdi)
383 ; NEHALEM-LABEL: memset_19:
384 ; NEHALEM: # %bb.0: # %entry
385 ; NEHALEM-NEXT: xorps %xmm0, %xmm0
386 ; NEHALEM-NEXT: movups %xmm0, (%rdi)
387 ; NEHALEM-NEXT: movl $0, 15(%rdi)
390 ; SANDYBRIDGE-LABEL: memset_19:
391 ; SANDYBRIDGE: # %bb.0: # %entry
392 ; SANDYBRIDGE-NEXT: vxorps %xmm0, %xmm0, %xmm0
393 ; SANDYBRIDGE-NEXT: vmovups %xmm0, (%rdi)
394 ; SANDYBRIDGE-NEXT: movl $0, 15(%rdi)
395 ; SANDYBRIDGE-NEXT: retq
397 ; SKYLAKE-LABEL: memset_19:
398 ; SKYLAKE: # %bb.0: # %entry
399 ; SKYLAKE-NEXT: vxorps %xmm0, %xmm0, %xmm0
400 ; SKYLAKE-NEXT: vmovups %xmm0, (%rdi)
401 ; SKYLAKE-NEXT: movl $0, 15(%rdi)
404 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 19, i1 false)
408 define void @memset_31(i8* %a) nounwind {
409 ; X86-LABEL: memset_31:
410 ; X86: # %bb.0: # %entry
411 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
412 ; X86-NEXT: movl $0, 27(%eax)
413 ; X86-NEXT: movl $0, 24(%eax)
414 ; X86-NEXT: movl $0, 20(%eax)
415 ; X86-NEXT: movl $0, 16(%eax)
416 ; X86-NEXT: movl $0, 12(%eax)
417 ; X86-NEXT: movl $0, 8(%eax)
418 ; X86-NEXT: movl $0, 4(%eax)
419 ; X86-NEXT: movl $0, (%eax)
422 ; CORE2-LABEL: memset_31:
423 ; CORE2: # %bb.0: # %entry
424 ; CORE2-NEXT: movq $0, 23(%rdi)
425 ; CORE2-NEXT: movq $0, 16(%rdi)
426 ; CORE2-NEXT: movq $0, 8(%rdi)
427 ; CORE2-NEXT: movq $0, (%rdi)
430 ; NEHALEM-LABEL: memset_31:
431 ; NEHALEM: # %bb.0: # %entry
432 ; NEHALEM-NEXT: xorps %xmm0, %xmm0
433 ; NEHALEM-NEXT: movups %xmm0, 15(%rdi)
434 ; NEHALEM-NEXT: movups %xmm0, (%rdi)
437 ; SANDYBRIDGE-LABEL: memset_31:
438 ; SANDYBRIDGE: # %bb.0: # %entry
439 ; SANDYBRIDGE-NEXT: vxorps %xmm0, %xmm0, %xmm0
440 ; SANDYBRIDGE-NEXT: vmovups %xmm0, 15(%rdi)
441 ; SANDYBRIDGE-NEXT: vmovups %xmm0, (%rdi)
442 ; SANDYBRIDGE-NEXT: retq
444 ; SKYLAKE-LABEL: memset_31:
445 ; SKYLAKE: # %bb.0: # %entry
446 ; SKYLAKE-NEXT: vxorps %xmm0, %xmm0, %xmm0
447 ; SKYLAKE-NEXT: vmovups %xmm0, 15(%rdi)
448 ; SKYLAKE-NEXT: vmovups %xmm0, (%rdi)
451 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 31, i1 false)
455 define void @memset_32(i8* %a) nounwind {
456 ; X86-LABEL: memset_32:
457 ; X86: # %bb.0: # %entry
458 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
459 ; X86-NEXT: movl $0, 28(%eax)
460 ; X86-NEXT: movl $0, 24(%eax)
461 ; X86-NEXT: movl $0, 20(%eax)
462 ; X86-NEXT: movl $0, 16(%eax)
463 ; X86-NEXT: movl $0, 12(%eax)
464 ; X86-NEXT: movl $0, 8(%eax)
465 ; X86-NEXT: movl $0, 4(%eax)
466 ; X86-NEXT: movl $0, (%eax)
469 ; CORE2-LABEL: memset_32:
470 ; CORE2: # %bb.0: # %entry
471 ; CORE2-NEXT: movq $0, 24(%rdi)
472 ; CORE2-NEXT: movq $0, 16(%rdi)
473 ; CORE2-NEXT: movq $0, 8(%rdi)
474 ; CORE2-NEXT: movq $0, (%rdi)
477 ; NEHALEM-LABEL: memset_32:
478 ; NEHALEM: # %bb.0: # %entry
479 ; NEHALEM-NEXT: xorps %xmm0, %xmm0
480 ; NEHALEM-NEXT: movups %xmm0, 16(%rdi)
481 ; NEHALEM-NEXT: movups %xmm0, (%rdi)
484 ; SANDYBRIDGE-LABEL: memset_32:
485 ; SANDYBRIDGE: # %bb.0: # %entry
486 ; SANDYBRIDGE-NEXT: vxorps %xmm0, %xmm0, %xmm0
487 ; SANDYBRIDGE-NEXT: vmovups %xmm0, 16(%rdi)
488 ; SANDYBRIDGE-NEXT: vmovups %xmm0, (%rdi)
489 ; SANDYBRIDGE-NEXT: retq
491 ; SKYLAKE-LABEL: memset_32:
492 ; SKYLAKE: # %bb.0: # %entry
493 ; SKYLAKE-NEXT: vxorps %xmm0, %xmm0, %xmm0
494 ; SKYLAKE-NEXT: vmovups %ymm0, (%rdi)
495 ; SKYLAKE-NEXT: vzeroupper
498 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 32, i1 false)
502 define void @memset_32_align32(i8* %a) nounwind {
503 ; X86-LABEL: memset_32_align32:
504 ; X86: # %bb.0: # %entry
505 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
506 ; X86-NEXT: movl $0, 28(%eax)
507 ; X86-NEXT: movl $0, 24(%eax)
508 ; X86-NEXT: movl $0, 20(%eax)
509 ; X86-NEXT: movl $0, 16(%eax)
510 ; X86-NEXT: movl $0, 12(%eax)
511 ; X86-NEXT: movl $0, 8(%eax)
512 ; X86-NEXT: movl $0, 4(%eax)
513 ; X86-NEXT: movl $0, (%eax)
516 ; CORE2-LABEL: memset_32_align32:
517 ; CORE2: # %bb.0: # %entry
518 ; CORE2-NEXT: xorps %xmm0, %xmm0
519 ; CORE2-NEXT: movaps %xmm0, 16(%rdi)
520 ; CORE2-NEXT: movaps %xmm0, (%rdi)
523 ; NEHALEM-LABEL: memset_32_align32:
524 ; NEHALEM: # %bb.0: # %entry
525 ; NEHALEM-NEXT: xorps %xmm0, %xmm0
526 ; NEHALEM-NEXT: movaps %xmm0, 16(%rdi)
527 ; NEHALEM-NEXT: movaps %xmm0, (%rdi)
530 ; SANDYBRIDGE-LABEL: memset_32_align32:
531 ; SANDYBRIDGE: # %bb.0: # %entry
532 ; SANDYBRIDGE-NEXT: vxorps %xmm0, %xmm0, %xmm0
533 ; SANDYBRIDGE-NEXT: vmovaps %ymm0, (%rdi)
534 ; SANDYBRIDGE-NEXT: vzeroupper
535 ; SANDYBRIDGE-NEXT: retq
537 ; SKYLAKE-LABEL: memset_32_align32:
538 ; SKYLAKE: # %bb.0: # %entry
539 ; SKYLAKE-NEXT: vxorps %xmm0, %xmm0, %xmm0
540 ; SKYLAKE-NEXT: vmovaps %ymm0, (%rdi)
541 ; SKYLAKE-NEXT: vzeroupper
544 call void @llvm.memset.p0i8.i64(i8* align 32 %a, i8 0, i64 32, i1 false)
549 define void @memset_35(i8* %a) nounwind {
550 ; X86-LABEL: memset_35:
551 ; X86: # %bb.0: # %entry
552 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
553 ; X86-NEXT: movl $0, 31(%eax)
554 ; X86-NEXT: movl $0, 28(%eax)
555 ; X86-NEXT: movl $0, 24(%eax)
556 ; X86-NEXT: movl $0, 20(%eax)
557 ; X86-NEXT: movl $0, 16(%eax)
558 ; X86-NEXT: movl $0, 12(%eax)
559 ; X86-NEXT: movl $0, 8(%eax)
560 ; X86-NEXT: movl $0, 4(%eax)
561 ; X86-NEXT: movl $0, (%eax)
564 ; CORE2-LABEL: memset_35:
565 ; CORE2: # %bb.0: # %entry
566 ; CORE2-NEXT: movl $0, 31(%rdi)
567 ; CORE2-NEXT: movq $0, 24(%rdi)
568 ; CORE2-NEXT: movq $0, 16(%rdi)
569 ; CORE2-NEXT: movq $0, 8(%rdi)
570 ; CORE2-NEXT: movq $0, (%rdi)
573 ; NEHALEM-LABEL: memset_35:
574 ; NEHALEM: # %bb.0: # %entry
575 ; NEHALEM-NEXT: xorps %xmm0, %xmm0
576 ; NEHALEM-NEXT: movups %xmm0, 16(%rdi)
577 ; NEHALEM-NEXT: movups %xmm0, (%rdi)
578 ; NEHALEM-NEXT: movl $0, 31(%rdi)
581 ; SANDYBRIDGE-LABEL: memset_35:
582 ; SANDYBRIDGE: # %bb.0: # %entry
583 ; SANDYBRIDGE-NEXT: vxorps %xmm0, %xmm0, %xmm0
584 ; SANDYBRIDGE-NEXT: vmovups %xmm0, 16(%rdi)
585 ; SANDYBRIDGE-NEXT: vmovups %xmm0, (%rdi)
586 ; SANDYBRIDGE-NEXT: movl $0, 31(%rdi)
587 ; SANDYBRIDGE-NEXT: retq
589 ; SKYLAKE-LABEL: memset_35:
590 ; SKYLAKE: # %bb.0: # %entry
591 ; SKYLAKE-NEXT: vxorps %xmm0, %xmm0, %xmm0
592 ; SKYLAKE-NEXT: vmovups %ymm0, (%rdi)
593 ; SKYLAKE-NEXT: movl $0, 31(%rdi)
594 ; SKYLAKE-NEXT: vzeroupper
597 call void @llvm.memset.p0i8.i64(i8* %a, i8 0, i64 35, i1 false)