History log of /external/llvm/lib/CodeGen/MachineInstr.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cddc3e03e4ec99c0268c03a126195173e519ed58 04-Mar-2016 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r256229

http://b/26987366

(cherry picked from commit f3ef5332fa3f4d5ec72c178a2b19dac363a19383)

Change-Id: Ic75dcb63191d65df1b69724576392c0aaeb47728
/external/llvm/lib/CodeGen/MachineInstr.cpp
6948897e478cbd66626159776a8017b3c18579b9 01-Jul-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r239765

Bug: 20140355: This rebase pulls the upstream fix for the spurious
warnings mentioned in the bug.

Change-Id: I7fd24253c50f4d48d900875dcf43ce3f1721a3da
/external/llvm/lib/CodeGen/MachineInstr.cpp
0c7f116bb6950ef819323d855415b2f2b0aad987 06-May-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r235153

Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7
/external/llvm/lib/CodeGen/MachineInstr.cpp
4c5e43da7792f75567b693105cc53e3f1992ad98 08-Apr-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master llvm for rebase to r233350

Change-Id: I07d935f8793ee8ec6b7da003f6483046594bca49
/external/llvm/lib/CodeGen/MachineInstr.cpp
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/CodeGen/MachineInstr.cpp
37ed9c199ca639565f6ce88105f9e39e898d82d0 01-Dec-2014 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r222494.

Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/CodeGen/MachineInstr.cpp
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/CodeGen/MachineInstr.cpp
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/CodeGen/MachineInstr.cpp
d54946ac14cca14a0b4402fd7edf5271f5e74e6a 15-Oct-2013 Pekka Jaaskelainen <pekka.jaaskelainen@tut.fi> Guard the debug temp variable with NDEBUG to avoid warning/error with NDEBUG defined.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192709 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
862385112e4f81ca2e1ffb3e995c223ffd5328b7 15-Oct-2013 Pekka Jaaskelainen <pekka.jaaskelainen@tut.fi> Do not assert when trying to add a meta data operand with
MachineInstr::addOperand().



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192707 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4afb5f560d2c3171eda8be6ae64998080dddec0c 10-Oct-2013 Matthias Braun <matze@braunis.de> Rename parameter: defined regs are not incoming.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1f2415efc3e9f0eb9d50367979d9c8dd6d784658 06-Jul-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove dead function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185731 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cbafae6d33031a72ba8219c28cb0e852511f79a3 28-Jun-2013 Manman Ren <mren@apple.com> Debug Info: clean up usage of Verify.

No functionality change.
It should suffice to check the type of a debug info metadata, instead of
calling Verify. For cases where we know the type of a DI metadata, use
assert.

Also update testing cases to make them conform to the format of DI classes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e6dc59891fc53d65b3f6d19772d26e23e0cc1cac 05-Feb-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove liveout lists from MachineRegisterInfo.

All targets are now adding return value registers as implicit uses on
return instructions, and there is no longer a need for the live out
lists.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174417 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c6ada8e5f38168f13830e448f2b9e2d8e3eac72b 25-Jan-2013 Andrew Trick <atrick@apple.com> ScheduleDAG: colorize the DOT graph and improve formatting.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@173431 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fffe3634933471ee9805412ffa221080c9e9e8fd 11-Jan-2013 Eric Christopher <echristo@gmail.com> For inline asm:

- recognize string "{memory}" in the MI generation
- mark as mayload/maystore when there's a memory clobber constraint.

PR14859.

Patch by Krzysztof Parzyszek

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172228 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4aebce83212d7271454c8767085645fe11054b44 10-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow hasProperty() to be called on bundle-internal instructions.

When calling hasProperty() on an instruction inside a bundle, it should
always behave as if IgnoreBundle was passed, and just return properties
for the current instruction.

Only attempt to aggregate bundle properties whan asked about the bundle
header.

The assertion fires on existing ARM test cases without this fix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b11f05043465bceae4853a3bd2c01d7d664cc5e3 10-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Support headerless bundles in MachineInstr::hasProperty().

This function can still work without a BUNDLE header instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172029 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ebed123c5c2d10bb2aceb272f25644f685ebcd09 09-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't print bundle flags.

The bundle flags are used by MachineBasicBlock::print(), they don't need
to clutter up individual MachineInstrs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171986 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
25377c8c6dafd094f17833f2c37daff0b77a16fc 09-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't require BUNDLE headers in MachineInstr::getBundleSize().

It is possible to build MI bundles that don't begin with a BUNDLE
header. Add support for such bundles, counting all instructions inside
the bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
12cd49ae1d3c8f45f3e41b6cce681b667b99ef07 09-Jan-2013 Sergei Larin <slarin@codeaurora.org> Fix a typo in MachineInstr::unbundleFromSucc() method.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171983 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
682106050979f0d48fcf17338c99e91672352789 08-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Pack MachineOperand bitfields better.

Previously, 4 bits were unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171814 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b2c79f2f630ed3e7da31ff8adb3014fb0ab47412 08-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Pack MachineInstr fields better.

This shrinks MachineInstr to 64 bytes (from 72).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
84be3d5a73313eb19f2f9e0512153cd2e6f46c54 05-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't call destructors on MachineInstr and MachineOperand.

The series of patches leading up to this one makes llc -O0 run 8% faster.

When deallocating a MachineFunction, there is no need to visit all
MachineInstr and MachineOperand objects to deallocate them. All their
memory come from a BumpPtrAllocator that is about to be purged, and they
have empty destructors anyway.

This only applies when deallocating the MachineFunction.
DeleteMachineInstr() should still be used to recycle MI memory during
the codegen passes.

Remove the LeakDetector support for MachineInstr. I've never seen it
used before, and now it definitely doesn't work. With this patch, leaked
MachineInstrs would be much less of a problem since all of their memory
will be reclaimed by ~MachineFunction().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171599 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f1d015f3429f611c423f943c75f86e6823810dc3 05-Jan-2013 Jakob Stoklund Olesen <stoklund@2pi.dk> Use ArrayRecycler for MachineInstr operand lists.

Instead of an std::vector<MachineOperand>, use MachineOperand arrays
from an ArrayRecycler living in MachineFunction.

This has several advantages:

- MachineInstr now has a trivial destructor, making it possible to
delete them in batches when destroying MachineFunction. This will be
enabled in a later patch.

- Bypassing malloc() and free() can be faster, depending on the system
library.

- MachineInstr objects and their operands are allocated from the same
BumpPtrAllocator, so they will usually be next to each other in
memory, providing better locality of reference.

- Reduce MachineInstr footprint. A std::vector is 24 bytes, the new
operand array representation only uses 8+4+1 bytes in MachineInstr.

- Better control over operand array reallocations. In the old
representation, the use-def chains would be reordered whenever a
std::vector reached its capacity. The new implementation never changes
the use-def chain order.

Note that some decisions in the code generator depend on the use-def
chain orders, so this patch may cause different assembly to be produced
in a few cases.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171598 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0b8c9a80f20772c3793201ab5b251d3520b9cea3 02-Jan-2013 Chandler Carruth <chandlerc@gmail.com> Move all of the header files which are involved in modelling the LLVM IR
into their new header subdirectory: include/llvm/IR. This matches the
directory structure of lib, and begins to correct a long standing point
of file layout clutter in LLVM.

There are still more header files to move here, but I wanted to handle
them in separate commits to make tracking what files make sense at each
layer easier.

The only really questionable files here are the target intrinsic
tablegen files. But that's a battle I'd rather not fight today.

I've updated both CMake and Makefile build systems (I think, and my
tests think, but I may have missed something).

I've also re-sorted the includes throughout the project. I'll be
committing updates to Clang, DragonEgg, and Polly momentarily.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171366 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
037435d114f77d96417ec0151443056accb0c050 22-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove a special case that doesn't seem necessary any longer.

Back when this exception was added, it was skipping a lot more code, but
now it just looks like a premature optimization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170989 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
021e3b6444e9179751002db7b20de96455e03171 22-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use getNumOperands() instead of Operands.size().

The representation of the Operands array is going to change soon so it
can be allocated from a BumpPtrAllocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170988 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
56706db45bbc7be0c087451ca9f1d258324df4b2 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Require the two-argument MI::addOperand(MF, MO) for dangling instructions.

Instructions that are inserted in a basic block can still be decorated
with addOperand(MO).

Make the two-argument addOperand() function contain the actual
implementation. This function will now always have a valid MF reference
that it can use for memory allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170798 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
be06aacaa9a270384599bbfa850b967e9996b9fb 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to MI::copyImplicitOps().

This function is often used to decorate dangling instructions, so a
context reference is required to allocate memory for the operands.

Also add a corresponding MachineInstrBuilder method.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170797 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9500e5d07ac9b94c8fed74150e444778a0dcb036 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use two-arg addOperand(MF, MO) internally in MachineInstr when possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
54c1902919b502d7b549f9e967e8d9b6921fabf9 20-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove two dead functions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2e4b639790a166e55a0bf14fac54ca6ce583e459 19-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use bidirectional bundle flags to simplify important functions.

The bundle_iterator::operator++ function now doesn't need to dig out the
basic block and check against end(). It can use the isBundledWithSucc()
flag to find the last bundled instruction safely.

Similarly, MachineInstr::isBundled() no longer needs to look at
iterators etc. It only has to look at flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170473 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
582abddeee6bd49762d562d3e641a4e290d464be 19-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Verify bundle flag consistency when setting them.

Now that the bundle flag aware APIs are all in place, it is possible to
continuously verify the flag consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170465 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
bd7b36e780f99b808f8e334e26f3dae1bc7e8175 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't allow the automatically updated MI flags to be set directly.

The bundle-related MI flags need to be kept in sync with the neighboring
instructions. Don't allow the bulk flag-setting setFlags() function to
change them.

Also don't copy MI flags when cloning an instruction. The clone's bundle
flags will be set when it is explicitly inserted into a bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170459 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9f4692d2953b47e9037ccfe5709a6e75de3911d4 18-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Tighten up the erase/remove API for bundled instructions.

Most code is oblivious to bundles and uses the MBB::iterator which only
visits whole bundles. MBB::erase() operates on whole bundles at a time
as before.

MBB::remove() now refuses to remove bundled instructions. It is not safe
to remove all instructions in a bundle without deleting them since there
is no way of returning pointers to all the removed instructions.

MBB::remove_instr() and MBB::erase_instr() will now update bundle flags
correctly, lifting individual instructions out of bundles while leaving
the remaining bundle intact.

The MachineInstr convenience functions are updated so

eraseFromParent() erases a whole bundle as before
eraseFromBundle() erases a single instruction, leaving the rest of its bundle.
removeFromParent() refuses to operate on bundled instructions, and
removeFromBundle() lifts a single instruction out of its bundle.

These functions will no longer accidentally split or coalesce bundles -
bundle flags are updated to preserve the existing bundling, and explicit
bundleWith* / unbundleFrom* functions should be used to change the
instruction bundling.

This API update is still a work in progress. I am going to update APIs
first so they maintain bundle flags automatically when possible. Then
I'll add stricter verification of the bundle flags.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fad649a5b173f8cfdbbbbde8649ed66afd1129c1 07-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add higher-level API for dealing with bundled MachineInstrs.

This is still a work in progress. The purpose is to make bundling and
unbundling operations explicit, and to catch errors where bundles are
broken or created inadvertently.

The old IsInsideBundle flag is replaced by two MI flags: BundledPred
which has the same meaning as IsInsideBundle, and BundledSucc which is
set on instructions that are bundled with a successor. Having two flags
provdes redundancy to detect when a bundle is inadvertently torn by a
splice() or insert(), and it makes it possible to write bundle iterators
that don't need to peek at adjacent instructions.

The new flags can't be manipulated directly (once setIsInsideBundle is
gone). Instead there are MI functions to make and break bundle bonds.

The setIsInsideBundle function will be removed in a future commit. It
should be replaced by bundleWithPred().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169583 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b47a4f7a0a780eb256cf090e01c5a002fff6684e 05-Dec-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove unused MachineInstr constructors.

A MachineInstr can only ever be constructed by CreateMachineInstr() and
CloneMachineInstr(), and those factories don't use the removed
constructors.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d04a8d4b33ff316ca4cf961e06c9e312eff8e64f 03-Dec-2012 Chandler Carruth <chandlerc@gmail.com> Use the new script to sort the includes of every file under lib.

Sooooo many of these had incorrect or strange main module includes.
I have manually inspected all of these, and fixed the main module
include to be the nearest plausible thing I could find. If you own or
care about any of these source files, I encourage you to take some time
and check that these edits were sensible. I can't have broken anything
(I strictly added headers, and reordered them, never removed), but they
may not be the headers you'd really like to identify as containing the
API being implemented.

Many forward declarations and missing includes were added to a header
files to allow them to parse cleanly when included first. The main
module rule does in fact have its merits. =]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169131 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
dc6d846df56f83be4c7045ccc9092f8a8343360b 31-Oct-2012 Akira Hatanaka <ahatanaka@mips.com> Check that iterator I is not the end iterator.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167086 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
87802d52e1e873592c6fe39827081b492bd318cc 08-Oct-2012 Craig Topper <craig.topper@gmail.com> Remove unused MachineInstr constructors that don't take a DebugLoc argument.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165382 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6c7ccaa3fd1d6e96d0bf922554b09d2b17c3b0e3 12-Sep-2012 Michael Liao <michael.liao@intel.com> Fix PR11985

- BlockAddress has no support of BA + offset form and there is no way to
propagate that offset into machine operand;
- Add BA + offset support and a new interface 'getTargetBlockAddress' to
simplify target block address forming;
- All targets are modified to use new interface and X86 backend is enhanced to
support BA + offset addressing.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b720be6a50f4e1b3280d2b029ee38dda14577525 12-Sep-2012 Manman Ren <mren@apple.com> Release build: guard dump functions with
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"

No functional change. Update r163339.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163653 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
77e300e8f0b8db8eec448cae9c87d7c5bfad9757 06-Sep-2012 Manman Ren <mren@apple.com> Release build: guard dump functions with "ifndef NDEBUG"

No functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163339 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2f1d8154795ad82e500fda27d75ec1449e7a0648 06-Sep-2012 Chad Rosier <mcrosier@apple.com> Cleanup a few magic numbers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
77fffa6fdd389ad6d70a42b36c1c36c768c2de41 06-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] We only need one bit to represent the AsmDialect in the
MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163257 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
576cd11ab8035d4240f7e6ea8d7c6c2e45154f86 05-Sep-2012 Chad Rosier <mcrosier@apple.com> [ms-inline asm] Propagate the asm dialect into the MachineInstr representation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163243 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4f1a56ce3c08763c89e9cf50e9503a87247ac4e9 04-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163154 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
99c416c9f7e8a9d7d1038d03cafebec730280398 04-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Actually use the MachineOperand field for isRegTiedToDefOperand().

The MachineOperand::TiedTo field was maintained, but not used.

This patch enables it in isRegTiedToDefOperand() and
isRegTiedToUseOperand() which are the actual functions use by the
register allocator.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163153 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9c130672761e006c47ea23b34a7bd414f2cd8368 04-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow tied uses and defs in different orders.

After much agonizing, use a full 4 bits of precious MachineOperand space
to encode this. This uses existing padding, and doesn't grow
MachineOperand beyond its current 32 bytes.

This allows tied defs among the first 15 operands on a normal
instruction, just like the current MCInstrDesc constraint encoding.
Inline assembly needs to be able to tie more than the first 15 operands,
and gets special treatment.

Tied uses can appear beyond 15 operands, as long as they are tied to a
def that's in range.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163151 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
94083149fd6891c8a72472cf1814fa6600a75979 31-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::tieOperands, remove setIsTied().

Manage tied operands entirely internally to MachineInstr. This makes it
possible to change the representation of tied operands, as I will do
shortly.

