OSDN Git Service

android-x86/external-llvm.git
5 years agoGlobalISel: Handle odd splits in fewerElementsVector for load/store
Matt Arsenault [Thu, 31 Jan 2019 02:46:05 +0000 (02:46 +0000)]
GlobalISel: Handle odd splits in fewerElementsVector for load/store

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

5 years agoGlobalISel: Implement narrowScalar for bswap
Matt Arsenault [Thu, 31 Jan 2019 02:34:03 +0000 (02:34 +0000)]
GlobalISel: Implement narrowScalar for bswap

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

5 years agoGlobalISel: Don't call changingInstruction before giving up
Matt Arsenault [Thu, 31 Jan 2019 02:22:39 +0000 (02:22 +0000)]
GlobalISel: Don't call changingInstruction before giving up

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

5 years agoGlobalISel: Allow bitcount ops to have different result type
Matt Arsenault [Thu, 31 Jan 2019 02:09:57 +0000 (02:09 +0000)]
GlobalISel: Allow bitcount ops to have different result type

For AMDGPU the result is always 32-bit for 64-bit inputs.

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

5 years agoGlobalISel: Use helper function for MMO splitting
Matt Arsenault [Thu, 31 Jan 2019 01:49:58 +0000 (01:49 +0000)]
GlobalISel: Use helper function for MMO splitting

Also fix an alignment bug getMachineMemOperand. If the
tracked value is null, the offset isn't tracked so the
base alignment needs to be reduced.

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

5 years ago[libFuzzer] update docs
Kostya Serebryany [Thu, 31 Jan 2019 01:47:29 +0000 (01:47 +0000)]
[libFuzzer] update docs

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

5 years ago[InstCombine] Expand testing for Windows (NFC)
Evandro Menezes [Thu, 31 Jan 2019 01:41:39 +0000 (01:41 +0000)]
[InstCombine] Expand testing for Windows (NFC)

Added the checks to the existing cases when the target is Win64.

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

5 years agoGlobalISel: Fix creating MMOs with align 0
Matt Arsenault [Thu, 31 Jan 2019 01:38:47 +0000 (01:38 +0000)]
GlobalISel: Fix creating MMOs with align 0

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

5 years ago[X86] Add a 32-bit command line to avx512-intrinsics.ll. Move all 64-bit mode only...
Craig Topper [Thu, 31 Jan 2019 00:49:40 +0000 (00:49 +0000)]
[X86] Add a 32-bit command line to avx512-intrinsics.ll. Move all 64-bit mode only intrinsics to avx512-intrinsics-x86_64.ll.

Most of the other intrinsic tests have a 32-bit command lines.

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

5 years ago[InstCombine] Simplify check clauses in test (NFC)
Evandro Menezes [Thu, 31 Jan 2019 00:49:27 +0000 (00:49 +0000)]
[InstCombine] Simplify check clauses in test (NFC)

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

5 years agoReland "gn build: Add BPF target."
Peter Collingbourne [Thu, 31 Jan 2019 00:42:02 +0000 (00:42 +0000)]
Reland "gn build: Add BPF target."

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

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

5 years agolit: Let lit.util.which() return a normcase()ed path
Nico Weber [Thu, 31 Jan 2019 00:40:43 +0000 (00:40 +0000)]
lit: Let lit.util.which() return a normcase()ed path

LLVMConfig.with_environment() uses os.path.normcase(os.path.normpath(x)) to
normalize temporary env vars. LLVMConfig.use_clang() uses with_environment() to
temporarily set PATH and then look for clang there. This means that on Windows,
clang will be run with a path like c:\foo\bin\clang.EXE (with a lower-case
"C:").

lit.util.which() used to not do this, which means the executables added in
clang/test/lit.cfg.py (e.g. c-index-test) were run with a path like
C:\foo\bin\c-index-test.EXE (because both CMake and GN happen to write
clang_tools_dir with an upper-case C to lit.site.cfg.py).

clang/test/Index/pch-from-libclang.c requires that both c-index-test and clang
use _exactly_ the same resource dir path (same case and everything), because a
hash of the resource directory is used as module cache path.

This patch is necessary but not sufficient to make pch-from-libclang.c pass on
Windows.

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

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

5 years ago[LegalizeVectorTypes] Allow illegal indices when splitting extract_vector_elt
Thomas Lively [Thu, 31 Jan 2019 00:35:37 +0000 (00:35 +0000)]
[LegalizeVectorTypes] Allow illegal indices when splitting extract_vector_elt

Summary:
Fixes PR40267, in which the removed assertion was triggering on
perfectly valid IR. As far as I can tell, constant out of bounds
indices should be allowed when splitting extract_vector_elt, since
they will simply be propagated as out of bounds indices in the
resulting split vector and handled appropriately elsewhere.

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya

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

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

5 years ago[LegalizeTypes] Use report_fatal_error instead of llvm_unreachable in the default...
Craig Topper [Thu, 31 Jan 2019 00:04:48 +0000 (00:04 +0000)]
[LegalizeTypes] Use report_fatal_error instead of llvm_unreachable in the default case of some type legalization handlers that can be reached with intrinsics with result or operands that aren't legal types.

These can be triggered by mistakenly using a 64-bit mode only intrinsics with a -mtriple=i686. Using report_fatal_error gives a better experience for this mistake in release builds instead of probably crashing.

