platform/upstream/llvm.git
4 years agoRepair support for launching ios/tv/watch simulator binaries through platform
Adrian Prantl [Tue, 16 Jun 2020 23:25:09 +0000 (16:25 -0700)]
Repair support for launching ios/tv/watch simulator binaries through platform

and delete a bunch (but not all) redundant code. If you compare the remaining implementations of Platform*Simulator.cpp, there is still an obvious leftover cleanup task.

Specifically, this patch

- removes SDK initialization from dotest (there is equivalent but more
  complete code in Makefile.rules)

- make Platform*Simulator inherit the generic implementation of
  PlatformAppleSimulator (more can be done here)

- simplify the platform logic in Makefile.rules

- replace the custom SDK finding logic in Platform*Simulator with XcodeSDK

- adds a test for each supported simulator

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

4 years ago[lldb] Disable complex tests on Windows
Raphael Isemann [Fri, 19 Jun 2020 16:40:06 +0000 (18:40 +0200)]
[lldb] Disable complex tests on Windows

The tests fail to compile there:
```
complex/main.c:4:16: error: expected ';' at end of declaration
  float complex complex_float = -1.5f + -2.5f * I;
               ^
               ;
```

4 years ago[VectorCombine] fix crash while transforming constants
Sanjay Patel [Fri, 19 Jun 2020 16:28:04 +0000 (12:28 -0400)]
[VectorCombine] fix crash while transforming constants

This is a variation of the proposal in D82049 with an extra test.

4 years ago[ELF] Refine LMA offset propagation rule in D76995
Fangrui Song [Fri, 19 Jun 2020 16:07:48 +0000 (09:07 -0700)]
[ELF] Refine LMA offset propagation rule in D76995

If neither AT(lma) nor AT>lma_region is specified,
D76995 keeps `lmaOffset` (LMA - VMA) if the previous section is in the
default LMA region.

This patch additionally checks that the two sections are in the same
memory region.

Add a test case derived from https://bugs.llvm.org/show_bug.cgi?id=45313

  .mdata : AT(0xfb01000) { *(.data); } > TCM
  // It is odd to make .bss inherit lmaOffset, because the two sections
  // are in different memory regions.
  .bss : { *(.bss) } > DDR

With this patch, section VMA/LMA match GNU ld. Note, GNU ld supports
out-of-order (w.r.t sh_offset) sections and places .text and .bss in the
same PT_LOAD. We don't have that behavior.

Reviewed By: grimar

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

4 years ago[flang] DATA stmt processing (part 3/4): Remaining prep work
peter klausler [Fri, 19 Jun 2020 00:17:04 +0000 (17:17 -0700)]
[flang] DATA stmt processing (part 3/4): Remaining prep work

Rolls up small changes across the frontend to prepare for the large
forthcoming patch (part 4/4) that completes DATA statement processing
via conversion to initializers.

Reviewed By: PeteSteinfeld

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

4 years ago[ELF] Refactor ObjFile<ELFT>::initializeSymbols to enforce the invariant: InputFile...
Fangrui Song [Fri, 19 Jun 2020 16:05:28 +0000 (09:05 -0700)]
[ELF] Refactor ObjFile<ELFT>::initializeSymbols to enforce the invariant: InputFile::symbols has non null entry

Fixes PR46348.

ObjFile<ELFT>::initializeSymbols contains two symbol iteration loops:

```
for each symbol
  if non-inheriting && non-local
    fill in this->symbols[i]

for each symbol
  if local
    fill in this->symbols[i]
  else
    symbol resolution
```

Symbol resolution can trigger a duplicate symbol error which will call
InputSectionBase::getObjMsg to iterate over InputFile::symbols.  If a
non-local symbol appears after the non-local symbol being resolved
(violating ELF spec), its `this->symbols[i]` entry has not been filled
in, InputSectionBase::getObjMsg will crash due to
`dyn_cast<Defined>(nullptr)`.

To fix the bug, reorganize the two loops to ensure this->symbols is
complete before symbol resolution. This enforces the invariant:
InputFile::symbols has none null entry when InputFile::getSymbols() is called.

```
for each symbol
  if non-inheriting
    fill in this->symbols[i]

for each symbol starting from firstGlobal
  if non-local
    symbol resolution
```

Additionally, move the (non-local symbol in local part of .symtab)
diagnostic from Writer<ELFT>::copyLocalSymbols() to initializeSymbols().

Reviewed By: grimar, jhenderson

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

4 years ago[AMDGPU] Some formatting fixes. NFC.
Stanislav Mekhanoshin [Fri, 19 Jun 2020 16:02:59 +0000 (09:02 -0700)]
[AMDGPU] Some formatting fixes. NFC.

4 years ago[lldb] Fix TestComplexInt on ARM
Raphael Isemann [Fri, 19 Jun 2020 15:46:21 +0000 (17:46 +0200)]
[lldb] Fix TestComplexInt on ARM

On the buildbot long and int have the same size but long and long long don't,
so the bug where we find the first type by size will produce a different error.
Make the test dynamic based on int/long/long long size to fix the bot.

4 years ago[MLIR][Shape] Lower `shape.shape_of` to standard dialect
Frederik Gossen [Fri, 19 Jun 2020 15:09:36 +0000 (15:09 +0000)]
[MLIR][Shape] Lower `shape.shape_of` to standard dialect

Lower `shape.shape_of` to standard dialect.
This lowering supports statically and dynamically shaped tensors.
Support for unranked tensors will be added as part of the lowering to `scf`.

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

4 years agoRevert "[FileCheck, unittest] Improve readability of ExpressionFormat"
Thomas Preud'homme [Fri, 19 Jun 2020 14:52:07 +0000 (15:52 +0100)]
Revert "[FileCheck, unittest] Improve readability of ExpressionFormat"

This reverts commit cd2553de77f2c3206deaa261a15cc7520ff2ff56.

