blob: c37792ff44f4cd12d91025dc84b556dc9794b00a [file] [log] [blame]
Sanjay Patel7c615072016-03-29 17:09:27 +00001; NOTE: Assertions have been autogenerated by update_test_checks.py
2; RUN: llc -mtriple=x86_64-unknown-unknown < %s -mattr=sse2 | FileCheck %s --check-prefix=ANY --check-prefix=SSE2
3; RUN: llc -mtriple=x86_64-unknown-unknown < %s -mattr=avx | FileCheck %s --check-prefix=ANY --check-prefix=AVX --check-prefix=AVX1
4; RUN: llc -mtriple=x86_64-unknown-unknown < %s -mattr=avx2 | FileCheck %s --check-prefix=ANY --check-prefix=AVX --check-prefix=AVX2
5
6define void @memset_16_nonzero_bytes(i8* %x) {
7; ANY-LABEL: memset_16_nonzero_bytes:
8; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A
9; ANY-NEXT: movq %rax, 8(%rdi)
10; ANY-NEXT: movq %rax, (%rdi)
11; ANY-NEXT: retq
12;
13 %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 16, i64 -1)
14 ret void
15}
16
17define void @memset_32_nonzero_bytes(i8* %x) {
18; ANY-LABEL: memset_32_nonzero_bytes:
19; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A
20; ANY-NEXT: movq %rax, 24(%rdi)
21; ANY-NEXT: movq %rax, 16(%rdi)
22; ANY-NEXT: movq %rax, 8(%rdi)
23; ANY-NEXT: movq %rax, (%rdi)
24; ANY-NEXT: retq
25;
26 %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 32, i64 -1)
27 ret void
28}
29
30define void @memset_64_nonzero_bytes(i8* %x) {
31; ANY-LABEL: memset_64_nonzero_bytes:
32; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A
33; ANY-NEXT: movq %rax, 56(%rdi)
34; ANY-NEXT: movq %rax, 48(%rdi)
35; ANY-NEXT: movq %rax, 40(%rdi)
36; ANY-NEXT: movq %rax, 32(%rdi)
37; ANY-NEXT: movq %rax, 24(%rdi)
38; ANY-NEXT: movq %rax, 16(%rdi)
39; ANY-NEXT: movq %rax, 8(%rdi)
40; ANY-NEXT: movq %rax, (%rdi)
41; ANY-NEXT: retq
42;
43 %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 64, i64 -1)
44 ret void
45}
46
47define void @memset_128_nonzero_bytes(i8* %x) {
48; ANY-LABEL: memset_128_nonzero_bytes:
49; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A
50; ANY-NEXT: movq %rax, 120(%rdi)
51; ANY-NEXT: movq %rax, 112(%rdi)
52; ANY-NEXT: movq %rax, 104(%rdi)
53; ANY-NEXT: movq %rax, 96(%rdi)
54; ANY-NEXT: movq %rax, 88(%rdi)
55; ANY-NEXT: movq %rax, 80(%rdi)
56; ANY-NEXT: movq %rax, 72(%rdi)
57; ANY-NEXT: movq %rax, 64(%rdi)
58; ANY-NEXT: movq %rax, 56(%rdi)
59; ANY-NEXT: movq %rax, 48(%rdi)
60; ANY-NEXT: movq %rax, 40(%rdi)
61; ANY-NEXT: movq %rax, 32(%rdi)
62; ANY-NEXT: movq %rax, 24(%rdi)
63; ANY-NEXT: movq %rax, 16(%rdi)
64; ANY-NEXT: movq %rax, 8(%rdi)
65; ANY-NEXT: movq %rax, (%rdi)
66; ANY-NEXT: retq
67;
68 %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 128, i64 -1)
69 ret void
70}
71
72define void @memset_256_nonzero_bytes(i8* %x) {
73; ANY-LABEL: memset_256_nonzero_bytes:
74; ANY: pushq %rax
75; ANY-NEXT: .Ltmp0:
76; ANY-NEXT: .cfi_def_cfa_offset 16
77; ANY-NEXT: movl $42, %esi
78; ANY-NEXT: movl $256, %edx # imm = 0x100
79; ANY-NEXT: callq memset
80; ANY-NEXT: popq %rax
81; ANY-NEXT: retq
82;
83 %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 256, i64 -1)
84 ret void
85}
86
87declare i8* @__memset_chk(i8*, i32, i64, i64)
88