From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754252AbcHWQZa (ORCPT ); Tue, 23 Aug 2016 12:25:30 -0400 Received: from mail-lf0-f68.google.com ([209.85.215.68]:33514 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752642AbcHWQZ1 (ORCPT ); Tue, 23 Aug 2016 12:25:27 -0400 Date: Tue, 23 Aug 2016 19:25:33 +0300 From: Alexey Dobriyan To: x86@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] x86: support REP MOVSB copy_page() Message-ID: <20160823162533.GB2286@p183.telecom.by> References: <20160822205229.GA2638@p183.telecom.by> <20160823161920.GA2286@p183.telecom.by> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20160823161920.GA2286@p183.telecom.by> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Microbenchmark shows that "REP MOVSB" copy_page() is faster than "REP MOVSQ" version on Intel i5-something Haswell REP_GOOD/ERMS capable CPU. N=1<<27 rep movsq: 6.758841901 ± 0.04% rep movsb: 6.253927309 ± 0.02% ----------------------------------- -7.5% Signed-off-by: Alexey Dobriyan --- arch/x86/lib/copy_page_64.S | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) --- a/arch/x86/lib/copy_page_64.S +++ b/arch/x86/lib/copy_page_64.S @@ -12,12 +12,21 @@ */ ALIGN ENTRY(copy_page) - ALTERNATIVE "jmp copy_page_regs", "", X86_FEATURE_REP_GOOD + ALTERNATIVE_2 "jmp copy_page_regs", \ + "", X86_FEATURE_REP_GOOD, \ + "jmp copy_page_rep_movsb", X86_FEATURE_ERMS + movl $4096/8, %ecx rep movsq ret ENDPROC(copy_page) +ENTRY(copy_page_rep_movsb) + mov $4096, %ecx + rep movsb + ret +ENDPROC(copy_page_rep_movsb) + ENTRY(copy_page_regs) subq $2*8, %rsp movq %rbx, (%rsp)