4 years ago[libc++] Require concepts support for <numbers>
Raul Tambre [Fri, 19 Jun 2020 14:36:44 +0000 (10:36 -0400)]
[libc++] Require concepts support for <numbers>

Similar to <concepts>, we need to protect the header and test against
inclusion and being run if concepts aren't supported by the compiler.

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

4 years agoRevert "[AMDGPU] Select s_cselect"
Piotr Sobczak [Fri, 19 Jun 2020 14:39:55 +0000 (16:39 +0200)]
Revert "[AMDGPU] Select s_cselect"

This caused some failures detected by the buildbot with
expensive checks enabled.

This reverts commit 4067de569f119a81419fbf2e79d5f3307dfdda5b.

4 years ago[mlir] Add support for alignment annotations to the LLVM dialect to LLVM translation.
Stephan Herhut [Fri, 19 Jun 2020 08:59:07 +0000 (10:59 +0200)]
[mlir] Add support for alignment annotations to the LLVM dialect to LLVM translation.

Summary:
With this change, a function argument attribute of the form
"llvm.align" = <int> will be translated to the corresponding align
attribute in LLVM by the ModuleConversion.

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

4 years ago[lldb][NFC] Remove unused DEPTH_INCREMENT in CompilerType.cpp
Raphael Isemann [Fri, 19 Jun 2020 14:25:49 +0000 (16:25 +0200)]
[lldb][NFC] Remove unused DEPTH_INCREMENT in CompilerType.cpp

4 years ago[AMDGPU] Add some missing -LABEL checks
Jay Foad [Fri, 19 Jun 2020 14:33:48 +0000 (15:33 +0100)]
[AMDGPU] Add some missing -LABEL checks

4 years ago[AMDGPU][CostModel] Add fneg cost estimation
dfukalov [Thu, 18 Jun 2020 00:46:18 +0000 (03:46 +0300)]
[AMDGPU][CostModel] Add fneg cost estimation

Summary: The estimation uses AMDGPUTargetLowering::isFNegFree()

Reviewers: rampitec

Reviewed By: rampitec

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

Tags: #llvm

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

4 years ago[X86][SSE] movmsk-cmp.ll - cleanup check prefixes and add SSE41 target tests
Simon Pilgrim [Fri, 19 Jun 2020 13:56:06 +0000 (14:56 +0100)]
[X86][SSE] movmsk-cmp.ll - cleanup check prefixes and add SSE41 target tests

4 years ago[lldb][NFC] Add test for C99 and GCC complex types
Raphael Isemann [Fri, 19 Jun 2020 12:47:15 +0000 (14:47 +0200)]
[lldb][NFC] Add test for C99 and GCC complex types

LLDB has a lot of code for supporting complex types but we don't have a single
test for it. This adds some basic tests and documents the found bugs.

4 years ago[AMDGPU] Select s_cselect
Piotr Sobczak [Wed, 4 Mar 2020 14:13:08 +0000 (15:13 +0100)]
[AMDGPU] Select s_cselect

Summary:
Add patterns to select s_cselect in the isel.

Handle more cases of implicit SCC accesses in si-fix-sgpr-copies
to allow new patterns to work.

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

Tags: #llvm

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

4 years ago[ARM][MVE] tail-predication: renamed internal option.
Sjoerd Meijer [Fri, 19 Jun 2020 14:06:13 +0000 (15:06 +0100)]
[ARM][MVE] tail-predication: renamed internal option.

Renamed -force-tail-predication to -force-mve-tail-predication because
that's more descriptive and consistent.

4 years ago[ARM][BFloat] Implement lowering of bf16 load/store intrinsics
Mikhail Maltsev [Fri, 19 Jun 2020 14:02:35 +0000 (14:02 +0000)]
[ARM][BFloat] Implement lowering of bf16 load/store intrinsics

Reviewers: labrinea, dmgreen, pratlucas, LukeGeeson

Reviewed By: dmgreen

Subscribers: kristof.beyls, hiraditya, danielkiss, llvm-commits

Tags: #llvm

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

4 years ago[FileCheck, unittest] Improve readability of ExpressionFormat
Thomas Preud'homme [Thu, 18 Jun 2020 18:48:55 +0000 (19:48 +0100)]
[FileCheck, unittest] Improve readability of ExpressionFormat

Summary:
Factor out repetetitive code into helper function and split massive
ExpressionFormat method test into separate test for each method,
removing dead code in passing. Also add a MinInt64 and MaxInt64 checks
when testing getMatchingString.

Reviewers: jhenderson, jdenny, probinson, grimar, arichardson

Reviewed By: jhenderson, grimar

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[AMDGPU][MC][NFC] Updated and enabled MC lit tests
Dmitry Preobrazhensky [Fri, 19 Jun 2020 13:27:40 +0000 (16:27 +0300)]
[AMDGPU][MC][NFC] Updated and enabled MC lit tests

Updated tests disabled by change 5f5f566.

https://github.com/llvm/llvm-project/commit/5f5f566b265db00f577ead268400d99f34ba9cdd

4 years ago[X86][SSE] Add tests for (missing) MOVMSK(PCMPEQ(X,0)) != -1 -> PTESTZ(X,X) allof...
Simon Pilgrim [Fri, 19 Jun 2020 13:11:28 +0000 (14:11 +0100)]
[X86][SSE] Add tests for (missing) MOVMSK(PCMPEQ(X,0)) != -1 -> PTESTZ(X,X) allof folds

4 years ago[ARM][BFloat] Lowering of create/get/set/dup intrinsics
Mikhail Maltsev [Fri, 19 Jun 2020 12:49:17 +0000 (12:49 +0000)]
[ARM][BFloat] Lowering of create/get/set/dup intrinsics

This patch adds codegen for the following BFloat
operations to the ARM backend:
* concatenation of bf16 vectors
* bf16 vector element extraction
* bf16 vector element insertion
* duplication of a bf16 value into each lane of a vector
* duplication of a bf16 vector lane into each lane

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

