| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 212344
|
| |
|
|
| |
llvm-svn: 212343
|
| |
|
|
| |
llvm-svn: 212342
|
| |
|
|
| |
llvm-svn: 212341
|
| |
|
|
|
|
| |
If needed, an ErrorOr should be used.
llvm-svn: 212340
|
| |
|
|
|
|
|
|
|
|
|
|
| |
the value the initializer is referring to.
This is useful for functions that are not actually available externally but
referenced by a vtable of some kind. Clang emits functions like this for the MS
ABI.
PR20182.
llvm-svn: 212337
|
| |
|
|
| |
llvm-svn: 212335
|
| |
|
|
|
|
| |
This doesn't pass if stack alignment is not 16, like cygming, *bsd.
llvm-svn: 212334
|
| |
|
|
|
|
|
|
|
|
| |
The linker relies on relocation type info (e.g. is it a branch?) to perform the
correct actions, so we should keep that even when we end up using a scattered
relocation for whatever reason.
rdar://problem/17553104
llvm-svn: 212333
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were two issues here:
1. At the very least, scattered relocations cannot use the same code to
determine the corresponding symbol being referred to. For some reason we
pretend there is no symbol, even when one actually exists in the symtab, so to
match this behaviour getRelocationSymbol should simply return symbols_end for
scattered relocations.
2. Printing "-" when we can't get a symbol (including the scattered case, but
not exclusively), isn't that helpful. In both cases there *is* interesting
information in that field, so we should print it. As hex will do.
Small part of rdar://problem/17553104
llvm-svn: 212332
|
| |
|
|
|
|
|
|
| |
can prove that it cannot overflow.
PR20194
llvm-svn: 212331
|
| |
|
|
|
|
|
|
| |
We have detected a documentation bug in the encoding tables of the released
MIPS64r6 specification that has resulted in the wrong encodings being used for
these instructions in LLVM. This commit corrects them.
llvm-svn: 212330
|
| |
|
|
|
|
| |
the commit
llvm-svn: 212328
|
| |
|
|
|
|
|
| |
I still don't love testing the comments, but its the only sane way to
check shuffle instructions...
llvm-svn: 212326
|
| |
|
|
|
|
| |
(meant to put this cleanup in the previous patch, sorry)
llvm-svn: 212325
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
any constant, constant FP, or undef splat and to tolerate any undef
lanes in a splat, then replace all uses of isSplatVector in X86's
lowering with it.
This fixes issues where undef lanes in an otherwise splat vector would
prevent the splat logic from firing. It is a touch more awkward to use
this interface, but it is much more accurate. Suggestions for better
interface structuring welcome.
With this fix, the code generated with the widening legalization
strategy for widen_cast-4.ll is *dramatically* improved as the special
lowering strategies for a v16i8 SRA kick in even though the high lanes
are undef.
We also get a slightly different choice for broadcasting an aligned
memory location, and use vpshufd instead of vbroadcastss. This looks
like a minor win for pipelining and domain crossing, but a minor loss
for the number of micro-ops. I suspect its a wash, but folks can easily
tweak the lowering if they want.
llvm-svn: 212324
|
| |
|
|
|
|
|
| |
a non-null node. In particular, this makes it easier to use condition
variables with SDValues, etc.
llvm-svn: 212323
|
| |
|
|
|
|
|
|
|
|
|
| |
Silvermont can only decode one instruction per cycle if the instruction exceeds 8 bytes.
Also in Silvermont instructions with more than 3 prefixes will cause 3 cycle penalty.
Maximum nop length is limited to 7 bytes when used for padding on Silvermont.
For other x86 processors max nop length remains unchanged 15 bytes.
Differential Revision: http://reviews.llvm.org/D4374
llvm-svn: 212321
|
| |
|
|
|
|
|
|
| |
Summary: This was causing the prologue_end to be incorrectly positioned.
Differential Revision: http://reviews.llvm.org/D4122
llvm-svn: 212318
|
| |
|
|
|
|
|
|
| |
cygming.
This makes unittests run with BUILD_SHARED_LIBS on DLL platforms.
llvm-svn: 212316
|
| |
|
|
|
|
|
|
|
|
|
| |
BUILD_SHARED_LIBS may not control enable/disable plugins.
FIXME: Make this configurable.
FIXME: "ENABLE_SHARED" doesn't make sense, since it is used just for plugins. We may rename it.
I introduced config.enable_shared in r120273.
llvm-svn: 212315
|
| |
|
|
|
|
| |
For now, its user is configure_lit_site_cfg().
llvm-svn: 212314
|
| |
|
|
| |
llvm-svn: 212313
|
| |
|
|
| |
llvm-svn: 212310
|
| |
|
|
|
|
|
|
|
|
| |
subtarget. This involved having the movt predicate take the current
function - since we care about size in instruction selection for
whether or not to use movw/movt take the function so we can check
the attributes. This required adding the current MachineFunction to
FastISel and propagating through.
llvm-svn: 212309
|
| |
|
|
|
|
|
|
|
| |
We want to encourage users of the C++ LTO API to reuse memory buffers instead
of repeatedly opening and reading the same file contents.
This reverts commit r212305 and implements a tidier scheme.
llvm-svn: 212308
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When INT_MIN is the numerator in a sdiv, we would not properly handle
overflow when calculating the bounds of possible values; abs(INT_MIN) is
not a meaningful number.
Instead, check and handle INT_MIN by reasoning that the largest value is
INT_MIN/-2 and the smallest value is INT_MIN.
This fixes PR20199.
llvm-svn: 212307
|
| |
|
|
| |
llvm-svn: 212305
|
| |
|
|
|
|
|
|
|
|
| |
On at least my machine, ar does not register an all symbols read hook (which
previously triggered target initialization), but it does register a claim
files hook, which depends on the targets being initialized.
Differential Revision: http://reviews.llvm.org/D4372
llvm-svn: 212303
|
| |
|
|
|
|
|
|
|
| |
This rename makes it easier to identify the specific overload being called
in each particular case and makes future refactorings easier.
Differential Revision: http://reviews.llvm.org/D4370
llvm-svn: 212302
|
| |
|
|
| |
llvm-svn: 212301
|
| |
|
|
|
|
| |
used when we have SSE2.
llvm-svn: 212300
|
| |
|
|
| |
llvm-svn: 212299
|
| |
|
|
|
|
|
|
| |
functions that do not have top level debug information." as it appears to be breaking some LTO constructs.
This reverts commit r212203.
llvm-svn: 212298
|
| |
|
|
|
|
|
| |
subtarget from ARMISelDAGtoDAG. The former is unnecessary and the
latter is initialized on each runOnMachineFunction.
llvm-svn: 212297
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch:
1) Improves the cost model for x86 alternate shuffles (originally
added at revision 211339);
2) Teaches the Cost Model Analysis pass how to analyze alternate shuffles.
Alternate shuffles are a special kind of blend; on x86, we can often
easily lowered alternate shuffled into single blend
instruction (depending on the subtarget features).
The existing cost model didn't take into account subtarget features.
Also, it had a couple of "dead" entries for vector types that are never
legal (example: on x86 types v2i32 and v2f32 are not legal; those are
always either promoted or widened to 128-bit vector types).
The new x86 cost model takes into account what target features we have
before returning the shuffle cost (i.e. the number of instructions
after the blend is lowered/expanded).
This patch also teaches the Cost Model Analysis how to identify and analyze
alternate shuffles (i.e. 'SK_Alternate' shufflevector instructions):
- added function 'isAlternateVectorMask';
- added some logic to check if an instruction is a alternate shuffle and, in
case, call the target specific TTI to get the corresponding shuffle cost;
- added a test to verify the cost model analysis on alternate shuffles.
llvm-svn: 212296
|
| |
|
|
|
|
|
|
| |
symbol’s name. On darwin the -j flag is used (often in combinations
with other flags) to produce a complete list of symbol names which
than can then be reorder and used with ld(1)’s -order_file.
llvm-svn: 212294
|
| |
|
|
|
|
|
|
|
|
| |
This patch adds tablegen patterns to select F16C float-to-half-float
conversion instructions from 'f32_to_f16' and 'f16_to_f32' dag nodes.
If the target doesn't have F16C, then 'f32_to_f16' and 'f16_to_f32'
are expanded into library calls.
llvm-svn: 212293
|
| |
|
|
| |
llvm-svn: 212292
|
| |
|
|
| |
llvm-svn: 212289
|
| |
|
|
|
|
|
| |
Fixes the build with only the ARM backend enabled. For some reason some
other backend was pulling Object and this went unnoticed.
llvm-svn: 212288
|
| |
|
|
|
|
|
| |
This should allow llvm-ar to be used instead of gnu ar + plugin in a LTO
build. I will add a release note about it once I finish a LTO bootstrap with it.
llvm-svn: 212287
|
| |
|
|
|
|
|
|
|
|
|
| |
Exposes more constant globals that can be removed by
the global optimizer. A specific example is the removal
of the static global block address array in
clang/test/CodeGen/indirect-goto.c. This change impacts only
lower optimization levels. With LTO interprocedural
const prop runs already before global opt.
llvm-svn: 212284
|
| |
|
|
| |
llvm-svn: 212283
|
| |
|
|
|
|
| |
This also enables it in llvm-nm so that it can be tested.
llvm-svn: 212282
|
| |
|
|
|
|
| |
as darwin’s nm(1) uses -U for this functionality.
llvm-svn: 212280
|
| |
|
|
| |
llvm-svn: 212279
|
| |
|
|
|
|
| |
This replaces some old-style loops with range-based for.
llvm-svn: 212278
|
| |
|
|
|
|
|
| |
Adds support for __builtin_arm_isb. Also corrects DSB and ISB instructions
modelling by adding has-side-effects property.
llvm-svn: 212276
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch sets the 'KeepReg' bit for any tied and live registers during the PrescanInstruction() phase of the dependency breaking algorithm. It then checks those 'KeepReg' bits during the ScanInstruction() phase to avoid changing any tied registers. For more details, please see comments in:
http://llvm.org/bugs/show_bug.cgi?id=20020
I added two FIXME comments for code that I think can be removed by using register iterators that include self. I don't want to include those code changes with this patch, however, to keep things as small as possible.
The test case is larger than I'd like, but I don't know how to reduce it further and still produce the failing asm.
Differential Revision: http://reviews.llvm.org/D4351
llvm-svn: 212275
|