summaryrefslogtreecommitdiffstats
path: root/crypto/perlasm
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2013-06-30 23:07:33 +0200
committerAndy Polyakov <appro@openssl.org>2013-06-30 23:07:33 +0200
commita9d14832fd98cb0c13b53fddea39765fb259358c (patch)
treeedb0b87dbb29e9eee5a75c15e9271fe8e0bd06f4 /crypto/perlasm
parent42386fdb62176ed3af237dd3e802ba9b8c0d4def (diff)
x86_64-xlate.pl: Windows fixes.
Diffstat (limited to 'crypto/perlasm')
-rwxr-xr-xcrypto/perlasm/x86_64-xlate.pl8
1 files changed, 5 insertions, 3 deletions
diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl
index d44afe1f5c..a2d870bb43 100755
--- a/crypto/perlasm/x86_64-xlate.pl
+++ b/crypto/perlasm/x86_64-xlate.pl
@@ -271,13 +271,14 @@ my %globals;
}
} else {
%szmap = ( b=>"BYTE$PTR", w=>"WORD$PTR", l=>"DWORD$PTR",
- q=>"QWORD$PTR",o=>"OWORD$PTR",x=>"XMMWORD$PTR" );
+ q=>"QWORD$PTR",o=>"OWORD$PTR",x=>"XMMWORD$PTR",
+ y=>"" );
$self->{label} =~ s/\./\$/g;
$self->{label} =~ s/(?<![\w\$\.])0x([0-9a-f]+)/0$1h/ig;
$self->{label} = "($self->{label})" if ($self->{label} =~ /[\*\+\-\/]/);
- $sz="q" if ($self->{asterisk} || opcode->mnemonic() eq "movq");
- $sz="l" if (opcode->mnemonic() eq "movd");
+ $sz="q" if ($self->{asterisk} || opcode->mnemonic() =~ /^v?movq$/);
+ $sz="l" if (opcode->mnemonic() =~ /^v?movd$/);
if (defined($self->{index})) {
sprintf "%s[%s%s*%d%s]",$szmap{$sz},
@@ -881,6 +882,7 @@ while($line=<>) {
my $arg = $_->out();
# $insn.=$sz compensates for movq, pinsrw, ...
if ($arg =~ /^xmm[0-9]+$/) { $insn.=$sz; $sz="x" if(!$sz); last; }
+ if ($arg =~ /^ymm[0-9]+$/) { $insn.=$sz; $sz="y" if(!$sz); last; }
if ($arg =~ /^mm[0-9]+$/) { $insn.=$sz; $sz="q" if(!$sz); last; }
}
@args = reverse(@args);