[LLVMdev] tablegen puzzle
reed kotler
rkotler at mips.com
Thu Jan 8 15:37:43 PST 2015
Is there a way to define an instruction so that certain registers are
clobbered after
the instruction but not by saying they are Defs?
There are some subtle differences where if you use Defs for special
registers that are not normally
assigned to the register allocator.
The issue I'm having is with AC0 and HI/LO for Mips when doing fast-isel.
AC0 has HI/LO as subregisters.
After a normal MUL, HI/LO are undefined; in other words they are
clobbered but the tablegen
says they are are defined (otherwise instruction scheduling could mess
things up).
But because of the fact that AC0, HI/LO are "disabled", when HI/LO is
set as being dirty,
the value is never cleared and then AC0 cannot be allocated because the
register allocator
thinks that HI/LO have valid data that is in use.
More information about the llvm-dev
mailing list