Ticket #5615 (needs_work enhancement)

Opened 4 years ago

[with patch, not ready for review] use labels-as-values for fast_callable under gcc

Reported by: cwitty Owned by: cwitty
Priority: major Milestone: sage-wishlist
Component: basic arithmetic Keywords:
Cc: Work issues:
Report Upstream: Reviewers:
Authors: Merged in:
Dependencies: Stopgaps:

Description

This patch uses gcc's labels-as-values extension to (theoretically) speed up the instruction dispatch. Unfortunately, on my 32-bit x86 laptop, it's about the same speed as before the patch (maybe a little slower). I think this is due to poor instruction scheduling (that gcc can't fix with -fno-strict-aliasing), but trying to move the instructions around by hand makes the problem worse (it adds register pressure, which makes the register allocator do very bad things on 32-bit x86).

Doctests do NOT pass, and the patch is not fully documented. (I believe the patch works; the doctests that fail are looking at fast_callable internals that changed.)

Attachments

preliminary-labels-as-values.patch Download (2.1 KB) - added by cwitty 4 years ago.

Change History

Changed 4 years ago by cwitty

Note: See TracTickets for help on using tickets.