4 years ago[clang][test][NFC] Also test for serialization in AST dump tests, part 1/n.
Bruno Ricci [Fri, 19 Jun 2020 12:35:50 +0000 (13:35 +0100)]
[clang][test][NFC] Also test for serialization in AST dump tests, part 1/n.

The outputs between the direct ast-dump test and the ast-dump test after
deserialization should match modulo a few differences.

For hand-written tests, strip the "<undeserialized declarations>"s and
the "imported"s with sed.

For tests generated with "make-ast-dump-check.sh", regenerate the
output.

Part 1/n.

4 years ago[clang][utils] Also match "col:" when looking for the end of builtins
Bruno Ricci [Fri, 19 Jun 2020 12:31:38 +0000 (13:31 +0100)]
[clang][utils] Also match "col:" when looking for the end of builtins

Some AST dump tests have no "line:" at all. See "ast-dump-wchar.cpp" for
an example.

4 years ago[AIX] Default AIX to using -fno-use-cxa-atexit
Xiangling Liao [Thu, 18 Jun 2020 23:52:34 +0000 (19:52 -0400)]
[AIX] Default AIX to using -fno-use-cxa-atexit

On AIX, we use __atexit to register dtor functions rather than __cxa_atexit.
So a driver change is needed to default AIX to using -fno-use-cxa-atexit.

Windows platform does not uses __cxa_atexit either. Following its precedent,
we remove the assertion for when -fuse-cxa-atexit is specified by the user,
do not produce a message and silently default to -fno-use-cxa-atexit behavior.

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

4 years ago[AIX][Frontend] Static init implementation for AIX considering no priority
Xiangling Liao [Wed, 27 May 2020 21:04:43 +0000 (17:04 -0400)]
[AIX][Frontend] Static init implementation for AIX considering no priority

1. Provides no piroirity supoort && disables three priority related
   attributes: init_priority, ctor attr, dtor attr;
2. '-qunique' in XL compiler equivalent behavior of emitting sinit
    and sterm functions name using getUniqueModuleId() util function
    in LLVM (currently no support for InternalLinkage and WeakODRLinkage
    symbols);
3. Add testcases to emit IR sample with __sinit80000000, __dtor, and
    __sterm80000000;
4. Temporarily side-steps the need to implement the functionality of
   llvm.global_ctors and llvm.global_dtors arrays. The uses of that
   functionality in this patch (with respect to the name of the functions
   involved) are not representative of how the functionality will be used
   once implemented.

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

4 years ago[NFC] Simplify IncludeInsertions appending to diagnostics
Nathan James [Fri, 19 Jun 2020 12:22:39 +0000 (13:22 +0100)]
[NFC] Simplify IncludeInsertions appending to diagnostics

4 years ago[clangd] Use drop_front instead of consume_front to get rid of a redundant check
Kadir Cetinkaya [Fri, 19 Jun 2020 12:13:01 +0000 (14:13 +0200)]
[clangd] Use drop_front instead of consume_front to get rid of a redundant check

4 years ago[mlir][linalg] Add callback-based builders for `linalg.(indexed_)generic`.
Alexander Belyaev [Fri, 19 Jun 2020 11:51:48 +0000 (13:51 +0200)]
[mlir][linalg] Add callback-based builders for `linalg.(indexed_)generic`.

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

4 years ago[clangd] Don't mangle workdir-relevant driver path in compile commands
Sam McCall [Wed, 17 Jun 2020 13:56:01 +0000 (15:56 +0200)]
[clangd] Don't mangle workdir-relevant driver path in compile commands

Summary:
We can't resolve this (if it's a symlink) without further refactoring, but the
current behaviour is just incorrect.

Reviewers: kadircet

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

Tags: #clang

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

4 years ago[llvm-readobj] - Add a validation of the GNU hash table to printGnuHashHistogram().
Georgii Rymar [Wed, 17 Jun 2020 10:47:37 +0000 (13:47 +0300)]
[llvm-readobj] - Add a validation of the GNU hash table to printGnuHashHistogram().

Similar to D81937, we might crash when printing a histogram for a GNU hash table
with a 'symndx' index that is larger than the number of dynamic symbols.

This patch adopts and reuses the `getGnuHashTableChains()` helper which performs
a validation of the table. As a side effect the warning reported for
the --gnu-hash-table was improved.

Also with this change we start to report a warning when the histogram is requested for
the GNU hash table, but the dynamic symbols table is empty (size == 0).

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

4 years ago[DSE,MSSA] Enable XFAIL'd merge-stores.ll test (NFC).
Florian Hahn [Fri, 19 Jun 2020 11:08:40 +0000 (12:08 +0100)]
[DSE,MSSA] Enable XFAIL'd merge-stores.ll test (NFC).

All cases in the test are supported now, it only still failed because an
over-eager regex match not accounting for `, align ` being added to each
load/store now.

4 years ago[clang-tidy] Extend InheritParentConfig to CommandLineConfig
Nathan James [Fri, 19 Jun 2020 11:02:08 +0000 (12:02 +0100)]
[clang-tidy] Extend InheritParentConfig to CommandLineConfig

Extend the `InheritParentConfig` support introduced in D75184 for the command line option `--config`.
The current behaviour of `--config` is to when set, disable looking for `.clang-tidy` configuration files.
This new behaviour lets you set `InheritParentConfig` to true in the command line to then look for `.clang-tidy` configuration files to be merged with what's been specified on the command line.

Reviewed By: DmitryPolukhin

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

4 years ago[OpenMP][OMPT] Pass mutexinoutset to the tool
Joachim Protze [Fri, 19 Jun 2020 08:59:18 +0000 (10:59 +0200)]
[OpenMP][OMPT] Pass mutexinoutset to the tool

Adds OMPT support for the mutexinoutset dependency

Reviewed by: hbae

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

