| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
| |
Follow up to r214266. Add missing case in ScalarizeVectorResult() for
cttz_zero_undef.
Differential Revision: http://reviews.llvm.org/D4813
llvm-svn: 215330
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
llvm-svn: 215328
|
| |
|
|
|
|
|
| |
For ori, they are unsigned, for addi, signed. Create a new target
expression type to handle this and evaluate Fixups accordingly.
llvm-svn: 215315
|
| |
|
|
| |
llvm-svn: 215311
|
| |
|
|
|
|
|
| |
At least on PowerPC, the interpretation of certain modifiers depends on
the context they appear in.
llvm-svn: 215310
|
| |
|
|
|
|
|
|
|
|
|
| |
Remove the MinGW32 and Cygwin types from the OSType enumeration. These values
are represented via environments of Windows. It is a source of confusion and
needlessly clutters the code. The cost of doing this is that we must sink the
check for them into the normalization code path along with the spelling.
Addresses PR20592.
llvm-svn: 215303
|
| |
|
|
| |
llvm-svn: 215299
|
| |
|
|
|
|
| |
No functional changes intended.
llvm-svn: 215293
|
| |
|
|
|
|
|
|
| |
This removes the duplicate definition of GetXDataSection. This function is
available as a static method and is identical to the previous implementation.
This just cleans up the unnecessary duplication.
llvm-svn: 215289
|
| |
|
|
|
|
| |
Cleanup Win64EH header inclusion. NFC.
llvm-svn: 215288
|
| |
|
|
|
|
| |
Use a range based for loop instead of manual iteration. NFC.
llvm-svn: 215287
|
| |
|
|
| |
llvm-svn: 215286
|
| |
|
|
|
|
|
| |
since the operands are actually used on those cores. Provide aliases for
the only documented case in the newer Power ISA speec.
llvm-svn: 215282
|
| |
|
|
| |
llvm-svn: 215281
|
| |
|
|
|
|
| |
and update initialization.
llvm-svn: 215280
|
| |
|
|
| |
llvm-svn: 215279
|
| |
|
|
| |
llvm-svn: 215277
|
| |
|
|
|
|
| |
created.
llvm-svn: 215271
|
| |
|
|
|
|
|
| |
This will lower them using register copies rather than loads and stores
to the stack.
llvm-svn: 215270
|
| |
|
|
| |
llvm-svn: 215266
|
| |
|
|
|
|
|
|
|
|
|
| |
Cleanup only: no functional change.
This patch makes RuntimeDyldMachO targets directly responsible for decoding
immediates, rather than letting them implement catch a callback from generic
code. Since this is a very target specific operation, it makes sense to let the
target-specific code drive it.
llvm-svn: 215255
|
| |
|
|
| |
llvm-svn: 215253
|
| |
|
|
|
|
| |
Sorry for the noise.
llvm-svn: 215249
|
| |
|
|
| |
llvm-svn: 215248
|
| |
|
|
| |
llvm-svn: 215243
|
| |
|
|
|
|
| |
Part of pr20544. Test to follow in a second.
llvm-svn: 215241
|
| |
|
|
| |
llvm-svn: 215240
|
| |
|
|
|
|
| |
empty functions will assert in the MC object writer.
llvm-svn: 215238
|
| |
|
|
|
|
|
|
| |
I accidentally also used INC/DEC for unsigned arithmetic which doesn't work,
because INC/DEC don't set the required flag which is used for the overflow
check.
llvm-svn: 215237
|
| |
|
|
|
|
|
|
| |
std::map invalidates the iterator to any element that gets deleted, which means
we can't increment it correctly afterwards. This was causing Darwin test
failures.
llvm-svn: 215233
|
| |
|
|
| |
llvm-svn: 215231
|
| |
|
|
|
|
|
|
|
|
| |
intrinsics.
This is a small peephole optimization to emit INC/DEC when possible.
Fixes <rdar://problem/17952308>.
llvm-svn: 215230
|
| |
|
|
|
|
|
|
|
| |
the assertion that no argument variable is overwritten by subsequent argument variables.
This turned up a bug in clang where arguments were emitted with
duplicate argument numbers (see r215227).
llvm-svn: 215228
|
| |
|
|
| |
llvm-svn: 215226
|
| |
|
|
| |
llvm-svn: 215224
|
| |
|
|
|
|
|
|
| |
floating point exceptions, added use of flag to fold potentially exception
raising floating point math in selection DAG. No functionality change, as
targets have to explicitly ask for this behavior and none does today.
llvm-svn: 215222
|
| |
|
|
|
|
| |
soft-float is properly supported.
llvm-svn: 215221
|
| |
|
|
| |
llvm-svn: 215220
|
| |
|
|
| |
llvm-svn: 215219
|
| |
|
|
| |
llvm-svn: 215218
|
| |
|
|
|
|
| |
test in the test-suite while I investigate further.
llvm-svn: 215217
|
| |
|
|
| |
llvm-svn: 215216
|
| |
|
|
| |
llvm-svn: 215212
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
possible for -mno-abicalls to take effect.
Also added the testcase that should have been in r215194.
This behaviour has surprised me a few times now. The problem is that the
generated MipsSubtarget::ParseSubtargetFeatures() contains code like this:
if ((Bits & Mips::FeatureABICalls) != 0) IsABICalls = true;
so '-abicalls' means 'leave it at the default' and '+abicalls' means 'set it to
true'. In this case, (and the similar -modd-spreg case) I'd like the code to be
IsABICalls = (Bits & Mips::FeatureABICalls) != 0;
or possibly:
if ((Bits & Mips::FeatureABICalls) != 0)
IsABICalls = true;
else
IsABICalls = false;
and preferably arrange for 'Bits & Mips::FeatureABICalls' to be true by default
(on some triples).
llvm-svn: 215211
|
| |
|
|
| |
llvm-svn: 215209
|
| |
|
|
|
|
|
|
| |
The bug can cause spec2006/483.xalancbmk failure.
Patched by David Xu.
llvm-svn: 215206
|
| |
|
|
|
|
|
| |
The problem was in unchecked dyn_cast inside of Input::createHNodes.
Patch by Roman Kashitsyn!
llvm-svn: 215205
|
| |
|
|
| |
llvm-svn: 215200
|
| |
|
|
|
|
|
|
|
|
|
|
| |
For best-case performance on Cortex-A57, we should try to use a balanced mix of odd and even D-registers when performing a critical sequence of independent, non-quadword FP/ASIMD floating-point multiply or multiply-accumulate operations.
This pass attempts to detect situations where the register allocation may adversely affect this load balancing and to change the registers used so as to better utilize the CPU.
Ideally we'd just take each multiply or multiply-accumulate in turn and allocate it alternating even or odd registers. However, multiply-accumulates are most efficiently performed in the same functional unit as their accumulation operand. Therefore this pass tries to find maximal sequences ("Chains") of multiply-accumulates linked via their accumulation operand, and assign them all the same "color" (oddness/evenness).
This optimization affects S-register and D-register floating point multiplies and FMADD/FMAs, as well as vector (floating point only) muls and FMADD/FMA. Q register instructions (and 128-bit vector instructions) are not affected.
llvm-svn: 215199
|
| |
|
|
|
|
|
|
|
|
|
| |
This patch implements the main rules for -mno-abicalls such as reserving $gp,
and emitting the correct .option directive.
Patch by Matheus Almeida and Toma Tabacu
Differential Revision: http://reviews.llvm.org/D4231
llvm-svn: 215194
|