(in-package "SB!C")
\f
;;; If non-NIL, emit assembly code. If NIL, emit VOP templates.
-(defvar *do-assembly* nil)
+(defvar *emit-assembly-code-not-vops-p* nil)
;;; a list of (NAME . LABEL) for every entry point
(defvar *entry-points* nil)
(output-file (make-pathname :defaults name
:type "assem")))
;; FIXME: Consider nuking the filename defaulting logic here.
- (let* ((*do-assembly* t)
+ (let* ((*emit-assembly-code-not-vops-p* t)
(name (pathname name))
;; the fasl file currently being output to
(lap-fasl-output (open-fasl-output (pathname output-file) name))
(*code-segment* nil)
(*elsewhere* nil)
(*assembly-optimize* nil)
- (*fixups* nil))
+ (*fixup-notes* nil))
(unwind-protect
(let ((*features* (cons :sb-assembling *features*)))
(init-assembler)
(let ((length (sb!assem:finalize-segment *code-segment*)))
(dump-assembler-routines *code-segment*
length
- *fixups*
+ *fixup-notes*
*entry-points*
lap-fasl-output))
(setq won t))
(if (and (consp code) (consp (car code)) (eq (caar code) 'declare))
(decls (pop code))
(return)))
- `(let (,@(mapcar
- #'(lambda (reg)
- `(,(reg-spec-name reg)
- (make-random-tn
- :kind :normal
- :sc (sc-or-lose ',(reg-spec-sc reg))
- :offset ,(reg-spec-offset reg))))
- regs))
+ `(let ,(mapcar (lambda (reg)
+ `(,(reg-spec-name reg)
+ (make-random-tn
+ :kind :normal
+ :sc (sc-or-lose ',(reg-spec-sc reg))
+ :offset ,(reg-spec-offset reg))))
+ regs)
,@(decls)
(sb!assem:assemble (*code-segment* ',name)
,name
`(:target ,(reg-spec-temp reg)))))
(defun emit-vop (name options vars)
- (let* ((args (remove :arg vars :key #'reg-spec-kind :test-not #'eq))
- (temps (remove :temp vars :key #'reg-spec-kind :test-not #'eq))
- (results (remove :res vars :key #'reg-spec-kind :test-not #'eq))
+ (let* ((args (remove :arg vars :key #'reg-spec-kind :test #'neq))
+ (temps (remove :temp vars :key #'reg-spec-kind :test #'neq))
+ (results (remove :res vars :key #'reg-spec-kind :test #'neq))
(return-style (or (cadr (assoc :return-style options)) :raw))
(cost (or (cadr (assoc :cost options)) 247))
(vop (make-symbol "VOP")))
`(define-vop ,(if (atom name) (list name) name)
(:args ,@(mapcar #'arg-or-res-spec args))
,@(let ((index -1))
- (mapcar #'(lambda (arg)
- `(:temporary (:sc ,(reg-spec-sc arg)
- :offset ,(reg-spec-offset arg)
- :from (:argument ,(incf index))
- :to (:eval 2))
- ,(reg-spec-temp arg)))
+ (mapcar (lambda (arg)
+ `(:temporary (:sc ,(reg-spec-sc arg)
+ :offset ,(reg-spec-offset arg)
+ :from (:argument ,(incf index))
+ :to (:eval 2))
+ ,(reg-spec-temp arg)))
args))
- ,@(mapcar #'(lambda (temp)
- `(:temporary (:sc ,(reg-spec-sc temp)
- :offset ,(reg-spec-offset temp)
- :from (:eval 1)
- :to (:eval 3))
- ,(reg-spec-name temp)))
+ ,@(mapcar (lambda (temp)
+ `(:temporary (:sc ,(reg-spec-sc temp)
+ :offset ,(reg-spec-offset temp)
+ :from (:eval 1)
+ :to (:eval 3))
+ ,(reg-spec-name temp)))
temps)
,@call-temps
(:vop-var ,vop)
,@(let ((index -1))
- (mapcar #'(lambda (res)
- `(:temporary (:sc ,(reg-spec-sc res)
- :offset ,(reg-spec-offset res)
- :from (:eval 2)
- :to (:result ,(incf index))
- :target ,(reg-spec-name res))
- ,(reg-spec-temp res)))
+ (mapcar (lambda (res)
+ `(:temporary (:sc ,(reg-spec-sc res)
+ :offset ,(reg-spec-offset res)
+ :from (:eval 2)
+ :to (:result ,(incf index))
+ :target ,(reg-spec-name res))
+ ,(reg-spec-temp res)))
results))
(:results ,@(mapcar #'arg-or-res-spec results))
(:ignore ,@(mapcar #'reg-spec-name temps)
,@(apply #'append
(mapcar #'cdr
(remove :ignore call-temps
- :test-not #'eq :key #'car))))
- ,@(remove-if #'(lambda (x)
- (member x '(:return-style :cost)))
+ :test #'neq :key #'car))))
+ ,@(remove-if (lambda (x)
+ (member x '(:return-style :cost)))
options
:key #'car)
(:generator ,cost
- ,@(mapcar #'(lambda (arg)
- #!+(or hppa alpha) `(move ,(reg-spec-name arg)
- ,(reg-spec-temp arg))
- #!-(or hppa alpha) `(move ,(reg-spec-temp arg)
- ,(reg-spec-name arg)))
+ ,@(mapcar (lambda (arg)
+ #!+(or hppa alpha) `(move ,(reg-spec-name arg)
+ ,(reg-spec-temp arg))
+ #!-(or hppa alpha) `(move ,(reg-spec-temp arg)
+ ,(reg-spec-name arg)))
args)
,@call-sequence
- ,@(mapcar #'(lambda (res)
- #!+(or hppa alpha) `(move ,(reg-spec-temp res)
- ,(reg-spec-name res))
- #!-(or hppa alpha) `(move ,(reg-spec-name res)
- ,(reg-spec-temp res)))
+ ,@(mapcar (lambda (res)
+ #!+(or hppa alpha) `(move ,(reg-spec-temp res)
+ ,(reg-spec-name res))
+ #!-(or hppa alpha) `(move ,(reg-spec-name res)
+ ,(reg-spec-temp res)))
results))))))
(def!macro define-assembly-routine (name&options vars &body code)
(values name&options nil)
(values (car name&options)
(cdr name&options)))
- (let ((regs (mapcar #'(lambda (var) (apply #'parse-reg-spec var)) vars)))
- (if *do-assembly*
+ (let ((regs (mapcar (lambda (var) (apply #'parse-reg-spec var)) vars)))
+ (if *emit-assembly-code-not-vops-p*
(emit-assemble name options regs code)
(emit-vop name options regs)))))