4 years ago[X86][SSE] combineHorizontalPredicateResult - improve all_of(X == 0) for vXi64 on...
Simon Pilgrim [Thu, 18 Jun 2020 16:41:15 +0000 (17:41 +0100)]
[X86][SSE] combineHorizontalPredicateResult - improve all_of(X == 0) for vXi64 on pre-SSE41 targets

Without SSE41 we don't have the PCMPEQQ instruction, making cmp-with-zero reductions more complicated than necessary. We can compare as vXi32 (PCMPEQD) and tweak the MOVMSK comparison to test upper/lower DWORD comparisons.

This pre-fixes something that occurs with null tests for vectors of (64-bit) pointers such as in PR35129.

4 years ago[clangd] Drop usage of PreambleStatCache in scanPreamble
Kadir Cetinkaya [Wed, 17 Jun 2020 16:09:54 +0000 (18:09 +0200)]
[clangd] Drop usage of PreambleStatCache in scanPreamble

Summary: It was used inside buildCompilerInvocation to speed up stats. But
preambleStatCache doesn't contain stat information performed while
building compiler invocation. So it was an unnecessary optimization.

Furthermore, buildCompilerInvocation in scanPreamble doesn't need to
find gcc installation, include paths and such, as it is only trying to
lex directives. Hence we are passing an empty FS to get rid of any
redundant IO.

Reviewers: sammccall

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

Tags: #clang

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

4 years ago[gn build] Port 0628705efaf
LLVM GN Syncbot [Fri, 19 Jun 2020 10:15:53 +0000 (10:15 +0000)]
[gn build] Port 0628705efaf

4 years ago[clangd] Rename FSProvider to TFS in case of ThreadsafeFS
Kadir Cetinkaya [Wed, 17 Jun 2020 16:09:54 +0000 (18:09 +0200)]
[clangd] Rename FSProvider to TFS in case of ThreadsafeFS

Summary: Depends on D81998

Reviewers: sammccall

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

Tags: #clang

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

4 years ago[clangd][NFC] Rename FSProvider and getFileSystem
Kadir Cetinkaya [Wed, 17 Jun 2020 09:53:32 +0000 (11:53 +0200)]
[clangd][NFC] Rename FSProvider and getFileSystem

Summary:
Clangd uses FSProvider to get threadsafe views into file systems. This
patch changes naming to make that more explicit.

Depends on D81920

Reviewers: sammccall

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

Tags: #clang

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

4 years ago[clangd] Change FSProvider::getFileSystem to take CurrentWorkingDirectory
Kadir Cetinkaya [Tue, 16 Jun 2020 10:16:24 +0000 (12:16 +0200)]
[clangd] Change FSProvider::getFileSystem to take CurrentWorkingDirectory

Summary:
We've faced a couple of problems when the returned FS didn't have the
proper working directory. New signature makes the API safer against such
problems.

Reviewers: sammccall

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

Tags: #clang

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

4 years ago[StackSafety,NFC] Fix comment
Vitaly Buka [Fri, 19 Jun 2020 10:10:01 +0000 (03:10 -0700)]
[StackSafety,NFC] Fix comment

4 years agotry to fix build bot after b7338fb1a6a464472850211165391983d2c8fdf3
Tyker [Fri, 19 Jun 2020 10:01:59 +0000 (12:01 +0200)]
try to fix build bot after b7338fb1a6a464472850211165391983d2c8fdf3

4 years ago[X86][SSE] combineSetCCMOVMSK - fold MOVMSK(SHUFFLE(X,u)) -> MOVMSK(X)
Simon Pilgrim [Fri, 19 Jun 2020 09:27:09 +0000 (10:27 +0100)]
[X86][SSE] combineSetCCMOVMSK - fold MOVMSK(SHUFFLE(X,u)) -> MOVMSK(X)

If we're permuting ALL the elements of a single vector, then for allof/anyof MOVMSK tests we can avoid the shuffle entirely.

4 years ago[SVE] Fall back on DAG ISel at -O0 when encountering scalable types
David Sherwood [Tue, 9 Jun 2020 13:51:38 +0000 (14:51 +0100)]
[SVE] Fall back on DAG ISel at -O0 when encountering scalable types

At the moment we use Global ISel by default at -O0, however it is
currently not capable of dealing with scalable vectors for two
reasons:

1. The register banks know nothing about SVE registers.
2. The LLT (Low Level Type) class knows nothing about scalable
   vectors.

For now, the easiest way to avoid users hitting issues when using
the SVE ACLE is to fall back on normal DAG ISel when encountering
instructions that operate on scalable vector types.

I've added a couple of RUN lines to existing SVE tests to ensure
we can compile at -O0. I've also added some new tests to

  CodeGen/AArch64/GlobalISel/arm64-fallback.ll

that demonstrate we correctly fallback to DAG ISel at -O0 when
lowering formal arguments or translating instructions that involve
scalable vector types.

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

4 years ago[SveEmitter] Add builtins for struct loads/stores (ld2/ld3/etc)
Sander de Smalen [Fri, 19 Jun 2020 09:06:39 +0000 (10:06 +0100)]
[SveEmitter] Add builtins for struct loads/stores (ld2/ld3/etc)

The struct store intrinsics in LLVM IR take the individual parts
as arguments, so this patch uses the intrinsics used for `svget`
to break the tuples into individual parts.

Reviewers: c-rhodes, efriedma, ctetreau, david-arm

Reviewed By: efriedma

Tags: #clang

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

4 years ago[CodeGen,AArch64] Fix up warnings in performExtendCombine
David Sherwood [Wed, 10 Jun 2020 13:37:25 +0000 (14:37 +0100)]
[CodeGen,AArch64] Fix up warnings in performExtendCombine

Try to avoid calling getVectorNumElements() or relying upon the
TypeSize conversion to uin64_t.

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

4 years ago[StackSafety] Add StackLifetime::isAliveAfter
Vitaly Buka [Fri, 12 Jun 2020 21:10:47 +0000 (14:10 -0700)]
[StackSafety] Add StackLifetime::isAliveAfter

