]> granicus.if.org Git - llvm/log
llvm
5 years ago[MachineOutliner] Replace ostringstream based string concatenation with Twine
Fangrui Song [Wed, 10 Apr 2019 14:52:37 +0000 (14:52 +0000)]
[MachineOutliner] Replace ostringstream based string concatenation with Twine

This makes my libLLVMCodeGen.so.9svn 4936 bytes smaller.

While here, delete unused #include <map>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358089 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LLVM-C] Correct The Current Debug Location Accessors (Again)
Robert Widmann [Wed, 10 Apr 2019 14:19:05 +0000 (14:19 +0000)]
[LLVM-C] Correct The Current Debug Location Accessors (Again)

Summary: Resubmitting D60484 with the conflicting Go bindings renamed to avoid collisions.

Reviewers: whitequark, deadalnix

Subscribers: hiraditya, llvm-commits, sammccall

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60511

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358086 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64] Add lowering pattern for scalar fp16 facge and facgt
Diogo N. Sampaio [Wed, 10 Apr 2019 13:34:18 +0000 (13:34 +0000)]
[AArch64] Add lowering pattern for scalar fp16 facge and facgt

Summary: The fp16 scalar version of facge and facgt requires a custom patter matching, as the result type is not the same width of the operands.

Reviewers: olista01, javed.absar, pbarrio

Reviewed By: javed.absar

Subscribers: kristof.beyls, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60212

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358083 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "[LLVM-C] Correct The Current Debug Location Accessors"
Sam McCall [Wed, 10 Apr 2019 13:29:37 +0000 (13:29 +0000)]
Revert "[LLVM-C] Correct The Current Debug Location Accessors"

This reverts commit r358039, which added symbols that conflict with the
Go bindings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358082 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM] [FIX] Add missing f16 vector operations lowering
Diogo N. Sampaio [Wed, 10 Apr 2019 13:28:06 +0000 (13:28 +0000)]
[ARM] [FIX] Add missing f16 vector operations lowering

Summary:
Add missing <8xhalf> shufflevectors pattern, when using concat_vector dag node.
As well, allows <8xhalf> and <4xhalf> vldup1 operations.

These instructions are required for v8.2a fp16 lowering of vmul_n_f16, vmulq_n_f16 and vmulq_lane_f16 intrinsics.

Reviewers: olista01, pbarrio, LukeGeeson, efriedma

Reviewed By: efriedma

Subscribers: efriedma, javed.absar, kristof.beyls, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60319

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358081 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[NFC] Fix unused variable warning.
Clement Courbet [Wed, 10 Apr 2019 13:18:05 +0000 (13:18 +0000)]
[NFC] Fix unused variable warning.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358080 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-exegesis] Pacify bots - don't std::move() - prevents copy elision
Roman Lebedev [Wed, 10 Apr 2019 12:47:47 +0000 (12:47 +0000)]
[llvm-exegesis] Pacify bots - don't std::move() - prevents copy elision

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358079 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-readobj] Should declare `ListScope` for `verneed` entries.
Xing GUO [Wed, 10 Apr 2019 12:47:21 +0000 (12:47 +0000)]
[llvm-readobj] Should declare `ListScope` for `verneed` entries.

Summary: YAML mappings require keys to be unique. See: https://yaml.org/spec/1.2/spec.html#id2764652

Reviewers: jhenderson, grimar, rupprecht, espindola, ruiu

Reviewed By: ruiu

Subscribers: ruiu, emaste, arichardson, MaskRay, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60438

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358078 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-exegesis] YamlContext: fix some missing spaces/quotes/newlines in error strings
Roman Lebedev [Wed, 10 Apr 2019 12:20:14 +0000 (12:20 +0000)]
[llvm-exegesis] YamlContext: fix some missing spaces/quotes/newlines in error strings

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358077 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-exegesis] Fix error propagation from yaml writing (from serialization)
Roman Lebedev [Wed, 10 Apr 2019 12:19:57 +0000 (12:19 +0000)]
[llvm-exegesis] Fix error propagation from yaml writing (from serialization)

Investigating https://bugs.llvm.org/show_bug.cgi?id=41448

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358076 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Track multiple registers in DbgEntityHistoryCalculator
David Stenberg [Wed, 10 Apr 2019 11:28:28 +0000 (11:28 +0000)]
[DebugInfo] Track multiple registers in DbgEntityHistoryCalculator

Summary:
When calculating the debug value history, DbgEntityHistoryCalculator
would only keep track of register clobbering for the latest debug value
per inlined entity. This meant that preceding register-described debug
value fragments would live on until the next overlapping debug value,
ignoring any potential clobbering. This patch amends
DbgEntityHistoryCalculator so that it keeps track of all registers that
a inlined entity's currently live debug values are described by.

The DebugInfo/COFF/pieces.ll test case has had to be changed since
previously a register-described fragment would incorrectly outlive its
basic block.