We already do this for some of the vector type legalization handles.

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

5 years ago[X86] Remove handling of ISD::INTRINSIC_WO_CHAIN in ReplaceNodeResults.
Craig Topper [Thu, 31 Jan 2019 00:04:46 +0000 (00:04 +0000)]
[X86] Remove handling of ISD::INTRINSIC_WO_CHAIN in ReplaceNodeResults.

I believe this was there to handle avx512bw intrinsics that returned i64 type in 32-bit mode. But all those intrinsics have since been changed to v64i1 results or replaced with generic IR.

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

5 years ago[X86] Add test case for pr40539. NFC
Craig Topper [Thu, 31 Jan 2019 00:04:42 +0000 (00:04 +0000)]
[X86] Add test case for pr40539. NFC

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

5 years ago[WebAssembly] Remove TODO on wasm.extract.exception intrinsic (NFC)
Heejin Ahn [Wed, 30 Jan 2019 23:53:36 +0000 (23:53 +0000)]
[WebAssembly] Remove TODO on wasm.extract.exception intrinsic (NFC)

Summary:
We planned to delete this intrinsic and do custom lowering from
`wasm.get.exception`, which has a token argument, to
`EXTRACT_EXCEPTION`, a wasm pseudo instruction that simulates popping a
value from the wasm stack.

