]> granicus.if.org Git - llvm/log
llvm
8 years ago[SLP] Modify test to check IR flags propagation for extra args.
Alexey Bataev [Mon, 27 Feb 2017 19:16:09 +0000 (19:16 +0000)]
[SLP] Modify test to check IR flags propagation for extra args.

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

8 years agoAMDGPU: Add VOP3P instruction format
Matt Arsenault [Mon, 27 Feb 2017 18:49:11 +0000 (18:49 +0000)]
AMDGPU: Add VOP3P instruction format

Add a few non-VOP3P but instructions related to packed.

Includes hack with dummy operands for the benefit of the assembler

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

8 years agoRefactor xaluo.ll and xmulo.ll tests. NFC
Amaury Sechet [Mon, 27 Feb 2017 18:32:54 +0000 (18:32 +0000)]
Refactor xaluo.ll and xmulo.ll tests. NFC

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

8 years ago[InlineFunction] add nonnull assumptions based on argument attributes
Sanjay Patel [Mon, 27 Feb 2017 18:13:48 +0000 (18:13 +0000)]
[InlineFunction] add nonnull assumptions based on argument attributes

This was suggested in D27855: have the inliner add assumptions, so we don't
lose nonnull info provided by argument attributes.

This still doesn't solve PR28430 (dyn_cast), but this gets us closer.

https://reviews.llvm.org/D29999

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

8 years ago[Hexagon] Defs and clobbers can overlap
Krzysztof Parzyszek [Mon, 27 Feb 2017 18:03:35 +0000 (18:03 +0000)]
[Hexagon] Defs and clobbers can overlap

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

8 years agoFix a bug when unswitching on partial LIV for SwitchInst
Xin Tong [Mon, 27 Feb 2017 18:00:13 +0000 (18:00 +0000)]
Fix a bug when unswitching on partial LIV for SwitchInst

Summary: Fix a bug when unswitching on partial LIV for SwitchInst.

Reviewers: hfinkel, efriedma, sanjoy

Reviewed By: sanjoy

Subscribers: david2050, mzolotukhin, llvm-commits

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

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

8 years agoFix comments. NFC.
Rong Xu [Mon, 27 Feb 2017 17:59:01 +0000 (17:59 +0000)]
Fix comments. NFC.

Change "Thin-LTO" to "ThinLTO" in the comments for consistency.

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

8 years agoFix LLVM module build
Steven Wu [Mon, 27 Feb 2017 16:56:37 +0000 (16:56 +0000)]
Fix LLVM module build

Add WasmRelocs/WebAssembly.def to textual include header.

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

8 years ago[X86] Use APInt instead of SmallBitVector tracking undef elements from getTargetConst...
Craig Topper [Mon, 27 Feb 2017 16:15:32 +0000 (16:15 +0000)]
[X86] Use APInt instead of SmallBitVector tracking undef elements from getTargetConstantBitsFromNode and getConstVector.

Summary:
SmallBitVector uses a malloc for more than 58 bits on a 64-bit target and more than 27 bits on a 32-bit target. Some of the vector types we deal with here use more than those number of elements and therefore cause a malloc.

APInt on the other hand supports up to 64 bits without a malloc. That's the maximum number of bits we need here so we can avoid a malloc for all cases by using APInt.

Reviewers: RKSimon

Reviewed By: RKSimon

Subscribers: llvm-commits

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

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

8 years ago[X86] Use APInt instead of SmallBitVector for tracking Zeroable elements in shuffle...
Craig Topper [Mon, 27 Feb 2017 16:15:30 +0000 (16:15 +0000)]
[X86] Use APInt instead of SmallBitVector for tracking Zeroable elements in shuffle lowering

Summary:
SmallBitVector uses a malloc for more than 58 bits on a 64-bit target and more than 27 bits on a 32-bit target. Some of the vector types we deal with here use more than those number of elements and therefore cause a malloc.

APInt on the other hand supports up to 64 bits without a malloc. That's the maximum number of bits we need here so we can avoid a malloc for all cases by using APInt.

Reviewers: RKSimon

Reviewed By: RKSimon

Subscribers: llvm-commits

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

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

8 years ago[X86] Fix SmallVector sizes in constant pool shuffle decoding to avoid heap allocation
Craig Topper [Mon, 27 Feb 2017 16:15:27 +0000 (16:15 +0000)]
[X86] Fix SmallVector sizes in constant pool shuffle decoding to avoid heap allocation

Some of the vectors are under sized to avoid heap allocation. In one case the vector was oversized.

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

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

8 years ago[X86] Use APInt instead of SmallBitVector for tracking undef elements in constant...
Craig Topper [Mon, 27 Feb 2017 16:15:25 +0000 (16:15 +0000)]
[X86] Use APInt instead of SmallBitVector for tracking undef elements in constant pool shuffle decoding

Summary:
SmallBitVector uses a malloc for more than 58 bits on a 64-bit target and more than 27 bits on a 32-bit target. Some of the vector types we deal with here use more than those number of elements and therefore cause a malloc.

APInt on the other hand supports up to 64 bits without a malloc. That's the maximum number of bits we need here so we can avoid a malloc for all cases by using APInt. This will incur a minor increase in stack usage due to APInt storing the bit count separately from the data bits unlike SmallBitVector, but that should be ok.

