OSDN Git Service
Simon Pilgrim [Mon, 8 Apr 2019 13:17:51 +0000 (13:17 +0000)]
[InstCombine][X86] Expand MOVMSK to generic IR (PR39927)
First step towards removing the MOVMSK intrinsics completely - this patch expands MOVMSK to the pattern:
e.g. PMOVMSKB(v16i8 x):
%cmp = icmp slt <16 x i8> %x, zeroinitializer
%int = bitcast <16 x i8> %cmp to i16
%res = zext i16 %int to i32
Which is correctly handled by ISel and FastIsel (give or take an annoying movzx move....): https://godbolt.org/z/rkrSFW
Differential Revision: https://reviews.llvm.org/D60256
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357909
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 8 Apr 2019 12:43:46 +0000 (12:43 +0000)]
gn build: Merge r357905
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357907
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 8 Apr 2019 12:42:37 +0000 (12:42 +0000)]
gn-build: Re-run `git ls-files '*.gn' '*.gni' | xargs llvm/utils/gn/gn.py format`
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357906
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Leviant [Mon, 8 Apr 2019 12:31:12 +0000 (12:31 +0000)]
Attempt to recommit r357901
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357905
91177308-0d34-0410-b5e6-
96231b3b80d8
Chen Zheng [Mon, 8 Apr 2019 12:08:03 +0000 (12:08 +0000)]
[InstCombine] sdiv exact flag fixup.
Differential Revision: https://reviews.llvm.org/D60396
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357904
91177308-0d34-0410-b5e6-
96231b3b80d8
Xing GUO [Mon, 8 Apr 2019 11:48:36 +0000 (11:48 +0000)]
[llvm-readobj] Use `reinterpret_cast` instead of C-style casting. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357903
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Leviant [Mon, 8 Apr 2019 11:37:20 +0000 (11:37 +0000)]
Reverting r357901 as fails to build on some of the buildbots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357902
91177308-0d34-0410-b5e6-
96231b3b80d8
Eugene Leviant [Mon, 8 Apr 2019 11:25:48 +0000 (11:25 +0000)]
[Support] Add zlib independent CRC32
Differential revision: https://reviews.llvm.org/D59816
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357901
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Mon, 8 Apr 2019 10:50:31 +0000 (10:50 +0000)]
[llvm-exegesis] benchmarkMain(): less cryptic error if built w/o libpfm
Wanted to check if inablility to measure latency of CMOV32rm
is a regression from D60041 / D60138, but unable to do that
because the llvm-exegesis-{8,9} from debian sid fails
with that cryptic, unhelpful error.
I suspect this will be a better error.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357900
91177308-0d34-0410-b5e6-
96231b3b80d8
Justin Bogner [Mon, 8 Apr 2019 10:19:17 +0000 (10:19 +0000)]
[CMake] Replace LLVM_ENABLE_CXX1Y and friends with LLVM_CXX_STD
Simplify building with particular C++ standards by replacing the
specific "enable standard X" flags with a flag that allows specifying
the standard you want directly.
We preserve compatibility with the existing flags so that anyone with
those flags in existing caches won't break mysteriously.
Differential Revision: https://reviews.llvm.org/D60399
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357899
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Mon, 8 Apr 2019 10:11:00 +0000 (10:11 +0000)]
[llvm-exegesis][X86] Randomize CMOVcc/SETcc OPERAND_COND_CODE CondCodes
Reviewers: courbet, gchatelet
Reviewed By: gchatelet
Subscribers: tschuett, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60066
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357898
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Mon, 8 Apr 2019 09:57:29 +0000 (09:57 +0000)]
Object/Minidump: Add support for reading the ModuleList stream
Summary:
The ModuleList stream consists of an integer giving the number of
entries in the list, followed by the list itself. Each entry in the list
describes a module (dynamically loaded objects which were loaded in the
process when it crashed (or when the minidump was generated).
The code for reading the list is relatively straight-forward, with a
single gotcha. Some minidump writers are emitting padding after the
"count" field in order to align the subsequent list on 8 byte boundary
(this depends on how their ModuleList type was defined and the native
alignment of various types on their platform). Fortunately, the minidump
format contains enough redundancy (in the form of the stream length
field in the stream directory), which allows us to detect this situation
and correct it.
This patch just adds the ability to parse the stream. Code for
conversion to/from yaml will come in a follow-up patch.
Reviewers: zturner, amccarth, jhenderson, clayborg
Subscribers: jdoerfert, markmentovai, lldb-commits, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60121
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357897
91177308-0d34-0410-b5e6-
96231b3b80d8
Chen Zheng [Mon, 8 Apr 2019 09:19:42 +0000 (09:19 +0000)]
[InstCombine] add more testcases for sdiv exact flag fixup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357894
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 8 Apr 2019 07:39:17 +0000 (07:39 +0000)]
[X86] Make LowerOperationWrapper more robust. Remove now unnecessary ReplaceAllUsesWith from LowerMSCATTER.
Previously LowerOperationWrapper took the number of results from the original
node and counted that many results from the new node. This was intended to drop
chain operands from FP_TO_SINT lowering that uses X87 with memory operations to
stack temporaries. The final load had an extra chain output that needs to be
ignored.
Unfortunately, it didn't work with scatter which has 2 result operands, the
mask output which is discarded and a chain output. The chain output is the one
that is needed but it comes second and it would be dropped by the previous
logic here. To workaround this we were doing a ReplaceAllUses in the lowering
code so that the generic legalization code wouldn't see any uses to replace
since it had been given the wrong result/type.
After this change we take the LowerOperation result directly if the original
node has one result. This allows us to directly return the chain from scatter
or the load data from the FP_TO_SINT case. When the original node has multiple
results we'll ensure the returned node has the same number and copy them over.
For cases where the original node has multiple results and the new code for some
reason has even more results, MERGE_VALUES can be used to pass only the needed
results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357887
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Mon, 8 Apr 2019 07:29:24 +0000 (07:29 +0000)]
[ConstantRange] Delete redundnt {z,s}extOrSelf for multiplication
These calls are redundant because the quotients have the same BitWidth
as MinValue/MaxValue.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357886
91177308-0d34-0410-b5e6-
96231b3b80d8
Chen Zheng [Mon, 8 Apr 2019 05:49:15 +0000 (05:49 +0000)]
[InstCombine] add testcases for sdiv exact flag fixing - NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357884
91177308-0d34-0410-b5e6-
96231b3b80d8
Chen Zheng [Mon, 8 Apr 2019 03:07:32 +0000 (03:07 +0000)]
[InstCombine]add testcase for sdiv canonicalizetion - NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357883
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 8 Apr 2019 01:54:27 +0000 (01:54 +0000)]
[X86] Split floating point tests out of atomic-mi.ll into atomic-fp.ll. Add avx and avx512f command lines. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357882
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 8 Apr 2019 01:54:24 +0000 (01:54 +0000)]
[X86] Add avx and avx512f command lines to atomic-non-integer.ll. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357881
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Mon, 8 Apr 2019 01:22:38 +0000 (01:22 +0000)]
[llvm-objdump] Fix MC/ARM/arm-macho-calls.s
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357880
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikita Popov [Sun, 7 Apr 2019 20:20:24 +0000 (20:20 +0000)]
[ConstantRange] Add signed/unsigned unionWith()
This extends D59959 to unionWith(), allowing to specify that a
non-wrapping unsigned/signed range is preferred. This is somewhat
less useful than the intersect case, because union operations are
rarer. An example use would the the phi union computed in SCEV.
The implementation is mostly a straightforward use of getPreferredRange(),
but I also had to adjust some <=/< checks to make sure that no ranges with
lower==upper get constructed before they're passed to getPreferredRange(),
as these have additional constraints.
Differential Revision: https://reviews.llvm.org/D60377
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357876
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 7 Apr 2019 19:19:44 +0000 (19:19 +0000)]
[X86] Use (SUBREG_TO_REG (MOV32rm)) for extloadi64i8/extloadi64i16 when the load is 4 byte aligned or better and not volatile.
Summary:
Previously we would use MOVZXrm8/MOVZXrm16, but those are longer encodings.
This is similar to what we do in the loadi32 predicate.
Reviewers: RKSimon, spatel
Reviewed By: RKSimon
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60341
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357875
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikita Popov [Sun, 7 Apr 2019 18:55:45 +0000 (18:55 +0000)]
[ConstantRangeTest] Generalize intersection testing code; NFC
Extract the exhaustive intersection tests into a separate function,
so that it may be reused for unions as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357874
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikita Popov [Sun, 7 Apr 2019 18:44:36 +0000 (18:44 +0000)]
[ConstantRange] Add unsigned and signed intersection types
The intersection of two ConstantRanges may consist of two disjoint
ranges. As we can only return one range as the result, we need to
return one of the two possible ranges that cover both. Currently the
result is picked based on set size. However, this is not always
optimal: If we're in an unsigned context, we'd prefer to get a large
unsigned range over a small signed range -- the latter effectively
becomes a full set in the unsigned domain.
This revision adds a PreferredRangeType, which can be either Smallest,
Unsigned or Signed. Smallest is the current behavior and Unsigned and
Signed are new variants that prefer not to wrap the unsigned/signed
domain. The new type isn't used anywhere yet (but SCEV will be a good
first user, see D60035).
I've also added some comments to illustrate the various cases in
intersectWith(), which should hopefully make it more obvious what is
going on.
Differential Revision: https://reviews.llvm.org/D59959
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357873
91177308-0d34-0410-b5e6-
96231b3b80d8
Robert Widmann [Sun, 7 Apr 2019 18:18:42 +0000 (18:18 +0000)]
[LLVM-C] Allow Access to the Type of a Binary
Summary: Add an accessor for the type of a binary file.
Reviewers: whitequark, deadalnix
Reviewed By: whitequark
Subscribers: hiraditya, aheejin, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60366
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357872
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikita Popov [Sun, 7 Apr 2019 17:52:40 +0000 (17:52 +0000)]
[ConstantRange] Add isAllNegative() and isAllNonNegative() methods
Add isAllNegative() and isAllNonNegative() methods to ConstantRange,
which determine whether all values in the constant range are
negative/non-negative.
This is useful for replacing KnownBits isNegative() and isNonNegative()
calls when changing code to use constant ranges.
Differential Revision: https://reviews.llvm.org/D60264
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357871
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikita Popov [Sun, 7 Apr 2019 17:22:16 +0000 (17:22 +0000)]
Reapply [ValueTracking] Support min/max selects in computeConstantRange()
Add support for min/max flavor selects in computeConstantRange(),
which allows us to fold comparisons of a min/max against a constant
in InstSimplify. This fixes an infinite InstCombine loop, with the
test case taken from D59378.
Relative to the previous iteration, this contains some adjustments for
AMDGPU med3 tests: The AMDGPU target runs InstSimplify prior to codegen,
which ends up constant folding some existing med3 tests after this
change. To preserve these tests a hidden -amdgpu-scalar-ir-passes option
is added, which allows disabling scalar IR passes (that use InstSimplify)
for testing purposes.
Differential Revision: https://reviews.llvm.org/D59506
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357870
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 16:33:24 +0000 (16:33 +0000)]
[llvm-objdump] Split disassembleObject and simplify --{start,stop}-address handling
The main disassembly loop is hard to read due to special handling of ARM
ELF data & ELF data. Split off the logic into two functions
dumpARMELFData and dumpELFData. Hoist some checks outside of the loop.
--start-address --stop-address have redundant checks and minor off-by-1
issues. Fix them.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357869
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 7 Apr 2019 14:34:24 +0000 (14:34 +0000)]
last changes for now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357868
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 7 Apr 2019 14:23:11 +0000 (14:23 +0000)]
various improvements in wording, also unbreak the bot
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357867
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 13:56:14 +0000 (13:56 +0000)]
[DWARF] DWARFDebugLine: delete unused parameter `Offset`
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357866
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 7 Apr 2019 13:42:29 +0000 (13:42 +0000)]
make a bunch of cleanups in wording and tone
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357865
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Apr 2019 13:26:09 +0000 (13:26 +0000)]
[CostModel][X86] Masked load legalization requires an binary-shuffle not a select (PR39812)
Expansion/truncation is better described by SK_PermuteTwoSrc than SK_Select
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357864
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 7 Apr 2019 13:17:16 +0000 (13:17 +0000)]
remove some unhelpful language from the tutorial
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357863
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sun, 7 Apr 2019 13:14:23 +0000 (13:14 +0000)]
Copy the C++ kaleidoscope tutorial into a subdirectory and clean up various things, aligning with the direction of the WiCT workshop, and Meike Baumgärtner's view of how this should work. The old version of the documentation is unmodified, this is an experiment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357862
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Apr 2019 11:49:33 +0000 (11:49 +0000)]
[DAG] Pull out ComputeNumSignBits call to make debugging easier. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357861
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 7 Apr 2019 10:40:01 +0000 (10:40 +0000)]
[X86][SSE] SimplifyDemandedBitsForTargetNode - Add initial PACKSS support
In the case where we only want the sign bit (e.g. when using PACKSS truncation of comparison results for MOVMSK) then we can just demand the sign bit of the source operands.
This makes use of the fact that PACKSS saturates out of range values to the min/max int values - so the sign bit is always preserved.
Differential Revision: https://reviews.llvm.org/D60333
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357859
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 10:16:46 +0000 (10:16 +0000)]
[llvm-objdump] Fix split of source lines; don't ltrim source lines
If the file does not end with a newline, it may be dropped. Fix the
splitting algorithm.
Also delete an unnecessary SourceCache lookup.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357858
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 08:29:04 +0000 (08:29 +0000)]
[llvm-objdump] Simplify some ELF typename: ELFFile<ELFT>::Elf_xxx -> ELFT::xxx
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357857
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 08:28:56 +0000 (08:28 +0000)]
.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357856
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 08:19:55 +0000 (08:19 +0000)]
[llvm-objdump] Simplify Expected<T> handling with unwrapOrError
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357855
91177308-0d34-0410-b5e6-
96231b3b80d8
Marcello Maggioni [Sun, 7 Apr 2019 06:12:44 +0000 (06:12 +0000)]
[ConstantRange] Shl considers full-set shifting to last bit position.
if we do SHL of two 16-bit ranges like [0, 30000) with [1,2) we get
"full-set" instead of what I would have expected [0, 60000) which is
still in the 16-bit unsigned range.
This patch changes the SHL algorithm to allow getting a usable range
even in this case.
Differential Revision: https://reviews.llvm.org/D57983
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357854
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 05:32:16 +0000 (05:32 +0000)]
[llvm-objdump] Simplify disassembleObject
* Use std::binary_search to replace some std::lower_bound
* Use llvm::upper_bound to replace some std::upper_bound
* Use format_hex and support::endian::read{16,32}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357853
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sun, 7 Apr 2019 03:58:42 +0000 (03:58 +0000)]
Change some StringRef::data() reinterpret_cast to bytes_begin() or arrayRefFromStringRef()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357852
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Sat, 6 Apr 2019 23:05:56 +0000 (23:05 +0000)]
[gn] Support for per-target runtime directory layout
This change also introduces the clang_enable_per_target_runtime_dir
to enable the use of per-target runtime directory layout which is the
equivalent of LLVM_ENABLE_PER_TARGET_RUNTIME_DIR CMake option.
Differential Revision: https://reviews.llvm.org/D60332
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357850
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 6 Apr 2019 22:05:24 +0000 (22:05 +0000)]
[NFC] Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357849
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Apr 2019 19:00:11 +0000 (19:00 +0000)]
[X86] When converting (x << C1) AND C2 to (x AND (C2>>C1)) << C1 during isel, try using andl over andq by favoring 32-bit unsigned immediates.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357848
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 18:54:17 +0000 (18:54 +0000)]
[X86] combineBitcastvxi1 - provide dst VT and src SDValue directly. NFCI.
Prep work to make it easier to reuse the BITCAST->MOVSMK combine in other cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357847
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Apr 2019 18:00:50 +0000 (18:00 +0000)]
[X86] Use a signed mask in foldMaskedShiftToScaledMask to enable a shorter immediate encoding.
This function reorders AND and SHL to enable the SHL to fold into an LEA. The
upper bits of the AND will be shifted out by the SHL so it doesn't matter what
mask value we use for these bits. By using sign bits from the original mask in
these upper bits we might enable a shorter immediate encoding to be used.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357846
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Apr 2019 18:00:45 +0000 (18:00 +0000)]
[X86] Add test cases to show missed opportunities to use a sign extended 8 or 32 bit immediate AND when reversing SHL+AND to form an LEA.
When we shift the AND mask over we should shift in sign bits instead of zero bits. The scale in the LEA will shift these bits out so it doesn't matter whether we mask the bits off or not. Using sign bits will potentially allow a sign extended immediate to be used.
Also add some other test cases for cases that are currently optimal.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357845
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 6 Apr 2019 18:00:41 +0000 (18:00 +0000)]
[X86] Autogenerate complete checks. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357844
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 15:38:34 +0000 (15:38 +0000)]
Fix spelling mistake. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357843
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 14:40:52 +0000 (14:40 +0000)]
[X86] Add AVX-target expandload and compressstore tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357842
91177308-0d34-0410-b5e6-
96231b3b80d8
Roman Lebedev [Sat, 6 Apr 2019 14:16:26 +0000 (14:16 +0000)]
[llvm-exegesis][X86] Handle CMOVcc/SETcc OPERAND_COND_CODE OperandType
Summary:
D60041 / D60138 refactoring changed how CMOV/SETcc opcodes
are handled. concode is now an immediate, with it's own operand type.
This at least allows to not crash on the opcode.
However, this still won't generate all the snippets
with all the condcode enumerators. D60066 does that.
Reviewers: courbet, gchatelet
Reviewed By: gchatelet
Subscribers: tschuett, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60057
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357841
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 14:14:54 +0000 (14:14 +0000)]
[X86] Split expandload and compressstore tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357840
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 14:01:37 +0000 (14:01 +0000)]
[X86][SSE] Add more exhaustive masked load/store tests
Reordered/renamed some existing tests to match the cleaned up order
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357839
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 6 Apr 2019 12:08:37 +0000 (12:08 +0000)]
[CostModel][X86] Add more exhaustive masked load/store/gather/scatter/expand/compress cost tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357838
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Sat, 6 Apr 2019 09:20:48 +0000 (09:20 +0000)]
[AMDGPU] Sort out and rename multiple CI/VI predicates
Differential Revision: https://reviews.llvm.org/D60346
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357835
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 6 Apr 2019 09:12:53 +0000 (09:12 +0000)]
[DWARF] Simplify DWARFDebugAranges::findAddress
The current lower_bound approach has to check two iterators pos and pos-1.
Changing it to upper_bound allows us to check one iterator (similar to
DWARFUnitVector::getUnitFor*).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357834
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 6 Apr 2019 02:18:56 +0000 (02:18 +0000)]
[Symbolize] Uniquify sorted vector<pair<SymbolDesc, StringRef>>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357833
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 5 Apr 2019 23:57:10 +0000 (23:57 +0000)]
gn build: Pacify `gn format`
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357830
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 22:09:30 +0000 (22:09 +0000)]
[PDB Docs] Add documentation for the hash table format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357826
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 22:09:14 +0000 (22:09 +0000)]
[PDB Docs] The IPI Stream actually has index 4.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357825
91177308-0d34-0410-b5e6-
96231b3b80d8
Robert Widmann [Fri, 5 Apr 2019 21:36:50 +0000 (21:36 +0000)]
[LLVM-C] Begin to Expose A More General Binary Interface
Summary:
Provides a new type, `LLVMBinaryRef`, and a binding to `llvm::object::createBinary` for more general interoperation with binary files than `LLVMObjectFileRef`. It also provides the proper non-consuming API for input buffers and populates an out parameter for error handling if necessary - two things the previous API did not do.
In a follow-up, I'll define section and symbol iterators and begin to build upon the existing test infrastructure.
This patch is a first step towards deprecating that API and replacing it with something more robust.
Reviewers: deadalnix, whitequark
Reviewed By: whitequark
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60322
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357822
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Fri, 5 Apr 2019 21:30:40 +0000 (21:30 +0000)]
[gn] Support for building compiler-rt builtins
This is support for building compiler-rt builtins, The library build
should be complete for a subset of supported platforms, but not all
CMake options have been replicated in GN.
We always use the just built compiler to build all the runtimes, which
is equivalent to the CMake runtimes build. This simplifies the build
configuration because we don't need to support arbitrary host compiler
and can always assume the latest Clang. With GN's toolchain support,
this is significantly more efficient than the CMake runtimes build.
Differential Revision: https://reviews.llvm.org/D60331
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357821
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 5 Apr 2019 21:22:17 +0000 (21:22 +0000)]
[globalisel] Allow combiners to query legality
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357820
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 21:16:00 +0000 (21:16 +0000)]
[PDB Docs] Delete * LINKER * Stream information.
This is actually just a module debug info stream, so it should
technically be covered by a discussion of the module list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357819
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 20:54:35 +0000 (20:54 +0000)]
[InstCombine] add more tests for fmul+fdiv+sqrt; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357816
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Fri, 5 Apr 2019 20:47:13 +0000 (20:47 +0000)]
[globalisel] Support 3-type legalForCartesianProduct()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357815
91177308-0d34-0410-b5e6-
96231b3b80d8
Robert Widmann [Fri, 5 Apr 2019 20:32:43 +0000 (20:32 +0000)]
[LLVM-C] Add bindings to insert basic blocks
Summary:
Now that we can create standalone basic blocks, it's useful to be able to append them. Add bindings to
- Insert a basic block after the current insertion block
- Append a basic block to the end of a function's list of basic blocks
Reviewers: whitequark, deadalnix, harlanhaskins
Reviewed By: whitequark, harlanhaskins
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D59658
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357812
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Fri, 5 Apr 2019 20:18:25 +0000 (20:18 +0000)]
[X86] Enable tail calls for CallingConv::Swift
It's currently only enabled on AArch64 (enabled in r281376).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357809
91177308-0d34-0410-b5e6-
96231b3b80d8
Francis Visoiu Mistrih [Fri, 5 Apr 2019 20:18:21 +0000 (20:18 +0000)]
[X86] Preserve operand flag when expanding TCRETURNri
The expansion of TCRETURNri(64) would not keep operand flags like
undef/renamable/etc. which can result in machine verifier issues.
Also add plumbing to be able to use `-run-pass=x86-pseudo`.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357808
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Fri, 5 Apr 2019 20:11:32 +0000 (20:11 +0000)]
[AMDGPU] Add MachineDCE pass after RenameIndependentSubregs
Detect dead lanes can create some dead defs. Then RenameIndependentSubregs
will break a REG_SEQUENCE which may use these dead defs. At this point
a dead instruction can be removed but we do not run a DCE anymore.
MachineDCE was only running before live variable analysis. The patch
adds a mean to preserve LiveIntervals and SlotIndexes in case it works
past this.
Differential Revision: https://reviews.llvm.org/D59626
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357805
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 5 Apr 2019 19:28:09 +0000 (19:28 +0000)]
[X86] Merge the different Jcc instructions for each condition code into single instructions that store the condition code as an operand.
Summary:
This avoids needing an isel pattern for each condition code. And it removes translation switches for converting between Jcc instructions and condition codes.
Now the printer, encoder and disassembler take care of converting the immediate. We use InstAliases to handle the assembly matching. But we print using the asm string in the instruction definition. The instruction itself is marked IsCodeGenOnly=1 to hide it from the assembly parser.
Reviewers: spatel, lebedev.ri, courbet, gchatelet, RKSimon
Reviewed By: RKSimon
Subscribers: MatzeB, qcolombet, eraman, hiraditya, arphaman, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60228
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357802
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 5 Apr 2019 19:27:49 +0000 (19:27 +0000)]
[X86] Merge the different SETcc instructions for each condition code into single instructions that store the condition code as an operand.
Summary:
This avoids needing an isel pattern for each condition code. And it removes translation switches for converting between SETcc instructions and condition codes.
Now the printer, encoder and disassembler take care of converting the immediate. We use InstAliases to handle the assembly matching. But we print using the asm string in the instruction definition. The instruction itself is marked IsCodeGenOnly=1 to hide it from the assembly parser.
Reviewers: andreadb, courbet, RKSimon, spatel, lebedev.ri
Reviewed By: andreadb
Subscribers: hiraditya, lebedev.ri, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60138
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357801
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 5 Apr 2019 19:27:41 +0000 (19:27 +0000)]
[X86] Merge the different CMOV instructions for each condition code into single instructions that store the condition code as an immediate.
Summary:
Reorder the condition code enum to match their encodings. Move it to MC layer so it can be used by the scheduler models.
This avoids needing an isel pattern for each condition code. And it removes
translation switches for converting between CMOV instructions and condition
codes.
Now the printer, encoder and disassembler take care of converting the immediate.
We use InstAliases to handle the assembly matching. But we print using the
asm string in the instruction definition. The instruction itself is marked
IsCodeGenOnly=1 to hide it from the assembly parser.
This does complicate the scheduler models a little since we can't assign the
A and BE instructions to a separate class now.
I plan to make similar changes for SETcc and Jcc.
Reviewers: RKSimon, spatel, lebedev.ri, andreadb, courbet
Reviewed By: RKSimon
Subscribers: gchatelet, hiraditya, kristina, lebedev.ri, jdoerfert, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60041
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357800
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Fri, 5 Apr 2019 19:13:54 +0000 (19:13 +0000)]
[gn] Rebase paths in symlink_or_copy against root_build_dir
We should be always rebasing paths against root_build_dir which is
the directory where scripts are run from, not root_out_dir which is
the current toolchain directory. The latter can result in invalid
paths when the action is being used from a non-default toolchain.
Differential Revision: https://reviews.llvm.org/D60330
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357798
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Fri, 5 Apr 2019 19:12:37 +0000 (19:12 +0000)]
[gn] Make -no-exceptions flag a config
This allows it to be disabled for targets that need exceptions
like libunwind, libc++abi and libc++.
Differential Revision: https://reviews.llvm.org/D60328
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357797
91177308-0d34-0410-b5e6-
96231b3b80d8
Guozhi Wei [Fri, 5 Apr 2019 18:51:08 +0000 (18:51 +0000)]
[LCG] Add aliased functions as LCG roots
Current LCG doesn't check aliased functions. So if an internal function has a public alias it will not be added to CG SCC, but it is still reachable from outside through the alias.
So this patch adds aliased functions to SCC.
Differential Revision: https://reviews.llvm.org/D59898
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357795
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Fri, 5 Apr 2019 18:24:34 +0000 (18:24 +0000)]
[AMDGPU] predicate and feature refactoring
We have done some predicate and feature refactoring lately but
did not upstream it. This is to sync.
Differential revision: https://reviews.llvm.org/D60292
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357791
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 18:06:42 +0000 (18:06 +0000)]
Try to fix Sphinx bot.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357790
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 5 Apr 2019 18:00:49 +0000 (18:00 +0000)]
lit: make rm python 3 friendly (NFC)
Add some alterations for python 3 compatibility.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357789
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 17:59:26 +0000 (17:59 +0000)]
[PDB Docs] Finish documentation for PDB Info Stream.
The information about the named stream map and feature codes
was not present. This patch adds it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357788
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 17:12:37 +0000 (17:12 +0000)]
[PDB Docs] Add info about the hash adjustment buffer.
This necessitates adding a document describing the serialized
hash table format. This document is currently empty, although
it will be filled out in followup patches.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357784
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 5 Apr 2019 17:05:54 +0000 (17:05 +0000)]
gn build: Merge 357768 and 357770
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357783
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 17:00:57 +0000 (17:00 +0000)]
[InstCombine] add tests for fdiv+fmul; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357782
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Fri, 5 Apr 2019 16:57:34 +0000 (16:57 +0000)]
gn build: Merge r357719
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357781
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 16:52:57 +0000 (16:52 +0000)]
[InstCombine] add tests for sqrt+fdiv+fmul; NFC
Examples based on recent llvm-dev thread. These are specific
patterns of more general enhancements that would solve these.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357780
91177308-0d34-0410-b5e6-
96231b3b80d8
Saleem Abdulrasool [Fri, 5 Apr 2019 16:48:00 +0000 (16:48 +0000)]
lit: support long paths on Windows
Use ctypes to call into SHFileOperationW with the extended NT path to allow us
to remove paths which exceed 261 characters on Windows. This functionality is
exercised by swift's test suite.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357778
91177308-0d34-0410-b5e6-
96231b3b80d8
Zachary Turner [Fri, 5 Apr 2019 16:43:42 +0000 (16:43 +0000)]
Add documentation for PDB TPI/IPI Stream.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357777
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Fri, 5 Apr 2019 16:42:21 +0000 (16:42 +0000)]
[InstCombine] add test to show reassociation that creates a denormal constant; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357776
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Tozer [Fri, 5 Apr 2019 16:32:25 +0000 (16:32 +0000)]
Revert "[llvm-readobj] Improve error message for --string-dump"
This reverts commit
681b0798dbbc6b3500c9930977ec8a274b142acb.
Reverted due to causing build failures: llvm-svn: 357772
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357774
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Fri, 5 Apr 2019 16:16:23 +0000 (16:16 +0000)]
Change some dyn_cast to more apropriate isa. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357773
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Tozer [Fri, 5 Apr 2019 16:15:50 +0000 (16:15 +0000)]
[llvm-readobj] Improve error message for --string-dump
Fixes bug 40630: https://bugs.llvm.org/show_bug.cgi?id=40630
This patch changes the error message when the section specified by
--string-dump cannot be found by including the name of the section in
the error message and changing the prefix text to not imply that the
file itself was invalid. As part of this change some uses of
std::error_code have been replaced with the llvm Error class to better
encapsulate the error info (rather than passing File strings around),
and the WithColor class replaces string literal error prefixes.
Differential Revision: https://reviews.llvm.org/D59946
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357772
91177308-0d34-0410-b5e6-
96231b3b80d8
Stephen Tozer [Fri, 5 Apr 2019 15:59:07 +0000 (15:59 +0000)]
[format] Add correct punctuation to comment
Test commit that adds a grammatically correct full stop to a single
comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357771
91177308-0d34-0410-b5e6-
96231b3b80d8
Guillaume Chatelet [Fri, 5 Apr 2019 15:18:59 +0000 (15:18 +0000)]
Add an option do not dump the generated object on disk
Reviewers: courbet
Subscribers: llvm-commits, bdb
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60317
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357769
91177308-0d34-0410-b5e6-
96231b3b80d8
Clement Courbet [Fri, 5 Apr 2019 15:03:25 +0000 (15:03 +0000)]
[ExpandMemCmp][NFC] Add tests for `memcmp(p, q, n) < 0` case.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357767
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 5 Apr 2019 14:56:21 +0000 (14:56 +0000)]
[SelectionDAG] Add fcmp UNDEF handling to SelectionDAG::FoldSetCC
Second half of PR40800, this patch adds DAG undef handling to fcmp instructions to match the behavior in llvm::ConstantFoldCompareInstruction, this permits constant folding of vector comparisons where some elements had been reduced to UNDEF (by SimplifyDemandedVectorElts etc.).
This involves a lot of tweaking to reduced tests as bugpoint loves to reduce fcmp arguments to undef........
Differential Revision: https://reviews.llvm.org/D60006
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357765
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 5 Apr 2019 14:03:07 +0000 (14:03 +0000)]
GlobalISel: Add another overload of buildUnmerge
It's annoying to have to create an array of the result type,
particularly when you don't care about the size of the value.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357763
91177308-0d34-0410-b5e6-
96231b3b80d8
Matt Arsenault [Fri, 5 Apr 2019 14:03:04 +0000 (14:03 +0000)]
AMDGPU/GlobalISel: Fix non-power-of-2 select
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357762
91177308-0d34-0410-b5e6-
96231b3b80d8