| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
which is faster, simpler, and less surprising.
llvm-svn: 106263
|
|
|
|
|
|
| |
needs to demand the high bits because it's asserting that they're zero.
llvm-svn: 105406
|
|
|
|
|
|
| |
TargetMachine.h and put it in its own namespace.
llvm-svn: 104147
|
|
|
|
| |
llvm-svn: 103489
|
|
|
|
| |
llvm-svn: 103457
|
|
|
|
|
|
| |
when needed. This fixes PR7001
llvm-svn: 102838
|
|
|
|
| |
llvm-svn: 101977
|
|
|
|
|
|
|
|
|
|
|
| |
user-defined operations that use MMX register types, but
the compiler shouldn't generate them on its own. This adds
a Synthesizable abstraction to represent this, and changes
the vector widening computation so it won't produce MMX types.
(The motivation is to remove noise from the ABI compatibility
part of the gcc test suite, which has some breakage right now.)
llvm-svn: 101951
|
|
|
|
| |
llvm-svn: 101621
|
|
|
|
| |
llvm-svn: 101334
|
|
|
|
| |
llvm-svn: 99656
|
|
|
|
| |
llvm-svn: 99372
|
|
|
|
|
|
|
| |
with ppc_f128 type by having the type legalizer turn these back into a
call to copysignl.
llvm-svn: 98514
|
|
|
|
| |
llvm-svn: 98501
|
|
|
|
| |
llvm-svn: 98289
|
|
|
|
|
|
| |
Based on a patch by Micah Villmow for PR6438.
llvm-svn: 97538
|
|
|
|
|
|
| |
by Micah Villmow for PR6335.
llvm-svn: 97461
|
|
|
|
| |
llvm-svn: 97310
|
|
|
|
|
|
| |
the hopes of fixing PPC bootstrap.
llvm-svn: 97040
|
|
|
|
| |
llvm-svn: 97011
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dragonegg self-host build. I reverted 96640 in order to revert
96556 (96640 goes on top of 96556), but it also looks like with
both of them applied the breakage happens even earlier. The
symptom of the 96556 miscompile is the following crash:
llvm[3]: Compiling AlphaISelLowering.cpp for Release build
cc1plus: /home/duncan/tmp/tmp/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:4982: void llvm::SelectionDAG::ReplaceAllUsesWith(llvm::SDNode*, llvm::SDNode*, llvm::SelectionDAG::DAGUpdateListener*): Assertion `(!From->hasAnyUseOfValue(i) || From->getValueType(i) == To->getValueType(i)) && "Cannot use this version of ReplaceAllUsesWith!"' failed.
Stack dump:
0. Running pass 'X86 DAG->DAG Instruction Selection' on function '@_ZN4llvm19AlphaTargetLowering14LowerOperationENS_7SDValueERNS_12SelectionDAGE'
g++: Internal error: Aborted (program cc1plus)
This occurs when building LLVM using LLVM built by LLVM (via
dragonegg). Probably LLVM has miscompiled itself, though it
may have miscompiled GCC and/or dragonegg itself: at this point
of the self-host build, all of GCC, LLVM and dragonegg were built
using LLVM. Unfortunately this kind of thing is extremely hard
to debug, and while I did rummage around a bit I didn't find any
smoking guns, aka obviously miscompiled code.
Found by bisection.
r96556 | evancheng | 2010-02-18 03:13:50 +0100 (Thu, 18 Feb 2010) | 5 lines
Some dag combiner goodness:
Transform br (xor (x, y)) -> br (x != y)
Transform br (xor (xor (x,y), 1)) -> br (x == y)
Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm"
r96640 | evancheng | 2010-02-19 01:34:39 +0100 (Fri, 19 Feb 2010) | 16 lines
Transform (xor (setcc), (setcc)) == / != 1 to
(xor (setcc), (setcc)) != / == 1.
e.g. On x86_64
%0 = icmp eq i32 %x, 0
%1 = icmp eq i32 %y, 0
%2 = xor i1 %1, %0
br i1 %2, label %bb, label %return
=>
testl %edi, %edi
sete %al
testl %esi, %esi
sete %cl
cmpb %al, %cl
je LBB1_2
llvm-svn: 96672
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(xor (setcc), (setcc)) != / == 1.
e.g. On x86_64
%0 = icmp eq i32 %x, 0
%1 = icmp eq i32 %y, 0
%2 = xor i1 %1, %0
br i1 %2, label %bb, label %return
=>
testl %edi, %edi
sete %al
testl %esi, %esi
sete %cl
cmpb %al, %cl
je LBB1_2
llvm-svn: 96640
|
|
|
|
|
|
|
|
| |
Transform br (xor (x, y)) -> br (x != y)
Transform br (xor (xor (x,y), 1)) -> br (x == y)
Also normalize (and (X, 1) == / != 1 -> (and (X, 1)) != / == 0 to match to "test on x86" and "tst on arm"
llvm-svn: 96556
|
|
|
|
| |
llvm-svn: 96240
|
|
|
|
|
|
|
|
|
|
|
| |
on custom
lowering and requires that certain types exist in ValueTypes.h. Modified widening to
check if an op can trap and if so, the widening algorithm will apply only the op on
the defined elements. It is safer to do this in widening because the optimizer can't
guarantee removing unused ops in some cases.
llvm-svn: 95823
|
|
|
|
| |
llvm-svn: 95781
|
|
|
|
|
|
|
| |
subsumed by TargetLowering::getJumpTableEncoding(). Change uses of
it to be more specific.
llvm-svn: 94529
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which is more convenient, and change getPICJumpTableRelocBaseExpr
to take a MachineFunction to match.
Next, move the X86 code that create a PICBase symbol to
X86TargetLowering::getPICBaseSymbol from
X86MCInstLower::GetPICBaseSymbol, which was an asmprinter specific
library. This eliminates a 'gross hack', and allows us to
implement X86ISelLowering::getPICJumpTableRelocBaseExpr which now
calls it.
This in turn allows us to eliminate the
X86AsmPrinter::printPICJumpTableSetLabel method, which was the
only overload of printPICJumpTableSetLabel.
llvm-svn: 94526
|
|
|
|
|
|
| |
use it to implement the default TargetLowering::getPICJumpTableRelocBaseExpr
llvm-svn: 94523
|
|
|
|
|
|
| |
implement it.
llvm-svn: 94521
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. MachineJumpTableInfo is now created lazily for a function the first time
it actually makes a jump table instead of for every function.
2. The encoding of jump table entries is now described by the
MachineJumpTableInfo::JTEntryKind enum. This enum is determined by the
TLI::getJumpTableEncoding() hook, instead of by lots of code scattered
throughout the compiler that "knows" that jump table entries are always
32-bits in pic mode (for example).
3. The size and alignment of jump table entries is now calculated based on
their kind, instead of at machinefunction creation time.
Future work includes using the EntryKind in more places in the compiler,
eliminating other logic that "knows" the layout of jump tables in various
situations.
llvm-svn: 94470
|
|
|
|
|
|
| |
Add support to widen SETCC.
llvm-svn: 94342
|
|
|
|
|
|
|
|
|
|
| |
really does need to be a vector type, because
TargetLowering::getOperationAction for SIGN_EXTEND_INREG uses that type,
and it needs to be able to distinguish between vectors and scalars.
Also, fix some more issues with legalization of vector casts.
llvm-svn: 93043
|
|
|
|
| |
llvm-svn: 92943
|
|
|
|
|
|
|
|
|
|
| |
(OP (trunc x), (trunc y)) -> (trunc (OP x, y))
Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.
This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.
llvm-svn: 92849
|
|
|
|
|
|
| |
floating point comparisons, rather than hard-coding them as i32.
llvm-svn: 92199
|
|
|
|
| |
llvm-svn: 91158
|
|
|
|
|
|
| |
primary used by selectdag passes.
llvm-svn: 90922
|
|
|
|
|
|
|
|
| |
Note that "hasDotLocAndDotFile"-style debug info was already broken;
people wanting this functionality should implement it in the
AsmPrinter/DwarfWriter code.
llvm-svn: 89711
|
|
|
|
|
|
| |
StringsEqualNoCase (from StringExtras.h) to it.
llvm-svn: 87020
|
|
|
|
| |
llvm-svn: 86384
|
|
|
|
|
|
| |
returns true if the fp immediate can be natively codegened by target.
llvm-svn: 85281
|
|
|
|
|
|
| |
where FCMP_OEQ is not legal and FCMP_OGE is, such as x86.
llvm-svn: 82861
|
|
|
|
|
|
|
| |
is also the name of their type, as declarations like "EVT EVT" look
really odd.
llvm-svn: 82654
|
|
|
|
| |
llvm-svn: 81727
|
|
|
|
| |
llvm-svn: 79763
|
|
|
|
| |
llvm-svn: 79133
|
|
|
|
|
|
|
|
|
|
| |
libcall. Take advantage of this in the ARM backend to rectify broken
choice of CC when hard float is in effect. PIC16 may want to see if
it could be of use in MakePIC16Libcall, which works unchanged.
Patch by Sandeep!
llvm-svn: 79033
|
|
|
|
| |
llvm-svn: 78948
|
|
|
|
|
|
| |
infrastructure work needed to get the contexts to where they need to be first.
llvm-svn: 78759
|