OSDN Git Service

* ifield.scm (-multi-ifield-make-default-insert): Fix shifts
authordevans <devans>
Mon, 20 Jul 2009 00:47:23 +0000 (00:47 +0000)
committerdevans <devans>
Mon, 20 Jul 2009 00:47:23 +0000 (00:47 +0000)
calculation.
(-multi-ifield-make-default-extract): Ditto.

cgen/ChangeLog
cgen/ifield.scm

index 6dd644a..478d037 100644 (file)
@@ -1,5 +1,9 @@
 2009-07-19  Doug Evans  <dje@sebabeach.org>
 
+       * ifield.scm (-multi-ifield-make-default-insert): Fix shifts
+       calculation.
+       (-multi-ifield-make-default-extract): Ditto.
+
        * rtl-c.scm (addc-cflag, addc-oflag, subc-cflag, subc-oflag): Define.
        (add-cflag, add-oflag, sub-cflag, sub-oflag): Deprecate.
        * rtx-funcs.scm (addc-cflag, addc-oflag, subc-cflag, subc-oflag):
index 0e774d8..76314d1 100644 (file)
@@ -57,7 +57,8 @@
              nil)
 )
 
-; {value},{follows} are missing on purpose
+; {ordinal} is missing on purpose, it's handled at a higher level.
+; {value},{follows} are missing on purpose.
 ; {value} is handled specially.
 ; {follows} is rarely used
 (method-make-make! <ifield> '(name comment attrs mode bitrange encode decode))
@@ -825,7 +826,7 @@ Define an instruction multi-field, all arguments specified.
 
 (define (-multi-ifield-make-default-insert container-name subfields)
   (let* ((lengths (map ifld-length subfields))
-        (shifts (cons 0 (list-tail-drop 1 (plus-scan (cons 0 lengths))))))
+        (shifts (list-tail-drop 1 (plus-scan (cons 0 lengths)))))
     ; Build RTL expression to shift and mask each ifield into right spot.
     (let ((exprs (map (lambda (f length shift)
                        (rtx-make 'and (rtx-make 'srl container-name shift)
@@ -843,7 +844,7 @@ Define an instruction multi-field, all arguments specified.
 
 (define (-multi-ifield-make-default-extract container-name subfields)
   (let* ((lengths (map ifld-length subfields))
-        (shifts (cons 0 (list-tail-drop 1 (plus-scan (cons 0 lengths))))))
+        (shifts (list-tail-drop 1 (plus-scan (cons 0 lengths)))))
     ; Build RTL expression to shift and mask each ifield into right spot.
     (let ((exprs (map (lambda (f length shift)
                        (rtx-make 'sll (rtx-make 'and (obj:name f)