[LLVMdev] Marking implicit registers as "trashed"

Martin J. O'Riordan Martin.ORiordan at Movidius.com
Mon Dec 22 07:44:53 PST 2014


I am working on some optimizations for our VLIW processor; one ALU performs
32-bit operations, while another performs 8-, 16- or 32-bit operations.

Sometimes it is useful for the 32-bit ALU to perform 8- or 16-bit operations
such as ADD, SUB, SHL, AND, etc. that are not dependent on the additional
24-bits, but because it is 32-bit ALU, the condition codes are updated.

When this is being used to offload the 8- and 16-bit arithmetic, the actual
outcome of these condition codes is irrelevant, and it is important that
later operations do not make conditional or predicated decisions based on
their values.

The 'Uses = [...]' and 'Defs = [...]', but I would like something like
'Trash = [...]' to say that the register is changed, but the change is
meaningless.

Does anyone have any suggestions as to how I should approach this kind of
semantic?

Thanks,

	MartinO

Martin O'Riordan, Movidius Ltd.





More information about the llvm-dev mailing list