Reviewers: RKSimon

Reviewed By: RKSimon

Subscribers: llvm-commits

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

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

8 years agoRemove an empty line in icmp-illegal.ll . NFC
Amaury Sechet [Mon, 27 Feb 2017 16:09:44 +0000 (16:09 +0000)]
Remove an empty line in icmp-illegal.ll . NFC

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

8 years ago[SLP] A test for a fix of PR32038.
Alexey Bataev [Mon, 27 Feb 2017 16:07:10 +0000 (16:07 +0000)]
[SLP] A test for a fix of PR32038.

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

8 years agoLoop predication expand both sides of the widened condition
Artur Pilipenko [Mon, 27 Feb 2017 15:44:49 +0000 (15:44 +0000)]
Loop predication expand both sides of the widened condition

This is a fix for a loop predication bug which resulted in malformed IR generation.

Loop invariant side of the widened condition is not guaranteed to be available in the preheader as is, so we need to expand it as well. See added unsigned_loop_0_to_n_hoist_length test for example.

Reviewed By: sanjoy, mkazantsev

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

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

8 years agoAArch64InstPrinter: rewrite of printSysAlias
Sjoerd Meijer [Mon, 27 Feb 2017 14:45:34 +0000 (14:45 +0000)]
AArch64InstPrinter: rewrite of printSysAlias

This is a cleanup/rewrite of the printSysAlias function. This was not using the
tablegen instruction descriptions, but was "manually" decoding the
instructions. This has been replaced with calls to lookup_XYZ_ByEncoding
tablegen calls.

This revealed several problems. First, instruction IVAU had the wrong encoding.
This was cancelled out by the parser that incorrectly matched the wrong
encoding. Second, instruction CVAP was missing from the SystemOperands tablegen
descriptions, so this has been added. And third, the required target features
were not captured in the tablegen descriptions, so support for this has also
been added.

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

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

8 years ago[ARM] LSL #0 is an alias of MOV
John Brawn [Mon, 27 Feb 2017 14:40:51 +0000 (14:40 +0000)]
[ARM] LSL #0 is an alias of MOV

Currently we handle this correctly in arm, but in thumb we don't which leads to
an unpredictable instruction being emitted for LSL #0 in an IT block and SP not
being permitted in some cases when it should be.

For the thumb2 LSL we can handle this by making LSL #0 an alias of MOV in the
.td file, but for thumb1 we need to handle it in checkTargetMatchPredicate to
get the IT handling right. We also need to adjust the handling of
MOV rd, rn, LSL #0 to avoid generating the 16-bit encoding in an IT block. We
should also adjust it to allow SP in the same way that it is allowed in
MOV rd, rn, but I haven't done that here because it looks like it would take
quite a lot of work to get right.

Additionally correct the selection of the 16-bit shift instructions in
processInstruction, where it was checking if the two registers were equal when
it should have been checking if they were low. It appears that previously this
code was never executed and the 16-bit encoding was selected by default, but
the other changes I've done here have somehow made it start being used.

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

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

8 years ago[DAGCombine] Fix for a load combine bug with non-zero offset patterns on BE targets
Artur Pilipenko [Mon, 27 Feb 2017 13:04:23 +0000 (13:04 +0000)]
[DAGCombine] Fix for a load combine bug with non-zero offset patterns on BE targets

This pattern is essentially a i16 load from p+1 address:

  %p1.i16 = bitcast i8* %p to i16*
  %p2.i8 = getelementptr i8, i8* %p, i64 2
  %v1 = load i16, i16* %p1.i16
  %v2.i8 = load i8, i8* %p2.i8
  %v2 = zext i8 %v2.i8 to i16
  %v1.shl = shl i16 %v1, 8
  %res = or i16 %v1.shl, %v2

Current implementation would identify %v1 load as the first byte load and would mistakenly emit a i16 load from %p1.i16 address. This patch adds a check that the first byte is loaded from a non-zero offset of the first load address. This way this address can be used as the base address for the combined value. Otherwise just give up combining.

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

8 years ago[DAGCombine] NFC. MatchLoadCombine extract MemoryByteOffset lambda helper
Artur Pilipenko [Mon, 27 Feb 2017 11:42:54 +0000 (11:42 +0000)]
[DAGCombine] NFC. MatchLoadCombine extract MemoryByteOffset lambda helper

This refactoring will simplify the upcoming change to fix the bug in folding patterns with non-zero offsets on BE targets.

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

8 years ago[DAGCombine] NFC. MatchLoadCombine remember the first byte provider, not the load...
Artur Pilipenko [Mon, 27 Feb 2017 11:40:14 +0000 (11:40 +0000)]
[DAGCombine] NFC. MatchLoadCombine remember the first byte provider, not the load node

This refactoring will simplify the upcoming change to fix a bug in folding patterns with non-zero offsets on BE targets.

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

8 years agoAArch64AsmParser: don't try to parse “[1]” for non-vector register operands
Sjoerd Meijer [Mon, 27 Feb 2017 10:51:11 +0000 (10:51 +0000)]
AArch64AsmParser: don't try to parse “[1]” for non-vector register operands