This function is going to be added into StackSafety checks.
This patch uses function in ::print implementation to make sure
that it works as expected.

4 years ago[SafeStack,NFC] Print liveness for all instrunctions
Vitaly Buka [Fri, 19 Jun 2020 07:49:23 +0000 (00:49 -0700)]
[SafeStack,NFC] Print liveness for all instrunctions

4 years ago[StackSafety,NFC] Replace map with vector
Vitaly Buka [Fri, 19 Jun 2020 01:17:59 +0000 (18:17 -0700)]
[StackSafety,NFC] Replace map with vector

We don't need to lookup InstructionNumbering by number, so
we can use vector with index as assigned number.

4 years ago[StackSafety,NFC] Don't test terminators
Vitaly Buka [Fri, 19 Jun 2020 01:08:37 +0000 (18:08 -0700)]
[StackSafety,NFC] Don't test terminators

Code does not track terminators and do not expose them through interface.
State there is just a state of the last instruction or entry.
So this information is just redundant and doesn't need to be tested.

4 years ago[SCCP] Turn sext into zext for non-negative ranges.
Florian Hahn [Fri, 19 Jun 2020 08:27:52 +0000 (09:27 +0100)]
[SCCP] Turn sext into zext for non-negative ranges.

This patch updates SCCP/IPSCCP to use the computed range info to turn
sexts into zexts, if the value is known to be non-negative. We already
to a similar transform in CorrelatedValuePropagation, but it seems like
we can catch a lot of additional cases by doing it in SCCP/IPSCCP as
well.

The transform is limited to ranges that are known to not include undef.

Currently constant ranges from conditions are treated as potentially
containing undef, due to PR46144. Once we flip this, the transform will
be more effective in practice.

Reviewers: efriedma, davide

Reviewed By: efriedma

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

4 years ago[LiveIntervals] Fix early-clobber handling in handleMoveUp
Jay Foad [Thu, 18 Jun 2020 17:20:58 +0000 (18:20 +0100)]
[LiveIntervals] Fix early-clobber handling in handleMoveUp

Without this fix, handleMoveUp can create an invalid live range like
this:

[98904e,98908r:0)[98908e,227504r:1)

where the two segments overlap, but only because we have lost the "e"
(early-clobber) on the end point of the first segment.

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

4 years ago[libc++] Implement <numbers>
Raul Tambre [Fri, 19 Jun 2020 07:13:33 +0000 (12:43 +0530)]
[libc++] Implement <numbers>

Summary: Constants have 33 significant decimal digits for IEEE 754 128-bit floating-point numbers.

Reviewers: ldionne, #libc, EricWF, zoecarver, curdeius

Reviewed By: ldionne, #libc, curdeius

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

4 years ago[NFC] Make AST_BLOCK_HASH test more robust with downstream changes
Daniel Grumberg [Fri, 19 Jun 2020 08:07:42 +0000 (09:07 +0100)]
[NFC] Make AST_BLOCK_HASH test more robust with downstream changes

4 years ago[AssumeBundles] add cannonicalisation to the assume builder
Tyker [Fri, 19 Jun 2020 08:32:09 +0000 (10:32 +0200)]
[AssumeBundles] add cannonicalisation to the assume builder

Summary:
this reduces significantly the number of assumes generated without aftecting too much
the information that is preserved. this improves the compile-time cost
of enable-knowledge-retention significantly.

Reviewers: jdoerfert, sstefan1

Reviewed By: jdoerfert

Subscribers: hiraditya, asbirlea, llvm-commits

Tags: #llvm

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

4 years ago[mlir] Remove EDSC NestedBuilder
Alex Zinenko [Thu, 18 Jun 2020 20:55:53 +0000 (22:55 +0200)]
[mlir] Remove EDSC NestedBuilder

All class derived from `edsc::NestedBuilder` in core MLIR have been replaced
with alternatives based on OpBuilder+callbacks. The *Builder EDSC
infrastructure has been deprecated. Remove edsc::NestedBuilder.

This completes the "structured builders" refactoring.

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

4 years ago[mlir] Remove EDSC BlockBuilder, BlockHandle and related functionality
Alex Zinenko [Thu, 18 Jun 2020 20:55:46 +0000 (22:55 +0200)]
[mlir] Remove EDSC BlockBuilder, BlockHandle and related functionality

Callback-based constructions of blocks where the body is populated in the same
function as the block creation is a natural extension of callback-based loop
construction. They provide more concise and simple APIs than EDSC BlockBuilder
at less than 20% infrastructural code cost, and are compatible with
ScopedContext. BlockBuilder, Blockhandle and related functionality has been
deprecated, remove them.

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

4 years ago[mlir] Remove EDSC LoopBuilder, derived classes and related functionality
Alex Zinenko [Thu, 18 Jun 2020 20:55:40 +0000 (22:55 +0200)]
[mlir] Remove EDSC LoopBuilder, derived classes and related functionality

Callback-based loop construction, with loop bodies being constructed during the
construction of the parent op using a function, is now fully supported by the
core infrastructure. This provides almost the same level of brevity as EDSC
LoopBuilder at less than 30% infrastructural code cost. Functional equivalents
compatible with EDSC ScopedContext are implemented on top of the main builders.
LoopBuilder and related functionality has been deprecated, remove it.

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

4 years ago[CodeGen] Fix SimplifyDemandedBits for scalable vectors
David Sherwood [Tue, 26 May 2020 06:46:01 +0000 (07:46 +0100)]
[CodeGen] Fix SimplifyDemandedBits for scalable vectors

For now I have changed SimplifyDemandedBits and it's various callers
to assume we know nothing for scalable vectors and to ignore the
demanded bits completely. I have also done something similar for
SimplifyDemandedVectorElts. These changes fix up lots of warnings
due to calls to EVT::getVectorNumElements() for types with scalable
vectors. These functions are all used for optimisations, rather than
functional requirements. In future we can revisit this code if
there is a need to improve code quality for SVE.

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

