Good stuff; that's been annoying me for a while too.
The constraints on bitwidth date from before unboxed constants. It may
well be worth it to always handle constant operands directly, with
constantize to choose between 32 bit and RIP-relative operands, rather
than leaving some to be loaded via 64 bit moves. I think this is why I
handled truncate/c that way: IDIV with a RIP-relative operand is 7 bytes
(+ 8 for data, which might be reused), versus a 64 bit immediate move
(10 bytes) and a reg-reg IDIV (3 bytes). In the end, it's likely a wash…
Other VOPs can more easily save a register by avoiding 64 bit moves, and
that's a win.
I note that you changed the constraints on fixnum operands. The changes
have no effect: (signed-byte 32)-safe fixnum are exactly (signed-byte (-
32 n-fx-tag-bits)).
> Also an unrelated patch to add a define-instruction for POPCNT.
I hope someone else can take care of that one (:
Paul Khuong
------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
Sbcl-devel mailing list
Sbcl-...@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-devel