The constraint that tied uses and defs must be in the same order was too
restrictive.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163021 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e941df5e354ff7d327bab8e59af687ec90fdd149 30-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't use MCInstrDesc flags for implicit operands.

When a MachineInstr is constructed, its implicit operands are added
first, then the explicit operands are inserted before the implicits.

MCInstrDesc has oprand flags like early clobber and operand ties that
apply to the explicit operands.

Don't look at those flags when the implicit operands are first added in
the explicit operands's positions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162910 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f036f7a1e79910bf5b5b6f37d2e512b4f01155a0 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Rename hasVolatileMemoryRef() to hasOrderedMemoryRef().

Ordered memory operations are more constrained than volatile loads and
stores because they must be ordered with respect to all other memory
operations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0d7585839540abb9ab661a741dc3e0c2c860bceb 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't move normal loads across volatile/atomic loads.

It is technically allowed to move a normal load across a volatile load,
but probably not a good idea.

It is not allowed to move a load across an atomic load with
Ordering > Monotonic, and we model those with MOVolatile as well.

I recently removed the mayStore flag from atomic load instructions, so
they don't need a pseudo-opcode. This patch makes up for the difference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162857 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
699ac049517285d978ed607b2735976c5ae97ac0 29-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Maintain a vaild isTied bit as operands are added and removed.

The isTied bit is set automatically when a tied use is added and
MCInstrDesc indicates a tied operand. The tie is broken when one of the
tied operands is removed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162814 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4ba6916a98fffd9dedac5945ac51d40c8948069e 28-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a MachineOperand::isTied() flag.

While in SSA form, a MachineInstr can have pairs of tied defs and uses.
The tied operands are used to represent read-modify-write operands that
must be assigned the same physical register.

Previously, tied operand pairs were computed from fixed MCInstrDesc
fields, or by using black magic on inline assembly instructions.

The isTied flag makes it possible to add tied operands to any
instruction while getting rid of (some of) the inlineasm magic.

Tied operands on normal instructions are needed to represent predicated
individual instructions in SSA form. An extra <tied,imp-use> operand is
required to represent the output value when the instruction predicate is
false.

Adding a predicate to:

%vreg0<def> = ADD %vreg1, %vreg2

Will look like:

%vreg0<tied,def> = ADD %vreg1, %vreg2, pred:3, %vreg7<tied,imp-use>

The virtual register %vreg7 is the value given to %vreg0 when the
predicate is false. It will be assigned the same physreg as %vreg0.

This commit adds the isTied flag and sets it based on MCInstrDesc when
building an instruction. The flag is not used for anything yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162774 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
190e342cbcb1456ebb21b53a35cfefa99435bd65 28-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't allow TargetFlags on MO_Register MachineOperands.

Register operands are manipulated by a lot of target-independent code,
and it is not always possible to preserve target flags. That means it is
not safe to use target flags on register operands.

None of the targets in the tree are using register operand target flags.
External targets should be using immediate operands to annotate
instructions with operand modifiers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d6397eba2389e8a24d37aa56e049187c1ee75f4f 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Also update MRI use lists when changing a use to a def and vice versa.

This was the cause of the buildbot failures.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ff2b99afc8cbc6cfa73181072888e0f9f07deb7e 10-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move use list management into MachineRegisterInfo.

Register MachineOperands are kept in linked lists accessible via MRI's
reg_iterator interfaces. The linked list management was handled partly
by MachineOperand methods, partly by MRI methods.

Move all of the list management into MRI, delete
MO::AddRegOperandToRegInfo() and MO::RemoveRegOperandFromRegInfo().

Be more explicit about handling the cases where an MRI pointer isn't
available.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0b40d09ff6b1facd0fe81e50ee0271e035488520 07-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a new kind of MachineOperand: MO_TargetIndex.

A target index operand looks a lot like a constant pool reference, but
it is completely target-defined. It contains the 8-bit TargetFlags, a
32-bit index, and a 64-bit offset. It is preserved by all code generator
passes.

TargetIndex operands can be used to carry target-specific information in
cases where immediate operands won't suffice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161441 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d862d697d2d6f7d4e8fdd0b70686a6695e04d362 05-Jul-2012 Chandler Carruth <chandlerc@gmail.com> Finish fixing the MachineOperand hashing, providing a nice modern
hash_value overload for MachineOperands. This addresses a FIXME
sufficient for me to remove it, and cleans up the code nicely too.

The important changes to the hashing logic:
- TargetFlags are now included in all of the hashes. These were complete
missed.
- Register operands have their subregisters and whether they are a def
included in the hash.
- We now actually hash all of the operand types. Previously, many
operand types were simply *dropped on the floor*. For example:
- Floating point immediates
- Large integer immediates (>64-bit)
- External globals!
- Register masks
- Metadata operands
- It removes the offset from the block-address hash; I'm a bit
suspicious of this, but isIdenticalTo doesn't consider the offset for
black addresses.

Any patterns involving these entities could have triggered extreme
slowdowns in MachineCSE or PHIElimination. Let me know if there are PRs
you think might be closed now... I'm looking myself, but I may miss
them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b8087451cadab83332d6ba9c65227b6e925ea38f 05-Jul-2012 Chandler Carruth <chandlerc@gmail.com> The hash function for MI expressions, used by MachineCSE, is really
broken. This patch fixes the superficial problems which lead to the
intractably slow compile times reported in PR13225.

The specific issue is that we were failing to include the *offset* of
a global variable in the hash code. Oops. This would in turn cause all
MIs which were only distinguishable due to operating on different
offsets of a global variable to produce identical hash functions. In
some of the test cases attached to the PR I saw hash table activity
where there were O(1000) probes-per-lookup *on average*. A very few
entries were responsible for most of these probes.

There is still quite a bit more to do here. The ad-hoc layering of data
in MachineOperands makes them *extremely* brittle to hash correctly.
We're missing quite a few other cases, the only ones I've fixed here are
the specific MO types which were allowed through the assert() in
getOffset().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
33a537a5c41e60507ac9a4ea987c1a395cbb74fe 05-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Allow trailing physreg RegisterSDNode operands on non-variadic instructions.

Also allow trailing register mask operands on non-variadic both
MachineSDNodes and MachineInstrs.

The extra physreg RegisterSDNode operands are added to the MI as
<imp-use> operands. This makes it possible to have non-variadic call
instructions.

Call and return instructions really are non-variadic, the argument
registers should only be used implicitly - they are not part of the
encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159727 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0bcbd1df7a204e1e512f1a27066d725309de1b13 28-Jun-2012 Bill Wendling <isanbard@gmail.com> Move lib/Analysis/DebugInfo.cpp to lib/VMCore/DebugInfo.cpp and
include/llvm/Analysis/DebugInfo.h to include/llvm/DebugInfo.h.

The reasoning is because the DebugInfo module is simply an interface to the
debug info MDNodes and has nothing to do with analysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159312 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d88d27868bf7c2c5914c1b9ccace0ee6d7ee958a 05-Jun-2012 Andrew Trick <atrick@apple.com> MachineInstr::eraseFromParent fix for removing bundled instrs.

Patch by Ivan Llopard.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158025 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
396618b43a85e12d290a90b181c6af5d7c0c5f11 02-Jun-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch all register list clients to the new MC*Iterator interface.

No functional change intended.

Sorry for the churn. The iterator classes are supposed to help avoid
giant commits like this one in the future. The TableGen-produced
register lists are getting quite large, and it may be necessary to
change the table representation.

This makes it possible to do so without changing all clients (again).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157854 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
275fd2523edd30e75af6398c25d47e94cc32f150 30-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove some redundant tests.

An empty list is not represented as a null pointer. Let TRI do its own
shortcuts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157702 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
397fc4874efe9c17e737d4c5c50bd19dc3bf27f5 08-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add an MF argument to TRI::getPointerRegClass() and TII::getRegClass().

The getPointerRegClass() hook can return register classes that depend on
the calling convention of the current function (ptr_rc_tailcall).

So far, we have been able to infer the calling convention from the
subtarget alone, but as we add support for multiple calling conventions
per target, that no longer works.

Patch by Yiannis Tsiouris!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156328 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
41afb9da2c808409fb689288bc9b77bc817e235d 05-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove extra comma in debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156219 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3429c7571e87ca6070ceb1b44b1f367ce23c99f9 20-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Print <def,read-undef> to avoid confusion.

The <undef> flag on a def operand only applies to partial register
redefinitions. Only print the flag when relevant, and print it as
<def,read-undef> to make it clearer what it means.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155239 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
95d594cac3737ae1594a391276942a443cac426b 31-Mar-2012 Rafael Espindola <rafael.espindola@gmail.com> Teach CodeGen's version of computeMaskedBits to understand the range metadata.
This is the CodeGen equivalent of r153747. I tested that there is not noticeable
performance difference with any combination of -O0/-O2 /-g when compiling
gcc as a single compilation unit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153817 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
85f9cef27e6b2605e67e94afc949f5b5f5b90668 17-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> MachineInstr: Inline the fast path (non-bundle instruction) of hasProperty.

This is particularly helpful as both arguments tend to be constants.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152991 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
861ea230a7841fe4ccc8a1cd5460354e59aeed3c 16-Mar-2012 Benjamin Kramer <benny.kra@googlemail.com> Limit the number of memory operands in MachineInstr to 2^16 and store the number in padding.

Saves one machine word on MachineInstr (88->80 bytes on x86_64, 48->44 on i386).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fac259814923d091942b230e7bd002a8d1130bc3 08-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store instruction implicit uses and defs. Reduces static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152301 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b53a1d67b13fa2f036e18180523ea336100e5240 07-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Try to clarify this comment some.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152221 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fc22625eb04d39b0de77090702cf50a9bcda3ddb 07-Mar-2012 Chandler Carruth <chandlerc@gmail.com> Remove another outbreak of customized (and completely broken) hashing.
This one is particularly annoying because the hashing algorithm is
highly specialized, with a strange "equivalence" definition that subsets
the fields involved.

Still, this looks at the exact same set of data as the old code, but
without bitwise or-ing over parts of it and other mixing badness. No
functionality changed here. I've left a substantial fixme about the fact
that there is a cleaner and more principled way to do this, but it
requires making the equality definition actual stable for particular
types...

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e4fd907e72a599eddfa7a81eac4366b5b82523e3 04-Mar-2012 Craig Topper <craig.topper@gmail.com> Use uint16_t to store register overlaps to reduce static data.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152001 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
741981adf3a2bc0c6652c9c4ec846250950f3e68 01-Mar-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Move getBundleStart() into MachineInstrBundle.h.

This allows the function to be inlined, and makes it suitable for use in
getInstructionIndex().

Also provide a const version. C++ is great for touch typing practice.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151782 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
00195d828b934455da597dbba72f1aade4e53393 17-Feb-2012 Lang Hames <lhames@gmail.com> Reverse iterator - should be incrementing rather than decrementing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150778 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cc2037be2cf0159e9f7a917a4db434258fe6eb6b 16-Feb-2012 Lang Hames <lhames@gmail.com> Make LiveIntervals::handleMove() bundle aware.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1cf8b0f2a5435d8444b6cc7d4a27eef424398273 15-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle regmasks in findRegisterDefOperandIdx().

Only accept register masks when looking for an 'overlapping' def. When
Overlap is not set, the function searches for a proper definition of
Reg.

This means MI->modifiesRegister() considers register masks, but
MI->definesRegister() doesn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150529 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c667ba69ac342563c0886e20509e68705d78a0a5 10-Feb-2012 Benjamin Kramer <benny.kra@googlemail.com> Put instruction names into an indexed string table on the side, removing a pointer from MCInstrDesc.

Make them accessible through MCInstrInfo. They are only used for debugging purposes so this doesn't
have an impact on performance. X86MCTargetDesc.o goes from 630K to 461K on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150245 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
99a7a13f4aa5bf8f272c95f7b09ba997d2b30a35 08-Feb-2012 Andrew Trick <atrick@apple.com> Added MachineInstr::isBundled() to check if an instruction is part of a bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
77180e0b402fff318cffd89a2251e46b3dce4064 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle register mask operands in setPhysRegsDeadExcept().

Calls that use register mask operands don't have implicit defs for
returned values. The register mask operand handles the call clobber,
but it always behaves like a set of dead defs.

Add live implicit defs for any implicitly defined physregs that are
actually used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149715 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a37818dbb119bda75273f16b8484732e742cdbb7 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> ArrayRef'ize MI::setPhysRegsDeadExcept().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149709 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
59cb77fb11ec547f60ef0ff4a8ccf3bd8007ae46 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle all live physreg defs in the same place.

SelectionDAG has 4 different ways of passing physreg defs to users.
Collect all of the uses at the same time, and pass all of them to
MI->setPhysRegsDeadExcept() to mark the remaining defs dead.

The setPhysRegsDeadExcept() function will soon add the required
implicit-defs to instructions with register mask operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149708 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
478a8a02bc0f2e739ed8f4240152e99837e480b9 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Require non-NULL register masks.

It doesn't seem worthwhile to give meaning to a NULL register mask
pointer. It complicates all the code using register mask operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1a96c914315b0286d84c507d696484e2c95875a4 26-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Clear kill flags before propagating a copy.

The live range of the source register may be extended when a redundant
copy is eliminated. Make sure any kill flags between the two copies are
cleared.

This fixes PR11765.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149069 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7739cad69d2590f556afc9fc3048f967b5a3f4f6 16-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a new kind of MachineOperand: MO_RegisterMask.

Register masks will be used as a compact representation of large clobber
lists. Currently, an x86 call instruction has some 40 operands
representing call-clobbered registers. That's more than 1kB of useless
operands per call site.

A register mask operand references a bit mask of call-preserved
registers, everything else is clobbered. The bit mask will typically
come from TargetRegisterInfo::getCallPreservedMask().

By abandoning ImplicitDefs for call-clobbered registers, it also becomes
possible to share call instruction descriptions between calling
conventions, and we can get rid of the WINCALL* instructions.

