History log of /llvm-project/llvm/lib/CodeGen/MachineInstr.cpp (Results 426 – 450 of 809)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# edbb58c5 10-Jan-2012 David Blaikie <dblaikie@gmail.com>

Remove unnecessary default cases in switches that cover all enum values.

llvm-svn: 147855


# 7fae11b2 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 instruct

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

llvm-svn: 146542

show more ...


# cdf89fde 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 bundl

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.

llvm-svn: 146168

show more ...


# 7f8e563a 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 mayL

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.

llvm-svn: 146026

show more ...


# 6ad68485 07-Dec-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Add missing check.

llvm-svn: 146004


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

llvm-svn: 145997


# 2a81dd4a 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 itera

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

llvm-svn: 145975

show more ...


Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4
# 82cd9e81 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

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

llvm-svn: 144100

show more ...


Revision tags: llvmorg-3.0.0-rc3
# 65ba66c6 03-Nov-2011 Pete Cooper <peter_cooper@apple.com>

Reverted r143600 - selector reference change

llvm-svn: 143646


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

llvm-svn: 143600


Revision tags: llvmorg-3.0.0-rc2, llvmorg-3.0.0-rc1
# 84882259 13-Oct-2011 Nick Lewycky <nicholas@mxc.ca>

Add missing braces to pacify GCC's -Wparentheses.

llvm-svn: 141842


# 35b362fa 12-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

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.

llvm-svn: 141835

show more ...


# 1e73716e 12-Oct-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Extract a method for finding the inline asm flag operand.

llvm-svn: 141834


# 24abd9d9 12-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 duri

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.

llvm-svn: 141833

show more ...


# 463b05a2 29-Sep-2011 Jakob Stoklund Olesen <stoklund@2pi.dk>

Remove NumImplicitOps which is now unused.

llvm-svn: 140767


# 2318d1e0 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 i

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.

llvm-svn: 140744

show more ...


# ed16ec42 29-Aug-2011 Jim Grosbach <grosbach@apple.com>

Thumb2 parsing and encoding for IT blocks.

llvm-svn: 138773


# dee9e8a3 24-Aug-2011 Jim Grosbach <grosbach@apple.com>

Tidy up. Trailing whitespace.

llvm-svn: 138437


# 9eb77bf6 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_32b

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>

llvm-svn: 138018

show more ...


# d61b1d50 04-Aug-2011 Devang Patel <dpatel@apple.com>

Print DBG_VALUE variable's location info as a comment.

llvm-svn: 136916


# bf8cc60d 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 ]

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

llvm-svn: 134620

show more ...


# 25a404eb 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

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.

llvm-svn: 134307

show more ...


# 7da0f9a5 01-Jul-2011 Cameron Zwarich <zwarich@apple.com>

Take a stab at fixing the llvm-x86_64-linux-checks failure.

llvm-svn: 134287


# 6cc775f9 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

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

llvm-svn: 134021

show more ...


# 537a302d 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_Clobb

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.

llvm-svn: 133902

show more ...


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