From: Vitaly M. <v.m...@gm...> - 2008-11-19 15:35:10
|
At Wed, 19 Nov 2008 09:36:22 -0500, Nathan Froyd wrote: > I believe the problem here is that the VOPs in > src/compiler/x86-64/float.lisp don't define appropriate :LOAD-IF > predicates. For instance, from arith.lisp: > > (define-vop (fast-unsigned-binop fast-safe-arith-op) > (:args (x :target r :scs (unsigned-reg) > :load-if (not (and (sc-is x unsigned-stack) > (sc-is y unsigned-reg) > (sc-is r unsigned-stack) > (location= x r)))) > (y :scs (unsigned-reg unsigned-stack))) > (:arg-types unsigned-num unsigned-num) > (:results (r :scs (unsigned-reg) :from (:argument 0) > :load-if (not (and (sc-is x unsigned-stack) > (sc-is y unsigned-reg) > (sc-is r unsigned-stack) > (location= x r))))) > (:result-types unsigned-num) > (:note "inline (unsigned-byte 64) arithmetic")) > > Mimic'ing the :LOAD-IF predicates and the :SCS appropriately for > single/double-float operations should enable SBCL to generate the > reg/mem operations you wish to see. Thanks for quick response! Of course, I've tried to play with load-if, but without success. Ok, it is principally possible, thanks! -- wbr, Vitaly |