Jakob Stoklund Olesen 7016cf66ee Allow <undef> flags on def operands as well as uses.
The <undef> flag says that a MachineOperand doesn't read its register,
or doesn't depend on the previous value of its register.

A full register def never depends on the previous register value.  A
partial register def may depend on the previous value if it is intended
to update part of a register.

For example:

  %vreg10:dsub_0<def,undef> = COPY %vreg1
  %vreg10:dsub_1<def> = COPY %vreg2

The first copy instruction defines the full %vreg10 register with the
bits not covered by dsub_0 defined as <undef>.  It is not considered a
read of %vreg10.

The second copy modifies part of %vreg10 while preserving the rest.  It
has an implicit read of %vreg10.

This patch adds a MachineOperand::readsReg() method to determine if an
operand reads its register.

Previously, this was modelled by adding a full-register <imp-def>
operand to the instruction.  This approach makes it possible to
determine directly from a MachineOperand if it reads its register.  No
scanning of MI operands is required.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141124 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-04 21:49:33 +00:00
..
2011-04-23 19:53:52 +00:00
2010-11-29 18:16:10 +00:00
2011-08-12 18:18:02 +00:00
2010-11-29 18:16:10 +00:00
2010-09-10 22:25:58 +00:00
2010-11-29 18:16:10 +00:00
2010-11-29 18:16:10 +00:00
2010-11-29 18:16:10 +00:00
2011-06-01 23:32:40 +00:00
2011-09-29 21:07:46 +00:00
2011-09-13 23:45:39 +00:00
2011-06-16 16:52:24 +00:00