diff options
author | Sanjay Patel <spatel@rotateright.com> | 2016-03-29 17:09:27 +0000 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2016-03-29 17:09:27 +0000 |
commit | 7c6150799174e2779188f568de7f2712da76e00c (patch) | |
tree | fbf83a6d979c50178c574987a131872ef4f105c9 /llvm/test | |
parent | 2381fcd5577df601fc8f1799c654d278baca93db (diff) | |
download | bcm5719-llvm-7c6150799174e2779188f568de7f2712da76e00c.tar.gz bcm5719-llvm-7c6150799174e2779188f568de7f2712da76e00c.zip |
[x86] add tests to show current memset codegen
llvm-svn: 264748
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/X86/memset-nonzero.ll | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/memset-nonzero.ll b/llvm/test/CodeGen/X86/memset-nonzero.ll new file mode 100644 index 00000000000..c37792ff44f --- /dev/null +++ b/llvm/test/CodeGen/X86/memset-nonzero.ll @@ -0,0 +1,88 @@ +; NOTE: Assertions have been autogenerated by update_test_checks.py +; RUN: llc -mtriple=x86_64-unknown-unknown < %s -mattr=sse2 | FileCheck %s --check-prefix=ANY --check-prefix=SSE2 +; RUN: llc -mtriple=x86_64-unknown-unknown < %s -mattr=avx | FileCheck %s --check-prefix=ANY --check-prefix=AVX --check-prefix=AVX1 +; RUN: llc -mtriple=x86_64-unknown-unknown < %s -mattr=avx2 | FileCheck %s --check-prefix=ANY --check-prefix=AVX --check-prefix=AVX2 + +define void @memset_16_nonzero_bytes(i8* %x) { +; ANY-LABEL: memset_16_nonzero_bytes: +; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A +; ANY-NEXT: movq %rax, 8(%rdi) +; ANY-NEXT: movq %rax, (%rdi) +; ANY-NEXT: retq +; + %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 16, i64 -1) + ret void +} + +define void @memset_32_nonzero_bytes(i8* %x) { +; ANY-LABEL: memset_32_nonzero_bytes: +; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A +; ANY-NEXT: movq %rax, 24(%rdi) +; ANY-NEXT: movq %rax, 16(%rdi) +; ANY-NEXT: movq %rax, 8(%rdi) +; ANY-NEXT: movq %rax, (%rdi) +; ANY-NEXT: retq +; + %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 32, i64 -1) + ret void +} + +define void @memset_64_nonzero_bytes(i8* %x) { +; ANY-LABEL: memset_64_nonzero_bytes: +; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A +; ANY-NEXT: movq %rax, 56(%rdi) +; ANY-NEXT: movq %rax, 48(%rdi) +; ANY-NEXT: movq %rax, 40(%rdi) +; ANY-NEXT: movq %rax, 32(%rdi) +; ANY-NEXT: movq %rax, 24(%rdi) +; ANY-NEXT: movq %rax, 16(%rdi) +; ANY-NEXT: movq %rax, 8(%rdi) +; ANY-NEXT: movq %rax, (%rdi) +; ANY-NEXT: retq +; + %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 64, i64 -1) + ret void +} + +define void @memset_128_nonzero_bytes(i8* %x) { +; ANY-LABEL: memset_128_nonzero_bytes: +; ANY: movabsq $3038287259199220266, %rax # imm = 0x2A2A2A2A2A2A2A2A +; ANY-NEXT: movq %rax, 120(%rdi) +; ANY-NEXT: movq %rax, 112(%rdi) +; ANY-NEXT: movq %rax, 104(%rdi) +; ANY-NEXT: movq %rax, 96(%rdi) +; ANY-NEXT: movq %rax, 88(%rdi) +; ANY-NEXT: movq %rax, 80(%rdi) +; ANY-NEXT: movq %rax, 72(%rdi) +; ANY-NEXT: movq %rax, 64(%rdi) +; ANY-NEXT: movq %rax, 56(%rdi) +; ANY-NEXT: movq %rax, 48(%rdi) +; ANY-NEXT: movq %rax, 40(%rdi) +; ANY-NEXT: movq %rax, 32(%rdi) +; ANY-NEXT: movq %rax, 24(%rdi) +; ANY-NEXT: movq %rax, 16(%rdi) +; ANY-NEXT: movq %rax, 8(%rdi) +; ANY-NEXT: movq %rax, (%rdi) +; ANY-NEXT: retq +; + %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 128, i64 -1) + ret void +} + +define void @memset_256_nonzero_bytes(i8* %x) { +; ANY-LABEL: memset_256_nonzero_bytes: +; ANY: pushq %rax +; ANY-NEXT: .Ltmp0: +; ANY-NEXT: .cfi_def_cfa_offset 16 +; ANY-NEXT: movl $42, %esi +; ANY-NEXT: movl $256, %edx # imm = 0x100 +; ANY-NEXT: callq memset +; ANY-NEXT: popq %rax +; ANY-NEXT: retq +; + %call = tail call i8* @__memset_chk(i8* %x, i32 42, i64 256, i64 -1) + ret void +} + +declare i8* @__memset_chk(i8*, i32, i64, i64) + |