OSDN Git Service
Nico Weber [Mon, 29 Apr 2019 23:09:35 +0000 (23:09 +0000)]
[PDB] Fix hash function used to write /src/headerblock
lld-link used to write PDB files that DIA couldn't recover natvis
files from if:
- The global strings table was > 64kiB
- There were at least 3 natvis files
The cause was that the hash function for the /src/headerblock stream
was incorrect: It needs to be truncated to 16 bit.
If the global strings table was <= 64kiB, truncating to 16 bit is a
no-op, so this wasn't needed for small programs.
If there are only 1 or 2 natvis files, then the growth strategy in
HashTable::grow() would mean the hash table would have 2 buckets (for 1
natvis file) or 4 buckets (for 4 natvis files), and since the hash
function is used modulo number of buckets, and since 2 and 4 divide
0x10000, the missing `% 0x10000` is a no-op there too. For 3 natvis
files, the hash table grows to 6 buckets, which has a factor that's not
common with 0x10000 and the difference starts to matter.
Fixes PR41626.
Differential Revision: https://reviews.llvm.org/D61277
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359515
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 29 Apr 2019 23:06:03 +0000 (23:06 +0000)]
gn build: Merge r359252
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359514
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 29 Apr 2019 22:37:27 +0000 (22:37 +0000)]
[ORC] Replace the LLJIT/LLLazyJIT Create methods with Builder utilities.
LLJITBuilder and LLLazyJITBuilder construct LLJIT and LLLazyJIT instances
respectively. Over time these will allow more configurable options to be
added while remaining easy to use in the default case, which for default
in-process JITing is now:
auto J = ExitOnErr(LLJITBuilder.create());
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359511
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Mon, 29 Apr 2019 22:37:16 +0000 (22:37 +0000)]
[JITLink] Move a typedef.
The FinalizeContinuation typedef belongs on the Allocation class, not the
allocator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359510
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 29 Apr 2019 22:37:08 +0000 (22:37 +0000)]
[WebAssembly] Make an assertion message prettier. NFC.
This is a follow-up to https://reviews.llvm.org/D59521.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359509
91177308-0d34-0410-b5e6-
96231b3b80d8
Steven Wu [Mon, 29 Apr 2019 21:39:54 +0000 (21:39 +0000)]
[ThinLTO] Adding architecture name into saved object filename
Summary:
For ThinLTOCodegenerator, it has an option to save the object file
outputs into a directory which is essential for debug info. Tools like lldb
and dsymutil will look for these object files for debug info.
On Darwin platform, you can link fat binaries with one single clang
driver invocation like:
$ clang -arch x86_64 -arch i386 -Wl,-object_path_lto,$TMPDIR ...
Unfornately, the output object files for one architecture is going to
overwrite the previous ones and one architecture slice will end up with
no debug info. One example for this is to turn on ThinLTO for sanitizer
dylibs in compiler-rt project.
To fix the issue, add the name for the architecture into the name of the
output object file.
rdar://problem/
35482935
Reviewers: tejohnson, bd1976llvm, dexonsmith, JDevlieghere
Reviewed By: dexonsmith
Subscribers: mehdi_amini, aprantl, inglorion, eraman, hiraditya, jkorous, dang, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60924
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359508
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 29 Apr 2019 21:09:44 +0000 (21:09 +0000)]
[WebAssembly] Define the signature for __stack_chk_fail
The WebAssembly backend needs to know the signatures of all runtime
libcall functions. This adds the signature for __stack_chk_fail which was
previously missing.
Also, make the error message for a missing libcall include the name of
the function.
Differential Revision: https://reviews.llvm.org/D59521
Reviewed By: sbc100
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359505
91177308-0d34-0410-b5e6-
96231b3b80d8
Roland Froese [Mon, 29 Apr 2019 21:08:35 +0000 (21:08 +0000)]
[PowerPC] Try harder to avoid load/move-to VSR for partial vector loads
Change the PPCISelLowering.cpp function that decides to avoid update form in
favor of partial vector loads to know about newer load types and to not be
confused by the chain operand.
Differential Revision: https://reviews.llvm.org/D60102
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359504
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Mon, 29 Apr 2019 20:58:17 +0000 (20:58 +0000)]
[GlobalISel][AArch64] Select llvm.aarch64.crypto.sha1h
This was falling back and gives us a reason to create a selectIntrinsic function
which we would need eventually anyway. Update arm64-crypto.ll to show that we
correctly select it.
Also factor out the code for finding an intrinsic ID.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359501
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Mon, 29 Apr 2019 20:25:56 +0000 (20:25 +0000)]
[UpdateTestChecks] Allow Lbegin_func without a leading period
On mingw/i686, local labels don't start with a leading period.
Also escape the leading period, as it previously could match
any char.
Differential Revision: https://reviews.llvm.org/D61254
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359497
91177308-0d34-0410-b5e6-
96231b3b80d8
Martin Storsjo [Mon, 29 Apr 2019 20:25:51 +0000 (20:25 +0000)]
[X86] Run CFIInstrInserter on Windows if Dwarf is used
This is necessary since SVN r330706, as tail merging can include
CFI instructions since then.
This fixes PR40322 and PR40012.
Differential Revision: https://reviews.llvm.org/D61252
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359496
91177308-0d34-0410-b5e6-
96231b3b80d8
Don Hinton [Mon, 29 Apr 2019 20:13:35 +0000 (20:13 +0000)]
Fix one more case of passing options with too many dashes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359495
91177308-0d34-0410-b5e6-
96231b3b80d8
Petr Hosek [Mon, 29 Apr 2019 20:04:20 +0000 (20:04 +0000)]
[gn] Use label_name rather than target_output_name for objects
Multiple targets in the same output directory can use the same
target_output_name. The typical example of that is having a shared
and a static library of the same, e.g. libc++.so and libc++.a.
When that's the case, the object files produced for each target
are going to conflict. Using the label_name avoids this conflict
since labels are guaranteed to be unique within a single BUILD.gn
file which corresponds to a single output directory.
Differential Revision: https://reviews.llvm.org/D60329
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359494
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Kleckner [Mon, 29 Apr 2019 19:56:46 +0000 (19:56 +0000)]
Fix string UAF in new FileCheck test
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359493
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 19:52:59 +0000 (19:52 +0000)]
[X86][SSE] isHorizontalBinOp - add support for target shuffles
Add target shuffle decoding to isHorizontalBinOp as well as ISD::VECTOR_SHUFFLE support.
This does mean we can go through bitcasts so we need to bitcast the extracted args to ensure they are the correct type
Fixes PR39936 and should help with PR39920/PR39921
Differential Revision: https://reviews.llvm.org/D61245
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359491
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 19:40:12 +0000 (19:40 +0000)]
[llvm-pdbutil] FunctionDumper::dump(PDBSymbolTypeFunctionArg) - fix null dereference warning
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359488
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 19:25:16 +0000 (19:25 +0000)]
computePolynomialFromPointer - add missing early-out return for non-pointer types.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359486
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 29 Apr 2019 19:23:44 +0000 (19:23 +0000)]
[InstCombine] reduce code duplication; NFC
Follow-up to:
rL359482
Avoid this potential problem throughout by giving the type a name
and verifying the assumption that both operands are the same type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359485
91177308-0d34-0410-b5e6-
96231b3b80d8
Don Hinton [Mon, 29 Apr 2019 18:58:52 +0000 (18:58 +0000)]
Fix additional cases of more that two dashes for options in tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359484
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 18:58:32 +0000 (18:58 +0000)]
Remove duplicate line. NFCI.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359483
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 18:52:19 +0000 (18:52 +0000)]
[InstCombine] visitFCmpInst - appease copy+paste pattern warning. NFCI.
PVS Studio's copy+paste recognizer was seeing this as a typo, technically Op0/Op1 in a fcmp should always be the same type, but we might as well avoid the issue.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359482
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Mon, 29 Apr 2019 18:45:59 +0000 (18:45 +0000)]
[globalisel] Improve Legalizer debug output
* LegalizeAction should be printed by name rather than number
* Newly created instructions are incomplete at the point the observer first sees
them. They are therefore recorded in a small vector and printed just before
the legalizer moves on to another instruction. By this point, the instruction
must be complete.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359481
91177308-0d34-0410-b5e6-
96231b3b80d8
Don Hinton [Mon, 29 Apr 2019 18:34:18 +0000 (18:34 +0000)]
[CommandLine] Don't allow unlimitted dashes for options. Part 1 or 5
Summary:
Prior to this patch, the CommandLine parser would strip an
unlimitted number of dashes from options. This patch limits it to
two.
Reviewers: rnk
Reviewed By: rnk
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61229
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359480
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 18:32:06 +0000 (18:32 +0000)]
[X86] scaleShuffleMask - avoid potential signed overflow warning.
Use size_t assignment to prevent a bad explicit type conversion warning.
Given the typical size of shuffle masks this was never going to happen, but this at least stops the warning.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359479
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 18:25:04 +0000 (18:25 +0000)]
[TextAPI] Fix Symbol::dump which was failing to append the SymbolKind string.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359478
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 18:24:30 +0000 (18:24 +0000)]
[llvm-mca][x86] Fix MMX PMOVMSKB test
This is defined as part of SSE1, XMM PMOVMSKB doesn't appear until SSE2
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359477
91177308-0d34-0410-b5e6-
96231b3b80d8
Bjorn Pettersson [Mon, 29 Apr 2019 17:50:10 +0000 (17:50 +0000)]
[DAG] Refactor DAGCombiner::ReassociateOps
Summary:
Extract the logic for doing reassociations
from DAGCombiner::reassociateOps into a helper
function DAGCombiner::reassociateOpsCommutative,
and use that helper to trigger reassociation
on the original operand order, or the commuted
operand order.
Codegen is not identical since the operand order will
be different when doing the reassociations for the
commuted case. That causes some unfortunate churn in
some test cases. Apart from that this should be NFC.
Reviewers: spatel, craig.topper, tstellar
Reviewed By: spatel
Subscribers: dmgreen, dschuff, jvesely, nhaehnle, javed.absar, sbc100, jgravelle-google, hiraditya, aheejin, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61199
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359476
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Preud'homme [Mon, 29 Apr 2019 17:46:26 +0000 (17:46 +0000)]
FileCheck [3/12]: Stricter parsing of @LINE expressions
Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch gives earlier and better
diagnostics for the @LINE expressions.
Rather than detect parsing errors at matching time, this commit adds
enhance parsing to detect issues with @LINE expressions at parse time
and diagnose them more accurately.
Copyright:
- Linaro (changes up to diff 183612 of revision D55940)
- GraphCore (changes in later versions of revision D55940 and
in new revision created off D55940)
Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk
Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60383
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359475
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 17:41:27 +0000 (17:41 +0000)]
[TableGen] Fix null pointer dereferencing.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359474
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 17:38:18 +0000 (17:38 +0000)]
Avoid "checking a pointer after dereferencing" warning. NFCI.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359473
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 17:34:26 +0000 (17:34 +0000)]
Move if() to newline to stop ambiguity over whether it should be else if. NFCI.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359472
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 17:04:14 +0000 (17:04 +0000)]
Fix operator precedence warning. NFCI.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359469
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 16:45:35 +0000 (16:45 +0000)]
Remove superfluous break from switch statement. NFCI.
Reported in https://www.viva64.com/en/b/0629/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359467
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 29 Apr 2019 16:14:03 +0000 (16:14 +0000)]
[llvm-extract] Expose the group extraction feature of the BlockExtractor
This patch extends the `-bb` option to be able to use the group
extraction feature from the BlockExtractor.
In particular, `-bb=func:bb` is modified to support a list of basic
blocks per function: `-bb=func:bb1[;bb2...]` that will be extracted
together if at all possible (region must be single entry.)
Differential Revision: https://reviews.llvm.org/D60973
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359464
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 29 Apr 2019 16:14:02 +0000 (16:14 +0000)]
[BlockExtractor] Expose a constructor for the group extraction
NFC
Differential Revision: https://reviews.llvm.org/D60971
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359463
91177308-0d34-0410-b5e6-
96231b3b80d8
Quentin Colombet [Mon, 29 Apr 2019 16:14:00 +0000 (16:14 +0000)]
[BlockExtractor] Change the basic block separator from ',' to ';'
This change aims at making the file format be compatible with the
way LLVM handles command line options.
Differential Revision: https://reviews.llvm.org/D60970
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359462
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin P. Neal [Mon, 29 Apr 2019 16:06:04 +0000 (16:06 +0000)]
Add AVX support to this test.
Requested by Craig Topper and Andrew Kaylor as part of D55897.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359461
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 16:03:35 +0000 (16:03 +0000)]
[X86] Remove duplicate string comparison
Fix typo introduced in rL332824 where we simplified the extact string matches for "avx512.mask.permvar.sf.256" and "avx512.mask.permvar.si.256" to a string startswith test for "avx512.mask.permvar."
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359460
91177308-0d34-0410-b5e6-
96231b3b80d8
Cullen Rhodes [Mon, 29 Apr 2019 15:27:27 +0000 (15:27 +0000)]
[AArch64][SVE] Asm: add aliases for unpredicated bitwise logical instructions
This patch adds aliases for element sizes .B/.H/.S to the
AND/ORR/EOR/BIC bitwise logical instructions. The assembler now accepts
these instructions with all element sizes up to 64-bit (.D). The
preferred disassembly is .D.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359457
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 14:26:27 +0000 (14:26 +0000)]
[X86][SSE] Add scalar horizontal add/sub tests for non-0/1 element extractions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359454
91177308-0d34-0410-b5e6-
96231b3b80d8
Thomas Preud'homme [Mon, 29 Apr 2019 13:32:36 +0000 (13:32 +0000)]
FileCheck [2/12]: Stricter parsing of -D option
Summary:
This patch is part of a patch series to add support for FileCheck
numeric expressions. This specific patch gives earlier and better
diagnostics for the -D option.
Prior to this change, parsing of -D option was very loose: it assumed
that there is an equal sign (which to be fair is now checked by the
FileCheck executable) and that the part on the left of the equal sign
was a valid variable name. This commit adds logic to ensure that this
is the case and gives diagnostic when it is not, making it clear that
the issue came from a command-line option error. This is achieved by
sharing the variable parsing code into a new function ParseVariable.
Copyright:
- Linaro (changes up to diff 183612 of revision D55940)
- GraphCore (changes in later versions of revision D55940 and
in new revision created off D55940)
Reviewers: jhenderson, chandlerc, jdenny, probinson, grimar, arichardson, rnk
Subscribers: hiraditya, llvm-commits, probinson, dblaikie, grimar, arichardson, tra, rnk, kristina, hfinkel, rogfer01, JonChesterfield
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60382
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359447
91177308-0d34-0410-b5e6-
96231b3b80d8
Yevgeny Rouban [Mon, 29 Apr 2019 13:29:55 +0000 (13:29 +0000)]
[LoopSimplifyCFG] Suppress expensive DomTree verification
This patch makes verification level lower for builds with
inexpensive checks.
Differential Revision: https://reviews.llvm.org/D61055
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359446
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Mon, 29 Apr 2019 12:25:01 +0000 (12:25 +0000)]
[yaml2obj] - Simplify and reduce the code. NFC.
This inlines 2 single line static methods
and simplifies the code.
It is also possible to remove the `Is64Bit`
variable since it is used only once,
but I am not sure it will be better for readability.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359445
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Mon, 29 Apr 2019 12:05:53 +0000 (12:05 +0000)]
[yaml2obj] - Replace a loop with write_zeros(). NFCI.
This looks better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359444
91177308-0d34-0410-b5e6-
96231b3b80d8
George Rimar [Mon, 29 Apr 2019 11:54:10 +0000 (11:54 +0000)]
[yaml2obj] - Cleanup and simplify the code. NFCI.
The current code has the following problems:
`initSymtabSectionHeader` and `initStrtabSectionHeader` method
names saying us they are going to initialize the section headers.
Though for a few cases sh_flags field is initialized outside of them.
It does not look clean. This patch moves initialization of the
sh_flags inside these methods.
Also, it removes an excessive variable, what together with the above
change hopefully makes the code a bit more readable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359443
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 11:30:47 +0000 (11:30 +0000)]
[X86][SSE] Moved haddps test from phaddsub.ll to haddsub.ll (D61245)
Also merged duplicate PR39921 + PR39936 tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359437
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Mon, 29 Apr 2019 10:36:20 +0000 (10:36 +0000)]
[InstCombine][X86] Add PACKSS tests for truncation of sign-extended comparisons
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359435
91177308-0d34-0410-b5e6-
96231b3b80d8
Diogo N. Sampaio [Mon, 29 Apr 2019 10:28:07 +0000 (10:28 +0000)]
[ARM] Add bitcast/extract_subvec. of fp16 vectors
Summary:
This patch adds some basic operations for fp16
vectors, such as bitcast from fp16 to i16,
required to perform extract_subvector (also added
here) and extract_element.
Reviewers: SjoerdMeijer, DavidSpickett, t.p.northover, ostannard
Reviewed By: ostannard
Subscribers: javed.absar, kristof.beyls, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60618
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359433
91177308-0d34-0410-b5e6-
96231b3b80d8
Diogo N. Sampaio [Mon, 29 Apr 2019 10:10:37 +0000 (10:10 +0000)]
[ARM] Add v4f16 and v8f16 types to the CallingConv
Summary:
The Procedure Call Standard for the Arm Architecture
states that float16x4_t and float16x8_t behave just
as uint16x4_t and uint16x8_t for argument passing.
This patch adds the fp16 vectors to the
ARMCallingConv.td file.
Reviewers: miyuki, ostannard
Reviewed By: ostannard
Subscribers: ostannard, javed.absar, kristof.beyls, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60720
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359431
91177308-0d34-0410-b5e6-
96231b3b80d8
Russell Gallop [Mon, 29 Apr 2019 10:10:17 +0000 (10:10 +0000)]
vs integration: Use llvm-lib for librarian
This uses llvm-lib.exe for the librarian instead of Visual Studio
provided lib.exe. Without this it is not possible to create static
libraries with -flto using the plugin.
Original patch by Steven Noonan
This fixes: PR41147
Differential Revision: https://reviews.llvm.org/D61193
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359430
91177308-0d34-0410-b5e6-
96231b3b80d8
Hans Wennborg [Mon, 29 Apr 2019 09:58:48 +0000 (09:58 +0000)]
gn: Fix check-clang build after r359179
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359429
91177308-0d34-0410-b5e6-
96231b3b80d8
David Chisnall [Mon, 29 Apr 2019 09:24:51 +0000 (09:24 +0000)]
Try to use /proc on FreeBSD for getExecutablePath
Currently, clang's libTooling passes this function a fake argv0, which
means that no libTooling tools can find the standard headers on FreeBSD.
With this change, these will now work on any FreeBSD systems that have
procfs mounted. This isn't the right fix for the libTooling issue, but
it does bring the FreeBSD implementation of getExecutablePath closer to
the Linux and macOS implementations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359427
91177308-0d34-0410-b5e6-
96231b3b80d8
Jeremy Morse [Mon, 29 Apr 2019 09:13:16 +0000 (09:13 +0000)]
[DebugInfo] Terminate more location-list ranges at the end of blocks
This patch fixes PR40795, where constant-valued variable locations can
"leak" into blocks placed at higher addresses. The root of this is that
DbgEntityHistoryCalculator terminates all register variable locations at
the end of each block, but not constant-value variable locations.
Fixing this requires constant-valued DBG_VALUE instructions to be
broadcast into all blocks where the variable location remains valid, as
documented in the LiveDebugValues section of SourceLevelDebugging.rst,
and correct termination in DbgEntityHistoryCalculator.
Differential Revision: https://reviews.llvm.org/D59431
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359426
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Mon, 29 Apr 2019 08:55:10 +0000 (08:55 +0000)]
[DWARF] Fix dump of local/foreign TU lists in .debug_names
Differential Revision: https://reviews.llvm.org/D61241
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359425
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Mon, 29 Apr 2019 08:15:13 +0000 (08:15 +0000)]
[DWARF] Delete a redundant check in getFileNameByIndex()
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359422
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 29 Apr 2019 06:13:41 +0000 (06:13 +0000)]
[X86] Remove some intel syntax aliases on (v)cvtpd2(u)dq, (v)cvtpd2ps, (v)cvt(u)qq2ps. Add 'x' and'y' suffix aliases to masked version of the same in att syntax.
The 128/256 bit version of these instructions require an 'x' or 'y' suffix to
disambiguate the memory form in att syntax.
We were allowing the same suffix in intel syntax, but it appears gas does not
do that.
gas does allow the 'x' and 'y' suffix on register and broadcast forms even
though its not needed. We were allowing it on unmasked register form, but not on
masked versions or on masked or unmasked broadcast form.
While there fix some test coverage holes so they can be extended with the 'x'
and 'y' suffix tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359418
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Mon, 29 Apr 2019 06:03:59 +0000 (06:03 +0000)]
[llvm-nm] -print-size => --print-size
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359417
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Mon, 29 Apr 2019 05:38:22 +0000 (05:38 +0000)]
[llvm-nm] Simplify and fix a buffer overflow
* char SymbolAddrStr[18] can't hold "%" PRIo64 which may need 22 characters.
* Use range-based for
* Delete unnecessary typedef
* format(...).print(Str, sizeof(Str)) + outs() << Str => outs() << format(...)
* Use cascading outs() << .. << ..
* Use iterator_range(Container &&c)
* (A & B) == B => A & B if B is a power of 2
* replace null sentinel in constants with makeArrayRef
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359416
91177308-0d34-0410-b5e6-
96231b3b80d8
Nico Weber [Mon, 29 Apr 2019 00:51:41 +0000 (00:51 +0000)]
llvm-cvtres: Attempt to make llvm-cvtres/duplicate.test work on big-endian systems
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359414
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 21:04:47 +0000 (21:04 +0000)]
[X86] Add PR39921 HADD pairwise reduction test and AVX2 test coverage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359409
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 20:04:08 +0000 (20:04 +0000)]
[X86][AVX] Add fast-hops target for add/fadd reduction tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359408
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 20:03:11 +0000 (20:03 +0000)]
[X86] Add PR39936 HADD Tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359407
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 19:12:58 +0000 (19:12 +0000)]
[X86][SSE] combineExtractVectorElt - add early-out to return zero/undef for out-of-range extraction indices.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359406
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikita Popov [Sun, 28 Apr 2019 15:40:56 +0000 (15:40 +0000)]
[ConstantRange] Add makeExactNoWrapRegion()
I got confused on the terminology, and the change in D60598 was not
correct. I was thinking of "exact" in terms of the result being
non-approximate. However, the relevant distinction here is whether
the result is
* Largest range such that:
Forall Y in Other: Forall X in Result: X BinOp Y does not wrap.
(makeGuaranteedNoWrapRegion)
* Smallest range such that:
Forall Y in Other: Forall X not in Result: X BinOp Y wraps.
(A hypothetical makeAllowedNoWrapRegion)
* Both. (makeExactNoWrapRegion)
I'm adding a separate makeExactNoWrapRegion method accepting a
single APInt (same as makeExactICmpRegion) and using it in the
places where the guarantee is relevant.
Differential Revision: https://reviews.llvm.org/D60960
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359402
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 15:04:30 +0000 (15:04 +0000)]
[X86][AVX] Enabled AVX512F tests and add PR40815 test case
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359401
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 14:31:01 +0000 (14:31 +0000)]
[X86][AVX] Combine non-lane crossing binary shuffles using X86ISD::VPERMV3
Some of the combines might be further improved if we lower more shuffles with X86ISD::VPERMV3 directly, instead of waiting to combine the results.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359400
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 28 Apr 2019 13:19:29 +0000 (13:19 +0000)]
[SelectionDAG] include FP min/max variants as binary operators
The x86 test diffs don't look great because of extra move ops,
but FP min/max should clearly be included in the list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359399
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 28 Apr 2019 12:23:43 +0000 (12:23 +0000)]
[DAGCombiner] try repeated fdiv divisor transform before building estimate
This was originally part of D61028, but it's an independent diff.
If we try the repeated divisor reciprocal transform before producing an estimate sequence,
then we have an opportunity to use scalar fdiv. On x86, the trade-off is 1 divss vs. 5
vector FP ops in the default estimate sequence. On recent chips (Skylake, Ryzen), the
full-precision division is only 3 cycle throughput, so that's probably the better perf
default option and avoids problems from x86's inaccurate estimates.
The last 2 tests show that users still have the option to override the defaults by using
the function attributes for reciprocal estimates, but those patterns are potentially made
faster by converting the vector ops (including ymm ops) to scalar math.
Differential Revision: https://reviews.llvm.org/D61149
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359398
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Sun, 28 Apr 2019 10:54:45 +0000 (10:54 +0000)]
[MCA] Fix typo in AVX2 gather tests. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359397
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 10:46:17 +0000 (10:46 +0000)]
[X86][SSE] Optimize llvm.experimental.vector.reduce.xor.vXi1 parity reduction (PR38840)
An xor reduction of a bool vector can be optimized to a parity check of the MOVMSK/BITCAST'd integer - if the population count is odd return 1, else return 0.
Differential Revision: https://reviews.llvm.org/D61230
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359396
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 28 Apr 2019 10:02:34 +0000 (10:02 +0000)]
[X86][AVX] Add AVX512DQ coverage for masked memory ops tests (PR34584)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359395
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 28 Apr 2019 06:25:33 +0000 (06:25 +0000)]
[X86] Remove (V)MOV64toSDrr/m and (V)MOVDI2SSrr/m. Use 128-bit result MOVD/MOVQ and COPY_TO_REGCLASS instead
Summary:
The register form of these instructions are CodeGenOnly instructions that cover
GR32->FR32 and GR64->FR64 bitcasts. There is a similar set of instructions for
the opposite bitcast. Due to the patterns using bitcasts these instructions get
marked as "bitcast" machine instructions as well. The peephole pass is able to
look through these as well as other copies to try to avoid register bank copies.
Because FR32/FR64/VR128 are all coalescable to each other we can end up in a
situation where a GR32->FR32->VR128->FR64->GR64 sequence can be reduced to
GR32->GR64 which the copyPhysReg code can't handle.
To prevent this, this patch removes one set of the 'bitcast' instructions. So
now we can only go GR32->VR128->FR32 or GR64->VR128->FR64. The instruction that
converts from GR32/GR64->VR128 has no special significance to the peephole pass
and won't be looked through.
I guess the other option would be to add support to copyPhysReg to just promote
the GR32->GR64 to a GR64->GR64 copy. The upper bits were basically undefined
anyway. But removing the CodeGenOnly instruction in favor of one that won't be
optimized seemed safer.
I deleted the peephole test because it couldn't be made to work with the bitcast
instructions removed.
The load version of the instructions were unnecessary as the pattern that selects
them contains a bitcasted load which should never happen.
Fixes PR41619.
Reviewers: RKSimon, spatel
Reviewed By: RKSimon
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D61223
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359392
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 20:44:08 +0000 (20:44 +0000)]
Revert rL359389: [X86][SSE] Add support for <64 x i1> bool reduction
Minor generalization of the existing <32 x i1> pre-AVX2 split code.
........
Causing irregular buildbot failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359391
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 20:20:02 +0000 (20:20 +0000)]
[X86][AVX] Add additional SSE/AVX expandload and compressstore targets
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359390
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 20:04:44 +0000 (20:04 +0000)]
[X86][SSE] Add support for <64 x i1> bool reduction
Minor generalization of the existing <32 x i1> pre-AVX2 split code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359389
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 19:57:34 +0000 (19:57 +0000)]
[X86][AVX] Cleanup and add additional expandload and compressstore tests
sort order by types and add vXi32/vXi16/vXi8 test coverage
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359388
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 17:32:46 +0000 (17:32 +0000)]
[X86][AVX512] Improve vector bool reductions
As predicate masks are legal on AVX512 targets, we avoid MOVMSK in these cases, but we can just bitcast the bool vector to the integer equivalent directly - avoiding expansion of the reduction to a shuffle pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359386
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 16:49:54 +0000 (16:49 +0000)]
[X86] Add vector boolean reduction tests (PR38840)
AND/OR/XOR tests for the @llvm.experimental.vector.reduce intrinsics
AND/OR are pretty good (pre-AVX512), XOR (not so common but used for parity reduction) is still pretty bad.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359385
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Sat, 27 Apr 2019 16:13:53 +0000 (16:13 +0000)]
[lli] Fix a typo in a cl::opt description.
Patch by Wasiher. Thanks Wasiher!
Differential Revision: https://reviews.llvm.org/D61135
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359384
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 27 Apr 2019 16:12:14 +0000 (16:12 +0000)]
[llvm-nm][llvm-readelf] Avoid single-dash -long-option in tests
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359383
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 15:41:14 +0000 (15:41 +0000)]
Fix check-prefixes typo
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359382
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 27 Apr 2019 15:33:22 +0000 (15:33 +0000)]
[DJB] Fix variable case after D61178
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359381
91177308-0d34-0410-b5e6-
96231b3b80d8
Fangrui Song [Sat, 27 Apr 2019 15:32:53 +0000 (15:32 +0000)]
[llvm-nm] Support section type 'u': STB_GNU_UNIQUE
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359380
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 15:30:06 +0000 (15:30 +0000)]
[X86][SSE] Add initial test case for subvector insert/extract of illegal types
Suggested by @nikic on D59188
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359379
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 27 Apr 2019 13:35:32 +0000 (13:35 +0000)]
[X86][AVX] Merge mask select with shuffles across extract_subvector (PR40332)
Fixes PR40332 in the limited case where we're selecting between a target shuffle and a zero vector.
We can extend this in the future to handle more opcodes and non-zero selections.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359378
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrea Di Biagio [Sat, 27 Apr 2019 11:59:11 +0000 (11:59 +0000)]
[MCA] Add field `IsEliminated` to class Instruction. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359377
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Atanasyan [Sat, 27 Apr 2019 09:28:54 +0000 (09:28 +0000)]
[cmake] Disable a GCC optimization when building LLVM for MIPS
GCC when compiling LLVM for MIPS can introduce a jump to an uninitialized
value when shrink wrapping is enabled. As shrink wrapping is enabled in
GCC at all optimization levels, it must be disabled. This bug exists for
all versions of GCC since 4.9.2.
This partially resolves PR37701 / GCC PR target/86069.
Patch by Simon Dardis.
Differential Revision: https://reviews.llvm.org/D48069
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359376
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sat, 27 Apr 2019 03:38:15 +0000 (03:38 +0000)]
[X86] Use MOVQ for i64 atomic_stores when SSE2 is enabled
Summary: If we have SSE2 we can use a MOVQ to store 64-bits and avoid falling back to a cmpxchg8b loop. If its a seq_cst store we need to insert an mfence after the store.
Reviewers: spatel, RKSimon, reames, jfb, efriedma
Reviewed By: RKSimon
Subscribers: hiraditya, dexonsmith, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60546
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359368
91177308-0d34-0410-b5e6-
96231b3b80d8
Mark Searles [Sat, 27 Apr 2019 00:51:18 +0000 (00:51 +0000)]
Revert "AMDGPU: Split block for si_end_cf"
This reverts commit
7a6ef3004655dd86d722199c471ae78c28e31bb4.
We discovered some internal test failures, so reverting for now.
Differential Revision: https://reviews.llvm.org/D61213
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359363
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Fri, 26 Apr 2019 23:16:16 +0000 (23:16 +0000)]
[AMDGPU] gfx1010 VOPC implementation
Differential Revision: https://reviews.llvm.org/D61208
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359358
91177308-0d34-0410-b5e6-
96231b3b80d8
Lang Hames [Fri, 26 Apr 2019 22:58:39 +0000 (22:58 +0000)]
[ORC] Add a 'plugin' interface to ObjectLinkingLayer for events/configuration.
ObjectLinkingLayer::Plugin provides event notifications when objects are loaded,
emitted, and removed. It also provides a modifyPassConfig callback that allows
plugins to modify the JITLink pass configuration.
This patch moves eh-frame registration into its own plugin, and teaches
llvm-jitlink to only add that plugin when performing execution runs on
non-Windows platforms. This should allow us to re-enable the test case that was
removed in r359198.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359357
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Fri, 26 Apr 2019 21:53:13 +0000 (21:53 +0000)]
[GlobalISel][AArch64] Use getConstantVRegValWithLookThrough for extracts
getConstantVRegValWithLookThrough does the same thing as the
getConstantValueForReg function, and has more visibility across GISel. Plus, it
supports looking through G_TRUNC, G_SEXT, and G_ZEXT. So, we get better code
reuse and more functionality for free by using it.
Add some test cases to select-extract-vector-elt.mir to show that we can now
look through those instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359351
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Desaulniers [Fri, 26 Apr 2019 18:45:04 +0000 (18:45 +0000)]
[AsmPrinter] refactor to support %c w/ GlobalAddress'
Summary:
Targets like ARM, MSP430, PPC, and SystemZ have complex behavior when
printing the address of a MachineOperand::MO_GlobalAddress. Move that
handling into a new overriden method in each base class. A virtual
method was added to the base class for handling the generic case.
Refactors a few subclasses to support the target independent %a, %c, and
%n.
The patch also contains small cleanups for AVRAsmPrinter and
SystemZAsmPrinter.
It seems that NVPTXTargetLowering is possibly missing some logic to
transform GlobalAddressSDNodes for
TargetLowering::LowerAsmOperandForConstraint to handle with "i" extended
inline assembly asm constraints.
Fixes:
- https://bugs.llvm.org/show_bug.cgi?id=41402
- https://github.com/ClangBuiltLinux/linux/issues/449
Reviewers: echristo, void
Reviewed By: void
Subscribers: void, craig.topper, jholewinski, dschuff, jyknight, dylanmckay, sdardis, nemanjai, javed.absar, sbc100, jgravelle-google, eraman, kristof.beyls, hiraditya, aheejin, kbarton, fedor.sergeev, jrtc27, atanasyan, jsji, llvm-commits, kees, tpimh, nathanchance, peter.smith, srhines
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D60887
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359337
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 26 Apr 2019 18:02:14 +0000 (18:02 +0000)]
[X86][AVX] Fold extract_subvector(broadcast(x)) -> broadcast(x) iff x has one use
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359332
91177308-0d34-0410-b5e6-
96231b3b80d8
Jessica Paquette [Fri, 26 Apr 2019 18:00:01 +0000 (18:00 +0000)]
[AArch64][GlobalISel] Select G_BSWAP for vectors of s32 and s64
There are instructions for these, so mark them as legal. Select the correct
instruction in AArch64InstructionSelector.cpp.
Update select-bswap.mir and arm64-rev.ll to reflect the changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359331
91177308-0d34-0410-b5e6-
96231b3b80d8
Stanislav Mekhanoshin [Fri, 26 Apr 2019 17:56:03 +0000 (17:56 +0000)]
[AMDGPU] gfx1010 VOP3 and VOP3P implementation
Differential Revision: https://reviews.llvm.org/D61202
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359328
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Fri, 26 Apr 2019 17:49:02 +0000 (17:49 +0000)]
[DAGCombine] Cleanup visitEXTRACT_SUBVECTOR. NFCI.
Use ArrayRef::slice, reduce some rather awkward long lines for legibility and run clang-format.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359326
91177308-0d34-0410-b5e6-
96231b3b80d8
Nikita Popov [Fri, 26 Apr 2019 16:50:31 +0000 (16:50 +0000)]
[ConstantRange] Add abs() support
Add support for abs() to ConstantRange. This will allow to handle
SPF_ABS select flavor in LVI and will also come in handy as a
primitive for the srem implementation.
The implementation is slightly tricky, because a) abs of signed min
is signed min and b) sign-wrapped ranges may have an abs() that is
smaller than a full range, so we need to explicitly handle them.
Differential Revision: https://reviews.llvm.org/D61084
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359321
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 26 Apr 2019 16:39:38 +0000 (16:39 +0000)]
[X86] Sink NoRegister creation for unused Base/Index registers into getAddressOperands. NFCI
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359318
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Fri, 26 Apr 2019 16:39:35 +0000 (16:39 +0000)]
[X86] Segment registers should have i16 type not i32.
Probably doesn't really matter, but was inconsistent with the rest of the code.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359317
91177308-0d34-0410-b5e6-
96231b3b80d8