| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 178472
|
| |
|
|
|
|
|
|
|
| |
The popcntw instruction is available whenever the popcntd instruction is
available, and performs a separate popcnt on the lower and upper 32-bits.
Ignoring the high-order count, this can be used for the 32-bit input case
(saving on the explicit zero extension otherwise required to use popcntd).
llvm-svn: 178470
|
| |
|
|
|
|
|
| |
Patch by:
Veselov, Yuri <Yuri.Veselov@intel.com>
llvm-svn: 178469
|
| |
|
|
|
|
|
|
|
|
|
| |
PPCISD::STFIWX is really a memory opcode, and so it should come after
FIRST_TARGET_MEMORY_OPCODE, and we should use DAG.getMemIntrinsicNode to create
nodes using it.
No functionality change intended (although there could be optimization benefits
from preserving the MMO information).
llvm-svn: 178468
|
| |
|
|
| |
llvm-svn: 178462
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Reapply r177968:
After commit 178074 we can now have undefined scheduler variants.
Move the CortexA9 resources into the CortexA9 SchedModel namespace. Define
resource mappings under the CortexA9 SchedModel. Define resources and mappings
for the SwiftModel.
Incooperate Andrew's feedback.
llvm-svn: 178460
|
| |
|
|
|
|
| |
instruction counts.
llvm-svn: 178459
|
| |
|
|
| |
llvm-svn: 178454
|
| |
|
|
| |
llvm-svn: 178452
|
| |
|
|
|
|
| |
been turned off globally.
llvm-svn: 178451
|
| |
|
|
|
|
|
|
|
|
|
| |
ImmToIdxMap should be a DenseMap (not a std::map) because there
is no ordering requirement. Also, we don't need a separate list
of instructions for noImmForm in eliminateFrameIndex, because this
list is essentially the complement of the keys in ImmToIdxMap.
No functionality change intended.
llvm-svn: 178450
|
| |
|
|
|
|
| |
A vector sext + sitofp is a lot cheaper than 8 scalar conversions.
llvm-svn: 178448
|
| |
|
|
|
|
|
|
|
| |
This instruction is available on modern PPC64 CPUs, and is now used
to improve the SINT_TO_FP lowering (by eliminating the need for the
separate sign extension instruction and decreasing the amount of
needed stack space).
llvm-svn: 178446
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The existing SINT_TO_FP code for i32 -> float/double conversion was disabled
because it relied on broken EXTSW_32/STD_32 instruction definitions. The
original intent had been to enable these 64-bit instructions to be used on CPUs
that support them even in 32-bit mode. Unfortunately, this form of lying to
the infrastructure was buggy (as explained in the FIXME comment) and had
therefore been disabled.
This re-enables this functionality, using regular DAG nodes, but only when
compiling in 64-bit mode. The old STD_32/EXTSW_32 definitions (which were dead)
are removed.
llvm-svn: 178438
|
| |
|
|
|
|
|
|
| |
that case.
Fixes the crash reported in PR15608.
llvm-svn: 178429
|
| |
|
|
|
|
|
|
| |
Summary: This is the beginning of user documentation for the NVPTX back-end. I want to ensure I am integrating this properly into the rest of the LLVM documentation.
Differential Revision: http://llvm-reviews.chandlerc.com/D600
llvm-svn: 178428
|
| |
|
|
|
|
|
|
|
|
| |
'@SECREL' is what is used by the Microsoft assembler, but GNU as expects '@SECREL32'.
With the patch, the MC-generated code works fine in combination with a recent GNU as (2.23.51.20120920 here).
Patch by David Nadlinger!
Differential Revision: http://llvm-reviews.chandlerc.com/D429
llvm-svn: 178427
|
| |
|
|
| |
llvm-svn: 178426
|
| |
|
|
|
|
|
|
| |
Nobody says "the developer's list" or "commits archive"; they always say
"llvmdev" or "llvm-commits". It makes sense for our documentation to
at least make that association explicitly.
llvm-svn: 178425
|
| |
|
|
|
|
| |
Order them roughly by "which one should a newbie join first".
llvm-svn: 178424
|
| |
|
|
| |
llvm-svn: 178423
|
| |
|
|
| |
llvm-svn: 178422
|
| |
|
|
| |
llvm-svn: 178421
|
| |
|
|
| |
llvm-svn: 178420
|
| |
|
|
| |
llvm-svn: 178417
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
specific code paths.
This allows us to write code like:
if (__nvvm_reflect("FOO"))
// Do something
else
// Do something else
and compile into a library, then give "FOO" a value at kernel
compile-time so the check becomes a no-op.
llvm-svn: 178416
|
| |
|
|
|
|
|
| |
Hopefully this resolves any outstanding style issues and gives us
an automated way of ensuring we conform to the style guidelines.
llvm-svn: 178415
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 178413
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
rule 1: (x | c1) ^ c2 => (x & ~c1) ^ (c1^c2),
only useful when c1=c2
rule 2: (x & c1) ^ (x & c2) = (x & (c1^c2))
rule 3: (x | c1) ^ (x | c2) = (x & c3) ^ c3 where c3 = c1 ^ c2
rule 4: (x | c1) ^ (x & c2) => (x & c3) ^ c1, where c3 = ~c1 ^ c2
It reduces an application's size (in terms of # of instructions) by 8.9%.
Reviwed by Pete Cooper. Thanks a lot!
rdar://13212115
llvm-svn: 178409
|
| |
|
|
| |
llvm-svn: 178408
|
| |
|
|
| |
llvm-svn: 178407
|
| |
|
|
|
|
|
| |
Check that instruction selection can select multiply-add/sub DSP instructions
from a pattern that doesn't have intrinsics.
llvm-svn: 178406
|
| |
|
|
| |
llvm-svn: 178405
|
| |
|
|
|
|
|
|
|
| |
derived class MipsSETargetLowering.
We shouldn't be generating madd/msub nodes if target is Mips16, since Mips16
doesn't have support for multipy-add/sub instructions.
llvm-svn: 178404
|
| |
|
|
|
|
|
|
|
| |
The new instructions have explicit register output operands and use table-gen
patterns instead of C++ code to do instruction selection.
Mips16's instructions are unaffected by this change.
llvm-svn: 178403
|
| |
|
|
| |
llvm-svn: 178396
|
| |
|
|
| |
llvm-svn: 178395
|
| |
|
|
|
|
| |
instructions.
llvm-svn: 178394
|
| |
|
|
|
|
| |
called in several places in ScheduleDAGRRList.cpp.
llvm-svn: 178393
|
| |
|
|
|
|
| |
to handle accumulator registers.
llvm-svn: 178392
|
| |
|
|
|
|
|
|
|
| |
callee-saved scan.
The code makes use of register's scavenger's capability to spill multiple
registers.
llvm-svn: 178391
|
| |
|
|
|
|
| |
registers.
llvm-svn: 178390
|
| |
|
|
| |
llvm-svn: 178386
|
| |
|
|
| |
llvm-svn: 178385
|
| |
|
|
|
|
|
|
|
|
| |
objc-arc-expand runs before objc-arc/objc-arc-contract.
Specifically, objc-arc-expand will make sure that the
objc_retainAutoreleasedReturnValue, objc_autoreleaseReturnValue, and ret
will all have %call as an argument.
llvm-svn: 178382
|
| |
|
|
|
|
| |
This time tested on both OSX and Linux.
llvm-svn: 178377
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
std::lower_bound is the canonical "binary search" in the STL
(std::binary_search generally is not what you want). The name actually
makes a lot of sense (and also has a beautiful symmetry with the
std::upper_bound algorithm). The name is nonetheless non-obvious.
Also, remove mention of "radix search". It's not even clear how that
would work in the context of a sorted vector. AFAIK "radix search" only
makes sense when you have a trie-like data structure.
llvm-svn: 178376
|
| |
|
|
|
|
| |
on Windows
llvm-svn: 178375
|
| |
|
|
|
|
|
|
|
|
| |
present in a module.
clang.arc.used is an interesting call for ARC since ObjCARCContract
needs to run to remove said intrinsic to avoid a linker error (since the
call does not exist).
llvm-svn: 178369
|
| |
|
|
| |
llvm-svn: 178368
|