Module: gas-preprocessor
Branch: master
Commit: 9d65cb9f00ac90999b0ee655be9f9dcb0f2954d6

Author:    Martin Storsjo <[email protected]>
Committer: Martin Storsjo <[email protected]>
Date:      Sat Jun 13 09:23:13 2015 +0300

Handle stmfd/ldmfd/ldm in the same way as stmdb/ldmia

---

 gas-preprocessor.pl |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gas-preprocessor.pl b/gas-preprocessor.pl
index 7ba31fe..9fb3069 100755
--- a/gas-preprocessor.pl
+++ b/gas-preprocessor.pl
@@ -946,9 +946,10 @@ sub handle_serialized_line {
         # from thumb to arm.
         s/mov\s*pc\s*,\s*lr/bx lr/g;
 
-        # Convert stmdb/ldmia with only one register into a plain str/ldr with 
post-increment/decrement
-        $line =~ s/stmdb\s+sp!\s*,\s*\{([^,-]+)\}/str $1, [sp, #-4]!/g;
-        $line =~ s/ldmia\s+sp!\s*,\s*\{([^,-]+)\}/ldr $1, [sp], #4/g;
+        # Convert stmdb/ldmia/stmfd/ldmfd/ldm with only one register into a 
plain str/ldr with post-increment/decrement.
+        # Wide thumb2 encoding requires at least two registers in register 
list while all other encodings support one register too.
+        $line =~ s/stm(?:db|fd)\s+sp!\s*,\s*\{([^,-]+)\}/str $1, [sp, #-4]!/g;
+        $line =~ s/ldm(?:ia|fd)?\s+sp!\s*,\s*\{([^,-]+)\}/ldr $1, [sp], #4/g;
 
         $line =~ s/\.arm/.thumb/x;
     }

_______________________________________________
libav-commits mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-commits

Reply via email to