]> granicus.if.org Git - llvm/log
llvm
6 years ago[docs] Fix a couple spelling errors.
Eli Friedman [Mon, 28 Jan 2019 23:03:41 +0000 (23:03 +0000)]
[docs] Fix a couple spelling errors.

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

6 years ago[ThinLTO] Refine reachability check to fix compile time increase
Teresa Johnson [Mon, 28 Jan 2019 22:27:05 +0000 (22:27 +0000)]
[ThinLTO] Refine reachability check to fix compile time increase

Summary:
A recent fix to the ThinLTO whole program dead code elimination (D56117)
increased the thin link time on a large MSAN'ed binary by 2x.
It's likely that the time increased elsewhere, but was more noticeable
here since it was already large and ended up timing out.

That change made it so we would repeatedly scan all copies of linkonce
symbols for liveness every time they were encountered during the graph
traversal. This was needed since we only mark one copy of an aliasee as
live when we encounter a live alias. This patch fixes the issue in a
more efficient manner by simply proactively visiting the aliasee (thus
marking all copies live) when we encounter a live alias.

Two notes: One, this requires a hash table lookup (finding the aliasee
summary in the index based on aliasee GUID). However, the impact of this
seems to be small compared to the original pre-D56117 thin link time. It
could be addressed if we keep the aliasee ValueInfo in the alias summary
instead of the aliasee GUID, which I am exploring in a separate patch.

Second, we only populate the aliasee GUID field when reading summaries
from bitcode (whether we are reading individual summaries and merging on
the fly to form the compiled index, or reading in a serialized combined
index). Thankfully, that's currently the only way we can get to this
code as we don't yet support reading summaries from LLVM assembly
directly into a tool that performs the thin link (they must be converted
to bitcode first). I added a FIXME, however I have the fix under test
already. The easiest fix is to simply populate this field always, which
isn't hard, but more likely the change I am exploring to store the
ValueInfo instead as described above will subsume this. I don't want to
hold up the regression fix for this though.

Reviewers: trentxintong

Subscribers: mehdi_amini, inglorion, dexonsmith, llvm-commits

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

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

6 years ago[CGP] auto-generate complete checks for add overflow tests; NFC
Sanjay Patel [Mon, 28 Jan 2019 22:07:37 +0000 (22:07 +0000)]
[CGP] auto-generate complete checks for add overflow tests; NFC

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

6 years agoRecommit r352255 "[SelectionDAG][X86] Don't use SEXTLOAD for promoting masked loads...
Craig Topper [Mon, 28 Jan 2019 21:38:47 +0000 (21:38 +0000)]
Recommit r352255 "[SelectionDAG][X86] Don't use SEXTLOAD for promoting masked loads in the type legalizer"

This did not cause the buildbot failure it was previously reverted for.

Original commit message:

I'm not sure why we were using SEXTLOAD. EXTLOAD seems more appropriate since we don't care about the upper bits.

This patch changes this and then modifies the X86 post legalization combine to emit a extending shuffle instead of a sign_extend_vector_inreg. Could maybe use an any_extend_vector_inre

On AVX512 targets I think we might be able to use a masked vpmovzx and not have to expand this at all.

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

6 years ago[RuntimeDyld] load all sections with ProcessAllSections
Yonghong Song [Mon, 28 Jan 2019 21:35:23 +0000 (21:35 +0000)]
[RuntimeDyld] load all sections with ProcessAllSections

