| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
ConstantFoldBIT_CONVERTofBUILD_VECTOR calling itself
recursively and returning a SCALAR_TO_VECTOR node, but assuming the input was always a BUILD_VECTOR.
llvm-svn: 109519
|
| |
|
|
|
|
|
|
|
| |
protectors, to be near the stack protectors on the stack. Accomplish this by
tagging the stack object with a predicate that indicates that it would trigger
this. In the prolog-epilog inserter, assign these objects to the stack after the
stack protector but before the other objects.
llvm-svn: 109481
|
| |
|
|
|
|
| |
enough to factor into scheduling priority. Eliminate it and add early exits to speed up scheduling.
llvm-svn: 109449
|
| |
|
|
| |
llvm-svn: 109415
|
| |
|
|
|
|
|
|
| |
parameter)
may be used uninitialized in the callers of HighRegPressure.
llvm-svn: 109393
|
| |
|
|
| |
llvm-svn: 109383
|
| |
|
|
|
|
| |
those. Radar 8231572.
llvm-svn: 109367
|
| |
|
|
|
|
|
|
|
|
|
|
| |
appropriate for targets without detailed instruction iterineries.
The scheduler schedules for increased instruction level parallelism in
low register pressure situation; it schedules to reduce register pressure
when the register pressure becomes high.
On x86_64, this is a win for all tests in CFP2000. It also sped up 256.bzip2
by 16%.
llvm-svn: 109300
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
it's too late to start backing off aggressive latency scheduling when most
of the registers are in use so the threshold should be a bit tighter.
- Correctly handle live out's and extract_subreg etc.
- Enable register pressure aware scheduling by default for hybrid scheduler.
For ARM, this is almost always a win on # of instructions. It's runtime
neutral for most of the tests. But for some kernels with high register
pressure it can be a huge win. e.g. 464.h264ref reduced number of spills by
54 and sped up by 20%.
llvm-svn: 109279
|
| |
|
|
| |
llvm-svn: 109265
|
| |
|
|
|
|
| |
are not demanded. This often allows the anyext to be folded away.
llvm-svn: 109242
|
| |
|
|
| |
llvm-svn: 109234
|
| |
|
|
| |
llvm-svn: 109205
|
| |
|
|
| |
llvm-svn: 109122
|
| |
|
|
| |
llvm-svn: 109103
|
| |
|
|
| |
llvm-svn: 109083
|
| |
|
|
| |
llvm-svn: 109082
|
| |
|
|
| |
llvm-svn: 109079
|
| |
|
|
| |
llvm-svn: 109064
|
| |
|
|
| |
llvm-svn: 108991
|
| |
|
|
|
|
|
| |
update the current basic block in addition to the current insert
position, so that they remain consistent. This fixes rdar://8204072.
llvm-svn: 108765
|
| |
|
|
|
|
| |
its scalar floating point registers alias its vector registers.
llvm-svn: 108761
|
| |
|
|
|
|
|
|
| |
for legal value types. A "representative" register class is the largest legal super-reg register class for a value type. e.g. On i386, GR32 is the rep register class for i8 / i16 / i32; on x86_64 it would be GR64.
This property will be used by the register pressure tracking instruction scheduler.
llvm-svn: 108735
|
| |
|
|
| |
llvm-svn: 108688
|
| |
|
|
|
|
|
|
|
|
| |
conversions around sqrt instructions.
I am assured by people more knowledgeable than me that there are no rounding issues in eliminating this.
This fixed <rdar://problem/8197504>.
llvm-svn: 108639
|
| |
|
|
|
|
|
|
| |
information.
No functional change yet.
llvm-svn: 108583
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
since it doesn't work for front-ends which don't emit column information
(which includes llvm-gcc in its present configuration), and doesn't
work for clang for K&R style variables where the variables are declared
in a different order from the parameter list.
Instead, make a separate pass through the instructions to collect the
llvm.dbg.declare instructions in order. This ensures that the debug
information for variables is emitted in this order.
llvm-svn: 108538
|
| |
|
|
|
|
|
| |
because it's more likely to keep debug line information in its original
order.
llvm-svn: 108496
|
| |
|
|
|
|
|
|
|
|
| |
occasions, caused code to be generated in a different order.
All cases I've seen involved float softening in the type
legalizer, and this could be perhaps be fixed there, but
it's better not to generate things differently in the first
place. 7797940 (6/29/2010..7/15/2010).
llvm-svn: 108484
|
| |
|
|
| |
llvm-svn: 108478
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the function. We'll just turn it into a "trap" instruction instead.
The problem with not handling this is that it might generate a prologue without
the equivalent epilogue to go with it:
$ cat t.ll
define void @foo() {
entry:
unreachable
}
$ llc -o - t.ll -relocation-model=pic -disable-fp-elim -unwind-tables
.section __TEXT,__text,regular,pure_instructions
.globl _foo
.align 4, 0x90
_foo: ## @foo
Leh_func_begin0:
## BB#0: ## %entry
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
Leh_func_end0:
...
The unwind tables then have bad data in them causing all sorts of problems.
Fixes <rdar://problem/8096481>.
llvm-svn: 108473
|
| |
|
|
|
|
| |
-enable-no-nans-fp-math and -enable-no-infs-fp-math. All of the current codegen fp math optimizations only care whether the fp arithmetics arguments and results can never be NaN.
llvm-svn: 108465
|
| |
|
|
| |
llvm-svn: 108441
|
| |
|
|
| |
llvm-svn: 108381
|
| |
|
|
| |
llvm-svn: 108364
|
| |
|
|
|
|
| |
it can look past points where a debugger might modify user variables.
llvm-svn: 108336
|
| |
|
|
|
|
|
| |
constants, since they may not be emited near the other instructions
which get the same line, and this confuses debug info.
llvm-svn: 108302
|
| |
|
|
|
|
|
| |
This may not be right in all cases, but it's better
than asserting which it was doing before. PR 7528.
llvm-svn: 108268
|
| |
|
|
| |
llvm-svn: 108164
|
| |
|
|
| |
llvm-svn: 108130
|
| |
|
|
|
|
| |
This doesn't change the behavior of SelectBitcast for X86.
llvm-svn: 108073
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
correct alignment information, which simplifies ExpandRes_VAARG a bit.
The patch introduces a new alignment information to TargetLoweringInfo. This is
needed since the two natural candidates cannot be used:
* The 's' in target data: If this is set to the minimal alignment of any
argument, getCallFrameTypeAlignment would return 4 for doubles on ARM for
example.
* The getTransientStackAlignment method. It is possible for an architecture to
have argument less aligned than what we maintain the stack pointer.
llvm-svn: 108072
|
| |
|
|
|
|
|
| |
This assumes that the registers can be copied which is probably a safe
assumption.
llvm-svn: 108070
|
| |
|
|
|
|
|
| |
The remaining copyRegToReg calls actually check the return value (shock!), so we
cannot trivially replace them with COPY instructions.
llvm-svn: 108069
|
| |
|
|
|
|
|
|
| |
if a block is split (by a custom inserter), the insert point may be in a
different block than it was originally. This fixes 32-bit llvm-gcc
bootstrap builds, and I haven't been able to reproduce it otherwise.
llvm-svn: 108060
|
| |
|
|
|
|
|
|
|
| |
ScheduleDAGEmit, TwoAddressLowering, and PHIElimination.
This switches the bulk of register copies to using COPY, but many less used
copyRegToReg calls remain.
llvm-svn: 108050
|
| |
|
|
|
|
| |
at the end of the block.
llvm-svn: 108045
|
| |
|
|
|
|
|
|
|
| |
- Check getBytesToPopOnReturn().
- Eschew ST0 and ST1 for return values.
- Fix the PIC base register initialization so that it doesn't ever
fail to end up the top of the entry block.
llvm-svn: 108039
|
| |
|
|
| |
llvm-svn: 108005
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
U utils/TableGen/FastISelEmitter.cpp
--- Reverse-merging r107943 into '.':
U test/CodeGen/X86/fast-isel.ll
U test/CodeGen/X86/fast-isel-loads.ll
U include/llvm/Target/TargetLowering.h
U include/llvm/Support/PassNameParser.h
U include/llvm/CodeGen/FunctionLoweringInfo.h
U include/llvm/CodeGen/CallingConvLower.h
U include/llvm/CodeGen/FastISel.h
U include/llvm/CodeGen/SelectionDAGISel.h
U lib/CodeGen/LLVMTargetMachine.cpp
U lib/CodeGen/CallingConvLower.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
U lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp
U lib/CodeGen/SelectionDAG/FastISel.cpp
U lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
U lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
U lib/CodeGen/SelectionDAG/InstrEmitter.cpp
U lib/CodeGen/SelectionDAG/TargetLowering.cpp
U lib/Target/XCore/XCoreISelLowering.cpp
U lib/Target/XCore/XCoreISelLowering.h
U lib/Target/X86/X86ISelLowering.cpp
U lib/Target/X86/X86FastISel.cpp
U lib/Target/X86/X86ISelLowering.h
llvm-svn: 107987
|