From: Sebastian Siewior Subject: Re: [PATCH -mm crypto] AES: x86_64 asm implementation optimization Date: Wed, 30 Apr 2008 00:12:25 +0200 Message-ID: <20080429221225.GA5280@Chamillionaire.breakpoint.cc> References: <1207723262.18313.37.camel@caritas-dev.intel.com> <20080416073108.GA13494@Chamillionaire.breakpoint.cc> <1208333949.4322.5.camel@caritas-dev.intel.com> <20080416184016.GA21365@Chamillionaire.breakpoint.cc> <1208403403.4322.27.camel@caritas-dev.intel.com> <20080423223221.GB16683@Chamillionaire.breakpoint.cc> <1209093077.20936.24.camel@caritas-dev.intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="huq684BweRXVnRxX" Cc: Herbert Xu , "Adam J. Richter" , akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org, mingo@elte.hu, tglx@linutronix.de To: "Huang, Ying" Return-path: Received: from Chamillionaire.breakpoint.cc ([85.10.199.196]:46162 "EHLO Chamillionaire.breakpoint.cc" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752920AbYD2WMg (ORCPT ); Tue, 29 Apr 2008 18:12:36 -0400 Content-Disposition: inline In-Reply-To: <1209093077.20936.24.camel@caritas-dev.intel.com> Sender: linux-crypto-owner@vger.kernel.org List-ID: --huq684BweRXVnRxX Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline * Huang, Ying | 2008-04-25 11:11:17 [+0800]: >Hi, Sebastian, Hi Huang, sorry for the delay. >I changed the patches to group the read or write together instead of >interleaving. Can you help me to test these new patches? The new patches >is attached with the mail. The new results are attached. > >Best Regards, >Huang Ying Sebastian --huq684BweRXVnRxX Content-Type: application/octet-stream Content-Disposition: attachment; filename="steps-txt-v2.tbz2" Content-Transfer-Encoding: base64 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 --huq684BweRXVnRxX--