- Apr 15, 2013
-
-
Tom Stellard authored
llvm-svn: 179545
-
Tom Stellard authored
llvm-svn: 179544
-
Tim Northover authored
llvm-svn: 179532
-
Eric Christopher authored
I can fix the testcases here: http://lab.llvm.org:8011/builders/clang-native-arm-cortex-a9/builds/6952 This reverts commit r179512 due to testcases specifying triples that they didn't actually mean and causing failures on other platforms. llvm-svn: 179513
-
Eric Christopher authored
llvm-svn: 179512
-
Nadav Rotem authored
llvm-svn: 179504
-
Hal Finkel authored
This fixes an ABI bug for non-Darwin PPC64. For the callee-saved condition registers, the spill location is specified relative to the stack pointer (SP + 8). However, this is not relative to the SP after the new stack frame is established, but instead relative to the caller's stack pointer (it is stored into the linkage area of the parent's stack frame). So, like with the link register, we don't directly spill the CRs with other callee-saved registers, but just mark them to be spilled during prologue generation. In practice, this reverts r179457 for PPC64 (but leaves it in place for PPC32). llvm-svn: 179500
-
Eric Christopher authored
This reverts commit r179497 and the accompanying commit as it broke random platforms that aren't osx. llvm-svn: 179499
-
Eric Christopher authored
llvm-svn: 179498
-
- Apr 14, 2013
-
-
Nico Rieck authored
llvm-svn: 179494
-
David Majnemer authored
One performs: (X == 13 | X == 14) -> X-13 <u 2 The other: (A == C1 || A == C2) -> (A & ~(C1 ^ C2)) == C1 The problem is that there are certain values of C1 and C2 that trigger both transforms but the first one blocks out the second, this generates suboptimal code. Reordering the transforms should be better in every case and allows us to do interesting stuff like turn: %shr = lshr i32 %X, 4 %and = and i32 %shr, 15 %add = add i32 %and, -14 %tobool = icmp ne i32 %add, 0 into: %and = and i32 %X, 240 %tobool = icmp ne i32 %and, 224 llvm-svn: 179493
-
Nadav Rotem authored
llvm-svn: 179492
-
Jakob Stoklund Olesen authored
Test case by llvm-stress. llvm-svn: 179477
-
Nadav Rotem authored
llvm-svn: 179476
-
Nadav Rotem authored
SLPVectorizer: Add support for trees that don't start at binary operators, and add the cost of extracting values from the roots of the tree. llvm-svn: 179475
-
Jakob Stoklund Olesen authored
For when 16 TB just isn't enough. llvm-svn: 179474
-
Jakob Stoklund Olesen authored
This is the default model for non-PIC 64-bit code. It supports text+data+bss linked anywhere in the low 16 TB of the address space. llvm-svn: 179473
-
Jakob Stoklund Olesen authored
Constant pool entries are accessed exactly the same way as global variables. llvm-svn: 179471
-
Nadav Rotem authored
llvm-svn: 179470
-
Jakob Stoklund Olesen authored
This fixes the pic32 code model for SPARC v9. llvm-svn: 179469
-
- Apr 13, 2013
-
-
Jakob Stoklund Olesen authored
Currently, only abs32 and pic32 are implemented. Add a test case for abs32 with 64-bit code. 64-bit PIC code is currently broken. llvm-svn: 179463
-
Benjamin Kramer authored
There is a Constant with non-constant operands: blockaddress. llvm-svn: 179460
-
Benjamin Kramer authored
This is basically the same fix in three different places. We use a set to avoid walking the whole tree of a big ConstantExprs multiple times. For example: (select cmp, (add big_expr 1), (add big_expr 2)) We don't want to visit big_expr twice here, it may consist of thousands of nodes. The testcase exercises this by creating an insanely large ConstantExprs out of a loop. It's questionable if the optimizer should ever create those, but this can be triggered with real C code. Fixes PR15714. llvm-svn: 179458
-
Hal Finkel authored
For functions that need to spill CRs, and have dynamic stack allocations, the value of the SP during the restore is not what it was during the save, and so we need to use the FP in these cases (as for all of the other spills and restores, but the CR restore has a special code path because its reserved slot, like the link register, is specified directly relative to the adjusted SP). llvm-svn: 179457
-
Andrew Trick authored
The order of copies depends on queue order, which is not very stable. llvm-svn: 179456
-
Andrew Trick authored
llvm-svn: 179455
-
Andrew Trick authored
llvm-svn: 179453
-
Andrew Trick authored
The register allocator expects minimal physreg live ranges. Schedule physreg copies accordingly. This is slightly tricky when they occur in the middle of the scheduling region. For now, this is handled by rescheduling the copy when its associated instruction is scheduled. Eventually we may instead bundle them, but only if we can preserve the bundles as parallel copies during regalloc. llvm-svn: 179449
-
Rafael Espindola authored
We are now able to handle big endian macho files in llvm-readobject. Thanks to David Fang for providing the object files. llvm-svn: 179440
-
Akira Hatanaka authored
llvm-svn: 179434
-
Akira Hatanaka authored
llvm-svn: 179422
-
Akira Hatanaka authored
instructions. llvm-svn: 179421
-
Akira Hatanaka authored
llvm-svn: 179420
-
Nadav Rotem authored
llvm-svn: 179418
-
- Apr 12, 2013
-
-
Benjamin Kramer authored
Fixes PR15737. llvm-svn: 179417
-
Nadav Rotem authored
SLPVectorizer: add support for vectorization of diamond shaped trees. We now perform a preliminary traversal of the graph to collect values with multiple users and check where the users came from. llvm-svn: 179414
-
Nadav Rotem authored
CostModel: increase the default cost of supported floating point operations from 1 to two. Fixed a few tests that changes because now the cost of one insert + a vector operation on two doubles is lower than two scalar operations on doubles. llvm-svn: 179413
-
Nadav Rotem authored
patch by Veselov, Yuri <Yuri.Veselov@intel.com>. llvm-svn: 179409
-
Quentin Colombet authored
According to the ARM reference manual, constant offsets are mandatory for pre-indexed addressing modes. The MC disassembler was not obeying this when the offset is 0. It was producing instructions like: str r0, [r1]!. Correct syntax is: str r0, [r1, #0]!. This change modifies the dumping of operands so that the offset is always printed, regardless of its value, when pre-indexed addressing mode is used. Patch by Mihail Popa <Mihail.Popa@arm.com> llvm-svn: 179398
-
David Majnemer authored
The transform will execute like so: (A & ~B) == 0 --> (A & B) != 0 (A & ~B) != 0 --> (A & B) == 0 llvm-svn: 179386
-