platform/upstream/llvm.git
4 years ago[GVN] Make GVN aware of aligned_alloc
Uday Bondhugula [Sat, 28 Mar 2020 07:27:35 +0000 (12:57 +0530)]
[GVN] Make GVN aware of aligned_alloc

Make the GVN pass aware of aligned_alloc.

Depends on D76974.

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

4 years ago[Attributor] Make attributor aware of aligned_alloc for heap to stack conversion
Uday Bondhugula [Sat, 28 Mar 2020 07:15:59 +0000 (12:45 +0530)]
[Attributor] Make attributor aware of aligned_alloc for heap to stack conversion

Make the attributor pass aware of aligned_alloc for converting heap
allocations to stack ones.

Depends on D76971.

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

4 years ago[InstCombine] Erase old instruction when replacing extractelements
Nikita Popov [Mon, 30 Mar 2020 20:05:34 +0000 (22:05 +0200)]
[InstCombine] Erase old instruction when replacing extractelements

As we are not returning the result of replaceInstUsesWith(),
so we need to clean up ourselves.

NFC apart from worklist order.

4 years ago[InstCombine] Use replaceOperand() in div transforms
Nikita Popov [Mon, 30 Mar 2020 20:00:16 +0000 (22:00 +0200)]
[InstCombine] Use replaceOperand() in div transforms

To make sure the old operand is DCEd.

NFC apart from worklist order.

4 years agoAMDGPU: Fix broken check lines
Matt Arsenault [Wed, 1 Apr 2020 17:48:11 +0000 (13:48 -0400)]
AMDGPU: Fix broken check lines

4 years ago[mlir][Linalg][Doc] Minor doc fixes
Nicolas Vasilache [Wed, 1 Apr 2020 17:41:45 +0000 (13:41 -0400)]
[mlir][Linalg][Doc] Minor doc fixes

4 years agoRemove linking all targets from `mlir-opt` (NFC)
Mehdi Amini [Wed, 1 Apr 2020 17:19:26 +0000 (17:19 +0000)]
Remove linking all targets from `mlir-opt` (NFC)

There is no need to directly depends on this from mlir-opt, some library
may transitively depend on a subset of the targets when enabled (like
NVPTX for Cuda codegen tests) but this is handled by CMake already.

4 years agoAdd LLVM_ATTRIBUTE_UNUSED to function used only in assert (NFC)
Mehdi Amini [Wed, 1 Apr 2020 17:09:44 +0000 (17:09 +0000)]
Add LLVM_ATTRIBUTE_UNUSED to function used only in assert (NFC)

4 years ago[MLIR][NFC] clean up affine data copy test case
Uday Bondhugula [Wed, 1 Apr 2020 06:44:47 +0000 (12:14 +0530)]
[MLIR][NFC] clean up affine data copy test case

 Capture maps to test better; drop unnecessary matches

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

4 years ago[MLIR][NFC] loop transforms/analyis utils cleanup / modernize
Uday Bondhugula [Tue, 31 Mar 2020 21:04:04 +0000 (02:34 +0530)]
[MLIR][NFC] loop transforms/analyis utils cleanup / modernize

Modernize/cleanup code in loop transforms utils - a lot of this code was
written prior to the currently available IR support / code style. This
patch also does some variable renames including inst -> op, comment
updates, turns getCleanupLoopLowerBound into a local function.

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

4 years ago[llvm-locstats] Fix labels on x-axis of comparison chart
Vedant Kumar [Tue, 31 Mar 2020 17:52:51 +0000 (10:52 -0700)]
[llvm-locstats] Fix labels on x-axis of comparison chart

Summary:
This change makes the labels on the x-axis of a comparison chart look
like: "0%", "(0%, 10%)", "[10%, 20%)", and so on.

Previously, each label was the same (a concatenation of all the possible
coverage buckets).

Reviewers: djtodoro

Subscribers: llvm-commits

Tags: #llvm

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

4 years agoAMDGPU/GlobalISel: Switch test to checking final ISA
Matt Arsenault [Wed, 1 Apr 2020 17:00:55 +0000 (13:00 -0400)]
AMDGPU/GlobalISel: Switch test to checking final ISA

The naming convention is for unprefixed .ll tests to check the final
ISA instructions.

4 years agoAMDGPU/GlobalISel: Change intrinsic ID for _L to _LZ opt
Matt Arsenault [Mon, 30 Mar 2020 19:24:35 +0000 (15:24 -0400)]
AMDGPU/GlobalISel: Change intrinsic ID for _L to _LZ opt

Still should handle the other case changes the opcode this way.

4 years ago[OPENMP50]Add initial support for OpenMP 5.0 iterator.
Alexey Bataev [Tue, 18 Feb 2020 15:22:23 +0000 (10:22 -0500)]
[OPENMP50]Add initial support for OpenMP 5.0 iterator.

Added basic parsing/semantic analysis/(de)serialization support for
iterator expression introduced in OpenMP 5.0.

4 years ago[WebAssembly] Rename SIMD min/max/avgr intrinsics for consistency
Thomas Lively [Wed, 1 Apr 2020 00:09:08 +0000 (17:09 -0700)]
[WebAssembly] Rename SIMD min/max/avgr intrinsics for consistency

Summary:
The convention for the wasm_simd128.h intrinsics is to have the
integer sign in the lane interpretation rather than as a suffix. This
PR changes the names of the integer min, max, and avgr intrinsics to
match this convention.

Reviewers: aheejin

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

Tags: #clang

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

4 years agoHIP: Link correct denormal mode library
Matt Arsenault [Fri, 27 Mar 2020 18:51:29 +0000 (14:51 -0400)]
HIP: Link correct denormal mode library

This wasn't respecting the flush mode based on the default, and also
wasn't correctly handling the explicit
-fno-cuda-flush-denormals-to-zero overriding the mode.

