Skip to content
  1. Jul 23, 2016
  2. Jul 22, 2016
    • Michael Kuperstein's avatar
      [SLPVectorizer] Vectorize reverse-order loads in horizontal reductions · 38e72980
      Michael Kuperstein authored
      When vectorizing a tree rooted at a store bundle, we currently try to sort the
      stores before building the tree, so that the stores can be vectorized. For other
      trees, the order of the root bundle - which determines the order of all other
      bundles - is arbitrary. That is bad, since if a leaf bundle of consecutive loads
      happens to appear in the wrong order, we will not vectorize it.
      
      This is partially mitigated when the root is a binary operator, by trying to
      build a "reversed" tree when that's considered profitable. This patch extends the
      workaround we have for binops to trees rooted in a horizontal reduction.
      
      This fixes PR28474.
      
      Differential Revision: https://reviews.llvm.org/D22554
      
      llvm-svn: 276477
      38e72980
    • Anna Thomas's avatar
      Add invariant start call creation in IRBuilder.NFC · 58d1192a
      Anna Thomas authored
      Differential Revision: https://reviews.llvm.org/D22700
      
      llvm-svn: 276471
      58d1192a
    • Pete Cooper's avatar
      Use RValue refs in APInt add/sub methods. · fea21397
      Pete Cooper authored
      This adds versions of operator + and - which are optimized for the LHS/RHS of the
      operator being RValue's.  When an RValue is available, we can use its storage space
      instead of allocating new space.
      
      On code such as ConstantRange which makes heavy use of APInt's over 64-bits in size,
      this results in significant numbers of saved allocations.
      
      Thanks to David Blaikie for all the review and most of the code here.
      
      llvm-svn: 276470
      fea21397
    • Sanjoy Das's avatar
      [SCEV] Extract out a helper function; NFC · 095f5b20
      Sanjoy Das authored
      The helper will get smarter in a later change, but right now this is
      just code reorganization.
      
      llvm-svn: 276467
      095f5b20
    • George Burgess IV's avatar
      Fix include case. NFC. · 8a457ddf
      George Burgess IV authored
      llvm-svn: 276465
      8a457ddf
    • Tim Northover's avatar
      GlobalISel: implement legalization pass, with just one transformation. · 33b07d67
      Tim Northover authored
      This adds the actual MachineLegalizeHelper to do the work and a trivial pass
      wrapper that legalizes all instructions in a MachineFunction. Currently the
      only transformation supported is splitting up a vector G_ADD into one acting on
      smaller vectors.
      
      llvm-svn: 276461
      33b07d67
    • Zachary Turner's avatar
      Make PDBFile store an msf::Layout. · e4a4f33d
      Zachary Turner authored
      Previously it was storing all the fields of an msf::Layout as
      separate members.  This is a trivial cleanup to make it store
      an msf::Layout directly.  This makes the code more readable
      since it becomes clear which fields of PDBFile are actually the
      msf specific layout information in a sea of other bookkeeping
      fields.
      
      llvm-svn: 276460
      e4a4f33d
    • Zachary Turner's avatar
      [pdb] Have builders share a single BumpPtrAllocator. · e109dc63
      Zachary Turner authored
      This makes it easier to have the writable and readable PDB
      interfaces share code since the read/write and write-only
      interfaces now share a single allocator, you don't have to worry
      about a builder building a read only interface and then having
      the read-only interface's data become corrupt when the builder
      goes out of scope.  Now the allocator is specified explicitly
      to all constructors, so all interfaces can share a single allocator
      that is scoped appropriately.
      
      llvm-svn: 276459
      e109dc63
    • Zachary Turner's avatar
      [msf] Create LLVMDebugInfoMsf · bac69d33
      Zachary Turner authored
      This provides a better layering of responsibilities among different
      aspects of PDB writing code.  Some of the MSF related code was
      contained in CodeView, and some was in PDB prior to this.  Further,
      we were often saying PDB when we meant MSF, and the two are
      actually independent of each other since in theory you can have
      other types of data besides PDB data in an MSF.  So, this patch
      separates the MSF specific code into its own library, with no
      dependencies on anything else, and DebugInfoCodeView and
      DebugInfoPDB take dependencies on DebugInfoMsf.
      
      llvm-svn: 276458
      bac69d33
    • Jun Bum Lim's avatar
      Recommit - [DSE]Enhance shorthening MemIntrinsic based on OverlapIntervals · 6a7dc5c4
      Jun Bum Lim authored
      Recommiting r275571 after fixing crash reported in PR28270.
      Now we erase elements of IOL in deleteDeadInstruction().
      
      Original 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.
      
      llvm-svn: 276452
      6a7dc5c4
    • Wei Mi's avatar
      [PM] Port BreakCriticalEdges to the new PM. · e04d0eff
      Wei Mi authored
      Differential Revision: https://reviews.llvm.org/D22688
      
      llvm-svn: 276449
      e04d0eff
    • Anna Thomas's avatar
      Invariant start/end intrinsics overloaded for address space · 0be4a0e6
      Anna Thomas authored
      Summary:
      The llvm.invariant.start and llvm.invariant.end intrinsics currently
      support specifying invariant memory objects only in the default address
      space.
      
      With this change, these intrinsics are overloaded for any adddress space
      for memory objects
      and we can use these llvm invariant intrinsics in non-default address
      spaces.
      
      Example: llvm.invariant.start.p1i8(i64 4, i8 addrspace(1)* %ptr)
      
      This overloaded intrinsic is needed for representing final or invariant
      memory in managed languages.
      
      Reviewers: apilipenko, reames
      
      Subscribers: llvm-commits
      llvm-svn: 276447
      0be4a0e6
    • Krzysztof Parzyszek's avatar
      [Hexagon] Make HexagonCodeGen depend on Scalar · 3c89bb09
      Krzysztof Parzyszek authored
      Hexagon backend uses LoopDataPrefetch pass that is defined in Scalar.
      
      llvm-svn: 276441
      3c89bb09
    • Matt Arsenault's avatar
      AMDGPU: Fix groupstaticsize for large LDS · 3c07c813
      Matt Arsenault authored
      The size can exceed s_movk_i32's limit, and we don't
      want to use it this early since it inhibits optimizations.
      
      This should probably be merged to the release branch.
      
      llvm-svn: 276438
      3c07c813
    • Matt Arsenault's avatar
      AMDGPU: Add HSA dispatch id intrinsic · 8d718dcf
      Matt Arsenault authored
      llvm-svn: 276437
      8d718dcf
    • Matt Arsenault's avatar
      AMDGPU: Delete more dead code · f9245b75
      Matt Arsenault authored
      Remove dead code from r600 intrinsic removal.
      Remove unset members, rename StackSize to be less ambiguous.
      
      llvm-svn: 276436
      f9245b75
    • Matt Arsenault's avatar
      AMDGPU: Fix i1 fp_to_int · 7fb961f3
      Matt Arsenault authored
      R600's i1 fp_to_uint selected but was incorrect according to
      what instcombine constant folds to.
      
      llvm-svn: 276435
      7fb961f3
    • Matt Arsenault's avatar
      AMDGPU: Don't reinvent transferSuccessorsAndUpdatePHIs · d40ded66
      Matt Arsenault authored
      llvm-svn: 276434
      d40ded66
    • Tim Northover's avatar
      GlobalISel: implement alloca instruction · bd505460
      Tim Northover authored
      llvm-svn: 276433
      bd505460
    • Simon Pilgrim's avatar
      [SelectionDAG] Optimization of BITREVERSE legalization for power-of-2 integer scalar/vector types · 820f87a7
      Simon Pilgrim authored
      An extension of D19978, this patch replaces the default BITREVERSE evaluation of individual bit masks+shifts with block mask+shifts when we have integer elements of power-of-2 bits in size.
      
      After calling BSWAP to reverse the order of the constituent bytes (which typically follows a similar approach), every neighbouring 4-bits, 2-bits and finally 1-bit pairs are masked off and swapped over with shifts.
      
      In doing so we can significantly reduce the number of operations required.
      
      Differential Revision: https://reviews.llvm.org/D21578
      
      llvm-svn: 276432
      820f87a7
    • Lang Hames's avatar
      [Support] Make ErrorAsOutParameter take an Error* rather than an Error&. · 5e51a2e3
      Lang Hames authored
      This allows ErrorAsOutParameter to work better with "optional" errors. For
      example, consider a function where for certain input values it is known that
      the function can't fail. This can now be written as:
      
      Result foo(Arg X, Error *Err) {
        ErrorAsOutParameter EAO(Err);
      
        if (<Error Condition>) {
          if (Err)
            *Err = <report error>;
          else
            llvm_unreachable("Unexpected failure!");
        }
      }
      
      Rather than having to construct an ErrorAsOutParameter under every conditional
      where Err is known to be non-null.
      
      llvm-svn: 276430
      5e51a2e3
    • Krzysztof Parzyszek's avatar
      [RDF] Make the graph construction/use less expensive · 047149f7
      Krzysztof Parzyszek authored
      - FuncNode::findBlock traverses the function every time. Avoid using it,
        and keep a cache of block addresses in DataFlowGraph instead.
      - The operator[] in the map of definition stacks was very slow. Replace
        the map with unordered_map.
      
      llvm-svn: 276429
      047149f7
    • Zachary Turner's avatar
      [pdb] Move file layout header structs to RawTypes.h · b383d628
      Zachary Turner authored
      This facilitates code reuse between the builder classes and the
      "frozen" read only versions of the classes used for parsing
      existing PDB files.
      
      llvm-svn: 276427
      b383d628
    • Zachary Turner's avatar
      [pdb] Round-trip module & file info to/from YAML. · d218c261
      Zachary Turner authored
      This implements support for writing compiland and compiland source
      file info to a binary PDB.  This is tested by adding support for
      dumping these fields from an existing PDB to yaml, reading them
      back in, and dumping them again and verifying the values are as
      expected.
      
      llvm-svn: 276426
      d218c261
    • Krzysztof Parzyszek's avatar
      [Hexagon] Use loop data prefetch on Hexagon · d3d0a4bd
      Krzysztof Parzyszek authored
      llvm-svn: 276422
      d3d0a4bd
    • Reid Kleckner's avatar
      Use INT64_MAX instead of LLONG_MAX · db10b500
      Reid Kleckner authored
      llvm-svn: 276419
      db10b500
    • Simon Pilgrim's avatar
      [X86][AVX] Added support for lowering to VBROADCASTF128/VBROADCASTI128 (reapplied) · ea0d4f99
      Simon Pilgrim authored
      As reported on PR26235, we don't currently make use of the VBROADCASTF128/VBROADCASTI128 instructions (or the AVX512 equivalents) to load+splat a 128-bit vector to both lanes of a 256-bit vector.
      
      This patch enables lowering from subvector insertion/concatenation patterns and auto-upgrades the llvm.x86.avx.vbroadcastf128.pd.256 / llvm.x86.avx.vbroadcastf128.ps.256 intrinsics to match.
      
      We could possibly investigate using VBROADCASTF128/VBROADCASTI128 to load repeated constants as well (similar to how we already do for scalar broadcasts).
      
      Reapplied with fix for PR28657 - removed intrinsic definitions (clang companion patch to be be submitted shortly).
      
      Differential Revision: https://reviews.llvm.org/D22460
      
      llvm-svn: 276416
      ea0d4f99
    • Ahmed Bougacha's avatar
      [FastISel] Ignore @llvm.assume. · 29333c9d
      Ahmed Bougacha authored
      llvm-svn: 276410
      29333c9d
Loading