(splice-fun-args x ',folded 2)
`(lambda (x y z)
(declare (ignore y z))
- (,',operator x ',(,folded y (lvar-value z))))))))
+ ;; (operator (folded x y) z)
+ ;; == (operator x (folded z y))
+ (,',operator x ',(,folded (lvar-value z) y)))))))
(def logand)
(def logior)
(def logxor)
(def logtest :folded logand)
(def + :type rational)
- (def * :type rational))
+ (def + :type rational :folded -)
+ (def * :type rational)
+ (def * :type rational :folded /))
(deftransform mask-signed-field ((width x) ((constant-arg unsigned-byte) *))
"Fold mask-signed-field/mask-signed-field of constant width"