| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
There are 3 changes:
- Convert 32-bit S_LSHL/LSHR/ASHR to their V_*REV variants for VI
- Lower RSQ_CLAMP for VI
- Don't generate MIN/MAX_LEGACY on VI
llvm-svn: 223604
|
| |
|
|
| |
llvm-svn: 223603
|
| |
|
|
| |
llvm-svn: 223602
|
| |
|
|
|
|
| |
DenseSet has better memory efficiency now.
llvm-svn: 223589
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
DenseSet.
DenseSet used to be implemented as DenseMap<Key, char>, which usually doubled
the memory footprint of the map. Now we use a compressed set so the second
element uses no memory at all. This required some surgery on DenseMap as
all accesses to the bucket now have to go through methods; this should
have no impact on the behavior of DenseMap though. The new default bucket
type for DenseMap is a slightly extended std::pair as we expose it through
DenseMap's iterator and don't want to break any existing users.
llvm-svn: 223588
|
| |
|
|
|
|
|
|
| |
DenseMaps."
This reapplies r223478 with a fix for 32 bit targets.
llvm-svn: 223586
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Consider:
void f() {}
void __attribute__((weak)) g() {}
bool b = &f != &g;
It's possble for g to resolve to f if --defsym=g=f is passed on to the
linker.
llvm-svn: 223585
|
| |
|
|
| |
llvm-svn: 223584
|
| |
|
|
|
|
| |
Code like X < Y && Y == 0 should always be folded away to false.
llvm-svn: 223583
|
| |
|
|
| |
llvm-svn: 223580
|
| |
|
|
|
|
| |
This was changed in r223323.
llvm-svn: 223579
|
| |
|
|
|
|
|
|
| |
Metadata attachments to instructions cannot be function-local.
This is part of PR21532.
llvm-svn: 223574
|
| |
|
|
| |
llvm-svn: 223573
|
| |
|
|
|
|
|
|
| |
Most patterns will go away once the extload legalization changes land.
Differential Revision: http://reviews.llvm.org/D6125
llvm-svn: 223567
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
case.
This can significantly reduce the size of the switch, allowing for more
efficient lowering.
I also worked with the idea of exploiting unreachable defaults by
omitting the range check for jump tables, but always ended up with a
non-neglible binary size increase. It might be worth looking into some more.
SimplifyCFG currently does this transformation, but I'm working towards changing
that so we can optimize harder based on unreachable defaults.
Differential Revision: http://reviews.llvm.org/D6510
llvm-svn: 223566
|
| |
|
|
|
|
|
|
|
|
| |
Disallow complex types of function-local metadata. The only valid
function-local metadata is an `MDNode` whose sole argument is a
non-metadata function-local value.
Part of PR21532.
llvm-svn: 223564
|
| |
|
|
| |
llvm-svn: 223556
|
| |
|
|
| |
llvm-svn: 223555
|
| |
|
|
|
|
| |
constants themselves. Patch by Tim Murray!
llvm-svn: 223554
|
| |
|
|
|
|
|
|
|
| |
All our patterns use MVT::i64, but the ISelLowering nodes were inconsistent in
their choice.
No functional change.
llvm-svn: 223551
|
| |
|
|
|
|
|
|
|
| |
DenseMaps."
Somehow made DenseMap probe on forever on 32 bit machines.
This reverts commit r223478.
llvm-svn: 223546
|
| |
|
|
| |
llvm-svn: 223542
|
| |
|
|
|
|
| |
Reviewed at http://reviews.llvm.org/D6488
llvm-svn: 223532
|
| |
|
|
| |
llvm-svn: 223523
|
| |
|
|
| |
llvm-svn: 223522
|
| |
|
|
| |
llvm-svn: 223521
|
| |
|
|
| |
llvm-svn: 223520
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fix the poor codegen seen in PR21710 ( http://llvm.org/bugs/show_bug.cgi?id=21710 ).
Before we crack 32-byte build vectors into smaller chunks (and then subsequently
glue them back together), we should look for the easy case where we can just load
all elements in a single op.
An example of the codegen change is:
From:
vmovss 16(%rdi), %xmm1
vmovups (%rdi), %xmm0
vinsertps $16, 20(%rdi), %xmm1, %xmm1
vinsertps $32, 24(%rdi), %xmm1, %xmm1
vinsertps $48, 28(%rdi), %xmm1, %xmm1
vinsertf128 $1, %xmm1, %ymm0, %ymm0
retq
To:
vmovups (%rdi), %ymm0
retq
Differential Revision: http://reviews.llvm.org/D6536
llvm-svn: 223518
|
| |
|
|
|
|
|
|
|
|
|
| |
Patch by Kumar Sukhani!
corresponding compiler-rt patch: http://reviews.llvm.org/D6437
clang patch: http://reviews.llvm.org/D6147
Differential Revision: http://reviews.llvm.org/D6459
llvm-svn: 223516
|
| |
|
|
| |
llvm-svn: 223515
|
| |
|
|
|
|
|
|
| |
(llvm part)
Reviewed at http://reviews.llvm.org/D6488
llvm-svn: 223513
|
| |
|
|
| |
llvm-svn: 223512
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Follow up to [x32] "Use ebp/esp as frame and stack pointer":
http://reviews.llvm.org/D4617
In that earlier patch, NaCl64 was made to always use rbp.
That's needed for most cases because rbp should hold a full
64-bit address within the NaCl sandbox so that load/stores
off of rbp don't require sandbox adjustment (zeroing the top
32-bits, then filling those by adding r15).
However, llvm.frameaddress returns a pointer and pointers
are 32-bit for NaCl64. In this case, use ebp instead, which
will make the register copy type check. A similar mechanism
may be needed for llvm.eh.return, but is not added in this change.
Test Plan: test/CodeGen/X86/frameaddr.ll
Reviewers: dschuff, nadav
Subscribers: jfb, llvm-commits
Differential Revision: http://reviews.llvm.org/D6514
llvm-svn: 223510
|
| |
|
|
|
|
|
|
|
|
| |
This patch adds VSX floating point loads and stores to fastisel.
Along with the change to tablegen (D6220), VSX instructions are now fully supported in fastisel.
http://reviews.llvm.org/D6274
llvm-svn: 223507
|
| |
|
|
| |
llvm-svn: 223506
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
SSE2/AVX non-constant packed shift instructions only use the lower 64-bit of
the shift count.
This patch teaches function 'getTargetVShiftNode' how to deal with shifts
where the shift count node is of type MVT::i64.
Before this patch, function 'getTargetVShiftNode' only knew how to deal with
shift count nodes of type MVT::i32. This forced the backend to wrongly
truncate the shift count to MVT::i32, and then zero-extend it back to MVT::i64.
llvm-svn: 223505
|
| |
|
|
| |
llvm-svn: 223504
|
| |
|
|
| |
llvm-svn: 223503
|
| |
|
|
| |
llvm-svn: 223502
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When a loop gets bundled up, its outgoing edges are quite large, and can
just barely overflow 64-bits. If one successor has multiple incoming
edges -- and that successor is getting all the incoming mass --
combining just its edges can overflow. Handle that by saturating rather
than asserting.
This fixes PR21622.
llvm-svn: 223500
|
| |
|
|
|
|
| |
combine imm-imm form.
llvm-svn: 223494
|
| |
|
|
| |
llvm-svn: 223493
|
| |
|
|
| |
llvm-svn: 223491
|
| |
|
|
| |
llvm-svn: 223488
|
| |
|
|
| |
llvm-svn: 223487
|
| |
|
|
| |
llvm-svn: 223486
|
| |
|
|
| |
llvm-svn: 223485
|
| |
|
|
|
|
| |
disassembly tests for many instructions.
llvm-svn: 223482
|
| |
|
|
|
|
|
|
| |
Required some APInt massaging to get proper empty/tombstone values. Apart
from making the code a bit simpler this also reduces the bucket size of
the ConstantInt map from 32 to 24 bytes.
llvm-svn: 223478
|
| |
|
|
| |
llvm-svn: 223474
|