This patch tried to address the following use case.
  . bcc (https://github.com/iovisor/bcc) utilizes llvm JIT to
    compile for BTF target.
  . with -g, .BTF and .BTF.ext sections (BPF debug info)
    will be generated by LLVM.
  . .BTF does not have relocations and .BTF.ext has some
    relocations.
  . With ProcessAllSections, .BTF.ext is loaded by JIT dynamic linker
    and is available to application. But .BTF is not loaded.

The bcc application needs both .BTF.ext and .BTF for debugging
purpose, and .BTF is not loaded. This patch addressed this issue
by iterating over all sections and loading any missing
sections, after symbol/relocation processing in loadObjectImpl().

Signed-off-by: Yonghong Song <yhs@fb.com>
Differential Revision: https://reviews.llvm.org/D55943

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

6 years ago[ARM] Deduplicate table generated CC analysis code
Reid Kleckner [Mon, 28 Jan 2019 21:28:43 +0000 (21:28 +0000)]
[ARM] Deduplicate table generated CC analysis code

Create ARMCallingConv.cpp and emit code for calling convention analysis
from there.

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

6 years ago[AArch64] Include AArch64GenCallingConv.inc once
Reid Kleckner [Mon, 28 Jan 2019 21:28:40 +0000 (21:28 +0000)]
[AArch64] Include AArch64GenCallingConv.inc once

Summary:
Avoids duplicating generated static helpers for calling convention
analysis.

This also means you can modify AArch64CallingConv.td without recompiling
the AArch64ISelLowering.cpp monolith, so it provides faster incremental
rebuilds.

Saves 12K in llc.exe, but adds a new object file, which is large.

Reviewers: efriedma, t.p.northover

Subscribers: mgorny, javed.absar, kristof.beyls, hiraditya, llvm-commits

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

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

6 years ago[GlobalISel][AArch64] Add legalization for G_FLOG
Jessica Paquette [Mon, 28 Jan 2019 21:27:23 +0000 (21:27 +0000)]
[GlobalISel][AArch64] Add legalization for G_FLOG

This adds support for legalizing G_FLOG into a RTLib call.

It adds a legalizer test, and updates the existing floating point tests.

https://reviews.llvm.org/D57347

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

6 years ago[InstCombine] add another saturating uadd test (no undefs); NFC
Sanjay Patel [Mon, 28 Jan 2019 20:37:18 +0000 (20:37 +0000)]
[InstCombine] add another saturating uadd test (no undefs); NFC

I forgot that our undef matching hasn't been completed in the previous commit.

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

6 years ago[InstCombine] add tests for saturating uadd with constant; NFC
Sanjay Patel [Mon, 28 Jan 2019 20:32:48 +0000 (20:32 +0000)]
[InstCombine] add tests for saturating uadd with constant; NFC

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

6 years agoAMDGPU: Add DS append/consume intrinsics
Matt Arsenault [Mon, 28 Jan 2019 20:14:49 +0000 (20:14 +0000)]
AMDGPU: Add DS append/consume intrinsics

Since these pass the pointer in m0 unlike other DS instructions, these
need to worry about whether the address is uniform or not. This
assumes the address is dynamically uniform, and just uses
readfirstlane to get a copy into an SGPR.

I don't know if these have the same 16-bit add for the addressing mode
offset problem on SI or not, but I've just assumed they do.

Also includes some misc. changes to avoid test differences between the
LDS and GDS versions.

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

6 years agogn build: Add get.py script to download prebuilt gn, make gn.py run downloaded gn...
Nico Weber [Mon, 28 Jan 2019 19:54:41 +0000 (19:54 +0000)]
gn build: Add get.py script to download prebuilt gn, make gn.py run downloaded gn if gn is not on PATH

Prebuilts are available for x86_64 Linux, macOS, Windows. The script always
pulls the latest GN version.

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

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

6 years agogn build: Make cmake sync script work on Windows if git is a bat file
Nico Weber [Mon, 28 Jan 2019 19:53:52 +0000 (19:53 +0000)]
gn build: Make cmake sync script work on Windows if git is a bat file

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

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

6 years ago[GlobalISel][AArch64] Add instruction selection support for @llvm.log10
Jessica Paquette [Mon, 28 Jan 2019 19:53:14 +0000 (19:53 +0000)]
[GlobalISel][AArch64] Add instruction selection support for @llvm.log10

This adds instruction selection support for @llvm.log10 in AArch64. It teaches
GISel to lower it to a library call, updates the relevant tests, and adds a
legalizer test for log10.

https://reviews.llvm.org/D57341

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

6 years ago[AliasSetTracker] Cleanup more comments. [NFCI]
Alina Sbirlea [Mon, 28 Jan 2019 19:38:03 +0000 (19:38 +0000)]
[AliasSetTracker] Cleanup more comments. [NFCI]

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

6 years agogn build: Fix `lld-link: unknown flag: -fuse-ld=lld` warnings on Windows
Nico Weber [Mon, 28 Jan 2019 19:32:52 +0000 (19:32 +0000)]
gn build: Fix `lld-link: unknown flag: -fuse-ld=lld` warnings on Windows

Fixes a minor regression from r351248.

While here, also make it possible to opt out of lld by saying
use_lld=false when clang_base_path is set. (use_lld still defaults to
true if clang_base_path is set.)

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

6 years ago[MC] Do not consider .ifdef/.ifndef as a use
Scott Linder [Mon, 28 Jan 2019 19:32:08 +0000 (19:32 +0000)]
[MC] Do not consider .ifdef/.ifndef as a use

This is allowed by GAS and seems correct.

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

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

6 years ago[AArch64] Add 'apple-latest' CPU alias
Francis Visoiu Mistrih [Mon, 28 Jan 2019 19:27:33 +0000 (19:27 +0000)]
[AArch64] Add 'apple-latest' CPU alias

The 'apple-latest' alias is supposed to provide a CPU that contains the
latest Apple processor model supported by LLVM.

This is supposed to be used by tools like lldb to provide a target that
supports most of the CPU features.

For now, this is mapped to Cyclone.

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

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

6 years agoRevert "[CMake] Use __libc_start_main rather than fopen when checking for C library"
Petr Hosek [Mon, 28 Jan 2019 19:26:41 +0000 (19:26 +0000)]
Revert "[CMake] Use __libc_start_main rather than fopen when checking for C library"

This reverts commit r352341: it broke the build on macOS which doesn't
seem to provide __libc_start_main in its C library.

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

6 years ago[GlobalISel] Add ISel support for @llvm.lifetime.start and @llvm.lifetime.end
Jessica Paquette [Mon, 28 Jan 2019 19:22:29 +0000 (19:22 +0000)]
[GlobalISel] Add ISel support for @llvm.lifetime.start and @llvm.lifetime.end

This adds ISel support for lifetime markers in opt levels above O0.

It also updates the arm64-irtranslator test, and updates some AArch64 tests that
use them for added coverage.

It also adds a testcase taken from the X86 codegen tests which verified a bug
caused by lifetime markers + stack colouring in the past. This is intended to
make sure that GISel doesn't re-introduce the bug.

(This is basically a straight copy from what SelectionDAG does in
SelectionDAGBuilder.cpp)

https://reviews.llvm.org/D57187

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

6 years ago[CodeGen][X86] Expand UADDSAT to NOT+UMIN+ADD
Nikita Popov [Mon, 28 Jan 2019 19:19:09 +0000 (19:19 +0000)]
[CodeGen][X86] Expand UADDSAT to NOT+UMIN+ADD

Followup to D56636, this time handling the UADDSAT case by expanding
uadd.sat(a, b) to umin(a, ~b) + b.

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

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

6 years ago[CodeExtractor] Add support for the `swifterror` attribute
Vedant Kumar [Mon, 28 Jan 2019 19:13:37 +0000 (19:13 +0000)]
[CodeExtractor] Add support for the `swifterror` attribute

When passing a `swifterror` argument or alloca as an input to an
extraction region, mark the input parameter `swifterror`.

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

6 years ago[AliasSetTracker] Cleanup comments. [NFCI]
Alina Sbirlea [Mon, 28 Jan 2019 19:01:32 +0000 (19:01 +0000)]
[AliasSetTracker] Cleanup comments. [NFCI]

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

6 years ago[GlobalISel][AArch64] Add instruction selection support for G_FCOS and G_FSIN
Jessica Paquette [Mon, 28 Jan 2019 18:34:18 +0000 (18:34 +0000)]
[GlobalISel][AArch64] Add instruction selection support for G_FCOS and G_FSIN

This contains all of the legalizer changes from D57197 necessary to select
G_FCOS and G_FSIN. It also updates several existing IR tests in
test/CodeGen/AArch64 that verify that we correctly lower the G_FCOS and G_FSIN
instructions.

https://reviews.llvm.org/D57197
3/3

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

6 years ago[GlobalISel][AArch64] Add IRTranslator support for G_FCOS and G_FSIN
Jessica Paquette [Mon, 28 Jan 2019 18:34:17 +0000 (18:34 +0000)]
[GlobalISel][AArch64] Add IRTranslator support for G_FCOS and G_FSIN

This adds IRTranslator support for the G_FCOS and G_FSIN generic instructions.

https://reviews.llvm.org/D57197
2/3

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

6 years ago[GlobalISel] Add G_FSIN and G_FCOS generic instructions
Jessica Paquette [Mon, 28 Jan 2019 18:34:16 +0000 (18:34 +0000)]
[GlobalISel] Add G_FSIN and G_FCOS generic instructions

This introduces generic instrutions for floating point sin and cos, G_FCOS and
G_FSIN. It updates the tests, etc.

https://reviews.llvm.org/D57197
1/3

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

6 years ago[AliasSetTracker] Update signature to aliasesPointer [NFCI].
Alina Sbirlea [Mon, 28 Jan 2019 18:30:05 +0000 (18:30 +0000)]
[AliasSetTracker] Update signature to aliasesPointer [NFCI].

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

6 years ago[NFC] TLI query with default(on) behavior wrt DAG combines for fmin/fmax target control
Michael Berg [Mon, 28 Jan 2019 18:03:08 +0000 (18:03 +0000)]
[NFC] TLI query with default(on) behavior wrt DAG combines for fmin/fmax target control

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

6 years ago[SimpleLoopUnswitch] Early check exit for trivial unswitch with MemorySSA.
Alina Sbirlea [Mon, 28 Jan 2019 17:48:45 +0000 (17:48 +0000)]
[SimpleLoopUnswitch] Early check exit for trivial unswitch with MemorySSA.

Summary:
If MemorySSA is avaiable, we can skip checking all instructions if block has any Defs.
(volatile loads are also Defs).
We still need to check all instructions for "canThrow", even if no Defs are found.

Reviewers: chandlerc

Subscribers: sanjoy, jlebar, Prazek, george.burgess.iv, llvm-commits

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

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

6 years ago[X86][AVX] Remove lowerShuffleByMerging128BitLanes 2-lane restriction
Simon Pilgrim [Mon, 28 Jan 2019 17:02:35 +0000 (17:02 +0000)]
[X86][AVX] Remove lowerShuffleByMerging128BitLanes 2-lane restriction

First step towards adding support for 64-bit unary "sublane" handling (a bit like lowerShuffleAsRepeatedMaskAndLanePermute).

This allows us to add lowerV64I8Shuffle handling.

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

6 years ago[LangRef] Mention vector support for bitreverse/bswap intrinsics (PR38012)
Simon Pilgrim [Mon, 28 Jan 2019 16:56:38 +0000 (16:56 +0000)]
[LangRef] Mention vector support for bitreverse/bswap intrinsics (PR38012)

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

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

6 years ago[llvm-objdump] - Restore a piece of code removed by mistake in r352366.
George Rimar [Mon, 28 Jan 2019 16:36:12 +0000 (16:36 +0000)]
[llvm-objdump] - Restore a piece of code removed by mistake in r352366.

Seems when committed the r352366
("[llvm-objdump] - Print LMAs when dumping section headers.")
I resolved merge conflict incorrectly and removed this piece by mistake.

Bots did not catch this yet, seems they are slow today,
but the `X86/adjust-vma.test` test case fails locally for me without that.

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

6 years ago[x86] allow more shuffle splitting to avoid vpermps (PR40434)
Sanjay Patel [Mon, 28 Jan 2019 15:51:34 +0000 (15:51 +0000)]
[x86] allow more shuffle splitting to avoid vpermps (PR40434)

This is tricky to make optimal: sometimes we're better off using
a single wider op, but other times it makes more sense to combine
a narrow ops to achieve the same result.

This solves the case from:
https://bugs.llvm.org/show_bug.cgi?id=40434

There's potentially a similar change for vectors with 64-bit elements,
but it needs adjustments similar to rL352333 to avoid creating infinite
loops.

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

6 years ago[llvm-objdump] - Update test after r352366. NFC.
George Rimar [Mon, 28 Jan 2019 15:49:41 +0000 (15:49 +0000)]
[llvm-objdump] - Update test after r352366. NFC.

Change the column name.

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

6 years agoVERSION_GREATER_EQUAL not supported in llvm cmake.
Ranjeet Singh [Mon, 28 Jan 2019 15:48:07 +0000 (15:48 +0000)]
VERSION_GREATER_EQUAL not supported in llvm cmake.

Patch https://reviews.llvm.org/D56329 caused build failures for me when
building on Windows because of the use of cmake operator
'VERSION_GREATER_EQUAL' which isn't supported in older versions of cmake. The
llvm website states that minimum required version of cmake for building llvm is
3.4.3 https://llvm.org/docs/CMake.html

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

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

6 years agoRemove no longer needed Arm specific LICENSE.TXT file.
Arnaud A. de Grandmaison [Mon, 28 Jan 2019 15:38:01 +0000 (15:38 +0000)]
Remove no longer needed Arm specific LICENSE.TXT file.

As the codebase is now under the Apache 2.0 license with LLVM
Exceptions, and all Arm's contributions, past or future, are under that
new license, this Arm specific LICENSE.TXT is no longer needed, thus
removing it.

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

6 years ago[cmake] Fix get_llvm_lit_path() to respect LLVM_EXTERNAL_LIT always
Michal Gorny [Mon, 28 Jan 2019 15:16:03 +0000 (15:16 +0000)]
[cmake] Fix get_llvm_lit_path() to respect LLVM_EXTERNAL_LIT always

Refactor the get_llvm_lit_path() logic to respect LLVM_EXTERNAL_LIT,
and require the fallback to be defined explicitly
as LLVM_DEFAULT_EXTERNAL_LIT. This fixes building libcxx standalone
after r346888.

The old logic was using LLVM_EXTERNAL_LIT both as user-defined cache
variable and an optional pre-definition of default value from caller
(e.g. libcxx). It included a hack to make this work by assigning
the value back and forth but it was fragile and stopped working
in libcxx.

The new logic is simpler and more transparent. Default value is
provided in a separate variable, and used only when user-specified
variable is empty (i.e. not overriden).

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

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

6 years ago[obj2yaml] - Dump the sh_entsize section field.
George Rimar [Mon, 28 Jan 2019 15:05:10 +0000 (15:05 +0000)]
[obj2yaml] - Dump the sh_entsize section field.

I faced with the fact that obj2yaml does not dump the sh_entsize field.
A problem arose when I tried to dump ELF versioning sections.

This is close to what D50235 did, but D50235 did the change for yaml2obj, and now
I had to do the same for obj2yaml.

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

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

6 years ago[llvm-objcopy] Fix crash when writing empty binary output
Jordan Rupprecht [Mon, 28 Jan 2019 15:02:40 +0000 (15:02 +0000)]
[llvm-objcopy] Fix crash when writing empty binary output

Summary: When using llvm-objcopy -O binary and the resulting file will be empty (e.g. removing the only section that would be written, or using --only-keep with a section that doesn't exist/isn't SHF_ALLOC), we crash because FileOutputBuffer expects Size > 0. Add a regression test, and change Buffer to open/truncate the output file in this case.

Reviewers: alexshap, jhenderson, jakehehrlich, espindola

Reviewed By: alexshap, jhenderson

Subscribers: jfb, llvm-commits, emaste, arichardson

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

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

6 years ago[mips] Support for +abs2008 attribute
Aleksandar Beserminji [Mon, 28 Jan 2019 14:59:30 +0000 (14:59 +0000)]
[mips] Support for +abs2008 attribute

Instruction abs.[ds] is not generating correct result when working
with NaNs for revisions prior mips32r6 and mips64r6.

To generate a sequence which always produce a correct result, but also
to allow user more control on how his code is compiled, attribute
+abs2008 is added, so user can choose legacy or 2008.

By default legacy mode is used on revisions prior R6. Mips32r6 and
mips64r6 use abs2008 mode by default.

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

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

6 years ago[llvm-objdump] - Print LMAs when dumping section headers.
George Rimar [Mon, 28 Jan 2019 14:11:35 +0000 (14:11 +0000)]
[llvm-objdump] - Print LMAs when dumping section headers.

When --section-headers is used, GNU objdump prints both LMA and VMA for sections.
llvm-objdump does not do that what makes it's output be slightly inconsistent.

Patch teaches llvm-objdump to print LMA/VMA for ELF file formats.
The behavior for other formats remains unchanged.

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

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

6 years ago[AMDGPU] Add intrinsics for 16 bit interpolation
Tim Corringham [Mon, 28 Jan 2019 13:48:59 +0000 (13:48 +0000)]
[AMDGPU] Add intrinsics for 16 bit interpolation

Summary:
Added the intrinsics llvm.amdgcn.interp.p1.f16() and
llvm.amdgcn.interp.p2.f16() and related LIT test.

The p1 intrinsic generates code appropriate for both 16 and 32
bank LDS.

Reviewers: #amdgpu, dstuttard, arsenm, tpr

Reviewed By: #amdgpu, arsenm

Subscribers: jvesely, mgorny, arsenm, kzhuravl, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, llvm-commits

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

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

6 years ago[opaque pointer types] Remove GraphTraits specialization for Type.
James Y Knight [Mon, 28 Jan 2019 13:25:57 +0000 (13:25 +0000)]
[opaque pointer types] Remove GraphTraits specialization for Type.

The only caller has been deleted in r352076, and I'd like to minimize
the amount of code walking Type hierarchies generically, to make it
easier to identify code depending on pointee types.

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

6 years ago[MIPS GlobalISel] Select sub
Petar Avramovic [Mon, 28 Jan 2019 12:10:17 +0000 (12:10 +0000)]
[MIPS GlobalISel] Select sub

Lower G_USUBO and G_USUBE. Add narrowScalar for G_SUB.
Legalize and select G_SUB for MIPS 32.

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

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

6 years ago[DebugInfo][DAG] Avoid re-ordering of DBG_VALUEs
Jeremy Morse [Mon, 28 Jan 2019 12:08:31 +0000 (12:08 +0000)]
[DebugInfo][DAG] Avoid re-ordering of DBG_VALUEs

This patch improves the placement of DBG_VALUEs when by SelectionDAG, which
as documented in PR40427 can go very wrong. At the core of this is
ProcessSourceNode, which assumes the last instruction in a BB is the start
of the last processed IR instruction, which isn't always true.

Instead, use a helper function to call InstrEmitter::EmitNode, that records
before-and-after iterators and determines the first of any new instruction
created during emission. This is passed to ProcessSourceNode, which can
then make more elightened decisions about ordering for DBG_VALUE placement.

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

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

6 years ago[llvm-objdump] - Fix comment. NFC.
George Rimar [Mon, 28 Jan 2019 10:48:54 +0000 (10:48 +0000)]
[llvm-objdump] - Fix comment. NFC.

This was mentioned by James Henderson
in review for https://reviews.llvm.org/D57051.

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

6 years ago[llvm-objdump] - Implement the --adjust-vma option.
George Rimar [Mon, 28 Jan 2019 10:44:01 +0000 (10:44 +0000)]
[llvm-objdump] - Implement the --adjust-vma option.

GNU objdump's help says: "--adjust-vma: Add OFFSET to all displayed section addresses"
In real life what it does is a bit more complicated
(and IMO not always reasonable. For example, GNU objdump prints not only VMA, but also LMA
for sections. And with --adjust-vma it adjusts LMA, but only when a section has relocations.
llvm-objsump does not seem to support printing LMAs yet, but GNU's logic anyways does not
make sense for me here).

This patch tries to adjust VMA. I tried to implement a reasonable approach.
I am not adjusting sections that are not allocatable. As, for example, adjusting debug sections
VA's and rel[a] sections VA's should not make sense. This behavior seems to be GNU compatible.

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

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

6 years ago[ARM GlobalISel] Support integer division for Thumb2
Diana Picus [Mon, 28 Jan 2019 10:37:30 +0000 (10:37 +0000)]
[ARM GlobalISel] Support integer division for Thumb2

Support G_SDIV, G_UDIV, G_SREM and G_UREM.

The only significant difference between arm and thumb mode is that we
need to check a different subtarget feature.

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

6 years ago[X86] Add new variadic avx512 compress/expand intrinsics that use vXi1 types for...
Craig Topper [Mon, 28 Jan 2019 07:03:03 +0000 (07:03 +0000)]
[X86] Add new variadic avx512 compress/expand intrinsics that use vXi1 types for the mask argument.

Remove and autoupgrade the old intrinsics

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

6 years ago[X86] Add vbmi2 compressstore and expandload tests that aren't fast-isel tests.
Craig Topper [Mon, 28 Jan 2019 05:42:39 +0000 (05:42 +0000)]
[X86] Add vbmi2 compressstore and expandload tests that aren't fast-isel tests.

These got removed when we autoupgraded to target independent intrinsics, but we didn't have coverage anywhere else. The avx512f/avx512vl versions do have coverage.

Also move some tests back from the upgrade file that aren't really upgraded.

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

6 years ago[CMake] Use __libc_start_main rather than fopen when checking for C library
Petr Hosek [Mon, 28 Jan 2019 04:12:54 +0000 (04:12 +0000)]
[CMake] Use __libc_start_main rather than fopen when checking for C library

The check_library_exists CMake uses a custom symbol definition. This
is a problem when checking for C library symbols because Clang
recognizes many of them as builtins, and returns the
-Wbuiltin-requires-header (or -Wincompatible-library-redeclaration)
error. When building with -Werror which is the default, this causes
the check_library_exists check fail making the build think that C
library isn't available.

To avoid this issue, we should use a symbol that isn't recognized by
Clang and wouldn't cause the same issue. __libc_start_main seems like
reasonable choice that fits the bill.

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

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

6 years ago[AArch64][GlobalISel] Teach RBS about G_FNEG default mapping.
Amara Emerson [Mon, 28 Jan 2019 03:21:14 +0000 (03:21 +0000)]
[AArch64][GlobalISel] Teach RBS about G_FNEG default mapping.

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

6 years ago[AArch64][GlobalISel] Add some missing vector support for FP arithmetic ops.
Amara Emerson [Mon, 28 Jan 2019 02:28:22 +0000 (02:28 +0000)]
[AArch64][GlobalISel] Add some missing vector support for FP arithmetic ops.

Moved the fneg lowering legalization test from AArch64 to X86, as we want to
specify that it's already legal.

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

6 years ago[AArch64][GlobalISel] Add some vector support for fp <-> int conversions.
Amara Emerson [Mon, 28 Jan 2019 02:27:59 +0000 (02:27 +0000)]
[AArch64][GlobalISel] Add some vector support for fp <-> int conversions.

Some unrelated, but benign, test changes as well due to the test update script.

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

6 years agoGlobalISel: Don't reduce elements for atomic load/store
Matt Arsenault [Sun, 27 Jan 2019 22:36:24 +0000 (22:36 +0000)]
GlobalISel: Don't reduce elements for atomic load/store

This is invalid for the same reason as in the narrowScalar handling
for load.

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

6 years ago[x86] add restriction for lowering to vpermps
Sanjay Patel [Sun, 27 Jan 2019 21:53:33 +0000 (21:53 +0000)]
[x86] add restriction for lowering to vpermps

This transform was added with rL351346, and we had
an escape for shufps, but we also want one for
unpckps vs. vpermps because vpermps doesn't take
an immediate shuffle index operand.

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

6 years agoGlobalISel: Factor fewerElementVectors into separate functions
Matt Arsenault [Sun, 27 Jan 2019 21:53:09 +0000 (21:53 +0000)]
GlobalISel: Factor fewerElementVectors into separate functions

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

6 years ago[x86] add tests for extract/extract/unpack; NFC
Sanjay Patel [Sun, 27 Jan 2019 21:34:51 +0000 (21:34 +0000)]
[x86] add tests for extract/extract/unpack; NFC

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

6 years ago[X86][SSE] Add UNDEF handling to combineSelect ISD::USUBSAT matching (PR40083)
Simon Pilgrim [Sun, 27 Jan 2019 21:01:23 +0000 (21:01 +0000)]
[X86][SSE] Add UNDEF handling to combineSelect ISD::USUBSAT matching (PR40083)

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

6 years ago[X86][SSE] Add UNDEF test case for combineSelect ISD::USUBSAT matching (PR40083)
Simon Pilgrim [Sun, 27 Jan 2019 20:52:34 +0000 (20:52 +0000)]
[X86][SSE] Add UNDEF test case for combineSelect ISD::USUBSAT matching (PR40083)

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

6 years ago[X86][SSE] Permit UNDEFs in combineAddToSUBUS matching (PR40083)
Simon Pilgrim [Sun, 27 Jan 2019 20:36:37 +0000 (20:36 +0000)]
[X86][SSE] Permit UNDEFs in combineAddToSUBUS matching (PR40083)

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

6 years ago[x86] add more tests for lowerShuffleWithUndefHalf; NFC
Sanjay Patel [Sun, 27 Jan 2019 20:17:02 +0000 (20:17 +0000)]
[x86] add more tests for lowerShuffleWithUndefHalf; NFC

Some other transform is creating the opposite form and causing
an infinite loop if we try to split some of these.

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

6 years ago[X86][SSE] Add PSUBUS undef element test case (PR40083)
Simon Pilgrim [Sun, 27 Jan 2019 20:09:30 +0000 (20:09 +0000)]
[X86][SSE] Add PSUBUS undef element test case (PR40083)

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

6 years ago[COFF] Add new relocation types.
Martin Storsjo [Sun, 27 Jan 2019 19:53:36 +0000 (19:53 +0000)]
[COFF] Add new relocation types.

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

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

6 years agoFix some warnings on MSVC
Alexandre Ganea [Sun, 27 Jan 2019 18:41:40 +0000 (18:41 +0000)]
Fix some warnings on MSVC

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

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

6 years ago[X86] Add test cases for PR36721 (unnecessary andl for %cl when shifting)
Simon Pilgrim [Sun, 27 Jan 2019 18:31:33 +0000 (18:31 +0000)]
[X86] Add test cases for PR36721 (unnecessary andl for %cl when shifting)

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

6 years ago[x86] refactor logic in lowerShuffleWithUndefHalf
Sanjay Patel [Sun, 27 Jan 2019 18:12:03 +0000 (18:12 +0000)]
[x86] refactor logic in lowerShuffleWithUndefHalf

Although this is longer code, this is no-functional-change-intended.
The goal is to untangle the conditions under which we bail out, so
that's easier to adjust.

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

6 years agoGlobalISel: Verify load/store has a pointer input
Matt Arsenault [Sun, 27 Jan 2019 15:57:23 +0000 (15:57 +0000)]
GlobalISel: Verify load/store has a pointer input

I expected this to be automatically verified, but it seems
nothing uses that the type index was declared as a "ptype"

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

6 years ago[X86][NFC] Replace "<%s" with "< %s" in run-lines.
Roman Lebedev [Sun, 27 Jan 2019 15:36:35 +0000 (15:36 +0000)]
[X86][NFC] Replace "<%s" with "< %s" in run-lines.

While i have no intention of actually commiting regeneration
of the check lines in these test files with update_llc_test_checks,
lack of that whitespace breaks that util, which is mildly inconvenient.

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

6 years ago[NFC][MCA][X86][BdVer2] Cherry-pick int-to-ivec forwarding tests from BtVer2
Roman Lebedev [Sun, 27 Jan 2019 14:35:54 +0000 (14:35 +0000)]
[NFC][MCA][X86][BdVer2] Cherry-pick int-to-ivec forwarding tests from BtVer2

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

6 years ago[X86] Add CGP tests for PR40486
Simon Pilgrim [Sun, 27 Jan 2019 14:04:45 +0000 (14:04 +0000)]
[X86] Add CGP tests for PR40486

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

6 years ago[TTI] Add generic SADDSAT/SSUBSAT costs
Simon Pilgrim [Sun, 27 Jan 2019 13:51:59 +0000 (13:51 +0000)]
[TTI] Add generic SADDSAT/SSUBSAT costs

Add generic costs calculation for SADDSAT/SSUBSAT intrinsics, this uses generic costs for sadd_with_overflow/ssub_with_overflow, an extra sign comparison + a selects based on the sign/overflow.

This completes PR40316

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

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

6 years ago[X86] Regenerate reverse branch test to explicitly show branching and condition codes.
Simon Pilgrim [Sun, 27 Jan 2019 12:39:38 +0000 (12:39 +0000)]
[X86] Regenerate reverse branch test to explicitly show branching and condition codes.

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

6 years ago[X86] Regenerate test to explicitly show branching and condition codes.
Simon Pilgrim [Sun, 27 Jan 2019 12:38:09 +0000 (12:38 +0000)]
[X86] Regenerate test to explicitly show branching and condition codes.

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

6 years agoRe-apply "r351584: "GlobalISel: Verify g_zextload and g_sextload""
Amara Emerson [Sun, 27 Jan 2019 11:34:41 +0000 (11:34 +0000)]
Re-apply "r351584: "GlobalISel: Verify g_zextload and g_sextload""

I reverted it originally due to a bot failing. The underlying bug has been fixed
as of r352311.

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

6 years ago[AArch64][GlobalISel] Fix the G_EXTLOAD combiner creating non-extending illegal instr...
Amara Emerson [Sun, 27 Jan 2019 10:56:20 +0000 (10:56 +0000)]
[AArch64][GlobalISel] Fix the G_EXTLOAD combiner creating non-extending illegal instructions.

This fixes loads like 's1 = load %p (load 1 from %p)' being combined with an
extend into an illegal 's8 = g_extload %p (load 1 from %p)' which doesn't do any
extension, by avoiding touching those < s8 size loads.

This bug was uncovered by a verifier update r351584, which I reverted it to keep
the bots green.

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

6 years agoRevert "Add support for prefix-only CLI options"
Thomas Preud'homme [Sun, 27 Jan 2019 09:02:46 +0000 (09:02 +0000)]
Revert "Add support for prefix-only CLI options"

This reverts commit r351038.

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

6 years agoRevert "Detect incorrect FileCheck variable CLI definition"
Thomas Preud'homme [Sun, 27 Jan 2019 09:02:19 +0000 (09:02 +0000)]
Revert "Detect incorrect FileCheck variable CLI definition"

This reverts commit r351039.

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

6 years agoRevert "Fix defines.txt"
Thomas Preud'homme [Sun, 27 Jan 2019 09:02:05 +0000 (09:02 +0000)]
Revert "Fix defines.txt"

This reverts commit r351042.

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

6 years ago[X86] Add some missing blsr patterns
Gabor Buella [Sun, 27 Jan 2019 06:15:39 +0000 (06:15 +0000)]
[X86] Add some missing blsr patterns

The add+and sequence followed by a branch can
happen e.g. when looping over the set bits of an integer:

```
while (x != 0) {
   func(x & ~x);
   x &= x - 1;
}
```

Reviewed By: ctopper

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

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

6 years ago[NFC][X86] Add a few more blsr test cases
Gabor Buella [Sun, 27 Jan 2019 06:05:40 +0000 (06:05 +0000)]
[NFC][X86] Add a few more blsr test cases

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

6 years ago[X86] Add a pattern for (i64 (and (anyext def32:), 0x00000000FFFFFFFF)) to produce...
Craig Topper [Sun, 27 Jan 2019 03:37:05 +0000 (03:37 +0000)]
[X86] Add a pattern for (i64 (and (anyext def32:), 0x00000000FFFFFFFF)) to produce SUBREG_TO_REG

def32 here means the producing instruction zeroed bits 63:32. We already do this for zext, but it looks like we can get an and+anyext sometimes.

Spotted in the diffs from D33587.

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

6 years agoGlobalISel: Fix typo in assert messages
Matt Arsenault [Sun, 27 Jan 2019 00:53:54 +0000 (00:53 +0000)]
GlobalISel: Fix typo in assert messages

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

6 years agoGlobalISel: Implement narrowScalar for mul
Matt Arsenault [Sun, 27 Jan 2019 00:52:51 +0000 (00:52 +0000)]
GlobalISel: Implement narrowScalar for mul

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

6 years agoGlobalISel: fewerElementsVector for intrinsic_trunc/intrinsic_round
Matt Arsenault [Sun, 27 Jan 2019 00:12:21 +0000 (00:12 +0000)]
GlobalISel: fewerElementsVector for intrinsic_trunc/intrinsic_round

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

6 years agoAMDGPU/GlobalISel: Use scalarize instead of clampMaxNumElements
Matt Arsenault [Sat, 26 Jan 2019 23:54:53 +0000 (23:54 +0000)]
AMDGPU/GlobalISel: Use scalarize instead of clampMaxNumElements

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

6 years ago[GlobalISel][IRTranslator] Fix crash on translation of fneg.
Amara Emerson [Sat, 26 Jan 2019 23:47:09 +0000 (23:47 +0000)]
[GlobalISel][IRTranslator] Fix crash on translation of fneg.

When the fneg IR instruction was added the code to do translation wasn't
tested, and tried to get an invalid operand.

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

6 years agoAMDGPU/GlobalISel: Legalize more bit ops
Matt Arsenault [Sat, 26 Jan 2019 23:47:07 +0000 (23:47 +0000)]
AMDGPU/GlobalISel: Legalize more bit ops

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

6 years agoAMDGPU/GlobalISel: Widen small uaddo/usubo
Matt Arsenault [Sat, 26 Jan 2019 23:44:51 +0000 (23:44 +0000)]
AMDGPU/GlobalISel: Widen small uaddo/usubo

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

6 years ago[ValueTracking] Look through casts when determining non-nullness
Johannes Doerfert [Sat, 26 Jan 2019 23:40:35 +0000 (23:40 +0000)]
[ValueTracking] Look through casts when determining non-nullness

Bitcast and certain Ptr2Int/Int2Ptr instructions will not alter the
value of their operand and can therefore be looked through when we
determine non-nullness.

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

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

6 years ago[X86] combineAddOrSubToADCOrSBB/combineCarryThroughADD - use oneuse for entire SDNode
Simon Pilgrim [Sat, 26 Jan 2019 21:29:16 +0000 (21:29 +0000)]
[X86] combineAddOrSubToADCOrSBB/combineCarryThroughADD - use oneuse for entire SDNode

Fix issue noted in D57281 that only tested the one use for the SDValue (the result flag), not the entire SUB.

I've added the getNode() to make it clearer what is intended than just the -> redirection.

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

6 years ago[X86] combineCarryThroughADD - add support for X86::COND_A commutations (PR24545)
Simon Pilgrim [Sat, 26 Jan 2019 20:23:04 +0000 (20:23 +0000)]
[X86] combineCarryThroughADD - add support for X86::COND_A commutations (PR24545)

As discussed on PR24545, we should try to commute X86::COND_A 'icmp ugt' cases to X86::COND_B 'icmp ult' to more optimally bind the carry flag output to a SBB instruction.

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

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

6 years ago[X86] Fold X86ISD::SBB(ISD::SUB(X,Y),0) -> X86ISD::SBB(X,Y) (PR25858)
Simon Pilgrim [Sat, 26 Jan 2019 20:13:44 +0000 (20:13 +0000)]
[X86] Fold X86ISD::SBB(ISD::SUB(X,Y),0) -> X86ISD::SBB(X,Y) (PR25858)

We often generate X86ISD::SBB(X, 0) for carry flag arithmetic.

I had tried to create test cases for the ADC equivalent (which often uses the same pattern) but haven't managed to find anything yet.

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

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

6 years agoGenerate test results for combine-fcopysign.ll using update_llc_test_checks.py . NFC
Amaury Sechet [Sat, 26 Jan 2019 18:13:53 +0000 (18:13 +0000)]
Generate test results for combine-fcopysign.ll using update_llc_test_checks.py . NFC

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

6 years ago[X86][SSE] Generalized unsigned compares to support nonsplat constant vectors (PR39859)
Simon Pilgrim [Sat, 26 Jan 2019 16:40:03 +0000 (16:40 +0000)]
[X86][SSE] Generalized unsigned compares to support nonsplat constant vectors (PR39859)

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

6 years ago[X86] Add nonsplat increment/decrement constant vector with min/max test (PR39859)
Simon Pilgrim [Sat, 26 Jan 2019 16:27:48 +0000 (16:27 +0000)]
[X86] Add nonsplat increment/decrement constant vector with min/max test (PR39859)

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

6 years ago[x86] add helper for creating a half-width shuffle; NFC
Sanjay Patel [Sat, 26 Jan 2019 16:20:22 +0000 (16:20 +0000)]
[x86] add helper for creating a half-width shuffle; NFC

This reduces a bit of duplication between the combining and
lowering places that use it, but the primary motivation is
to make it easier to rearrange the lowering logic and solve
PR40434:
https://bugs.llvm.org/show_bug.cgi?id=40434

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

6 years ago[X86] Add test case from PR34292
Simon Pilgrim [Sat, 26 Jan 2019 13:56:53 +0000 (13:56 +0000)]
[X86] Add test case from PR34292

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

6 years ago[llvm-mca][X86] Add some missing DQI tests
Simon Pilgrim [Sat, 26 Jan 2019 13:00:46 +0000 (13:00 +0000)]
[llvm-mca][X86] Add some missing DQI tests

Match more of the coverage of test\CodeGen\X86\avx512-schedule.ll as discussed on D57244

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

6 years ago[X86] Add 'less_than_ideal' followup test case from PR24545
Simon Pilgrim [Sat, 26 Jan 2019 12:51:52 +0000 (12:51 +0000)]
[X86] Add 'less_than_ideal' followup test case from PR24545

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