4 years agoAMDGPU: Fix consistently backwards logic for default denormal mode
Matt Arsenault [Wed, 1 Apr 2020 15:28:07 +0000 (11:28 -0400)]
AMDGPU: Fix consistently backwards logic for default denormal mode

I forgot to squash this into c9d65a48af1d7bbfed7e785613cc9d9acf71821b

4 years ago[mlir] Modify GPU to SPIR-V conversion to respect
MaheshRavishankar [Wed, 1 Apr 2020 16:32:41 +0000 (09:32 -0700)]
[mlir] Modify GPU to SPIR-V conversion to respect
spv.interface_var_abi attributes if it exists already.

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

4 years ago[libc++] SSH: Use -p when scp'ing to preserve modes and modification times
Louis Dionne [Wed, 1 Apr 2020 16:32:14 +0000 (12:32 -0400)]
[libc++] SSH: Use -p when scp'ing to preserve modes and modification times

4 years ago[lld] NFC: fix trivial typos in comments
Kazuaki Ishizaki [Wed, 1 Apr 2020 16:21:08 +0000 (01:21 +0900)]
[lld] NFC: fix trivial typos in comments

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

4 years ago[clang] CodeGen: Make getOrEmitProtocol public for Swift
Arnold Schwaighofer [Mon, 30 Mar 2020 18:11:19 +0000 (11:11 -0700)]
[clang] CodeGen: Make getOrEmitProtocol public for Swift

Summary:
Swift would like to use clang's apis to emit protocol declarations.

This commits adds the public API:

```
 emitObjCProtocolObject(CodeGenModule &CGM, const ObjCProtocolDecl *p);
```

rdar://60888524

Subscribers: cfe-commits

Tags: #clang

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

4 years ago[libc++] SSH: Properly handle test-executables that are not the first argument
Louis Dionne [Wed, 1 Apr 2020 15:07:48 +0000 (11:07 -0400)]
[libc++] SSH: Properly handle test-executables that are not the first argument

If a ShTest has for example another command in front of the test
executable it wants to execute, ssh.py needs to properly translate
the path of that test executable to the executable on the remote host.
For example, running '%{exec} ! %t.exe', we can't assume that the
test-executable is the first argument after '%{exec}'.

4 years ago[ELF] Propagate LMA offset to sections with neither AT() nor AT>
Fangrui Song [Sat, 28 Mar 2020 18:01:37 +0000 (11:01 -0700)]
[ELF] Propagate LMA offset to sections with neither AT() nor AT>

Fixes https://bugs.llvm.org/show_bug.cgi?id=45313
Also fixes linkerscript/{at4.s,overlay.test} LMA address issues exposed by
011b785505b1f6d315a93fd0a0409576ad8d1805.
Related: D74297

This patch improves emulation of GNU ld's heuristics on the difference
between the LMA and the VMA:
https://sourceware.org/binutils/docs/ld/Output-Section-LMA.html#Output-Section-LMA

New test linkerscript/lma-offset.s (based on at4.s) demonstrates some behaviors.

Reviewed By: psmith

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

4 years ago[analyzer] RetainCountChecker: Add a suppression for OSSymbols.
Artem Dergachev [Wed, 1 Apr 2020 15:15:00 +0000 (18:15 +0300)]
[analyzer] RetainCountChecker: Add a suppression for OSSymbols.

OSSymbol objects are particular XNU OSObjects that aren't really
reference-counted. Therefore you cannot do any harm by over- or
under-releasing them.

4 years ago[WebAssembly] Fix subregion relationship in CFGSort
Heejin Ahn [Mon, 30 Mar 2020 10:42:40 +0000 (03:42 -0700)]
[WebAssembly] Fix subregion relationship in CFGSort

Summary:
The previous code for determining the innermost region in CFGSort was
not correct. We determine subregion relationship by domination of their
headers, i.e., if region A's header dominates region B's header, B is a
subregion of A. Previously we assumed that if a BB belongs to both a
loop and an exception, the region with fewer number of BBs is the
innermost one. This may not be true, because while WebAssemblyException
contains BBs in all its subregions (loops or exceptions), MachineLoop
may not, because MachineLoop does not contain BBs that don't have a path
to its header even if they are dominated by its header.

                Loop header  <---|
                    |            |
              Exception header   |
                    | \          |
                    A  B         |
                    |   \        |
                    |    C       |
                    |            |
                Loop latch       |
                    |            |
                    -------------|

For example, in this CFG, the loop does not contain B and C, because
they don't have a path back to the loops header. But for CFGSort we
consider the exception here belongs to the loop and the exception should
be a subregion of the loop and scheduled together.

So here we should use `WE->contains(ML->getHeader())` (but not
`ML->contains(WE->getHeader())`, for the stated region above).

This also fixes some comments and deletes `Regions` vector in
`RegionInfo` class, which was not used anywere.

Reviewers: dschuff

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

Tags: #llvm

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

4 years ago[ELF] Print symbols with non-default versions for better "undefined symbol" diagnostics
Fangrui Song [Sat, 28 Mar 2020 22:48:38 +0000 (15:48 -0700)]
[ELF] Print symbols with non-default versions for better "undefined symbol" diagnostics

When reporting an "undefined symbol" diagnostic:

* We don't print @ for the reference.
* We don't print @ or @@ for the definition. https://bugs.llvm.org/show_bug.cgi?id=45318

This can lead to confusing diagnostics:

```
// foo may be foo@v2
ld.lld: error: undefined symbol: foo
>>> referenced by t1.o:(.text+0x1)
// foo may be foo@v1 or foo@@v1
>>> did you mean: foo
>>> defined in: t.so
```

There are 2 ways a symbol in symtab may get truncated:

* A @@ definition may be truncated *early* by SymbolTable::insert().
  The name ends with a '\0'.
