OSDN Git Service

android-x86/external-llvm.git
5 years agoX86DAGToDAGISel::tryVPTESTM - fix uninitialized variable warning. NFCI.
Simon Pilgrim [Mon, 6 May 2019 11:52:16 +0000 (11:52 +0000)]
X86DAGToDAGISel::tryVPTESTM - fix uninitialized variable warning. NFCI.

findBroadcastedOp should always initialize the value if it returns true but static-analyzer isn't great at recognising this.

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

5 years ago[test] Remove redundant bracket in rL360035
Fangrui Song [Mon, 6 May 2019 11:43:19 +0000 (11:43 +0000)]
[test] Remove redundant bracket in rL360035

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

5 years agoTry fix Windows bot after rL360015
Fangrui Song [Mon, 6 May 2019 11:39:49 +0000 (11:39 +0000)]
Try fix Windows bot after rL360015

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

5 years agoTry fix Windows bot after rL360015
Fangrui Song [Mon, 6 May 2019 11:37:20 +0000 (11:37 +0000)]
Try fix Windows bot after rL360015

http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/25599/steps/test/logs/stdio

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

5 years ago[llvm-c-test] Make include-all.c do what its name says it does
Anders Waldenborg [Mon, 6 May 2019 11:31:45 +0000 (11:31 +0000)]
[llvm-c-test] Make include-all.c do what its name says it does

The purpose of this file is to make sure that all includes in llvm-c
works when included from a C source file (i.e no C++isms sneaked in).
To do this it must actually include all the include files.

Reviewed By: whitequark
Differential Revision: https://reviews.llvm.org/D61567

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

5 years ago[LoadStoreVectorizer] vectorizeStoreChain - ensure we find a store type.
Simon Pilgrim [Mon, 6 May 2019 10:25:11 +0000 (10:25 +0000)]
[LoadStoreVectorizer] vectorizeStoreChain - ensure we find a store type.

Properly initialize store type to null then ensure we find a real store type in the chain.

Fixes scan-build null dereference warning and makes the code clearer.

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

5 years ago[CodeGen] Move X86 tests under the X86 directory
Fangrui Song [Mon, 6 May 2019 10:21:17 +0000 (10:21 +0000)]
[CodeGen] Move X86 tests under the X86 directory

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

5 years ago[X86] X86InstrInfo::findThreeSrcCommutedOpIndices - fix unread variable warning.
Simon Pilgrim [Mon, 6 May 2019 10:15:34 +0000 (10:15 +0000)]
[X86] X86InstrInfo::findThreeSrcCommutedOpIndices - fix unread variable warning.

