- Aug 10, 2011
-
-
Andrew Trick authored
SimplifyIndVar utility since it is required. llvm-svn: 137202
-
Andrew Trick authored
llvm-svn: 137199
-
Benjamin Kramer authored
llvm-svn: 137198
-
Andrew Trick authored
based on ScalarEvolution without changing the induction variable phis. This utility is the main tool of IndVarSimplifyPass, but the pass also restructures induction variables in strange ways that are sensitive to pass ordering. This provides a way for other loop passes to simplify new uses of induction variables created during transformation. The utility may be used by any pass that preserves ScalarEvolution. Soon LoopUnroll will use it. The net effect in this checkin is to cleanup the IndVarSimplify pass by factoring out the SimplifyIndVar algorithm into a standalone utility. llvm-svn: 137197
-
Andrew Trick authored
llvm-svn: 137195
-
Bruno Cardoso Lopes authored
llvm-svn: 137194
-
Andrew Trick authored
These are not individual bug fixes. I had to rewrite a good chunk of the unroller to make it sane. I think it was getting lucky on trivial completely unrolled loops with no early exits. I included some fairly simple unit tests for partial unrolling. I didn't do much stress testing, so it may not be perfect, but should be usable now. llvm-svn: 137190
-
Owen Anderson authored
llvm-svn: 137189
-
Jakob Stoklund Olesen authored
llvm-svn: 137184
-
Jakob Stoklund Olesen authored
On Cortex-A8, we use the NEON v2f32 instructions for f32 arithmetic. For better latency, we also send D-register copies down the NEON pipeline by translating them to vorr instructions. This patch promotes even S-register copies to D-register copies when possible so they can also go down the NEON pipeline. Example: vldr.32 s0, LCPI0_0 loop: vorr d1, d0, d0 loop2: ... vadd.f32 d1, d1, d16 The vorr instruction looked like this after regalloc: %S2<def> = COPY %S0, %D1<imp-def> Copies involving odd S-registers, and copies that don't define the full D-register are left alone. llvm-svn: 137182
-
Owen Anderson authored
llvm-svn: 137180
-
Bruno Cardoso Lopes authored
llvm-svn: 137179
-
Owen Anderson authored
llvm-svn: 137176
-
NAKAMURA Takumi authored
VMCore/BasicBlock.cpp: Don't assume BasicBlock::iterator might end with a non-PHInode Instruction in successors. Frontends(eg. clang) might pass incomplete form of IR, to step off the way beyond iterator end. In the case I had met, it took infinite loop due to meeting bogus PHInode. Thanks to Jay Foad and John McCall. llvm-svn: 137175
-
NAKAMURA Takumi authored
llvm-svn: 137174
-
Owen Anderson authored
llvm-svn: 137172
-
Eli Friedman authored
llvm-svn: 137170
-
Owen Anderson authored
Create a new register class for the set of all GPRs except the PC. Use it to tighten our decoding of BFI. llvm-svn: 137168
-
Bruno Cardoso Lopes authored
llvm-svn: 137166
-
Chad Rosier authored
llvm-svn: 137163
-
Bruno Cardoso Lopes authored
is the best we can do for these patterns. This fix PR10554. llvm-svn: 137161
-
-
Rafael Espindola authored
functionality since in the C api a pass is created and added to a pass manager in a single call. llvm-svn: 137159
-
Jim Grosbach authored
Assigned symbol addresses get truncated to 32-bits, even on 64-bit platforms. That's obviously bogus. For example, .globl _foo .equ _foo, 0x987654321ULL rdar://9922863 llvm-svn: 137158
-
Benjamin Kramer authored
Not sure about BLXi, but this is what the old disassembler did. llvm-svn: 137156
-
- Aug 09, 2011
-
-
Owen Anderson authored
llvm-svn: 137154
-
Owen Anderson authored
llvm-svn: 137153
-
Benjamin Kramer authored
The new ARM disassembler disassembles "bx lr" as a special BX_ret instruction so target specific analysis isn't needed anymore. llvm-svn: 137151
-
Owen Anderson authored
llvm-svn: 137150
-
Jim Grosbach authored
rdar://9915869 llvm-svn: 137148
-
Owen Anderson authored
llvm-svn: 137147
-
Owen Anderson authored
llvm-svn: 137146
-
Owen Anderson authored
This new disassembler can correctly decode all the testcases that the old one did, though some "expected failure" testcases are XFAIL'd for now because it is not (yet) as strict in operand checking as the old one was. llvm-svn: 137144
-
Bob Wilson authored
llvm-svn: 137137
-
Bill Wendling authored
llvm-svn: 137135
-
Bill Wendling authored
'static' variable will be emitted twice. PR10081 llvm-svn: 137134
-
Jakob Stoklund Olesen authored
Coalescing can remove copy-like instructions with sub-register operands that constrained the register class. Examples are: x86: GR32_ABCD:sub_8bit_hi -> GR32 arm: DPR_VFP2:ssub0 -> DPR Recompute the register class of any virtual registers that are used by less instructions after coalescing. This affects code generation for the Cortex-A8 where we use NEON instructions for f32 operations, c.f. fp_convert.ll: vadd.f32 d16, d1, d0 vcvt.s32.f32 d0, d16 The register allocator is now free to use d16 for the temporary, and that comes first in the allocation order because it doesn't interfere with any s-registers. llvm-svn: 137133
-
Bruno Cardoso Lopes authored
v4f64 = sitofp v4i32. This fix PR10559. Also add support for v4i32 = fptosi v4f64. llvm-svn: 137128
-
Bruno Cardoso Lopes authored
llvm-svn: 137127
-
Justin Holewinski authored
- Calls are supported on SM 2.0+ for function with no return values llvm-svn: 137125
-