diff options
Diffstat (limited to 'lib/libssl/src')
-rw-r--r-- | lib/libssl/src/crypto/bn/asm/x86_64-gf2m.pl | 12 | ||||
-rwxr-xr-x | lib/libssl/src/crypto/bn/asm/x86_64-mont5.pl | 12 | ||||
-rwxr-xr-x | lib/libssl/src/crypto/perlasm/x86_64-xlate.pl | 16 |
3 files changed, 27 insertions, 13 deletions
diff --git a/lib/libssl/src/crypto/bn/asm/x86_64-gf2m.pl b/lib/libssl/src/crypto/bn/asm/x86_64-gf2m.pl index 226c66c35e3..8e45c7479b3 100644 --- a/lib/libssl/src/crypto/bn/asm/x86_64-gf2m.pl +++ b/lib/libssl/src/crypto/bn/asm/x86_64-gf2m.pl @@ -143,12 +143,12 @@ $code.=<<___; mov (%rsp,$i1,8),$t1 mov $t1,$t0 shl \$`8*$n-4`,$t1 - movq $R,$i0 + movd $R,$i0 shr \$`64-(8*$n-4)`,$t0 xor $t1,$lo psrldq \$8,$R xor $t0,$hi - movq $R,$i1 + movd $R,$i1 xor $i0,$lo xor $i1,$hi @@ -171,15 +171,15 @@ bn_GF2m_mul_2x2: bt \$33,%rax jnc .Lvanilla_mul_2x2 - movq $a1,%xmm0 - movq $b1,%xmm1 - movq $a0,%xmm2 + movd $a1,%xmm0 + movd $b1,%xmm1 + movd $a0,%xmm2 ___ $code.=<<___ if ($win64); movq 40(%rsp),%xmm3 ___ $code.=<<___ if (!$win64); - movq $b0,%xmm3 + movd $b0,%xmm3 ___ $code.=<<___; movdqa %xmm0,%xmm4 diff --git a/lib/libssl/src/crypto/bn/asm/x86_64-mont5.pl b/lib/libssl/src/crypto/bn/asm/x86_64-mont5.pl index 9c88884d424..81e5c53728d 100755 --- a/lib/libssl/src/crypto/bn/asm/x86_64-mont5.pl +++ b/lib/libssl/src/crypto/bn/asm/x86_64-mont5.pl @@ -120,7 +120,7 @@ $code.=<<___; lea $STRIDE($bp),$bp por %xmm3,%xmm0 - movq %xmm0,$m0 # m0=bp[0] + movd %xmm0,$m0 # m0=bp[0] mov ($n0),$n0 # pull n0[0] value mov ($ap),%rax @@ -183,7 +183,7 @@ $code.=<<___; cmp $num,$j jl .L1st - movq %xmm0,$m0 # bp[1] + movd %xmm0,$m0 # bp[1] add %rax,$hi1 mov ($ap),%rax # ap[0] @@ -266,7 +266,7 @@ $code.=<<___; cmp $num,$j jl .Linner - movq %xmm0,$m0 # bp[i+1] + movd %xmm0,$m0 # bp[i+1] add %rax,$hi1 mov ($ap),%rax # ap[0] @@ -403,7 +403,7 @@ $code.=<<___; lea $STRIDE($bp),$bp por %xmm3,%xmm0 - movq %xmm0,$m0 # m0=bp[0] + movd %xmm0,$m0 # m0=bp[0] mov ($n0),$n0 # pull n0[0] value mov ($ap),%rax @@ -550,7 +550,7 @@ $code.=<<___; mov $N[1],-16(%rsp,$j,8) # tp[j-1] mov %rdx,$N[0] - movq %xmm0,$m0 # bp[1] + movd %xmm0,$m0 # bp[1] xor $N[1],$N[1] add $A[0],$N[0] @@ -718,7 +718,7 @@ $code.=<<___; mov $N[0],-24(%rsp,$j,8) # tp[j-1] mov %rdx,$N[0] - movq %xmm0,$m0 # bp[i+1] + movd %xmm0,$m0 # bp[i+1] mov $N[1],-16(%rsp,$j,8) # tp[j-1] xor $N[1],$N[1] diff --git a/lib/libssl/src/crypto/perlasm/x86_64-xlate.pl b/lib/libssl/src/crypto/perlasm/x86_64-xlate.pl index ed1f3ed6ab9..82992f41e5e 100755 --- a/lib/libssl/src/crypto/perlasm/x86_64-xlate.pl +++ b/lib/libssl/src/crypto/perlasm/x86_64-xlate.pl @@ -121,7 +121,7 @@ my %globals; $self->{sz} = ""; } elsif ($self->{op} =~ /^v/) { # VEX $self->{sz} = ""; - } elsif ($self->{op} =~ /movq/ && $line =~ /%xmm/) { + } elsif ($self->{op} =~ /mov[dq]/ && $line =~ /%xmm/) { $self->{sz} = ""; } elsif ($self->{op} =~ /([a-z]{3,})([qlwb])$/) { $self->{op} = $1; @@ -698,6 +698,20 @@ my $pinsrd = sub { } }; +my $pclmulqdq = sub { + if (shift =~ /\$([x0-9a-f]+),\s*%xmm([0-9]+),\s*%xmm([0-9]+)/) { + my @opcode=(0x66); + rex(\@opcode,$3,$2); + push @opcode,0x0f,0x3a,0x44; + push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M + my $c=$1; + push @opcode,$c=~/^0/?oct($c):$c; + @opcode; + } else { + (); + } +}; + if ($nasm) { print <<___; default rel |