Re: [PATCH 2/2] x86, crypto, Use gas macro for PCLMULQDQ-NI and PSHUFB

2009-11-23 Thread Herbert Xu
On Tue, Nov 10, 2009 at 03:44:01PM +0800, Huang Ying wrote:
 Old binutils do not support PCLMULQDQ-NI and PSHUFB, to make kernel
 can be compiled by them, .byte code is used instead of assembly
 instructions. But the readability and flexibility of raw .byte code is
 not good.
 
 So corresponding assembly instruction like gas macro is used instead.
 
 Signed-off-by: Huang Ying ying.hu...@intel.com

Both patches applied.  Thanks a lot!
-- 
Visit Openswan at http://www.openswan.org/
Email: Herbert Xu ~{PmVHI~} herb...@gondor.apana.org.au
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line unsubscribe linux-crypto in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] x86, crypto, Use gas macro for PCLMULQDQ-NI and PSHUFB

2009-11-09 Thread Huang Ying
Old binutils do not support PCLMULQDQ-NI and PSHUFB, to make kernel
can be compiled by them, .byte code is used instead of assembly
instructions. But the readability and flexibility of raw .byte code is
not good.

So corresponding assembly instruction like gas macro is used instead.

Signed-off-by: Huang Ying ying.hu...@intel.com
---
 arch/x86/crypto/ghash-clmulni-intel_asm.S |   29 ++---
 1 file changed, 10 insertions(+), 19 deletions(-)

--- a/arch/x86/crypto/ghash-clmulni-intel_asm.S
+++ b/arch/x86/crypto/ghash-clmulni-intel_asm.S
@@ -17,7 +17,7 @@
  */
 
 #include linux/linkage.h
-#include asm/i387.h
+#include asm/inst.h
 
 .align 16
 .Lbswap_mask:
@@ -56,12 +56,9 @@ __clmul_gf128mul_ble:
pxor DATA, T2
pxor SHASH, T3
 
-   # pclmulqdq $0x00, SHASH, DATA  # DATA = a0 * b0
-   .byte 0x66, 0x0f, 0x3a, 0x44, 0xc1, 0x00
-   # pclmulqdq $0x11, SHASH, T1# T1 = a1 * b1
-   .byte 0x66, 0x0f, 0x3a, 0x44, 0xd1, 0x11
-   # pclmulqdq $0x00, T3, T2   # T2 = (a1 + a0) * (b1 + b0)
-   .byte 0x66, 0x0f, 0x3a, 0x44, 0xdc, 0x00
+   PCLMULQDQ 0x00 SHASH DATA   # DATA = a0 * b0
+   PCLMULQDQ 0x11 SHASH T1 # T1 = a1 * b1
+   PCLMULQDQ 0x00 T3 T2# T2 = (a1 + a0) * (b1 + b0)
pxor DATA, T2
pxor T1, T2 # T2 = a0 * b1 + a1 * b0
 
@@ -101,11 +98,9 @@ ENTRY(clmul_ghash_mul)
movups (%rdi), DATA
movups (%rsi), SHASH
movaps .Lbswap_mask, BSWAP
-   # pshufb BSWAP, DATA
-   PSHUFB_XMM5_XMM0
+   PSHUFB_XMM BSWAP DATA
call __clmul_gf128mul_ble
-   # pshufb BSWAP, DATA
-   .byte 0x66, 0x0f, 0x38, 0x00, 0xc5
+   PSHUFB_XMM BSWAP DATA
movups DATA, (%rdi)
ret
 
@@ -119,21 +114,18 @@ ENTRY(clmul_ghash_update)
movaps .Lbswap_mask, BSWAP
movups (%rdi), DATA
movups (%rcx), SHASH
-   # pshufb BSWAP, DATA
-   PSHUFB_XMM5_XMM0
+   PSHUFB_XMM BSWAP DATA
 .align 4
 .Lupdate_loop:
movups (%rsi), IN1
-   # pshufb BSWAP, IN1
-   PSHUFB_XMM5_XMM6
+   PSHUFB_XMM BSWAP IN1
pxor IN1, DATA
call __clmul_gf128mul_ble
sub $16, %rdx
add $16, %rsi
cmp $16, %rdx
jge .Lupdate_loop
-   # pshufb BSWAP, DATA
-   PSHUFB_XMM5_XMM0
+   PSHUFB_XMM BSWAP DATA
movups DATA, (%rdi)
 .Lupdate_just_ret:
ret
@@ -146,8 +138,7 @@ ENTRY(clmul_ghash_update)
 ENTRY(clmul_ghash_setkey)
movaps .Lbswap_mask, BSWAP
movups (%rsi), %xmm0
-   # pshufb BSWAP, %xmm0
-   PSHUFB_XMM5_XMM0
+   PSHUFB_XMM BSWAP %xmm0
movaps %xmm0, %xmm1
psllq $1, %xmm0
psrlq $63, %xmm1


--
To unsubscribe from this list: send the line unsubscribe linux-crypto in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html