[Openmcl-cvs-notifications] r15075 - in /trunk/source/compiler/ARM: arm-asm.lisp arm-lapmacros.lisp

gb at clozure.com gb at clozure.com
Sat Nov 19 16:09:19 CST 2011


Author: gb
Date: Sat Nov 19 16:09:19 2011
New Revision: 15075

Log:
Make 'vpush1' and 'vpop1' instructions, don't define them as lap
macros (mostly so the disassembler will recognize them.)

Add fldmia[s|d] and fstmia[s|d].  Note that for some variants
of load/store multiple, the writeback bit is mandatory; we should
but don't distinguish between optional and mandatory writeback.

Modified:
    trunk/source/compiler/ARM/arm-asm.lisp
    trunk/source/compiler/ARM/arm-lapmacros.lisp

Modified: trunk/source/compiler/ARM/arm-asm.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/ARM/arm-asm.lisp (original)
+++ trunk/source/compiler/ARM/arm-asm.lisp Sat Nov 19 16:09:19 2011
@@ -1,4 +1,4 @@
-;;;-*- Mode: Lisp; Package: (ARM :use CL) -*-
+;;-*- Mode: Lisp; Package: (ARM :use CL) -*-
 ;;;
 ;;;   Copyright (C) 2005-2009 Clozure Associates and contributors.
 ;;;   This file is part of Clozure CL.
@@ -525,7 +525,10 @@
       (#x01f00000 . #x0ff00010)
       (#x01f00010 . #x0ff00090))
      ())
-
+   (define-arm-instruction vpop1 (:rd)
+     #x049a0004
+     #x0fff0fff
+     ())
    (define-arm-instruction ldr (:rd :mem12)
      #x04100000
      #x0c500000
@@ -533,6 +536,10 @@
    (define-arm-instruction ldrb (:rd :mem12)
      #x04500000
      #x0c500000
+     ())
+   (define-arm-instruction vpush1 (:rd)
+     #x052a0004
+     #x0fff0fff
      ())
    (define-arm-instruction str (:rd :mem12)
      #x04000000
@@ -813,9 +820,17 @@
      #x0d200a00
      #x0fb00f00
      ())
+   (define-arm-instruction fstmias (:sd :rnw :srcount)
+     #x0c800a00
+     #x0fd00f00
+     ())
    (define-arm-instruction fstmdbd (:dd :rnw :drcount)
      #x0d200b00
-     #x0fb00f00
+     #x0ff00f00
+     ())
+   (define-arm-instruction fstmiad (:sd :rnw :srcount)
+     #x0c800b00
+     #x0fd00f00
      ())
    (define-arm-instruction fldd (:dd :fpaddr)
      #x0d100b00
@@ -1019,6 +1034,7 @@
                      (dpb (ldb (byte low-width 0) value)
                         (byte low-width pos)
                         low)))))))
+
 =

 (defun set-field-value (instruction bytespec value)
   (let* ((low (lap-instruction-opcode-low instruction))

Modified: trunk/source/compiler/ARM/arm-lapmacros.lisp
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/compiler/ARM/arm-lapmacros.lisp (original)
+++ trunk/source/compiler/ARM/arm-lapmacros.lisp Sat Nov 19 16:09:19 2011
@@ -87,15 +87,13 @@
 (defarmlapmacro push1 (src stack)
   `(str ,src (:+@! ,stack (:$ (- arm::node-size)))))
 =

-(defarmlapmacro vpush1 (src)
-  `(push1 ,src vsp))
+
 =

 =

 (defarmlapmacro pop1 (dest stack)
   `(ldr ,dest (:@+ ,stack (:$ arm::node-size))))
 =

-(defarmlapmacro vpop1 (dest)
-  `(pop1 ,dest vsp))
+
 =

 (defarmlapmacro %cdr (dest node)
   `(ldr ,dest (:@ ,node (:$ arm::cons.cdr))))



More information about the Openmcl-cvs-notifications mailing list