OSDN Git Service
Vedant Kumar [Mon, 18 Sep 2017 23:37:28 +0000 (23:37 +0000)]
[Coverage] Use gap regions to select better line exec counts
After clang started emitting deferred regions (r312818), llvm-cov has
had a hard time picking reasonable line execuction counts. There have
been one or two generic improvements in this area (e.g r310012), but
line counts can still report coverage for whitespace instead of code
(llvm.org/PR34612).
To fix the problem:
* Introduce a new region kind so that frontends can explicitly label
gap areas.
This is done by changing the encoding of the columnEnd field of
MappingRegion. This doesn't substantially increase binary size, and
makes it easy to maintain backwards-compatibility.
* Don't set the line count to a count from a gap area, unless the count
comes from a wrapped segment.
* Don't highlight gap areas as uncovered.
Fixes llvm.org/PR34612.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313597
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 18 Sep 2017 23:37:27 +0000 (23:37 +0000)]
[llvm-cov] Repair a test. NFC.
The checks with the MARKER prefix were not being run over the right
input, because stderr was not redirected properly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313596
91177308-0d34-0410-b5e6-
96231b3b80d8
Vedant Kumar [Mon, 18 Sep 2017 23:37:27 +0000 (23:37 +0000)]
[llvm-cov] Simplify code to find the first uncovered segment. NFC.
Now that that segment builder is guaranteed to produce segments in
sorted order, we don't need a linear scan to get the right result.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313595
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 18 Sep 2017 23:36:35 +0000 (23:36 +0000)]
[lit] Use realpath when adding to the config map.
Since the path a user specifies to the llvm-lit script might be
different than the source tree they built from (since they could
be behind different symlinks), we need to use realpath to make
sure that path comparisons work as expected.
Even better would be to use a custom dictionary comparison with
actual file equivalence comparison semantics, but this is the
least friction to unbreak things for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313594
91177308-0d34-0410-b5e6-
96231b3b80d8
Yonghong Song [Mon, 18 Sep 2017 23:29:36 +0000 (23:29 +0000)]
bpf: add inline-asm support
Signed-off-by: Yonghong Song <yhs@fb.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313593
91177308-0d34-0410-b5e6-
96231b3b80d8
Yi Kong [Mon, 18 Sep 2017 23:24:55 +0000 (23:24 +0000)]
[ThinLTO/gold] Implement ThinLTO cache pruning support
Differential Revision: https://reviews.llvm.org/D37993
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313592
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 18 Sep 2017 23:14:15 +0000 (23:14 +0000)]
Fix inverted regex search.
I was using the pattern as the source string and vice versa
causing strange regular expression errors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313590
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 18 Sep 2017 23:08:42 +0000 (23:08 +0000)]
Revert r313400 "[DebugInfo] Insert DW_OP_deref when spilling indirect DBG_VALUEs"
This caused asserts in Chromium. See http://crbug.com/766261
> Summary:
> This comes up in optimized debug info for C++ programs that pass and
> return objects indirectly by address. In these programs,
> llvm.dbg.declare survives optimization, which causes us to emit indirect
> DBG_VALUE instructions. The fast register allocator knows to insert
> DW_OP_deref when spilling indirect DBG_VALUE instructions, but the
> LiveDebugVariables did not until this change.
>
> This fixes part of PR34513. I need to look into why this doesn't work at
> -O0 and I'll send follow up patches to handle that.
>
> Reviewers: aprantl, dblaikie, probinson
>
> Subscribers: qcolombet, hiraditya, llvm-commits
>
> Differential Revision: https://reviews.llvm.org/D37911
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313589
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 18 Sep 2017 22:30:45 +0000 (22:30 +0000)]
[lit] Fix a Python 3 compatibility issue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313580
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 18 Sep 2017 22:26:48 +0000 (22:26 +0000)]
[lit] Update clang and lld to use new config helpers.
NFC intended here, this only updates clang and lld's lit configs
to use some helper functionality in the lit.llvm submodule.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313579
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 18 Sep 2017 22:11:33 +0000 (22:11 +0000)]
Replace for_each with a range-based for. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313578
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 18 Sep 2017 22:05:35 +0000 (22:05 +0000)]
[DAGCombiner] fold assertzexts separated by trunc
If we have an AssertZext of a truncated value that has already been AssertZext'ed,
we can assert on the wider source op to improve the zext-y knowledge:
assert (trunc (assert X, i8) to iN), i1 --> trunc (assert X, i1) to iN
This moves a fold from being Mips-specific to general combining, and x86 shows
improvements.
Differential Revision: https://reviews.llvm.org/D37017
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313577
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 18 Sep 2017 21:57:56 +0000 (21:57 +0000)]
[InstCombine] auto-generate complete checks; NFC
The code responsible for these transforms has the potential to add 2
instructions and break min/max patterns (PR33301).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313575
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Mon, 18 Sep 2017 21:52:02 +0000 (21:52 +0000)]
[cmake] Add a simple function to dump all variables.
This is useful when debugging CMake problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313574
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 18 Sep 2017 21:44:40 +0000 (21:44 +0000)]
llvm-dwarfdump: use more efficient API (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313573
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 18 Sep 2017 21:31:48 +0000 (21:31 +0000)]
[gcov] Emit errors when opening the notes file fails
No time to write a test case, on to the next bug. =P
Discovered while investigating PR34659
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313571
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 18 Sep 2017 21:28:13 +0000 (21:28 +0000)]
Fix indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313568
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 18 Sep 2017 21:27:44 +0000 (21:27 +0000)]
llvm-dwarfdump: add a --show-parents options when selectively dumping DIEs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313567
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 18 Sep 2017 21:27:42 +0000 (21:27 +0000)]
Fix typo in testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313566
91177308-0d34-0410-b5e6-
96231b3b80d8
Konstantin Zhuravlyov [Mon, 18 Sep 2017 21:22:45 +0000 (21:22 +0000)]
AMDGPU: Start selecting s_xnor_{b32, b64}
Differential Revision: https://reviews.llvm.org/D37981
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313565
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 18 Sep 2017 20:54:26 +0000 (20:54 +0000)]
[DAG, x86] allow store merging before and after legalization (PR34217)
rL310710 allowed store merging to occur after legalization to catch stores that are created late,
but this exposes a logic hole seen in PR34217:
https://bugs.llvm.org/show_bug.cgi?id=34217
We will miss merging stores if the target lowers vector extracts into target-specific operations.
This patch allows store merging to occur both before and after legalization if the target chooses
to get maximum merging.
I don't think the potential regressions in the other tests are relevant. The tests are for
correctness of weird IR constructs rather than perf tests, and I think those are still correct.
Differential Revision: https://reviews.llvm.org/D37987
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313564
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 20:49:13 +0000 (20:49 +0000)]
[X86] Make sure we still emit zext for GR32 to GR64 when the source of the zext is AssertZext
The AssertZext we might see in this case is only giving information about the lower 32 bits. It isn't providing information about the upper 32 bits. So we should emit a zext.
This fixes PR28540.
Differential Revision: https://reviews.llvm.org/D37729
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313563
91177308-0d34-0410-b5e6-
96231b3b80d8
Kostya Serebryany [Mon, 18 Sep 2017 20:48:35 +0000 (20:48 +0000)]
[libFuzzer] one more trophy
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313562
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Mon, 18 Sep 2017 19:55:00 +0000 (19:55 +0000)]
llvm-dwarfdump: Sink the handling of ShowChildren into DWARFDie::dump(). NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313560
91177308-0d34-0410-b5e6-
96231b3b80d8
Alexey Bataev [Mon, 18 Sep 2017 19:33:30 +0000 (19:33 +0000)]
[SLP] Add a test for PR34635, NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313559
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 19:21:21 +0000 (19:21 +0000)]
[X86] Don't emit COPY_TO_REG to ABCD registers before EXTRACT_SUBREG of sub_8bit
This is similar to D37843, but for sub_8bit. This fixes all of the patterns except for the 2 that emit only an EXTRACT_SUBREG. That causes a verifier error with global isel because global isel doesn't know to issue the ABCD when doing this extract on 32-bits targets.
Differential Revision: https://reviews.llvm.org/D37890
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313558
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 19:21:19 +0000 (19:21 +0000)]
[X86] Don't emit COPY_TO_REG to ABCD registers before EXTRACT_SUBREG of sub_8bit_hi
I'm pretty sure that InstrEmitter::EmitSubregNode will take care of this itself by calling ConstrainForSubReg which in turn calls TRI->getSubClassWithSubReg.
I think Jakob Stoklund Olesen alluded to this in his commit message for r141207 which added the code to EmitSubregNode.
Differential Revision: https://reviews.llvm.org/D37843
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313557
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Mon, 18 Sep 2017 19:00:38 +0000 (19:00 +0000)]
[AArch64] Adjust the cost model for Exynos M1 and M2
Refine the model of FP loads and stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313555
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Mon, 18 Sep 2017 19:00:36 +0000 (19:00 +0000)]
[AArch64] Adjust the cost model for Exynos M1 and M2
Refine the model of loads and stores using the register offset addressing
modes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313554
91177308-0d34-0410-b5e6-
96231b3b80d8
Evandro Menezes [Mon, 18 Sep 2017 19:00:31 +0000 (19:00 +0000)]
[AArch64] Adjust the cost model for Exynos M1 and M2
Fix formatting in the predicate function AArch64InstrInfo::isExynosShiftLeftFast().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313553
91177308-0d34-0410-b5e6-
96231b3b80d8
Ahmed Bougacha [Mon, 18 Sep 2017 18:50:09 +0000 (18:50 +0000)]
[GlobalISel] Only build expensive remarks if they're enabled. NFC.
r313390 taught 'allowExtraAnalysis' to check whether remarks are
enabled at all. Use that to only do the expensive instruction printing
if they are.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313552
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 18 Sep 2017 18:07:50 +0000 (18:07 +0000)]
[x86] add tests for PR34217; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313548
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 18 Sep 2017 17:58:31 +0000 (17:58 +0000)]
[X86][AVX] Improve (i8 bitcast (v8i1 x)) handling for 256-bit vector compare results.
As commented on D37849, AVX1 targets were missing a chance to use vmovmskps for v8f32/v8i32 results for bool vector bitcasts
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313547
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 18 Sep 2017 17:33:47 +0000 (17:33 +0000)]
[x86] regenerate checks; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313545
91177308-0d34-0410-b5e6-
96231b3b80d8
Manoj Gupta [Mon, 18 Sep 2017 17:28:15 +0000 (17:28 +0000)]
[LoopVectorizer] Add more testcases for PR33804.
Summary:
Add test cases when float <-> pointer types conversion is triggered
in presence of load instructions.
Reviewers: Ayal, srhines, mkuper, rengolin
Reviewed By: rengolin
Subscribers: javed.absar, llvm-commits
Differential Revision: https://reviews.llvm.org/D37967
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313544
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 18 Sep 2017 16:45:05 +0000 (16:45 +0000)]
[SelectionDAG] Add BITCAST handling to ComputeNumSignBits for splatted sign bits.
For cases where we are BITCASTing to vectors of smaller elements, then if the entire source was a splatted sign (src's NumSignBits == SrcBitWidth) we can say that the dst's NumSignBit == DstBitWidth, as we're just splitting those sign bits across multiple elements.
We could generalize this but at the moment the only use case I have is to peek through bitcasts to vector comparison results.
Differential Revision: https://reviews.llvm.org/D37849
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313543
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 16:39:49 +0000 (16:39 +0000)]
[X86] Fix two more places to prefer VPERMQ/PD over VPERM2X128 when AVX2 is enabled
The shuffle combining and lowerVectorShuffleAsLanePermuteAndBlend were both still trying to use VPERM2XF128 for unary shuffles when AVX2 is enabled. VPERM2X128 takes two inputs meaning when we use it for a unary shuffle one of those inputs is left undefined creating a false dependency on whatever register gets allocated there.
If we have VPERMQ/PD we should prefer those since they only have a single input.
Differential Revision: https://reviews.llvm.org/D37947
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313542
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 18 Sep 2017 16:20:15 +0000 (16:20 +0000)]
[SLP] clean up for vector store case; NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313541
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Mon, 18 Sep 2017 14:46:14 +0000 (14:46 +0000)]
[AArch64] Add V8_2aOps feature to Cortex-A55 and 75
Add the missing hardware features the ProcA55 and ProcA75 feature.
These are already enabled via the target parser, but I had missed
them in the backend.
Differential Revision: https://reviews.llvm.org/D37974
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313535
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Bradbury [Mon, 18 Sep 2017 14:33:39 +0000 (14:33 +0000)]
Add myself to CREDITS.txt
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313534
91177308-0d34-0410-b5e6-
96231b3b80d8
Sam Parker [Mon, 18 Sep 2017 14:28:51 +0000 (14:28 +0000)]
[ARM] Implement isTruncateFree
Implement the isTruncateFree hooks, lifted from AArch64, that are
used by TargetTransformInfo. This allows simplifycfg to reduce the
test case into a single basic block.
Differential Revision: https://reviews.llvm.org/D37516
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313533
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 18 Sep 2017 14:23:23 +0000 (14:23 +0000)]
[X86][SSE] Improve support for vselect(Cond, 0, X) -> ANDN(Cond, X)
As discussed on PR28925 and D37849.
Differential Revision: https://reviews.llvm.org/D37975
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313532
91177308-0d34-0410-b5e6-
96231b3b80d8
Sjoerd Meijer [Mon, 18 Sep 2017 14:17:57 +0000 (14:17 +0000)]
[ARM] Fix for indexed dot product instruction descriptions
The indexed dot product instructions only accept the lower 16 D-registers as
the indexed register, but we were e.g. incorrectly accepting:
vudot.u8 d16,d16,d18[0]
Differential Revision: https://reviews.llvm.org/D37968
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313531
91177308-0d34-0410-b5e6-
96231b3b80d8
Jonas Devlieghere [Mon, 18 Sep 2017 14:15:57 +0000 (14:15 +0000)]
[dwarfdump] Make .eh_frame an alias for .debug_frame
This patch makes the `.eh_frame` extension an alias for `.debug_frame`.
Up till now it was only possible to dump the section using objdump, but
not with dwarfdump. Since the two are essentially interchangeable, we
dump whichever of the two is present.
As a workaround, this patch also adds parsing for 3 currently
unimplemented CFA instructions: `DW_CFA_def_cfa_expression`,
`DW_CFA_expression`, and `DW_CFA_val_expression`. Because I lack the
required knowledge, I just parse the fields without actually creating
the instructions.
Finally, this also fixes the typo in the `.debug_frame` section name
which incorrectly contained a trailing `s`.
Differential revision: https://reviews.llvm.org/D37852
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313530
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 18 Sep 2017 13:32:33 +0000 (13:32 +0000)]
[X86][SSE] Add vselect with zero tests (PR28925)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313529
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 18 Sep 2017 12:55:54 +0000 (12:55 +0000)]
[X86] combineVSelectWithAllOnesOrZeros - cleanup variable names. NFCI.
We were reusing the 'false' select value 'is zero' variable name for the 'true' select value 'is zero' variable name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313528
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikolai Bozhenov [Mon, 18 Sep 2017 10:17:59 +0000 (10:17 +0000)]
[X86FixupBWInsts] More precise register liveness if no <imp-use> on MOVs.
Summary:
Subregister liveness tracking is not implemented for X86 backend, so
sometimes the whole super register is said to be live, when only a
subregister is really live. That might happen if the def and the use
are located in different MBBs, see added fixup-bw-isnt.mir test.
However, using knowledge of the specific instructions handled by the
bw-fixup-pass we can get more precise liveness information which this
change does.
Reviewers: MatzeB, DavidKreitzer, ab, andrew.w.kaylor, craig.topper
Reviewed By: craig.topper
Subscribers: n.bozhenov, myatsina, llvm-commits, hiraditya
Patch by Andrei Elovikov <andrei.elovikov@intel.com>
Differential Revision: https://reviews.llvm.org/D37559
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313524
91177308-0d34-0410-b5e6-
96231b3b80d8
Mohammed Agabaria [Mon, 18 Sep 2017 06:49:54 +0000 (06:49 +0000)]
[X86][Codegen] adding masked gathers tests for avx2
related to patch: https://reviews.llvm.org/D35772
adding llvm gathers test before gathers codegen support.
Differential Revision: https://reviews.llvm.org/D37800
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313516
91177308-0d34-0410-b5e6-
96231b3b80d8
Dean Michael Berris [Mon, 18 Sep 2017 06:08:46 +0000 (06:08 +0000)]
[XRay][tools] Support tail-call exits before we write them in the runtime
Summary:
This change adds support for explicit tail-exit records to be written by
the XRay runtime. This lets us differentiate the tail exit
records/events in the log, and allows us to treat those exit events
especially in the future. For now we allow printing those out in YAML
(and reading them in).
Reviewers: kpw, pelikan
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D37964
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313514
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 05:50:54 +0000 (05:50 +0000)]
[X86] Strengthen some of the SD type constraints in X86InstrFragmentsSIMD.td
This effects the vector shift and rotates as well as some of the vector compares.
The changes to the shifts by immediates allows a few hundred bytes to be removed by removing type checks for the size of the immediate containing the shift/rotate amount.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313512
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 04:40:58 +0000 (04:40 +0000)]
[X86] Teach the execution domain fixing tables to use movlhps inplace of unpcklpd for the packed single domain.
MOVLHPS has a smaller encoding than UNPCKLPD in the legacy encodings. With VEX and EVEX encodings it doesn't matter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313509
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 03:29:54 +0000 (03:29 +0000)]
[X86] Teach execution domain fixing to convert between FP and int unpack instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313508
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 03:29:47 +0000 (03:29 +0000)]
[X86] Teach execution domain fixing to convert between VPERMILPS and VPSHUFD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313507
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 18 Sep 2017 00:20:53 +0000 (00:20 +0000)]
[X86] Remove the X86ISD::MOVLHPD. Lowering doesn't use it and it's not a real instruction.
It was used in patterns, but we had the exact same patterns with Unpckl as well. So now just use Unpckl in the instruction patterns.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313506
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 22:36:41 +0000 (22:36 +0000)]
[X86] Teach shuffle lowering to use MOVLHPS/MOVHLPS for lowering v4f32 unary shuffles with SSE1 only.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313504
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 22:36:39 +0000 (22:36 +0000)]
[X86] Add a couple more unary shuffles to the sse1 shuffle test.
These can be implemented with movlhps and movhlps.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313503
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 18:59:32 +0000 (18:59 +0000)]
[X86] Synchronize a pattern between SSE1 and AVX/AVX512.
For some reason the SSE1 pattern expected a X86Movlhps pattern to have a v4f32 type, but AVX and AVX512 expected it to have a v4i32 type.
I'm not even sure this pattern is even reachable post SSE1, but I'm starting with fixing this obvious bug.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313495
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 18:59:30 +0000 (18:59 +0000)]
[X86] Colocate all of the X86VBroadcast patterns for v2i64 and v2f64. NFC
The memory patterns were near the MOVDDUP definition, but the non-memory patterns were near the broadcast instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313494
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 18:59:28 +0000 (18:59 +0000)]
[X86] Remove patterns for X86Movddup with v4i64 type. Lowering doesn't emit these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313493
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 18:59:26 +0000 (18:59 +0000)]
[X86] Remove isel patterns for X86Movhlps and X86Movlhps with integer types. Lowering doesn't emit these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313492
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 18:59:24 +0000 (18:59 +0000)]
[X86] Remove isel patterns for movlpd/movlps with integer types. Lowering doesn't emit these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313491
91177308-0d34-0410-b5e6-
96231b3b80d8
Jatin Bhateja [Sun, 17 Sep 2017 18:16:26 +0000 (18:16 +0000)]
Adding test cases for PR34629 & PR34634.
Differential Revision: https://reviews.llvm.org/D37962
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313490
91177308-0d34-0410-b5e6-
96231b3b80d8
Johan Engelen [Sun, 17 Sep 2017 18:11:26 +0000 (18:11 +0000)]
Revert "[ThinLTO] Avoid archive member collisions with old API"
This reverts commit r313488, because it breaks compilation on Android and breaks llvm-lto.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313489
91177308-0d34-0410-b5e6-
96231b3b80d8
Johan Engelen [Sun, 17 Sep 2017 17:38:26 +0000 (17:38 +0000)]
[ThinLTO] Avoid archive member collisions with old API
Summary:
ld64 on OSX uses the old ThinLTOCodegenerator API. When two modules have the same name in an archive (valid archive), a name collision happens for the modules' buffer identifiers.
This PR resolves this, by suffixing the module name with an increasing number such that the identifiers are guaranteed to be unique.
For a similar fix in LLD, see https://reviews.llvm.org/D25495
Reviewers: mehdi_amini, tejohnson
Reviewed By: mehdi_amini
Subscribers: inglorion, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D37961
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313488
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Bradbury [Sun, 17 Sep 2017 14:36:28 +0000 (14:36 +0000)]
[RISCV] Add support for disassembly
This Disassembly support allows for 'round-trip' testing, and rv32i-valid.s
has been updated appropriately.
Differential Revision: https://reviews.llvm.org/D23567
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313486
91177308-0d34-0410-b5e6-
96231b3b80d8
Alex Bradbury [Sun, 17 Sep 2017 14:27:35 +0000 (14:27 +0000)]
[RISCV] Add support for all RV32I instructions
This patch supports all RV32I instructions as described in the RISC-V manual.
A future patch will add support for pseudoinstructions and other instruction
expansions (e.g. 0-arg fence -> fence iorw, iorw).
Differential Revision: https://reviews.llvm.org/D23566
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313485
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 17 Sep 2017 14:02:19 +0000 (14:02 +0000)]
[GlobalISel][X86] refactoring X86InstructionSelector.cpp .NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313484
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 17 Sep 2017 11:34:17 +0000 (11:34 +0000)]
[GlobalISel][X86] Legalize i1 G_ADD/G_SUB/G_MUL/G_XOR/G_OR/G_AND instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313483
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 17 Sep 2017 11:19:53 +0000 (11:19 +0000)]
Remove uses of deprecated std::not1.
Lambdas are slightly more verbose, but also more readable. No
functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313482
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 17 Sep 2017 11:12:57 +0000 (11:12 +0000)]
Remove uses of deprecated std::pointer_to_unary_function.
It's removed in C++17. No functionality change intended.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313481
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 17 Sep 2017 08:30:42 +0000 (08:30 +0000)]
[GlobalISel][X86] Use correct physical register in mir tests.NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313479
91177308-0d34-0410-b5e6-
96231b3b80d8
Igor Breger [Sun, 17 Sep 2017 08:08:13 +0000 (08:08 +0000)]
[GlobalISel][X86] G_FCONSTANT support.
Summary: G_FCONSTANT support, port the implementation from X86FastIsel.
Reviewers: zvi, delena, guyblank
Reviewed By: delena
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D37734
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313478
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 06:09:32 +0000 (06:09 +0000)]
[X86] Remove integer X86ISD::SHUFP patterns. Lowering doesn't emit these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313477
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 05:06:05 +0000 (05:06 +0000)]
[X86] Add patterns to make blends with immediate control commutable during isel for load folding.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313476
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 17 Sep 2017 05:06:03 +0000 (05:06 +0000)]
[X86] Remove some unused defaults from some multiclass parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313475
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sun, 17 Sep 2017 03:25:03 +0000 (03:25 +0000)]
[ORC] Hook up the LLVMOrcAddObjectFile function in the Orc C Bindings.
This can be used to add a relocatable object to the JIT session.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313474
91177308-0d34-0410-b5e6-
96231b3b80d8
Don Hinton [Sun, 17 Sep 2017 00:24:43 +0000 (00:24 +0000)]
[ORC][Kaleidoscope] Update ORCJit tutorial.
Summary: Fix a few typos and update names to match current source.
Differential Revision: https://reviews.llvm.org/D37948
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313473
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 23:18:50 +0000 (23:18 +0000)]
[X86] Make PLCMULQDQ instructions commutable during isel to fold loads.
This adds new patterns and SDNodeXForm to enable the immediate to commuted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313472
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 23:18:48 +0000 (23:18 +0000)]
[X86] Add NoAVX predicates to the patterns for the legacy encoded PCLMUL and AES instructions.
Previously we were just relying on pattern order to define precedence. Which works, but isn't the best way.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313471
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 16 Sep 2017 19:20:53 +0000 (19:20 +0000)]
Try to fix some failing bots.
It doesn't make sense to me why these bots are failing as the
traceback does not agree with the source code. It's possible
something is stale or there is some other mysterious error,
but in any case hopefully this fixes it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313469
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 16 Sep 2017 19:01:04 +0000 (19:01 +0000)]
[llvm-symbolizer] Fix coff-dwarf.test
This was a bug in the test that was only exposed as a result of
refactoring some code in lit configuration files. Previously,
llvm's lit configuration would only set the target-windows feature
if the system was also windows. Since cross-compilation is
a thing, this isn't correct. target-windows should be set
independently of system-windows.
Adding to that bug, this particular test then checked for
target-windows when it really meant "can I call a certain API on
the host machine", which is what system-windows is for.
Ultimately, this test only works if *both* the target and host
are Windows, so I've updated the test to reflect that.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313468
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 16 Sep 2017 18:46:21 +0000 (18:46 +0000)]
Resubmit "Add a shared llvm.lit module that all test suites can use."
There were some issues surrounding Py2 / Py3 compatibility, but
I've now tested with both Py2 and Py3 and everything seems to
work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313467
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 16 Sep 2017 18:45:44 +0000 (18:45 +0000)]
[lit] Fix some Python 3 compatibility issues.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313466
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 17:51:55 +0000 (17:51 +0000)]
[X86] Remove some extra code that snuck into r313450.
The same code appears earlier in the function. This represents an earlier version of what became r313373 that I still had sitting in my local repo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313465
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Sat, 16 Sep 2017 17:28:00 +0000 (17:28 +0000)]
llvm-dwarfdump: support a --show-children option
This will print all children of a DIE when selectively printing only
one DIE at a given offset.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313464
91177308-0d34-0410-b5e6-
96231b3b80d8
Adrian Prantl [Sat, 16 Sep 2017 16:58:18 +0000 (16:58 +0000)]
llvm-dwarfdump: Add support for -debug-types=<offset>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313463
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 16 Sep 2017 15:48:30 +0000 (15:48 +0000)]
[lit] Fix the lit unit tests.
A few tests were manually constructing a LitConfig object, since
I added a new argument to it this was triggering some failures
I didn't detect. `ninja check-lit` passes now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313461
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Sat, 16 Sep 2017 15:31:34 +0000 (15:31 +0000)]
[lit] Add a single process mode.
This is helpful for debugging test failures since it removes
the multiprocessing pool from the picture. This will obviously
slow down the test suite by a few orders of magnitude, so it
should only be used for debugging specific failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313460
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Sat, 16 Sep 2017 14:29:51 +0000 (14:29 +0000)]
[llvm-readobj] - Teach tool to report error if some section is in multiple COMDAT groups at once.
readelf tool reports an error when output contains the same section
in multiple COMDAT groups. That can be useful.
Path teaches llvm-readobj to do the same.
Differential revision: https://reviews.llvm.org/D37567
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313459
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sat, 16 Sep 2017 13:29:12 +0000 (13:29 +0000)]
[x86] enable storeOfVectorConstantIsCheap() target hook
This allows vector-sized store merging of constants in DAGCombiner using the existing code in MergeConsecutiveStores().
All of the twisted logic that decides exactly what vector operations are legal and fast for each particular CPU are
handled separately in there using the appropriate hooks.
For the motivating tests in merge-store-constants.ll, we already produce the same vector code in IR via the SLP vectorizer.
So this is just providing a backend backstop for code that doesn't go through that pass (-O1). More details in PR24449:
https://bugs.llvm.org/show_bug.cgi?id=24449 (this change should be the last step to resolve that bug)
Differential Revision: https://reviews.llvm.org/D37451
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313458
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 16 Sep 2017 12:13:03 +0000 (12:13 +0000)]
Reformat.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313457
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sat, 16 Sep 2017 12:13:00 +0000 (12:13 +0000)]
llvm/IR/DiagnosticHandler.h: Add include guard, or -fmodules would be confused.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313456
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 09:16:48 +0000 (09:16 +0000)]
[X86] Add isel patterns to be able to fold loads into VPERM2F128 even when the load is on the first input to the SDNode.
We just need to toggle bits 1 and 5 of the immediate and swap the sources. The peephole pass could trigger commuting/folding for this later, but its easy enough to fix in isel.
Disable the peephole pass on the main vperm2x128 test so we know we're doing this through isel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313455
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 09:16:46 +0000 (09:16 +0000)]
[X86] Remove unused check lines that got left behind when I moved tests to the instrinsic upgrade file and regenerated.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313454
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 08:15:52 +0000 (08:15 +0000)]
[X86] Remove VPERM2X128 isel patterns with 32-bit elements.
Now that the intrinsics are gone we only need 64-bit elements since that's what shuffle lowering uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313453
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 07:51:01 +0000 (07:51 +0000)]
[X86] Remove the vperm2f128 test file I just added in r313450.
I missed the we already had a pretty thorough test file for these instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313451
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 07:36:14 +0000 (07:36 +0000)]
[X86] Remove VPERM2F128/VPERM2I128 intrinsics and autoupgrade to native shuffles.
I've moved the test cases from the InstCombine optimizations to the backend to keep the coverage we had there. It covered every possible immediate so I've preserved the resulting shuffle mask for each of those immediates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313450
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 07:13:39 +0000 (07:13 +0000)]
[X86] Fix some FileCheck lines that use the wrong prefix.
Assume they were moved during autoupgrading and not changed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313448
91177308-0d34-0410-b5e6-
96231b3b80d8
Chandler Carruth [Sat, 16 Sep 2017 02:13:35 +0000 (02:13 +0000)]
[git] Update the llvm git helper script to work correctly with the
latest Python versions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313435
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 16 Sep 2017 02:11:21 +0000 (02:11 +0000)]
[X86] Don't set reserved bits in the immediate in the test cases for vperm2f128.
I'm going to autoupgrade these intrinsics in a future commit. This bit will never be set in the resulting output so pre-removing the bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@313434
91177308-0d34-0410-b5e6-
96231b3b80d8