summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/perlasm
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/perlasm')
-rwxr-xr-xsrc/lib/libcrypto/perlasm/x86_64-xlate.pl16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/libcrypto/perlasm/x86_64-xlate.pl b/src/lib/libcrypto/perlasm/x86_64-xlate.pl
index ed1f3ed6ab..82992f41e5 100755
--- a/src/lib/libcrypto/perlasm/x86_64-xlate.pl
+++ b/src/lib/libcrypto/perlasm/x86_64-xlate.pl
@@ -121,7 +121,7 @@ my %globals;
121 $self->{sz} = ""; 121 $self->{sz} = "";
122 } elsif ($self->{op} =~ /^v/) { # VEX 122 } elsif ($self->{op} =~ /^v/) { # VEX
123 $self->{sz} = ""; 123 $self->{sz} = "";
124 } elsif ($self->{op} =~ /movq/ && $line =~ /%xmm/) { 124 } elsif ($self->{op} =~ /mov[dq]/ && $line =~ /%xmm/) {
125 $self->{sz} = ""; 125 $self->{sz} = "";
126 } elsif ($self->{op} =~ /([a-z]{3,})([qlwb])$/) { 126 } elsif ($self->{op} =~ /([a-z]{3,})([qlwb])$/) {
127 $self->{op} = $1; 127 $self->{op} = $1;
@@ -698,6 +698,20 @@ my $pinsrd = sub {
698 } 698 }
699}; 699};
700 700
701my $pclmulqdq = sub {
702 if (shift =~ /\$([x0-9a-f]+),\s*%xmm([0-9]+),\s*%xmm([0-9]+)/) {
703 my @opcode=(0x66);
704 rex(\@opcode,$3,$2);
705 push @opcode,0x0f,0x3a,0x44;
706 push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M
707 my $c=$1;
708 push @opcode,$c=~/^0/?oct($c):$c;
709 @opcode;
710 } else {
711 ();
712 }
713};
714
701if ($nasm) { 715if ($nasm) {
702 print <<___; 716 print <<___;
703default rel 717default rel