OSDN Git Service

Improve allocation order:
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Sun, 29 Feb 2004 09:17:01 +0000 (09:17 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Sun, 29 Feb 2004 09:17:01 +0000 (09:17 +0000)
commit9c22aeb0b2c294b3d6a50672ecfd9a0f505f2dc0
tree57f6b4fa7a30c3a55eb6e223d6b0563e50bb208f
parent8295f202d9cc37a6c325abd38e2feb5b47d7fc63
Improve allocation order:

1) For 8-bit registers try to use first the ones that are parts of the
   same register (AL then AH). This way we only alias 2 16/32-bit
   registers after allocating 4 8-bit variables.

2) Move EBX as the last register to allocate. This will cause less
   spills to happen since we will have 8-bit registers available up to
   register excaustion (assuming we use the allocation order). It
   would be nice if we could push all of the 8-bit aliased registers
   towards the end but we much prefer to keep callee saved register to
   the end to avoid saving them on entry and exit of the function.

For example this gives a slight reduction of spills with linear scan
on 164.gzip.

Before:

11221 asm-printer           - Number of machine instrs printed
  975 spiller               - Number of loads added
  675 spiller               - Number of stores added
  398 spiller               - Number of register spills

After:

11182 asm-printer           - Number of machine instrs printed
  952 spiller               - Number of loads added
  652 spiller               - Number of stores added
  386 spiller               - Number of register spills

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11996 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86RegisterInfo.td