Commit Graph

1121 Commits

Author SHA1 Message Date
Tobias Grosser 6a4d3f7472 Fix formatting
llvm-svn: 216844
2014-08-31 16:21:20 +00:00
Tobias Grosser 566ad58fe0 Introduce a typedef for the IDToValue type
llvm-svn: 216843
2014-08-31 16:21:12 +00:00
Tobias Grosser 1fee67d6f8 Use range based for loops
llvm-svn: 216842
2014-08-31 16:10:31 +00:00
Tobias Grosser e7e33ba13a Always pipe in test files
In Polly we used to have a mix of test cases, some that used 'opt %s' and others
that used 'opt < %s'. We now change all to use 'opt < %s'. Piping in test files
is preferable as it does prevent temporary files to be written to disk. This
brings us in line with what is usus in LLVM.

llvm-svn: 216816
2014-08-30 09:15:04 +00:00
Tobias Grosser 2faa569c0a Replace %defaultOpts with explicit pass names
This replaces the use of %defaultOpts = '-basicaa -polly-prepare' with the
minimal set of passes necessary for a test to succeed. Of the test cases that
previously used %defaultOpts 76 test cases require none of these passes, 42
need -basicaa and only 2 need -polly-prepare. Our change makes this requirement
explicit.

In Polly many test cases have been using a macro '%defaultOpts' which run a
couple of preparing passes before the actual Polly test case. This macro was
introduced very early in the development of Polly and originally contained a
large set of canonicalization passes.  However, as the need for additional
canonicalization passes makes test cases harder to understand and also more
fragile in terms of changes in such passes, we aim since a longer time to only
include the minimal set of passes necessary. This patch removes the last
leftovers from of %defaultOpts and brings our tests cases more in line to what
is usus in LLVM itself.

llvm-svn: 216815
2014-08-30 09:13:28 +00:00
Rafael Espindola ac27f730d7 Update for LLVM api change
llvm-svn: 216394
2014-08-25 18:16:52 +00:00
Johannes Doerfert 495dd053ed [Fix] isl usage errors in ScheduleOptimizer
llvm-svn: 216084
2014-08-20 17:15:34 +00:00
Johannes Doerfert 9e7b17b0d4 Added arcanist linters and cleaned errors and warnings
Arcanist (arc) will now always run linters before uploading any new
  commit to Phabricator. All errors/warnings (or their absence) will be
  shown in the web interface together with a explanation by the commiter
  (arcanist will ask the commiter if the build was not clean).

  The linters include:
    - clang-format
    - spelling check
    - permissions check (aka. chmod)
    - filename check
    - merge conflict marker check
  Note, that their scope is sometimes limited (see .arclint for
  details).

  This commit also fixes all errors and warnings these linters reported,
  namely:
    - spelling mistakes and typos
    - executable permissions for various text files

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

llvm-svn: 215871
2014-08-18 00:40:13 +00:00
Andreas Simbuerger 6bf77979e0 Diagnostic: Provide end-user message for non-affine loop bound errors
llvm-svn: 215832
2014-08-17 10:09:15 +00:00
Andreas Simbuerger d46b935267 Diagnostic: Provide end-user message for non-affine access function errors
llvm-svn: 215831
2014-08-17 10:09:11 +00:00
Andreas Simbuerger f29f625748 Diagnostic: Provide end-user message for aliasing errors
This will spill out information about LLVM-internals. However, in cases
where the name of the Value matches the name of the array in the source,
we provide more useful information. In cases where we spill internals,
the information still might help the user to pin down the correct
arrays.
The problem we face here is: The error is pinned to the debug location
of one of the offending values out of the alias set instead of all of them.

The more information we give the user about the set of aliasing
pointers the better.

llvm-svn: 215830
2014-08-17 10:09:07 +00:00
Andreas Simbuerger 3efe40b8d3 Diagnostic: Enable error tracking by default
llvm-svn: 215829
2014-08-17 10:09:03 +00:00
Tobias Grosser 2873594709 Revert "[Refactor] Cleanup runtime code generation"
This reverts commit 215466 (and 215528, a trivial formatting fix).

The intention of these commits is a good one, but unfortunately they broke
our LNT buildbot:

http://lab.llvm.org:8011/builders/perf-x86_64-penryn-O3-polly-codegen-isl

Several of the cleanup changes that have been combined in this 'fixup' are
trivial and could probably be committed as obvious changes without risking to
break the build. The remaining changes are little and it should be easy to
figure out what went wrong.

