]> granicus.if.org Git - llvm/log
llvm
8 years agoMake processInstruction from LCSSA.cpp externally available.
Michael Zolotukhin [Fri, 15 Jul 2016 21:08:41 +0000 (21:08 +0000)]
Make processInstruction from LCSSA.cpp externally available.

Summary:
When a pass tries to keep LCSSA form it's often convenient to be able to update
LCSSA for a set of instructions rather than for the entire loop. This patch makes the
processInstruction from LCSSA externally available under a name
formLCSSAForInstruction.

Reviewers: chandlerc, sanjoy, hfinkel

Subscribers: llvm-commits

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

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

8 years ago[pdb] Introduce MsfBuilder for laying out PDB files.
Zachary Turner [Fri, 15 Jul 2016 20:43:38 +0000 (20:43 +0000)]
[pdb] Introduce MsfBuilder for laying out PDB files.

Reviewed by: ruiu
Differential Revision: https://reviews.llvm.org/D22308

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

8 years agoTeach fast isel about the win64 calling convention.
Nico Weber [Fri, 15 Jul 2016 20:18:37 +0000 (20:18 +0000)]
Teach fast isel about the win64 calling convention.

This mostly just works.

Vectorcall rets are still not supported.

The win64_eh test change is because fast isel doesn't use rsi for temporary
computations, so it doesn't need to be pushed. The test case I'm changing was
originally added to test pushes, but by now there are other test cases in that
file exercising that code path.

https://reviews.llvm.org/D22422

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

8 years ago[Hexagon] Make MI scheduler check for stalls in previous packet on v60
Krzysztof Parzyszek [Fri, 15 Jul 2016 20:16:03 +0000 (20:16 +0000)]
[Hexagon] Make MI scheduler check for stalls in previous packet on v60

Patch by Ikhlas Ajbar.

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

8 years ago[CFLAA] Add attributes handling for CFLAnders.
George Burgess IV [Fri, 15 Jul 2016 20:02:49 +0000 (20:02 +0000)]
[CFLAA] Add attributes handling for CFLAnders.

This patch adds proper handling of stratified attributes into our
anders-style CFLAA implementation. It also comes bundled with more
CFLAnders tests. :)

Patch by Jia Chen.

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

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

8 years ago[PowerPC] Set kill flag for scratch register when spilling the link register
Nemanja Ivanovic [Fri, 15 Jul 2016 19:56:32 +0000 (19:56 +0000)]
[PowerPC] Set kill flag for scratch register when spilling the link register

This fixes PR 28526.

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

8 years ago[CFLAA] Add an initial CFLAnders implementation.
George Burgess IV [Fri, 15 Jul 2016 19:53:25 +0000 (19:53 +0000)]
[CFLAA] Add an initial CFLAnders implementation.

This adds an incomplete anders-style implementation for CFLAA. It's
incomplete in that it's missing interprocedural analysis, attrs
handling, etc. and that it needs more tests. More tests and features
will be added in future commits.

Patch by Jia Chen.

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

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

8 years agoFix calls to SelectionDAG::getStore
Derek Schuff [Fri, 15 Jul 2016 19:35:43 +0000 (19:35 +0000)]
Fix calls to SelectionDAG::getStore

It was refactored in r275592. NFC

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

8 years agoRevert "[AMDGPU] Add metadata for runtime"
Vitaly Buka [Fri, 15 Jul 2016 19:14:57 +0000 (19:14 +0000)]
Revert "[AMDGPU] Add metadata for runtime"

This reverts commit r275566.

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

8 years ago[Hexagon] Replace postprocessDAG with a more elaborate DAG mutation
Krzysztof Parzyszek [Fri, 15 Jul 2016 19:09:37 +0000 (19:09 +0000)]
[Hexagon] Replace postprocessDAG with a more elaborate DAG mutation

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

8 years ago[ReassociateGEP] Update tests to allow missing "inbounds" on certain GEPs.
Jingyue Wu [Fri, 15 Jul 2016 18:47:17 +0000 (18:47 +0000)]
[ReassociateGEP] Update tests to allow missing "inbounds" on certain GEPs.

With r275532 fixing miscompilation of GVN, "inbounds" on certain GEPs in these
tests cannot be preserved any more. Left a TODO in the tests for future
reference.

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

8 years ago[MBP] Clean up of the comments, and a first attempt to better describe a part
Sjoerd Meijer [Fri, 15 Jul 2016 18:41:56 +0000 (18:41 +0000)]
[MBP] Clean up of the comments, and a first attempt to better describe a part
of the algorithm.

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

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

8 years agoadd tests for associative ops blocked by a cast
Sanjay Patel [Fri, 15 Jul 2016 18:39:02 +0000 (18:39 +0000)]
add tests for associative ops blocked by a cast

These are more generalized versions of the cases added in
r275302 and r275297.

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

8 years ago[SCCP] Merge two conditions into one. NFCI.
Davide Italiano [Fri, 15 Jul 2016 18:33:16 +0000 (18:33 +0000)]
[SCCP] Merge two conditions into one. NFCI.

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