* A @ definition/reference may be truncated *later* by Symbol::parseSymbolVersion().
  The name ends with a '@'.

This patch detects the second case and improves the diagnostics. The first case is
not improved but the second case is sufficient to make diagnostics not confusing.

Reviewed By: ruiu

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

4 years ago[llvm-readobj] - Do not crash when SHT_HASH table is broken.
Georgii Rymar [Wed, 25 Mar 2020 14:30:55 +0000 (17:30 +0300)]
[llvm-readobj] - Do not crash when SHT_HASH table is broken.

We have scenarios when the logic of --elf-hash-histogram/--hash-symbols/--hash-table
options might crash when given a broken hash table.

This patch adds pre-checks for tables for these 3 options
and provides test cases.

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

4 years agoclagn-tidy/doc: Add a link to readability-static-accessed-through-instance from reada...
Sylvestre Ledru [Wed, 1 Apr 2020 11:58:15 +0000 (13:58 +0200)]
clagn-tidy/doc: Add a link to readability-static-accessed-through-instance from readability-convert-member-functions-to-static

4 years ago[libc++] Handle SSH errors more gracefully and make sure we clean up the tmp directory
Louis Dionne [Wed, 1 Apr 2020 14:21:31 +0000 (10:21 -0400)]
[libc++] Handle SSH errors more gracefully and make sure we clean up the tmp directory

4 years ago[LegalizeTypes][RISCV] Correctly sign-extend comparison for ATOMIC_CMP_XCHG
Jessica Clarke [Wed, 1 Apr 2020 14:50:47 +0000 (15:50 +0100)]
[LegalizeTypes][RISCV] Correctly sign-extend comparison for ATOMIC_CMP_XCHG

Summary:
Currently, the comparison argument used for ATOMIC_CMP_XCHG is legalised
with GetPromotedInteger, which leaves the upper bits of the value
undefind. Since this is used for comparing in an LR/SC loop with a
full-width comparison, we must sign extend it. We introduce a new
getExtendForAtomicCmpSwapArg to complement getExtendForAtomicOps, since
many targets have compare-and-swap instructions (or pseudos) that
correctly handle an any-extend input, and the existing function
determines the extension of the result, whereas we are concerned with
the input.

This is related to https://reviews.llvm.org/D58829, which solved the
issue for ATOMIC_CMP_SWAP_WITH_SUCCESS, but not the simpler
ATOMIC_CMP_SWAP.

Reviewers: asb, lenary, efriedma

Reviewed By: asb

Subscribers: arichardson, hiraditya, rbar, johnrusso, simoncook, sabuasal, niosHD, kito-cheng, shiva0217, MaskRay, zzheng, edward-jones, rogfer01, MartinMosbeck, brucehoult, the_o, rkruppe, jfb, PkmX, jocewei, psnobl, benna, Jim, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, evandro, llvm-commits

Tags: #llvm

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

4 years ago[llvm][clang][IFS] Enhancing the llvm-ifs yaml format for symbol lists.
Puyan Lotfi [Sat, 28 Mar 2020 08:08:27 +0000 (04:08 -0400)]
[llvm][clang][IFS] Enhancing the llvm-ifs yaml format for symbol lists.

Prior to this change the clang interface stubs format resembled
something ending with a symbol list like this:

 Symbols:
   a: { Type: Func }

This was problematic because we didn't actually want a map format and
also because we didn't like that an empty symbol list required
"Symbols: {}". That is to say without the empty {} llvm-ifs would crash
on an empty list.

With this new format it is much more clear which field is the symbol
name, and instead the [] that is used to express an empty symbol vector
is optional, ie:

Symbols:
 - { Name: a, Type: Func }

or

Symbols: []

or

Symbols:

This further diverges the format from existing llvm-elftapi. This is a
good thing because although the format originally came from the same
place, they are not the same in any way.

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

4 years ago[MLIR] Implement LoopLikeInterface for loop.parallel
Tres Popp [Tue, 31 Mar 2020 09:41:51 +0000 (11:41 +0200)]
[MLIR] Implement LoopLikeInterface for loop.parallel

Summary:
This is to allow optimizations like loop invariant code motion to work
on the ParallelOp.

Additional small cleanup on the ForOp implementation of
LoopLikeInterface and the test file of loop-invariant-code-motion.

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

4 years agoReplace output file name in test with %t
scentini [Wed, 1 Apr 2020 14:33:44 +0000 (16:33 +0200)]
Replace output file name in test with %t

4 years ago[Alignment][NFC] Mark IRTranslator::getMemOpAlignment deprecated
Guillaume Chatelet [Wed, 1 Apr 2020 14:33:27 +0000 (14:33 +0000)]
[Alignment][NFC] Mark IRTranslator::getMemOpAlignment deprecated

Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[Alignment][NFC] Remove remaining uses of MachineFrameInfo::setObjectAlignment
Guillaume Chatelet [Wed, 1 Apr 2020 14:24:51 +0000 (14:24 +0000)]
[Alignment][NFC] Remove remaining uses of MachineFrameInfo::setObjectAlignment

Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[X86][SSE] combinePTESTCC - fold TESTZ(X,~Y) -> TESTC(Y,X)
Simon Pilgrim [Wed, 1 Apr 2020 14:10:30 +0000 (15:10 +0100)]
[X86][SSE] combinePTESTCC - fold TESTZ(X,~Y) -> TESTC(Y,X)

4 years ago[libc++abi] Fix remote execution of .sh.cpp tests
Sergej Jaskiewicz [Wed, 1 Apr 2020 14:02:55 +0000 (10:02 -0400)]
[libc++abi] Fix remote execution of .sh.cpp tests

This aims to fix test failures on the following buildbots:

- http://lab.llvm.org:8011/builders/llvm-clang-win-x-armv7l
- http://lab.llvm.org:8011/builders/llvm-clang-win-x-aarch64

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

