Changeset 11317


Ignore:
Timestamp:
Nov 9, 2008, 12:43:25 AM (11 years ago)
Author:
gb
Message:

SET-CONSTANT-PPC-BIT-TO-VARIABLE-VALUE - which can be invoked on (SETF
(SBIT V I) x), where I is a fixnum constant and x is unknown at
compile time - has been setting the wrong bit. Apparently for a long
time, on both ppc32 and ppc64. (The effect has been to always clear
the bit; there are cases in the test suite that expose this -
CL-TEST::PSETF.21, for instance.)

In PPC2-CONSTANT-VALUE-OK-FOR-TYPE-KEYWORD, use ACODE-UNWRAPPED-FORM.
(This will hide the bug described above in CL-TEST::PSETF.21, but
we really should recognize trivial bindings to constants ...)

Location:
trunk/source/compiler/PPC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/compiler/PPC/PPC32/ppc32-vinsns.lisp

    r10979 r11317  
    18021802                                                             (bitval :u32) ; 0 or 1
    18031803                                                             (bitnum :u8const)))
    1804   (rlwimi dest bitval (:apply - 31 bitnum) bitnum bitnum))
     1804  (rlwimi dest bitval (:apply - 32 bitnum) bitnum bitnum))
    18051805
    18061806(define-ppc32-vinsn set-constant-ppc-bit-to-1 (((dest :u32))
  • trunk/source/compiler/PPC/PPC64/ppc64-vinsns.lisp

    r11145 r11317  
    18391839                                                             (bitval :u32) ; 0 or 1
    18401840                                                             (bitnum :u8const)))
    1841   (rlwimi dest bitval (:apply - 31 bitnum) bitnum bitnum))
     1841  (rlwimi dest bitval (:apply - 32 bitnum) bitnum bitnum))
    18421842
    18431843(define-ppc64-vinsn set-constant-ppc-bit-to-1 (((dest :u32))
Note: See TracChangeset for help on using the changeset viewer.