8 years ago[SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and...
Justin Lebar [Fri, 15 Jul 2016 18:27:10 +0000 (18:27 +0000)]
[SelectionDAG] Get rid of bool parameters in SelectionDAG::getLoad, getStore, and friends.

Summary:
Instead, we take a single flags arg (a bitset).

Also add a default 0 alignment, and change the order of arguments so the
alignment comes before the flags.

This greatly simplifies many callsites, and fixes a bug in
AMDGPUISelLowering, wherein the order of the args to getLoad was
inverted.  It also greatly simplifies the process of adding another flag
to getLoad.

Reviewers: chandlerc, tstellarAMD

Subscribers: jholewinski, arsenm, jyknight, dsanders, nemanjai, llvm-commits

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

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

8 years ago[CodeGen] Take a MachineMemOperand::Flags in MachineFunction::getMachineMemOperand.
Justin Lebar [Fri, 15 Jul 2016 18:26:59 +0000 (18:26 +0000)]
[CodeGen] Take a MachineMemOperand::Flags in MachineFunction::getMachineMemOperand.

Summary:
Previously we took an unsigned.

Hooray for type-safety.

Reviewers: chandlerc

Subscribers: dsanders, llvm-commits

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

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

8 years ago[PGO] IRPGO pre-cleanup pass changes
Rong Xu [Fri, 15 Jul 2016 18:10:49 +0000 (18:10 +0000)]
[PGO] IRPGO pre-cleanup pass changes

This patch adds a selected set of cleanup passes including a pre-inline pass
before LLVM IR PGO instrumentation. The inline is only intended to apply those
obvious/trivial ones before instrumentation so that much less instrumentation
is needed to get better profiling information. This will drastically improve
the instrumented code performance for large C++ applications. Another benefit
is the context sensitive counts that can potentially improve the PGO
optimization.

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

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

8 years agofix documentation comments; NFC
Sanjay Patel [Fri, 15 Jul 2016 18:03:59 +0000 (18:03 +0000)]
fix documentation comments; NFC

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

8 years ago[Hexagon] Add a scheduling DAG mutation
Krzysztof Parzyszek [Fri, 15 Jul 2016 17:48:09 +0000 (17:48 +0000)]
[Hexagon] Add a scheduling DAG mutation

- Remove output dependencies on USR_OVF register.
- Update chain edge latencies between v60 vector loads/stores.

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

8 years ago[OptRemark,LDist] RFC: Add hotness attribute
Adam Nemet [Fri, 15 Jul 2016 17:23:20 +0000 (17:23 +0000)]
[OptRemark,LDist] RFC: Add hotness attribute

Summary:
This is the first set of changes implementing the RFC from
http://thread.gmane.org/gmane.comp.compilers.llvm.devel/98334

This is a cross-sectional patch; rather than implementing the hotness
attribute for all optimization remarks and all passes in a patch set, it
implements it for the 'missed-optimization' remark for Loop
Distribution.  My goal is to shake out the design issues before scaling
it up to other types and passes.

Hotness is computed as an integer as the multiplication of the block
frequency with the function entry count.  It's only printed in opt
currently since clang prints the diagnostic fields directly.  E.g.:

  remark: /tmp/t.c:3:3: loop not distributed: use -Rpass-analysis=loop-distribute for more info (hotness: 300)

A new API added is similar to emitOptimizationRemarkMissed.  The
difference is that it additionally takes a code region that the
diagnostic corresponds to.  From this, hotness is computed using BFI.
The new API is exposed via an analysis pass so that it can be made
dependent on LazyBFI.  (Thanks to Hal for the analysis pass idea.)

This feature can all be enabled by setDiagnosticHotnessRequested in the
LLVM context.  If this is off, LazyBFI is not calculated (D22141) so
there should be no overhead.

A new command-line option is added to turn this on in opt.

My plan is to switch all user of emitOptimizationRemark* to use this
module instead.

Reviewers: hfinkel

Subscribers: rcox2, mzolotukhin, llvm-commits

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

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

8 years ago[libFuzzer] add ThreadedLeakTest
Kostya Serebryany [Fri, 15 Jul 2016 17:19:43 +0000 (17:19 +0000)]
[libFuzzer] add ThreadedLeakTest

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

8 years ago[AliasAnalysis] Give back AA results for fence instructions
David Majnemer [Fri, 15 Jul 2016 17:19:24 +0000 (17:19 +0000)]
[AliasAnalysis] Give back AA results for fence instructions

Calling getModRefInfo with a fence resulted in crashes because fences
don't have a memory location.  Add a new predicate to Instruction
called isFenceLike which indicates that the instruction mutates memory
but not any single memory location in particular. In practice, it is a
proxy for the set of instructions which "mayWriteToMemory" but cannot be
used with MemoryLocation::get.

This fixes PR28570.

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

8 years ago[Hexagon] Update instruction itineraries
Krzysztof Parzyszek [Fri, 15 Jul 2016 16:58:34 +0000 (16:58 +0000)]
[Hexagon] Update instruction itineraries

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

8 years ago[PM] Convert LoopInstSimplify Pass to new PM
Dehao Chen [Fri, 15 Jul 2016 16:42:11 +0000 (16:42 +0000)]
[PM] Convert LoopInstSimplify Pass to new PM

Summary: Convert LoopInstSimplify to new PM. Unfortunately there is no exisiting unittest for this pass.

Reviewers: davidxl, silvas

Subscribers: silvas, llvm-commits, mzolotukhin

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

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

8 years agoIR: Sort generic intrinsics before target specific ones
Justin Bogner [Fri, 15 Jul 2016 16:31:37 +0000 (16:31 +0000)]
IR: Sort generic intrinsics before target specific ones

This splits out the intrinsic table such that generic intrinsics come
first and target specific intrinsics are grouped by target. From here
we can find out which target an intrinsic is for or differentiate
between generic and target intrinsics.

The motivation here is to make it easier to move target specific
intrinsic handling out of generic code.

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

8 years ago[Hexagon] Fixes/changes to instruction selection
Krzysztof Parzyszek [Fri, 15 Jul 2016 16:29:02 +0000 (16:29 +0000)]
[Hexagon] Fixes/changes to instruction selection

- Add patterns for rr/abs addressing modes.
- Set addrMode to PostInc where necessary.
- Misc fixes.

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

8 years ago[DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals
Jun Bum Lim [Fri, 15 Jul 2016 16:14:34 +0000 (16:14 +0000)]
[DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals

Summary:
This change use the overlap interval map built from partial overwrite tracking to perform shortening MemIntrinsics.
Add test cases which was missing opportunities before.

Reviewers: hfinkel, eeckstein, mcrosier

Subscribers: mcrosier, llvm-commits

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

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

8 years ago[Hexagon] Improve patterns with stack-based addressing
Krzysztof Parzyszek [Fri, 15 Jul 2016 15:35:52 +0000 (15:35 +0000)]
[Hexagon] Improve patterns with stack-based addressing

- Treat bitwise OR with a frame index as an ADD wherever possible, fold it
  into addressing mode.
- Extend patterns for memops to allow memops with frame indexes as address
  operands.

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

8 years agoIn dag-optnone.ll, use varargs instead of win64 to fast SDIsel.
Nico Weber [Fri, 15 Jul 2016 15:30:18 +0000 (15:30 +0000)]
In dag-optnone.ll, use varargs instead of win64 to fast SDIsel.

The test used to rely on targeting win64 to disable fast isel,
but I'd like to teach fast isel about win64 rets.  Change the
test to use varargs to disable fast isel.

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

8 years ago[LV] Swap A and B in interleaved access analysis (NFC)
Matthew Simpson [Fri, 15 Jul 2016 15:22:43 +0000 (15:22 +0000)]
[LV] Swap A and B in interleaved access analysis (NFC)

This patch swaps A and B in the interleaved access analysis and clarifies
related comments. The algorithm is more intuitive if we let access A precede
access B in program order rather than the reverse. This change was requested in
the review of D19984.

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

8 years ago[AMDGPU] Add metadata for runtime
Yaxun Liu [Fri, 15 Jul 2016 14:58:21 +0000 (14:58 +0000)]
[AMDGPU] Add metadata for runtime

Added emitting metadata to elf for runtime.

Runtime requires certain information (metadata) about kernels to be able to execute and query them. Such information is emitted to an elf section as a key-value pair stream.

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

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

8 years agoRename AnalyzeBranch* to analyzeBranch*.
Jacques Pienaar [Fri, 15 Jul 2016 14:41:04 +0000 (14:41 +0000)]
Rename AnalyzeBranch* to analyzeBranch*.

Summary: NFC. Rename AnalyzeBranch/AnalyzeBranchPredicate to analyzeBranch/analyzeBranchPredicate to follow LLVM coding style and be consistent with TargetInstrInfo's analyzeCompare and analyzeSelect.

Reviewers: tstellarAMD, mcrosier

Subscribers: mcrosier, jholewinski, jfb, arsenm, dschuff, jyknight, dsanders, nemanjai

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

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

8 years agoRe-submit r272891 "Prevent dangling pointer problems in BranchProbabilityInfo"
Igor Laevsky [Fri, 15 Jul 2016 14:31:16 +0000 (14:31 +0000)]
Re-submit r272891 "Prevent dangling pointer problems in BranchProbabilityInfo"

Most possibly problem was caused by the same reason as PR28400. This change
bypasses it by using CallbackVH instead of AssertingVH.

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

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

8 years agoRevert r275141 - Mips: Avoid implicit iterator conversions, NFC
Daniel Sanders [Fri, 15 Jul 2016 13:54:20 +0000 (13:54 +0000)]
Revert r275141 - Mips: Avoid implicit iterator conversions, NFC

It appears to have caused some failures in our buildbots.

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

8 years agocode hoisting pass based on GVN
Sebastian Pop [Fri, 15 Jul 2016 13:45:20 +0000 (13:45 +0000)]
code hoisting pass based on GVN

This pass hoists duplicated computations in the program. The primary goal of
gvn-hoist is to reduce the size of functions before inline heuristics to reduce
the total cost of function inlining.

Pass written by Sebastian Pop, Aditya Kumar, Xiaoyu Hu, and Brian Rzycki.
Important algorithmic contributions by Daniel Berlin under the form of reviews.

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

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

8 years ago[LLVM][MIPS] Fix createStubFunction to emit JR encoding based on Arch.
Nitesh Jain [Fri, 15 Jul 2016 12:56:37 +0000 (12:56 +0000)]
[LLVM][MIPS] Fix createStubFunction to emit JR encoding based on Arch.

Reviewers: vkalintiris, dsanders

Subscribers: jaydeep, bhushan, mohit.bhakkad, slthakur, llvm-commits

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

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

8 years ago[X86][AVX] Added shuffle tests for UNPCK+PERMUTE
Simon Pilgrim [Fri, 15 Jul 2016 11:51:46 +0000 (11:51 +0000)]
[X86][AVX] Added shuffle tests for UNPCK+PERMUTE

lowerVectorShuffleAsPermuteAndUnpack could solve this if it worked with 256-bit vectors

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

8 years ago[X86][AVX2] Added a memory version of test_mm256_broadcastsi128_si256
Simon Pilgrim [Fri, 15 Jul 2016 11:40:27 +0000 (11:40 +0000)]
[X86][AVX2] Added a memory version of test_mm256_broadcastsi128_si256

This should lower to vbroadcasti128

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

8 years ago[X86][AVX2] Improve lowerShuffleAsRepeatedMaskAndLanePermute permutation of 64-bit...
Simon Pilgrim [Fri, 15 Jul 2016 09:49:12 +0000 (09:49 +0000)]
[X86][AVX2] Improve lowerShuffleAsRepeatedMaskAndLanePermute permutation of 64-bit sub-lanes

As discussed on PR28136, lowerShuffleAsRepeatedMaskAndLanePermute was attempting to match repeated masks at the 128-bit level and then permute the resultant lanes at the 128-bit (AVX1) or 64-bit (AVX2) sub-lane level.

This change allows us to create the repeated masks at the sub-lane level (and then concat them together to create a 128-bit repeated mask) and then select which sub-lane to permute. This has no effect on the AVX1 codegen.

Fixes PR28136.

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

8 years ago[ARM] Fix build after r275540
James Molloy [Fri, 15 Jul 2016 08:12:44 +0000 (08:12 +0000)]
[ARM] Fix build after r275540

A rebase seemed so innocent before committing. Turns out someone changed a pointer to a reference in the mean time :(

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

8 years ago[Thumb-1] Select post-increment load and store where possible
James Molloy [Fri, 15 Jul 2016 08:03:56 +0000 (08:03 +0000)]
[Thumb-1] Select post-increment load and store where possible

Thumb-1 doesn't have post-inc or pre-inc load or store instructions. However the LDM/STM instructions with writeback can function as post-inc load/store:

  ldm r0!, {r1}  @ load from r0 into r1 and increment r0 by 4

Obviously, this only works if the post increment is 4.

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

8 years ago[ARM] Followup to r275537 addressing review comments
James Molloy [Fri, 15 Jul 2016 07:57:35 +0000 (07:57 +0000)]
[ARM] Followup to r275537 addressing review comments

Address Chad's comment in D22216 which I missed due to tunnel vision on the "LGTM" comment.

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

8 years ago[ARM] Prefer indirect calls in minsize mode
James Molloy [Fri, 15 Jul 2016 07:55:21 +0000 (07:55 +0000)]
[ARM] Prefer indirect calls in minsize mode

... When we emit several calls to the same function in the same basic block.

An indirect call uses a "BLX r0" instruction which has a 16-bit encoding. If many calls are made to the same target, this can enable significant code size reductions.

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

8 years agoXFAIL two SeparateConstOffsetFromGEP tests
David Majnemer [Fri, 15 Jul 2016 05:37:22 +0000 (05:37 +0000)]
XFAIL two SeparateConstOffsetFromGEP tests

They appear to have relied on bugs hidden in copyIRFlags/andIRFlags.

This has been filed as PR28564.

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

8 years ago[IR] andIRFlags and copyIRFlags needs to handle GEP
David Majnemer [Fri, 15 Jul 2016 05:02:31 +0000 (05:02 +0000)]
[IR] andIRFlags and copyIRFlags needs to handle GEP

We didn't consider the inbounds flag on GEPs leading to downstream users
introducing UB.

This fixes PR28562.

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

8 years ago[llvm-cov] Relax a test for Windows
Vedant Kumar [Fri, 15 Jul 2016 02:11:37 +0000 (02:11 +0000)]
[llvm-cov] Relax a test for Windows

Attempt to address this bot failure:

  http://bb.pgr.jp/builders/ninja-clang-i686-msc19-R/builds/4967

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

8 years ago[llvm-cov] Improve error messages
Vedant Kumar [Fri, 15 Jul 2016 01:53:39 +0000 (01:53 +0000)]
[llvm-cov] Improve error messages

While we're at it, extend an existing test to make sure that error
messages look reasonable.

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

8 years ago[Kaleidoscope][BuildingAJIT] Start filling in text for chapter 3.
Lang Hames [Fri, 15 Jul 2016 01:39:49 +0000 (01:39 +0000)]
[Kaleidoscope][BuildingAJIT] Start filling in text for chapter 3.

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

8 years ago[llvm-cov] Fix a use-after-free
Vedant Kumar [Fri, 15 Jul 2016 01:19:36 +0000 (01:19 +0000)]
[llvm-cov] Fix a use-after-free

Taking a lock before appending to a vector does no good unless threads
reading from the vector also take the lock, because the vector could be
re-sized.

I don't have a good isolated test for this. I found the issue with ASan
while testing a large project.  I'm working on a bot that does this.

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

8 years ago[llvm-cov] Clean up an awkward capture-by-reference (NFC)
Vedant Kumar [Fri, 15 Jul 2016 01:19:35 +0000 (01:19 +0000)]
[llvm-cov] Clean up an awkward capture-by-reference (NFC)

Writing `for (StringRef &SourceFile : ...)` is strange to begin with.
Subsequently capturing "SourceFile" by reference is even stranger. Just
copy the StringRef, since that's cheap to do.

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

8 years ago[Coverage] Mark a few more methods const (NFC)
Vedant Kumar [Fri, 15 Jul 2016 01:19:33 +0000 (01:19 +0000)]
[Coverage] Mark a few more methods const (NFC)

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

8 years agoAMDGPU: Fix not expanding control flow after some kill blocks
Matt Arsenault [Fri, 15 Jul 2016 00:58:15 +0000 (00:58 +0000)]
AMDGPU: Fix not expanding control flow after some kill blocks

Also stop trying to insert skip blocks at end_cf. This
was inserting them at the end of the block which doesn't make
sense. The skip should be inserted at the beginning of the block
right after the end cf. Just remove this for now since no tests
seem to stress this and I think this can be handled more generally
later.

Fixes bug 28550

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

8 years agoAMDGPU: Fix trying to skip from a block with no successors
Matt Arsenault [Fri, 15 Jul 2016 00:58:13 +0000 (00:58 +0000)]
AMDGPU: Fix trying to skip from a block with no successors

Found while reducing bug 28550

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

8 years agoAMDGPU: Fix splitting kill blocks with defs before kill
Matt Arsenault [Fri, 15 Jul 2016 00:58:09 +0000 (00:58 +0000)]
AMDGPU: Fix splitting kill blocks with defs before kill

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

8 years ago[AArch64] Set COPY ZR isAsCheapAsAMove when needed.
Haicheng Wu [Fri, 15 Jul 2016 00:27:01 +0000 (00:27 +0000)]
[AArch64] Set COPY ZR isAsCheapAsAMove when needed.

If a subtarget has both ZCZeroing and CustomCheapAsMoveHandling features (now
only Kryo has both), set COPY (W|X)ZR isAsCheapAsAMove.

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

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

8 years ago[codeview] Shrink inlined call site line info tables
Reid Kleckner [Thu, 14 Jul 2016 23:47:15 +0000 (23:47 +0000)]
[codeview] Shrink inlined call site line info tables

For a fully inlined call chain like a -> b -> c -> d, we were emitting
line info for 'd' 3 separate times: once for d's actual InlineSite line
table, and twice for 'b' and 'c'. This is particularly inefficient when
all these functions are in different headers, because now we need to
encode the file change. Windbg was coping with our suboptimal output, so
this should not be noticeable from the debugger.

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

8 years agollvm-objdump: extend __mh_execute_header handling to other special syms
Tim Northover [Thu, 14 Jul 2016 23:13:03 +0000 (23:13 +0000)]
llvm-objdump: extend __mh_execute_header handling to other special syms

We don't need to print any of the special __mh_*_header symbols when
disassembling. Since they point at the beginning of the segment (not where the
actual code is) they're pretty misleading.

Should also fix lld bots.

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

8 years ago[X86][AVX2] Allow VPERMPD/VPERMQ shuffles to call combineShuffle (reapplied)
Simon Pilgrim [Thu, 14 Jul 2016 23:05:09 +0000 (23:05 +0000)]
[X86][AVX2] Allow VPERMPD/VPERMQ shuffles to call combineShuffle (reapplied)

This improves the situation discussed in D19228 where we were forcing VPERMPD/VPERMQ where VPERM2F128/VPERM2I128 would have been better.

This was incorrectly reverted in rL275421 during triage of PR28552.

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

8 years ago[LoopDist] Fix typo in diagnostic
Adam Nemet [Thu, 14 Jul 2016 22:33:46 +0000 (22:33 +0000)]
[LoopDist] Fix typo in diagnostic

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

8 years agollvm-objdump: handle stubbed and malformed dylibs better
Tim Northover [Thu, 14 Jul 2016 22:13:32 +0000 (22:13 +0000)]
llvm-objdump: handle stubbed and malformed dylibs better

We were quite happy to read past the end of the valid section data when
disassembling. Instead we entirely skip stub dylibs, and tell the user what's
happened if their section only has partial data.

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

8 years ago[GVN] Fold constant expression in GVN.
Ekaterina Romanova [Thu, 14 Jul 2016 22:02:25 +0000 (22:02 +0000)]
[GVN] Fold constant expression in GVN.

Fix for PR 28418.

opt never finishes compiling a test when -gvn option is passed.
The problem is caused by the fact that GVN fails to fold a constant expression.

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

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

8 years agoMove legacy LTO interface headers to legacy/ directory.
Peter Collingbourne [Thu, 14 Jul 2016 21:21:16 +0000 (21:21 +0000)]
Move legacy LTO interface headers to legacy/ directory.

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

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

8 years ago[ThinLTO/gold] Perform index-based weak/linkonce resolution
Teresa Johnson [Thu, 14 Jul 2016 21:13:24 +0000 (21:13 +0000)]
[ThinLTO/gold] Perform index-based weak/linkonce resolution

Summary:
Invoke the weak/linkonce symbol resolution support (already used by
libLTO) that operates via the summary index.

This ensures prevailing linkonce are kept, by making them weak, and
marks preempted copies as available_externally when possible.

With this change, the older support for keeping the prevailing linkonce
(by changing their symbol resolution) is removed.

Reviewers: mehdi_amini

Subscribers: llvm-commits, mehdi_amini

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

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

8 years ago[LV] Rename StrideAccesses to AccessStrideInfo (NFC)
Matthew Simpson [Thu, 14 Jul 2016 21:05:08 +0000 (21:05 +0000)]
[LV] Rename StrideAccesses to AccessStrideInfo (NFC)

We now collect all accesses with a constant stride, not just the ones with a
stride greater than one. This change was requested in the review of D19984.

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

8 years ago[LV] Allow interleaved accesses in loops with predicated blocks
Matthew Simpson [Thu, 14 Jul 2016 20:59:47 +0000 (20:59 +0000)]
[LV] Allow interleaved accesses in loops with predicated blocks

This patch allows the formation of interleaved access groups in loops
containing predicated blocks. However, the predicated accesses are prevented
from forming groups.

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

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

8 years agodon't repeat function names in comments; NFC
Sanjay Patel [Thu, 14 Jul 2016 20:54:43 +0000 (20:54 +0000)]
don't repeat function names in comments; NFC

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

8 years ago[Object] Change Archive::findSym to return an Expected<Optional<Child>>.
Lang Hames [Thu, 14 Jul 2016 20:44:27 +0000 (20:44 +0000)]
[Object] Change Archive::findSym to return an Expected<Optional<Child>>.

As suggested by Rafael in review of D22079 - this was accidentally left out of
the final commit (r275316).

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

8 years ago[SCCP] Pass the Solver by reference, copies are expensive ...
Davide Italiano [Thu, 14 Jul 2016 20:25:54 +0000 (20:25 +0000)]
[SCCP] Pass the Solver by reference, copies are expensive ...

.. enough to cause LTO compile time to regress insanely.
Thanks *a lot* to Rafael for reporting the problem and testing
the fix!

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

8 years agoAdd recently added TargetOptions::EnableIPRA member to operator==
Mehdi Amini [Thu, 14 Jul 2016 20:22:13 +0000 (20:22 +0000)]
Add recently added TargetOptions::EnableIPRA member to operator==

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

8 years ago[ValueTracking] Use Instruction::getFunction; NFC
Sanjoy Das [Thu, 14 Jul 2016 20:19:01 +0000 (20:19 +0000)]
[ValueTracking] Use Instruction::getFunction; NFC

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

8 years agos/constexpr/LLVM_CONSTEXPR in AArch64InstrInfo.cpp.
Justin Lebar [Thu, 14 Jul 2016 20:08:23 +0000 (20:08 +0000)]
s/constexpr/LLVM_CONSTEXPR in AArch64InstrInfo.cpp.

Yet again.

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

8 years ago[Hexagon] Packetize function call arguments with tail call instructions
Krzysztof Parzyszek [Thu, 14 Jul 2016 19:30:55 +0000 (19:30 +0000)]
[Hexagon] Packetize function call arguments with tail call instructions

On Hexagon is it legal to packetize the instructions setting up call
arguments with the call instruction itself. This was already done,
except for tail calls. Make sure tail calls are handled as well.

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

8 years ago[AArch64] Adjust the scheduling model for Exynos-M1.
Evandro Menezes [Thu, 14 Jul 2016 19:25:46 +0000 (19:25 +0000)]
[AArch64] Adjust the scheduling model for Exynos-M1.

Enable use-postra-scheduler. (NFC)

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

8 years ago[JumpThreading] PRE unordered loads
Sanjoy Das [Thu, 14 Jul 2016 19:21:15 +0000 (19:21 +0000)]
[JumpThreading] PRE unordered loads

Summary: Extend JumpThreading's PRE to unordered atomic loads.

Reviewers: hfinkel, reames

Subscribers: mcrosier, llvm-commits

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

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

8 years agoAdd debugging code to the packetizer
Krzysztof Parzyszek [Thu, 14 Jul 2016 19:04:26 +0000 (19:04 +0000)]
Add debugging code to the packetizer

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

8 years ago[PM] Port Dead Loop Deletion Pass to the new PM
Jun Bum Lim [Thu, 14 Jul 2016 18:28:29 +0000 (18:28 +0000)]
[PM] Port Dead Loop Deletion Pass to the new PM

Summary: Port Dead Loop Deletion Pass to the new pass manager.

Reviewers: silvas, davide

Subscribers: llvm-commits, sanjoy, mcrosier

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

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

8 years ago[CodeGen] Refactor MachineMemOperand::Flags's target-specific flags.
Justin Lebar [Thu, 14 Jul 2016 18:15:20 +0000 (18:15 +0000)]
[CodeGen] Refactor MachineMemOperand::Flags's target-specific flags.

Summary:
Make the target-specific flags in MachineMemOperand::Flags real, bona
fide enum values.  This simplifies users, prevents various constants
from going out of sync, and avoids the false sense of security provided
by declaring static members in classes and then forgetting to define
them inside of cpp files.

Reviewers: MatzeB

Subscribers: llvm-commits

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

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

8 years agoTableGen: Fix a confusing use of both i and I as variables. NFC
Justin Bogner [Thu, 14 Jul 2016 18:08:33 +0000 (18:08 +0000)]
TableGen: Fix a confusing use of both i and I as variables. NFC

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

8 years ago[sanitizer-coverage] make sure that calls to __sanitizer_cov_trace_pc are not merged...
Kostya Serebryany [Thu, 14 Jul 2016 17:59:01 +0000 (17:59 +0000)]
[sanitizer-coverage] make sure that calls to __sanitizer_cov_trace_pc are not merged (otherwise different calls get the same PC and confuse fuzzers)

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

8 years ago[X86][MC] Fix bracket expression parsing in intel-style assembly.
Nirav Dave [Thu, 14 Jul 2016 17:37:05 +0000 (17:37 +0000)]
[X86][MC] Fix bracket expression parsing in intel-style assembly.

Only perform struct field check on Identifier tokens.

Fixes PR28547.

Reviewers: rnk

Subscribers: llvm-commits

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

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

8 years ago[GlobalISel] Fix G_OR opcode after the addition of a TargetOpcode.
Ahmed Bougacha [Thu, 14 Jul 2016 17:29:49 +0000 (17:29 +0000)]
[GlobalISel] Fix G_OR opcode after the addition of a TargetOpcode.

r275367 fixed G_ADD and G_BR, but not G_OR.

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

8 years ago[CodeGen] Simplify reg bank/class union is+get into dyn_cast. NFC.
Ahmed Bougacha [Thu, 14 Jul 2016 17:29:46 +0000 (17:29 +0000)]
[CodeGen] Simplify reg bank/class union is+get into dyn_cast. NFC.

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

8 years agoX86: handle external tail calls in Windows JIT
Saleem Abdulrasool [Thu, 14 Jul 2016 17:27:06 +0000 (17:27 +0000)]
X86: handle external tail calls in Windows JIT

If there was a tail call, we would incorrectly handle the relocation.  It would
end up indexing into the array with an incorrect section id.  The symbol was
external to the module, so the Section ID was UNDEFINED (-1).  We would then
index the SmallVector with this ID, triggering an assertion.  Use the Value
rather than the section load address in this case.

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

8 years ago[CodeGen] s/constexpr/LLVM_CONSTEXPR/ in MachineMemOperand.h.
Justin Lebar [Thu, 14 Jul 2016 17:16:40 +0000 (17:16 +0000)]
[CodeGen] s/constexpr/LLVM_CONSTEXPR/ in MachineMemOperand.h.

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

8 years agoauto-generate checks
Sanjay Patel [Thu, 14 Jul 2016 17:07:55 +0000 (17:07 +0000)]
auto-generate checks

Note: I removed the checks after each jump because that's noise, but we apparently
need branches rather than returning i1 to see the bt codegen in some cases.

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

8 years ago[CodeGen] Refactor MachineMemOperand's Flags enum.
Justin Lebar [Thu, 14 Jul 2016 17:07:44 +0000 (17:07 +0000)]
[CodeGen] Refactor MachineMemOperand's Flags enum.

Summary:
- Give it a shorter name (because we're going to refer to it often from
  SelectionDAG and friends).

- Split the flags and alignment into separate variables.

- Specialize FlagsEnumTraits for it, so we can do bitwise ops on it
  without losing type information.

- Make some enum values constants in MachineMemOperand instead.
  MOMaxBits should not be a valid Flag.

- Simplify some of the bitwise ops for dealing with Flags.

Reviewers: chandlerc

Subscribers: llvm-commits

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

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

8 years agoARM: fix vmov.i64 immediate validity check
Tim Northover [Thu, 14 Jul 2016 17:04:34 +0000 (17:04 +0000)]
ARM: fix vmov.i64 immediate validity check

Typo meant we were only checking the low byte (repeatedly).

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

8 years agoGlobalsAA: Functions with the argmemonly attribute won't read arbitrary globals
Tom Stellard [Thu, 14 Jul 2016 15:50:27 +0000 (15:50 +0000)]
GlobalsAA: Functions with the argmemonly attribute won't read arbitrary globals

Summary:
In preparation for changing GlobalsAA to stop assuming that intrinsics
can't read arbitrary globals, we need to make sure GlobalsAA is querying
function attributes rather than relying on this assumption.

This patch was inspired by: http://reviews.llvm.org/D20206

Reviewers: jmolloy, hfinkel

Subscribers: eli.friedman, llvm-commits

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

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

8 years agoDon't optimize movs to pushes in -O0 builds.
Nico Weber [Thu, 14 Jul 2016 15:40:22 +0000 (15:40 +0000)]
Don't optimize movs to pushes in -O0 builds.

https://reviews.llvm.org/D22362

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

8 years agoDelete some trailing whitespace.
Nico Weber [Thu, 14 Jul 2016 15:07:44 +0000 (15:07 +0000)]
Delete some trailing whitespace.

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

8 years ago[X86] Decode MPX BND registers.
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:21 +0000 (14:53 +0000)]
[X86] Decode MPX BND registers.

We were able to assemble, but not disassemble.

Note that fixupRMValue was truncating EA_REG_BND0-3 because we hit
the uint8_t max.  The control registers were already squarely above
it, but I don't think they ever go in .r/m, only in .reg.

I also did notice an extra REX.W in our encoding, but I think that's
fine.

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

8 years ago[X86] Don't mark addressing mode operands as "outs". NFC-ish.
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:17 +0000 (14:53 +0000)]
[X86] Don't mark addressing mode operands as "outs". NFC-ish.

Nothing in-tree can tell the difference, but it's incorrect: the
addressing mode registers aren't what's defined.

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

8 years ago[TableGen] Autobrief-ize Record. NFC.
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:14 +0000 (14:53 +0000)]
[TableGen] Autobrief-ize Record. NFC.

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

8 years ago[TableGen] Cleanup Record comments. NFC.
Ahmed Bougacha [Thu, 14 Jul 2016 14:53:11 +0000 (14:53 +0000)]
[TableGen] Cleanup Record comments. NFC.

LLVM doesn't use exceptions anymore.
Also remove the implementation comments. Some of them diverged.

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

8 years ago[GlobalISel] Fix #include ordering/spacing. NFC.
Ahmed Bougacha [Thu, 14 Jul 2016 14:52:55 +0000 (14:52 +0000)]
[GlobalISel] Fix #include ordering/spacing. NFC.

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

8 years ago[AMDGPU] Assembler: fix row_bcast parsing
Sam Kolton [Thu, 14 Jul 2016 14:50:35 +0000 (14:50 +0000)]
[AMDGPU] Assembler: fix row_bcast parsing

Summary: This change fix bug 28538

Reviewers: tstellarAMD, vpykhtin

Subscribers: arsenm, kzhuravl

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

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

8 years agoRevert r275411, it cause PR28552.
Nico Weber [Thu, 14 Jul 2016 14:49:35 +0000 (14:49 +0000)]
Revert r275411, it cause PR28552.

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

8 years agoRevert r275401, it caused PR28551.
Nico Weber [Thu, 14 Jul 2016 14:41:25 +0000 (14:41 +0000)]
Revert r275401, it caused PR28551.

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

8 years ago[LV] Avoid unnecessary IV scalar-to-vector-to-scalar conversions
Matthew Simpson [Thu, 14 Jul 2016 14:36:06 +0000 (14:36 +0000)]
[LV] Avoid unnecessary IV scalar-to-vector-to-scalar conversions

This patch prevents increases in the number of instructions, pre-instcombine,
due to induction variable scalarization. An increase in instructions can lead
to an increase in the compile-time required to simplify the induction
variables. We now maintain a new map for scalarized induction variables to
prevent us from converting between the scalar and vector forms.

This patch should resolve compile-time regressions seen after r274627.

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

8 years agoTeach fast isel calls and rets about stdcall.
Nico Weber [Thu, 14 Jul 2016 13:54:26 +0000 (13:54 +0000)]
Teach fast isel calls and rets about stdcall.

stdcall is callee-pop like thiscall, so the thiscall changes already did most
of the work for this.  This change only opts stdcall in and adds tests.

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