This patch introduces the new operand kind. Future patches will add
RegMask support to target-independent passes before finally the fixed
clobber lists can be removed from call instruction descriptions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148250 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
732f05c41f177a0bc4d47e93a5d02120f146cb4c 10-Jan-2012 Chandler Carruth <chandlerc@gmail.com> Add 'llvm_unreachable' to passify GCC's understanding of the constraints
of several newly un-defaulted switches. This also helps optimizers
(including LLVM's) recognize that every case is covered, and we should
assume as much.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2bd335470f8939782f3df7f6180282d3825d4f09 10-Jan-2012 David Blaikie <dblaikie@gmail.com> Remove unnecessary default cases in switches that cover all enum values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147855 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ddfd1377d2e4154d44dc3ad217735adc15af2e3f 14-Dec-2011 Evan Cheng <evan.cheng@apple.com> - Add MachineInstrBundle.h and MachineInstrBundle.cpp. This includes a function
to finalize MI bundles (i.e. add BUNDLE instruction and computing register def
and use lists of the BUNDLE instruction) and a pass to unpack bundles.
- Teach more of MachineBasic and MachineInstr methods to be bundle aware.
- Switch Thumb2 IT block to MI bundles and delete the hazard recognizer hack to
prevent IT blocks from being broken apart.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
43d5d4ca1c93529c43e78cc5aa03c4ee10a6b0d8 08-Dec-2011 Evan Cheng <evan.cheng@apple.com> Make MachineInstr instruction property queries more flexible. This change all
clients to decide whether to look inside bundled instructions and whether
the query should return true if any / all bundled instructions have the
queried property.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5a96b3dad2f634c9081c8b2b6c2575441dc5a2bd 07-Dec-2011 Evan Cheng <evan.cheng@apple.com> Add bundle aware API for querying instruction properties and switch the code
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.

For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
04003451986868d201a2893c2ff2eaa0fb869aee 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing check.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146004 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2068215e8515203ab4839ee494cdc53dfd0cdf02 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineOperand IsInternalRead flag.

This flag is used when bundling machine instructions. It indicates
whether the operand reads a value defined inside or outside its bundle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145997 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7c2a4a30e0e16762c75adacebd05ec9fcbccf16b 06-Dec-2011 Evan Cheng <evan.cheng@apple.com> First chunk of MachineInstr bundle support.
1. Added opcode BUNDLE
2. Taught MachineInstr class to deal with bundled MIs
3. Changed MachineBasicBlock iterator to skip over bundled MIs; added an iterator to walk all the MIs
4. Taught MachineBasicBlock methods about bundled MIs


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d752e0f7e64585839cb3a458ef52456eaebbea3c 08-Nov-2011 Pete Cooper <peter_cooper@apple.com> Added invariant field to the DAG.getLoad method and changed all calls.

When this field is true it means that the load is from constant (runt-time or compile-time) and so can be hoisted from loops or moved around other memory accesses


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144100 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
71fccadbed49b555d9582198ee58301494109410 03-Nov-2011 Pete Cooper <peter_cooper@apple.com> Reverted r143600 - selector reference change

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143646 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d1ffc739c1f88352c79a63ff17b828b3a529777e 03-Nov-2011 Pete Cooper <peter_cooper@apple.com> Treat objc selector reference globals as invariant so that MachineLICM can hoist them out of loops. Fixes <rdar://problem/6027699>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143600 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3821b1885e13dcdda6aa2853f1317d3288256685 13-Oct-2011 Nick Lewycky <nicholas@mxc.ca> Add missing braces to pacify GCC's -Wparentheses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141842 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f5916976e9057177100badee7b7388bd7ba76ac3 13-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::getRegClassConstraint().

Most instructions have some requirements for their register operands.
Usually, this is expressed as register class constraints in the
MCInstrDesc, but for inline assembly the constraints are encoded in the
flag words.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141835 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9dfaacb696d1ad850f9f5f49a94fdb81cf8ae018 13-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Extract a method for finding the inline asm flag operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141834 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
459b74b9644c4741d93fe73adc2b06ca6bdb366d 13-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Encode register class constreaints in inline asm instructions.

The inline asm operand constraint is initially encoded in the virtual
register for the operand, but that register class may change during
coalescing, and the original constraint is lost.

Encode the original register class as part of the flag word for each
inline asm operand. This makes it possible to recover the actual
constraint required by inline asm, just like we can for normal
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141833 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cc84cda91997bf6fc93512a56c3a12eecaaa2d88 29-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove NumImplicitOps which is now unused.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140767 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3627a462938c92c00053a24828b35da5195d0d68 29-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Rewrite MachineInstr::addOperand() to avoid NumImplicitOps.

The function needs to scan the implicit operands anyway, so no
performance is won by caching the number of implicit operands added to
an instruction.

This also fixes a bug when adding operands after an implicit operand has
been added manually. The NumImplicitOps count wasn't kept up to date.

MachineInstr::addOperand() will now consistently place all explicit
operands before all the implicit operands, regardless of the order they
are added. It is possible to change an MI opcode and add additional
explicit operands. They will be inserted before any existing implicit
operands.

The only exception is inline asm instructions where operands are never
reordered. This is because of a hack that marks explicit clobber regs
on inline asm as <implicit-def> to please the fast register allocator.
This hack can go away when InstrEmitter and FastIsel can add exact
<dead> flags to physreg defs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f8e1e3e729473b8b2b7ee6134b6417976af84d05 30-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138773 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ee61d67c2f1105e23b2ea5110389f3b7b713b504 24-Aug-2011 Jim Grosbach <grosbach@apple.com> Tidy up. Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138437 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
201f2463a72f88121a3a31e7386029e99d2d75da 19-Aug-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't treat a partial <def,undef> operand as a read.

Normally, a partial register def is treated as reading the
super-register unless it also defines the full register like this:

%vreg110:sub_32bit<def> = COPY %vreg77:sub_32bit, %vreg110<imp-def>

This patch also uses the <undef> flag on partial defs to recognize
non-reading operands:

%vreg110:sub_32bit<def,undef> = COPY %vreg77:sub_32bit

This fixes a subtle bug in RegisterCoalescer where LIS->shrinkToUses
would treat a coalesced copy as still reading the register, extending
the live range artificially.

My test case only works when I disable DCE so a dead copy is left for
RegisterCoalescer, so I am not including it.

<rdar://problem/9967101>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138018 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4d3586dd230a3b16018da138404dbb87faf2008d 04-Aug-2011 Devang Patel <dpatel@apple.com> Print DBG_VALUE variable's location info as a comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136916 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9194c6716be13e2b8d2cf8e45273bf6c79f8b32c 07-Jul-2011 Devang Patel <dpatel@apple.com> If known DebugLocs do not match then two DBG_VALUE machine instructions are not identical. For example,

DBG_VALUE 3.310000e+02, 0, !"ds"; dbg:sse.stepfft.c:138:18 @[ sse.stepfft.c:32:10 ]
DBG_VALUE 3.310000e+02, 0, !"ds"; dbg:sse.stepfft.c:138:18 @[ sse.stepfft.c:31:10 ]

These two MIs represent identical value, 3.31..., for one variable, ds, but they are not identical because the represent two separate instances of inlined variable "ds".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d519de082766bb71e13f6a516b305ff841c6b48c 02-Jul-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Include a source location when complaining about bad inline assembly.

Add a MI->emitError() method that the backend can use to report errors
related to inline assembly. Call it from X86FloatingPoint.cpp when the
constraints are wrong.

This enables proper clang diagnostics from the backend:

$ clang -c pr30848.c
pr30848.c:5:12: error: Inline asm output regs must be last on the x87 stack
__asm__ ("" : "=u" (d)); /* { dg-error "output regs" } */
^
1 error generated.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134307 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c20fb63ebdbc8caec4566eaa7bc5be7f0a14cca1 02-Jul-2011 Cameron Zwarich <zwarich@apple.com> Take a stab at fixing the llvm-x86_64-linux-checks failure.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134287 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e837dead3c8dc3445ef6a0e2322179c57e264a13 28-Jun-2011 Evan Cheng <evan.cheng@apple.com> - Rename TargetInstrDesc, TargetOperandInfo to MCInstrDesc and MCOperandInfo and
sink them into MC layer.
- Added MCInstrInfo, which captures the tablegen generated static data. Chang
TargetInstrInfo so it's based off MCInstrInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134021 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f792fa90f1125553008659c743cba85b9b5d2e5e 27-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Distinguish early clobber output operands from clobbered registers.

Both become <earlyclobber> defs on the INLINEASM MachineInstr, but we
now use two different asm operand kinds.

The new Kind_Clobber is treated identically to the old
Kind_RegDefEarlyClobber for now, but x87 floating point stack inline
assembly does care about the difference.

This will pop a register off the stack:

asm("fstp %st" : : "t"(x) : "st");

While this will pop the input and push an output:

asm("fst %st" : "=&t"(r) : "t"(x));

We need to know if ST0 was a clobber or an output operand, and we can't
depend on <dead> flags for that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133902 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7a2ecd3f99ae4dede7e8c1984c2a08984be69363 27-Jun-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Decode and pretty print inline asm operand descriptors.

The INLINEASM MachineInstrs have an immediate operand describing each
original inline asm operand. Decode the bits in MachineInstr::print() so
it is easier to read:

INLINEASM <es:rorq $1,$0>, $0:[regdef], %vreg0<def>, %vreg1<def>, $1:[imm], 1, $2:[reguse] [tiedto:$0], %vreg2, %vreg3, $3:[regdef-ec], %EFLAGS<earlyclobber,imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133901 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8594d429e02c688d428036f8563f09572da3fbff 24-Jun-2011 Devang Patel <dpatel@apple.com> Handle debug info for i128 constants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cbc988be22bc9411d95215c8b7251b5f85710674 12-May-2011 Evan Cheng <evan.cheng@apple.com> Re-commit 131172 with fix. MachineInstr identity checks should check dead
markers. In some cases a register def is dead on one path, but not on
another.

This is passing Clang self-hosting.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131214 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cf724f078623e786fc92335fdb0ec70b46f2e86d 08-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove an assertion to fix PR9872.

It can happen that a live debug variable is the last use of a sub-register, and
the register allocator will pick a larger register class for the virtual
register. If the allocated register doesn't support the sub-register index,
just use %noreg for the debug variables instead of asserting.

In PR9872, a debug variable ends up in the sub_8bit_hi part of a GR32_ABCD
register. The register is split and one part is inflated to GR32 and assigned
%ESI because there are no more normal uses of sub_8bit_hi.

Since %ESI doesn't have that sub-register, substPhysReg asserted. Now it will
simply insert a %noreg instead, and the debug variable will be marked
unavailable in that range.

We don't currently have a way of saying: !"value" is in bits 8-15 of %ESI, I
don't know if DWARF even supports that.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131073 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d65ba721cccb0d0998750908bf2533e08b106f38 30-Apr-2011 Bill Wendling <isanbard@gmail.com> Print out the 'nontemporal' info on a store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130562 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b793bc1ccabef36b3223bae69f5e94a8e98d22eb 05-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Ensure all defs referring to a virtual register are marked dead by addRegisterDead().

There can be multiple defs for a single virtual register when they are defining
sub-registers.

The missing <dead> flag was stopping the inline spiller from eliminating dead
code after rematerialization.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6dd97471c43805b3febf598d50498a09a02e93f4 05-Mar-2011 Anton Korobeynikov <asl@math.spbu.ru> Add FrameSetup MI flags

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c9df025e33ac435adb3b3318d237c36ca7cec659 10-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Simplify a bunch of isVirtualRegister() and isPhysicalRegister() logic.

These functions not longer assert when passed 0, but simply return false instead.

No functional change intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123155 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4314268128be6d54c9a7f0709680e5a5b40f3ab3 09-Jan-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Replace TargetRegisterInfo::printReg with a PrintReg class that also works without a TRI instance.

Print virtual registers numbered from 0 instead of the arbitrary
FirstVirtualRegister. The first virtual register is printed as %vreg0.
TRI::NoRegister is printed as %noreg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c36b7069b42bece963b7e6adf020353ce990ef76 08-Jan-2011 Evan Cheng <evan.cheng@apple.com> Do not model all INLINEASM instructions as having unmodelled side effects.
Instead encode llvm IR level property "HasSideEffects" in an operand (shared
with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check
the operand when the instruction is an INLINEASM.

This allows memory instructions to be moved around INLINEASM instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123044 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
30a343aeedf777f9b8b6be9823da750afbf765b1 07-Jan-2011 Evan Cheng <evan.cheng@apple.com> DBG_VALUE does not have any side effects; it also makes no sense to mark it cheap as a copy.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123031 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c8f46c45a0bdefdb91593cabc87547cc45f9d89d 22-Oct-2010 Evan Cheng <evan.cheng@apple.com> Unbreak build.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117155 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f96e4bd2a3b11928af75fb7472288930d16fec0b 20-Oct-2010 Dan Gohman <gohman@apple.com> Make CodeGen TBAA-aware.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116890 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2594746045258958673ebe42db2a27a4d05b0b73 19-Oct-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Shrink MachineOperand from 40 to 32 bytes on 64-bit hosts.

Pull an unsigned out of the Contents union such that it has the same size as two
pointers and no padding.

Arrange members such that the Contents union and all pointers can be 8-byte
aligned without padding.

This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be
unaffected.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116857 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fc448ff89b4fb7721de9da0b96fd00c13160c4c7 21-Sep-2010 Chris Lattner <sabre@nondot.org> convert a couple more places to use the new getStore()



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114463 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1daa6f479dd5fb4123f1ffbb10a3825da7d2c6b8 21-Sep-2010 Chris Lattner <sabre@nondot.org> add some accessors


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114409 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e8639036b1fb3a5b5e9589fe4e9f2ee1b77c36bd 21-Sep-2010 Chris Lattner <sabre@nondot.org> it's more elegant to put the "getConstantPool" and
"getFixedStack" on the MachinePointerInfo class. While
this isn't the problem I'm setting out to solve, it is the
right way to eliminate PseudoSourceValue, so lets go with it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114406 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
40a858f6e71ed8d68779d00c63dad15baded3562 21-Sep-2010 Chris Lattner <sabre@nondot.org> add some helpful accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114400 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
da39c3964423744b4d79aebef8bece3e9141d5fc 21-Sep-2010 Chris Lattner <sabre@nondot.org> start pushing MachinePointerInfo out through the MachineMemOperand interface
to the MachineFunction construction methods.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114390 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e8e2e80f40495fdd5ad475beb54fcf0989b6b7c5 21-Sep-2010 Chris Lattner <sabre@nondot.org> refactor the Value*/offset pair from MachineMemOperand out to a new
MachinePointerInfo struct, no functionality change.

This also adds an assert to MachineMemOperand::MachineMemOperand
that verifies that the Value* is either null or is an IR pointer type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ee56c42168f6c4271593f6018c4409b6a5910302 02-Aug-2010 Oscar Fuentes <ofv@wanadoo.es> Prefix `next' iterator operation with `llvm::'.

Fixes potential ambiguity problems on VS 2010.

Patch by nobled!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110029 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a0c5bf19bff7d06faa3e039a0638806c9e5a8ff6 28-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print out the regclass of any virtual registers used by a machine instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109608 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b1e11455d1cf4df081a9593660d194c1a53b4334 05-Jul-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print symbolic subreg indices on REG_SEQUENCE and INSERT_SUBREG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107602 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f1e309eb4862459a76445942ba4dafc433b6f317 02-Jul-2010 Dale Johannesen <dalej@apple.com> Propagate the AlignStack bit in InlineAsm's to the
PrologEpilog code, and use it to determine whether
the asm forces stack alignment or not. gcc consistently
does not do this for GCC-style asms; Apple gcc inconsistently
sometimes does it for asm blocks. There is no
convenient place to put a bit in either the SDNode or
the MachineInstr form, so I've added an extra operand
to each; unlovely, but it does allow for expansion for
more bits, should we need it. PR 5125. Some
existing testcases are affected.
The operand lists of the SDNode and MachineInstr forms
are indexed with awesome mnemonics, like "2"; I may
fix this someday, but not now. I'm not making it any
worse. If anyone is inspired I think you can find all
the right places from this patch.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107506 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
da0e89f4c4057114fe7236fd001e9ef6d836ee82 29-Jun-2010 Devang Patel <dpatel@apple.com> Print InlinedAt location.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107208 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
db4971259ce94cea26e555e9ade82672a3581f5c 19-Jun-2010 Dan Gohman <gohman@apple.com> Teach regular and fast isel to set dead flags on unused implicit defs
on calls and similar instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106353 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9edf7deb37f0f97664f279040fa15d89f32e23d9 03-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Slightly change the meaning of the reMaterialize target hook when the original
instruction defines subregisters.

Any existing subreg indices on the original instruction are preserved or
composed with the new subreg index.

Also substitute multiple operands mentioning the original register by using the
new MachineInstr::substituteRegister() function. This is necessary because there
will soon be <imp-def> operands added to non read-modify-write partial
definitions. This instruction:

%reg1234:foo = FLAP %reg1234<imp-def>

will reMaterialize(%reg3333, bar) like this:

%reg3333:bar-foo = FLAP %reg333:bar<imp-def>

Finally, replace the TargetRegisterInfo pointer argument with a reference to
indicate that it cannot be NULL.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105358 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a5135f60dd95275dcbc1123f866889151ced933d 02-Jun-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Properly compose subregister indices when coalescing.
The comment about ordering of subreg indices is no longer true.
This exposed a bug in the new substVirtReg method that is also fixed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105294 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2da53370241fdd1b5c291483311b34e609f06c73 28-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add a TargetRegisterInfo::composeSubRegIndices hook with a default
implementation that is correct for most targets. Tablegen will override where
needed.

Add MachineOperand::subst{Virt,Phys}Reg methods that correctly handle existing
subreg indices when sustituting registers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1fc8e759a767077726f9be35b93767e68bdf101f 25-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Print symbolic SubRegIndex names on machine operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1015ba7018c87f48cc7bb45a564eb4a27241e76a 21-May-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::findRegisterDefOperandIdx so it can also look for defs
that are aliases of the specified register.
- Rename modifiesRegister to definesRegister since it's looking a def of the
specific register or one of its super-registers. It's not looking for def of a
sub-register or alias that could change the specified register.
- Added modifiesRegister to look for defs of aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104377 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
18b2c9d3bf5a6633535eaad8388f0353b14cbfb8 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::readsWritesVirtualRegister() to determine if an instruction
reads or writes a register.

This takes partial redefines and undef uses into account.

Don't actually use it yet. That caused miscompiles.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104372 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
19f5f71bba08e690611fa213647ac6bae814756b 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert "Use MachineInstr::readsWritesVirtualRegister to determine if a register is read."

This reverts r104322. I think it was causing miscompilations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104323 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
00c53caa339f954cb3590a05e8653b864b4355cf 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Use MachineInstr::readsWritesVirtualRegister to determine if a register is read.
This correctly handles partial redefines and undef uses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104322 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
63e6a488cb6c29983415221719d05fbf99e00193 21-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> If the first definition of a virtual register is a partial redef, add an
<imp-def> operand for the full register. This ensures that the full physical
register is marked live after register allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104320 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7ebc4d63db05ac214d36bc01b4d60adadaf923e5 19-May-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add MachineInstr::readsVirtualRegister() in preparation for proper handling of
partial redefines.

We are going to treat a partial redefine of a virtual register as a
read-modify-write:

%reg1024:6 = OP

Unless the register is fully clobbered:

%reg1024:6 = OP, %reg1024<imp-def>

MachineInstr::readsVirtualRegister() knows the difference. The first case is a
read, the second isn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104149 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e6cd757e6800b9b94a6459ec148c0624c4f2e3c1 13-May-2010 Dan Gohman <gohman@apple.com> Teach MachineLICM and MachineSink how to clear kill flags conservatively
when they move instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103737 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
59b3655564bb6717b296ca9e71f13bf7db45b590 28-Apr-2010 Evan Cheng <evan.cheng@apple.com> Pretty print DBG_VALUE machine instructions.
Before:
DBG_VALUE %RSI, 0, !-1; dbg:SimpleRegisterCoalescing.cpp:2707
Now:
DBG_VALUE %RSI, 0, !"this"; dbg:SimpleRegisterCoalescing.cpp:2707


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102518 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1793ab9e70c48146a5f1592b84b2b93e38c67fa4 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Use getNumImplicitDefs() and getNumImplicitUses().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100850 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0855cadb00c598d4e78c8f1842a9c1b9bf19c667 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Fix up some comments.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100849 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a57fabe815ccf016eead526eb3ef475f116ab155 08-Apr-2010 Evan Cheng <evan.cheng@apple.com> Coalescer should not delete copy instructions whose defs are partially dead. e.g.
%RDI<def,dead> = MOV64rr %RAX<kill>, %EDI<imp-def>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
24ad3ed71fe93059d1b46ffdbfe63259762bf547 07-Apr-2010 Chris Lattner <sabre@nondot.org> fix a latent bug my inline asm stuff exposed:
MachineOperand::isIdenticalTo wasn't handling metadata operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100636 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a4f2bb08de92ccec21cbb3d0a9518384b0173660 02-Apr-2010 Chris Lattner <sabre@nondot.org> stop using DebugLoc::getUnknownLoc()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100215 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
de4845c163a5847c82d7ce10ed0c320098bce6e0 02-Apr-2010 Chris Lattner <sabre@nondot.org> Switch the code generator (except the JIT) onto the new DebugLoc
representation. This eliminates the 'DILocation' MDNodes for
file/line/col tuples from -O0 -g codegen.

This remove the old DebugLoc class, making it a typedef for DebugLoc,
I'll rename NewDebugLoc next.

I didn't update the JIT to use the new apis, so it will continue to
work, but be as slow as before. Someone should eventually do this
or, better yet, rip out the JIT debug info stuff and build the JIT
on top of MC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100209 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
72aaa3c79869870bd16402ed1f37b80a5e71c800 13-Mar-2010 Chris Lattner <sabre@nondot.org> add support for MCSymbols as operands to MachineInstrs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98433 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3c91b05d2b1751b9e4e21fd958d358ec463dcd3c 08-Mar-2010 Devang Patel <dpatel@apple.com> Avoid using DIDescriptor.isNull().
This is a first step towards eliminating checks in Descriptor constructors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0ef3fa6aabc80995c8a0bd829c85c89ef2d4c32d 08-Mar-2010 Devang Patel <dpatel@apple.com> Revert r97947.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97963 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d8cc5d5256e79a74188dfef5a12d43127330dad3 08-Mar-2010 Devang Patel <dpatel@apple.com> Avoid using DIDescriptor.isNull().
This is a first step towards eliminating unncessary constructor checks in light weight DIDescriptor wrappers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97947 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
67eaa08f2b71aa8aec8cdf4c7d970db4cad58ada 04-Mar-2010 Evan Cheng <evan.cheng@apple.com> Move MachineInstrExpressionTrait::getHashValue() out of line so it can skip over only virtual register defs. This matches what isEqual() is doing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
34cdf6edf55d22832dee34fe6a39f1e10691ab51 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Fix funky indentation and add comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97670 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
506049f29f4f202a8e45feb916cc0264440a7f6d 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> - Change MachineInstr::isIdenticalTo to take a new option that determines whether it should skip checking defs or at least virtual register defs. This subsumes part of the TargetInstrInfo::isIdentical functionality.
- Eliminate TargetInstrInfo::isIdentical and replace it with produceSameValue. In the default case, produceSameValue just checks whether two machine instructions are identical (except for virtual register defs). But targets may override it to check for unusual cases (e.g. ARM pic loads from constant pools).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ac1abde05b7e6956c01deb6557539bee8fea30f4 02-Mar-2010 Evan Cheng <evan.cheng@apple.com> Swap parameters of isSafeToMove and isSafeToReMat for consistency.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97578 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ba2b297ca53cd685ba397177e9d2d8c239da971e 15-Feb-2010 David Greene <greened@obbligato.org> Add non-temporal flags to MachineMemOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f451cb870efcf9e0302d25ed05f4cac6bb494e42 10-Feb-2010 Dan Gohman <gohman@apple.com> Fix "the the" and similar typos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9653f9ec970147a12216d787078eab2f8b9c122a 10-Feb-2010 Dale Johannesen <dalej@apple.com> Add isDebug argument to ChangeToRegister; this prevents
the field from being used uninitialized later in some cases.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
518bb53485df640d7b7e3f6b0544099020c42aa7 09-Feb-2010 Chris Lattner <sabre@nondot.org> move target-independent opcodes out of TargetInstrInfo
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95687 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b1bb4afbc7d801f9875be135c428b6f05511db5d 19-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Identify predicate and optional-def operands when printing machine
instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6b61f5816e22ac7f7e009aaf3e11ccce7cfeb085 16-Jan-2010 Devang Patel <dpatel@apple.com> Replace DebugLocTuple with DILocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5f72a5ebc84a1935878b5b2d3166a505c520cdfc 13-Jan-2010 Dale Johannesen <dalej@apple.com> Further progration of metadata operands. The
dumper doesn't really do what I want yet, but
at least it doesn't crash now.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93272 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8efadf94b568c08de3ff8ce35fd904a935387406 06-Jan-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Add <imp-def> and <imp-kill> operands when replacing virtual sub-register defs and kills.

An instruction like this:

%reg1097:1<def> = VMOVSR %R3<kill>, 14, %reg0

Must be replaced with this when substituting physical registers:

%S0<def> = VMOVSR %R3<kill>, 14, %reg0, %D0<imp-def>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92812 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3b325334102144ec39910563eabebde434504564 05-Jan-2010 David Greene <greened@obbligato.org> Change errs() to dbgs().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92545 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5e9cd434234a36089daeee915f1dc02b96947fba 28-Dec-2009 Chris Lattner <sabre@nondot.org> snip one more #include from Metadata.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92214 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
164558e59c2a321bf670e31a7bdde0d38d79bb67 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92159 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ad2cf9dd63d15a8bcd7d34a379a1e983fd8c66f7 25-Dec-2009 Bill Wendling <isanbard@gmail.com> Remove dead store from copy-pasto.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92158 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
06801722a43c697eff0acee905de6b50257ce19b 16-Dec-2009 Jim Grosbach <grosbach@apple.com> Add @earlyclobber TableGen constraint

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91554 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d8f079c25e8bcaf4d10bfa9c3f6a38cd5ac84329 08-Dec-2009 Evan Cheng <evan.cheng@apple.com> Follow up to 90488. Turn a check into an assertion.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90815 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4b808b014b0cd25261f93e1885ffdbd0247d8634 05-Dec-2009 Dan Gohman <gohman@apple.com> Don't print the debug directory; it's often long and uninteresting. Omit
the column number if it is not known. Handle the case of a missing filename
better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9aed9396a672f50541dc77a4662bb882a0fb1080 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Watch out for PHI instruction with no source operands.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90488 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
229694f0ee630ceabe96a8bd48952f6740f928b2 03-Dec-2009 Evan Cheng <evan.cheng@apple.com> Fill out codegen SSA updater. It's not yet tested.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
261a7d983d38edd2f1ee6ff2cd0c12a2c2a8b044 01-Dec-2009 Dan Gohman <gohman@apple.com> Devang pointed out that this code should use DIScope instead of
DICompileUnit. This code now prints debug filenames successfully.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@90181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
75ae593a2750f9f7995980c3a03c0d972985e394 23-Nov-2009 Dan Gohman <gohman@apple.com> Print the debug info line and column in MachineInstr::print even when there's
no filename. This situation is apparently fairly common right now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
834651c94535bfb054449e6c01d5c77ab7a117d3 16-Nov-2009 Dan Gohman <gohman@apple.com> Initialize the new AsmPrinterFlags field to 0, fixing uses of
uninitialized memory.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@88985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
80f6c5898113806130975fd56d24929b06bf54f8 09-Nov-2009 Dan Gohman <gohman@apple.com> Print "..." instead of all the uninteresting register clobbers on call
instructions. This makes CodeGen dumps significantly less noisy.

Example before:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %R2<imp-def,dead>, %R3<imp-def,dead>, %R12<imp-def,dead>, %LR<imp-def,dead>, %D0<imp-def,dead>, %D1<imp-def,dead>, %D2<imp-def,dead>, %D3<imp-def,dead>, %D4<imp-def,dead>, %D5<imp-def,dead>, %D6<imp-def,dead>, %D7<imp-def,dead>, %D16<imp-def,dead>, %D17<imp-def,dead>, %D18<imp-def,dead>, %D19<imp-def,dead>, %D20<imp-def,dead>, %D21<imp-def,dead>, %D22<imp-def,dead>, %D23<imp-def,dead>, %D24<imp-def,dead>, %D25<imp-def,dead>, %D26<imp-def,dead>, %D27<imp-def,dead>, %D28<imp-def,dead>, %D29<imp-def,dead>, %D30<imp-def,dead>, %D31<imp-def,dead>, %CPSR<imp-def,dead>, %FPSCR<imp-def,dead>

Same example after:
BL <ga:@bar>, %R0<imp-def>, %R1<imp-def,dead>, %LR<imp-def,dead>, %CPSR<imp-def,dead>, ...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86583 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8d4e3b5b48b245ed65259270a53fcaf0bf91d9f7 06-Nov-2009 Dan Gohman <gohman@apple.com> Use WriteAsOperand to print GlobalAddress MachineOperands. This
prints them with the leading '@'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86261 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0ba90f3e34b826b039bdfece1415ef032c4ad3f5 31-Oct-2009 Dan Gohman <gohman@apple.com> Make -print-machineinstrs more readable.
- Be consistent when referring to MachineBasicBlocks: BB#0.
- Be consistent when referring to virtual registers: %reg1024.
- Be consistent when referring to unknown physical registers: %physreg10.
- Be consistent when referring to known physical registers: %RAX
- Be consistent when referring to register 0: %reg0
- Be consistent when printing alignments: align=16
- Print jump table contents.
- Don't print host addresses, in general.
- and various other cleanups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85682 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8c2b52552c90f39e4b2fed43e309e599e742b6ac 30-Oct-2009 Dan Gohman <gohman@apple.com> Initial target-independent CodeGen support for BlockAddresses.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85556 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5affca0763836e15ca15e78ed3a0fd56ef6b2e92 21-Oct-2009 Evan Cheng <evan.cheng@apple.com> Need a comma after imp-use.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84749 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0789707c49135bba69e0e308d0fbc41bb7cbe78a 15-Oct-2009 Evan Cheng <evan.cheng@apple.com> Print earlyclobber for implicit-defs as well.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1619dc3b9ee2573c481591764c2d26d5ff16b483 14-Oct-2009 Devang Patel <dpatel@apple.com> s/DebugLoc.CompileUnit/DebugLoc.Scope/g
s/DebugLoc.InlinedLoc/DebugLoc.InlinedAtLoc/g



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84054 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a70dca156fa76d452f54829b5c5f962ddfd94ef2 10-Oct-2009 Dan Gohman <gohman@apple.com> Factor out LiveIntervalAnalysis' code to determine whether an instruction
is trivially rematerializable and integrate it into
TargetInstrInfo::isTriviallyReMaterializable. This way, all places that
need to know whether an instruction is rematerializable will get the
same answer.

This enables the useful parts of the aggressive-remat option by
default -- using AliasAnalysis to determine whether a memory location
is invariant, and removes the questionable parts -- rematting operations
with virtual register inputs that may not be live everywhere.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83687 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
599a87aca0194edb46f0bee141c3de8281bf22b9 09-Oct-2009 Dan Gohman <gohman@apple.com> isTriviallyReMaterializable checks the
TargetInstrDesc::isRematerializable flag, so it isn't necessary to do
this check in its callers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83671 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e33f44cfc547359bc28526e4c5e1852b600b4448 07-Oct-2009 Dan Gohman <gohman@apple.com> Replace TargetInstrInfo::isInvariantLoad and its target-specific
implementations with a new MachineInstr::isInvariantLoad, which uses
MachineMemOperands and is target-independent. This brings MachineLICM
and other functionality to targets which previously lacked an
isInvariantLoad implementation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83475 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cf0fe8d813727383d630055bb9d1cde21b00b7e7 05-Oct-2009 Chris Lattner <sabre@nondot.org> strength reduce a ton of type equality tests to check the typeid (Through
the new predicates I added) instead of going through a context and doing a
pointer comparison. Besides being cheaper, this allows a smart compiler
to turn the if sequence into a switch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83297 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5ccdd10b1a0ee1ce35b6e5a18eb0fcfd6f5131d3 29-Sep-2009 Devang Patel <dpatel@apple.com> Remove std::string uses from DebugInfo interface.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83083 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4b2ebc19288491cb068f268c311d9fef0ec6a29f 26-Sep-2009 Dan Gohman <gohman@apple.com> Move MachineMemOperand::getAlignment out of line, to avoid needing
MathExtras.h in MachineMemOperand.h.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82822 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c76909abfec876c6b751d693ebd3df07df686aa0 25-Sep-2009 Dan Gohman <gohman@apple.com> Improve MachineMemOperand handling.
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.

Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cd26ec5f3c089b3b24f80ff200e94e681eb9e1ee 23-Sep-2009 Dan Gohman <gohman@apple.com> Give MachineMemOperand an operator<<, factoring out code from
two different places for printing MachineMemOperands.

Drop the virtual from Value::dump and instead give Value a
protected virtual hook that can be overridden by subclasses
to implement custom printing. This lets printing be more
consistent, and simplifies printing of PseudoSourceValue
values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82599 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
28f02fdd76f4efc05d14649e0eec90ce8e71e17e 21-Sep-2009 Dan Gohman <gohman@apple.com> Change MachineMemOperand's alignment value to be the alignment of
the base pointer, without the offset. This matches MemSDNode's
new alignment behavior, and holds more interesting information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82473 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f9ca50e3dce88b2f9e2f2f0cac2d3ed78afda841 17-Sep-2009 Jim Grosbach <grosbach@apple.com> grammar

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82150 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d9ea85ab01fb0f2929ed50223d3758dceea8bcbd 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove some uses of llvm/Support/Streams.h



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79842 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
705e07f578e2b3af47ddab610feb4e7f2d3063a5 23-Aug-2009 Chris Lattner <sabre@nondot.org> remove various std::ostream version of printing methods from
MachineInstr and MachineOperand. This required eliminating a
bunch of stuff that was using DOUT, I hope that bill doesn't
mind me stealing his fun. ;-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1d0be15f89cb5056e20e2d24faa8d6afb1573bca 13-Aug-2009 Owen Anderson <resistor@mac.com> Push LLVMContexts through the IntegerType APIs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
efb8e3e113cbf359d6a838c3b37fedc8305d19bb 04-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't tamper with <undef> operands in MachineInstr::addRegisterKilled.

For an undef operand, MO.getReg() is meaningless and we should not use it.
Undef operands should be skipped entirely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78095 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
980daea857719b3eeb7dc88fe013049d361d955b 03-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix Bug 4657: register scavenger asserts with subreg lowering

When LowerSubregsInstructionPass::LowerInsert eliminates an INSERT_SUBREG
instriction because it is an identity copy, make sure that the same registers
are alive before and after the elimination.

When the super-register is marked <undef> this requires inserting an
IMPLICIT_DEF instruction to make sure the super register is live.

Fix a related bug where a kill flag on the inserted sub-register was not transferred properly.

Finally, clear the undef flag in MachineInstr::addRegisterKilled. Undef implies dead and kill implies live, so they cant both be valid.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77989 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ece48185168ab130b1777feb86d9e3fe80eb87d2 02-Aug-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Never add a kill flag to a constrained physical register in a two-addr instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77906 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7cc2c406d0c82bcf329048ced643ec77fcae60e6 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix a typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77369 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
45d34fe35846eed7019bdc2f7814025302849e0c 19-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Fix http://llvm.org/bugs/show_bug.cgi?id=4583

Inline asm instructions may have additional <imp-def,kill> register operands.
These operands are not marked with a flag like the normal asm operands, so we
must not assert that there is a flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
57e599a46b7b1321f9af02d1cecb4fa6b34f8a52 16-Jul-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> Teach MachineInstr::isRegTiedToDefOperand() to correctly parse inline asm operands.

The inline asm operands must be parsed from the first flag, you cannot assume
that an immediate operand preceeding a register use operand is the flag.
PowerPC "m" operands are represented as (flag, imm, reg) triples.
isRegTiedToDefOperand() would incorrectly interpret the imm as the flag.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76101 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c23197a26f34f559ea9797de51e187087c039c42 14-Jul-2009 Torok Edwin <edwintorok@gmail.com> llvm_unreachable->llvm_unreachable(0), LLVM_UNREACHABLE->llvm_unreachable.
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75640 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c25e7581b9b8088910da31702d4ca21c4734c6d7 11-Jul-2009 Torok Edwin <edwintorok@gmail.com> assert(0) -> LLVM_UNREACHABLE.
Make llvm_unreachable take an optional string, thus moving the cerr<< out of
line.
LLVM_UNREACHABLE is now a simple wrapper that makes the message go away for
NDEBUG builds.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75379 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4784f1fc73abf6005b7b7262d395af71b57b1255 30-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add a bit IsUndef to MachineOperand. This indicates the def / use register operand is defined by an implicit_def. That means it can def / use any register and passes (e.g. register scavenger) can feel free to ignore them.

The register allocator, when it allocates a register to a virtual register defined by an implicit_def, can allocate any physical register without worrying about overlapping live ranges. It should mark all of operands of the said virtual register so later passes will do the right thing.

This is not the best solution. But it should be a lot less fragile to having the scavenger try to track what is defined by implicit_def.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74518 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
31530617dd206c3ac549e98508d8f98e91bf8275 24-Jun-2009 Chris Lattner <sabre@nondot.org> Rearrange some stuff in MachineOperand and add a new TargetFlags field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74087 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ef5d070bbe55d7165fc84778ca7757c3cfeea491 24-Jun-2009 Evan Cheng <evan.cheng@apple.com> Fix support for inline asm input / output operand tying when operand spans across multiple registers (e.g. two i64 operands in 32-bit mode).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c965ee223c6077250525048106726e12b59072ac 05-Jun-2009 Dan Gohman <gohman@apple.com> Remove some unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a26eae64ddf607549f9e47046d46ea5b9ec648b4 01-May-2009 Argyrios Kyrtzidis <akyrtzi@gmail.com> Make DebugLoc independent of DwarfWriter.

-Replace DebugLocTuple's Source ID with CompileUnit's GlobalVariable*
-Remove DwarfWriter::getOrCreateSourceID
-Make necessary changes for the above (fix callsites, etc.)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70520 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ce9be2cf5dc84865f6b819bd3f9be16944426268 29-Apr-2009 Jakob Stoklund Olesen <stoklund@2pi.dk> MachineInstr::isRegTiedTo{Use,Def}Operand can safely be made const.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9407cd4ede3e2c090b958778d0fdbdac8b2dbec4 15-Apr-2009 Dan Gohman <gohman@apple.com> Fix MachineInstr::getNumExplicitOperands to count
variadic operands correctly. Patch by Jakob Stoklund Olesen!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69190 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3bc1a3735f216f4a122fe4a05d39f63888ab205a 15-Apr-2009 Dan Gohman <gohman@apple.com> Give RemoveRegOperandFromRegInfo a comment and move the
code out of line.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69124 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c30aa7b3de0ce8c37e9630e8e7a73cb83c808c62 10-Apr-2009 Chris Lattner <sabre@nondot.org> ignore register zero in isRegTiedToUseOperand, following the example of
isRegTiedToDefOperand. Thanks to Bob for pointing this out!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68734 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d9df5017040489303acb57bdd8697ef0f8bafc08 09-Apr-2009 Bob Wilson <bob.wilson@apple.com> Fix pr3954. The register scavenger asserts for inline assembly with
register destinations that are tied to source operands. The
TargetInstrDescr::findTiedToSrcOperand method silently fails for inline
assembly. The existing MachineInstr::isRegReDefinedByTwoAddr was very
close to doing what is needed, so this revision makes a few changes to
that method and also renames it to isRegTiedToUseOperand (for consistency
with the very similar isRegTiedToDefOperand and because it handles both
two-address instructions and inline assembly with tied registers).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68714 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0c8382ce9a96e36325b17d242fd1af16564d8a85 09-Apr-2009 Chris Lattner <sabre@nondot.org> reg0 references are not real registers. This fixes a crash on the
attached testcase.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@68712 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fb11288109329cb736d9f49769581a0d0c23fe19 23-Mar-2009 Evan Cheng <evan.cheng@apple.com> Model inline asm constraint which ties an input to an output register as machine operand TIED_TO constraint. This eliminated the need to pre-allocate registers for these. This also allows register allocator can eliminate the unneeded copies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67512 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a24752ff43dc1ad8c18c5d9e78549c45f62b980e 19-Mar-2009 Evan Cheng <evan.cheng@apple.com> Added MachineInstr::isRegTiedToDefOperand to check for two-addressness.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b5ef27375731ece13a8ae0102b3f3233351036af 19-Feb-2009 Bill Wendling <isanbard@gmail.com> Print out debug info when printing the machine instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@65067 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
06efc02854a96a9f92edc3bf46b0451f488cf2e6 28-Jan-2009 Dale Johannesen <dalej@apple.com> Add a DebugLoc field and some simple accessors.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
237dee125997dcaf16e391878465162cc680c0fa 23-Dec-2008 Dan Gohman <gohman@apple.com> Use isTerminator() instead of isBranch()||isReturn() in
several places. isTerminator() returns true for a superset
of cases, and includes things like FP_REG_KILL, which are
nither return or branch but aren't safe to move/remat/etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2ccc83966914593d98af5671ce10a3bf2dcf7513 18-Dec-2008 Dan Gohman <gohman@apple.com> Print subreg information in MachineInstr::dump.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61213 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
bcf28c08b3f0a3c4aa1be8f1485f6452d9a2b690 09-Dec-2008 Dan Gohman <gohman@apple.com> Minor code simplification.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2ce7f2068f13566f5a70ee779e3bb83a6cb8d942 05-Dec-2008 Dan Gohman <gohman@apple.com> Drop the reg argument to isRegReDefinedByTwoAddr, which was redundant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60586 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cbad42cfd1cc93a41ff26ea2e8895bfbc09f54f2 18-Nov-2008 Dan Gohman <gohman@apple.com> Add more const qualifiers. This fixes build breakage from r59540.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b3b930a011554fc7566dd4311af3862b01e5fd8f 18-Nov-2008 Dan Gohman <gohman@apple.com> Make some methods const.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59540 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5ca6bd14a00ba5310ce1a632d3a0cc8f8af31433 10-Oct-2008 Mon P Wang <wangmp@apple.com> Added missing print functions that take a raw_ostream


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57339 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d735b8019b0f297d7c14b55adcd887af24d8e602 03-Oct-2008 Dan Gohman <gohman@apple.com> Switch the MachineOperand accessors back to the short names like
isReg, etc., from isRegister, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57006 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d790a5ceee7138d8a5352432ccf862a42e3f5819 02-Oct-2008 Dan Gohman <gohman@apple.com> Fix a think-o in isSafeToMove. This fixes it from thinking that
volatile memory references are safe to move.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
86b49f8e2de796cb46c7c8b6a4c4900533fd53f4 24-Sep-2008 Dale Johannesen <dalej@apple.com> Next round of earlyclobber handling. Approach the
RA problem by expanding the live interval of an
earlyclobber def back one slot. Remove
overlap-earlyclobber throughout. Remove
earlyclobber bits and their handling from
live internals.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56539 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3e4fb70c6af53a2d00e057a7e4a8f93eb2ff2112 24-Sep-2008 Dan Gohman <gohman@apple.com> Add a method to MachineInstr for testing whether it makes
any volatile memory references.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56528 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
91aac1015e6714d959801dd8d60f55a72827dc4d 17-Sep-2008 Dale Johannesen <dalej@apple.com> Add a bit to mark operands of asm's that conflict
with an earlyclobber operand elsewhere. Propagate
this bit and the earlyclobber bit through SDISel.
Change linear-scan RA not to allocate regs in a way
that conflicts with an earlyclobber. See also comments.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56290 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e009180f2bbcf5edbe3b583936c37c4b3be2d082 14-Sep-2008 Dale Johannesen <dalej@apple.com> adjust last patch per review feedback



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56194 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
014278e6a11fa0767853b831e5bf51b95bf541c5 13-Sep-2008 Dan Gohman <gohman@apple.com> Remove isImm(), isReg(), and friends, in favor of
isImmediate(), isRegister(), and friends, to avoid confusion
about having two different names with the same meaning. I'm
not attached to the longer names, and would be ok with
changing to the shorter names if others prefer it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56189 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
913d3dfac43f29921467f33aa743f28ee1bfc5d1 12-Sep-2008 Dale Johannesen <dalej@apple.com> Pass "earlyclobber" bit through to machine
representation; coalescer and RA need to know
about it. No functional change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56161 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3f62940561760fe5dcc8675853be57ee4ac8069a 03-Sep-2008 Dan Gohman <gohman@apple.com> Fix addRegisterDead and addRegisterKilled to be more thorough
when searching for redundant subregister dead/kill bits.

Previously it was common to see instructions marked like this:
"RET %EAX<imp-use,kill>, %AX<imp-use,kill>"

With this change, addRegisterKilled continues scanning after
finding the %EAX operand, so it proceeds to discover the
redundant %AX kill and eliminates it, producing this:
"RET %EAX<imp-use,kill>"

This currently has no effect on the generated code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55698 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3689ff450ae2d72aadf48c70f499e4368684d1e3 30-Aug-2008 Evan Cheng <evan.cheng@apple.com> Fold isRematerializable checks into isSafeToReMat.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55563 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8763c1c54413c9cd0b56e2860edb5856151a69fc 27-Aug-2008 Evan Cheng <evan.cheng@apple.com> Move the check whether it's worth remating to caller.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
df3b99381f1c211071cc1daf0cc297666877bbcb 27-Aug-2008 Evan Cheng <evan.cheng@apple.com> Refactor isSafeToReMat out of 2addr pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55430 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
edfb72c6288118ab9c900a560ded89dfaa107296 24-Aug-2008 Chris Lattner <sabre@nondot.org> simplify PseudoSourceValue printing a bit. Unnest all of PseudoSourceValue.cpp from the llvm namespace.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
40ab164d3ae6fddb279ae49ab2f9756b466c640a 24-Aug-2008 Evan Cheng <evan.cheng@apple.com> Print PseudoSourceValue.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b8d2f550b84523e8a73198f98e5d450ec3b4fee7 20-Aug-2008 Dan Gohman <gohman@apple.com> Change the FoldingSetNodeID usage for objects which carry
alignment and volatility information, such as loads and
stores, to reduce the number of integer values added to
the FoldingSetNodeID.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55058 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
79e6ed9d4733ef6bfaf6e6ae71a013c8b226b7c9 15-Aug-2008 Owen Anderson <resistor@mac.com> Move MachineInstr::getOpcode inline.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54807 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
22ae99908258dd5631fde7128a94c418ed08eae5 14-Aug-2008 Owen Anderson <resistor@mac.com> Speed up addRegisterDead by adding more fast checks before performing the expensive
subregister query, and by increasing the size of the subregister hashtable so
that there are fewer collisions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fed90b6d097d50881afb45e4d79f430db66dd741 28-Jul-2008 Dan Gohman <gohman@apple.com> Fold the useful features of alist and alist_node into ilist, and
a new ilist_node class, and remove them. Unlike alist_node,
ilist_node doesn't attempt to manage storage itself, so it avoids
the associated problems, including being opaque in gdb.

Adjust the Recycler class so that it doesn't depend on alist_node.
Also, change it to use explicit Size and Align parameters, allowing
it to work when the largest-sized node doesn't have the greatest
alignment requirement.

Change MachineInstr's MachineMemOperand list from a pool-backed
alist to a std::list for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54146 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6116a73da420d9b414a34ce2599dc7f6476e23fc 21-Jul-2008 Dan Gohman <gohman@apple.com> Now that the MachineInstr leaks are fixed, enable leak checking
in the MachineInstr clone code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53868 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1ed9922794cda9dbe295e74674b909287e544632 19-Jul-2008 Evan Cheng <evan.cheng@apple.com> Fix a memory leak in LiveIntervalAnalysis.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53779 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2c3f7ae3843bdc9dcfe85393e178211976c1f9bd 18-Jul-2008 Dan Gohman <gohman@apple.com> Re-introduce LeakDetector support for MachineInstrs and MachineBasicBlocks.
Fix a leak that this turned up in LowerSubregs.cpp.
And, comment a leak in LiveIntervalAnalysis.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53746 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c5e1f98fdf44993c2bfe4c1ef633b2358cd718c1 16-Jul-2008 Dan Gohman <gohman@apple.com> Add an assert to check for empty flags for MachineMemOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
dc2fbddd9d204e904b8e61d1da1428579e7c55af 11-Jul-2008 Dan Gohman <gohman@apple.com> Trim unnecessary #includes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53471 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ef0732d25a9882c947984ae3f2afbef5463ba00f 10-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Change the horrible N^2 isRegReDefinedByTwoAddr. Now callers must supply the operand index of def machineoperand and at most one full scan of non-implicit operands is needed.
- Change local register allocator to use the new isRegReDefinedByTwoAddr instead of reinventing the wheel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53394 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4e526b9a5b36d9bac170c03df0a5d6fb76740ae2 09-Jul-2008 Dan Gohman <gohman@apple.com> It's no longer necessary to test if a MachineBasicBlock's
parent is non-null. It now always is.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f1bf29e648a25a440d3dcf5a445b30c4129c9bca 09-Jul-2008 Dan Gohman <gohman@apple.com> Verify that MachineMemOperand alignment is a non-zero power of 2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53262 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8e5f2c6f65841542e2a7092553fe42a00048e4c7 08-Jul-2008 Dan Gohman <gohman@apple.com> Pool-allocation for MachineInstrs, MachineBasicBlocks, and
MachineMemOperands. The pools are owned by MachineFunctions.

This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53212 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ce42e404a26454f4332c2c350c75ad27bbbb16f7 07-Jul-2008 Dan Gohman <gohman@apple.com> Move MachineMemOperand's constructor out of line, to avoid a
#include dependency on Support/MathExtras.h in the header file.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9f1c8317a4676945b4961ddb9827ef2412551620 03-Jul-2008 Evan Cheng <evan.cheng@apple.com> - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53097 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2ebc11ac6d19ec806da97bd4f2d49a27932d09fb 03-Jul-2008 Dan Gohman <gohman@apple.com> Reapply r52988, "Simplify addRegisterKilled and addRegisterDead." The
254.gap failure was not due to this mod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8b69135f05cc2b8fff0f50bc826666b1da0661c4 03-Jul-2008 Dan Gohman <gohman@apple.com> Revert r52988. It broke 254.gap on x86-64.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53050 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1096734011a1ed403cc3a35e5f05f0f56873725d 02-Jul-2008 Evan Cheng <evan.cheng@apple.com> Simplify addRegisterKilled and addRegisterDead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52988 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4406604047423576e36657c7ede266ca42e79642 01-Jul-2008 Dan Gohman <gohman@apple.com> Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating
the need for a flavor operand, and add a new SDNode subclass,
LabelSDNode, for use with them to eliminate the need for a label id
operand.

Change instruction selection to let these label nodes through
unmodified instead of creating copies of them. Teach the MachineInstr
emitter how to emit a MachineInstr directly from an ISD label node.

This avoids the need for allocating SDNodes for the label id and
flavor value, as well as SDNodes for each of the post-isel label,
label id, and label flavor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52943 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
01b2e236b571e7c22ee8493b7ea19eda9830d75c 28-Jun-2008 Evan Cheng <evan.cheng@apple.com> Looks like this condition is inverted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52841 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b827c26e1e49944e44604402d2414b259dba6900 27-Jun-2008 Owen Anderson <resistor@mac.com> Don't perform expensive queries checking for super and sub registers when we know that there aren't any.
This speed up LiveVariables on instcombine at -O0 -g from 0.3855s to 0.3503s. Look for more improvements in this area soon!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8370d38adee63b3a4d87bfe81be4aacc55fe7cda 29-May-2008 Bill Wendling <isanbard@gmail.com> Add a flag to indicate that an instruction is as cheap (or cheaper) than a move
instruction to execute. This can be used for transformations (like two-address
conversion) to remat an instruction instead of generating a "move"
instruction. The idea is to decrease the live ranges and register pressure and
all that jazz.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51660 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
703bfe69092e8da79fbef2fc5ca07b805ad9f753 06-May-2008 Dan Gohman <gohman@apple.com> Fix a broken doxygen comment, and reword it for clarity.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50687 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9b6d7b9fb36b5cf87d291881dfcea399796f7826 16-Apr-2008 Evan Cheng <evan.cheng@apple.com> Code clean up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49783 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
36b5c1338a03453ba1c110b120269ca972fb65a3 07-Apr-2008 Dan Gohman <gohman@apple.com> Rename MemOperand to MachineMemOperand. This was suggested by
review feedback from Chris quite a while ago. No functionality
change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
71a2cb25ebc818383dd0f80475bc166f834e8d99 20-Mar-2008 Chris Lattner <sabre@nondot.org> detabify llvm, patch by Mike Stump!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48577 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b27087f5aa574f875598f4a309b7dd687c64a455 13-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor some code out of MachineSink into a MachineInstr query.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48311 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6130f66eaae89f8878590796977678afa8448926 05-Mar-2008 Evan Cheng <evan.cheng@apple.com> Refactor code. Remove duplicated functions that basically do the same thing as
findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47927 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
76782f49d88bbf2853ba663a1469d8324ddcbfcc 04-Mar-2008 Bill Wendling <isanbard@gmail.com> Did I say 'e = getNumOperands()'? I meant --e, of course.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47875 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
405abffd5eb1ad1841491e51943b598c935f309b 04-Mar-2008 Bill Wendling <isanbard@gmail.com> Miscellaneous clean-ups based on Evan's feedback:

- Cleaned up how the prologue-epilogue inserter loops over the instructions.
- Instead of restarting the processing of an instruction if we remove an
implicit kill, just update the end iterator and make sure that the iterator
isn't incremented.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47870 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4a23d72ec21d1bdfda69fd16c9fc10cec39f1fed 03-Mar-2008 Bill Wendling <isanbard@gmail.com> Go through the machine instruction's operands to make sure that we're not
marking both a super- and sub-register as "killed". This removes implicit uses
that are marked as "killed".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47862 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e6d088acc90e422451e098555d383d4d65b6ce6b 26-Feb-2008 Bill Wendling <isanbard@gmail.com> Rename PrintableName to Name.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47629 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
181eb737b28628adc4376b973610a02039385026 24-Feb-2008 Bill Wendling <isanbard@gmail.com> Some platforms use the same name for 32-bit and 64-bit registers (like
%r3 on PPC) in their ASM files. However, it's hard for humans to read
during debugging. Adding a new field to the register data that lets you
specify a different name to be printed than the one that goes into the
ASM file -- %x3 instead of %r3, for instance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47534 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e8b7ccf0c9a06831266d690d0b10ead71e0a4ac5 14-Feb-2008 Nate Begeman <natebegeman@mac.com> Support a new type of MachineOperand, MO_FPImmediate, used for holding
FP Immediates, crazily enough


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47117 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6f0d024a534af18d9e60b3ea757376cd8a3a980e 10-Feb-2008 Dan Gohman <gohman@apple.com> Rename MRegisterInfo to TargetRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
bbd8322daaefa70ba1a282956df5f977e783524b 08-Feb-2008 Evan Cheng <evan.cheng@apple.com> Also print alignment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46895 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2bfe6ff605f07e8f50874b1326227efc8bb8ed3d 07-Feb-2008 Dan Gohman <gohman@apple.com> Don't abort if a MemOperand is missing a SourceValue; just print it
as <unknown>. And make some minor adjustments to the MemOperand
dump format.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
69de1932b350d7cdfc0ed1f4198d6f78c7822a02 06-Feb-2008 Dan Gohman <gohman@apple.com> Re-apply the memory operand changes, with a fix for the static
initializer problem, a minor tweak to the way the
DAGISelEmitter finds load/store nodes, and a renaming of the
new PseudoSourceValue objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46827 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
334dc1f58d617dcff969a2e107febaae42bbc883 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Revert 46556 and 46585. Dan please fix the PseudoSourceValue problem and re-commit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
bb81d97feb396a8bb21d074db1c57e9f66525f40 31-Jan-2008 Evan Cheng <evan.cheng@apple.com> Add an extra operand to LABEL nodes which distinguishes between debug, EH, or misc labels. This fixes the EH breakage. However I am not convinced this is *the* solution.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46609 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c6c391daddbafa722d9ca87d18f204e9a6e617a3 31-Jan-2008 Dan Gohman <gohman@apple.com> Create a new class, MemOperand, for describing memory references
in the backend. Introduce a new SDNode type, MemOperandSDNode, for
holding a MemOperand in the SelectionDAG IR, and add a MemOperand
list to MachineInstr, and code to manage them. Remove the offset
field from SrcValueSDNode; uses of SrcValueSDNode that were using
it are all all using MemOperandSDNode now.

Also, begin updating some getLoad and getStore calls to use the
PseudoSourceValue objects.

Most of this was written by Florian Brander, some
reorganization and updating to TOT by me.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46585 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b487e7215c4f70f3d98f8fbc0a11eb119afc1f37 24-Jan-2008 Owen Anderson <resistor@mac.com> Move some functionality for adding flags to MachineInstr's into methods on MachineInstr rather than LiveVariables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@46295 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f14cf85e334ff03bbdd23e473f14ffa4fb025e94 07-Jan-2008 Chris Lattner <sabre@nondot.org> remove #includage


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45697 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
749c6f6b5ed301c84aac562e414486549d7b98eb 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename TargetInstrDescriptor -> TargetInstrDesc.
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45695 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8f707e15fbd09ca948b86419bcb0c92470827ac9 07-Jan-2008 Chris Lattner <sabre@nondot.org> rename hasVariableOperands() -> isVariadic(). Add some comments.
Evan, please review the comments I added to getNumDefs to make sure
that they are accurate, thx.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45687 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
349c4952009525b27383e2120a6b3c998f39bd09 07-Jan-2008 Chris Lattner <sabre@nondot.org> Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45680 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8ca5c67c6e95fdcf5ddb2f06586873c843dd0cde 07-Jan-2008 Chris Lattner <sabre@nondot.org> Add predicates methods to TargetOperandInfo, and switch all clients
over to using them, instead of diddling Flags directly. Change the
various flags from const variables to enums.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45677 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
69244300b8a0112efb44b6273ecea4ca6264b8cf 07-Jan-2008 Chris Lattner <sabre@nondot.org> Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects
that it is cheap and efficient to get.

Move a variety of predicates from TargetInstrInfo into
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around. Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.

Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
80fe5311b5e9e5c4642ff46ba2377173c17797f6 01-Jan-2008 Chris Lattner <sabre@nondot.org> Make MachineRegisterInfo::getVRegDef more efficient by aiming the keep the def of the vreg at the start of the list, so the list doesn't need to be traversed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45483 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e138b3dd1ff02d826233482831318708a166ed93 01-Jan-2008 Chris Lattner <sabre@nondot.org> switch the register iterator to act more like hte LLVM value iterator: dereferencing
it now returns the machineinstr of the use. To get the operand, use I.getOperand().

Add a new MachineRegisterInfo::replaceRegWith, which is basically like
Value::replaceAllUsesWith.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45482 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
62ed6b9ade63bf01717ce5274fa11e93e873d245 01-Jan-2008 Chris Lattner <sabre@nondot.org> Implement automatically updated def/use lists for all MachineInstr register
operands. The lists are currently kept in MachineRegisterInfo, but it does
not yet provide an iterator interface to them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45477 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f20c1a497fe3922ac718429d65a5fe396890575e 31-Dec-2007 Chris Lattner <sabre@nondot.org> properly encapsulate the parent field of MBB and MI with get/set accessors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
84bc5427d6883f73cfeae3da640acd011d35c006 31-Dec-2007 Chris Lattner <sabre@nondot.org> Rename SSARegMap -> MachineRegisterInfo in keeping with the idea
that "machine" classes are used to represent the current state of
the code being compiled. Given this expanded name, we can start
moving other stuff into it. For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.

Update all the clients to match.

This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45467 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8aa797aa51cd4ea1ec6f46f4891a6897944b75b2 31-Dec-2007 Chris Lattner <sabre@nondot.org> Add new shorter predicates for testing machine operands for various types:
e.g. MO.isMBB() instead of MO.isMachineBasicBlock(). I don't plan on
switching everything over, so new clients should just start using the
shorter names.

Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(),
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45464 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f73823000e2d5d6e1cf65bdf5a107297e18d35fb 30-Dec-2007 Chris Lattner <sabre@nondot.org> More cleanups for MachineOperand:
- Eliminate the static "print" method for operands, moving it
into MachineOperand::print.
- Change various set* methods for register flags to take a bool
for the value to set it to. Remove unset* methods.
- Group methods more logically by operand flavor in MachineOperand.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e3087890ac7f2fcf4697f8e09091e9a384311b9c 30-Dec-2007 Chris Lattner <sabre@nondot.org> MachineOperand:
- Add getParent() accessors.
- Move SubReg out of the AuxInfo union, to make way for future changes.
- Remove the getImmedValue/setImmedValue methods.
- in some MachineOperand::Create* methods, stop initializing fields that are dead.

MachineInstr:
- Delete one copy of the MachineInstr printing code, now there is only one dump
format and one copy of the code.
- Make MachineOperand use the parent field to get info about preg register names if
no target info is otherwise available.
- Move def/use/kill/dead flag printing to the machineoperand printer, so they are
always printed for an operand.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45460 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e26dcfe6affca105469db974d990c961e5ed3437 30-Dec-2007 Chris Lattner <sabre@nondot.org> simpilfy some register printing code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45458 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7da5313d3f20ff4bf491a828726c8b11d88bfa7c 30-Dec-2007 Chris Lattner <sabre@nondot.org> eliminate a copy of the machineoperand printing stuff. Keep the copy that
knows how to print offsets.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45457 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fde5f801be6bb75fad4e7a39b5bc62c04857ac0c 30-Dec-2007 Chris Lattner <sabre@nondot.org> Simplify and clean up some machine operand/instr printing/dumping stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45456 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0974d9a5247a1f70ab739191ce5d768488a0f8aa 30-Dec-2007 Chris Lattner <sabre@nondot.org> two register machineoperands are not identical unless their subregs match.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45455 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9e3304900ff69c4920fea7369c9c36916c4a6a6a 30-Dec-2007 Chris Lattner <sabre@nondot.org> MachineOperand::getImmedValue -> MachineOperand::getImm


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45454 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e12d6abfdfc5141b2001f0c369a0e1525315b9c0 30-Dec-2007 Chris Lattner <sabre@nondot.org> make machine operands fatter: give each one an up-pointer to the
machineinstr that owns it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45449 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8019f41c0b7fda031d494e3900eada7d4e494772 30-Dec-2007 Chris Lattner <sabre@nondot.org> Start using the simplified methods for adding operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a4161ee99478e7f8f9e33481e1c0dc79f0b4bd7d 30-Dec-2007 Chris Lattner <sabre@nondot.org> simplify some code by factoring operand construction better.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45428 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4ee451de366474b9c228b4e5fa573795a715216d 29-Dec-2007 Chris Lattner <sabre@nondot.org> Remove attribution from file headers, per discussion on llvmdev.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45418 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c498b0281fa81bc213ad1a1228664d480936c0e6 14-Nov-2007 Evan Cheng <evan.cheng@apple.com> Clean up sub-register implementation by moving subReg information back to
MachineOperand auxInfo. Previous clunky implementation uses an external map
to track sub-register uses. That works because register allocator uses
a new virtual register for each spilled use. With interval splitting (coming
soon), we may have multiple uses of the same register some of which are
of using different sub-registers from others. It's too fragile to constantly
update the information.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
fa9457276a2174aaf302240dd32d89900ad021ae 13-Oct-2007 Evan Cheng <evan.cheng@apple.com> Optionally create a MachineInstr without default implicit operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42945 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
32dfbeada7292167bb488f36a71a5a6a519ddaff 12-Oct-2007 Evan Cheng <evan.cheng@apple.com> EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG like
(almost) a register copy. However, it always coalesced to the register of the
RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub-
register uses which adds subtle complications to load folding, spiller rewrite,
etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
92dfe2001e96f6e2b6d327e8816f38033f88b295 14-Sep-2007 Dan Gohman <gohman@apple.com> Remove isReg, isImm, and isMBB, and change all their users to use
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
cb648f90a26eb05ae8d508d500ca12881df50824 14-Sep-2007 Dan Gohman <gohman@apple.com> Remove spurious consts. This fixes warnings with compilers that
are strict about such things.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6f95014158208ad6cd6f6d1996c821fca61d7915 26-Jul-2007 Christopher Lamb <christopher.lamb@gmail.com> Remove subreg index from MachineInstr's and also keep vregs as unsigned when adding operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
bf9d02eaf6378c3d35d6202ad803b0374132fc61 15-Jun-2007 Evan Cheng <evan.cheng@apple.com> MachineInstr::isPredicable() is no longer needed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37599 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f277ee4be7edabb759a7f78138b693d72d0c263f 29-May-2007 Evan Cheng <evan.cheng@apple.com> Add missing const qualifiers.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37341 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c3a289c4b5a60a204363ba4ae9f017ba87b714f9 16-May-2007 Evan Cheng <evan.cheng@apple.com> Rename M_PREDICATED to M_PREDICABLE; Moved isPredicable() to MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37121 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
19e3f31f6acd9f5ce3cdd8372d4cb598ed921f95 15-May-2007 Evan Cheng <evan.cheng@apple.com> Added getNumExplicitOperands and findFirstPredOperand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7bf1c272ab27297a7bbab329de3f17ddb26e02a3 01-May-2007 Nate Begeman <natebegeman@mac.com> llvm bug #1350, parts 1, 2, and 3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36618 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
faa510726f4b40aa4495e60e4d341c6467e3fb01 26-Apr-2007 Evan Cheng <evan.cheng@apple.com> Rename findRegisterUseOperand to findRegisterUseOperandIdx to avoid confusion.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36483 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
32eb1f1ca4220d2f24916e587ad7e8574d7d82a1 27-Mar-2007 Evan Cheng <evan.cheng@apple.com> Change findRegisterUseOperand() to return operand index instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
76d7e76c15c258ec4a71fd75a2a32bca3a5e5e27 23-Feb-2007 Evan Cheng <evan.cheng@apple.com> Use findRegisterUseOperand to find a kill of particular register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34512 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b371f457b0ea4a652a9f526ba4375c80ae542252 19-Feb-2007 Evan Cheng <evan.cheng@apple.com> Re-apply my liveintervalanalysis changes. Now with PR1207 fixes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34428 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a284cbf667e11660840dc7bae3ee9eeaa3c7cbd2 19-Feb-2007 Reid Spencer <rspencer@reidspencer.com> For PR1207:
Revert patches that caused the problem. Evan, please investigate and reapply
when you've discovered the problem.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
094e3e553f57b877153828e420cd2dacfb2b364c 17-Feb-2007 Evan Cheng <evan.cheng@apple.com> Added findRegisterDefOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34380 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
bdf44b929f6bd0983b0f0df0d2ae66610e81e149 16-Feb-2007 Evan Cheng <evan.cheng@apple.com> Print <dead> def operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34343 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4b607748d86b44cc59e5cf3eee194dfd9b0fcd86 16-Dec-2006 Jeff Cohen <jeffc@jolt-lang.org> The best unbreakage yet, addressing Bill's concerns.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32622 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c21c5eeb4f56f160e79522df2d3aab5cfe73c05d 15-Dec-2006 Jeff Cohen <jeffc@jolt-lang.org> An even better unbreakage...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e81561909d128c6e2d8033cb5465a49b2596b26a 07-Dec-2006 Bill Wendling <isanbard@gmail.com> Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are
now cerr, cout, and NullStream resp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
576d123e130a8291669dd2384a3735cc4933fd00 06-Dec-2006 Evan Cheng <evan.cheng@apple.com> Move copyKillDeadInfo out-of-line. Add findRegisterUseOperand().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32273 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
67f660cb080965ea93ed6d7265a67100f2fe38e4 30-Nov-2006 Evan Cheng <evan.cheng@apple.com> - MachineInstr now keeps a ptr to TargetInstrDescriptor instead of Opcode.
- Remove the ugly TargetInstrDescriptors hack.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32032 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a09362eb975730ac624c0bd210a95655ee105296 28-Nov-2006 Bill Wendling <isanbard@gmail.com> Use llvm streams instead of <iostream>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8bcb042f22f06d034f18aee8cb5dd0a04745fd97 28-Nov-2006 Evan Cheng <evan.cheng@apple.com> Clean up.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31957 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c0f64ffab93d11fb27a3b8a0707b77400918a20e 28-Nov-2006 Evan Cheng <evan.cheng@apple.com> Change MachineInstr ctor's to take a TargetInstrDescriptor reference instead
of opcode and number of operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31947 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a138c6c73a9e594d82958af6b9ee01108e05e7ac 20-Nov-2006 Chris Lattner <sabre@nondot.org> setOperand should not zap the operand list or add implicit operands to an
instruction. Doing so breaks the FP stackifier, the alpha branch selector
the sparc fpmover.

This fixes PR1012 and CodeGen/X86/fp-stack-compare.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31876 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6b2c05f3d3c7b44183c629485ade10c18b86828d 15-Nov-2006 Evan Cheng <evan.cheng@apple.com> Minor updates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31761 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d7de496b23fca8145f777a56281457bf64e8bbad 14-Nov-2006 Evan Cheng <evan.cheng@apple.com> - Let MachineInstr ctors add implicit def and use operands. Other operands
will be inserted before these operands. If the opcode changes (by
setOpcode), the implicit operands are updated as well.
- Added IsKill, IsDead fields to MachineOperand in preparation for changes
that move kill / dead info to MachineInstr's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31711 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3ba433a7e85c4f5b943ae6585a0327f4ccd461a0 11-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add methods to add implicit def use operands to a MI.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31675 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
438f7bc67cf235ccee7e6f7ac7f4ae2186eb8020 10-Nov-2006 Evan Cheng <evan.cheng@apple.com> Add implicit def / use operands to MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31633 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
13a04125df039d118c688df26998343a00d8a749 25-Oct-2006 Chris Lattner <sabre@nondot.org> be more aggressive about matching identical instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31179 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8ace2cd034be10c09be51daf08c3dda327f54262 21-Oct-2006 Chris Lattner <sabre@nondot.org> implement MachineOperand::isIdenticalTo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31088 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d8f44e07b89e651b2f0e3b0d680a775f44e667da 05-Sep-2006 Chris Lattner <sabre@nondot.org> Only call isUse/isDef on register operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30118 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8d3af5e7d082dbd029c3987ceadbdcf9e49af6d7 15-Jun-2006 Evan Cheng <evan.cheng@apple.com> Instructions with variable operands (variable_ops) can have a number required
operands. e.g.
def CALL32r : I<0xFF, MRM2r, (ops GR32:$dst, variable_ops),
"call {*}$dst", [(X86call GR32:$dst)]>;
TableGen should emit operand informations for the "required" operands.

Added a target instruction info flag M_VARIABLE_OPS to indicate the target
instruction may have more operands in addition to the minimum required
operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
00aff7d9772e4945e3a946e70a3ef9998006b8de 26-May-2006 Evan Cheng <evan.cheng@apple.com> Remove a bogus cast.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28492 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6e994b74921d8519472a087246d7a56731e958d4 04-May-2006 Chris Lattner <sabre@nondot.org> Final pass of minor cleanups for MachineInstr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28110 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
943b5e117fe9a087f9aa529a2632c2d32cc22374 04-May-2006 Chris Lattner <sabre@nondot.org> Remove redundancy and a level of indirection when creating machine operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28107 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8b915b4ed2c6e43413937ac71c0cbcf476ad1a98 04-May-2006 Chris Lattner <sabre@nondot.org> Remove and simplify some more machineinstr/machineoperand stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28105 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2d90ac7ca6117d3b160dde8a4f322c1079a6ffce 04-May-2006 Chris Lattner <sabre@nondot.org> Rename MO_VirtualRegister -> MO_Register. Clean up immediate handling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28104 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e53f4a055f74bded20d6129b4724ddd17fd199f6 04-May-2006 Chris Lattner <sabre@nondot.org> Move some methods out of MachineInstr into MachineOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
63b3d7113d93fda622c4954c6b1d046ce029044e 04-May-2006 Chris Lattner <sabre@nondot.org> There shalt be only one "immediate" operand type!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ceb408f6a263e319683209ae5c6f8d1e3e4d9b69 04-May-2006 Chris Lattner <sabre@nondot.org> Change "value" in MachineOperand to be a GlobalValue, as that is the only
thing that can be in it. Remove a dead method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4efeab208cf0fe7ae2f68bcdd1264a8fdb18826c 04-May-2006 Chris Lattner <sabre@nondot.org> Remove a bunch more dead V9 specific stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ea50fabfd4e5fad25a25b312f64a9b2a53363586 04-May-2006 Chris Lattner <sabre@nondot.org> Remove a bunch more SparcV9 specific stuff


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
34fb2cad46adb39f3c2cc705fbbf439a383d0f65 04-May-2006 Chris Lattner <sabre@nondot.org> Remove some more V9-specific stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
10f3597c4e0c13ecf0272b7ca0be741a91ade48c 04-May-2006 Chris Lattner <sabre@nondot.org> Remove some more unused stuff from MachineInstr that was leftover from V9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28091 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
37efe6764568a3829fee26aba532283131d1a104 22-Apr-2006 Nate Begeman <natebegeman@mac.com> JumpTable support! What this represents is working asm and jit support for
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27947 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1b87c42c82883e37099c777d08474f89834010dd 20-Apr-2006 Chris Lattner <sabre@nondot.org> This field no longer exists


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
02e5f8dcda4319e05fe49301ab72c386ed859e16 20-Apr-2006 Chris Lattner <sabre@nondot.org> Remove some of the obvious V9-specific cruft


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
48d7c069c76882475c23de153bda9483cd3c9bb4 17-Apr-2006 Chris Lattner <sabre@nondot.org> Add a MachineInstr::eraseFromParent convenience method.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27775 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
edf128a7fa90f2b0b7ee24741a04a7ae1ecd6f7e 22-Apr-2005 Misha Brukman <brukman+llvm@gmail.com> Remove trailing whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21420 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ca4f6ebefc4dc55d13a0182a0be5b02e92fc63ea 15-Oct-2004 Chris Lattner <sabre@nondot.org> Allow machine operands to represent global variables with offsets. This is
useful when you have a reference like:

int A[100];

void foo() { A[10] = 1; }

In this case, &A[10] is a single constant and should be treated as such.

Only MO_GlobalAddress and MO_ExternalSymbol are allowed to use this field, no
other operand type is.

This is another fine patch contributed by Jeff Cohen!!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17007 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
551ccae044b0ff658fe629dd67edd5ffe75d10e8 02-Sep-2004 Reid Spencer <rspencer@reidspencer.com> Changes For Bug 352
Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ce22e76996d3ff0930716fa60c29df60a7e0481b 09-Jul-2004 Misha Brukman <brukman+llvm@gmail.com> * Doxygenify comments
* Fix spacing, grammar in comment
* Make code layout consistent
* Wrap code at 80 cols
* Delete spurious blank lines

No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
954da37bb492b519f5c31dc360f2a142567e08b4 04-Jul-2004 Reid Spencer <rspencer@reidspencer.com> Add #include <iostream> since Value.h does not #include it any more.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14622 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b140762a45d21aaed054f15adaff0fc2274d939d 25-Jun-2004 Tanya Lattner <tonic@nondot.org> Made a fix so that you can print out MachineInstrs that belong to a MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
988b7ba5bad830379a7108c1f9ea36fb29073245 18-Jun-2004 Brian Gaeke <gaeke@uiuc.edu> Make debugging dumps w/ multiple MachineBBs for a given LLVM BB readable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14205 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9bcdcd17c7219dbc68de2f11ca2de86471c8c390 02-Jun-2004 Chris Lattner <sabre@nondot.org> Adjust to new TargetMachine interface


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0c63e03e04d3982e1913479bba404c3debc9a27e 24-May-2004 Tanya Lattner <tonic@nondot.org> Changed clone to be const.
Changed copy constructor to set parent, prev, and next pointers to null.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13706 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b5159ed0cb7943e5938782f7693beb18342165ce 23-May-2004 Tanya Lattner <tonic@nondot.org> Fixed up my changes to add support for cloning Machine Instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13665 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
466b534a570f574ed485d875bbca8454f68dcb52 23-May-2004 Tanya Lattner <tonic@nondot.org> Adding support to clone MachineInstr


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c54839573cd9ffa6af33dc5190cc40d498534585 03-Mar-2004 Brian Gaeke <gaeke@uiuc.edu> Make MachineOperand's value named 'contents'. Make really, really sure
it is always completely initialized and copied.
Also, fix up many comments and asserts.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12100 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
561c0107b20e9be4a02bad57a68ae9e4f96461a9 29-Feb-2004 Chris Lattner <sabre@nondot.org> int64_t -> int


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11977 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ddcfd9e6fafdbbe5c973477e537119e73c115ee4 27-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Fix crash caused by passing register 0 to
MRegisterInfo::isPhysicalRegister().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11894 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
11d1f21e1d400826ccc3cae5702d6a626baa906b 23-Feb-2004 Chris Lattner <sabre@nondot.org> Fix bugs in finegrainification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11758 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0742b59913a7760eb26f08121cd244a37e83e3b3 23-Feb-2004 Chris Lattner <sabre@nondot.org> Finegrainify namespacification


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11757 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8517e1f0beea9b5e47974f083396d53294c390ad 19-Feb-2004 Chris Lattner <sabre@nondot.org> Fix a __LONG__ term annoyance of mine: symbolic registers weren't being printed
by operator<< on MachineInstr's, and looking up what register "24" is all of the
time was greatly annoying.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
aad5c0505183a5b7913f1a443a1f0650122551cc 16-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add LeakDetection to MachineInstr.

Move out of line member functions of MachineBasicBlock to
MachineBasicBlock.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11497 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
be766c72464116a445a02b542a450c4274bab5d0 13-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Remove getAllocatedRegNum(). Use getReg() instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11393 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
21326fc2ad47ee7e73a8c0b03a4a0cc0b0a0c4e8 13-Feb-2004 Brian Gaeke <gaeke@uiuc.edu> Add head-of-file comments and Doxygen comments. Tighten up a lot of whitespace.
Rename SetMachineOperandConst's formal parameters to match other methods here.
Mark some methods as being used only by the SPARC back-end.
Fix a missing-paren bug in OutputValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ab8672c8bb83e722b856eac67863542ea7e0cbb2 12-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Add parent pointer to MachineInstr that points to owning
MachineBasicBlock. Also change opcode to a short and numImplicitRefs
to an unsigned char so that overall MachineInstr's size stays the
same.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11357 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2a90ba60175f93e7438165d8423100aa573c16c5 12-Feb-2004 Chris Lattner <sabre@nondot.org> Rename the opCode instance variable to Opcode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3081db8d01aaac5b3f9e9a30b36cb3eeb8c3cb0a 12-Feb-2004 Chris Lattner <sabre@nondot.org> This field is never read


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11346 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
14be64018fb38d1fa535b9cd12d11371f4eba3b5 04-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> Modify the two address instruction pass to remove the duplicate
operand of the instruction and thus simplify the register allocation.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11124 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4e7854407ced8e2160592675918312a20cfb7cde 03-Feb-2004 Alkis Evlogimenos <alkis@evlogimenos.com> When an instruction like: A += B had both A and B virtual registers
spilled, A was loaded from its stack location twice. This fixes the bug.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4d7af65903cbc858464362e70a6adf499982ec8a 14-Dec-2003 Alkis Evlogimenos <alkis@evlogimenos.com> Change interface of MachineOperand as follows:

a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse()
b) add isUse(), isDef()
c) rename opHiBits32() to isHiBits32(),
opLoBits32() to isLoBits32(),
opHiBits64() to isHiBits64(),
opLoBits64() to isLoBits64().