There are no instructions that have "[1]" as part of the assembly string;
FMOVXDhighr is out of date. This removes dead code.

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

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

8 years ago[AMDGPU] Runtime metadata fixes:
Konstantin Zhuravlyov [Mon, 27 Feb 2017 07:55:17 +0000 (07:55 +0000)]
[AMDGPU] Runtime metadata fixes:
  - Verify that runtime metadata is actually valid runtime metadata when assembling, otherwise we could accept the following when assembling, but ocl runtime will reject it:
    .amdgpu_runtime_metadata
    { amd.MDVersion: [ 2, 1 ], amd.RandomUnknownKey, amd.IsaInfo: ...
  - Make IsaInfo optional, and always emit it.

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

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

8 years agollvm-mc-fuzzer: add support for assembly
Brian Cain [Mon, 27 Feb 2017 06:22:17 +0000 (06:22 +0000)]
llvm-mc-fuzzer: add support for assembly

This creates an llvm-mc-disassemble-fuzzer from the existing llvm-mc-fuzzer
and finishing the assemble support in llvm-mc-assemble-fuzzer.

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

8 years ago[APInt] Use UINT64_MAX instead of ~integerPart(0). NFC
Craig Topper [Mon, 27 Feb 2017 06:05:33 +0000 (06:05 +0000)]
[APInt] Use UINT64_MAX instead of ~integerPart(0). NFC

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

8 years ago[X86] Check for less than 0 rather than explicit compare with -1. NFC
Craig Topper [Mon, 27 Feb 2017 06:05:30 +0000 (06:05 +0000)]
[X86] Check for less than 0 rather than explicit compare with -1. NFC

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

8 years agoDo full codegen for various tests. NFC
Amaury Sechet [Mon, 27 Feb 2017 01:15:57 +0000 (01:15 +0000)]
Do full codegen for various tests. NFC

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

8 years ago[APInt] Use UINT64_MAX instead of ~uint64_t(0ULL). NFC
Craig Topper [Sun, 26 Feb 2017 21:15:18 +0000 (21:15 +0000)]
[APInt] Use UINT64_MAX instead of ~uint64_t(0ULL). NFC

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

8 years ago[APInt] Use UINT64_MAX instead of ~0ULL. NFC
Craig Topper [Sun, 26 Feb 2017 19:28:48 +0000 (19:28 +0000)]
[APInt] Use UINT64_MAX instead of ~0ULL. NFC

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

8 years ago[APInt] Remove unnecessary early out from getLowBitsSet. The same case is handled...
Craig Topper [Sun, 26 Feb 2017 19:28:45 +0000 (19:28 +0000)]
[APInt] Remove unnecessary early out from getLowBitsSet. The same case is handled equally well by the next check.

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

8 years agoUpdate comments. NFCI
Xin Tong [Sun, 26 Feb 2017 19:08:44 +0000 (19:08 +0000)]
Update comments. NFCI

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

8 years agoRevert "[CGP] Split some critical edges coming out of indirect branches"
Daniel Jasper [Sun, 26 Feb 2017 11:09:12 +0000 (11:09 +0000)]
Revert "[CGP] Split some critical edges coming out of indirect branches"

This reverts commit r296149 as it leads to crashes when compiling for
PPC.

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

8 years ago[LoopDeletion] Modernize and simplify a bit. NFCI.
Davide Italiano [Sun, 26 Feb 2017 07:08:20 +0000 (07:08 +0000)]
[LoopDeletion] Modernize and simplify a bit. NFCI.

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

8 years ago[X86] Fix execution domain for cmpss/sd instructions.
Craig Topper [Sun, 26 Feb 2017 06:45:59 +0000 (06:45 +0000)]
[X86] Fix execution domain for cmpss/sd instructions.

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

8 years ago[AVX-512] Fix execution domain for scalar commutable min/max instructions.
Craig Topper [Sun, 26 Feb 2017 06:45:56 +0000 (06:45 +0000)]
[AVX-512] Fix execution domain for scalar commutable min/max instructions.

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

8 years ago[AVX-512] Fix execution domain for vmovhpd/lpd/hps/lps.
Craig Topper [Sun, 26 Feb 2017 06:45:54 +0000 (06:45 +0000)]
[AVX-512] Fix execution domain for vmovhpd/lpd/hps/lps.

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

8 years ago[AVX-512] Fix the execution domain for AVX-512 integer broadcasts.
Craig Topper [Sun, 26 Feb 2017 06:45:51 +0000 (06:45 +0000)]
[AVX-512] Fix the execution domain for AVX-512 integer broadcasts.

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

8 years ago[AVX-512] Disable the redundant patterns in the VPBROADCASTBr_Alt and VPBROADCASTWr_A...
Craig Topper [Sun, 26 Feb 2017 06:45:48 +0000 (06:45 +0000)]
[AVX-512] Disable the redundant patterns in the VPBROADCASTBr_Alt and VPBROADCASTWr_Alt instructions. NFC

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

8 years ago[AVX-512] Fix execution domain for VPMADD52 instructions.
Craig Topper [Sun, 26 Feb 2017 06:45:45 +0000 (06:45 +0000)]
[AVX-512] Fix execution domain for VPMADD52 instructions.

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

8 years ago[AVX-512] Use update_llc_test_checks.py to regenerate a test.
Craig Topper [Sun, 26 Feb 2017 06:45:43 +0000 (06:45 +0000)]
[AVX-512] Use update_llc_test_checks.py to regenerate a test.

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

8 years ago[AVX-512] Fix the execution domain for VSCALEF instructions.
Craig Topper [Sun, 26 Feb 2017 06:45:40 +0000 (06:45 +0000)]
[AVX-512] Fix the execution domain for VSCALEF instructions.

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

8 years ago[AVX-512] Fix execution domain of scalar VRANGE/REDUCE/GETMANT with sae.
Craig Topper [Sun, 26 Feb 2017 06:45:37 +0000 (06:45 +0000)]
[AVX-512] Fix execution domain of scalar VRANGE/REDUCE/GETMANT with sae.

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

8 years ago[X86] Fix the execution domain for scalar SQRT intrinsic instruction.
Craig Topper [Sun, 26 Feb 2017 06:45:35 +0000 (06:45 +0000)]
[X86] Fix the execution domain for scalar SQRT intrinsic instruction.

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

8 years ago[X86] Add an additional CHECK prefix to a test. Some of the cases used it, but it...
Craig Topper [Sun, 26 Feb 2017 06:45:32 +0000 (06:45 +0000)]
[X86] Add an additional CHECK prefix to a test. Some of the cases used it, but it wasn't on the FileCheck command lines.

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

8 years ago[SCCP] Remove manual folding of terminator instructions.
Xin Tong [Sun, 26 Feb 2017 02:11:24 +0000 (02:11 +0000)]
[SCCP] Remove manual folding of terminator instructions.

Summary:
BranchInst, SwitchInst (with non-default case) with Undef as input is not
possible at this point. As we always default-fold terminator to one target in
ResolvedUndefsIn and set the input accordingly.

So we should only have constantint/blockaddress here.

If ConstantFoldTerminator fails, that could mean 2 things.

1. ConstantFoldTerminator is doing something unexpected, i.e. not folding on constantint
or blockaddress and not making blocks that should be dead dead.
2. This is not a terminator on constantint or blockaddress. Its on a constant or
overdefined, then this block should not be dead.

In both cases, we should assert.

Reviewers: davide, efriedma, sanjoy

Subscribers: llvm-commits

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

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

8 years ago[X86] Clean up test/CodeGen/X86/2006-03-02-InstrSchedBug.ll
David L. Jones [Sun, 26 Feb 2017 01:32:35 +0000 (01:32 +0000)]
[X86] Clean up test/CodeGen/X86/2006-03-02-InstrSchedBug.ll

Summary:
Migrated from grep to FileCheck.
Re-indented code, removed boilerplate comments.
Added 'entry' label at beginning of basic block.

Patch by Jorge Gorbe!

Subscribers: llvm-commits

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

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

8 years agoRevert "In visitSTORE, always use FindBetterChain, rather than only when UseAA is...
Nirav Dave [Sun, 26 Feb 2017 01:27:32 +0000 (01:27 +0000)]
Revert "In visitSTORE, always use FindBetterChain, rather than only when UseAA is enabled."

This reverts commit r296252 until 256-bit operations are more efficiently generated in X86.

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

8 years agovec perm can go down either pipeline on P8.
Eric Christopher [Sun, 26 Feb 2017 00:11:58 +0000 (00:11 +0000)]
vec perm can go down either pipeline on P8.
No observable changes, spotted while looking at the scheduling description.

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

8 years agoFix signed-unsigned comparison warning
Sanjoy Das [Sat, 25 Feb 2017 22:25:48 +0000 (22:25 +0000)]
Fix signed-unsigned comparison warning

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

8 years ago[ValueTracking] Don't do an unchecked shift in ComputeNumSignBits
Sanjoy Das [Sat, 25 Feb 2017 20:30:45 +0000 (20:30 +0000)]
[ValueTracking] Don't do an unchecked shift in ComputeNumSignBits

Summary:
Previously we used to return a bogus result, 0, for IR like `ashr %val,
-1`.

I've also added an assert checking that `ComputeNumSignBits` at least
returns 1.  That assert found an already checked in test case where we
were returning a bad result for `ashr %val, -1`.

Fixes PR32045.

Reviewers: spatel, majnemer

Reviewed By: spatel, majnemer

Subscribers: efriedma, mcrosier, llvm-commits

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

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

8 years ago[APInt] Add APInt::extractBits() method to extract APInt subrange (reapplied)
Simon Pilgrim [Sat, 25 Feb 2017 20:01:58 +0000 (20:01 +0000)]
[APInt] Add APInt::extractBits() method to extract APInt subrange (reapplied)

The current pattern for extract bits in range is typically:

Mask.lshr(BitOffset).trunc(SubSizeInBits);

Which can be particularly slow for large APInts (MaskSizeInBits > 64) as they require the allocation of memory for the temporary variable.

This is another of the compile time issues identified in PR32037 (see also D30265).

This patch adds the APInt::extractBits() helper method which avoids the temporary memory allocation.

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

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

8 years ago[AVX-512] Fix the execution domain for scalar FMA instructions.
Craig Topper [Sat, 25 Feb 2017 19:36:28 +0000 (19:36 +0000)]
[AVX-512] Fix the execution domain for scalar FMA instructions.

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

8 years ago[AVX-512] Fix the execution domain on some instructions.
Craig Topper [Sat, 25 Feb 2017 19:18:11 +0000 (19:18 +0000)]
[AVX-512] Fix the execution domain on some instructions.

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

8 years ago[AVX-512] Add an additional test case to show the execution domain for vrqsrtsd is...
Craig Topper [Sat, 25 Feb 2017 19:18:08 +0000 (19:18 +0000)]
[AVX-512] Add an additional test case to show the execution domain for vrqsrtsd is wrong.

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

8 years ago[AVX-512] Use update_llc_test_checks.py to regenerate the avx512er intrinsic test.
Craig Topper [Sat, 25 Feb 2017 19:18:04 +0000 (19:18 +0000)]
[AVX-512] Use update_llc_test_checks.py to regenerate the avx512er intrinsic test.

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

8 years agoreenable accidentally disabled test NFC.
Nirav Dave [Sat, 25 Feb 2017 19:11:53 +0000 (19:11 +0000)]
reenable accidentally disabled test NFC.

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

8 years ago[AVX-512] Remove unnecessary masked versions of VCVTSS2SD and VCVTSD2SS using the...
Craig Topper [Sat, 25 Feb 2017 18:43:42 +0000 (18:43 +0000)]
[AVX-512] Remove unnecessary masked versions of VCVTSS2SD and VCVTSD2SS using the scalar register class. We only have patterns for the masked intrinsics.

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

8 years ago[ExecutionDepsFix] Don't make copies of LiveReg objects when collecting operands...
Craig Topper [Sat, 25 Feb 2017 18:12:25 +0000 (18:12 +0000)]
[ExecutionDepsFix] Don't make copies of LiveReg objects when collecting operands for soft instructions

Summary:
While collecting operands we make copies of the LiveReg objects which are stored in the LiveRegs array. If the instruction uses the same register multiple times we end up with multiple copies. Later we iterate through the collected list of LiveReg objects and merge DomainValues. In the process of doing this the merge function can change the contents of the original LiveReg object in the LiveRegs array, but not the copies that have been made. So when we get to the second usage of the register we end up seeing a stale copy of the LiveReg object.

To fix this I've stopped copying and now just store a pointer to the original LiveReg object. Another option might be to avoid adding the same register to the Regs array twice, but this approach seemed simpler.

The included test case exposes this bug due to an AVX-512 masked OR instruction using the same register for the passthru operand and one of the inputs to the OR operation.

Fixes PR30284.

Reviewers: RKSimon, stoklund, MatzeB, spatel, myatsina

Reviewed By: RKSimon

Subscribers: llvm-commits

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

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

8 years agoNo need to copy the variable [NFC]
Artyom Skrobov [Sat, 25 Feb 2017 17:18:09 +0000 (17:18 +0000)]
No need to copy the variable [NFC]

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

8 years agoRevert r296215, "[PDB] General improvements to Stream library." and followings.
NAKAMURA Takumi [Sat, 25 Feb 2017 17:04:23 +0000 (17:04 +0000)]
Revert r296215, "[PDB] General improvements to Stream library." and followings.

r296215, "[PDB] General improvements to Stream library."
r296217, "Disable BinaryStreamTest.StreamReaderObject temporarily."
r296220, "Re-enable BinaryStreamTest.StreamReaderObject."
r296244, "[PDB] Disable some tests that are breaking bots."
r296249, "Add static_cast to silence -Wc++11-narrowing."

std::errc::no_buffer_space should be used for OS-oriented errors for socket transmission.
(Seek discussions around llvm/xray.)

I could substitute s/no_buffer_space/others/g, but I revert whole them ATM.

Could we define and use LLVM errors there?

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

8 years agoUpdate various test's codegen. NFC
Amaury Sechet [Sat, 25 Feb 2017 16:46:47 +0000 (16:46 +0000)]
Update various test's codegen. NFC

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

8 years agoAdd test for known bits in uaddo and saddo.
Amaury Sechet [Sat, 25 Feb 2017 15:58:34 +0000 (15:58 +0000)]
Add test for known bits in uaddo and saddo.

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

8 years agoThe automatic CHECK: to CHECK-LABEL: conversion, back in 2013,
Artyom Skrobov [Sat, 25 Feb 2017 15:17:16 +0000 (15:17 +0000)]
The automatic CHECK: to CHECK-LABEL: conversion, back in 2013,
had missed most labels in this test because they didn't end
with a colon.

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

8 years ago[DebugInfo] Skip implicit_const attributes when dumping .debug_info. NFC.
Victor Leschuk [Sat, 25 Feb 2017 13:15:57 +0000 (13:15 +0000)]
[DebugInfo] Skip implicit_const attributes when dumping .debug_info. NFC.

When dumping .debug_info section we loop through all attributes mentioned in
.debug_abbrev section and dump values using DWARFFormValue::extractValue().
We need to skip implicit_const attributes here as their values are not
really located in .debug_info but directly in .debug_abbrev. This patch fixes
triggered assert() in DWARFFormValue::extractValue() caused by trying to
access implicit_const values from .debug_info.

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

8 years agoIn visitSTORE, always use FindBetterChain, rather than only when UseAA is enabled.
Nirav Dave [Sat, 25 Feb 2017 11:43:58 +0000 (11:43 +0000)]
In visitSTORE, always use FindBetterChain, rather than only when UseAA is enabled.

    Recommiting after fixup of 32-bit aliasing sign offset bug in DAGCombiner.

    * Simplify Consecutive Merge Store Candidate Search

    Now that address aliasing is much less conservative, push through
    simplified store merging search and chain alias analysis which only
    checks for parallel stores through the chain subgraph. This is cleaner
    as the separation of non-interfering loads/stores from the
    store-merging logic.

    When merging stores search up the chain through a single load, and
    finds all possible stores by looking down from through a load and a
    TokenFactor to all stores visited.

    This improves the quality of the output SelectionDAG and the output
    Codegen (save perhaps for some ARM cases where we correctly constructs
    wider loads, but then promotes them to float operations which appear
    but requires more expensive constant generation).

    Some minor peephole optimizations to deal with improved SubDAG shapes (listed below)

    Additional Minor Changes:

      1. Finishes removing unused AliasLoad code

      2. Unifies the chain aggregation in the merged stores across code
         paths

      3. Re-add the Store node to the worklist after calling
         SimplifyDemandedBits.

      4. Increase GatherAllAliasesMaxDepth from 6 to 18. That number is
         arbitrary, but seems sufficient to not cause regressions in
         tests.

      5. Remove Chain dependencies of Memory operations on CopyfromReg
         nodes as these are captured by data dependence

      6. Forward loads-store values through tokenfactors containing
          {CopyToReg,CopyFromReg} Values.

      7. Peephole to convert buildvector of extract_vector_elt to
         extract_subvector if possible (see
         CodeGen/AArch64/store-merge.ll)

      8. Store merging for the ARM target is restricted to 32-bit as
         some in some contexts invalid 64-bit operations are being
         generated. This can be removed once appropriate checks are
         added.

    This finishes the change Matt Arsenault started in r246307 and
    jyknight's original patch.

    Many tests required some changes as memory operations are now
    reorderable, improving load-store forwarding. One test in
    particular is worth noting:

      CodeGen/PowerPC/ppc64-align-long-double.ll - Improved load-store
      forwarding converts a load-store pair into a parallel store and
      a memory-realized bitcast of the same value. However, because we
      lose the sharing of the explicit and implicit store values we
      must create another local store. A similar transformation
      happens before SelectionDAG as well.

    Reviewers: arsenm, hfinkel, tstellarAMD, jyknight, nhaehnle

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

8 years ago[Doc] Modernize programmers manual
Piotr Padlewski [Sat, 25 Feb 2017 10:33:37 +0000 (10:33 +0000)]
[Doc] Modernize programmers manual

Summary:
Fixed bunch of for loops to range based for loop
and bunch of rendundat types with auto.

Reviewers: echristo, silvas, chandlerc

Subscribers: mehdi_amini, llvm-commits

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

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

8 years agoEmpty line. NFCI
Xin Tong [Sat, 25 Feb 2017 08:10:28 +0000 (08:10 +0000)]
Empty line. NFCI

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

8 years agoAdd static_cast to silence -Wc++11-narrowing.
Daniel Jasper [Sat, 25 Feb 2017 07:53:36 +0000 (07:53 +0000)]
Add static_cast to silence -Wc++11-narrowing.

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

8 years ago[PDB] Disable some tests that are breaking bots.
Zachary Turner [Sat, 25 Feb 2017 05:57:57 +0000 (05:57 +0000)]
[PDB] Disable some tests that are breaking bots.

This has to do with big endian, but I can't fix it until
Monday.  The code itself is fine, just the tests are wrong.
Disabling 3 tests for now.

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

8 years agoAMDGPU/SI: export s_waitcnt builtin
Jan Vesely [Sat, 25 Feb 2017 02:13:32 +0000 (02:13 +0000)]
AMDGPU/SI: export s_waitcnt builtin

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

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

8 years agoMinor code cleanup. NFC.
Junmo Park [Sat, 25 Feb 2017 01:50:45 +0000 (01:50 +0000)]
Minor code cleanup. NFC.

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

8 years agoRe-enable BinaryStreamTest.StreamReaderObject.
Zachary Turner [Sat, 25 Feb 2017 01:20:08 +0000 (01:20 +0000)]
Re-enable BinaryStreamTest.StreamReaderObject.

I had an invalid pointer / size calculation that was causing
a stack smash.  Should be fixed now.

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

8 years agoRemove redundant code. NFC.
Akira Hatanaka [Sat, 25 Feb 2017 00:59:49 +0000 (00:59 +0000)]
Remove redundant code. NFC.

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

8 years agoClean up ObjCARCOpts.cpp. NFC.
Akira Hatanaka [Sat, 25 Feb 2017 00:53:38 +0000 (00:53 +0000)]
Clean up ObjCARCOpts.cpp. NFC.

I removed unused functions and variables and moved variables closer to
their uses.

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

8 years agoDisable BinaryStreamTest.StreamReaderObject temporarily.
Zachary Turner [Sat, 25 Feb 2017 00:52:59 +0000 (00:52 +0000)]
Disable BinaryStreamTest.StreamReaderObject temporarily.

This is crashing on some bots, so I need some time to investigate.

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

8 years ago[PDB] General improvements to Stream library.
Zachary Turner [Sat, 25 Feb 2017 00:44:30 +0000 (00:44 +0000)]
[PDB] General improvements to Stream library.

This adds various new functionality and cleanup surrounding the
use of the Stream library.  Major changes include:

* Renaming of all classes for more consistency / meaningfulness
* Addition of some new methods for reading multiple values at once.
* Full suite of unit tests for reader / writer functionality.
* Full set of doxygen comments for all classes.
* Streams now store their own endianness.
* Fixed some bugs in a few of the classes that were discovered
  by the unit tests.

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

8 years agoRemove svn:eol-style=native from Properties.
Zachary Turner [Sat, 25 Feb 2017 00:41:19 +0000 (00:41 +0000)]
Remove svn:eol-style=native from Properties.

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

8 years ago[PDB] Rename Stream related source files.
Zachary Turner [Sat, 25 Feb 2017 00:33:34 +0000 (00:33 +0000)]
[PDB] Rename Stream related source files.

This is part of a larger effort to get the Stream code moved
up to Support.  I don't want to do it in one large patch, in
part because the changes are so big that it will treat everything
as file deletions and add, losing history in the process.
Aside from that though, it's just a good idea in general to
make small changes.

So this change only changes the names of the Stream related
source files, and applies necessary source fix ups.

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

8 years ago[XRAY] A Color Choosing helper for XRay Graph
Dean Michael Berris [Sat, 25 Feb 2017 00:26:42 +0000 (00:26 +0000)]
[XRAY] A Color Choosing helper for XRay Graph

Summary:
In Preparation for graph comparison, this patch breaks out the color
choice code from xray-graph into a library and adds polynomials for
the Sequential and Difference sets from ColorBrewer.

Depends on D29005

Reviewers: dblaikie, chandlerc, dberris

Reviewed By: dberris

Subscribers: chandlerc, llvm-commits, mgorny

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

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

8 years ago[InlineCost] Move the code in isGEPOffsetConstant to a lambda.
Easwaran Raman [Sat, 25 Feb 2017 00:10:22 +0000 (00:10 +0000)]
[InlineCost] Move the code in isGEPOffsetConstant to a lambda.

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

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

8 years agoMinor code cleanup. NFC.
Junmo Park [Sat, 25 Feb 2017 00:08:53 +0000 (00:08 +0000)]
Minor code cleanup. NFC.

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

8 years ago[PGO] Directory name stripping in global identifier for static functions
Rong Xu [Sat, 25 Feb 2017 00:00:36 +0000 (00:00 +0000)]
[PGO] Directory name stripping in global identifier for static functions

Current internal option -static-func-full-module-prefix keeps all the
directory path the profile counter names for static functions. The default
of this option is false. This strips the directory names from the source
filename which is problematic:

(1) it creates linker errors for profile-generation compilation, exposed in
our internal benchmarks. We are seeing messages like
"warning: relocation refers to discarded section".
This is due to the name conflicts after the stripping.

(2) the stripping only applies to getPGOFuncName.
Current Thin-LTO module importing for the indirect-calls assumes
the source directory name not being stripped. Current default value
for this option can potentially prevent some inter-module
indirect-call-promotions.

This patch turns the default value for -static-func-full-module-prefix to true.

The second part of the patch is to have an alternative implementation under
 the internal option -static-func-strip-dirname-prefix=<value>

This options specifies level of directories to be stripped from the source
filename. Using a large value as the parameter has the same effect as
-static-func-full-module-prefix.

Differential Revision: http://reviews.llvm.org/D29512

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

8 years ago[sancov] extending sancov --help documentation
Mike Aizatsky [Fri, 24 Feb 2017 23:55:18 +0000 (23:55 +0000)]
[sancov] extending sancov --help documentation

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

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

8 years ago[WebAssembly] Add support for using a wasm global for the stack pointer.
Dan Gohman [Fri, 24 Feb 2017 23:46:05 +0000 (23:46 +0000)]
[WebAssembly] Add support for using a wasm global for the stack pointer.

This replaces the __stack_pointer variable which was allocated in linear
memory.

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

8 years ago[Hexagon] Undo shift folding where it could simplify addressing mode
Krzysztof Parzyszek [Fri, 24 Feb 2017 23:34:24 +0000 (23:34 +0000)]
[Hexagon] Undo shift folding where it could simplify addressing mode

For example, avoid (single shift):
  r0 = and(##536870908,lsr(r0,#3))
  r0 = memw(r1+r0<<#0)

in favor of (two shifts):
  r0 = lsr(r0,#5)
  r0 = memw(r1+r0<<#2)

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

8 years ago[WebAssembly] Basic support for Wasm object file encoding.
Dan Gohman [Fri, 24 Feb 2017 23:18:00 +0000 (23:18 +0000)]
[WebAssembly] Basic support for Wasm object file encoding.

With the "wasm32-unknown-unknown-wasm" triple, this allows writing out
simple wasm object files, and is another step in a larger series toward
migrating from ELF to general wasm object support. Note that this code
and the binary format itself is still experimental.

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

8 years ago[.gitignore] Update .gitignore to ignore a nested build directory
Chris Bieneman [Fri, 24 Feb 2017 23:09:30 +0000 (23:09 +0000)]
[.gitignore] Update .gitignore to ignore a nested build directory

Summary:
A number of tools and common workflows include putting a build directory inside the source checkout under the folder "build". Adding this to .gitignore seems useful.

As an example, the CMake Tools plugin for VSCode does this.

Reviewers: chandlerc, echristo, zturner

Reviewed By: zturner

Subscribers: MatzeB, mehdi_amini, llvm-commits, jgosnell

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

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

8 years ago[Hexagon] Prettify code in HexagonDAGToDAGISel::Select
Krzysztof Parzyszek [Fri, 24 Feb 2017 23:00:40 +0000 (23:00 +0000)]
[Hexagon] Prettify code in HexagonDAGToDAGISel::Select

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

8 years agoAMDGPU : Replace FMAD with FMA when denormals are enabled.
Wei Ding [Fri, 24 Feb 2017 23:00:29 +0000 (23:00 +0000)]
AMDGPU : Replace FMAD with FMA when denormals are enabled.

Differential Revision: http://reviews.llvm.org/D29958

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

8 years agoRevert "Correct register pressure calculation in presence of subregs"
Stanislav Mekhanoshin [Fri, 24 Feb 2017 21:56:16 +0000 (21:56 +0000)]
Revert "Correct register pressure calculation in presence of subregs"

This reverts commit r296009. It broke one out of tree target and also
does not account for all partial lines added or removed when calculating
PressureDiff.

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

8 years ago[utils] allow auto-generation of checks for thumb triples
Sanjay Patel [Fri, 24 Feb 2017 21:47:44 +0000 (21:47 +0000)]
[utils] allow auto-generation of checks for thumb triples

If there's some reason not to do this, feel free to revert and/or fix, but
for the cases I'm looking at, the script appears to do fine for these targets.

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

8 years agoDisallow redefinition of section symbols.
Evgeniy Stepanov [Fri, 24 Feb 2017 21:44:58 +0000 (21:44 +0000)]
Disallow redefinition of section symbols.

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

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

8 years agoInitialize MCContext::InlineSrcMgr in the constructor.
Evgeniy Stepanov [Fri, 24 Feb 2017 21:44:52 +0000 (21:44 +0000)]
Initialize MCContext::InlineSrcMgr in the constructor.

Found with ASan (and a local source change) on test/CodeGen/XCore/section-name.ll.

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

8 years ago[ARM] add tests for alternate forms of select-of-constants; NFC
Sanjay Patel [Fri, 24 Feb 2017 21:36:34 +0000 (21:36 +0000)]
[ARM] add tests for alternate forms of select-of-constants; NFC

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

8 years ago[WebAssembly] Define an initial set of relocation types for Wasm.
Dan Gohman [Fri, 24 Feb 2017 21:21:44 +0000 (21:21 +0000)]
[WebAssembly] Define an initial set of relocation types for Wasm.

This set will likely evolve, along with the Wasm linking ABI.

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

8 years agoGlobalISel: check for CImm rather than Imm on G_CONSTANTs.
Tim Northover [Fri, 24 Feb 2017 21:21:38 +0000 (21:21 +0000)]
GlobalISel: check for CImm rather than Imm on G_CONSTANTs.

All G_CONSTANTS created by the MachineIRBuilder have an operand of type CImm
(i.e. a ConstantInt), so that's what the selector needs to look for.

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

8 years ago[ARM] auto-generate complete checks; NFC
Sanjay Patel [Fri, 24 Feb 2017 21:19:09 +0000 (21:19 +0000)]
[ARM] auto-generate complete checks; NFC

The affected test may change with a patch I'm looking at for DAGCombiner,
so I want to make sure it's not a regression.

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

8 years ago[WebAssembly] Handle f16 in fast-isel.
Dan Gohman [Fri, 24 Feb 2017 21:05:35 +0000 (21:05 +0000)]
[WebAssembly] Handle f16 in fast-isel.

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

8 years agoFix Indentation. NFCI
Xin Tong [Fri, 24 Feb 2017 20:59:26 +0000 (20:59 +0000)]
Fix Indentation. NFCI

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

8 years ago[Orc][RPC] Accept both const char* and char* arguments for string serialization.
Lang Hames [Fri, 24 Feb 2017 20:56:43 +0000 (20:56 +0000)]
[Orc][RPC] Accept both const char* and char* arguments for string serialization.

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

8 years ago[CodeGenPrepare] Make -addr-sink-using-gep work with address spaces.
Eli Friedman [Fri, 24 Feb 2017 20:51:36 +0000 (20:51 +0000)]
[CodeGenPrepare] Make -addr-sink-using-gep work with address spaces.

When we construct addressing modes, we use isNoopAddrSpaceCast to ignore
addrspacecast instructions. Make sure we insert the correct addrspacecast
when we reconstruct the addressing mode.

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

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