4 years ago[CodeGen] Fix ComputeNumSignBits for scalable vectors
David Sherwood [Wed, 3 Jun 2020 14:02:44 +0000 (15:02 +0100)]
[CodeGen] Fix ComputeNumSignBits for scalable vectors

When trying to calculate the number of sign bits for scalable vectors
we should just bail out for now and pretend we know nothing.

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

4 years ago[AST] Dump containsErrors bit for the Type.
Haojian Wu [Tue, 16 Jun 2020 07:08:02 +0000 (09:08 +0200)]
[AST] Dump containsErrors bit for the Type.

Reviewers: sammccall

Subscribers: cfe-commits

Tags: #clang

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

4 years agoFix `check-mlir` target when the host target isn't configured
Mehdi Amini [Fri, 19 Jun 2020 03:21:36 +0000 (03:21 +0000)]
Fix `check-mlir` target when the host target isn't configured

This patch adds the `default_triple` feature to MLIR test suite.
This feature was added to LLVM in d178f4fc8 in order to be able to
run the LLVM tests without having the host targets configured in.
With this change, `ninja check-mlir` passes without the host
target, i.e. this config:

  cmake ../llvm -DLLVM_TARGETS_TO_BUILD="" -DLLVM_DEFAULT_TARGET_TRIPLE="" -DLLVM_ENABLE_PROJECTS=mlir -GNinja

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

4 years agoMark some LLVM tests which require a default_triple (NFC)
Mehdi Amini [Fri, 19 Jun 2020 04:41:24 +0000 (04:41 +0000)]
Mark some LLVM tests which require a default_triple (NFC)

These tests involve a JIT, and like other tests should have the
REQUIRE: default_triple present.
This allow to run `ninja check` without the host target configured
in.

4 years ago[AArch64] Add clang command line support for -mharden-sls=
Kristof Beyls [Mon, 25 May 2020 14:48:22 +0000 (15:48 +0100)]
[AArch64] Add clang command line support for -mharden-sls=

The accepted options to -mharden-sls= are:
* all: enable all mitigations against Straight Line Speculation that are
  implemented.
* none: disable all mitigations against Straight Line Speculation.
* retbr: enable the mitigation against Straight Line Speculation for RET
  and BR instructions.
* blr: enable the mitigation against Straight Line Speculation for BLR
  instructions.

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

4 years ago[Test] Add more tests on select->phi transform
Max Kazantsev [Fri, 19 Jun 2020 05:56:26 +0000 (12:56 +0700)]
[Test] Add more tests on select->phi transform

4 years ago[AVR] Remove duplicate specification of lib directory
Dylan McKay [Fri, 19 Jun 2020 05:34:59 +0000 (17:34 +1200)]
[AVR] Remove duplicate specification of lib directory

Reviewers: dylanmckay

Reviewed By: dylanmckay

Subscribers: Jim, cfe-commits

Tags: #clang

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

This was originally committed in
03b0831144a9fe25aac81498b0a1dec82f4ec5df but I missed the commit
attribution.

Patch by Dennis van der Schagt.

4 years agoRevert "[AVR] Remove duplicate specification of lib directory"
Dylan McKay [Fri, 19 Jun 2020 05:35:43 +0000 (17:35 +1200)]
Revert "[AVR] Remove duplicate specification of lib directory"

This reverts commit 03b0831144a9fe25aac81498b0a1dec82f4ec5df.

I forgot to attribute the commit originally so I am recommitting in a
subsequent patch.

4 years ago[AVR] Remove duplicate specification of lib directory
Dylan McKay [Fri, 19 Jun 2020 05:34:59 +0000 (17:34 +1200)]
[AVR] Remove duplicate specification of lib directory

Reviewers: dylanmckay

Reviewed By: dylanmckay

Subscribers: Jim, cfe-commits

Tags: #clang

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

4 years ago[AArch64] Avoid incompatibility between SLSBLR mitigation and BTI codegen.
Kristof Beyls [Fri, 22 May 2020 20:00:46 +0000 (21:00 +0100)]
[AArch64] Avoid incompatibility between SLSBLR mitigation and BTI codegen.

A "BTI c" instruction only allows jumping/calling to using a BLR* instruction.
However, the SLSBLR mitigation changes a BLR to a BR to implement the
function call. Therefore, a "BTI c" check that passed before could
trigger after the BLR->BL change done by the SLSBLR mitigation.
However, if the register used in BR is X16 or X17, this trigger will not
fire (see ArmARM for further details).

Therefore, this patch simply changes the function stubs for the SLSBLR
mitigation from
__llvm_slsblr_thunk_x<N>:
    br x<N>
    SpeculationBarrier
to
__llvm_slsblr_thunk_x<N>:
    mov x16, x<N>
    br  x16
    SpeculationBarrier

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

4 years ago[libc] Migrate the libc benchmark instruction to ninja.
Anthony Steinhauser [Fri, 19 Jun 2020 04:54:30 +0000 (21:54 -0700)]
[libc] Migrate the libc benchmark instruction to ninja.

    Reviewers: sivachandra

    Reviewed By: sivachandra

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

4 years ago[MC] Pass the symbol rather than its name to onSymbolStart()
Ronak Chauhan [Wed, 17 Jun 2020 19:52:08 +0000 (01:22 +0530)]
[MC] Pass the symbol rather than its name to onSymbolStart()

Summary: This allows targets to also consider the symbol's type and/or address if needed.

Reviewers: scott.linder, jhenderson, MaskRay, aardappel

Reviewed By: scott.linder, MaskRay

Subscribers: dschuff, sbc100, jgravelle-google, hiraditya, aheejin, rupprecht, llvm-commits

Tags: #llvm

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

4 years ago[llvm][SVE] Reg + reg addressing mode for LD1RO.
Francesco Petrogalli [Fri, 19 Jun 2020 03:31:01 +0000 (03:31 +0000)]
[llvm][SVE] Reg + reg addressing mode for LD1RO.

