| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 268889
|
| |
|
|
| |
llvm-svn: 268888
|
| |
|
|
|
|
|
|
| |
vXi8/vXi16/vXi32 when VLX is enabled. The equivalent AVX1/2 patterns are disabled by VLX.
This caused regular stores to be emitted instead.
llvm-svn: 268886
|
| |
|
|
|
|
|
|
| |
stay enabled unless VLX and BWI instructions are supported."
Without this we could fail instruction selection if VLX was enabled, but BWI wasn't.
llvm-svn: 268885
|
| |
|
|
|
|
| |
encoded VPXORD so all 32 registers can be used.
llvm-svn: 268884
|
| |
|
|
|
|
| |
future commit. NFC
llvm-svn: 268883
|
| |
|
|
| |
llvm-svn: 268882
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Specially crafted bitcode wrapper headers can cause unsigned interger
overflow and lead to crashes when wrapping around. Fix the offset check
and avoid such scenarios.
Writing a testcase for this would involve editing the binary to generate
values that trigger the overflow, since this would never happen while
generating the bitcode in regular compilation flows, so there's
currently no feasible way add one.
llvm-svn: 268881
|
| |
|
|
|
|
| |
always canonicalized to v4i32/v8i32/v16i32 except for in SSE1 only when only v4f32 is supported.
llvm-svn: 268880
|
| |
|
|
|
|
| |
SSE2/SSE3/SSSE3/SSE41/SSE42 targets
llvm-svn: 268877
|
| |
|
|
|
|
|
|
|
|
|
|
| |
A number of libcalls don't exist in any particular lib but are, instead,
defined in math.h as inline functions (even in C mode!). Don't rely on
their existence when lowering @llvm.{cos,sin,floor,..}.f32, promote them
instead.
N.B. We had logic to handle FREM but were missing out on a number of
others. This change generalizes the FREM handling.
llvm-svn: 268875
|
| |
|
|
|
|
| |
Either way a 256-bit VXORPS will be used.
llvm-svn: 268873
|
| |
|
|
|
|
| |
supported. While there, add a predicate to the SSE2 patterns to avoid an ordering dependency.
llvm-svn: 268872
|
| |
|
|
|
|
| |
only AVX1 is supported. AVX_SET0 just expands to 256-bit VXORPS which is legal in AVX1.
llvm-svn: 268871
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(re-apply r268810 as it exposed an uninitialized variable in ARM MFI.
Patch 268868 should fix that.)
Summary:
Currently, when checking if a stack is "BigStack" or not, it doesn't count into spills and arguments. Therefore, LLVM won't reserve spill slot for this actually "BigStack". This may cause scavenger failure.
Reviewers: rengolin
Subscribers: vitalybuka, aemerson, rengolin, tberghammer, danalbert, srhines, llvm-commits
Differential Revision: http://reviews.llvm.org/D19896
llvm-svn: 268869
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: Explicitly initialize ArgumentStackSize to prevent the msan failure.
Reviewers: rengolin
Subscribers: aemerson, rengolin, llvm-commits
Differential Revision: http://reviews.llvm.org/D20051
llvm-svn: 268868
|
| |
|
|
| |
llvm-svn: 268867
|
| |
|
|
|
|
| |
Added bitreverse creation testing
llvm-svn: 268865
|
| |
|
|
|
|
| |
in 64-bit mode.
llvm-svn: 268863
|
| |
|
|
|
|
| |
Identity tests are currently failing - this will be fixed soon
llvm-svn: 268862
|
| |
|
|
| |
llvm-svn: 268861
|
| |
|
|
|
|
| |
count' cost tests
llvm-svn: 268859
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For the sake of minimalism, this patch is x86 only, but I think that at least
PPC, ARM, AArch64, and Sparc probably want to do this too.
We might want to generalize the hook and pattern recognition for a target like
PPC that has a full assortment of negated logic ops (orc, nand).
Note that http://reviews.llvm.org/D18842 will cause this transform to trigger
more often.
For reference, this relates to:
https://llvm.org/bugs/show_bug.cgi?id=27105
https://llvm.org/bugs/show_bug.cgi?id=27202
https://llvm.org/bugs/show_bug.cgi?id=27203
https://llvm.org/bugs/show_bug.cgi?id=27328
Differential Revision: http://reviews.llvm.org/D19087
llvm-svn: 268858
|
| |
|
|
|
|
| |
closing. Use raw_string_ostream::str() to flush the buffer.
llvm-svn: 268856
|
| |
|
|
| |
llvm-svn: 268851
|
| |
|
|
|
|
|
|
|
| |
deleting it.
Fix MSAN build.
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 268849
|
| |
|
|
|
|
| |
[-Wunused-function]
llvm-svn: 268848
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This moves the code that handles stripping debug info intrinsic from
StripDebugInfo(Module) to StripDebugInfo(Function). The latter is
already walking every instructions so it makes sense to do it at the
same time.
This makes also stripDebugInfo(Function) as an API more useful: it
is really dropping every debug info in the Function.
Finally the existing code is trigerring an assertion when the Module
is not fully materialized.
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 268847
|
| |
|
|
| |
llvm-svn: 268846
|
| |
|
|
|
|
|
|
| |
This enables lazy JITing on Windows x86-64.
Patch by David. Thanks David!
llvm-svn: 268845
|
| |
|
|
|
|
| |
It breaks many bots
llvm-svn: 268837
|
| |
|
|
|
|
| |
There is no need to match the comparison instruction repeatedly.
llvm-svn: 268836
|
| |
|
|
| |
llvm-svn: 268835
|
| |
|
|
| |
llvm-svn: 268834
|
| |
|
|
|
|
|
| |
16802==WARNING: MemorySanitizer: use-of-uninitialized-value
lib/Target/ARM/ARMFrameLowering.cpp:1632
llvm-svn: 268833
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This moves the code that handles stripping debug info intrinsic from
StripDebugInfo(Module) to StripDebugInfo(Function). The latter is
already walking every instructions so it makes sense to do it at the
same time.
This makes also stripDebugInfo(Function) as an API more useful: it
is really dropping every debug info in the Function.
Finally the existing code is trigerring an assertion when the Module
is not fully materialized.
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 268832
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This re-applies r268760, reverted in r268794.
Fixes http://llvm.org/PR27670
The original imp-defs assertion was way overzealous: forward all
implicit operands, except imp-defs of the new super-reg def (r268787
for GR64, but also possible for GR16->GR32), or imp-uses of the new
super-reg use.
While there, mark the source use as Undef, and add an imp-use of the
old source reg: that should cover any case of dead super-regs.
At the stage the pass runs, flags are unlikely to matter anyway;
still, let's be as correct as possible.
Also add MIR tests for the various interesting cases.
Original commit message:
Codesize is less (16) or equal (8), and we avoid partial
dependencies.
Differential Revision: http://reviews.llvm.org/D19999
llvm-svn: 268831
|
| |
|
|
|
|
| |
That lets us use it in MIR tests.
llvm-svn: 268830
|
| |
|
|
| |
llvm-svn: 268824
|
| |
|
|
| |
llvm-svn: 268822
|
| |
|
|
|
|
| |
the OOM reproducer.
llvm-svn: 268821
|
| |
|
|
|
|
|
|
|
| |
The value-data line is <PGOFuncName>:<Count_Value>. PGOFuncName might contain
':' for the internal linkage functions. We therefore need to use rsplit,
rather split, to extract the data from the line. This fixes the error when
merging a text profile file to an indexed profile file.
llvm-svn: 268818
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The bitcode upgrade I added for DISubprogram in r266446 was based on the
assumption that the CU node for the subprogram was already materialized by the
time the DISubprogram is visited. This assumption may not hold true as future
versions of LLVM may decide to write out bitcode in a different order. This
patch corrects this by introducing a versioning bit next to the distinct flag to
unambiguously differentiate the new from the old record layouts.
Note for people stabilizing LLVM out-of-tree: This patch introduces a bitcode
incompatibility with llvm trunk revisions from r266446 — this commit. (But
D19987 will ensure that it degrades gracefully).
http://reviews.llvm.org/D20004
rdar://problem/26074194
llvm-svn: 268816
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
In case of COPY-like instruction we may be able to deduce that a certain
input is unused, based on the used lanes of the register defined by the
instruction.
This even works accross otherwise incompatible copies (no need to have
compatible lanemasks, completely unused operands are still completely
unused). It even makes sense to redo the analysis in this case since we
gained information for a case we previously stopped at because of the
incompatible masks.
llvm-svn: 268815
|
| |
|
|
| |
llvm-svn: 268814
|
| |
|
|
| |
llvm-svn: 268813
|
| |
|
|
| |
llvm-svn: 268812
|
| |
|
|
|
|
| |
Added 256-bit vector test as well
llvm-svn: 268811
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(this is resubmit of r268529 with minor refactoring. r268529 was reverted
at r268536 due a memory sanitizer failure. I have not been able to
reproduce that failure and I checked all the variable used in my change
but I could not spot an issue. I did some refactoring and see if it will
give a clearer hint)
Summary:
Currently, when checking if a stack is "BigStack" or not, it doesn't count into spills and arguments. Therefore, LLVM won't reserve spill slot for this actually "BigStack". This may cause scavenger failure.
Reviewers: rengolin
Subscribers: vitalybuka, aemerson, rengolin, tberghammer, danalbert, srhines, llvm-commits
Differential Revision: http://reviews.llvm.org/D19896
llvm-svn: 268810
|
| |
|
|
|
|
|
|
|
|
|
| |
Original Commit Message
Extend load/store type canonicalization to handle unordered operations
Extend the type canonicalization logic to work for unordered atomic loads and stores. Note that while this change itself is fairly simple and low risk, there's a reasonable chance this will expose problems in the backends by suddenly generating IR they wouldn't have seen before. Anything of this nature will be an existing bug in the backend (you could write an atomic float load), but this will definitely change the frequency with which such cases are encountered. If you see problems, feel free to revert this change, but please make sure you collect a test case.
Note that the concern about lowering is now much less likely. PR27490 proved that we already *were* mucking with the types of ordered atomics and volatiles. As a result, this change doesn't introduce as much new behavior as originally thought.
llvm-svn: 268809
|