aboutsummaryrefslogtreecommitdiff
path: root/crypto/perlasm
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>2011-09-12 08:25:14 +0000
committerAndy Polyakov <appro@openssl.org>2011-09-12 08:25:14 +0000
commita87ff751b71b50a908dc0a3a48d0d11a1556da0c (patch)
tree217d223dbc39d58c3f799a063f0c748caf2c0eb8 /crypto/perlasm
parent288fe07a6e3e4d61e71db84ce31135cc6d1789ce (diff)
downloadopenssl-a87ff751b71b50a908dc0a3a48d0d11a1556da0c.zip
openssl-a87ff751b71b50a908dc0a3a48d0d11a1556da0c.tar.gz
openssl-a87ff751b71b50a908dc0a3a48d0d11a1556da0c.tar.bz2
Add so called Vector Permutation AES x86[_64] assembler, see
http://crypto.stanford.edu/vpaes/ for background information. It's not integrated into build system yet.
Diffstat (limited to 'crypto/perlasm')
-rwxr-xr-xcrypto/perlasm/x86_64-xlate.pl12
1 files changed, 6 insertions, 6 deletions
diff --git a/crypto/perlasm/x86_64-xlate.pl b/crypto/perlasm/x86_64-xlate.pl
index fcb0ce0..cafacb8 100755
--- a/crypto/perlasm/x86_64-xlate.pl
+++ b/crypto/perlasm/x86_64-xlate.pl
@@ -666,14 +666,14 @@ my %regrm = ( "%eax"=>0, "%ecx"=>1, "%edx"=>2, "%ebx"=>3,
my $movq = sub { # elderly gas can't handle inter-register movq
my $arg = shift;
my @opcode=(0x66);
- if ($arg =~ /%xmm([0-9]+),%r(\w+)/) {
+ if ($arg =~ /%xmm([0-9]+),\s*%r(\w+)/) {
my ($src,$dst)=($1,$2);
if ($dst !~ /[0-9]+/) { $dst = $regrm{"%e$dst"}; }
rex(\@opcode,$src,$dst,0x8);
push @opcode,0x0f,0x7e;
push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M
@opcode;
- } elsif ($arg =~ /%r(\w+),%xmm([0-9]+)/) {
+ } elsif ($arg =~ /%r(\w+),\s*%xmm([0-9]+)/) {
my ($src,$dst)=($2,$1);
if ($dst !~ /[0-9]+/) { $dst = $regrm{"%e$dst"}; }
rex(\@opcode,$src,$dst,0x8);
@@ -686,7 +686,7 @@ my $movq = sub { # elderly gas can't handle inter-register movq
};
my $pextrd = sub {
- if (shift =~ /\$([0-9]+),%xmm([0-9]+),(%\w+)/) {
+ if (shift =~ /\$([0-9]+),\s*%xmm([0-9]+),\s*(%\w+)/) {
my @opcode=(0x66);
$imm=$1;
$src=$2;
@@ -704,7 +704,7 @@ my $pextrd = sub {
};
my $pinsrd = sub {
- if (shift =~ /\$([0-9]+),(%\w+),%xmm([0-9]+)/) {
+ if (shift =~ /\$([0-9]+),\s*(%\w+),\s*%xmm([0-9]+)/) {
my @opcode=(0x66);
$imm=$1;
$src=$2;
@@ -722,7 +722,7 @@ my $pinsrd = sub {
};
my $pshufb = sub {
- if (shift =~ /%xmm([0-9]+),%xmm([0-9]+)/) {
+ if (shift =~ /%xmm([0-9]+),\s*%xmm([0-9]+)/) {
my @opcode=(0x66);
rex(\@opcode,$2,$1);
push @opcode,0x0f,0x38,0x00;
@@ -734,7 +734,7 @@ my $pshufb = sub {
};
my $palignr = sub {
- if (shift =~ /\$([0-9]+),%xmm([0-9]+),%xmm([0-9]+)/) {
+ if (shift =~ /\$([0-9]+),\s*%xmm([0-9]+),\s*%xmm([0-9]+)/) {
my @opcode=(0x66);
rex(\@opcode,$3,$2);
push @opcode,0x0f,0x3a,0x0f;