summaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorAhmad Sharif <asharif@google.com>2012-11-01 13:01:14 -0700
committerAhmad Sharif <asharif@google.com>2012-11-02 08:16:21 -0700
commitb0e1c5f899ff2a06f1ae0ff8af8e668741183a3e (patch)
tree87faa62bc5ba40db21869c3a7b24764e2756253a /build
parent533470c998f53140dff083f9e3f9583dd81a498b (diff)
downloadlibvpx-b0e1c5f899ff2a06f1ae0ff8af8e668741183a3e.tar
libvpx-b0e1c5f899ff2a06f1ae0ff8af8e668741183a3e.tar.gz
libvpx-b0e1c5f899ff2a06f1ae0ff8af8e668741183a3e.tar.bz2
libvpx-b0e1c5f899ff2a06f1ae0ff8af8e668741183a3e.zip
ads2gas.pl: various enhancements to work with flash.
TEST=Ran it on different asm files. Change-Id: Ief2a009366787954d0eb5c356c64acaef350cf84
Diffstat (limited to 'build')
-rwxr-xr-xbuild/make/ads2gas.pl38
1 files changed, 34 insertions, 4 deletions
diff --git a/build/make/ads2gas.pl b/build/make/ads2gas.pl
index c55ed0fe4..ba70242dc 100755
--- a/build/make/ads2gas.pl
+++ b/build/make/ads2gas.pl
@@ -26,12 +26,22 @@ print "\t.equ DO1STROUNDING, 0\n";
while (<STDIN>)
{
+ undef $comment;
+ undef $line;
+ $comment_char = ";";
+ $comment_sub = "@";
+
+ # Handle comments.
+ if (/$comment_char/)
+ {
+ $comment = "";
+ ($line, $comment) = /(.*?)$comment_char(.*)/;
+ $_ = $line;
+ }
+
# Load and store alignment
s/@/,:/g;
- # Comment character
- s/;/@/g;
-
# Hexadecimal constants prefaced by 0x
s/#&/#0x/g;
@@ -62,6 +72,17 @@ while (<STDIN>)
# Convert LTORG to .ltorg
s/LTORG/.ltorg/g;
+ # Convert endfunc to nothing.
+ s/endfunc//ig;
+
+ # Convert FUNCTION to nothing.
+ s/FUNCTION//g;
+ s/function//g;
+
+ s/ENTRY//g;
+ s/MSARMASM/0/g;
+ s/^\s+end\s+$//g;
+
# Convert IF :DEF:to .if
# gcc doesn't have the ability to do a conditional
# if defined variable that is set by IF :DEF: on
@@ -106,6 +127,7 @@ while (<STDIN>)
if (s/RN\s+([Rr]\d+|lr)/.req $1/)
{
print;
+ print "$comment_sub$comment\n" if defined $comment;
next;
}
@@ -114,6 +136,9 @@ while (<STDIN>)
s/EXPORT\s+\|([\$\w]*)\|/.global $1 \n\t.type $1, function/;
s/IMPORT\s+\|([\$\w]*)\|/.global $1/;
+ s/EXPORT\s+([\$\w]*)/.global $1/;
+ s/export\s+([\$\w]*)/.global $1/;
+
# No vertical bars required; make additional symbol with prepended
# underscore
s/^\|(\$?\w+)\|/_$1\n\t$1:/g;
@@ -129,6 +154,10 @@ while (<STDIN>)
# ARM code
s/\sARM/.arm/g;
+ # NEON code
+ s/(vld1.\d+\s+)(q\d+)/$1\{$2\}/g;
+ s/(vtbl.\d+\s+[^,]+),([^,]+)/$1,\{$2\}/g;
+
# eabi_attributes numerical equivalents can be found in the
# "ARM IHI 0045C" document.
@@ -157,7 +186,7 @@ while (<STDIN>)
}
# EQU directive
- s/(.*)EQU(.*)/.equ $1, $2/;
+ s/(\S+\s+)EQU(\s+\S+)/.equ $1, $2/;
# Begin macro definition
if (/MACRO/) {
@@ -172,6 +201,7 @@ while (<STDIN>)
s/MEND/.endm/; # No need to tell it where to stop assembling
next if /^\s*END\s*$/;
print;
+ print "$comment_sub$comment\n" if defined $comment;
}
# Mark that this object doesn't need an executable stack.