| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 92918
|
| |
|
|
| |
llvm-svn: 92850
|
| |
|
|
|
|
|
|
|
|
| |
(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
|
| |
|
|
|
|
| |
order.
llvm-svn: 92810
|
| |
|
|
| |
llvm-svn: 92807
|
| |
|
|
|
|
| |
bottom-up scheduler. We prefer the lower order number.
llvm-svn: 92806
|
| |
|
|
|
|
| |
result in illegal types for the SHL operator.
llvm-svn: 92797
|
| |
|
|
|
|
|
| |
uses several kinds of opcode values which are not declared within
that enum. This fixes PR5946.
llvm-svn: 92794
|
| |
|
|
|
|
| |
dereference the type pointer.
llvm-svn: 92726
|
| |
|
|
|
|
|
|
|
| |
Intrinsic::dbg_stoppoint
Intrinsic::dbg_region_start
Intrinsic::dbg_region_end
Intrinsic::dbg_func_start
llvm-svn: 92672
|
| |
|
|
| |
llvm-svn: 92597
|
| |
|
|
| |
llvm-svn: 92581
|
| |
|
|
| |
llvm-svn: 92580
|
| |
|
|
| |
llvm-svn: 92579
|
| |
|
|
| |
llvm-svn: 92578
|
| |
|
|
| |
llvm-svn: 92577
|
| |
|
|
| |
llvm-svn: 92576
|
| |
|
|
| |
llvm-svn: 92575
|
| |
|
|
| |
llvm-svn: 92574
|
| |
|
|
| |
llvm-svn: 92573
|
| |
|
|
| |
llvm-svn: 92572
|
| |
|
|
| |
llvm-svn: 92571
|
| |
|
|
| |
llvm-svn: 92570
|
| |
|
|
| |
llvm-svn: 92569
|
| |
|
|
| |
llvm-svn: 92568
|
| |
|
|
|
|
|
|
|
| |
clear what information these functions are actually using.
This is also a micro-optimization, as passing a SDNode * around is
simpler than passing a { SDNode *, int } by value or reference.
llvm-svn: 92564
|
| |
|
|
|
|
| |
in an inline asm.
llvm-svn: 92512
|
| |
|
|
|
|
|
|
|
|
|
| |
(X != null) | (Y != null) --> (X|Y) != 0
(X == null) & (Y == null) --> (X|Y) == 0
so that instcombine can stop doing this for pointers. This is part of PR3351,
which is a case where instcombine doing this for pointers (inserting ptrtoint)
is pessimizing code.
llvm-svn: 92406
|
| |
|
|
| |
llvm-svn: 92404
|
| |
|
|
|
|
|
| |
SelectionDAGBuilder.cpp:4294: warning: suggest explicit braces to avoid
ambiguous ‘else’
llvm-svn: 92395
|
| |
|
|
| |
llvm-svn: 92394
|
| |
|
|
|
|
|
|
|
|
| |
multiply sequence when the power is a constant integer. Before, our
codegen for std::pow(.., int) always turned into a libcall, which was
really inefficient.
This should also make many gfortran programs happier I'd imagine.
llvm-svn: 92388
|
| |
|
|
| |
llvm-svn: 92263
|
| |
|
|
|
|
|
|
| |
getMDKindID/getMDKindNames methods to LLVMContext (and add
convenience methods to Module), eliminating MetadataContext.
Move the state that it maintains out to LLVMContext.
llvm-svn: 92259
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I asked Devang to do back on Sep 27. Instead of going through the
MetadataContext class with methods like getMD() and getMDs(), just
ask the instruction directly for its metadata with getMetadata()
and getAllMetadata().
This includes a variety of other fixes and improvements: previously
all Value*'s were bloated because the HasMetadata bit was thrown into
value, adding a 9th bit to a byte. Now this is properly sunk down to
the Instruction class (the only place where it makes sense) and it
will be folded away somewhere soon.
This also fixes some confusion in getMDs and its clients about
whether the returned list is indexed by the MDID or densely packed.
This is now returned sorted and densely packed and the comments make
this clear.
This introduces a number of fixme's which I'll follow up on.
llvm-svn: 92235
|
| |
|
|
|
|
|
| |
doesn't exist already, eliminate registerMDKind. Tidy up a bunch
of random stuff.
llvm-svn: 92225
|
| |
|
|
|
|
| |
floating point comparisons, rather than hard-coding them as i32.
llvm-svn: 92199
|
| |
|
|
| |
llvm-svn: 92190
|
| |
|
|
| |
llvm-svn: 92189
|
| |
|
|
| |
llvm-svn: 92188
|
| |
|
|
| |
llvm-svn: 92180
|
| |
|
|
| |
llvm-svn: 92178
|
| |
|
|
|
|
|
|
| |
compare. On other targets we end up with a call to memcmp because we don't
want 16 individual byte loads. We should be able to use movups as well, but
we're failing to select the generated icmp.
llvm-svn: 92107
|
| |
|
|
|
|
|
|
|
| |
SDISel. This optimization was causing simplifylibcalls to
introduce type-unsafe nastiness. This is the first step, I'll be
expanding the memcmp optimizations shortly, covering things that
we really really wouldn't want simplifylibcalls to do.
llvm-svn: 92098
|
| |
|
|
| |
llvm-svn: 92011
|
| |
|
|
|
|
| |
Patch by Sylve`re Teissier (sorry, ASCII only).
llvm-svn: 91988
|
| |
|
|
|
|
| |
lowering code and update testcases.
llvm-svn: 91979
|
| |
|
|
| |
llvm-svn: 91971
|
| |
|
|
| |
llvm-svn: 91961
|
| |
|
|
| |
llvm-svn: 91958
|