Jelajahi Sumber

+ support fmrrd/fmdrr, resolves #32398

git-svn-id: trunk@38270 -
florian 7 tahun lalu
induk
melakukan
c3a0a4e252
5 mengubah file dengan 45 tambahan dan 1 penghapusan
  1. 1 0
      .gitattributes
  2. 4 0
      compiler/arm/armins.dat
  3. 1 1
      compiler/arm/armnop.inc
  4. 28 0
      compiler/arm/armtab.inc
  5. 11 0
      tests/webtbs/tw32398.pp

+ 1 - 0
.gitattributes

@@ -15969,6 +15969,7 @@ tests/webtbs/tw3227a.pp svneol=native#text/plain
 tests/webtbs/tw32318.pp svneol=native#text/plain
 tests/webtbs/tw3235.pp svneol=native#text/plain
 tests/webtbs/tw3235a.pp svneol=native#text/plain
+tests/webtbs/tw32398.pp svneol=native#text/pascal
 tests/webtbs/tw3241a.pp svneol=native#text/plain
 tests/webtbs/tw32474.pp svneol=native#text/pascal
 tests/webtbs/tw32510.pp svneol=native#text/plain

+ 4 - 0
compiler/arm/armins.dat

@@ -1481,8 +1481,12 @@ vreg,vreg               \x43\xEE\xB8\xA\x40          THUMB32,VFPv2
 vreg,vreg               \x43\xE\xB8\xA\x40           ARM32,VFPv2
 
 [FMDRRcc]
+vreg,reg32,reg32        \x90\xEC\x40\xB\x10          THUMB32,VFPv2
+vreg,reg32,reg32        \x40\xC\x40\xB\x10           ARM32,VFPv2
 
 [FMRRDcc]
+reg32,reg32,vreg        \x90\xEC\x50\xB\x10          THUMB32,VFPv2
+reg32,reg32,vreg        \x40\xC\x50\xB\x10           ARM32,VFPv2
 
 ; Thumb-2
 

+ 1 - 1
compiler/arm/armnop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from armins.dat }
-952;
+956;

+ 28 - 0
compiler/arm/armtab.inc

@@ -5439,6 +5439,34 @@
     code    : #67#14#184#10#64;
     flags   : if_arm32 or if_vfpv2
   ),
+  (
+    opcode  : A_FMDRR;
+    ops     : 3;
+    optypes : (ot_vreg,ot_reg32,ot_reg32,ot_none,ot_none,ot_none);
+    code    : #144#236#64#11#16;
+    flags   : if_thumb32 or if_vfpv2
+  ),
+  (
+    opcode  : A_FMDRR;
+    ops     : 3;
+    optypes : (ot_vreg,ot_reg32,ot_reg32,ot_none,ot_none,ot_none);
+    code    : #64#12#64#11#16;
+    flags   : if_arm32 or if_vfpv2
+  ),
+  (
+    opcode  : A_FMRRD;
+    ops     : 3;
+    optypes : (ot_reg32,ot_reg32,ot_vreg,ot_none,ot_none,ot_none);
+    code    : #144#236#80#11#16;
+    flags   : if_thumb32 or if_vfpv2
+  ),
+  (
+    opcode  : A_FMRRD;
+    ops     : 3;
+    optypes : (ot_reg32,ot_reg32,ot_vreg,ot_none,ot_none,ot_none);
+    code    : #64#12#80#11#16;
+    flags   : if_arm32 or if_vfpv2
+  ),
   (
     opcode  : A_POP;
     ops     : 1;

+ 11 - 0
tests/webtbs/tw32398.pp

@@ -0,0 +1,11 @@
+{ %cpu=arm }
+
+procedure p;assembler;
+asm
+  fmrrd r0, r1, d0
+  fmdrr d0, r0, r1
+end;
+
+begin
+end.
+