Prefer cheap registers for busy live ranges.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 20 Apr 2011 18:19:48 +0000 (18:19 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 20 Apr 2011 18:19:48 +0000 (18:19 +0000)
commit6bfba2e5af163442a1c6b11fe14aa9df9101cfd7
treebfad3009de9ca920990bcde1d0b9a90e96e549be
parente341e8ce1ada854e7f8fcfcf18bb2e17be2ac0ee
Prefer cheap registers for busy live ranges.

On the x86-64 and thumb2 targets, some registers are more expensive to encode
than others in the same register class.

Add a CostPerUse field to the TableGen register description, and make it
available from TRI->getCostPerUse. This represents the cost of a REX prefix or a
32-bit instruction encoding required by choosing a high register.

Teach the greedy register allocator to prefer cheap registers for busy live
ranges (as indicated by spill weight).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129864 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/Target.td
include/llvm/Target/TargetRegisterInfo.h
lib/CodeGen/RegAllocBasic.cpp
lib/CodeGen/RegAllocGreedy.cpp
lib/Target/ARM/ARMRegisterInfo.td
lib/Target/X86/X86RegisterInfo.td
utils/TableGen/CodeGenRegisters.h
utils/TableGen/CodeGenTarget.cpp
utils/TableGen/RegisterInfoEmitter.cpp