#\r
#------------------------------------------------------------------------------\r
#\r
-# Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
pushq %rdi\r
movq %rdx, %rsi # rsi <- Source\r
movq %rcx, %rdi # rdi <- Destination\r
- leaq -1(%rsi, %r8,), %r9 # r9 <- End of Source \r
- cmpq %rdi, %rsi \r
+ leaq -1(%rsi, %r8,), %r9 # r9 <- End of Source\r
+ cmpq %rdi, %rsi\r
movq %rdi, %rax # rax <- Destination as return value\r
jae L0\r
cmpq %rdi, %r9\r
jae L_CopyBackward # Copy backward if overlapped\r
L0:\r
- movq %r8, %rcx \r
+ movq %r8, %rcx\r
andq $7, %r8\r
shrq $3, %rcx # rcx <- # of Qwords to copy\r
jz L_CopyBytes\r
L1:\r
movq (%rsi), %mm0\r
movntq %mm0, (%rdi)\r
- addq $8, %rsi \r
+ addq $8, %rsi\r
addq $8, %rdi\r
loop L1\r
mfence\r
leaq -1(%rdi, %r8,), %rdi # rdi <- End of Destination\r
std # set direction flag\r
L_CopyBytes:\r
- movq %r8, %rcx \r
+ movq %r8, %rcx\r
rep movsb # Copy bytes backward\r
cld\r
popq %rdi\r