Reviewers: efriedma, sdesmalen

Reviewed By: efriedma

Subscribers: tschuett, hiraditya, rkruppe, psnobl, llvm-commits

Tags: #llvm

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

4 years ago[PowerPC] Canonicalize shuffles to match more single-instruction masks on LE
Nemanja Ivanovic [Fri, 19 Jun 2020 02:53:50 +0000 (21:53 -0500)]
[PowerPC] Canonicalize shuffles to match more single-instruction masks on LE

We currently miss a number of opportunities to emit single-instruction
VMRG[LH][BHW] instructions for shuffles on little endian subtargets. Although
this in itself is not a huge performance opportunity since loading the permute
vector for a VPERM can always be pulled out of loops, producing such merge
instructions is useful to downstream optimizations.
Since VPERM is essentially opaque to all subsequent optimizations, we want to
avoid it as much as possible. Other permute instructions have semantics that can
be reasoned about much more easily in later optimizations.

This patch does the following:
- Canonicalize shuffles so that the first element comes from the first vector
  (since that's what most of the mask matching functions want)
- Switch the elements that come from splat vectors so that they match the
  corresponding elements from the other vector (to allow for merges)
- Adds debugging messages for when a shuffle is matched to a VPERM so that
  anyone interested in improving this further can get the info for their code

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

4 years agoAMDGPU/GlobalISel: Remove selection of MAD/MAC when not available
Carl Ritson [Fri, 19 Jun 2020 01:29:47 +0000 (10:29 +0900)]
AMDGPU/GlobalISel: Remove selection of MAD/MAC when not available

Add code to respect mad-mac-f32-insts target feature.

Reviewed By: arsenm

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

4 years ago[gn build] Port 9ca50e887db
LLVM GN Syncbot [Fri, 19 Jun 2020 01:17:54 +0000 (01:17 +0000)]
[gn build] Port 9ca50e887db

4 years agoMore test cleanup for c36b03e32556a966e584386ac7dbb110bc7e4bc5.
Richard Smith [Fri, 19 Jun 2020 01:16:53 +0000 (18:16 -0700)]
More test cleanup for c36b03e32556a966e584386ac7dbb110bc7e4bc5.

4 years ago[libTooling] Add parser for string representation of `RangeSelector`.
Yitzhak Mandelbaum [Mon, 15 Jun 2020 19:23:57 +0000 (15:23 -0400)]
[libTooling] Add parser for string representation of `RangeSelector`.

This patch adds a parser for a `RangeSelector` written as a string. The format
is closely based on the way one would right the selector in C++. This should
enable use of `RangeSelector`s from tools like clang-query and web UIs.

4 years agoThe type of a reference to a non-type template parameter pack should
Richard Smith [Fri, 19 Jun 2020 00:45:55 +0000 (17:45 -0700)]
The type of a reference to a non-type template parameter pack should
not be a pack expansion type.

Using a pack expansion type for a pack declaration makes sense, but
general expressions should never have pack expansion types. If we have a
pack `T *...V`, then the type of `V` is the type `T *`, which contains
an unexpanded pack, and is a pointer type.

This allows us to better diagnose issues where a template is invalid due
to some non-dependent portion of a dependent type of a non-type template
parameter pack.

4 years ago[BFloat] Move LLVMBFloatTypeKind to the end of the enum
Ties Stuij [Thu, 18 Jun 2020 22:57:32 +0000 (23:57 +0100)]
[BFloat] Move LLVMBFloatTypeKind to the end of the enum

Summary: so it doesn't change the C ABI

Reviewers: deadalnix

Subscribers: llvm-commits

Tags: #llvm

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

4 years ago[flang] DATA statement processing (part 2/4): Initial images
peter klausler [Thu, 18 Jun 2020 21:37:59 +0000 (14:37 -0700)]
[flang] DATA statement processing (part 2/4): Initial images

Summary:
Defines a representation for the initialized memory image of
a variable.  This image is populated by DATA statement
processing as designator elements are put into correspondence
with values, then converted into an initializer in the symbol
table so that lowering can pass the initial image to the
code generator.

Reviewers: tskeith, PeteSteinfeld, sscalpone, jdoerfert, DavidTruby

Reviewed By: tskeith

Subscribers: mgorny, llvm-commits, flang-commits

Tags: #flang, #llvm

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

4 years agoRevert "Hook up OpenBSD 64-bit PowerPC support"
Brad Smith [Fri, 19 Jun 2020 00:05:39 +0000 (20:05 -0400)]
Revert "Hook up OpenBSD 64-bit PowerPC support"

4 years agoSet appropriate host defines for building under emscripten
Derek Schuff [Thu, 18 Jun 2020 20:06:51 +0000 (13:06 -0700)]
Set appropriate host defines for building under emscripten

Emscripten has emulations for several headers found on Linux,
including spwan.h and endian.h

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

4 years ago[sanitizer] Update global_symbols.txt
Vitaly Buka [Thu, 18 Jun 2020 23:55:12 +0000 (16:55 -0700)]
[sanitizer] Update global_symbols.txt

4 years ago[StackSafety] Add "Must Live" logic
Vitaly Buka [Thu, 18 Jun 2020 09:24:00 +0000 (02:24 -0700)]
[StackSafety] Add "Must Live" logic

Summary:
Extend StackLifetime with option to calculate liveliness
where alloca is only considered alive on basic block entry
if all non-dead predecessors had it alive at terminators.

Depends on D82043.

Reviewers: eugenis

Reviewed By: eugenis

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

4 years ago[NFC] Refactor Registry loops to range for
Nathan James [Thu, 18 Jun 2020 23:40:00 +0000 (00:40 +0100)]
[NFC] Refactor Registry loops to range for

4 years ago[StackSafety] Add pass for StackLifetime testing
Vitaly Buka [Wed, 17 Jun 2020 11:09:58 +0000 (04:09 -0700)]
[StackSafety] Add pass for StackLifetime testing

Summary: lifetime.ll is a copy of SafeStack/X86/coloring2.ll

Reviewers: eugenis

Reviewed By: eugenis

Subscribers: hiraditya, mgrang, llvm-commits

Tags: #llvm

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

4 years agoHook up OpenBSD 64-bit PowerPC support
Brad Smith [Thu, 18 Jun 2020 23:19:45 +0000 (19:19 -0400)]
Hook up OpenBSD 64-bit PowerPC support

4 years ago[mlir][DialectConversion] Refactor how block argument types get converted
River Riddle [Thu, 18 Jun 2020 22:45:43 +0000 (15:45 -0700)]
[mlir][DialectConversion] Refactor how block argument types get converted

This revision removes the TypeConverter parameter passed to the apply* methods, and instead moves the responsibility of region type conversion to patterns. The types of a region can be converted using the 'convertRegionTypes' method, which acts similarly to the existing 'applySignatureConversion'. This method ensures that all blocks within, and including those moved into, a region will have the block argument types converted using the provided converter.

This has the benefit of making more of the legalization logic controlled by patterns, instead of being handled explicitly by the driver. It also opens up the possibility to support multiple type conversions at some point in the future.

This revision also adds a new utility class `FailureOr<T>` that provides a LogicalResult friendly facility for returning a failure or a valid result value.

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

4 years ago[NFC] Cleanup of EmitCXXGlobalInitFunc() and EmitCXXGlobalDtorFunc()
Xiangling Liao [Tue, 16 Jun 2020 20:27:04 +0000 (16:27 -0400)]
[NFC] Cleanup of EmitCXXGlobalInitFunc() and EmitCXXGlobalDtorFunc()

Tidy up some code of EmitCXXGlobalInitFunc() and EmitCXXGlobalDtorFunc() as the
pre-work of D74166 patch.

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

4 years ago[flang] DATA stmt processing (part 1/4): designator folding
peter klausler [Thu, 18 Jun 2020 20:28:43 +0000 (13:28 -0700)]
[flang] DATA stmt processing (part 1/4): designator folding

Summary:
Add code to resolve constant Designators at compilation time
into a base Symbol, byte offset, and field size.  This is used in
later DATA statement processing to identify the static storage being
initialized by each object in a DATA statement.  Also implement
the reverse mapping so that Designators can be reconstructed for
use in error messages about (e.g.) duplicate initializers.

Reviewers: tskeith, PeteSteinfeld, sscalpone, jdoerfert, DavidTruby

Reviewed By: PeteSteinfeld

Subscribers: mgorny, llvm-commits, flang-commits

Tags: #flang, #llvm

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

4 years ago[docs] Regenerate clang/docs/ClangCommandLineReference.rst
Fangrui Song [Thu, 18 Jun 2020 21:52:39 +0000 (14:52 -0700)]
[docs] Regenerate clang/docs/ClangCommandLineReference.rst

4 years agoARC: Enforce function alignment at code emission time
Matt Arsenault [Thu, 18 Jun 2020 13:37:33 +0000 (09:37 -0400)]
ARC: Enforce function alignment at code emission time

Don't do this in the MachineFunctionInfo constructor. Also, ensure the
alignment rather than overwriting it outright. I vaguely remember
there was another place to enforce the target minimum alignment, but I
couldn't find it (it's there for instructions).

