Bug 345215 - Performance improvements for the register allocator

The basic idea is to change the representation of registers (HReg) so
as to give Real registers a unique integer index starting from 0, with
the registers available for allocation numbered consectively from zero
upwards. This allows the register allocator to index into its primary
data structure -- a table tracking the status of each available
register -- using normal array index instead of having to search
sequentially through the table, as now.

It also allows an efficient bitmap-based representation for "set of
Real registers", which is important for the NCODE work.

There are various other perf improvements, most notably in calling
getRegUsage once rather than twice per instruction.

Cost of register allocation is reduced to around 65% ish of what it
previously was. This translates in to speedups close to zero for
compute intensive code up to around 7% for JITing intensive
situations, eg "time perl tests/vg_regtest memcheck/tests/amd64".

git-svn-id: svn://svn.valgrind.org/vex/trunk@3107 8f6e269a-dfd6-0310-a8e1-e2731360e62c
25 files changed