Browse Source

ARM: Add GPR variants for shift aliases to DynASM.

Mike Pall 14 years ago
parent
commit
161bc379f0
1 changed files with 11 additions and 4 deletions
  1. 11 4
      dynasm/dasm_arm.lua

+ 11 - 4
dynasm/dasm_arm.lua

@@ -278,10 +278,10 @@ local map_op = {
   bic_4 = "e1c00000DNMps",
   mvn_3 = "e1e00000DMps",
 
-  lsl_3 = "e1a00000DMvs",
-  lsr_3 = "e1a00020DMvs",
-  asr_3 = "e1a00040DMvs",
-  ror_3 = "e1a00060DMvs",
+  lsl_3 = "e1a00000DMws",
+  lsr_3 = "e1a00020DMws",
+  asr_3 = "e1a00040DMws",
+  ror_3 = "e1a00060DMws",
   rrx_2 = "e1a00060DMs",
 
   -- Multiply and multiply-accumulate.
@@ -747,6 +747,13 @@ map_op[".template__"] = function(params, template, nparams)
       op = op + parse_imm16(params[n]); n = n + 1
     elseif p == "v" then
       op = op + parse_imm(params[n], 5, 7, 0, false); n = n + 1
+    elseif p == "w" then
+      local imm = match(params[n], "^#(.*)$")
+      if imm then
+	op = op + parse_imm(params[n], 5, 7, 0, false); n = n + 1
+      else
+	op = op + parse_gpr(params[n]) * 256 + 16
+      end
     elseif p == "X" then
       op = op + parse_imm(params[n], 5, 16, 0, false); n = n + 1
     elseif p == "K" then