+2009-11-12 Doug Evans <dje@sebabeach.org>
+
+ * rtl-c.scm (s-parallel): Use map-in-order instead of map.
+ * rtl-xform.scm (/rtx-trim-for-doc): Handle set-quiet, nop,
+ eq, ne, lt, le, gt, ge, ltu, leu, gtu, geu, index-of.
+
2009-11-11 Doug Evans <dje@sebabeach.org>
* html.scm (gen-insn-docs): Add logging message.
(set! /par-temp-list nil)
(let* ((set-dest-exprs
- (map (lambda (expr)
- (rtx-traverse (estate-context estate)
- (estate-owner estate)
- expr
- /par-replace-set-dest-expr-fn
- #f))
- exprs))
+ ;; Use map-in-order because we need temp creation and usage to
+ ;; follow the same order.
+ (map-in-order (lambda (expr)
+ (rtx-traverse (estate-context estate)
+ (estate-owner estate)
+ expr
+ /par-replace-set-dest-expr-fn
+ #f))
+ exprs))
(set-dests (string-map (lambda (expr)
(rtl-c-with-estate estate VOID expr))
set-dest-exprs))
(set! /par-temp-list temps)
(let* ((set-src-exprs
- (map (lambda (expr)
- (rtx-traverse (estate-context estate)
- (estate-owner estate)
- expr
- /par-replace-set-src-expr-fn
- #f))
- exprs))
+ ;; Use map-in-order because we need temp creation and usage to
+ ;; follow the same order.
+ (map-in-order (lambda (expr)
+ (rtx-traverse (estate-context estate)
+ (estate-owner estate)
+ expr
+ /par-replace-set-src-expr-fn
+ #f))
+ exprs))
(set-srcs (string-map (lambda (expr)
(rtl-c-with-estate estate VOID expr))
set-src-exprs)))
)
; Subroutine of /rtx-trim-for-doc to simplify it.
-; Trim all the arguments of rtx NAME.
+; Trim the arguments of rtx NAME.
+; ARGS has already had options,mode removed.
(define (/rtx-trim-args name args)
+ (logit 4 "Trimming args of " name ": " args "\n")
(let* ((rtx-obj (rtx-lookup name))
(arg-types (rtx-arg-types rtx-obj)))
; Examples of things to remove:
; - empty options list
; - ifield/operand/local/const wrappers
+; - modes of operations that don't need them to convey meaning
;
; NOTE: While having to trim the result of rtx-simplify may seem ironic,
; it isn't. You need to keep separate the notions of simplifying "1+1" to "2"
(car rest)
rtx))
- ((set)
+ ((set set-quiet)
+ (let ((trimmed-args (/rtx-trim-args name rest)))
+ (if (null? options)
+ (cons name trimmed-args)
+ (cons name (cons options (cons mode trimmed-args))))))
+
+ ((eq ne lt le gt ge ltu leu gtu geu index-of)
(let ((trimmed-args (/rtx-trim-args name rest)))
(if (null? options)
(cons name trimmed-args)
(cons name (cons mode (reverse result))))
(cons name (cons options (cons mode (reverse result)))))))
+ ((nop)
+ (list 'nop))
+
((closure)
;; Remove outer closures, they are artificially added, and are
;; basically noise to the human trying to understand the semantics.