Skip to content
  1. Sep 27, 2015
    • Johannes Doerfert's avatar
      [NFC] Consistenly use commented and annotated ScopPass functions · 45be6446
      Johannes Doerfert authored
        The changes affect methods that are part of the Pass interface and
        include:
          - Comments that describe the methods purpose.
          - A consistent use of the keywords override and virtual.
        Additionally, the printScop method is now optional and removed from
        SCoP passes that do not implement it.
      
      llvm-svn: 248685
      45be6446
  2. Sep 05, 2015
    • Tobias Grosser's avatar
      Allow the import of multi-dimensional access functions · 6f730085
      Tobias Grosser authored
      Originally, we disallowed the import of multi-dimensional access functions due
      to our code generation not supporting the generation of new address expressions
      for multi-dimensional memory accesses. When building our run-time alias check
      infrastructure we added code generation support for multi-dimensional address
      calculations.  Hence, we can now savely allow the import of new
      multi-dimensional access functions.
      
      llvm-svn: 246917
      6f730085
  3. Jul 14, 2015
    • Tobias Grosser's avatar
      Use schedule trees to represent execution order of statements · 808cd69a
      Tobias Grosser authored
      Instead of flat schedules, we now use so-called schedule trees to represent the
      execution order of the statements in a SCoP. Schedule trees make it a lot easier
      to analyze, understand and modify properties of a schedule, as specific nodes
      in the tree can be choosen and possibly replaced.
      
      This patch does not yet fully move our DependenceInfo pass to schedule trees,
      as some additional performance analysis is needed here. (In general schedule
      trees should be faster in compile-time, as the more structured representation
      is generally easier to analyze and work with). We also can not yet perform the
      reduction analysis on schedule trees.
      
      For more information regarding schedule trees, please see Section 6 of
      https://lirias.kuleuven.be/handle/123456789/497238
      
      llvm-svn: 242130
      808cd69a
  4. Jun 04, 2015
    • Tobias Grosser's avatar
      Ensure memory access mappings are defined for full domain · 5cf78607
      Tobias Grosser authored
      We now verify that memory access functions imported via JSON are indeed defined
      for the full iteration domain. Before this change we accidentally imported
      memory mappings such as i -> i / 127, which only defined a mapped for values of
      i that are evenly divisible by 127, but which did not define any mapping for the
      remaining values, with the result that isl just generated an access expression
      that had undefined behavior for all the unmapped values.
      
      In the incorrect test cases, we now either use floor(i/127) or we use p/127 and
      provide the information that p is indeed a multiple of 127.
      
      llvm-svn: 239024
      5cf78607
  5. May 27, 2015
    • Tobias Grosser's avatar
      Use value semantics for list of ScopStmt(s) instead of std::owningptr · 7c3bad52
      Tobias Grosser authored
      David Blaike suggested this as an alternative to the use of owningptr(s) for our
      memory management, as value semantics allow to avoid the additional interface
      complexity caused by owningptr while still providing similar memory consistency
      guarantees. We could also have used a std::vector, but the use of std::vector
      would yield possibly changing pointers which currently causes problems as for
      example the memory accesses carry pointers to their parent statements. Such
      pointers should not change.
      
      Reviewer: jblaikie, jdoerfert
      
      Differential Revision: http://reviews.llvm.org/D10041
      
      llvm-svn: 238290
      7c3bad52
  6. May 23, 2015
  7. May 09, 2015
    • Tobias Grosser's avatar
      Sort include directives · ba0d0922
      Tobias Grosser authored
      Upcoming revisions of isl require us to include header files explicitly, which
      have previously been already transitively included. Before we add them, we sort
      the existing includes.
      
      Thanks to Chandler for sort_includes.py. A simple, but very convenient script.
      
      llvm-svn: 236930
      ba0d0922
  8. May 03, 2015
    • Tobias Grosser's avatar
      Adding debug location information to Polly's JSCOP and dot exports · a63b7cee
      Tobias Grosser authored
      This change adds location information for the detected regions in Polly when the
      required debug information is available.
      
      The JSCOP output format is extended with a "location" field which contains the
      information in the format "source.c:start-end"
      
      The dot output is extended to contain the location information for each nested
      region in the analyzed function.
      
      As part of this change, the existing getDebugLocation function has been moved
      into lib/Support/ScopLocation.cpp to avoid having to include
      polly/ScopDetectionDiagnostics.h.
      
      Differential Revision: http://reviews.llvm.org/D9431
      
      
      
      Contributed-by: default avatarRoal Jordans <r.jordans@tue.nl>
      llvm-svn: 236393
      a63b7cee
  9. Apr 23, 2015
    • Tobias Grosser's avatar
      JScoP Import/Export: Ensure parameters have the same isl_id · 2165de88
      Tobias Grosser authored
      When reading parameters from a JSON file parameters with identical names
      may be related to different isl_ids, which then causes isl to treat them
      as differnet objects. This does not cause issues at the moment, but has
      shown problematic in subsequent schedule tree changes.
      
      This commit will be tested by the following changes.
      
      llvm-svn: 235588
      2165de88
  10. Apr 21, 2015
    • Tobias Grosser's avatar
      Rename 'scattering' to 'schedule' · 54839311
      Tobias Grosser authored
      In Polly we used both the term 'scattering' and the term 'schedule' to describe
      the execution order of a statement without actually distinguishing between them.
      We now uniformly use the term 'schedule' for the execution order.  This
      corresponds to the terminology of isl.
      
      History: CLooG introduced the term scattering as the generated code can be used
      as a sequential execution order (schedule) or as a parallel dimension
      enumerating different threads of execution (placement). In Polly and/or isl the
      term placement was never used, but we uniformly refer to an execution order as a
      schedule and only later introduce parallelism. When doing so we do not talk
      about about specific placement dimensions.
      
      llvm-svn: 235380
      54839311
  11. Mar 26, 2015
  12. Mar 05, 2015
  13. Mar 04, 2015
    • Johannes Doerfert's avatar
      Rename the Dependences pass to DependenceInfo [NFC] · f6557f98
      Johannes Doerfert authored
        We rename the Dependences pass to DependenceInfo as a first step to a
        caching pass policy. The new DependenceInfo pass will later provide
        "Dependences" for a SCoP.
      
        To keep consistency the test folder is renamed too.
      
      llvm-svn: 231308
      f6557f98
  14. Mar 01, 2015
  15. Oct 13, 2014
    • Johannes Doerfert's avatar
      [Refactor][NfC] Simplify and clean the handling of (new) access relations · a99130f0
      Johannes Doerfert authored
        This patch does not change the semantic on it's own. However, the
        dependence analysis as well as dce will now use the newest available
        access relation for each memory access, thus if at some point the json
        importer or any other pass will run before those two and set a new
        access relation the behaviour will be different. In general it is
        unclear if the dependence analysis and dce should be run on the old or
        new access functions anyway. If we need to access the original access
        function from the outside later, we can expose the getter again.
      
      Differential Revision: http://reviews.llvm.org/D5707
      
      llvm-svn: 219612
      a99130f0
  16. Oct 10, 2014
  17. Oct 05, 2014
    • Johannes Doerfert's avatar
      Introduce the ScopArrayInfo class. · 1a28a893
      Johannes Doerfert authored
        This class allows to store information about the arrays in the SCoP.
        For each base pointer in the SCoP one object is created storing the
        type and dimension sizes of the array. The objects can be obtained via
        the SCoP, a MemoryAccess or the isl_id associated with the output
        dimension of a MemoryAccess (the description of what is accessed).
      
        So far we use the information in the IslExprBuilder to create the
        right base type before indexing into the base array. This fixes the
        bug http://llvm.org/bugs/show_bug.cgi?id=21113 (both test cases are
        included). On top of that we can now build runtime alias checks for
        delinearized arrays as the dimension sizes are also part of the
        ScopArrayInfo objects.
      
      Differential Revision: http://reviews.llvm.org/D5613
      
      llvm-svn: 219077
      1a28a893
  18. Oct 02, 2014
  19. Aug 25, 2014
  20. Jul 09, 2014
  21. Jul 06, 2014
  22. Jun 13, 2014
  23. Jun 12, 2014
  24. May 19, 2014
    • Saleem Abdulrasool's avatar
      polly: update for LLVM API change · e653622b
      Saleem Abdulrasool authored
      SVN r209103 removed the OwningPtr variant of the MemoryBuffer APIs.  Switch to
      the equivalent std::unique_ptr versions.  This should clear up the build bots.
      
      llvm-svn: 209104
      e653622b
  25. Apr 30, 2014
  26. Apr 22, 2014
  27. Feb 24, 2014
  28. Jan 09, 2014
  29. Jan 07, 2014
  30. Jul 29, 2013
  31. Jul 13, 2013
  32. Jun 23, 2013
  33. May 07, 2013
    • Tobias Grosser's avatar
      Sort includes · 83628182
      Tobias Grosser authored
      llvm-svn: 181297
      83628182
    • Tobias Grosser's avatar
      Move polly options into separate option category · 637bd631
      Tobias Grosser authored
      Use the new cl::OptionCategory support to move the Polly options into a separate
      option category. The aim is to hide most options and show by default only the
      options a user needs to influence '-O3 -polly'. The available options probably
      need some care, but here is the current status:
      
      Polly Options:
      Configure the polly loop optimizer
      
        -enable-polly-openmp              - Generate OpenMP parallel code
        -polly                            - Enable the polly optimizer (only at -O3)
        -polly-no-tiling                  - Disable tiling in the scheduler
        -polly-only-func=<function-name>  - Only run on a single function
        -polly-report                     - Print information about the activities
                                            of Polly
        -polly-vectorizer                 - Select the vectorization strategy
          =none                           -   No Vectorization
          =polly                          -   Polly internal vectorizer
          =unroll-only                    -   Only grouped unroll the vectorize
                                              candidate loops
          =bb                             -   The Basic Block vectorizer driven by
                                              Polly
      
      llvm-svn: 181295
      637bd631
    • Tobias Grosser's avatar
      Reformat with clang-format · e602a076
      Tobias Grosser authored
      clang-format become way more stable. This time we mainly reformat function
      signatures.
      
      llvm-svn: 181294
      e602a076
Loading