@l and friends adjust their value depending the context used in.
For ori, they are unsigned, for addi, signed. Create a new target
expression type to handle this and evaluate Fixups accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215315 91177308-0d34-0410-b5e6-96231b3b80d8
ARM: correct isPredicable for MULS in ThHUMB mode

The ARM ARM states that CPSR may not be updated by a MUL in thumb mode.  Due to
an ordering of Thumb 2 Size Reduction and If Conversion, we would end up
generating a THUMB MULS inside an IT block.

The If Conversion pass uses the TTI isPredicable method to ensure that it can
transform a Basic Block.  However, because we only check for IT handling on
Thumb2 functions, we may miss some cases.  Even then, it only validates that the
CPSR is not *live* rather than it is not accessed.  This corrects the handling
for that particular case since the same restriction does not hold on the vast
majority of the instructions.

This does prevent the IfConversion optimization from kicking in in certain
cases, but generating correct code is more valuable.  Addresses PR20555.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215328 91177308-0d34-0410-b5e6-96231b3b80d8
Add support for scalarizing cttz_zero_undef

Follow up to r214266. Add missing case in ScalarizeVectorResult() for
cttz_zero_undef.

Differential Revision: http://reviews.llvm.org/D4813


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215330 91177308-0d34-0410-b5e6-96231b3b80d8
Increase the size of PMTopLevelManager::ImmutablePasses from 8 to 16.

During a bootstrap build of Clang, this SmallVector always held 14 elements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215333 91177308-0d34-0410-b5e6-96231b3b80d8
Increase the size of DwarfAccelTable::TableHeaderData::Atoms.

During a Clang bootstrap, it seems this SmallVector always contains 3 elements.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215334 91177308-0d34-0410-b5e6-96231b3b80d8
Increase the size of this SmallVector in CloneNodeWithValues.

In a Clang bootstrap, the size of this vector was always 6.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215335 91177308-0d34-0410-b5e6-96231b3b80d8
Increase the size of these SmallVectors in X86ISelLowering.cpp.

In a Clang bootstrap, their sizes were always 12, 16 and 16, respectively.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215336 91177308-0d34-0410-b5e6-96231b3b80d8
LegacyPassManagers.h: increase the size of PMDataManager::HigherLevelAnalysis.

In a Clang bootstrap, the median and max size was 9.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215337 91177308-0d34-0410-b5e6-96231b3b80d8
Increase the size of SpillPlacement::BlockFrequencies.

This SmallVector's median size during a Clang build was 7.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215338 91177308-0d34-0410-b5e6-96231b3b80d8
SubTargetFeature.cpp: it seems the size of this SmallVector should be 3

because some subtarget feature strings have three components.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215339 91177308-0d34-0410-b5e6-96231b3b80d8
Increase the size of this SmallVector in PeepholeOptimizer.

During a Clang build, the median size of this was 9

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215340 91177308-0d34-0410-b5e6-96231b3b80d8
Revert "Increase the size of this SmallVector in PeepholeOptimizer." (r215340)

That broke the build:

/data/buildslave/clang-amd64-freebsd/src-llvm/lib/CodeGen/PeepholeOptimizer.cpp:729:46: error: non-const lvalue reference to type 'SmallPtrSet<[...], 8>' cannot bind to a value of unrelated type 'SmallPtrSet<[...], 16>'
        Changed |= optimizeExtInstr(MI, MBB, LocalMIs);
                                             ^~~~~~~~
/data/buildslave/clang-amd64-freebsd/src-llvm/lib/CodeGen/PeepholeOptimizer.cpp:265:49: note: passing argument to parameter 'LocalMIs' here
                 SmallPtrSet<MachineInstr*, 8> &LocalMIs) {
                                                ^




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215341 91177308-0d34-0410-b5e6-96231b3b80d8
Re-commit "Increase the size of this SmallVector in PeepholeOptimizer." (r215340)

This time, also update the function that receives a reference to the SmallPtrSet as
a parameter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215342 91177308-0d34-0410-b5e6-96231b3b80d8
In LVI(Lazy Value Info), originally value on a BB can only be caculated once,
and the lattice will be updated to be a state other than "undefined". This
limiation could miss some opportunities of lowering "overdefined" to be an
even accurate value. So this patch ask the algorithm to try to lower the
lattice value again even if the value has been lowered to be "overdefined".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215343 91177308-0d34-0410-b5e6-96231b3b80d8
In Machine CSE pass, the source register of a COPY machine instruction can
be propagated to all its users, and this propagation could increase the 
probability of finding common subexpressions. If the COPY has only one user,
the COPY itself can be removed.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215344 91177308-0d34-0410-b5e6-96231b3b80d8
ARM: __gnu_h2f_ieee and __gnu_f2h_ieee always use the soft-float calling convention

By default, LLVM uses the "C" calling convention for all runtime
library functions. The half-precision FP conversion functions use the
soft-float calling convention, and are needed for some targets which
use the hard-float convention by default, so must have their calling
convention explicitly set.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215348 91177308-0d34-0410-b5e6-96231b3b80d8
llvm-objdump: fix remaining use of %x format specifier for 64-bit values

Third time lucky. This should finally fix the ARM (& MIPS, I think) bots.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215349 91177308-0d34-0410-b5e6-96231b3b80d8
llvm-readobj: zero out timestamp in COFF auto-generated test files.

The timestamp meant these files changed with each invocation of
relocs.py, confusing matters when we add relocations and need to
update the tests.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215350 91177308-0d34-0410-b5e6-96231b3b80d8
AVX-512: added a missing bitcast from v16f32 to v16i32

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215351 91177308-0d34-0410-b5e6-96231b3b80d8
AArch64: add support for dynamic-loader relocations

LLD needs them, and it's good to be able to print them properly when
our object dumpers encounter them.

Patch by Daniel Stewart.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215352 91177308-0d34-0410-b5e6-96231b3b80d8