From 2b9a8ca15bb3acd8fee40c61fd02f58f94ab4a3f Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Mon, 16 May 2011 18:07:00 +0000 Subject: [PATCH] x86gas.pl: add palignr and move pclmulqdq. --- crypto/bn/asm/x86-gf2m.pl | 8 +------- crypto/modes/asm/ghash-x86.pl | 6 ------ crypto/perlasm/x86asm.pl | 16 ++++++++++++++++ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/crypto/bn/asm/x86-gf2m.pl b/crypto/bn/asm/x86-gf2m.pl index 47275765d1..808a1e5969 100644 --- a/crypto/bn/asm/x86-gf2m.pl +++ b/crypto/bn/asm/x86-gf2m.pl @@ -197,12 +197,6 @@ $R="mm0"; &ret (); &function_end_B("_mul_1x1_ialu"); -sub pclmulqdq -{ my($dst,$src,$imm)=@_; - if ("$dst:$src" =~ /xmm([0-7]):xmm([0-7])/) - { &data_byte(0x66,0x0f,0x3a,0x44,0xc0|($1<<3)|$2,$imm); } -} - # void bn_GF2m_mul_2x2(BN_ULONG *r, BN_ULONG a1, BN_ULONG a0, BN_ULONG b1, BN_ULONG b0); &function_begin_B("bn_GF2m_mul_2x2"); if (!$x86only) { @@ -314,6 +308,6 @@ if ($sse2) { &ret (); &function_end_B("bn_GF2m_mul_2x2"); -&asciz ("GF2m Multiplication for x86, CRYPTOGAMS by "); +&asciz ("GF(2^m) Multiplication for x86, CRYPTOGAMS by "); &asm_finish(); diff --git a/crypto/modes/asm/ghash-x86.pl b/crypto/modes/asm/ghash-x86.pl index abd1a8c0b7..1b9adfbc72 100644 --- a/crypto/modes/asm/ghash-x86.pl +++ b/crypto/modes/asm/ghash-x86.pl @@ -821,12 +821,6 @@ $len="ebx"; &static_label("bswap"); -sub pclmulqdq -{ my($dst,$src,$imm)=@_; - if ("$dst:$src" =~ /xmm([0-7]):xmm([0-7])/) - { &data_byte(0x66,0x0f,0x3a,0x44,0xc0|($1<<3)|$2,$imm); } -} - sub clmul64x64_T2 { # minimal "register" pressure my ($Xhi,$Xi,$Hkey)=@_; diff --git a/crypto/perlasm/x86asm.pl b/crypto/perlasm/x86asm.pl index e0b228eb55..efa7b61ce8 100644 --- a/crypto/perlasm/x86asm.pl +++ b/crypto/perlasm/x86asm.pl @@ -107,6 +107,22 @@ sub ::pshufb { &::generic("pshufb",@_); } } +sub ::palignr +{ my($dst,$src,$imm)=@_; + if ("$dst:$src" =~ /xmm([0-7]):xmm([0-7])/) + { &::data_byte(0x66,0x0f,0x3a,0x0f,0xc0|($1<<3)|$2,$imm); } + else + { &::generic("palignr",@_); } +} + +sub ::pclmulqdq +{ my($dst,$src,$imm)=@_; + if ("$dst:$src" =~ /xmm([0-7]):xmm([0-7])/) + { &::data_byte(0x66,0x0f,0x3a,0x44,0xc0|($1<<3)|$2,$imm); } + else + { &::generic("pclmulqdq",@_); } +} + # label management $lbdecor="L"; # local label decoration, set by package $label="000"; -- 2.34.1