llvm-svn: 215817
2014-08-16 09:09:15 +00:00
Tobias Grosser f4daf34496 Revert "Added support for modulo expressions"
This reverts commit 215684. The intention of the commit is great, but
unfortunately it seems to be the cause of 14 LNT test suite failures:

http://lab.llvm.org:8011/builders/perf-x86_64-penryn-O3-polly/builds/116

To make our buildbots and performance testers green until this issue is solved,
we temporarily revert this commit.

llvm-svn: 215816
2014-08-16 09:08:55 +00:00
Johannes Doerfert 5130c849aa Added support for modulo expressions
The support is limited to signed modulo access and condition
  expressions with a constant right hand side, e.g., A[i % 2] or
  A[i % 9]. Test cases are modified according to this new feature and
  new test cases are added.

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

llvm-svn: 215684
2014-08-15 01:14:11 +00:00
Andreas Simbuerger 57b469f842 Add print method to RejectLog
llvm-svn: 215627
2014-08-14 08:53:18 +00:00
Andreas Simbuerger ded7fa4439 Cleanup RejectLog code
llvm-svn: 215626
2014-08-14 08:53:15 +00:00
Andreas Simbuerger 05ae147d25 Use a snapshot of the aliasing pointers
Store the llvm::Value pointers of the AliasSet instead of the AliasSet
itself.

We have to be careful about changed IR when the message is generated,
because the Value pointers might not exist anymore. This would render
the Diagnostic invalid. For now we just assert there.

Simply do not retreive a diagnostic message after the IR has changed
it's not valid information anyway.

llvm-svn: 215625
2014-08-14 08:53:12 +00:00
Andreas Simbuerger b0af06f580 Do not assert when trying to replace the log with another log
This usually happens when TempScopInfo calls isMaxRegionInScop(..),
so don't fail there.

llvm-svn: 215624
2014-08-14 08:53:09 +00:00
Andreas Simbuerger 730b01d88e Revert to heuristical DebugLoc finding
llvm-svn: 215623
2014-08-14 08:53:06 +00:00
Tobias Grosser b5c440f33f Fix formatting
llvm-svn: 215570
2014-08-13 19:39:08 +00:00
Johannes Doerfert 5aa2194ea5 [Polly] Remove the PoCC and ScopLib support
Remove the PoCC and ScopLib support from Polly as we do not have a
  user/maintainer for it.

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

llvm-svn: 215563
2014-08-13 17:49:16 +00:00
Tobias Grosser 5b1a04426b Fix formatting
llvm-svn: 215528
2014-08-13 08:38:34 +00:00
Johannes Doerfert 9744c4af16 [Refactor] Cleanup runtime code generation
+ Use regexp in two test case.
  + Refactor the runtime condition build function

llvm-svn: 215466
2014-08-12 18:35:54 +00:00
Johannes Doerfert fab63f7791 [Minor] Change the number of cut lines for new tests
This should cut all metadata community clang produces.

llvm-svn: 215422
2014-08-12 03:31:23 +00:00
Johannes Doerfert 13c8cf2544 [Refactor] Remove const keyword from access instruction
llvm-svn: 215309
2014-08-10 08:09:38 +00:00
Johannes Doerfert e87be8f08d Add an arcconfig for Polly
Differential Revision: http://reviews.llvm.org/D4840

llvm-svn: 215308
2014-08-10 07:49:34 +00:00
Johannes Doerfert 4e676ab752 Add myself to the credits
llvm-svn: 215307
2014-08-10 03:37:29 +00:00
Johannes Doerfert c5129d85e2 [Fix] Broken build after r215121
llvm-svn: 215183
2014-08-08 04:23:13 +00:00
Johannes Doerfert 2ef3f4fd23 Make used analysis passes explicit
Use the explicit analysis if possible, only for splitBlock we will continue
  to use the Pass * argument. This change allows us to remove the getAnalysis
  calls from the code generation.

llvm-svn: 215121
2014-08-07 17:14:54 +00:00
Tobias Grosser f57d63f906 Do allow negative offsets in the outermost array dimension
There is no needed for neither 1-dimensional nor higher dimensional arrays to
require positive offsets in the outermost array dimension.

We originally introduced this assumption with the support for delinearizing
multi-dimensional arrays.

llvm-svn: 214665
2014-08-03 21:07:30 +00:00
Johannes Doerfert a63b2579c6 Fix the modifiable access creation
+ Remove the class IslGenerator which duplicates the functionality of
    IslExprBuilder.
  + Use the IslExprBuilder to create code for memory access relations.
    + Also handle array types during access creation.
  + Enable scev codegen for one of the transformed memory access tests,
    thus access creation without canonical induction variables available.
  + Update one test case to the new output.

