diff options
Diffstat (limited to 'src/lib/libcrypto/perlasm')
| -rwxr-xr-x | src/lib/libcrypto/perlasm/x86_64-xlate.pl | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/src/lib/libcrypto/perlasm/x86_64-xlate.pl b/src/lib/libcrypto/perlasm/x86_64-xlate.pl index 2ad032c4ba..ed1f3ed6ab 100755 --- a/src/lib/libcrypto/perlasm/x86_64-xlate.pl +++ b/src/lib/libcrypto/perlasm/x86_64-xlate.pl | |||
| @@ -662,28 +662,6 @@ sub rex { | |||
| 662 | my %regrm = ( "%eax"=>0, "%ecx"=>1, "%edx"=>2, "%ebx"=>3, | 662 | my %regrm = ( "%eax"=>0, "%ecx"=>1, "%edx"=>2, "%ebx"=>3, |
| 663 | "%esp"=>4, "%ebp"=>5, "%esi"=>6, "%edi"=>7 ); | 663 | "%esp"=>4, "%ebp"=>5, "%esi"=>6, "%edi"=>7 ); |
| 664 | 664 | ||
| 665 | my $movq = sub { # elderly gas can't handle inter-register movq | ||
| 666 | my $arg = shift; | ||
| 667 | my @opcode=(0x66); | ||
| 668 | if ($arg =~ /%xmm([0-9]+),\s*%r(\w+)/) { | ||
| 669 | my ($src,$dst)=($1,$2); | ||
| 670 | if ($dst !~ /[0-9]+/) { $dst = $regrm{"%e$dst"}; } | ||
| 671 | rex(\@opcode,$src,$dst,0x8); | ||
| 672 | push @opcode,0x0f,0x7e; | ||
| 673 | push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M | ||
| 674 | @opcode; | ||
| 675 | } elsif ($arg =~ /%r(\w+),\s*%xmm([0-9]+)/) { | ||
| 676 | my ($src,$dst)=($2,$1); | ||
| 677 | if ($dst !~ /[0-9]+/) { $dst = $regrm{"%e$dst"}; } | ||
| 678 | rex(\@opcode,$src,$dst,0x8); | ||
| 679 | push @opcode,0x0f,0x6e; | ||
| 680 | push @opcode,0xc0|(($src&7)<<3)|($dst&7); # ModR/M | ||
| 681 | @opcode; | ||
| 682 | } else { | ||
| 683 | (); | ||
| 684 | } | ||
| 685 | }; | ||
| 686 | |||
| 687 | my $pextrd = sub { | 665 | my $pextrd = sub { |
| 688 | if (shift =~ /\$([0-9]+),\s*%xmm([0-9]+),\s*(%\w+)/) { | 666 | if (shift =~ /\$([0-9]+),\s*%xmm([0-9]+),\s*(%\w+)/) { |
| 689 | my @opcode=(0x66); | 667 | my @opcode=(0x66); |
| @@ -720,45 +698,6 @@ my $pinsrd = sub { | |||
| 720 | } | 698 | } |
| 721 | }; | 699 | }; |
| 722 | 700 | ||
| 723 | my $pshufb = sub { | ||
| 724 | if (shift =~ /%xmm([0-9]+),\s*%xmm([0-9]+)/) { | ||
| 725 | my @opcode=(0x66); | ||
| 726 | rex(\@opcode,$2,$1); | ||
| 727 | push @opcode,0x0f,0x38,0x00; | ||
| 728 | push @opcode,0xc0|($1&7)|(($2&7)<<3); # ModR/M | ||
| 729 | @opcode; | ||
| 730 | } else { | ||
| 731 | (); | ||
| 732 | } | ||
| 733 | }; | ||
| 734 | |||
| 735 | my $palignr = sub { | ||
| 736 | if (shift =~ /\$([0-9]+),\s*%xmm([0-9]+),\s*%xmm([0-9]+)/) { | ||
| 737 | my @opcode=(0x66); | ||
| 738 | rex(\@opcode,$3,$2); | ||
| 739 | push @opcode,0x0f,0x3a,0x0f; | ||
| 740 | push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M | ||
| 741 | push @opcode,$1; | ||
| 742 | @opcode; | ||
| 743 | } else { | ||
| 744 | (); | ||
| 745 | } | ||
| 746 | }; | ||
| 747 | |||
| 748 | my $pclmulqdq = sub { | ||
| 749 | if (shift =~ /\$([x0-9a-f]+),\s*%xmm([0-9]+),\s*%xmm([0-9]+)/) { | ||
| 750 | my @opcode=(0x66); | ||
| 751 | rex(\@opcode,$3,$2); | ||
| 752 | push @opcode,0x0f,0x3a,0x44; | ||
| 753 | push @opcode,0xc0|($2&7)|(($3&7)<<3); # ModR/M | ||
| 754 | my $c=$1; | ||
| 755 | push @opcode,$c=~/^0/?oct($c):$c; | ||
| 756 | @opcode; | ||
| 757 | } else { | ||
| 758 | (); | ||
| 759 | } | ||
| 760 | }; | ||
| 761 | |||
| 762 | if ($nasm) { | 701 | if ($nasm) { |
| 763 | print <<___; | 702 | print <<___; |
| 764 | default rel | 703 | default rel |
