[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