llvm-svn: 214659
2014-08-03 01:51:59 +00:00
Johannes Doerfert ed87831113 Allow the IslExprBuilder to generate access operations
llvm-svn: 214658
2014-08-03 01:50:50 +00:00
Johannes Doerfert b5d1c322f2 Update the jscop tests and port them to isl codegen.
The updated tests use a different context than the old ones did.
  Other than that only their path and the code generation we use
  changed.

llvm-svn: 214657
2014-08-03 01:48:49 +00:00
Tobias Grosser 8c112d838c Mark a GPGPU test case as XFAIL
This area of code is currently not very much tested. It will hopefully be
superseeded by Yabin's GSoC project.

llvm-svn: 214633
2014-08-02 13:37:32 +00:00
Tobias Grosser 5b5fd4e27c No need to run -mem2reg twice
llvm-svn: 214632
2014-08-02 13:37:25 +00:00
Johannes Doerfert 675e6bc43b [Format] Remove blank line in Dependences.h
llvm-svn: 214492
2014-08-01 08:44:49 +00:00
Johannes Doerfert b41344a88f [Fix] Annotate the IslAst with broken reductions (Missing files)
+ test cases of r214489.

llvm-svn: 214491
2014-08-01 08:20:26 +00:00
Johannes Doerfert 6f1ee8bec1 [Typo] Added dot at the end of a sentence.
llvm-svn: 214490
2014-08-01 08:18:39 +00:00
Johannes Doerfert dc6ad99aad Annotate the IslAst with broken reductions
+ Split all reduction dependences and map them to the causing memory accesses.
  + Print the types & base addresses of broken reductions for each "reduction
    parallel" marked loop (OpenMP style).
  + 3 test cases to show how reductions are now represented in the isl ast.

  The mapping "(ast) loops -> broken reductions" is also needed to find the
  memory accesses we need to privatize in a loop.

llvm-svn: 214489
2014-08-01 08:17:19 +00:00
Johannes Doerfert ed67f8baf6 Change the semantics of is*Parallel
The functions isParallel, isInnermostParallel and IsOutermostParallel in
  IslAstInfo will now return true even in the presence of broken reductions.
  To compensate for this change the negated result of isReductionParallel can
  be used.

llvm-svn: 214488
2014-08-01 08:14:28 +00:00
Johannes Doerfert 32868bf4c3 Change the printing of reduction types
We use the C operator representation when applicable.

  + Update all the test cases accordingly.

llvm-svn: 214486
2014-08-01 08:13:25 +00:00
Johannes Doerfert 99f6630c82 [Refactor] Remove unecessary check and function
+ Perform the parallelism check on the innermost loop only once.
  + Inline the markOpenmpParallel function.
  + Rename all IslAstUserPayload * into Payload to make it consistent.

llvm-svn: 214448
2014-07-31 21:34:32 +00:00
Johannes Doerfert 0eefb0258f [Refactor] Use nicer print callback function in IslAst
llvm-svn: 214447
2014-07-31 21:33:49 +00:00
Rafael Espindola 08dfd8f25f Update for llvm change.
llvm-svn: 214358
2014-07-30 23:17:15 +00:00
Johannes Doerfert 13c5c64b5d [Refactor] Expose the IslExprBuilder (missing files)
llvm-svn: 214220
2014-07-29 21:06:08 +00:00
Johannes Doerfert 48cf6ecbb1 [Refactor] Expose the IslExprBuilder
This allows us to use to IslExprBuilder not only from within
  IslCodegeneration.

llvm-svn: 214215
2014-07-29 20:50:09 +00:00
Tobias Grosser 924e9e0226 IslAst: Enhance parallelism detection test
Add more check lines to ensure we do not accidentally generate nested openmp
parallel annotations.

llvm-svn: 214200
2014-07-29 19:22:46 +00:00
Johannes Doerfert a261bbc50f [Refactor] Adjust some comments
llvm-svn: 214171
2014-07-29 09:16:55 +00:00
Johannes Doerfert 47b906c815 Assume no annotations when visiting new domain (IslAst)
Whe we build the IslAst we visit for nodes (in pre and post order) as well as
  user/domain nodes. As these two sets are non overlapping we do not need to
  check if we annotated a node earlier when we visit it.

llvm-svn: 214170
2014-07-29 08:59:56 +00:00