To do that, we need to introduce a new `WebAssemblyISD` node for this,
which itself is not a problem, but also have to introduce the
`WebAssemblyISD` namespace in SelectionDAGBuilder.cpp. I don't think any
other targets are doing that in the file. And also putting a
target-specific intrinsic in the common file is a little weird too. (All
other intrinsic functions in this `visitIntrinsicCall` functions are not
target-specific ones. Other target-specific intrinsics are usually
handled in `lib/Target/[TargetName]/[TargetName]ISelLowering.cpp`. The
reason we can't do this is it has a token argument.

Anyway, so I think I prefer the current code with one redundant
intrinsic more than adding one more `WebAssemblyISD` node and
also introducing the `WebAssemblyISD` namespace into
SelectionDAGBuilder.cpp. What do you think?

Reviewers: dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

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

5 years ago[RuntimeDyld] Don't try to allocate sections with align 0.
Zachary Turner [Wed, 30 Jan 2019 23:52:32 +0000 (23:52 +0000)]
[RuntimeDyld] Don't try to allocate sections with align 0.

ELF sections allow 0 for the alignment, which is specified to
be the same as 1.  However many clients do not expect this and
will behave poorly in the presence of a 0-aligned section (for
example by trying to modulo something by the section alignment).
We can be more polite by making sure that we always pass a
non-zero value to clients.

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

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

5 years ago[GlobalISel][AArch64] Select G_FEXP
Jessica Paquette [Wed, 30 Jan 2019 23:46:15 +0000 (23:46 +0000)]
[GlobalISel][AArch64] Select G_FEXP

This teaches the legalizer to handle G_FEXP in AArch64. As a result, it also
allows us to select G_FEXP.

It...

- Updates the legalizer-info tests
- Adds a test for legalizing exp
- Updates the existing fp tests to show that we can now select G_FEXP

https://reviews.llvm.org/D57483

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

5 years ago[GlobalISel][LegalizerHelper] Add some missing MI change observer calls.
Amara Emerson [Wed, 30 Jan 2019 23:42:46 +0000 (23:42 +0000)]
[GlobalISel][LegalizerHelper] Add some missing MI change observer calls.

No test as it's a preventative fix.

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

5 years ago[PowerPC] delete no more needed workaround for readsRegister() in PowerPC
Chen Zheng [Wed, 30 Jan 2019 23:18:38 +0000 (23:18 +0000)]
[PowerPC] delete no more needed workaround for readsRegister() in PowerPC
Differential Revision: https://reviews.llvm.org/D57439

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

5 years agoMIR: Reject non-power-of-4 alignments in MMO parsing
Matt Arsenault [Wed, 30 Jan 2019 23:09:28 +0000 (23:09 +0000)]
MIR: Reject non-power-of-4 alignments in MMO parsing

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

5 years ago[GlobalISel][AArch64] Select G_FABS
Jessica Paquette [Wed, 30 Jan 2019 22:54:21 +0000 (22:54 +0000)]
[GlobalISel][AArch64] Select G_FABS

This adds instruction selection support for G_FABS in AArch64. It also updates
the existing basic FP tests, adds a selection test for G_FABS.

https://reviews.llvm.org/D57418

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

5 years ago[WebAssembly] MC: Use WritePatchableLEB helper function. NFC.
Sam Clegg [Wed, 30 Jan 2019 22:47:35 +0000 (22:47 +0000)]
[WebAssembly] MC: Use WritePatchableLEB helper function. NFC.

Subscribers: dschuff, jgravelle-google, aheejin, sunfish, llvm-commits

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

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

5 years ago[WebAssembly] Restore stack pointer right after catch instruction
Heejin Ahn [Wed, 30 Jan 2019 22:44:45 +0000 (22:44 +0000)]
[WebAssembly] Restore stack pointer right after catch instruction

Summary:
After the staack is unwound due to a thrown exxception,
`__stack_pointer` global can point to an invalid address. So
a `global.set` to restore `__stack_pointer` should be inserted right
after `catch` instruction.

But after r352598 the `global.set` instruction is inserted not right
after `catch` but after `block` - `br-on-exn` - `end_block` -
`extract_exception` sequence. This CL fixes it.

While doing that, we can actually move ReplacePhysRegs pass after
LateEHPrepare and merge EHRestoreStackPointer pass into LateEHPrepare,
and now placing `global.set` to `__stack_pointer` right after `catch` is
much easier. Otherwise it is hard to guarantee that `global.set` is
still right after `catch` and not touched with other transformations, in
which case we have to do something to hoist it.

Reviewers: dschuff

Subscribers: mgorny, sbc100, jgravelle-google, sunfish, llvm-commits

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

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

5 years ago[DAGCombiner] sub X, 0/1 --> add X, 0/-1
Sanjay Patel [Wed, 30 Jan 2019 22:41:35 +0000 (22:41 +0000)]
[DAGCombiner] sub X, 0/1 --> add X, 0/-1

This extends the existing transform for:
add X, 0/1 --> sub X, 0/-1
...to allow the sibling subtraction fold.

This pattern could regress with the proposed change in D57401.

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

5 years ago[AArch64][x86] add tests for add/sub signbits fold; NFC
Sanjay Patel [Wed, 30 Jan 2019 21:58:20 +0000 (21:58 +0000)]
[AArch64][x86] add tests for add/sub signbits fold; NFC

As discussed/shown in D57401, we are missing a fold for
subtract of 0/1 --> add 0/-1.

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

5 years ago[GlobalISel][AArch64] Add instruction selection support for @llvm.log2
Jessica Paquette [Wed, 30 Jan 2019 21:16:04 +0000 (21:16 +0000)]
[GlobalISel][AArch64] Add instruction selection support for @llvm.log2

This teaches GlobalISel to emit a RTLib call for @llvm.log2 when it encounters
it.

It updates the existing floating point tests to show that we don't fall back on
the intrinsic, and select the correct instructions. It also adds a legalizer
test for G_FLOG2.

https://reviews.llvm.org/D57357

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

5 years ago[GlobalISel][AArch64] Add instruction selection support for @llvm.sqrt
Jessica Paquette [Wed, 30 Jan 2019 21:03:52 +0000 (21:03 +0000)]
[GlobalISel][AArch64] Add instruction selection support for @llvm.sqrt

This teaches the legalizer about G_FSQRT in AArch64. Also adds a legalizer
test for G_FSQRT, a selection test for it, and updates existing floating point
tests.

https://reviews.llvm.org/D57361

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

5 years ago[GlobalISel] Add IRTranslator support for @llvm.sqrt -> G_FSQRT
Jessica Paquette [Wed, 30 Jan 2019 20:58:14 +0000 (20:58 +0000)]
[GlobalISel] Add IRTranslator support for @llvm.sqrt -> G_FSQRT

Follow-up commit to https://reviews.llvm.org/D57359. (r352668)

This adds IRTranslator support for recognising a @llvm.sqrt intrinsic and
translating it into a G_FSQRT.

https://reviews.llvm.org/D57360

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

5 years ago[GlobalISel] Introduce a G_FSQRT generic instruction
Jessica Paquette [Wed, 30 Jan 2019 20:49:50 +0000 (20:49 +0000)]
[GlobalISel] Introduce a G_FSQRT generic instruction

This introduces a generic instruction for computing the floating point
square root of a value.

Right now, we can't select @llvm.sqrt, so this is working towards fixing that.

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

5 years agoReverting r352642 - Handle restore instructions in LiveDebugValues - as it's causing
Wolfgang Pieb [Wed, 30 Jan 2019 20:37:14 +0000 (20:37 +0000)]
Reverting r352642 - Handle restore instructions in LiveDebugValues - as it's causing
assertions on some buildbots.

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

5 years agoAdd a 'dynamic' parameter to the objectsize intrinsic
Erik Pilkington [Wed, 30 Jan 2019 20:34:35 +0000 (20:34 +0000)]
Add a 'dynamic' parameter to the objectsize intrinsic

This is meant to be used with clang's __builtin_dynamic_object_size.
When 'true' is passed to this parameter, the intrinsic has the
potential to be folded into instructions that will be evaluated
at run time. When 'false', the objectsize intrinsic behaviour is
unchanged.

rdar://32212419

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

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

5 years ago[Tests] Add tests for propagation of undef elements in vector GEPs
Philip Reames [Wed, 30 Jan 2019 20:06:24 +0000 (20:06 +0000)]
[Tests] Add tests for propagation of undef elements in vector GEPs

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

5 years ago[X86] Mark EMMS and FEMMS as clobbering MM0-7 and ST0-7.
Craig Topper [Wed, 30 Jan 2019 19:57:01 +0000 (19:57 +0000)]
[X86] Mark EMMS and FEMMS as clobbering MM0-7 and ST0-7.

This fixes the test case in PR35982 by preventing MMX instructions that read MM0-7 from being moved below EMMS/FEMMS by the post RA scheduler.

Though as discussed in bugzilla, this is not a complete fix. There is still the possibility of reordering in IR or by the pre-RA scheduler.

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

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

5 years agogn build: Set executable bit on get.py
Nico Weber [Wed, 30 Jan 2019 19:53:58 +0000 (19:53 +0000)]
gn build: Set executable bit on get.py

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

5 years agoSimplifyDemandedVectorElts for all intrinsics
Philip Reames [Wed, 30 Jan 2019 19:21:11 +0000 (19:21 +0000)]
SimplifyDemandedVectorElts for all intrinsics

The point is that this simplifies integration of new intrinsics into SimplifiedDemandedVectorElts, and ensures we don't miss any existing ones.

This is intended to be NFC-ish, but as seen from the diffs, can produce slightly different output.  This is due to order of transforms w/in instcombine resulting in two slightly different fixed points.  That's something we should fix, but isn't a problem w/this patch per se.

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

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

5 years agoThe test comitted with r348896 needed -march=x86=64 on the llc command line.
Wolfgang Pieb [Wed, 30 Jan 2019 19:15:43 +0000 (19:15 +0000)]
The test comitted with r348896 needed -march=x86=64 on the llc command line.

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

5 years agoRevert "gn build: Add BPF target."
Yonghong Song [Wed, 30 Jan 2019 19:13:16 +0000 (19:13 +0000)]
Revert "gn build: Add BPF target."

This reverts commit r352638.

The change in this patch is not trivial and it is merged
without component owner approval.

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

5 years ago[DEBUGINFO] Handle restore instructions in LiveDebugValues
Wolfgang Pieb [Wed, 30 Jan 2019 18:34:07 +0000 (18:34 +0000)]
[DEBUGINFO] Handle restore instructions in LiveDebugValues

The LiveDebugValues pass recognizes spills but not restores, which can
cause large gaps in location information for some variables, depending
on control flow. This patch make LiveDebugValues recognize restores and
generate appropriate DBG_VALUE instructions.

Reviewers: aprantl, NicolaPrica

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

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

5 years ago[llvm-objcopy][NFC] More error propagation (linkToBuildIdDir)
Jordan Rupprecht [Wed, 30 Jan 2019 18:13:30 +0000 (18:13 +0000)]
[llvm-objcopy][NFC] More error propagation (linkToBuildIdDir)

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

5 years agogn build: Add BPF target.
Peter Collingbourne [Wed, 30 Jan 2019 18:04:08 +0000 (18:04 +0000)]
gn build: Add BPF target.

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

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

5 years agoGlobalISel: Add simpler way of always specifying custom lowering
Matt Arsenault [Wed, 30 Jan 2019 17:52:25 +0000 (17:52 +0000)]
GlobalISel: Add simpler way of always specifying custom lowering

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

5 years agoGlobalISel: Add assert that legalize mutation makes sense
Matt Arsenault [Wed, 30 Jan 2019 17:52:23 +0000 (17:52 +0000)]
GlobalISel: Add assert that legalize mutation makes sense

I've repeatedly encountered bugs resulting from custom legalize
mutations returning nonsense legalize results, such as increasing the
number of elements for FewerElements. Add an assert function to make
sure the type to mutate to is consistent with the legalize action.

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

5 years agoAMDGPU: Stop generating unused intrinsic .inc files
Matt Arsenault [Wed, 30 Jan 2019 17:25:37 +0000 (17:25 +0000)]
AMDGPU: Stop generating unused intrinsic .inc files

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

5 years ago[X86][AVX] Prefer to combine shuffle to broadcasts whenever possible
Simon Pilgrim [Wed, 30 Jan 2019 16:19:19 +0000 (16:19 +0000)]
[X86][AVX] Prefer to combine shuffle to broadcasts whenever possible

This is the first step towards improving broadcast support on AVX1 targets.

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

5 years ago[utils] Fix update scripts output when run on python3.
Simon Pilgrim [Wed, 30 Jan 2019 16:15:59 +0000 (16:15 +0000)]
[utils] Fix update scripts output when run on python3.

This fixes a "bytes-like object is required, not 'str'" python3 error I hit on update_llc_test_checks.py (but present on the other scripts as well) by matching what update_mca_test_checks.py already does, plus I've added an explicit 'utf-8' encoding.

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

5 years ago[llvm-exegesis] Add throughput mode.
Clement Courbet [Wed, 30 Jan 2019 16:02:20 +0000 (16:02 +0000)]
[llvm-exegesis] Add throughput mode.

Summary:
This just uses the latency benchmark runner on the parallel uops snippet
generator.

Fixes PR37698.

Reviewers: gchatelet

Subscribers: tschuett, RKSimon, llvm-commits

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

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

5 years ago[llvm-readobj] - Few minor cleanups. NFC.
George Rimar [Wed, 30 Jan 2019 15:39:05 +0000 (15:39 +0000)]
[llvm-readobj] - Few minor cleanups. NFC.

Minor code simplifications, relocations,
renamings (to match LLVM style).

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

5 years ago[CMake] Accept ENTITLEMENTS in llvm_add_library()
Stefan Granitz [Wed, 30 Jan 2019 15:10:08 +0000 (15:10 +0000)]
[CMake] Accept ENTITLEMENTS in llvm_add_library()

Summary: We added support for code signing entitlements in add_llvm_executable() with D54443. In the future it would be useful to have this functionality available also for libraries.

Reviewers: beanz, bogner

Reviewed By: bogner

Subscribers: mgorny, llvm-commits, lldb-commits, #lldb

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

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

5 years ago[InstCombine][x86] add tests for addcarry intrinsic; NFC
Sanjay Patel [Wed, 30 Jan 2019 15:07:49 +0000 (15:07 +0000)]
[InstCombine][x86] add tests for addcarry intrinsic; NFC

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

5 years ago[llvm-objcopy] Support -X|--discard-locals.
Jordan Rupprecht [Wed, 30 Jan 2019 14:58:13 +0000 (14:58 +0000)]
[llvm-objcopy] Support -X|--discard-locals.

Summary:
This adds support for the --discard-locals flag, which acts similarly to --discard-all, except it only applies to compiler-generated symbols (i.e. symbols starting with `.L` in ELF).

I am not sure about COFF local symbols: those appear to also use `.L` in most cases, but also use just `L` in other cases, so for now I am just leaving it unimplemented there.

Fixes PR36160

Reviewers: jhenderson, alexshap, jakehehrlich, mstorsjo, espindola

Reviewed By: jhenderson

Subscribers: llvm-commits, emaste, arichardson

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

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

5 years ago[llvm-objcopy][NFC] More error propagation
Jordan Rupprecht [Wed, 30 Jan 2019 14:36:53 +0000 (14:36 +0000)]
[llvm-objcopy][NFC] More error propagation

Summary: Do some more error cleanup, removing some dependencies from llvm-objcopy's error/reportError in [ELF/COFF]Objcopy methods.

Reviewers: jhenderson, alexshap, jakehehrlich, mstorsjo, espindola

Subscribers: emaste, arichardson

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

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

5 years ago[llvm-readobj] - Simplify the code.
George Rimar [Wed, 30 Jan 2019 14:08:55 +0000 (14:08 +0000)]
[llvm-readobj] - Simplify the code.

We have a Field struct which has a StringRef member Str.

The code needs to create and keep alive the temporarily
std::string variables because of that.
That is not convenient and makes the code be more complicated
than it could be.

There seems to be no reason to keep Str be StringRef.
The patch changes it to be std::string and
rearranges the code around slightly.

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

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

5 years agoProperly use DT.verify in LoopSimplifyCFG
Max Kazantsev [Wed, 30 Jan 2019 12:32:19 +0000 (12:32 +0000)]
Properly use DT.verify in LoopSimplifyCFG

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

5 years agoEnable IRCE for narrow latch by defailt
Max Kazantsev [Wed, 30 Jan 2019 11:25:12 +0000 (11:25 +0000)]
Enable IRCE for narrow latch by defailt

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

5 years ago[RISCV] Insert R_RISCV_ALIGN relocation type and Nops for code alignment when linker...
Shiva Chen [Wed, 30 Jan 2019 11:16:59 +0000 (11:16 +0000)]
[RISCV] Insert R_RISCV_ALIGN relocation type and Nops for code alignment when linker relaxation enabled

Linker relaxation may change code size. We need to fix up the alignment
of alignment directive in text section by inserting Nops and R_RISCV_ALIGN
relocation type. So then linker could satisfy the alignment by removing Nops.

To do this:

1. Add shouldInsertExtraNopBytesForCodeAlign target hook to calculate
   the Nops we need to insert.

2. Add shouldInsertFixupForCodeAlign target hook to insert
   R_RISCV_ALIGN fixup type.

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

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

5 years ago[NativePDB] Fix access to both old & new fpo data entries from dbi stream
Aleksandr Urakov [Wed, 30 Jan 2019 10:40:45 +0000 (10:40 +0000)]
[NativePDB] Fix access to both old & new fpo data entries from dbi stream

Summary:
This patch fixes access to fpo streams in native pdb from DbiStream and makes
code consistent with DbiStreamBuilder.

Patch By: leonid.mashinskiy

Reviewers: zturner, aleksandr.urakov

Reviewed By: zturner

Subscribers: llvm-commits

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

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

5 years agoAdd lit config file to skip tests if WebAssembly target is not available.
Douglas Yung [Wed, 30 Jan 2019 09:49:39 +0000 (09:49 +0000)]
Add lit config file to skip tests if WebAssembly target is not available.

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

5 years agoCommit tests for changes in revision D41342
Dmitry Venikov [Wed, 30 Jan 2019 09:49:25 +0000 (09:49 +0000)]
Commit tests for changes in revision D41342

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

5 years ago[X86] Remove unnecessary code from the top of handleCompareFP in X86FloatingPoint...
Craig Topper [Wed, 30 Jan 2019 08:04:06 +0000 (08:04 +0000)]
[X86] Remove unnecessary code from the top of handleCompareFP in X86FloatingPoint.cpp.

There were checks to ensure some tables were sorted, but those tables aren't used by this function. The same tables are checked in the function that does use them. Maybe this was copy/pasted?

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

5 years ago[X86] Remove a couple places where we unnecessarily pass 0 to the EmitPriority of...
Craig Topper [Wed, 30 Jan 2019 07:33:24 +0000 (07:33 +0000)]
[X86] Remove a couple places where we unnecessarily pass 0 to the EmitPriority of some FP instruction aliases. NFC

As far as I can tell we already won't emit these aliases due to an operand count check in the tablegen code. Removing these because I couldn't make sense of the inconsistency between fadd and fmul from reading the code.

I checked the AsmMatcher and AsmWriter files before and after this change and there were no differences.

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

5 years ago[X86] Add FPSW as a Def on some FP instructions that were missing it.
Craig Topper [Wed, 30 Jan 2019 07:08:44 +0000 (07:08 +0000)]
[X86] Add FPSW as a Def on some FP instructions that were missing it.

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

5 years ago[NFC] fix trivial typos in comments
Hiroshi Inoue [Wed, 30 Jan 2019 05:26:31 +0000 (05:26 +0000)]
[NFC] fix trivial typos in comments

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

5 years agoGlobalISel: Implement fewerElementsVector for select
Matt Arsenault [Wed, 30 Jan 2019 04:19:31 +0000 (04:19 +0000)]
GlobalISel: Implement fewerElementsVector for select

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

5 years ago[IR] Use CallBase to simplify some code
Craig Topper [Wed, 30 Jan 2019 03:43:41 +0000 (03:43 +0000)]
[IR] Use CallBase to simplify some code

Summary:
This patch does the following to simplify the asm-goto patch

-Move isInlineAsm from CallInst to CallBase to share with CallBrInst in the asm-goto patch.
-Forward CallSite's data_operands_begin()/data_operands_end() to CallBase's implementation.
-Forward CallSite's getOperandBundlesAsDefs to CallBase.

Reviewers: chandlerc

Reviewed By: chandlerc

Subscribers: nickdesaulniers, llvm-commits

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

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

5 years agoAMDGPU/GlobalISel: Fix clamping shifts with 16-bit insts
Matt Arsenault [Wed, 30 Jan 2019 03:36:25 +0000 (03:36 +0000)]
AMDGPU/GlobalISel: Fix clamping shifts with 16-bit insts

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

5 years ago[WebAssembly] Exception handling: Switch to the new proposal
Heejin Ahn [Wed, 30 Jan 2019 03:21:57 +0000 (03:21 +0000)]
[WebAssembly] Exception handling: Switch to the new proposal

Summary:
This switches the EH implementation to the new proposal:
https://github.com/WebAssembly/exception-handling/blob/master/proposals/Exceptions.md
(The previous proposal was
 https://github.com/WebAssembly/exception-handling/blob/master/proposals/old/Exceptions.md)

- Instruction changes
  - Now we have one single `catch` instruction that returns a except_ref
    value
  - `throw` now can take variable number of operations
  - `rethrow` does not have 'depth' argument anymore
  - `br_on_exn` queries an except_ref to see if it matches the tag and
    branches to the given label if true.
  - `extract_exception` is a pseudo instruction that simulates popping
    values from wasm stack. This is to make `br_on_exn`, a very special
    instruction, work: `br_on_exn` puts values onto the stack only if it
    is taken, and the # of values can vay depending on the tag.

- Now there's only one `catch` per `try`, this patch removes all special
  handling for terminate pad with a call to `__clang_call_terminate`.
  Before it was the only case there are two catch clauses (a normal
  `catch` and `catch_all` per `try`).

- Make `rethrow` act as a terminator like `throw`. This splits BB after
  `rethrow` in WasmEHPrepare, and deletes an unnecessary `unreachable`
  after `rethrow` in LateEHPrepare.

- Now we stop at all catchpads (because we add wasm `catch` instruction
  that catches all exceptions), this creates new
  `findWasmUnwindDestinations` function in SelectionDAGBuilder.

- Now we use `br_on_exn` instrution to figure out if an except_ref
  matches the current tag or not, LateEHPrepare generates this sequence
  for catch pads:
```
  catch
  block i32
  br_on_exn $__cpp_exception
  end_block
  extract_exception
```

- Branch analysis for `br_on_exn` in WebAssemblyInstrInfo

- Other various misc. changes to switch to the new proposal.

Reviewers: dschuff

Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits

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

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

5 years agoGlobalISel: Use appropriate extension for legalizing select conditions
Matt Arsenault [Wed, 30 Jan 2019 02:57:43 +0000 (02:57 +0000)]
GlobalISel: Use appropriate extension for legalizing select conditions

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

5 years ago[PowerPC] [NFC] Create a helper function to copy register to particular register...
Zi Xuan Wu [Wed, 30 Jan 2019 02:56:22 +0000 (02:56 +0000)]
[PowerPC] [NFC] Create a helper function to copy register to particular register class at PPCFastISel

Make copy register code as common function as following.

unsigned copyRegToRegClass(const TargetRegisterClass *ToRC, unsigned SrcReg, unsigned Flag = 0, unsigned SubReg = 0);

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

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

5 years agoGlobalISel: Support narrowScalar for uneven loads
Matt Arsenault [Wed, 30 Jan 2019 02:35:38 +0000 (02:35 +0000)]
GlobalISel: Support narrowScalar for uneven loads

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

5 years ago[WebAssembly] Optimize BUILD_VECTOR lowering for size
Thomas Lively [Wed, 30 Jan 2019 02:23:29 +0000 (02:23 +0000)]
[WebAssembly] Optimize BUILD_VECTOR lowering for size

Summary:
Implements custom lowering logic that finds the optimal value for the
initial splat of the vector and either uses it or uses v128.const if
it is available and if it would produce smaller code. This logic
replaces large TableGen ISEL patterns that would lower all non-splat
BUILD_VECTORs into a splat followed by a fixed number of replace_lane
instructions. This CL fixes PR39685.

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits

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

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

5 years agoGlobalISel: Handle some odd splits in fewerElementsVector
Matt Arsenault [Wed, 30 Jan 2019 02:22:13 +0000 (02:22 +0000)]
GlobalISel: Handle some odd splits in fewerElementsVector

Also add some quick hacks to AMDGPU legality for the tests.

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

5 years agoAdd enum values to CodeGenOpt::Level
Sam Clegg [Wed, 30 Jan 2019 02:08:34 +0000 (02:08 +0000)]
Add enum values to CodeGenOpt::Level

The absolute values of this enum are important at least in that
they get printed by SelectionDAGISel. e.g:
  `Before: -O2 ; After: -O0`

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

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

5 years agoGlobalISel: Handle more cases for widenScalar for G_STORE
Matt Arsenault [Wed, 30 Jan 2019 02:04:31 +0000 (02:04 +0000)]
GlobalISel: Handle more cases for widenScalar for G_STORE

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

5 years ago[PowerPC] more opportunity for converting reg+reg to reg+imm
Chen Zheng [Wed, 30 Jan 2019 01:57:01 +0000 (01:57 +0000)]
[PowerPC] more opportunity for converting reg+reg to reg+imm
Differential Revision: https://reviews.llvm.org/D57314

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

5 years agoAdd 8.0 release bug to merge request script
Matt Arsenault [Wed, 30 Jan 2019 01:10:47 +0000 (01:10 +0000)]
Add 8.0 release bug to merge request script

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

5 years agoGlobalISel: Verify memory size for load/store
Matt Arsenault [Wed, 30 Jan 2019 01:10:42 +0000 (01:10 +0000)]
GlobalISel: Verify memory size for load/store

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

5 years agoRemove a redundant space from an error message; NFC
George Burgess IV [Wed, 30 Jan 2019 00:28:56 +0000 (00:28 +0000)]
Remove a redundant space from an error message; NFC

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

5 years ago[WebAssembly] Add missing SymbolRef update from rL352551
Sam Clegg [Wed, 30 Jan 2019 00:15:48 +0000 (00:15 +0000)]
[WebAssembly] Add missing SymbolRef update from rL352551

This change broke some MC tests which are now fixed.

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

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

5 years ago[WebAssembly] Lower SCALAR_TO_VECTOR to splats
Thomas Lively [Tue, 29 Jan 2019 23:44:48 +0000 (23:44 +0000)]
[WebAssembly] Lower SCALAR_TO_VECTOR to splats

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, sunfish

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

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

5 years agoGlobalISel: Fix unused variable warning in release builds
Matt Arsenault [Tue, 29 Jan 2019 23:38:42 +0000 (23:38 +0000)]
GlobalISel: Fix unused variable warning in release builds

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

5 years ago[IR] Use CallBase to reduce code duplication. NFC
Craig Topper [Tue, 29 Jan 2019 23:31:54 +0000 (23:31 +0000)]
[IR] Use CallBase to reduce code duplication. NFC

Noticed in the asm-goto patch. Callbr needs to go here too. One cast and call is better than 3.

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

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

5 years agoGlobalISel: Verify pointer casts
Matt Arsenault [Tue, 29 Jan 2019 23:29:00 +0000 (23:29 +0000)]
GlobalISel: Verify pointer casts

Not sure if the old AArch64 tests should be just
deleted or not.

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

5 years agoGlobalISel: Partially implement widenScalar for MERGE_VALUES
Matt Arsenault [Tue, 29 Jan 2019 23:17:35 +0000 (23:17 +0000)]
GlobalISel: Partially implement widenScalar for MERGE_VALUES

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

5 years agoCheck bool attribute value in getOptionalBoolLoopAttribute.
Alina Sbirlea [Tue, 29 Jan 2019 22:33:20 +0000 (22:33 +0000)]
Check bool attribute value in getOptionalBoolLoopAttribute.

Summary:
Check the bool value of the attribute in getOptionalBoolLoopAttribute
not just its existance.
Eliminates the warning noise generated when vectorization is explicitly disabled.

Reviewers: Meinersbur, hfinkel, dmgreen

Subscribers: jlebar, sanjoy, llvm-commits

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

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

5 years ago[WebAssembly] Ensure BasicSymbolRef.getRawDataRefImpl().p is non-null
Sam Clegg [Tue, 29 Jan 2019 22:22:32 +0000 (22:22 +0000)]
[WebAssembly] Ensure BasicSymbolRef.getRawDataRefImpl().p is non-null

Store a non-zero value to ref.d.a and use ref.d.b to store the symbol
index.  This means that ref.p is never null, which was confusing
llvm-nm.

Fixes PR40497

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

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

5 years ago[docs] Prevent O0 optnone for opt input
Shoaib Meenai [Tue, 29 Jan 2019 22:17:51 +0000 (22:17 +0000)]
[docs] Prevent O0 optnone for opt input

If we just compile with -O0, clang will add optnone attributes
everywhere, so opt won't actually be able to perform any passes.
Instruct clang to not emit the optnone so opt can do its thing.

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

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

5 years ago[AArch64][GlobalISel] Unmerge into scalars from a vector should use FPR bank.
Amara Emerson [Tue, 29 Jan 2019 21:19:33 +0000 (21:19 +0000)]
[AArch64][GlobalISel] Unmerge into scalars from a vector should use FPR bank.

This currently shows up as a selection fallback since the dest regs were given
GPR banks but the source was a vector FPR reg.

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

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

5 years ago[DWARF] Emit reasonable debug info for empty .s files.
Paul Robinson [Tue, 29 Jan 2019 20:53:51 +0000 (20:53 +0000)]
[DWARF] Emit reasonable debug info for empty .s files.

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

5 years ago[InstCombine] canonicalize cmp/select form of uadd saturate with constant
Sanjay Patel [Tue, 29 Jan 2019 20:02:45 +0000 (20:02 +0000)]
[InstCombine] canonicalize cmp/select form of uadd saturate with constant

I'm circling back around to a loose end from D51929.

The backend (either CGP or DAG) doesn't recognize this pattern, so we end up with different asm for these IR variants.

Regardless of any future changes to canonicalize to saturation/overflow intrinsics, we want to get raw IR variations
into the minimal number of raw IR forms. If/when we can canonicalize to intrinsics, that will make that step easier.

  Pre: C2 == ~C1
  %a = add i32 %x, C1
  %c = icmp ugt i32 %x, C2
  %r = select i1 %c, i32 -1, i32 %a
  =>
  %a = add i32 %x, C1
  %c2 = icmp ult i32 %x, C2
  %r = select i1 %c2, i32 %a, i32 -1

  https://rise4fun.com/Alive/pkH

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

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

5 years ago[DAGCombiner] fold extract_subvector of extract_subvector
Sanjay Patel [Tue, 29 Jan 2019 19:13:39 +0000 (19:13 +0000)]
[DAGCombiner] fold extract_subvector of extract_subvector

This is the sibling fold for insert-of-insert that was added with D56604.

Now that we have x86 shuffle narrowing (D57156), this change shows improvements for
lots of AVX512 reduction code (not sure that we would ever expect extract-of-extract otherwise).

There's a small regression in some of the partial-permute tests (extracting followed by splat).
That is tracked by PR40500:
https://bugs.llvm.org/show_bug.cgi?id=40500

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

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

5 years ago[VFS] Fix warning and use better check.
Michael J. Spencer [Tue, 29 Jan 2019 19:07:15 +0000 (19:07 +0000)]
[VFS] Fix warning and use better check.

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

5 years agoGlobalISel: Fix narrowScalar for load/store with different mem size
Matt Arsenault [Tue, 29 Jan 2019 18:13:02 +0000 (18:13 +0000)]
GlobalISel: Fix narrowScalar for load/store with different mem size

This was ignoring the memory size, and producing multiple loads/stores
if the operand size was different from the memory size.

I assume this is the intent of not having an explicit G_ANYEXTLOAD
(although I think that would probably be better).

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

5 years ago[x86] add tests for vector bool math; NFC
Sanjay Patel [Tue, 29 Jan 2019 17:00:47 +0000 (17:00 +0000)]
[x86] add tests for vector bool math; NFC

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

5 years ago[AArch64] add tests for vector bool math; NFC
Sanjay Patel [Tue, 29 Jan 2019 17:00:07 +0000 (17:00 +0000)]
[AArch64] add tests for vector bool math; NFC

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

5 years ago[X86][Btver2] Improved latency/throughput model for scalar int-to-float conversions.
Andrea Di Biagio [Tue, 29 Jan 2019 16:47:27 +0000 (16:47 +0000)]
[X86][Btver2] Improved latency/throughput model for scalar int-to-float conversions.

Account for bypass delays when computing the latency of scalar int-to-float
conversions.
On Jaguar we need to account for an extra 6cy latency (see AMD fam16h SOG).
This patch also fixes the number of micropcodes for the register-memory variants
of scalar int-to-float conversions.

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

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

5 years ago[InstCombine] regenerate test checks; NFC
Sanjay Patel [Tue, 29 Jan 2019 16:44:05 +0000 (16:44 +0000)]
[InstCombine] regenerate test checks; NFC

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

5 years ago[InstCombine] add tests for ext-of-bool + add/sub; NFC
Sanjay Patel [Tue, 29 Jan 2019 16:39:23 +0000 (16:39 +0000)]
[InstCombine] add tests for ext-of-bool + add/sub; NFC

We should choose one of these as canonical:

  %z = zext i1 %cmp to i32
  %r = sub i32 %x, %z
  =>
  %s = sext i1 %cmp to i32
  %r = add i32 %x, %s

The test comments assume that the zext form is better,
but we can adjust that if we decide to go the other way.

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

5 years agoAdjust documentation for git migration.
James Y Knight [Tue, 29 Jan 2019 16:37:27 +0000 (16:37 +0000)]
Adjust documentation for git migration.

This fixes most references to the paths:
 llvm.org/svn/
 llvm.org/git/
 llvm.org/viewvc/
 github.com/llvm-mirror/
 github.com/llvm-project/
 reviews.llvm.org/diffusion/

to instead point to https://github.com/llvm/llvm-project.

This is *not* a trivial substitution, because additionally, all the
checkout instructions had to be migrated to instruct users on how to
use the monorepo layout, setting LLVM_ENABLE_PROJECTS instead of
checking out various projects into various subdirectories.

I've attempted to not change any scripts here, only documentation. The
scripts will have to be addressed separately.

Additionally, I've deleted one document which appeared to be outdated
and unneeded:
  lldb/docs/building-with-debug-llvm.txt

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

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