The parent patch D59941 is expected to increase the coverage slightly,
as it makes sure that location list entries are inserted after clobbered
fragments, and this patch is expected to decrease it, as it stops
preceding register-described from living longer than they should. All in
all, this patch and the preceding patch has a negligible effect on the
output from `llvm-dwarfdump -statistics' for a clang-3.4 binary built
using the RelWithDebInfo build profile. "Scope bytes covered" increases
by 0.5%, and "variables with location" increases from 2212083 to
2212088, but it should improve the accuracy quite a bit.

This fixes PR40283.

Reviewers: aprantl, probinson, dblaikie, rnk, bjope

Reviewed By: aprantl

Subscribers: llvm-commits

Tags: #debug-info, #llvm

Differential Revision: https://reviews.llvm.org/D59942

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358073 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Improve handling of clobbered fragments
David Stenberg [Wed, 10 Apr 2019 11:28:20 +0000 (11:28 +0000)]
[DebugInfo] Improve handling of clobbered fragments

Summary:
Currently the DbgValueHistorymap only keeps track of clobbered registers
for the last debug value that it has encountered. This could lead to
preceding register-described debug values living on longer in the
location lists than they should. See PR40283 for an example.  This
patch does not introduce tracking of multiple registers, but changes
the DbgValueHistoryMap structure to allow for that in a follow-up
patch. This patch is not NFC, as it at least fixes two bugs in
DwarfDebug (both are covered in the new clobbered-fragments.mir test):

* If a debug value was clobbered (its End pointer set), the value would
  still be added to OpenRanges, meaning that the succeeding location list
  entries could potentially contain stale values.

* If a debug value was clobbered, and there were non-overlapping
  fragments that were still live after the clobbering, DwarfDebug would
  not create a location list entry starting directly after the
  clobbering instruction. This meant that the location list could have
  a gap until the next debug value for the variable was encountered.

Before this patch, the history map was represented by <Begin, End>
pairs, where a new pair was created for each new debug value. When
dealing with partially overlapping register-described debug values, such
as in the following example:

  DBG_VALUE $reg2, $noreg, !1, !DIExpression(DW_OP_LLVM_fragment, 32, 32)
  [...]
  DBG_VALUE $reg3, $noreg, !1, !DIExpression(DW_OP_LLVM_fragment, 64, 32)
  [...]
  $reg2 = insn1
  [...]
  $reg3 = insn2

the history map would then contain the entries `[<DV1, insn1>, [<DV2, insn2>]`.
This would leave it up to the users of the map to be aware of
the relative order of the instructions, which e.g. could make
DwarfDebug::buildLocationList() needlessly complex. Instead, this patch
makes the history map structure monotonically increasing by dropping the
End pointer, and replacing that with explicit clobbering entries in the
vector. Each debug value has an "end index", which if set, points to the
entry in the vector that ends the debug value. The ending entry can
either be an overlapping debug value, or an instruction which clobbers
the register that the debug value is described by. The ending entry's
instruction can thus either be excluded or included in the debug value's
range. If the end index is not set, the debug value that the entry
introduces is valid until the end of the function.

Changes to test cases:

 * DebugInfo/X86/pieces-3.ll: The range of the first DBG_VALUE, which
   describes that the fragment (0, 64) is located in RDI, was
   incorrectly ended by the clobbering of RAX, which the second
   (non-overlapping) DBG_VALUE was described by. With this patch we
   get a second entry that only describes RDI after that clobbering.

 * DebugInfo/ARM/partial-subreg.ll: This test seems to indiciate a bug
   in LiveDebugValues that is caused by it not being aware of fragments.
   I have added some comments in the test case about that. Also, before
   this patch DwarfDebug would incorrectly include a register-described
   debug value from a preceding block in a location list entry.

Reviewers: aprantl, probinson, dblaikie, rnk, bjope

Reviewed By: aprantl

Subscribers: javed.absar, kristof.beyls, jdoerfert, llvm-commits

Tags: #debug-info, #llvm

Differential Revision: https://reviews.llvm.org/D59941

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358072 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TargetLowering] Move shouldFoldShiftPairToMask next to preferShiftsToClearExtremeBit...
Simon Pilgrim [Wed, 10 Apr 2019 11:09:58 +0000 (11:09 +0000)]
[TargetLowering] Move shouldFoldShiftPairToMask next to preferShiftsToClearExtremeBits. NFCI.

As discussed on PR41359, we're probably going to keep both of these but we need to make it more explicit how they complement each other.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358071 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AsmPrinter] Delete unused RangeSpanList::addRange
Fangrui Song [Wed, 10 Apr 2019 10:35:10 +0000 (10:35 +0000)]
[AsmPrinter] Delete unused RangeSpanList::addRange

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358068 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMCSymbolicELF: simplify. (Flags & (x << s)) >> s is equivalent to Flags >> s & x
Fangrui Song [Wed, 10 Apr 2019 10:30:22 +0000 (10:30 +0000)]
MCSymbolicELF: simplify. (Flags & (x << s)) >> s is equivalent to Flags >> s & x

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358067 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoMCDwarf: use write_zeroes for MCDwarfLineAddr::FixedEncode
Fangrui Song [Wed, 10 Apr 2019 09:41:48 +0000 (09:41 +0000)]
MCDwarf: use write_zeroes for MCDwarfLineAddr::FixedEncode

This is more efficient than allocating a std::vector<uint8_t>.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358066 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFixup r358063
Diana Picus [Wed, 10 Apr 2019 09:31:28 +0000 (09:31 +0000)]
Fixup r358063

Fix warning/error about mixed signedness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358065 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM GlobalISel] Add some asserts. NFC.
Diana Picus [Wed, 10 Apr 2019 09:14:37 +0000 (09:14 +0000)]
[ARM GlobalISel] Add some asserts. NFC.

Make sure some arm opcodes don't unintentionally sneak into thumb mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358064 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM GlobalISel] Select G_FCONSTANT for VFP3
Diana Picus [Wed, 10 Apr 2019 09:14:32 +0000 (09:14 +0000)]
[ARM GlobalISel] Select G_FCONSTANT for VFP3

Make it possible to TableGen code for FCONSTS and FCONSTD.

We need to make two changes to the TableGen descriptions of vfp_f32imm
and vfp_f64imm respectively:
* add GISelPredicateCode to check that the immediate fits in 8 bits;
* extract the SDNodeXForms into separate definitions and create a
GISDNodeXFormEquiv and a custom renderer function for each of them.

There's a lot of boilerplate to get the actual value of the immediate,
but it basically just boils down to calling ARM_AM::getFP32Imm or
ARM_AM::getFP64Imm.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358063 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM GlobalISel] Select G_FCONSTANT into pools
Diana Picus [Wed, 10 Apr 2019 09:14:24 +0000 (09:14 +0000)]
[ARM GlobalISel] Select G_FCONSTANT into pools

Put all floating point constants into constant pools and load their
values from there.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358062 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ARM GlobalISel] Map G_FCONSTANT
Diana Picus [Wed, 10 Apr 2019 09:14:16 +0000 (09:14 +0000)]
[ARM GlobalISel] Map G_FCONSTANT

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358061 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Rename DbgValueHistoryMap::{InstrRange -> Entry}, NFC
David Stenberg [Wed, 10 Apr 2019 09:07:43 +0000 (09:07 +0000)]
[DebugInfo] Rename DbgValueHistoryMap::{InstrRange -> Entry}, NFC

Summary:
In an upcoming commit the history map will be changed so that it
contains explicit entries for instructions that clobber preceding debug
values, rather than Begin- End range pairs, so generalize the name to
"Entry".

Also, prefix the iterator variable names in buildLocationList() with
"E". In an upcoming commit the entry will have query functions such as
"isD(e)b(u)gValue", which could at a glance make one confuse it for
iterations over MachineInstrs, so make the iterator names a bit more
distinct to avoid that.

Reviewers: aprantl

Reviewed By: aprantl

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59939

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358060 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Make InstrRange into a class, NFC
David Stenberg [Wed, 10 Apr 2019 09:07:32 +0000 (09:07 +0000)]
[DebugInfo] Make InstrRange into a class, NFC

Summary:
Replace use of std::pair by creating a class for the debug value
instruction ranges instead. This is a preparatory refactoring for
improving handling of clobbered fragments.

In an upcoming commit the Begin pointer will become a PointerIntPair, so
it will be cleaner to have a getter for that.

Reviewers: aprantl

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D59938

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358059 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ScheduleDAG] Add statistics for maintaining the topological order.
Florian Hahn [Wed, 10 Apr 2019 09:03:03 +0000 (09:03 +0000)]
[ScheduleDAG] Add statistics for maintaining the topological order.

This is helpful to measure the impact of D60125 on maintaining
topological orders.

Reviewers: MatzeB, atrick, efriedma, niravd

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D60187

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358058 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAdd REQUIRES: asserts to test using -debug-only
David Stenberg [Wed, 10 Apr 2019 08:44:57 +0000 (08:44 +0000)]
Add REQUIRES: asserts to test using -debug-only

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358057 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[VPLAN] Minor improvement to testing and debug messages.
Florian Hahn [Wed, 10 Apr 2019 08:17:28 +0000 (08:17 +0000)]
[VPLAN] Minor improvement to testing and debug messages.

1. Use computed VF for stress testing.
2. If the computed VF does not produce vector code (VF smaller than 2), force VF to be 4.
3. Test vectorization of i64 data on AArch64 to make sure we generate VF != 4 (on X86 that was already tested on AVX).

Patch by Francesco Petrogalli <francesco.petrogalli@arm.com>

Differential Revision: https://reviews.llvm.org/D59952

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358056 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DWARF] Simplify LineTable::findRowInSeq
Fangrui Song [Wed, 10 Apr 2019 07:44:23 +0000 (07:44 +0000)]
[DWARF] Simplify LineTable::findRowInSeq

We want the last row whose address is less than or equal to Address.
This can be computed as upper_bound - 1, which is simpler than
lower_bound followed by skipping equal rows in a loop.

Since FirstRow (LowPC) does not satisfy the predicate (OrderByAddress)
while LastRow-1 (HighPC) satisfies the predicate. We can decrease the
search range by two, i.e.

upper_bound [FirstRow,LastRow) = upper_bound [FirstRow+1,LastRow-1)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358053 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Handle usubo always overflow
Nikita Popov [Wed, 10 Apr 2019 07:10:53 +0000 (07:10 +0000)]
[InstCombine] Handle usubo always overflow

Check AlwaysOverflow condition for usubo. The implementation is the
same as the existing handling for uaddo and umulo. Handling for saddo
and ssubo will follow (smulo doesn't have the necessary ValueTracking
support).

Differential Revision: https://reviews.llvm.org/D60483

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358052 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Directly call computeOverflow methods in OptimizeOverflowCheck; NFC
Nikita Popov [Wed, 10 Apr 2019 07:10:44 +0000 (07:10 +0000)]
[InstCombine] Directly call computeOverflow methods in OptimizeOverflowCheck; NFC

Instead of using the willOverflow helpers. This makes it easier to
extend handling of AlwaysOverflows.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358051 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Canonicalize (-X s/ Y) to -(X s/ Y).
Chen Zheng [Wed, 10 Apr 2019 06:52:09 +0000 (06:52 +0000)]
[InstCombine] Canonicalize (-X s/ Y) to -(X s/ Y).

Differential Revision: https://reviews.llvm.org/D60395

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358050 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ObjC][ARC] Convert the retainRV marker that is passed as a named
Akira Hatanaka [Wed, 10 Apr 2019 06:20:20 +0000 (06:20 +0000)]
[ObjC][ARC] Convert the retainRV marker that is passed as a named
metadata into a module flag in the auto-upgrader and make the ARC
contract pass read the marker as a module flag.

This is needed to fix a bug where ARC contract wasn't inserting the
retainRV marker when LTO was enabled, which caused objects returned
from a function to be auto-released.

rdar://problem/49464214

Differential Revision: https://reviews.llvm.org/D60303

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358047 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Move the 2 byte VEX optimization for MOV instructions back to the X86AsmParser...
Craig Topper [Wed, 10 Apr 2019 05:43:20 +0000 (05:43 +0000)]
[X86] Move the 2 byte VEX optimization for MOV instructions back to the X86AsmParser::processInstruction where it used to be. Block when {vex3} prefix is present.

Years ago I moved this to an InstAlias using VR128H/VR128L. But now that we support {vex3} pseudo prefix, we need to block the optimization when it is set to match gas behavior.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358046 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] Don't print trailing space in dumpBytes
Fangrui Song [Wed, 10 Apr 2019 05:31:21 +0000 (05:31 +0000)]
[llvm-objdump] Don't print trailing space in dumpBytes

In disassembly output, dumpBytes prints a space, followed by a tab
printed by printInstr. Remove the extra space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358045 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] Accept and ignore --wide/-w
Fangrui Song [Wed, 10 Apr 2019 04:46:01 +0000 (04:46 +0000)]
[llvm-objdump] Accept and ignore --wide/-w

This is similar to what we do for llvm-readobj (--wide/-W is for GNU
readelf compatibility).

The test will be added in D60376.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358043 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[Sparc] Fix incorrect MI insertion position for spilling f128.
Jim Lin [Wed, 10 Apr 2019 01:56:32 +0000 (01:56 +0000)]
[Sparc] Fix incorrect MI insertion position for spilling f128.

Summary:
Obviously, new built MI (sethi+add or sethi+xor+add) for constructing large offset
should be inserted before new created MI for storing even register into memory.
So the insertion position should be *StMI instead of II.

before fixed:

std %f0, [%g1+80]
sethi 4, %g1        <<<
add %g1, %sp, %g1   <<< this two instructions should be put before "std %f0, [%g1+80]".
sethi 4, %g1
add %g1, %sp, %g1
std %f2, [%g1+88]

after fixed:

sethi 4, %g1
add %g1, %sp, %g1
std %f0, [%g1+80]
sethi 4, %g1
add %g1, %sp, %g1
std %f2, [%g1+88]

Reviewers: venkatra, jyknight

Reviewed By: jyknight

Subscribers: jyknight, fedor.sergeev, jrtc27, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60397

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358042 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Support the EVEX versions vcvt(t)ss2si and vcvt(t)sd2si with the {evex} pseudo...
Craig Topper [Wed, 10 Apr 2019 01:29:59 +0000 (01:29 +0000)]
[X86] Support the EVEX versions vcvt(t)ss2si and vcvt(t)sd2si with the {evex} pseudo prefix in the assembler.

The EVEX versions are ambiguous with the VEX versions based on operands alone so we had explicitly dropped
them from the AsmMatcher table. Unfortunately, when we add them they incorrectly show in the table before
their VEX counterparts. This is different how the prioritization normally works.

To fix this we have to explicitly reject the instructions unless the {evex} prefix has been seen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358041 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add VEX_LIG to scalar VEX/EVEX instructions that were missing it.
Craig Topper [Tue, 9 Apr 2019 23:30:36 +0000 (23:30 +0000)]
[X86] Add VEX_LIG to scalar VEX/EVEX instructions that were missing it.

Scalar VEX/EVEX instructions don't use the L bit and don't look at it for decoding either.
So we should ignore it in our disassembler.

The missing instructions here were found by grepping the raw tablegen class definitions in
the tablegen debug output.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358040 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LLVM-C] Correct The Current Debug Location Accessors
Robert Widmann [Tue, 9 Apr 2019 22:31:56 +0000 (22:31 +0000)]
[LLVM-C] Correct The Current Debug Location Accessors

Summary: Deprecate the existing accessors for the "current debug location" of an IRBuilder.  The setter could not handle being reset to NULL, and the getter would create bogus metadata if the NULL location was returned.  Provide direct metadata-based accessors instead.

Reviewers: whitequark, deadalnix

Reviewed By: whitequark

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60484

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358039 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LLVM-C] Add Bindings to Access an Instruction's DebugLoc
Robert Widmann [Tue, 9 Apr 2019 22:27:51 +0000 (22:27 +0000)]
[LLVM-C] Add Bindings to Access an Instruction's DebugLoc

Summary: Provide direct accessors to supplement LLVMSetInstDebugLocation.  In addition, properly accept and return the NULL location.  The old accessors provided no way to do this, so the current debug location cannot currently be cleared.

Reviewers: whitequark, deadalnix

Reviewed By: whitequark

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60481

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358038 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[LLVM-C] Add Section and Symbol Iterator Accessors for Object File Binaries
Robert Widmann [Tue, 9 Apr 2019 21:53:31 +0000 (21:53 +0000)]
[LLVM-C] Add Section and Symbol Iterator Accessors for Object File Binaries

Summary: This brings us to full feature parity with the old API, so I've deprecated it and updated the tests.  I'll do a follow-up patch to do some more cleanup and documentation work in this header.

Reviewers: whitequark, deadalnix

Reviewed By: whitequark

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60407

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358037 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Fix a dangling StringRef issue introduced in r358029.
Craig Topper [Tue, 9 Apr 2019 21:37:21 +0000 (21:37 +0000)]
[X86] Fix a dangling StringRef issue introduced in r358029.

I was attempting to convert mnemonics to lower case after processing a pseudo prefix. But the ParseOperands just hold a StringRef for tokens so there is no where to allocate the memory.

Add FIXMEs for the lower case issue which also exists in the prefix parsing code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358036 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64][GlobalISel] Add isel support for vector G_ICMP and G_ASHR & G_SHL
Amara Emerson [Tue, 9 Apr 2019 21:22:43 +0000 (21:22 +0000)]
[AArch64][GlobalISel] Add isel support for vector G_ICMP and G_ASHR & G_SHL

The selection for G_ICMP is unfortunately not currently importable from SDAG
due to the use of custom SDNodes. To support this, this selection method has an
opcode table which has been generated by a script, indexed by various
instruction properties. Ideally in future we will have a GISel native selection
patterns that we can write in tablegen to improve on this.

For selection of some types we also need support for G_ASHR and G_SHL which are
generated as a result of legalization. This patch also adds support for them,
generating the same code as SelectionDAG currently does.

Differential Revision: https://reviews.llvm.org/D60436

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358035 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64][GlobalISel] Legalize vector G_ICMP.
Amara Emerson [Tue, 9 Apr 2019 21:22:40 +0000 (21:22 +0000)]
[AArch64][GlobalISel] Legalize vector G_ICMP.

Selection support will be coming in a later patch.

Differential Revision: https://reviews.llvm.org/D60435

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358034 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64][GlobalISel] Add legalization for some vector G_SHL and G_ASHR.
Amara Emerson [Tue, 9 Apr 2019 21:22:37 +0000 (21:22 +0000)]
[AArch64][GlobalISel] Add legalization for some vector G_SHL and G_ASHR.

This is needed for some future support for vector ICMP.

Differential Revision: https://reviews.llvm.org/D60433

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358033 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[GlobalISel][AArch64] Allow CallLowering to handle types which are normally
Amara Emerson [Tue, 9 Apr 2019 21:22:33 +0000 (21:22 +0000)]
[GlobalISel][AArch64] Allow CallLowering to handle types which are normally
required to be passed as different register types. E.g. <2 x i16> may need to
be passed as a larger <2 x i32> type, so formal arg lowering needs to be able
truncate it back. Likewise, when dealing with returns of these types, they need
to be widened in the appropriate way back.

Differential Revision: https://reviews.llvm.org/D60425

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358032 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Add with.overflow always overflow tests; NFC
Nikita Popov [Tue, 9 Apr 2019 20:02:23 +0000 (20:02 +0000)]
[InstCombine] Add with.overflow always overflow tests; NFC

The uadd and umul cases are currently handled, the usub, sadd, ssub
and smul cases are not. usub, sadd and ssub already have the
necessary ValueTracking support, smul doesn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358031 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[AArch64] Add test case to show missed opportunity to remove a shift before tbnz...
Craig Topper [Tue, 9 Apr 2019 19:23:37 +0000 (19:23 +0000)]
[AArch64] Add test case to show missed opportunity to remove a shift before tbnz when the shift has been zero extended from i32 to i64. NFC

This pattern showed up in D60358 and it was suggested I had a test and fix that separately.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358030 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Add support for {vex2}, {vex3}, and {evex} to the assembler to match gas. Use...
Craig Topper [Tue, 9 Apr 2019 18:45:15 +0000 (18:45 +0000)]
[X86] Add support for {vex2}, {vex3}, and {evex} to the assembler to match gas. Use {evex} to improve the one our 32-bit AVX512 tests.

These can be used to force the encoding used for instructions.

{vex2} will fail if the instruction is not VEX encoded, but otherwise won't do anything since we prefer vex2 when possible. Might need to skip use of the _REV MOV instructions for this too, but I haven't done that yet.

{vex3} will force the instruction to use the 3 byte VEX encoding or fail if there is no VEX form.

{evex} will force the instruction to use the EVEX version or fail if there is no EVEX version.

Differential Revision: https://reviews.llvm.org/D59266

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358029 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DAGCombiner][X86][SystemZ] Canonicalize SSUBO with immediate RHS to SADDO by negatin...
Craig Topper [Tue, 9 Apr 2019 18:33:56 +0000 (18:33 +0000)]
[DAGCombiner][X86][SystemZ] Canonicalize SSUBO with immediate RHS to SADDO by negating the immediate.

This lines up with what we do for regular subtract and it matches up better with X86 assumptions in isel patterns that add with immediate is more canonical than sub with immediate.

Differential Revision: https://reviews.llvm.org/D60020

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358027 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert "[InstCombine] [InstCombine] Canonicalize (-X s/ Y) to -(X s/ Y)."
Nikita Popov [Tue, 9 Apr 2019 18:32:38 +0000 (18:32 +0000)]
Revert "[InstCombine] [InstCombine] Canonicalize (-X s/ Y) to -(X s/ Y)."

This reverts commit 1383a9168948aabfd827220c9445ce0ce5765800.

sdiv-canonicalize.ll fails after this revision. The fold needs to be
moved outside the branch handling constant operands. However when this
is done there are further test changes, so I'm reverting this in the
meantime.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358026 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Restructure OptimizeOverflowCheck; NFC
Nikita Popov [Tue, 9 Apr 2019 18:32:28 +0000 (18:32 +0000)]
[InstCombine] Restructure OptimizeOverflowCheck; NFC

Change the code to always handle the unsigned+signed cases together
with the same basic structure for add/sub/mul. The simple folds are
always handled first and then the ValueTracking overflow checks are
used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358025 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRemove the unit at a time option
Eric Christopher [Tue, 9 Apr 2019 18:29:22 +0000 (18:29 +0000)]
Remove the unit at a time option
Removes the code from opt and the pass manager builder.
The code was unused - even by the C library code that was supposed to set
it and had been removed previously.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358024 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PDB Docs] Clarifications and fixes for DBI Stream.
Zachary Turner [Tue, 9 Apr 2019 17:38:34 +0000 (17:38 +0000)]
[PDB Docs] Clarifications and fixes for DBI Stream.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358022 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoUpdate modulemaps for Analysis/VecFuncs.def.
Kristina Brooks [Tue, 9 Apr 2019 17:05:36 +0000 (17:05 +0000)]
Update modulemaps for Analysis/VecFuncs.def.

Avoid a warning while building modular LLVM due to a new
textual header missing in the modulemap:

TargetLibraryInfo.cpp:1485:6: warning: missing submodule
  'LLVM_Analysis.VecFuncs' [-Wincomplete-umbrella]

Added VecFuncs.def as a textual header in LLVM_Analysis.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358021 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ValueTracking] Use computeConstantRange() for signed sub overflow determination
Nikita Popov [Tue, 9 Apr 2019 17:01:49 +0000 (17:01 +0000)]
[ValueTracking] Use computeConstantRange() for signed sub overflow determination

This is the same change as D60420 but for signed sub rather than
signed add: Range information is intersected into the known bits
result, allows to detect more no/always overflow conditions.

Differential Revision: https://reviews.llvm.org/D60469

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358020 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TargetLowering] SimplifyDemandedBits - add ISD::INSERT_SUBVECTOR support
Simon Pilgrim [Tue, 9 Apr 2019 16:52:21 +0000 (16:52 +0000)]
[TargetLowering] SimplifyDemandedBits - add ISD::INSERT_SUBVECTOR support

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358019 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] [InstCombine] Canonicalize (-X s/ Y) to -(X s/ Y).
Chen Zheng [Tue, 9 Apr 2019 16:34:31 +0000 (16:34 +0000)]
[InstCombine] [InstCombine] Canonicalize (-X s/ Y) to -(X s/ Y).

Differential Revision: https://reviews.llvm.org/D60395

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358017 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoRevert LIS handling in MachineDCE
Stanislav Mekhanoshin [Tue, 9 Apr 2019 16:13:53 +0000 (16:13 +0000)]
Revert LIS handling in MachineDCE

One of out of tree targets has regressed with this patch. Reverting
it for now and let liveness to be fully reconstructed in case pass
was used after the LIS is created to resolve the regression.

Differential Revision: https://reviews.llvm.org/D60466

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358015 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ValueTracking] Use computeConstantRange() in signed add overflow determination
Nikita Popov [Tue, 9 Apr 2019 16:12:59 +0000 (16:12 +0000)]
[ValueTracking] Use computeConstantRange() in signed add overflow determination

This is D59386 for the signed add case. The computeConstantRange()
result is now intersected into the existing known bits information,
allowing to detect additional no-overflow/always-overflow conditions
(though the latter isn't used yet).

This (finally...) covers the motivating case from D59071.

Differential Revision: https://reviews.llvm.org/D60420

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358014 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] prevent possible miscompile with sdiv+negate of vector op
Sanjay Patel [Tue, 9 Apr 2019 15:13:03 +0000 (15:13 +0000)]
[InstCombine] prevent possible miscompile with sdiv+negate of vector op

Similar to:
rL358005

Forego folding arbitrary vector constants to fix a possible miscompile bug.
We can enhance the transform if we do want to handle the more complicated
vector case.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358013 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DWARF] DWARFDebugLine: replace Sequence::orderByLowPC with orderByHighPC
Fangrui Song [Tue, 9 Apr 2019 15:08:32 +0000 (15:08 +0000)]
[DWARF] DWARFDebugLine: replace Sequence::orderByLowPC with orderByHighPC

In a sorted list of non-overlapping [LowPC,HighPC) ranges, locating an address with
upper_bound on HighPC is simpler than lower_bound on LowPC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358012 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] add tests for sdiv with negated dividend and constant divisor; NFC
Sanjay Patel [Tue, 9 Apr 2019 14:48:44 +0000 (14:48 +0000)]
[InstCombine] add tests for sdiv with negated dividend and constant divisor; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358010 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] add tests for sdiv-by-int-min; NFC
Sanjay Patel [Tue, 9 Apr 2019 14:27:07 +0000 (14:27 +0000)]
[InstCombine] add tests for sdiv-by-int-min; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358008 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] auto-generate complete test checks; NFC
Sanjay Patel [Tue, 9 Apr 2019 14:27:03 +0000 (14:27 +0000)]
[InstCombine] auto-generate complete test checks; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358007 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] prevent possible miscompile with negate+sdiv of vector op
Sanjay Patel [Tue, 9 Apr 2019 14:09:06 +0000 (14:09 +0000)]
[InstCombine] prevent possible miscompile with negate+sdiv of vector op

// 0 - (X sdiv C)  -> (X sdiv -C)  provided the negation doesn't overflow.

This fold has been around for many years and nobody noticed the potential
vector miscompile from overflow until recently...
So it seems unlikely that there's much demand for a vector sdiv optimization
on arbitrary vector constants, so just limit the matching to splat constants
to avoid the possible bug.

Differential Revision: https://reviews.llvm.org/D60426

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358005 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agogn build: Fix Windows builds after r357797
Nico Weber [Tue, 9 Apr 2019 14:02:02 +0000 (14:02 +0000)]
gn build: Fix Windows builds after r357797

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358004 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] add tests/comments for negate+sdiv; NFC
Sanjay Patel [Tue, 9 Apr 2019 13:41:29 +0000 (13:41 +0000)]
[InstCombine] add tests/comments for negate+sdiv; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358003 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoNFC: Refactor library-specific mappings of scalar maths functions to their vector...
Nemanja Ivanovic [Tue, 9 Apr 2019 13:21:11 +0000 (13:21 +0000)]
NFC: Refactor library-specific mappings of scalar maths functions to their vector counterparts

This patch factors out mappings of scalar maths functions to their vector
counterparts from TargetLibraryInfo.cpp to a separate VecFuncs.def file. Such
mappings are currently available for Accelerate framework, and SVML library.

This is in support of the follow-up: https://reviews.llvm.org/D59881

Patch by pjeeva01

Differential revision: https://reviews.llvm.org/D60211

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358001 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] add more testcases for canonicalize (-X s/ Y) to -(X s/ Y).
Chen Zheng [Tue, 9 Apr 2019 12:47:29 +0000 (12:47 +0000)]
[InstCombine] add more testcases for canonicalize (-X s/ Y) to -(X s/ Y).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358000 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TargetLowering] SimplifyDemandedBits - Remove GetDemandedSrcMask lambda. NFCI.
Simon Pilgrim [Tue, 9 Apr 2019 12:29:26 +0000 (12:29 +0000)]
[TargetLowering] SimplifyDemandedBits - Remove GetDemandedSrcMask lambda. NFCI.

An older version of this could return false but now that this always succeeds we can just inline and simplify it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357999 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoImprove hashing for time profiler
Anton Afanasyev [Tue, 9 Apr 2019 12:18:44 +0000 (12:18 +0000)]
Improve hashing for time profiler

Summary:
Use optimized hashing while writing time trace by join two hashes to one.
Used for -ftime-trace option.

Reviewers: rnk, takuto.ikuta

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60404

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357998 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TargetLowering] SimplifyDemandedBits - call SimplifyDemandedBits in bitcast handling
Simon Pilgrim [Tue, 9 Apr 2019 10:27:59 +0000 (10:27 +0000)]
[TargetLowering] SimplifyDemandedBits - call SimplifyDemandedBits in bitcast handling

When bitcasting from a source op to a larger bitwidth op, split the demanded bits and OR them on top of one another and demand those merged bits in the SimplifyDemandedBits call on the source op.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357992 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-rtdyld] Fix missing include on MSVC builds.
Simon Pilgrim [Tue, 9 Apr 2019 10:15:10 +0000 (10:15 +0000)]
[llvm-rtdyld] Fix missing include on MSVC builds.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357990 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Pass all values in DebugLocEntry's constructor, NFC
David Stenberg [Tue, 9 Apr 2019 10:08:26 +0000 (10:08 +0000)]
[DebugInfo] Pass all values in DebugLocEntry's constructor, NFC

Summary:
With MergeValues() removed, amend DebugLocEntry's constructor so that it
takes multiple values rather than a single, and keep non-fragment values
in OpenRanges, as this allows some cleanup of the code in
buildLocationList().

Reviewers: aprantl, dblaikie, loladiro

Reviewed By: aprantl

Subscribers: hiraditya, llvm-commits

Tags: #debug-info, #llvm

Differential Revision: https://reviews.llvm.org/D59303

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357988 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoFix Wdocumentation warning. NFCI.
Simon Pilgrim [Tue, 9 Apr 2019 09:38:25 +0000 (09:38 +0000)]
Fix Wdocumentation warning. NFCI.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357987 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] fix trivial typos in comment, NFC
Hiroshi Inoue [Tue, 9 Apr 2019 08:40:02 +0000 (08:40 +0000)]
[PowerPC] fix trivial typos in comment, NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357981 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CMake] Fix accidentally swapped input/output parameters of string(REPLACE) for mingw
Martin Storsjo [Tue, 9 Apr 2019 08:31:25 +0000 (08:31 +0000)]
[CMake] Fix accidentally swapped input/output parameters of string(REPLACE) for mingw

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357979 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[CMake] Move configuration of LLVM_CXX_STD to HandleLLVMOptions.cmake
Justin Bogner [Tue, 9 Apr 2019 08:14:32 +0000 (08:14 +0000)]
[CMake] Move configuration of LLVM_CXX_STD to HandleLLVMOptions.cmake

Standalone builds of projects other than llvm itself (lldb, libcxx,
etc) include HandleLLVMOptions but not the top level llvm CMakeLists,
so we need to set this variable here to ensure that it always has a
value.

This should fix the build issues some folks have been seeing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357976 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[DebugInfo] Remove redundant DebugLocEntry::MergeValues() function, NFC
David Stenberg [Tue, 9 Apr 2019 07:46:09 +0000 (07:46 +0000)]
[DebugInfo] Remove redundant DebugLocEntry::MergeValues() function, NFC

Summary:
The MergeValues() function would try to merge two entries if they shared
the same beginning label. Having the same beginning label means that the
former entry's range would be empty; however, after D55919 we no longer
create entries for empty ranges, so we can no longer land in a situation
where that check in MergeValues would succeed. Instead, the "merging" is
done by keeping the live values from the preceding empty ranges in
OpenRanges, and adding them to the first non-empty range.

Reviewers: aprantl, dblaikie, loladiro

Reviewed By: aprantl

Subscribers: llvm-commits

Tags: #debug-info, #llvm

Differential Revision: https://reviews.llvm.org/D59301

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357974 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Remove check on isAsmParserOnly from EVEX2VEX tablegenerator. NFCI
Craig Topper [Tue, 9 Apr 2019 07:40:19 +0000 (07:40 +0000)]
[X86] Remove check on isAsmParserOnly from EVEX2VEX tablegenerator. NFCI

There are no instructions VEX or EVEX instructions that set this field.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357973 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Have EVEX2VEX tablegenerator use HasVEX_L and HasEVEX_L2 fields instead of...
Craig Topper [Tue, 9 Apr 2019 07:40:14 +0000 (07:40 +0000)]
[X86] Have EVEX2VEX tablegenerator use HasVEX_L and HasEVEX_L2 fields instead of the composite EVEX_LL field. Remove the EVEX_LL field. NFCI

The composite existed to simplify some other tablegen code and not really in an
important way. Remove the combined field and just calculate the vector size
using two ifs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357972 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Use VEX_WIG for VPINSRB/W and VPEXTRB/W to match what is done for EVEX.
Craig Topper [Tue, 9 Apr 2019 07:40:10 +0000 (07:40 +0000)]
[X86] Use VEX_WIG for VPINSRB/W and VPEXTRB/W to match what is done for EVEX.

The instruction's document this as W0 for the VEX encoding. But there's a
footnote mentioning that VEX.W is ignored in 64-bit mode. And the main VEX
encoding description says the VEX.W bit is ignored for instructions that are
equivalent to a legacy SSE instruction that uses REX.W to select a GPR which
would apply here.

By making this match EVEX we can remove a special case of allowing EVEX2VEX to
turn an EVEX.WIG instruction into VEX.W0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357971 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Split the VEX_WPrefix in X86Inst tablegen class into 3 separate fields with...
Craig Topper [Tue, 9 Apr 2019 07:40:06 +0000 (07:40 +0000)]
[X86] Split the VEX_WPrefix in X86Inst tablegen class into 3 separate fields with clear meanings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357970 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ValueTracking] Use ConstantRange methods; NFC
Nikita Popov [Tue, 9 Apr 2019 07:13:09 +0000 (07:13 +0000)]
[ValueTracking] Use ConstantRange methods; NFC

Switch part of the computeOverflowForSignedAdd() implementation to
use Range.isAllNegative() rather than KnownBits.isNegative() and
similar. They do the same thing, but using the ConstantRange methods
allows dropping the KnownBits variables more easily in D60420.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357969 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[ValueTracking] Explicitly specify intersection type; NFC
Nikita Popov [Tue, 9 Apr 2019 07:13:03 +0000 (07:13 +0000)]
[ValueTracking] Explicitly specify intersection type; NFC

Preparation for D60420.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357968 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoInclude omitted word in comment.
Eric Christopher [Tue, 9 Apr 2019 06:35:47 +0000 (06:35 +0000)]
Include omitted word in comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357967 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[llvm-objdump] Migrate some functions from std::error_code to Error
Fangrui Song [Tue, 9 Apr 2019 05:41:24 +0000 (05:41 +0000)]
[llvm-objdump] Migrate some functions from std::error_code to Error

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357965 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agoAMDGPU/GlobalISel: Implement call lowering for shaders returning values
Tom Stellard [Tue, 9 Apr 2019 02:26:03 +0000 (02:26 +0000)]
AMDGPU/GlobalISel: Implement call lowering for shaders returning values

Reviewers: arsenm, nhaehnle

Subscribers: kzhuravl, jvesely, wdng, yaxunl, rovka, kristof.beyls, dstuttard, tpr, t-tye, volkan, llvm-commits

Differential Revision: https://reviews.llvm.org/D57166

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357964 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[PowerPC] initialize SchedModel according to platform.
Chen Zheng [Tue, 9 Apr 2019 01:25:25 +0000 (01:25 +0000)]
[PowerPC] initialize SchedModel according to platform.
Differential Revision: https://reviews.llvm.org/D60177

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357962 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agohwasan: Enable -hwasan-allow-ifunc by default.
Peter Collingbourne [Tue, 9 Apr 2019 00:25:59 +0000 (00:25 +0000)]
hwasan: Enable -hwasan-allow-ifunc by default.

It's been on in Android for a while without causing problems, so it's time
to make it the default and remove the flag.

Differential Revision: https://reviews.llvm.org/D60355

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357960 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[X86] Derive ssmem and sdmem from X86MemOperand. NFCI
Craig Topper [Tue, 9 Apr 2019 00:24:17 +0000 (00:24 +0000)]
[X86] Derive ssmem and sdmem from X86MemOperand. NFCI

This changes the operand type from v4f32/v2f64 to iPTR which seems more correct. But that doesn't seem to do anything other than change the comments in X86GenDAGISel.inc. Probably because we use a ComplexPattern to do the matching so there's no autogenerated code to change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357959 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] add tests for negate+sdiv; NFC
Sanjay Patel [Mon, 8 Apr 2019 22:55:10 +0000 (22:55 +0000)]
[InstCombine] add tests for negate+sdiv; NFC

PR41425:
https://bugs.llvm.org/show_bug.cgi?id=41425

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357953 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RuntimeDyld] Fix an ambiguous make_unique call.
Lang Hames [Mon, 8 Apr 2019 22:19:05 +0000 (22:19 +0000)]
[RuntimeDyld] Fix an ambiguous make_unique call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357950 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[RuntimeDyld] Decouple RuntimeDyldChecker from RuntimeDyld.
Lang Hames [Mon, 8 Apr 2019 21:50:48 +0000 (21:50 +0000)]
[RuntimeDyld] Decouple RuntimeDyldChecker from RuntimeDyld.

This will allow RuntimeDyldChecker (and rtdyld-check tests) to test a new JIT
linker: JITLink (https://reviews.llvm.org/D58704).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357947 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[BinaryFormat] Update Mach-O ARM64E CPU subtype and dumping
Shoaib Meenai [Mon, 8 Apr 2019 21:37:08 +0000 (21:37 +0000)]
[BinaryFormat] Update Mach-O ARM64E CPU subtype and dumping

The new value is taken from <mach/machine.h> in the MacOSX10.14 SDK from
Xcode 10.1. Update llvm-objdump and llvm-readobj accordingly.

Differential Revision: https://reviews.llvm.org/D58636

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357945 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] peek through fdiv to find a squared sqrt
Sanjay Patel [Mon, 8 Apr 2019 21:23:50 +0000 (21:23 +0000)]
[InstCombine] peek through fdiv to find a squared sqrt

A more general canonicalization between fdiv and fmul would not
handle this case because that would have to be limited by uses
to prevent 2 values from becoming 3 values:
(x/y) * (x/y) --> (x*x) / (y*y)

(But we probably should still have that limited -- but more general --
canonicalization independently of this change.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357943 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[TargetLowering] SimplifyDemandedBits - use DemandedElts in bitcast handling
Simon Pilgrim [Mon, 8 Apr 2019 20:59:38 +0000 (20:59 +0000)]
[TargetLowering] SimplifyDemandedBits - use DemandedElts in bitcast handling

Be more selective in the SimplifyDemandedBits -> SimplifyDemandedVectorElts bitcast call based on the demanded elts.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357942 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] add extra-use tests for fmul+sqrt; NFC
Sanjay Patel [Mon, 8 Apr 2019 20:37:34 +0000 (20:37 +0000)]
[InstCombine] add extra-use tests for fmul+sqrt; NFC

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357939 91177308-0d34-0410-b5e6-96231b3b80d8

5 years ago[InstCombine] Add more tests for signed saturing math overflow; NFC
Nikita Popov [Mon, 8 Apr 2019 20:02:47 +0000 (20:02 +0000)]
[InstCombine] Add more tests for signed saturing math overflow; NFC

Overflow conditions for sadd.sat and ssub.sat which can be determined
based on constant ranges, but not necessarily known bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357938 91177308-0d34-0410-b5e6-96231b3b80d8

5 years agollvm-undname: Fix more crashes and asserts on invalid inputs
Nico Weber [Mon, 8 Apr 2019 19:46:53 +0000 (19:46 +0000)]
llvm-undname: Fix more crashes and asserts on invalid inputs

For functions whose callers don't check that enough input is present,
add checks at the start of the function that enough input is there and
set Error otherwise.

For functions that return AST objects, return nullptr instead of
incomplete AST objects with nullptr fields if an error occurred during
the function.

Introduce a new function demangleDeclarator() for the sequence
demangleFullyQualifiedSymbolName(); demangleEncodedSymbol() and
use it in the two places that had this sequence. Let this new function
check that ConversionOperatorIdentifiers have a valid TargetType.

Some of the bad inputs found by oss-fuzz, others by inspection.

Differential Revision: https://reviews.llvm.org/D60354

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@357936 91177308-0d34-0410-b5e6-96231b3b80d8