4 years ago[Alignment][NFC] Transition to MachineFrameInfo::getObjectAlign()
Guillaume Chatelet [Wed, 1 Apr 2020 13:49:04 +0000 (13:49 +0000)]
[Alignment][NFC] Transition to MachineFrameInfo::getObjectAlign()

Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: arsenm, sdardis, nemanjai, jvesely, nhaehnle, hiraditya, kbarton, jrtc27, atanasyan, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[RISCV] Support RISC-V ELF attributes sections in llvm-readobj.
Kai Wang [Mon, 9 Mar 2020 02:05:15 +0000 (10:05 +0800)]
[RISCV] Support RISC-V ELF attributes sections in llvm-readobj.

Enable llvm-readobj to handle RISC-V ELF attribute sections.

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

4 years agoFix operator precedence warning. NFCI.
Simon Pilgrim [Wed, 1 Apr 2020 13:36:33 +0000 (14:36 +0100)]
Fix operator precedence warning. NFCI.

4 years agoFix unused variable warnings. NFCI.
Simon Pilgrim [Wed, 1 Apr 2020 13:36:02 +0000 (14:36 +0100)]
Fix unused variable warnings. NFCI.

4 years ago[ARM] Silence warning in Release builds
Benjamin Kramer [Wed, 1 Apr 2020 13:29:19 +0000 (15:29 +0200)]
[ARM] Silence warning in Release builds

llvm/lib/Target/ARM/MVEVPTBlockPass.cpp:175:37: error: unused variable 'BlockBeg' [-Werror,-Wunused-variable]
  MachineBasicBlock::instr_iterator BlockBeg = Iter;
                                    ^

4 years ago[Alignment][NFC] Convert SelectionDAG::InferPtrAlignment to MaybeAlign
Guillaume Chatelet [Wed, 1 Apr 2020 13:02:51 +0000 (13:02 +0000)]
[Alignment][NFC] Convert SelectionDAG::InferPtrAlignment to MaybeAlign

Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[NFC] run clang format on the file llvm/include/llvm/MC/MCDirectives.h
diggerlin [Wed, 1 Apr 2020 13:14:13 +0000 (09:14 -0400)]
[NFC] run clang format on the file llvm/include/llvm/MC/MCDirectives.h

SUMMARY:

run clang format on the file llvm/include/llvm/MC/MCDirectives.h

Reviewers: Jason liu
Subscribers: rupprecht, seiyai,hiraditya

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

4 years ago[X86][SSE] matchShuffleWithPACK - generalize zero/signbits matching for any packed...
Simon Pilgrim [Wed, 1 Apr 2020 10:51:01 +0000 (11:51 +0100)]
[X86][SSE] matchShuffleWithPACK - generalize zero/signbits matching for any packed src type

First step toward making use of canLowerByDroppingEvenElements to match chains of PACKSS/PACKUS for compaction shuffles.

At the moment we still only match a single stage but the MatchPACK is now more general.

4 years agoFix "control reaches end of non-void function" warning. NFCI.
Simon Pilgrim [Wed, 1 Apr 2020 13:08:25 +0000 (14:08 +0100)]
Fix "control reaches end of non-void function" warning. NFCI.

4 years ago[ARM] Extra vmull loop tests. NFC
David Green [Wed, 1 Apr 2020 12:12:56 +0000 (13:12 +0100)]
[ARM] Extra vmull loop tests. NFC

4 years agoRevert "[LSR] re-add testcase for wrongly phi node elimination - NFC"
shchenz [Wed, 1 Apr 2020 12:58:06 +0000 (12:58 +0000)]
Revert "[LSR] re-add testcase for wrongly phi node elimination - NFC"

This reverts commit f25a1b4f58d66805257a05f13e8581551574ce22.
ARM and hexagon fail at the new added case.

4 years ago[Alignment][NFC] Convert MIR Yaml to MaybeAlign
Guillaume Chatelet [Wed, 1 Apr 2020 09:25:48 +0000 (09:25 +0000)]
[Alignment][NFC] Convert MIR Yaml to MaybeAlign

Summary:
Although it may look like non NFC it is. especially the MIRParser may set `0` to the MachineFrameInfo and MachineFunction, but they all deal with `Align` internally and assume that `0` means `1`.
https://github.com/llvm/llvm-project/blob/93fc0ba145c2f9619d3174c95cacda5d4a0a2815/llvm/include/llvm/CodeGen/MachineFrameInfo.h#L483

This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[clangd-vscode] NFC; Improve wording in documentation and update VSCode tasks
Kirill Bobyrev [Wed, 1 Apr 2020 12:16:21 +0000 (14:16 +0200)]
[clangd-vscode] NFC; Improve wording in documentation and update VSCode tasks

Summary:
VSCode tasks are updated to the latest supported versions: deprecated
values are removed and replaced by their new counterparts.

Reviewers: hokein

Reviewed By: hokein

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[Target][ARM] Improvements to the VPT Block Insertion Pass
Pierre-vh [Mon, 9 Mar 2020 16:40:33 +0000 (16:40 +0000)]
[Target][ARM] Improvements to the VPT Block Insertion Pass

This allows the MVE VPT Block insertion pass to remove VPNOTs in
order to create more complex VPT blocks such as TE, TEET, TETE, etc.

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

4 years ago[Target][ARM] Change VPTMaskValues to the correct encoding
Pierre-vh [Fri, 13 Mar 2020 15:45:32 +0000 (15:45 +0000)]
[Target][ARM] Change VPTMaskValues to the correct encoding

VPTMaskValue was using the "instruction" encoding to represent the masks
(= the same encoding as the one used by the instructions in an object file),
but it is only used to build MCOperands, so it should use the MCOperand
encoding of the masks, which is slightly different.

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

