From 6204eba91ed9d1d5b99879592bfdbef0f3d0660b Mon Sep 17 00:00:00 2001 From: David Benjamin Date: Mon, 23 Feb 2015 14:33:10 -0500 Subject: perlasm/x86masm.pl: make it work. Though this doesn't mean that masm becomes supported, the script is still provided on don't-ask-in-case-of-doubt-use-nasm basis. See RT#3650 for background. (Imported from upstream's 2f8d82d6418c4de8330e2870c1ca6386dc9e1b34) The data_word changes were already fixed with our 3e700bb3e812730f60bec529a14c0d35ea9665aa, but best to avoid diverging there. Change-Id: Iab5455534e8bd632fb2b247ff792d411b105f17a Reviewed-on: https://boringssl-review.googlesource.com/3581 Reviewed-by: Adam Langley --- crypto/perlasm/x86masm.pl | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) (limited to 'crypto') diff --git a/crypto/perlasm/x86masm.pl b/crypto/perlasm/x86masm.pl index a491529e..b7f49d1c 100644 --- a/crypto/perlasm/x86masm.pl +++ b/crypto/perlasm/x86masm.pl @@ -18,10 +18,10 @@ sub ::generic if ($opcode =~ /lea/ && @arg[1] =~ s/.*PTR\s+(\(.*\))$/OFFSET $1/) # no [] { $opcode="mov"; } - elsif ($opcode !~ /movq/) + elsif ($opcode !~ /mov[dq]$/) { # fix xmm references - $arg[0] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[1]=~/\bxmm[0-7]\b/i); - $arg[1] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[0]=~/\bxmm[0-7]\b/i); + $arg[0] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[-1]=~/\bxmm[0-7]\b/i); + $arg[-1] =~ s/\b[A-Z]+WORD\s+PTR/XMMWORD PTR/i if ($arg[0]=~/\bxmm[0-7]\b/i); } &::emit($opcode,@arg); @@ -160,16 +160,13 @@ sub ::public_label { push(@out,"PUBLIC\t".&::LABEL($_[0],$nmdecor.$_[0])."\n"); } sub ::data_byte -{ push(@out,("DB\t").join(',',@_)."\n"); } +{ push(@out,("DB\t").join(',',splice(@_,0,16))."\n") while(@_); } sub ::data_short -{ push(@out,("DW\t").join(',',@_)."\n"); } +{ push(@out,("DW\t").join(',',splice(@_,0,8))."\n") while(@_); } sub ::data_word -{ # MASM can't handle long lines, so emit one word at a time. - foreach(@_) - { push(@out,"DD\t$_\n"); } -} +{ push(@out,("DD\t").join(',',splice(@_,0,4))."\n") while(@_); } sub ::align { push(@out,"ALIGN\t$_[0]\n"); } -- cgit v1.2.3