History log of /llvm-project/llvm/lib/CodeGen/MachineInstr.cpp (Results 401 – 425 of 809)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 54038d79 01-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

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).

llvm-svn: 157854

show more ...


# 3a48c064 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.

llvm-svn: 157702


Revision tags: llvmorg-3.1.0, llvmorg-3.1.0-rc3
# 3c52f028 07-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_r

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!

llvm-svn: 156328

show more ...


# e89496fe 04-May-2012 Jakob Stoklund Olesen <stoklund@2pi.dk>

Remove extra comma in debug output.

llvm-svn: 156219


Revision tags: llvmorg-3.1.0-rc2
# 7111a630 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 ma

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.

llvm-svn: 155239

show more ...


Revision tags: llvmorg-3.1.0-rc1
# 80c540e6 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 combina

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.

llvm-svn: 153817

show more ...


# 97f889f4 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.

llvm-svn: 152991


# d03878bd 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).

llvm-svn: 152930


# 5a4bcc74 08-Mar-2012 Craig Topper <craig.topper@gmail.com>

Use uint16_t to store instruction implicit uses and defs. Reduces static data.

llvm-svn: 152301


# 636ee38a 07-Mar-2012 Chandler Carruth <chandlerc@gmail.com>

Try to clarify this comment some.

llvm-svn: 152221


# 962152ca 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 t

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...

llvm-svn: 152218

show more ...


# 1d326588 04-Mar-2012 Craig Topper <craig.topper@gmail.com>

Use uint16_t to store register overlaps to reduce static data.

llvm-svn: 152001


# d256c216 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

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.

llvm-svn: 151782

show more ...


# 3eedcce9 17-Feb-2012 Lang Hames <lhames@gmail.com>

Reverse iterator - should be incrementing rather than decrementing.

llvm-svn: 150778


# 923d199a 15-Feb-2012 Lang Hames <lhames@gmail.com>

Make LiveIntervals::handleMove() bundle aware.

llvm-svn: 150630


# e7d3f441 14-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

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.

llvm-svn: 150529

show more ...


# bf152d57 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

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.

llvm-svn: 150245

show more ...


# 3bc0e0c6 08-Feb-2012 Andrew Trick <atrick@apple.com>

Added MachineInstr::isBundled() to check if an instruction is part of a bundle.

llvm-svn: 150044


# 56fe2ed5 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

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.

llvm-svn: 149715

show more ...


# 4290be43 03-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk>

ArrayRef'ize MI::setPhysRegsDeadExcept().

llvm-svn: 149709


# f650732c 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->setPhysRegsD

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.

llvm-svn: 149708

show more ...


# 5e1ac45b 02-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.

llvm-svn: 149646


# 8c139a51 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.

T

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.

llvm-svn: 149069

show more ...


# 374ed322 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
representi

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.

llvm-svn: 148250

show more ...


# f3e8502c 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, an

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.

llvm-svn: 147861

show more ...


1...<<11121314151617181920>>...33