4 years agoSilent failing TestWatchpointCount.py aarch64/linux
Muhammad Omair Javaid [Wed, 1 Apr 2020 11:01:36 +0000 (16:01 +0500)]
Silent failing TestWatchpointCount.py aarch64/linux

Skip TestWatchpointCount.py for aarch64-linux to fix lldb aarch64 linux buildbot.

http://lab.llvm.org:8011/builders/lldb-aarch64-ubuntu/

4 years ago[lldb][NFC] Modernize TestExprChar
Raphael Isemann [Wed, 1 Apr 2020 10:55:57 +0000 (12:55 +0200)]
[lldb][NFC] Modernize TestExprChar

4 years ago[GVNSink] Simplify code. NFC.
Benjamin Kramer [Wed, 1 Apr 2020 11:12:46 +0000 (13:12 +0200)]
[GVNSink] Simplify code. NFC.

4 years ago[LSR] re-add testcase for wrongly phi node elimination - NFC
shchenz [Wed, 1 Apr 2020 09:51:07 +0000 (09:51 +0000)]
[LSR] re-add testcase for wrongly phi node elimination - NFC

Retest the case on X86/SystemZ/AArch64/PowerPC

4 years ago[clangd] Run semaCodeComplete only with a preamble
Kadir Cetinkaya [Wed, 1 Apr 2020 09:31:53 +0000 (11:31 +0200)]
[clangd] Run semaCodeComplete only with a preamble

Summary:
It is used by code completion and signature help. Code completion
already uses a special no-compile mode for missing preambles, so this change is
a no-op for that.

As for signature help, it already blocks for a preamble and missing it implies
clang has failed to parse the preamble and retrying it in signature help likely
will fail again. And even if it doesn't, request latency will be too high to be
useful as parsing preambles is expensive.

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[Transforms][SROA] Promote allocas with mem2reg for scalable types
Cullen Rhodes [Tue, 24 Mar 2020 17:03:59 +0000 (17:03 +0000)]
[Transforms][SROA] Promote allocas with mem2reg for scalable types

Summary:
Aggregate types containing scalable vectors aren't supported and as far
as I can tell this pass is mostly concerned with optimisations on
aggregate types, so the majority of this pass isn't very useful for
scalable vectors.

This patch modifies SROA such that mem2reg is run on allocas with
scalable types that are promotable, but nothing else such as slicing is
done.

The use of TypeSize in this pass has also been updated to be explicitly
fixed size. When invoking the following methods in DataLayout:

    * getTypeSizeInBits
    * getTypeStoreSize
    * getTypeStoreSizeInBits
    * getTypeAllocSize

we now called getFixedSize on the resultant TypeSize. This is quite an
extensive change with around 50 calls to these functions, and also the
first change of this kind (being explicit about fixed vs scalable
size) as far as I'm aware, so feedback welcome.

A test is included containing IR with scalable vectors that this pass is
able to optimise.

Reviewed By: efriedma

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

4 years ago[X86][SSE] Handle basic inversion of PTEST/TESTP operands (PR38522)
Simon Pilgrim [Wed, 1 Apr 2020 09:56:36 +0000 (10:56 +0100)]
[X86][SSE] Handle basic inversion of PTEST/TESTP operands (PR38522)

PTEST/TESTP sets EFLAGS as:
TESTZ: ZF = (Op0 & Op1) == 0
TESTC: CF = (~Op0 & Op1) == 0
TESTNZC: ZF == 0 && CF == 0

If we are inverting the 0'th operand of a PTEST/TESTP instruction we can adjust the comparisons to correct handle the inversion implicitly.

Additionally, for "TESTZ" (ZF) cases, the allones case, PTEST(X,-1) can be simplified to PTEST(X,X).

We can expand this for the TESTZ(X,~Y) pattern and also handle KTEST/KORTEST in the future.

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

4 years agoRevert "[LSR] add testcase for wrongly phi node elimination - NFC"
shchenz [Wed, 1 Apr 2020 10:28:43 +0000 (10:28 +0000)]
Revert "[LSR] add testcase for wrongly phi node elimination - NFC"

This reverts commit dbf5e4f6c7f76d8086b01efed5c37dced3eed4b6.
The testcase has different behaviour on PowerPC and X86.

4 years ago[LSR] add testcase for wrongly phi node elimination - NFC
shchenz [Wed, 1 Apr 2020 09:51:07 +0000 (09:51 +0000)]
[LSR] add testcase for wrongly phi node elimination - NFC

4 years ago[NFC] [PowerPC] Add test for frsp elimination
Qiu Chaofan [Wed, 1 Apr 2020 09:53:20 +0000 (17:53 +0800)]
[NFC] [PowerPC] Add test for frsp elimination

4 years ago[X86] Do not assume types are legal in getFauxShuffleMask
Bjorn Pettersson [Tue, 31 Mar 2020 09:31:53 +0000 (11:31 +0200)]
[X86] Do not assume types are legal in getFauxShuffleMask

Summary:
Make sure we do not assert on value types not being
simple in getFauxShuffleMask when analysing operations
such as "v8i16 = truncate v8i24".

Reviewers: RKSimon

Reviewed By: RKSimon

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[lldb] [PECOFF] Only use PECallFrameInfo on the one supported architecture
Martin Storsjö [Sat, 28 Mar 2020 23:33:55 +0000 (01:33 +0200)]
[lldb] [PECOFF] Only use PECallFrameInfo on the one supported architecture

The RuntimeFunction struct, which PECallFrameInfo interprets, has a
different layout and differnet semantics on all architectures.

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

4 years ago[Alignment][NFC] Use Align in SelectionDAG::getMemIntrinsicNode
Guillaume Chatelet [Tue, 31 Mar 2020 15:49:40 +0000 (15:49 +0000)]
[Alignment][NFC] Use Align in SelectionDAG::getMemIntrinsicNode