This results to much more readable code, for example compare
"op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used
very often in the code.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10461 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d0fde30ce850b78371fd1386338350591f9ff494 11-Nov-2003 Brian Gaeke <gaeke@uiuc.edu> Put all LLVM code into the llvm namespace, as per bug 109.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b576c94c15af9a440f69d9d03c2afead7971118c 20-Oct-2003 John Criswell <criswell@uiuc.edu> Added LLVM project notice to the top of every C++ source file.
Header files will be on the way.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6eba07a6a3dacec09aefa54a305b06c98b0c86c1 17-Sep-2003 Misha Brukman <brukman+llvm@gmail.com> Fixed spelling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8588 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2010f7baec18914b8a5d1b2b4c3c21511fa6e25d 07-Aug-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Fix assertion in MachineInstr::substituteValue().


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7675 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
610234d5c9582e2645738ad9c347b855962122b7 05-Aug-2003 Chris Lattner <sabre@nondot.org> Do not insert physical regsiters into the regsUsed set


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a2dd745613fdb9deff6037285f4efc20248c7b3d 05-Aug-2003 Chris Lattner <sabre@nondot.org> All callers of these methods actually wanted them to preserve the flags,
so get rid of the def/use parameters that were getting passed in.

**** This now changes the semantics of these methods to preserve the flags,
not clobber them!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7602 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e109de3166484d9d2e111efd44bc05a60bd8b056 03-Aug-2003 Chris Lattner <sabre@nondot.org> Simplify code, eliminating the need for the X86 isVoid target instr flag


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7534 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
925b771dc378d6c88da44cd5b6650f2758c3c0a7 03-Aug-2003 Chris Lattner <sabre@nondot.org> Remove using decl


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
627eb31cd791f808eaa048478d01222577a30a1a 10-Jul-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Change interface to MachineInstr::substituteValue to specify more precisely
which args can be substituted: defsOnly, defsAndUses or usesOnly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7154 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3497782f3843007de3be0c43e3ff206a01e2ccac 31-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> Allow explicit physical registers for implicit operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5f2180c53330502eb2f0f5bf3f21a838ad800906 27-May-2003 Vikram S. Adve <vadve@cs.uiuc.edu> (1) Added special register class containing (for now) %fsr.
Fixed spilling of %fcc[0-3] which are part of %fsr.