scan-build was reporting that CommutableOpIdx1 never used its original initialized value - move it down to where its first used to make the real initialization more obvious (and matches the comment that's there).

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

5 years ago[X86] lowerVectorShuffle - use any_of to detect out of bounds shuffle indices. NFCI.
Simon Pilgrim [Mon, 6 May 2019 10:11:24 +0000 (10:11 +0000)]
[X86] lowerVectorShuffle - use any_of to detect out of bounds shuffle indices. NFCI.

Fixes cppcheck local shadow warning as well.

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

5 years ago[Analysis] Remove duplicated std::move from LocRange constructor
Simon Pilgrim [Mon, 6 May 2019 10:04:23 +0000 (10:04 +0000)]
[Analysis] Remove duplicated std::move from LocRange constructor

scan-build was reporting that we were referencing a moved variable - in fact we were moving it twice.....

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

5 years ago[NFC] Update memcpy tests
Guillaume Chatelet [Mon, 6 May 2019 09:46:50 +0000 (09:46 +0000)]
[NFC] Update memcpy tests

Summary: Runs utils/update_llc_test_checks.py on a few memcpy files

Reviewers: courbet

Subscribers: llvm-commits

Tags: #llvm

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

Remove cfi noise by adding nounwind

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

5 years ago[X86] Move files to correct directories after D60552
Fangrui Song [Mon, 6 May 2019 09:24:36 +0000 (09:24 +0000)]
[X86] Move files to correct directories after D60552

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

5 years ago[SimplifyLibCalls] Simplify bcmp too.
Clement Courbet [Mon, 6 May 2019 09:15:22 +0000 (09:15 +0000)]
[SimplifyLibCalls] Simplify bcmp too.

Summary: Fixes PR40699.

Reviewers: gchatelet

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

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

5 years ago[NFC] This is a test for the commit access.
Pengfei Wang [Mon, 6 May 2019 08:31:18 +0000 (08:31 +0000)]
[NFC] This is a test for the commit access.

Summary: Signed-off-by: Pengfei Wang <pengfei.wang@intel.com>

Reviewers: LuoYuanke

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years agoEnable AVX512_BF16 instructions, which are supported for BFLOAT16 in Cooper Lake
Luo, Yuanke [Mon, 6 May 2019 08:22:37 +0000 (08:22 +0000)]
Enable AVX512_BF16 instructions, which are supported for BFLOAT16 in Cooper Lake

Summary:
1. Enable infrastructure of AVX512_BF16, which is supported for BFLOAT16 in Cooper Lake;
2. Enable VCVTNE2PS2BF16, VCVTNEPS2BF16 and DPBF16PS  instructions, which are Vector Neural Network Instructions supporting BFLOAT16 inputs and conversion instructions from IEEE single precision.
VCVTNE2PS2BF16: Convert Two Packed Single Data to One Packed BF16 Data.
VCVTNEPS2BF16: Convert Packed Single Data to Packed BF16 Data.
VDPBF16PS: Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
For more details about BF16 isa, please refer to the latest ISE document: https://software.intel.com/en-us/download/intel-architecture-instruction-set-extensions-programming-reference

Author: LiuTianle

Reviewers: craig.topper, smaslov, LuoYuanke, wxiao3, annita.zhang, RKSimon, spatel

Reviewed By: craig.topper

Subscribers: kristina, llvm-commits

Tags: #llvm

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

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

5 years agoDWARF v5: fix directory index in the line table
Fangrui Song [Mon, 6 May 2019 08:03:46 +0000 (08:03 +0000)]
DWARF v5: fix directory index in the line table

Summary:
Prior to DWARF v5, a directory index of 0 represents DW_AT_comp_dir.

In DWARF v5, the index starts with 0 and Entry.DirIdx is the index into
Prologue.IncludeDirectories.

Reviewed By: labath

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

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

5 years ago[DebugInfo] GlobalOpt DW_OP_deref_size instead of DW_OP_deref.
Markus Lavin [Mon, 6 May 2019 07:20:56 +0000 (07:20 +0000)]
[DebugInfo] GlobalOpt DW_OP_deref_size instead of DW_OP_deref.

Optimization pass lib/Transforms/IPO/GlobalOpt.cpp needs to insert
DW_OP_deref_size instead of DW_OP_deref to be compatible with big-endian
targets for same reasons as in D59687.

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

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

5 years ago[llvm-c] Make LLVMGetStringErrorTypeId a proper prototype
Anders Waldenborg [Mon, 6 May 2019 06:42:06 +0000 (06:42 +0000)]
[llvm-c] Make LLVMGetStringErrorTypeId a proper prototype

In C a function declaration with an empty argument list isn't a real
prototype, it will allow calling the function with any number of
arguments. It will also cause warnings when used in C code compiled with
'-Wstrict-prototypes'

Reviewed By: whitequark
Differential Revision: https://reviews.llvm.org/D61568

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

5 years ago[SelectionDAG] Replace llvm_unreachable at the end of getCopyFromParts with a report_...
Craig Topper [Mon, 6 May 2019 04:01:49 +0000 (04:01 +0000)]
[SelectionDAG] Replace llvm_unreachable at the end of getCopyFromParts with a report_fatal_error.

Based on PR41748, not all cases are handled in this function.

llvm_unreachable is treated as an optimization hint than can prune code paths
in a release build. This causes weird behavior when PR41748 is encountered on a
release build. It appears to generate an fp_round instruction from the floating
point code.

Making this a report_fatal_error prevents incorrect optimization of the code
and will instead generate a message to file a bug report.

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

5 years ago[libcxxabi] Don't use -fvisibility-global-new-delete-hidden when not defining them
Petr Hosek [Mon, 6 May 2019 01:25:31 +0000 (01:25 +0000)]
[libcxxabi] Don't use -fvisibility-global-new-delete-hidden when not defining them

When builing the hermetic static library, the compiler switch
-fvisibility-global-new-delete-hidden is necessary to get the new and
delete operator definitions made correctly. However, when those
definitions are not included in the library, then this switch does harm.
With lld (though not all linkers) setting STV_HIDDEN on SHN_UNDEF
symbols makes it an error to leave them undefined or defined via dynamic
linking that should generate PLTs for -shared linking (lld makes this a
hard error even without -z defs). Though leaving the symbols undefined
would usually work in practice if the linker were to allow it (and the
user didn't pass -z defs), this actually indicates a real problem that
could bite some target configurations more subtly at runtime. For
example, x86-32 ELF -fpic code generation uses hidden visibility on
declarations in the caller's scope as a signal that the call will never
be resolved to a PLT entry and so doesn't have to meet the special ABI
requirements for PLT calls (setting %ebx). Since these functions might
actually be resolved to PLT entries at link time (we don't know what the
user is linking in when the hermetic library doesn't provide all the
symbols itself), it's not safe for the compiler to treat their
declarations at call sites as having hidden visibility.

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

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

5 years ago[libcxx] Don't use -fvisibility-global-new-delete-hidden when not defining them
Petr Hosek [Mon, 6 May 2019 01:22:28 +0000 (01:22 +0000)]
[libcxx] Don't use -fvisibility-global-new-delete-hidden when not defining them

When builing the hermetic static library, the compiler switch
-fvisibility-global-new-delete-hidden is necessary to get the new and
delete operator definitions made correctly. However, when those
definitions are not included in the library, then this switch does harm.
With lld (though not all linkers) setting STV_HIDDEN on SHN_UNDEF
symbols makes it an error to leave them undefined or defined via dynamic
linking that should generate PLTs for -shared linking (lld makes this a
hard error even without -z defs). Though leaving the symbols undefined
would usually work in practice if the linker were to allow it (and the
user didn't pass -z defs), this actually indicates a real problem that
could bite some target configurations more subtly at runtime. For
example, x86-32 ELF -fpic code generation uses hidden visibility on
declarations in the caller's scope as a signal that the call will never
be resolved to a PLT entry and so doesn't have to meet the special ABI
requirements for PLT calls (setting %ebx). Since these functions might
actually be resolved to PLT entries at link time (we don't know what the
user is linking in when the hermetic library doesn't provide all the
symbols itself), it's not safe for the compiler to treat their
declarations at call sites as having hidden visibility.

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

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

5 years ago[X86] Pull out repeated Subtarget feature tests. NFCI.
Simon Pilgrim [Sun, 5 May 2019 20:45:20 +0000 (20:45 +0000)]
[X86] Pull out repeated Subtarget feature tests. NFCI.

Avoids a scan-build "uninitialized value" warning in X86FastISel::X86SelectFPExtOrFPTrunc

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

5 years ago[TargetLowering] getValueType - use dyn_cast directly to find VectorType. NFCI.
Simon Pilgrim [Sun, 5 May 2019 20:23:45 +0000 (20:23 +0000)]
[TargetLowering] getValueType - use dyn_cast directly to find VectorType. NFCI.

Matches what we do in other getValueType functions and fixes a null dereference warning in scan-build.

Also cleans up the rest of the function - use auto and standardize the variable names.

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

5 years ago[TTI][X86] Make getAddressComputationCost cost value const. NFCI.
Simon Pilgrim [Sun, 5 May 2019 20:03:51 +0000 (20:03 +0000)]
[TTI][X86] Make getAddressComputationCost cost value const. NFCI.

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

5 years ago[NFC] BasicBlock: generalize replaceSuccessorsPhiUsesWith(), take Old bb
Roman Lebedev [Sun, 5 May 2019 18:59:45 +0000 (18:59 +0000)]
[NFC] BasicBlock: generalize replaceSuccessorsPhiUsesWith(), take Old bb

Thus it does not assume that the old basic block is the basic block
for which we are looking at successors.

Not reviewed, but seems rather trivial, in line with the rest of
previous few patches.

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

5 years ago[NFC] BasicBlock: refactor changePhiUses() out of replacePhiUsesWith(), use it
Roman Lebedev [Sun, 5 May 2019 18:59:39 +0000 (18:59 +0000)]
[NFC] BasicBlock: refactor changePhiUses() out of replacePhiUsesWith(), use it

Summary:
It is a common thing to loop over every `PHINode` in some `BasicBlock`
and change old `BasicBlock` incoming block to a new `BasicBlock` incoming block.
`replaceSuccessorsPhiUsesWith()` already had code to do that,
it just wasn't a function.
So outline it into a new function, and use it.

Reviewers: chandlerc, craig.topper, spatel, danielcdh

Reviewed By: craig.topper

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years ago[NFC] PHINode: introduce replaceIncomingBlockWith() function, use it
Roman Lebedev [Sun, 5 May 2019 18:59:30 +0000 (18:59 +0000)]
[NFC] PHINode: introduce replaceIncomingBlockWith() function, use it

Summary:
There is `PHINode::getBasicBlockIndex()`, `PHINode::setIncomingBlock()`
and `PHINode::getNumOperands()`, but no function to replace every
specified `BasicBlock*` predecessor with some other specified `BasicBlock*`.
Clearly, there are a lot of places that could use that functionality.

Reviewers: chandlerc, craig.topper, spatel, danielcdh

Reviewed By: craig.topper

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years ago[NFC] Instruction: introduce replaceSuccessorWith() function, use it
Roman Lebedev [Sun, 5 May 2019 18:59:22 +0000 (18:59 +0000)]
[NFC] Instruction: introduce replaceSuccessorWith() function, use it

Summary:
There is `Instruction::getNumSuccessors()`, `Instruction::getSuccessor()`
and `Instruction::setSuccessor()`, but no function to replace every
specified `BasicBlock*` successor with some other specified `BasicBlock*`.
I've found one place where it should clearly be used.

Reviewers: chandlerc, craig.topper, spatel, danielcdh

Reviewed By: craig.topper

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years ago[NFC][Utils] deleteDeadLoop(): add an assert that exit block has some non-PHI instruction
Roman Lebedev [Sun, 5 May 2019 18:59:12 +0000 (18:59 +0000)]
[NFC][Utils] deleteDeadLoop(): add an assert that exit block has some non-PHI instruction

Summary:
If `deleteDeadLoop()` is called on such a loop, that has "bad" exit block,
one that e.g. has no terminator instruction, the `DIBuilder::insertDbgValueIntrinsic()`
will be told to insert the Dbg Value Intrinsic after `nullptr`
(since there is no first non-PHI instruction), which will cause it to not insert
those instructions into any basic block. The instructions will be parent-less,
and IR verifier will complain. It is rather obvious to track down the root cause
when that happens, so let's just assert it never happens.

Reviewers: sanjoy, davide, vsk

Reviewed By: vsk

Subscribers: llvm-commits

Tags: #llvm

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

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

5 years agoMove getOpcode() call into if statement. NFCI.
Simon Pilgrim [Sun, 5 May 2019 18:34:38 +0000 (18:34 +0000)]
Move getOpcode() call into if statement. NFCI.

Avoids a cppcheck "Local variable name shadows outer variable" warning.

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

5 years agoPrecommit an FNeg InstructionSimplify test.
Cameron McInally [Sun, 5 May 2019 18:22:09 +0000 (18:22 +0000)]
Precommit an FNeg InstructionSimplify test.

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

5 years ago[SLPVectorizer] Prefer pre-increments. NFCI.
Simon Pilgrim [Sun, 5 May 2019 17:53:09 +0000 (17:53 +0000)]
[SLPVectorizer] Prefer pre-increments. NFCI.

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

5 years ago[LLParser] Remove unused variable after r359987. NFC
Craig Topper [Sun, 5 May 2019 17:46:17 +0000 (17:46 +0000)]
[LLParser] Remove unused variable after r359987. NFC

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

5 years ago[LLParser] Remove unnecessary error check making sure NUW/NSW flags aren't set on...
Craig Topper [Sun, 5 May 2019 17:19:23 +0000 (17:19 +0000)]
[LLParser] Remove unnecessary error check making sure NUW/NSW flags aren't set on a non-integer operation.

Summary: This check appears to be a leftover from when add/sub/mul could be either integer or fp. The NSW/NUW flags are only set for add/sub/mul/shl earlier. And we check that those operations only have integer types just below this. So it seems unnecessary to explicitly error for NUW/NSW being used on a add/sub/mul that have the wrong type that would later error for that.

Reviewers: spatel, dblaikie, jyknight, arsenm

Reviewed By: spatel

Subscribers: wdng, llvm-commits, hiraditya

Tags: #llvm

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

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

5 years ago[LLParser] Simplify type checking in ParseArithmetic and ParseUnaryOp.
Craig Topper [Sun, 5 May 2019 17:19:19 +0000 (17:19 +0000)]
[LLParser] Simplify type checking in ParseArithmetic and ParseUnaryOp.

Summary:
These methods previously took a 0, 1, or 2 to indicate what types were allowed, but the 0 encoding which meant both fp and integer types has been unused for years. Its leftover from when add/sub/mul used to be shared between int and fp

Simplify it by changing it to just a bool to distinquish int and fp.

Reviewers: spatel, dblaikie, jyknight, arsenm

Reviewed By: spatel

Subscribers: wdng, hiraditya, llvm-commits

Tags: #llvm

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

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

5 years ago[Constants] Simplify type checking switch in ConstantExpr::get.
Craig Topper [Sun, 5 May 2019 17:19:16 +0000 (17:19 +0000)]
[Constants] Simplify type checking switch in ConstantExpr::get.

Summary:
Remove duplicate checks that both operands have the same type. This is checked
before the switch.

Use 'integer' or 'floating-point' instead of 'arithmetic' type. I think this
might be a leftover to the days when floating point and integer operations
shared the same opcodes.

Reviewers: spatel, RKSimon, dblaikie

Reviewed By: RKSimon

Subscribers: hiraditya, llvm-commits

Tags: #llvm

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

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

5 years ago[MCA] Notify event listeners when instructions transition to the Pending state. NFCI
Andrea Di Biagio [Sun, 5 May 2019 16:07:27 +0000 (16:07 +0000)]
[MCA] Notify event listeners when instructions transition to the Pending state. NFCI

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

5 years agoAdd FNeg IR constant folding support
Cameron McInally [Sun, 5 May 2019 16:07:09 +0000 (16:07 +0000)]
Add FNeg IR constant folding support

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

5 years ago[X86] Make X86RegisterInfo(const Triple &TT) constructor explicit.
Simon Pilgrim [Sun, 5 May 2019 12:51:47 +0000 (12:51 +0000)]
[X86] Make X86RegisterInfo(const Triple &TT) constructor explicit.

Fixes cppcheck warning.

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

5 years ago[X86] Fix some cppcheck "Local variable name shadows outer variable" warnings. NFCI.
Simon Pilgrim [Sun, 5 May 2019 12:00:14 +0000 (12:00 +0000)]
[X86] Fix some cppcheck "Local variable name shadows outer variable" warnings. NFCI.

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

5 years ago[SLPVectorizer] Make getSpillCost() const. NFCI.
Simon Pilgrim [Sun, 5 May 2019 10:37:38 +0000 (10:37 +0000)]
[SLPVectorizer] Make getSpillCost() const. NFCI.

Ideally getTreeCost() should be const as well but non-const Type creation would need to be addressed first.

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

5 years ago[SelectionDAG] Use any_of/all_of where possible. NFCI.
Simon Pilgrim [Sun, 5 May 2019 10:30:04 +0000 (10:30 +0000)]
[SelectionDAG] Use any_of/all_of where possible. NFCI.

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

5 years agoMove Value *RHSCIOp def into the scope where its actually used. NFCI.
Simon Pilgrim [Sun, 5 May 2019 10:27:45 +0000 (10:27 +0000)]
Move Value *RHSCIOp def into the scope where its actually used. NFCI.

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

5 years agoAdd InstCombine tests for FNeg instruction.
Cameron McInally [Sat, 4 May 2019 14:56:08 +0000 (14:56 +0000)]
Add InstCombine tests for FNeg instruction.

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

5 years ago[CodeGenPrepare] limit overflow intrinsic matching to a single basic block (2nd try)
Sanjay Patel [Sat, 4 May 2019 12:46:32 +0000 (12:46 +0000)]
[CodeGenPrepare] limit overflow intrinsic matching to a single basic block (2nd try)

This is a subset of the original commit from rL359879
which was reverted because it could crash when using the 'RemovedInstructions'
structure that enables delayed deletion of dead instructions. The motivating
compile-time win does not require that change though. We should get most of
that win from this change alone.

Using/updating a dominator tree to match math overflow patterns may be very
expensive in compile-time (because of the way CGP uses a DT), so just handle
the single-block case.

See post-commit thread for rL354298 for more details:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190422/646276.html

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

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

5 years ago[llvm-nm] Convert weak.test to use yaml2obj and fix unntested 'v'
Fangrui Song [Sat, 4 May 2019 09:12:18 +0000 (09:12 +0000)]
[llvm-nm] Convert weak.test to use yaml2obj and fix unntested 'v'

This restores part of the good change reverted by r359830.

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

5 years ago[AMDGPU] Fixed asan error after D61536
Stanislav Mekhanoshin [Sat, 4 May 2019 06:40:20 +0000 (06:40 +0000)]
[AMDGPU] Fixed asan error after D61536

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

5 years agoAMDGPU] gfx1010 hazard recognizer
Stanislav Mekhanoshin [Sat, 4 May 2019 04:30:57 +0000 (04:30 +0000)]
AMDGPU] gfx1010 hazard recognizer

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

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

5 years ago[AMDGPU] gfx1010: use fmac instructions
Stanislav Mekhanoshin [Sat, 4 May 2019 04:20:37 +0000 (04:20 +0000)]
[AMDGPU] gfx1010: use fmac instructions

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

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

5 years ago[JITLink] Add two useful Section operations: find by name, get address range.
Lang Hames [Sat, 4 May 2019 00:23:09 +0000 (00:23 +0000)]
[JITLink] Add two useful Section operations: find by name, get address range.

These operations were already used in eh-frame registration, and are likely to
be used in other runtime registrations, so this commit moves them into a header
where they can be re-used.

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

5 years ago[x86] add tests for fneg IR with undef; NFC
Sanjay Patel [Fri, 3 May 2019 22:47:29 +0000 (22:47 +0000)]
[x86] add tests for fneg IR with undef; NFC

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

5 years ago[AArch64][GlobalISel] Use fcsel instead of csel for G_SELECT on FPRs
Jessica Paquette [Fri, 3 May 2019 22:37:46 +0000 (22:37 +0000)]
[AArch64][GlobalISel] Use fcsel instead of csel for G_SELECT on FPRs

This saves us some unnecessary copies.

If the inputs to a G_SELECT are floating point, we should use fcsel rather than
csel.

Changes here are...

- Teach selectCopy about s1-to-s1 copies across register banks.
- AArch64RegisterBankInfo about G_SELECT in general.
- Teach the instruction selector about the FCSEL instructions.

Also add two tests:

- select-select.mir to show that we get the expected FCSEL
- regbank-select.mir (unfortunately named) to show the register banks on
G_SELECT are properly preserved

And update fast-isel-select.ll to show that we do the same thing as other
instruction selectors in these cases.

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

5 years agoMake the git-llvm script work on older git versions that don't support git rev-parse...
Craig Topper [Fri, 3 May 2019 22:03:29 +0000 (22:03 +0000)]
Make the git-llvm script work on older git versions that don't support git rev-parse --git-common-dir.

Not all versions of git support git rev-parse --git-common-dir. Rather than erorr or print any kind of
useful error, they just print back '--git-common-dir' instead of a directory. The git-llvm script
ends up taking this '--git-common-dir' as a diretory name to use.

Not sure exactly what happens after that, but the end result is that the 'git llvm push' ends up
looking like it pushed your commits, but really did nothing.

This patch makes the script detect the bogus directory name for --git-common-dir and falls back to using --git-dir instead.

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

5 years ago[AMDGPU] gfx1010 wait count insertion
Stanislav Mekhanoshin [Fri, 3 May 2019 21:53:53 +0000 (21:53 +0000)]
[AMDGPU] gfx1010 wait count insertion

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

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

5 years ago[AMDGPU] gfx1010 s_code_end generation
Stanislav Mekhanoshin [Fri, 3 May 2019 21:26:39 +0000 (21:26 +0000)]
[AMDGPU] gfx1010 s_code_end generation

Also add some missing metadata in the streamer.

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

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

5 years agoUpdate PatternMatcher for FNeg
Cameron McInally [Fri, 3 May 2019 21:19:12 +0000 (21:19 +0000)]
Update PatternMatcher for FNeg

Match both FNeg(X) and FSub(+-0.0, X) in FNeg_match

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

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

5 years ago[AMDGPU] gfx1010 loop alignment
Stanislav Mekhanoshin [Fri, 3 May 2019 21:17:29 +0000 (21:17 +0000)]
[AMDGPU] gfx1010 loop alignment

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

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

5 years ago[COFF, ARM64] Fix ABI implementation of struct returns
Mandeep Singh Grang [Fri, 3 May 2019 21:12:36 +0000 (21:12 +0000)]
[COFF, ARM64] Fix ABI implementation of struct returns

Summary:
Refer the ABI doc at: https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?view=vs-2019#return-values

Related clang patch: D60349

Reviewers: rnk, efriedma, TomTan, ssijaric

Reviewed By: rnk, efriedma

Subscribers: mstorsjo, javed.absar, kristof.beyls, llvm-commits

Tags: #llvm

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

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

5 years agoReapply r359906, "RegAllocFast: Add heuristic to detect values not live-out of a...
Matt Arsenault [Fri, 3 May 2019 19:06:57 +0000 (19:06 +0000)]
Reapply r359906, "RegAllocFast: Add heuristic to detect values not live-out of a block"

This reverts commit r359912.

This should pass now, since the clang test was made less fragile in
r359918.

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

5 years ago[CommandLine] Enable Grouping for short options by default. Part 4 of 5
Don Hinton [Fri, 3 May 2019 18:56:25 +0000 (18:56 +0000)]
[CommandLine] Enable Grouping for short options by default.  Part 4 of 5

Summary:
This change enables `cl::Grouping` for short options --
options with names of a single character.  This is consistent with GNU
getopt behavior.

Reviewers: rnk, MaskRay

Reviewed By: MaskRay

Subscribers: thopre, cfe-commits, MaskRay, rupprecht, hiraditya, llvm-commits

Tags: #llvm, #clang

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

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

5 years ago[DAGCombine] Remove repeated variables. NFCI.
Simon Pilgrim [Fri, 3 May 2019 18:20:28 +0000 (18:20 +0000)]
[DAGCombine] Remove repeated variables. NFCI.

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

5 years agoRevert r359906, "RegAllocFast: Add heuristic to detect values not live-out of a block"
Nico Weber [Fri, 3 May 2019 18:08:03 +0000 (18:08 +0000)]
Revert r359906, "RegAllocFast: Add heuristic to detect values not live-out of a block"

Makes clang/test/Misc/backend-stack-frame-diagnostics-fallback.cpp fail.

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

5 years ago[TargetLowering] SimplifySetCC - remove repeated variable. NFCI.
Simon Pilgrim [Fri, 3 May 2019 18:02:33 +0000 (18:02 +0000)]
[TargetLowering] SimplifySetCC - remove repeated variable. NFCI.

Also reduce scope of Temp variable.

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

5 years ago[CommandLine] Change help output to prefix long options with `--` instead of `-`...
Don Hinton [Fri, 3 May 2019 17:47:29 +0000 (17:47 +0000)]
[CommandLine] Change help output to prefix long options with `--` instead of `-`. NFC . Part 3 of 5

Summary:
By default, `parseCommandLineOptions()` will accept either a
`-` or `--` prefix for long options -- options with names longer than
a single character.

While this change does not affect behavior, it will be helpful with a
subsequent change that requires long options use the `--` prefix.

Reviewers: rnk, thopre

Reviewed By: thopre

Subscribers: thopre, cfe-commits, hiraditya, llvm-commits

Tags: #llvm, #clang

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

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

5 years agoRevert "[CodeGenPrepare] limit overflow intrinsic matching to a single basic block"
Evgeniy Stepanov [Fri, 3 May 2019 17:31:49 +0000 (17:31 +0000)]
Revert "[CodeGenPrepare] limit overflow intrinsic matching to a single basic block"

This reverts commit r359879, which introduced a compiler crash.

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

5 years agoRegAllocFast: Add heuristic to detect values not live-out of a block
Matt Arsenault [Fri, 3 May 2019 17:03:24 +0000 (17:03 +0000)]
RegAllocFast: Add heuristic to detect values not live-out of a block

Add an improved/new heuristic to catch more cases when values are not
live out of a basic block.

Patch by Matthias Braun

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

5 years ago[hexagon] change AsmParser assertion to error
Brian Cain [Fri, 3 May 2019 16:50:38 +0000 (16:50 +0000)]
[hexagon] change AsmParser assertion to error

For immediates that can't be evaluated in assembler-mapped instructions, we
should return 'invalid operand' instead of assert.

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

5 years ago[Docs][CodeGenerator][eBPF] Correct the values for BPF_X and BPF_K
Yonghong Song [Fri, 3 May 2019 16:40:16 +0000 (16:40 +0000)]
[Docs][CodeGenerator][eBPF] Correct the values for BPF_X and BPF_K

Fix the values of BPF_X and BPF_K according to BPFInstrFormats.td:
"
def BPF_K : BPFSrcType<0x0>;
def BPF_X : BPFSrcType<0x1>;
"

The right value for BPF_X is 0x1, and the right value for BPF_K is 0x0.

Signed-off-by: Wang YanQing <udknight@gmail.com>
Differential Revision: https://reviews.llvm.org/D61512

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

5 years ago[X86] Allow assembly parser to accept x/y/z suffixes on non-memory vfpclassps/pd...
Craig Topper [Fri, 3 May 2019 16:15:15 +0000 (16:15 +0000)]
[X86] Allow assembly parser to accept x/y/z suffixes on non-memory vfpclassps/pd and on memory forms in intel syntax

The x/y/z suffix is needed to disambiguate the memory form in at&t syntax since no xmm/ymm/zmm register is mentioned.

But we should also allow it for the register and broadcast forms where its not needed for consistency. This matches gas.

The printing code will still only use the suffix for the memory form where it is needed.

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

5 years ago[llvm] Revert r231274: "Devirtualize ~parser<T> by making it protected in base classe...
Don Hinton [Fri, 3 May 2019 16:15:13 +0000 (16:15 +0000)]
[llvm] Revert r231274: "Devirtualize ~parser<T> by making it protected in base classes and making derived classes final"

Summary: This patch was previously applied in r231221, and reverted in
r231254 because it broke self-hosting.  It was subsequently fixed and
reapplied in r231274.  Unfortunately, making the `parser<T>` classes
final prevents inheritance which makes it impossible to implement
custom parsers.

Reverting r231221 restores the ability to customize parsers.

Reviewers: dblaikie

Reviewed By: dblaikie

Subscribers: craig.topper, llvm-commits

Tags: #llvm

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

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

5 years ago[X86] LowerToHorizontalOp - Tidyup calls to getHopForBuildVector. NFCI.
Simon Pilgrim [Fri, 3 May 2019 15:56:06 +0000 (15:56 +0000)]
[X86] LowerToHorizontalOp - Tidyup calls to getHopForBuildVector. NFCI.

Merge the if() tests for the various HADD/SUB + Subtarget tests

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

5 years ago[SelectionDAG] CreateTopologicalOrder - don't use iterator
Simon Pilgrim [Fri, 3 May 2019 15:50:37 +0000 (15:50 +0000)]
[SelectionDAG] CreateTopologicalOrder - don't use iterator

We shouldn't use an iterator to loop across a std::vector when the same loop is adding elements to that std::vector

Found by cppcheck

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

5 years agoAMDGPU: Select VOP3 form of sub
Matt Arsenault [Fri, 3 May 2019 15:37:07 +0000 (15:37 +0000)]
AMDGPU: Select VOP3 form of sub

The VOP3 form should always be the preferred selection form to be
shrunk later.

The r600 sub test needs to be split out because it asserts on the
arguments in the new test during the calling convention lowering.

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

5 years agoAMDGPU: Support shrinking add with FI in SIFoldOperands
Matt Arsenault [Fri, 3 May 2019 15:21:53 +0000 (15:21 +0000)]
AMDGPU: Support shrinking add with FI in SIFoldOperands

Avoids test regression in a future patch

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

5 years agoRevert r359549 - incorrect update of test checks. NFC
Robert Lougher [Fri, 3 May 2019 15:14:19 +0000 (15:14 +0000)]
Revert r359549 - incorrect update of test checks. NFC

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

5 years ago[x86] add tests for fneg with undefs; NFC
Sanjay Patel [Fri, 3 May 2019 15:09:53 +0000 (15:09 +0000)]
[x86] add tests for fneg with undefs; NFC

This was originally part of D61419.

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

5 years agoAMDGPU: Remove redundant patterns for shifts
Matt Arsenault [Fri, 3 May 2019 15:08:36 +0000 (15:08 +0000)]
AMDGPU: Remove redundant patterns for shifts

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

5 years agoAMDGPU: Remove redundant patterns for sub
Matt Arsenault [Fri, 3 May 2019 15:08:35 +0000 (15:08 +0000)]
AMDGPU: Remove redundant patterns for sub

There were 2 patterns for sub, one selecting to sub and one to
subrev. Only one of these will succeed, so remove the reversed one.

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

5 years agoAMDGPU: Add baseline test for future patch
Matt Arsenault [Fri, 3 May 2019 14:54:38 +0000 (14:54 +0000)]
AMDGPU: Add baseline test for future patch

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

5 years agoAMDGPU: Replace shrunk instruction with dummy implicit_def
Matt Arsenault [Fri, 3 May 2019 14:40:10 +0000 (14:40 +0000)]
AMDGPU: Replace shrunk instruction with dummy implicit_def

This was broken if the original operand was killed. The kill flag
would appear on both instructions, and fail the verifier. Keep the
kill flag, but remove the operands from the old instruction. This has
an added benefit of really reducing the use count for future folds.

Ideally the pass would be structured more like what PeepholeOptimizer
does to avoid this hack to avoid breaking instruction iterators.

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

5 years ago[TargetLowering] ShrinkDemandedConstant - reduce scope of TLO.DAG variable. NFCI.
Simon Pilgrim [Fri, 3 May 2019 14:38:24 +0000 (14:38 +0000)]
[TargetLowering] ShrinkDemandedConstant - reduce scope of TLO.DAG variable. NFCI.

Only ever used in one block

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

5 years ago[X86] Remove repeated variables. NFCI.
Simon Pilgrim [Fri, 3 May 2019 14:37:00 +0000 (14:37 +0000)]
[X86] Remove repeated variables. NFCI.

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

5 years agogn build: Merge r359878
Nico Weber [Fri, 3 May 2019 14:27:12 +0000 (14:27 +0000)]
gn build: Merge r359878

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

5 years agoLet --discard-all imply --strip-debug.
Sid Manning [Fri, 3 May 2019 14:14:01 +0000 (14:14 +0000)]
Let --discard-all imply --strip-debug.

This will match gnu strip's behavior.

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

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

5 years ago[X86] Add X64 common prefixes and regenerate mul i64 tests
Simon Pilgrim [Fri, 3 May 2019 14:07:38 +0000 (14:07 +0000)]
[X86] Add X64 common prefixes and regenerate mul i64 tests

Noticed while reviewing D61472

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

5 years agoAMDGPU: Forgot to commit test file for r358890
Matt Arsenault [Fri, 3 May 2019 13:55:40 +0000 (13:55 +0000)]
AMDGPU: Forgot to commit test file for r358890

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

5 years agoAvoid cppcheck operator precedence warnings. NFCI.
Simon Pilgrim [Fri, 3 May 2019 13:50:38 +0000 (13:50 +0000)]
Avoid cppcheck operator precedence warnings. NFCI.

Prefer ((X & Y) ? A : B) to (X & Y ? A : B)

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

5 years agoAMDGPU: Fix incorrect commute with sub when folding immediates
Matt Arsenault [Fri, 3 May 2019 13:42:56 +0000 (13:42 +0000)]
AMDGPU: Fix incorrect commute with sub when folding immediates

When a fold of an immediate into a sub/subrev required shrinking the
instruction, the wrong VOP2 opcode was used. This was using the VOP2
equivalent of the original instruction, not the commuted instruction
with the inverted opcode.

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

5 years agoAMDGPU: Fix test verification
Matt Arsenault [Fri, 3 May 2019 13:42:55 +0000 (13:42 +0000)]
AMDGPU: Fix test verification

This should run the verifier, and needs to enable trackRegLiveness.

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

5 years ago[LICM] auto-generate complete test checks; NFC
Sanjay Patel [Fri, 3 May 2019 13:25:06 +0000 (13:25 +0000)]
[LICM] auto-generate complete test checks; NFC

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

5 years ago[CodeGenPrepare] limit overflow intrinsic matching to a single basic block
Sanjay Patel [Fri, 3 May 2019 13:09:18 +0000 (13:09 +0000)]
[CodeGenPrepare] limit overflow intrinsic matching to a single basic block

Using/updating a dominator tree to match math overflow patterns may be very
expensive in compile-time (because of the way CGP uses a DT), so just handle
the single-block case.

Also, we were restarting the iterator loops when doing the overflow intrinsic
transforms by marking the dominator tree for update. That was done to prevent
iterating over a removed instruction. But we can postpone the deletion using
the existing "RemovedInsts" structure, and that means we don't need to update
the DT.

See post-commit thread for rL354298 for more details:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20190422/646276.html

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

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

5 years ago[Object][XCOFF] Add an XCOFF dumper for llvm-readobj.
Sean Fertile [Fri, 3 May 2019 12:57:07 +0000 (12:57 +0000)]
[Object][XCOFF] Add an XCOFF dumper for llvm-readobj.

Patch adds support for dumping of file headers with llvm-readobj. XCOFF
object files are added to test dumping a well formed file, and dumping
both negative timestamps and negative symbol counts, both of which are
allowed in the XCOFF definition.

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

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

5 years ago[TargetLowering] expandUnalignedStore - cleanup EVT variables. NFCI.
Simon Pilgrim [Fri, 3 May 2019 12:55:25 +0000 (12:55 +0000)]
[TargetLowering] expandUnalignedStore - cleanup EVT variables. NFCI.

Avoid duplicated EVTs and rename Store/Load VTs to avoid -Wshadow warnings.

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

5 years agoRevert "[MIR] Add simple PRE pass to MachineCSE"
Anton Afanasyev [Fri, 3 May 2019 12:36:22 +0000 (12:36 +0000)]
Revert "[MIR] Add simple PRE pass to MachineCSE"

This reverts commit 9c20156de39b377190d7a91783d61877b303fe35.
It breaks stage 2 of clang-ppc64be-linux-multistage.

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

5 years ago[SelectionDAG] Use INT_MIN as (1 << 31) is UB for signed integers. NFCI.
Simon Pilgrim [Fri, 3 May 2019 11:32:00 +0000 (11:32 +0000)]
[SelectionDAG] Use INT_MIN as (1 << 31) is UB for signed integers. NFCI.

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

5 years ago[SelectionDAG] computeKnownBits - remove some duplicate/shadow variables. NFCI.
Simon Pilgrim [Fri, 3 May 2019 11:11:03 +0000 (11:11 +0000)]
[SelectionDAG] computeKnownBits - remove some duplicate/shadow variables. NFCI.

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

5 years ago[X86] LowerMULH - remove unused Lo/Hi vector indices. NFCI.
Simon Pilgrim [Fri, 3 May 2019 10:32:07 +0000 (10:32 +0000)]
[X86] LowerMULH - remove unused Lo/Hi vector indices. NFCI.

Leftover from before we had the extract128BitVector helpers.

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

5 years ago[MIR] Add simple PRE pass to MachineCSE
Anton Afanasyev [Fri, 3 May 2019 10:30:59 +0000 (10:30 +0000)]
[MIR] Add simple PRE pass to MachineCSE

This is the second part of the commit fixing PR38917 (hoisting
partitially redundant machine instruction). Most of PRE (partitial
redundancy elimination) and CSE work is done on LLVM IR, but some of
redundancy arises during DAG legalization. Machine CSE is not enough
to deal with it. This simple PRE implementation works a little bit
intricately: it passes before CSE, looking for partitial redundancy
and transforming it to fully redundancy, anticipating that the next
CSE step will eliminate this created redundancy. If CSE doesn't
eliminate this, than created instruction will remain dead and eliminated
later by Remove Dead Machine Instructions pass.

The third part of the commit is supposed to refactor MachineCSE,
to make it more clear and to merge MachinePRE with MachineCSE,
so one need no rely on further Remove Dead pass to clear instrs
not eliminated by CSE.

First step: https://reviews.llvm.org/D54839

Fixes llvm.org/PR38917

Reviewers: RKSimon

Subscribers: hfinkel, llvm-commits

Tags: #llvm

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

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

5 years agoReduce variable scope to just the if() block its actually used in. NFCI.
Simon Pilgrim [Fri, 3 May 2019 10:13:41 +0000 (10:13 +0000)]
Reduce variable scope to just the if() block its actually used in. NFCI.

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

5 years ago[X86] Add more one checks to masked compare patterns that were missed in r358358.
Craig Topper [Fri, 3 May 2019 07:14:05 +0000 (07:14 +0000)]
[X86] Add more one checks to masked compare patterns that were missed in r358358.

This covers the patterns we use for widening 128/256 comparisons to 512-bit when
AVX512VL isn't supported.

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