Summary:
This is patch is part of a series to introduce an Alignment type.
See this thread for context: http://lists.llvm.org/pipermail/llvm-dev/2019-July/133851.html
See this patch for the introduction of the type: https://reviews.llvm.org/D64790

Reviewers: courbet

Subscribers: jholewinski, nemanjai, hiraditya, kbarton, llvm-commits

Tags: #llvm

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

4 years ago[yaml2obj] - Add NBucket and NChain fields for the SHT_HASH section.
Georgii Rymar [Thu, 26 Mar 2020 10:13:39 +0000 (13:13 +0300)]
[yaml2obj] - Add NBucket and NChain fields for the SHT_HASH section.

These fields allows to override nchain and nbucket fields of a SHT_HASH section.

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

4 years ago[lldb] Inherit host environment when running shell commands
Pavel Labath [Tue, 31 Mar 2020 08:47:20 +0000 (10:47 +0200)]
[lldb] Inherit host environment when running shell commands

Summary:
On most hosts we were running shell commands with an empty environment.
The only exception was windows, which was inheriting the host enviroment
mostly by accident.

Running the commands in an empty environment does not sound like a
sensible default, so this patch changes Host::RunShellCommand to inherit
the host environment.  This impacts both commands run via
SBPlatform::Run (in case of host platforms), as well as the "platform
shell" CLI command.

Reviewers: jingham, friss

Subscribers: lldb-commits

Tags: #lldb

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

4 years ago[mlir][Pass] Add support for generating pass documention from the tablegen definition
River Riddle [Wed, 1 Apr 2020 08:51:50 +0000 (01:51 -0700)]
[mlir][Pass] Add support for generating pass documention from the tablegen definition

Summary:
This revision adds support for auto-generating pass documentation, replacing the need to manually keep Passes.md up-to-date. This matches the behavior already in place for dialect and interface documentation.

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

4 years ago[mlir][Pass] Add support for generating pass utilities via tablegen
River Riddle [Wed, 1 Apr 2020 08:50:29 +0000 (01:50 -0700)]
[mlir][Pass] Add support for generating pass utilities via tablegen

This revision adds support for generating utilities for passes such as options/statistics/etc. that can be inferred from the tablegen definition. This removes additional boilerplate from the pass, and also makes it easier to remove the reliance on the pass registry to provide certain things(e.g. the pass argument).

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

4 years ago[mlir][Pass] Move the registration of conversion passes to tablegen
River Riddle [Wed, 1 Apr 2020 08:49:43 +0000 (01:49 -0700)]
[mlir][Pass] Move the registration of conversion passes to tablegen

This removes the need to statically register conversion passes, and also puts all of the conversions within one centralized file.

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

4 years ago[mlir][Pass] Move the registration of dialect passes to tablegen
River Riddle [Wed, 1 Apr 2020 08:49:01 +0000 (01:49 -0700)]
[mlir][Pass] Move the registration of dialect passes to tablegen

This generates a Passes.td for all of the dialects that have transformation passes. This removes the need for global registration for all of the dialect passes.

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

4 years ago[mlir][Pass] Add a tablegen backend for defining Pass information
River Riddle [Wed, 1 Apr 2020 08:48:34 +0000 (01:48 -0700)]
[mlir][Pass] Add a tablegen backend for defining Pass information

This will greatly simplify a number of things related to passes:
* Enables generation of pass registration
* Enables generation of boiler plate pass utilities
* Enables generation of pass documentation

This revision focuses on adding the basic structure and adds support for generating the registration for passes in the Transforms/ directory. Future revisions will add more support and move more passes over.

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

4 years ago[clangd] Force delayed-template-parsing off in code completion.
Sam McCall [Tue, 31 Mar 2020 21:33:56 +0000 (23:33 +0200)]
[clangd] Force delayed-template-parsing off in code completion.

Summary:
It prevents code completion entirely in affected method bodies.
The main reason it's turned on is for compatibility with headers, so we turn it
off for the main file only. This is allowed because it's a compatible langopt.

Fixes https://github.com/clangd/clangd/issues/302

Reviewers: kadircet

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[ConstantRange] Use APInt::or/APInt::and for single elements.
Florian Hahn [Wed, 1 Apr 2020 08:34:33 +0000 (09:34 +0100)]
[ConstantRange] Use APInt::or/APInt::and for single elements.

Currently ConstantRange::binaryAnd/binaryOr results are too pessimistic
for single element constant ranges.

If both operands are single element ranges, we can use APInt's AND and
OR implementations directly.

Note that some other binary operations on constant ranges can cover the
single element cases naturally, but for OR and AND this unfortunately is
not the case.

Reviewers: nikic, spatel, lebedev.ri

Reviewed By: spatel

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

4 years ago[clang] Minor cleanup in CloneDetectionTest
Raphael Isemann [Wed, 1 Apr 2020 08:48:48 +0000 (10:48 +0200)]
[clang] Minor cleanup in CloneDetectionTest

Follow up to e8f13f4f62f.

4 years agoAdd a method to build affine maps with zero or more results.
Ulysse Beaugnon [Wed, 1 Apr 2020 08:47:06 +0000 (10:47 +0200)]
Add a method to build affine maps with zero or more results.

Summary:
The commit provides a single method to build affine maps with zero or more
results. Users of mlir::AffineMap previously had to dispatch between two methods
depending on the number of results.

At the same time, this commit fixes the method for building affine map with zero
results that was previously ignoring its `symbolCount` argument.

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

4 years agotsan: fix Go build on Windows
Dmitry Vyukov [Wed, 1 Apr 2020 08:36:29 +0000 (10:36 +0200)]
tsan: fix Go build on Windows

Fix similar to https://reviews.llvm.org/D77111 but fow Windows.

gotsan.cpp:14071:16: error: missing terminating ' character [-Werror]
case 0b10'010:  // c.lwsp (rd != x0)
         ^