(2) Moved some machine-independent reg-class code to class TargetRegInfo
from SparcReg{Class,}Info.

(3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly()
and related functions and flags. Fixed several bugs where only
"isDef" was being checked, not "isDefAndUse".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6341 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b66fdc2934133872db1407bee749b69a4b59b2b7 15-Jan-2003 Chris Lattner <sabre@nondot.org> Remove obsolete ctor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5301 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3501feab811c86c9659248a4875fc31a3165f84d 14-Jan-2003 Chris Lattner <sabre@nondot.org> Rename MachineInstrInfo -> TargetInstrInfo


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5272 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8d95ef4973226044cefdd6dc237d3c326ffc15b3 13-Jan-2003 Chris Lattner <sabre@nondot.org> Add support for 3 new forms of MachineOperand


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
10cb79b48430ea7679e83ae045aaeadea04a0cc5 28-Dec-2002 Chris Lattner <sabre@nondot.org> * Add printing support for FrameIndex operands


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5194 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2109f502d646a1bafc7b21a14347a71771a7b4cf 15-Dec-2002 Chris Lattner <sabre@nondot.org> Implement printing of MBB arguments


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
af55be15dfa5321f470ce9734fabd858f5af7a88 18-Nov-2002 Chris Lattner <sabre@nondot.org> Print is const!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4737 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
570f55de8d9f53a0d8a5dc6dcbb6aaba46b1b6db 17-Nov-2002 Chris Lattner <sabre@nondot.org> Remove only uses of markDef/markDefAndUse methods


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4719 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
188732c971e06823a6dcd3320d5f8429642acedb 30-Oct-2002 Chris Lattner <sabre@nondot.org> Remove fixme


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4447 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6a592271fb2946a0704b06fd66199987cdd40b3c 30-Oct-2002 Chris Lattner <sabre@nondot.org> Add special code to make printing SSA form machine instructions nicer


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4446 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2a79a0927c479b69316aa275c1f79c74d20e8040 30-Oct-2002 Chris Lattner <sabre@nondot.org> Use MRegisterInfo, if available, to print symbolic register names


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4438 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1049164aa6b06d91d9b3b557a9a213eaf3f6319a 30-Oct-2002 Chris Lattner <sabre@nondot.org> Implement structured machine code printing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ddd7fcb887be752ec8167276a697994ad9cb9c4e 30-Oct-2002 Chris Lattner <sabre@nondot.org> Implement autoinserting ctor


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4426 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
a2bae305fb5a870c4ef753ed290a7ddea73ec82b 29-Oct-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Remove separate vector of implicit refs from MachineInstr, and
instead record them as extra operands in the operands[] vector.
Also, move CallArgsDescriptor into this class instead of making it an
annotation on the machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f1757c414cbf7d1b7a11cc8287fd26c2ce13fb41 29-Oct-2002 Chris Lattner <sabre@nondot.org> Move TargetInstrDescriptors extern to the one .cpp file that refers to it:
MachineInstr.cpp


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4392 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d9512caca8ec1e5488cdc94b34986c8ab2d447bb 29-Oct-2002 Chris Lattner <sabre@nondot.org> Use higher level methods, don't use TargetInstrDescriptors directly!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9a8e4121aa4121100fb562134c098aeb38f70b37 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove all traces of the "Opcode Mask" field in the MachineInstr class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4359 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b98a53f201fd3652f4b7e37d1f2cb3b9b0775d45 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove more default arguments that are never used


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4358 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7279122e668816bed0d4f38d3392bbab0140fad0 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove default operands that are never used


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4357 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
413746e9833d97a8b463ef6a788aa326cf3829a2 28-Oct-2002 Chris Lattner <sabre@nondot.org> * Make MachineOperand ctors private, so MachineOperand can only be created
by MachineInstr.
* Add a bunch of new methods to allow incremental addition of operands to the
machine instr instance.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4356 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
2f305989b395a0a8bf00c4b9dc140a6df051245e 28-Oct-2002 Chris Lattner <sabre@nondot.org> Remove two arguments that are never specified


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
572f5c8c0cf66cd6f53dda255cd8c4d8f27d8505 28-Oct-2002 Chris Lattner <sabre@nondot.org> Fairly major overhaul of MachineInstr & Operand classes
- Inline methods that are mostly a single line anyway
- Eliminate several methods that were never called
- Group methods a bit more consistently


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4329 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0be79c6c1bc4fca31599f396528511506e3a1378 28-Oct-2002 Chris Lattner <sabre@nondot.org> Add #includes now that MachineInstr.h doesn't include llvm/Target/MachineInstrInfo.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4327 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
27a08935ca4ccf2121c2cf4bfbf148e2382c7762 23-Oct-2002 Chris Lattner <sabre@nondot.org> - Two minor improvements to the MachineInstr class to reduce footprint and
overhead: Merge 3 parallel vectors into 1, change regsUsed hash_set to be a
bitvector. Sped up LLC a little less than 10% in a debug build!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4261 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e8b57ef2603ed522083dc18e559ca4e20abf22ae 20-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add method MachineInstr::replace to rewrite a machine instruction in place.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3843 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8c6936a58b75d7d185014839ea95377eb2fbd878 16-Sep-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Dump routine now writes out allocated register numbers if available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3737 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e2a78e31862c2b6142491db5a67065756d6870be 14-Aug-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add method MachineInstr::substituteValue() which substitutes
one Value with another one in all operands and implicit references
of the machine instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3306 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
035dfbe7f2d109008d2d62d9f2a67efb477a7ab6 09-Aug-2002 Chris Lattner <sabre@nondot.org> * Removed extraneous #includes
* Fixed file headers to be consistent with the rest of LLVM
* Other minor fixes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3278 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0c0edf8afc35a42b15a24ebb5fa5f3fc674290ae 25-Jul-2002 Chris Lattner <sabre@nondot.org> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3075 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3bc9ef9317982cd7157ff29fb6bc3a60a11c3f78 10-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Add support for marking each operand as a %hh, %hm, %lm or %lo.
Represent previous bools and these ones with flags in a single byte
per operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2860 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7a4be9580e095ca4bffd16ec6ec4882f6270fb09 09-Jul-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Moved class MachineCodeForBasicBlock to MachineCodeForBasicBlock.{cpp,h}.
An (explicit or implicit) operand may now be both a def and a use.
Also add a set of regs used by each instruction.
dump() no longer takes an optional argument, which doesn't work in gdb.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2821 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
93240fe6b1f79e9ccb271a214a01141f8c2c123a 25-Apr-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Improve printing during dumps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2311 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4d669b510c1d609c6b3fe98ac14ae38bd7c011f6 09-Apr-2002 Chris Lattner <sabre@nondot.org> s/method/function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2177 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c356e565a69e56993d018c7d94194e504a78285f 18-Mar-2002 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix in setting CC register.
Also use distinct names for the three types of SetMachineOperand
to avoid painful overloading problems and errors.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
3801f6d38371b734d9de2fb8394ca75d2bf190eb 03-Feb-2002 Chris Lattner <sabre@nondot.org> * Prune #includes
* Remove MachineCodeFor(Method|VMInstr) code to their own .cpp files


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1649 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
697954c15da58bd8b186dbafdedd8b06db770201 20-Jan-2002 Chris Lattner <sabre@nondot.org> Changes to build successfully with GCC 3.02


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7a1767520611d9ff6face702068de858e1cadf2c 04-Dec-2001 Chris Lattner <sabre@nondot.org> Renamed inst_const_iterator -> const_inst_iterator
Renamed op_const_iterator -> const_op_iterator
Renamed PointerType::getValueType() -> PointerType::getElementType()


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1408 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
07c7086bd29b5c7223945cbdeae48494874de38f 15-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added naming to inserted phi copy values - for easy debugging


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1325 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7c47c7201d762c24bc6140b6e5a2ac511aec5cb1 15-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Modify AllocateLocalVar method to take a size argument.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1318 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
8d24337eea5f9462908b7ac07a997935e31ddd59 14-Nov-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Small changed to printing a machine operand - It the operand is a def, it prints
a star after it - only for debugging


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1309 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e492c9d4d1a161cd0972bfb8bab33f073fb018b4 13-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Bug fix in offset alignment computations: don't subtract the padding
value from size *before* subtracting size from offset!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
d9beb975f20cea2d3e9c3f528068cd25b80a1b72 12-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Improved printing routines.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5567e942c03056cc566225e93a93f6516d73f305 12-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Adjust all stack variable offsets to be aligned by size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1261 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
f1a0a1081347ff6177b8b57dc16d841cde89e7fc 11-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Fix errors in computing downgrowing offsets, and in
computing size of extra outgoing args.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1256 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
be49526193c5d8856d0b3c2721dfa6a4c4010d6d 08-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Major overhaul of stack frame management.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
df1c3b8398d1df253ebd389ac1068ec732a2f28f 05-Nov-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Make reg. numbers signed ints.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1d6158f98fb46ccf86af8285f066c8a513e453c5 22-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Added class MachineCodeForMethod.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@947 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
69917e27af9248cbce98bb56f1e1b5286aede759 19-Oct-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Added implict operand printing for operator( ostream, MachineInstr&)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@912 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6d35326cd549163a9af189dddca45c92f6014242 18-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> 1. Add a bottom-up pass on BURG trees that is used to fix constant operands.
Needs to be bottom up because constant values may be forward-substituted
to their uses (i.e., into the parent in the BURG tree).
2. Move most of the constant-fixup code into machine-indepedent file
InstrSelectionSupport.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
9aba1d3307a3ce4a30fa95a08b6b68c445a49b8a 10-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Moved code generation support routines to InstrSelectionSupport.cpp.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@717 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1d87bcf4909b06dcd86320722653341f08b8b396 01-Oct-2001 Chris Lattner <sabre@nondot.org> Convert more code to use new style casts
Eliminate old style casts from value.h


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e949da5bb18f89de40b6781237dfe616cba7bfc9 01-Oct-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Improved dump for disp type operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@679 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6e447181928b95902c38ea89e57bc835ecd83cb5 18-Sep-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Minor changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@613 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
ed8f674b9a18312886355288ac49f9a2dd5e4e94 15-Sep-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> added setRegForValue to MachineOperand class


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@591 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
c2a2396e17f8fd6c78afd81368d2b80e8cfe6c42 12-Sep-2001 Chris Lattner <sabre@nondot.org> Eliminate MainTreeNode function


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@550 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b221a763862ccaed46dee3fbf56c384981d84fbd 10-Sep-2001 Chris Lattner <sabre@nondot.org> Fix a bug I introduced (assertion failed: Unknown operand type), and convert to predicate style for type checks


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
990f2a5a1a0b16d0dc07cee486033c0a3864334e 10-Sep-2001 Chris Lattner <sabre@nondot.org> Implement the subset of the GetConstantValueAsSignedInt function that is needed, locally.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@524 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
e6fdb11e1ae823d69e646e76828ccb5d427a9d3a 10-Sep-2001 Chris Lattner <sabre@nondot.org> Fix problems with freeing memory twice


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@520 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
56786d268feeb6d0e895b6c4cba60139285c47d6 09-Sep-2001 Chris Lattner <sabre@nondot.org> Fix build breakage. :(


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
822b4fb896846b87dd11a330ae13f2239329aeef 07-Sep-2001 Chris Lattner <sabre@nondot.org> The header file for a translation unit should always be included first
System headers should be last


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@475 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
5b79591450c47920139705712a402251af7eed79 29-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Moved function PrintMachineInstructions here.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@392 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
149977b48a02735861697d5b4df1fe5a8592245f 13-Aug-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Always set isDef for operand in position resultPos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
b0cdcda42a99b5fb4d99c773006acb175ef391a0 13-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> Changed SetMachineOpernad calls in Set3OperandsFromInstr so that the
result position is a def (i.e., added true to the end of call) -- Ruchira


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@356 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
0b03c6a492a0e09049b6c0bd127bd0ede7732aa5 07-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> *** empty log message ***


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@351 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
45c171ee25619f6650e90fa5e3102d9969fd82b3 07-Aug-2001 Ruchira Sasanka <sasanka@students.uiuc.edu> added a default isDef arg to SetMachineOperand method - Ruchira


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
1885da4f49cf32efde2d4c840365c4333a0c8579 31-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Allow machine instructions with variable numbers of arguments.
This is used only by Phi for now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
6a175e01eb164baac5cc16311c474ff644ce17c1 28-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Eliminate separate enum for operand register type.
Use union for alternative data for different operand types.
Add iterator over Value* operands in a MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@307 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
4bc3daaa3f3c9f22d5dd695e987e8d20f999791c 23-Jul-2001 Chris Lattner <sabre@nondot.org> Eliminated the Unique class in favor of NonCopyable and NonCopyableV


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
68498cefe602bf5364168b4acd0bd5806cdd72ec 22-Jul-2001 Chris Lattner <sabre@nondot.org> Eliminate lots of unnecessary #includes and forward decls
there are probably more to kill


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@261 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
7e583cfafeb07713e5ceadcfe28b70111a528d97 21-Jul-2001 Chris Lattner <sabre@nondot.org> Renamed include/llvm/Codegen to include/llvm/CodeGen


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp
70bc4b5d1a3795a8f41be96723cfcbccac8e1671 21-Jul-2001 Vikram S. Adve <vadve@cs.uiuc.edu> Instruction selection via pattern matching on instruction trees using BURG.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@231 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/CodeGen/MachineInstr.cpp