浏览代码

* allow mla to take 4 operands, resolves #9461

git-svn-id: trunk@8801 -
florian 18 年之前
父节点
当前提交
9ab1a1c550
共有 3 个文件被更改,包括 12 次插入1 次删除
  1. 1 0
      .gitattributes
  2. 1 1
      compiler/arm/raarmgas.pas
  3. 10 0
      tests/webtbs/tw9461.pp

+ 1 - 0
.gitattributes

@@ -8473,6 +8473,7 @@ tests/webtbs/tw9347a.pp svneol=native#text/plain
 tests/webtbs/tw9347b.pp svneol=native#text/plain
 tests/webtbs/tw9347b.pp svneol=native#text/plain
 tests/webtbs/tw9384.pp svneol=native#text/plain
 tests/webtbs/tw9384.pp svneol=native#text/plain
 tests/webtbs/tw9385.pp svneol=native#text/plain
 tests/webtbs/tw9385.pp svneol=native#text/plain
+tests/webtbs/tw9461.pp svneol=native#text/plain
 tests/webtbs/tw9667.pp svneol=native#text/plain
 tests/webtbs/tw9667.pp svneol=native#text/plain
 tests/webtbs/tw9672.pp svneol=native#text/plain
 tests/webtbs/tw9672.pp svneol=native#text/plain
 tests/webtbs/tw9673.pp -text
 tests/webtbs/tw9673.pp -text

+ 1 - 1
compiler/arm/raarmgas.pas

@@ -628,7 +628,7 @@ Unit raarmgas;
             AS_COMMA: { Operand delimiter }
             AS_COMMA: { Operand delimiter }
               Begin
               Begin
                 if ((instr.opcode=A_MOV) and (operandnum=2)) or
                 if ((instr.opcode=A_MOV) and (operandnum=2)) or
-                  ((operandnum=3) and not(instr.opcode in [A_UMLAL,A_UMULL,A_SMLAL,A_SMULL])) then
+                  ((operandnum=3) and not(instr.opcode in [A_UMLAL,A_UMULL,A_SMLAL,A_SMULL,A_MLA])) then
                   begin
                   begin
                     Consume(AS_COMMA);
                     Consume(AS_COMMA);
                     if not(TryBuildShifterOp(instr.Operands[operandnum+1] as tarmoperand)) then
                     if not(TryBuildShifterOp(instr.Operands[operandnum+1] as tarmoperand)) then

+ 10 - 0
tests/webtbs/tw9461.pp

@@ -0,0 +1,10 @@
+{ %CPU=arm }
+procedure p; assembler;
+  var
+    i : longint;
+  asm
+    mla r0,r1,r2,r3
+  end;
+
+begin
+end.