Reported-by: Keith Randall
4 years ago[Matrix] Add new test case with getelementptr constant exprs.
Florian Hahn [Wed, 1 Apr 2020 08:26:53 +0000 (09:26 +0100)]
[Matrix] Add new test case with getelementptr constant exprs.

The new test mostly ensures we keep doing the right thing for constant
expressions while lowering matrix instructions.

4 years ago[DAGCombiner] Require ninf for sqrt recip estimation
Qiu Chaofan [Wed, 1 Apr 2020 08:17:36 +0000 (16:17 +0800)]
[DAGCombiner] Require ninf for sqrt recip estimation

Currently, DAG combiner uses (fmul (rsqrt x) x) to estimate square
root of x. However, this method would return NaN if x is +Inf, which
is incorrect.

Reviewed By: spatel

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

4 years ago[Verifier] Verify matrix dimensions operands match vector size.
Florian Hahn [Wed, 1 Apr 2020 08:10:24 +0000 (09:10 +0100)]
[Verifier] Verify matrix dimensions operands match vector size.

This patch adds checks to the verifier to ensure the dimension arguments
passed to the matrix intrinsics match the vector types for their
arugments/return values.

Reviewers: anemet, Gerolf, andrew.w.kaylor, LuoYuanke

Reviewed By: anemet

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

4 years ago[lldb][NFC] Modernize TestXValuePrinting
Raphael Isemann [Wed, 1 Apr 2020 08:16:55 +0000 (10:16 +0200)]
[lldb][NFC] Modernize TestXValuePrinting

4 years ago[lldb][NFC] Modernize call-function tests
Raphael Isemann [Wed, 1 Apr 2020 08:06:28 +0000 (10:06 +0200)]
[lldb][NFC] Modernize call-function tests

4 years ago[MLIR] Rename collapsePLoops -> collapseParallelLoops
Tres Popp [Mon, 30 Mar 2020 11:26:46 +0000 (13:26 +0200)]
[MLIR] Rename collapsePLoops -> collapseParallelLoops

Summary:
Additionally, NFC code cleanups were done.

This is to address additional comments on
https://reviews.llvm.org/D76363

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

4 years ago[AVR] Fix function pointer address space
Vlastimil Labsky [Wed, 1 Apr 2020 08:05:45 +0000 (21:05 +1300)]
[AVR] Fix function pointer address space

Summary:
Function pointers should be created with program address space.
This fixes function pointers on AVR.

Reviewers: dylanmckay

Reviewed By: dylanmckay

Subscribers: Jim, cfe-commits

Tags: #clang

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

4 years ago[lldb][NFC] Modernize TestCallUserAnonTypedef
Raphael Isemann [Wed, 1 Apr 2020 07:45:20 +0000 (09:45 +0200)]
[lldb][NFC] Modernize TestCallUserAnonTypedef

4 years ago[MLIR] Replace OpBuilder(Block) with atBlockBegin and atBlockEnd
Tres Popp [Mon, 30 Mar 2020 14:52:59 +0000 (16:52 +0200)]
[MLIR] Replace OpBuilder(Block) with atBlockBegin and atBlockEnd

Summary:
OpBuilder(Block) is specifically replaced with
OpBuilder::atBlockEnd(Block);

This is to make insertion behavior clear due to there being no one
correct answer for which location in a block the default insertion
point should be.

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

4 years ago[TTI] Remove getCallCost
Sam Parker [Mon, 30 Mar 2020 10:44:20 +0000 (11:44 +0100)]
[TTI] Remove getCallCost

getCallCost is only used within the different layers of TTI, with no
backend implementing it so fold the base implementation into
getUserCost. I think this is an NFC.

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

4 years ago[VectorUtils][X86] De-templatize scaleShuffleMask and 2 X86 shuffle mask helpers...
Craig Topper [Wed, 1 Apr 2020 06:15:10 +0000 (23:15 -0700)]
[VectorUtils][X86] De-templatize scaleShuffleMask and 2 X86 shuffle mask helpers and move their implementation to cpp files

Summary: These were templated due to SelectionDAG using int masks for shuffles and IR using unsigned masks for shuffles. But now that D72467 has landed we have an int mask version of IRBuilder::CreateShuffleVector. So just use int instead of a template

Reviewers: spatel, efriedma, RKSimon

Reviewed By: efriedma

Subscribers: hiraditya, llvm-commits

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

4 years ago[lldb] Allow expect_expr without a running target
Raphael Isemann [Wed, 1 Apr 2020 07:39:14 +0000 (09:39 +0200)]
[lldb] Allow expect_expr without a running target

Summary:
If we don't have a current frame then we can still run many expressions
as long as we have an active target. With this patch `expect_expr` directly
calls the target's EvaluateExpression function when there is no current frame.

Reviewers: labath

Reviewed By: labath

Subscribers: JDevlieghere

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

4 years ago[X86][AVX] Add additional 256/512-bit test cases for PACKSS/PACKUS shuffle patterns
Simon Pilgrim [Tue, 31 Mar 2020 21:40:33 +0000 (22:40 +0100)]
[X86][AVX] Add additional 256/512-bit test cases for PACKSS/PACKUS shuffle patterns

Also add lowerShuffleWithPACK call to lowerV32I16Shuffle - shuffle combining was catching it but we avoid a lot of temporary shuffle creations if we catch it at lowering first.

4 years ago[X86] Run XOP vector rotation tests with/without AVX2
Simon Pilgrim [Tue, 31 Mar 2020 18:58:29 +0000 (19:58 +0100)]
[X86] Run XOP vector rotation tests with/without AVX2

I noticed this while reviewing D77152 - by only testing bdver4 we weren't checking an XOP target that only had AVX1