4 years agoAMDGPU/GlobalISel: Implement computeKnownAlignForTargetInstr
Matt Arsenault [Fri, 5 Jun 2020 19:29:18 +0000 (15:29 -0400)]
AMDGPU/GlobalISel: Implement computeKnownAlignForTargetInstr

We probably need to move where intrinsics are lowered to copies to
make this useful.

4 years agoAMDGPU: Update private null pointer value in documentation
Matt Arsenault [Thu, 18 Jun 2020 21:24:12 +0000 (17:24 -0400)]
AMDGPU: Update private null pointer value in documentation

Private pointers used to workaround IR semantics by artifically
reserving an object at offset 0 so no user object would be allocated
there. Since alloca now uses a non-0 address space, that workaround is
unnecssary and 0 can be treated as a valid pointer.

4 years agoBypassSlowDivision: Fix dropping debug info
Matt Arsenault [Thu, 11 Jun 2020 00:47:52 +0000 (20:47 -0400)]
BypassSlowDivision: Fix dropping debug info

I don't know anything about debug info, but this seems like more work
should be necessary. This constructs a new IRBuilder and reconstructs
the original divides rather than moving the original.

One problem this has is if a div/rem pair are handled, both end up
with the same debugloc. I'm not sure how to fix this, since this uses
a cache when it sees the same input operands again, which will have
the first instance's location attached.

4 years ago[flang] Roll up small fixes to runtime bugs found in testing
peter klausler [Thu, 18 Jun 2020 19:19:49 +0000 (12:19 -0700)]
[flang] Roll up small fixes to runtime bugs found in testing

Summary:
Fix several bugs in the Fortran runtime found in initial
testing.

Reviewers: tskeith, PeteSteinfeld, sscalpone, jdoerfert, DavidTruby

Reviewed By: tskeith, PeteSteinfeld

Subscribers: llvm-commits, flang-commits

Tags: #flang, #llvm

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

4 years ago[PowerPC][Power10] Implement Parallel Bits Deposit/Extract Builtins in LLVM/Clang
Amy Kwan [Thu, 18 Jun 2020 18:11:09 +0000 (13:11 -0500)]
[PowerPC][Power10] Implement Parallel Bits Deposit/Extract Builtins in LLVM/Clang

This patch implements builtins for the following prototypes:

vector unsigned long long vec_pdep(vector unsigned long long, vector unsigned long long);
vector unsigned long long vec_pext(vector unsigned long long, vector unsigned long long __b);
unsigned long long __builtin_pdepd (unsigned long long, unsigned long long);
unsigned long long __builtin_pextd (unsigned long long, unsigned long long);

Revision Depends on D80758

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