4 years ago[clangd] Add a flag to turn on recovery-expr.
Haojian Wu [Tue, 31 Mar 2020 14:09:49 +0000 (16:09 +0200)]
[clangd] Add a flag to turn on recovery-expr.

Reviewers: sammccall

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[Frontend] Replace CC1 option -masm-verbose with -fno-verbose-asm
Fangrui Song [Wed, 1 Apr 2020 05:22:27 +0000 (22:22 -0700)]
[Frontend] Replace CC1 option -masm-verbose with -fno-verbose-asm

Most OS✕target enable -fverbose-asm, so it makes sense to flip the CC1
option to reduce common command lines.

4 years ago[Driver] Flip the CC1 default of -fdiagnostics-show-option
Fangrui Song [Wed, 1 Apr 2020 04:30:14 +0000 (21:30 -0700)]
[Driver] Flip the CC1 default of -fdiagnostics-show-option

The driver enables -fdiagnostics-show-option by default, so flip the CC1
default to reduce the lengths of common CC1 command lines.

This change also makes ParseDiagnosticArgs() consistently enable
-fdiagnostics-show-option by default.

4 years ago[lld][WebAssembly] Early error if output file cannot be created.
Sam Clegg [Sat, 28 Mar 2020 00:03:32 +0000 (17:03 -0700)]
[lld][WebAssembly] Early error if output file cannot be created.

This matches the behaviour of the ELF driver.

Also move the `createFiles` to be `checkConfig` and report `no input
files` there.   Again this is mostly to match the structure of the ELF
linker better.

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

4 years ago[mlir][Linalg] Extend fusion to support WAW atm on buffers.
Hanhan Wang [Wed, 1 Apr 2020 04:33:23 +0000 (21:33 -0700)]
[mlir][Linalg] Extend fusion to support WAW atm on buffers.

Summary:
The RAW fusion happens only if the produecer block dominates the consumer block.
The WAW pattern also works with the precondition. I.e., if a producer can
dominate the consumer, they can fairly fuse together.

Since they are all tilable, we can think the pattern like this way:

Input:
```
linalg_op1 view

tile_loop
  subview_2
  linalg_op2 subview_2
```

Tile the first Linalg op as same as the second Linalg.
```
tile_loop
  subview_1
  linalg_op1 subview_1

tile_loop
  subview_2
  liangl_op2 subview_2
```

Since the first Linalg op is tilable in the same way and the computation are
independently, it's fair to fuse it with the second Linalg op.
```
tile_loop
  subview_1
  linalg_op1 subview_1
  linalg_op2 subview_2
```

In short, this patch includes:
- Handling both RAW and WAW pattern.
- Adding a interface method to get input and output buffers.
- Exposing a method to get a StringRef of a dependency type.
- Fixing existing WAW tests and add one more use case: initialize the buffer
  before conv op.

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

4 years ago[mlir][Linalg] Introduce linalg.pooling_min/max/sum op.
Hanhan Wang [Wed, 1 Apr 2020 04:21:33 +0000 (21:21 -0700)]
[mlir][Linalg] Introduce linalg.pooling_min/max/sum op.

Summary:
Performs an N-D pooling operation similarly to the description in the TF
documentation:
https://www.tensorflow.org/api_docs/python/tf/nn/pool

Different from the description, this operation doesn't perform on batch and
channel. It only takes tensors of rank `N`.

```
  output[x[0], ..., x[N-1]] =
    REDUCE_{z[0], ..., z[N-1]}
      input[
            x[0] * strides[0] - pad_before[0] + dilation_rate[0]*z[0],
            ...
            x[N-1]*strides[N-1] - pad_before[N-1] + dilation_rate[N-1]*z[N-1]
            ],
```

The required optional arguments are:
  - strides: an i64 array specifying the stride (i.e. step) for window
    loops.
  - dilations: an i64 array specifying the filter upsampling/input
    downsampling rate
  - padding: an i64 array of pairs (low, high) specifying the number of
    elements to pad along a dimension.

If strides or dilations attributes are missing then the default value is
one for each of the input dimensions. Similarly, padding values are zero
for both low and high in each of the dimensions, if not specified.

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

4 years ago[clang][xray] Add xray attributes to functions without decls too
Ian Levesque [Wed, 1 Apr 2020 02:07:27 +0000 (22:07 -0400)]
[clang][xray] Add xray attributes to functions without decls too

Summary: This allows instrumenting things like global initializers

Reviewers: dberris, MaskRay, smeenai

Subscribers: cfe-commits, johnislarry

Tags: #clang

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

4 years ago[RISCV] Split RISCVISelDAGToDAG.cpp to RISCVISelDAGToDAG.h and RISCVISelDAGToDAG.cpp
Shiva Chen [Tue, 31 Mar 2020 06:28:24 +0000 (14:28 +0800)]
[RISCV] Split RISCVISelDAGToDAG.cpp to RISCVISelDAGToDAG.h and RISCVISelDAGToDAG.cpp

For the downstream RISCV maintenance, it would be easier to inherent
RISCVISelDAGToDAG by including header and only override the method that needs
to be customized for the provider non-standard ISA extension without touching
RISCVISelDAGToDAG.cpp which may cause conflict when upgrading the downstream
LLVM version.

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

4 years ago[PowerPC] Don't generate ST_VSR_SCAL_INT if power8-vector is disabled
Kai Luo [Wed, 1 Apr 2020 02:15:25 +0000 (02:15 +0000)]
[PowerPC] Don't generate ST_VSR_SCAL_INT if power8-vector is disabled

Summary:
In https://bugs.llvm.org/show_bug.cgi?id=45297, it fails selecting
instructions for `PPCISD::ST_VSR_SCAL_INT`. The reason it generate the
`PPCISD::ST_VSR_SCAL_INT` with `-power8-vector` in IR is PPC's
combiner checks `hasP8Altivec` rather than `hasP8Vector`. This patch
should resolve PR45297.

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