Commit Graph

524 Commits

Author SHA1 Message Date
Tobias Grosser 29ee0b14d5 Do not use getNameStr() anymore.
Instead we switch to the recommended getName(). This fixes compilation with
recent versions of LLVM.

llvm-svn: 144909
2011-11-17 14:52:36 +00:00
Tobias Grosser 135c9c6534 autoconf: Specify that pollyanalysis depends on pollysupport
llvm-svn: 144908
2011-11-17 12:56:23 +00:00
Tobias Grosser edb8a2807a SCEVValidator: Fix coding standards in ValidatorResult
llvm-svn: 144907
2011-11-17 12:56:21 +00:00
Tobias Grosser fa043f00cd SCEVValidator: Make ValidatorResult a class and enforce the use of wproper accessors
llvm-svn: 144906
2011-11-17 12:56:19 +00:00
Tobias Grosser b1f07c5c0b SCEVValidator: Document SCEVType and ValidatorResult
Suggested by Sebastian Pop.

llvm-svn: 144905
2011-11-17 12:56:17 +00:00
Tobias Grosser bcc0a0d560 SCEVValidator: Restructure the logic of visitAddRecExpr
Suggested by Sebastian Pop.

llvm-svn: 144904
2011-11-17 12:56:14 +00:00
Tobias Grosser 2a7cd94215 SCEVValidator: Fix typo
llvm-svn: 144903
2011-11-17 12:56:12 +00:00
Tobias Grosser 7ffe4e8b0b Fix placement of the '*' that marks a pointer
Suggested by Sebastian Pop.

llvm-svn: 144902
2011-11-17 12:56:10 +00:00
Tobias Grosser 92a00f818a RegisterPasses: Avoid double negation
Fix suggested by Sebastian Pop.

llvm-svn: 144901
2011-11-17 12:56:06 +00:00
Tobias Grosser 6287201d6e ScheduleOptimizer: Start with an empty union_map and add elements
llvm-svn: 144900
2011-11-17 12:56:04 +00:00
Tobias Grosser 1ae9a60426 ScheduleOptimizer: Some style changes
- Use uppercase letters according to the LLVM coding style
- Rename functions to not include 'tiledSchedule', but just Schedule. This
  is more correct as tiling might be disabled.

llvm-svn: 144899
2011-11-17 12:56:03 +00:00
Tobias Grosser 79b30201d6 ScheduleOptimizer: Use early exit
Style fix, noted by Sebastian Pop.

llvm-svn: 144898
2011-11-17 12:56:00 +00:00
Tobias Grosser eb21b70d93 ScopLib: Fix export/import after parameters are now tagged with isl_ids.
llvm-svn: 144643
2011-11-15 11:39:02 +00:00
Tobias Grosser 626227462d JSONImporter: Fix parameter ids when importing new access functions
The new isl_id support for parmeters created problems when importing new
access functions. Even though the parameters had the same names,
they were mapped to different ids and where therefore incompatible.
We copy the ids now from the old parameter dimensions. This fixes the
problem.

llvm-svn: 144642
2011-11-15 11:38:59 +00:00
Tobias Grosser 8f99c167cd ScopInfo: Use names of simple parameters to name the isl parameter dimensions.
Parameters can be complex SCEV expressions, but they can also be single scalar
values. If a parameters is such a simple scalar value and the value is named,
use this name to name the isl parameter dimensions.

llvm-svn: 144641
2011-11-15 11:38:55 +00:00
Tobias Grosser 1fb76bd6f7 Cloog: Copy parameter names from isl data structures
llvm-svn: 144640
2011-11-15 11:38:47 +00:00
Tobias Grosser ff9b54d5a9 JScop: Allow to update the context
llvm-svn: 144639
2011-11-15 11:38:44 +00:00
Tobias Grosser ecf6cd06f0 Make JScop export/reimport accessible from clang
llvm-svn: 144638
2011-11-15 11:38:36 +00:00
Tobias Grosser 57398edf18 www: Remove link to LLVM for upper left corner. This confused a lot of people
llvm-svn: 144289
2011-11-10 14:01:53 +00:00
Tobias Grosser 7bf34585cb www: Add some news about Polly
llvm-svn: 144288
2011-11-10 14:00:04 +00:00
Tobias Grosser 5d73f4a39f www: Highlight command line flags
llvm-svn: 144287
2011-11-10 14:00:00 +00:00
Tobias Grosser fff5adca2e ScopDetection: Do not verify Aliasing
This does not work reliable and is probably not needed. I accidentally changed
this in this recent commit:

commit a0bcd63c6ffa81616cf8c6663a87588803f7d91c
Author: grosser <grosser@91177308-0d34-0410-b5e6-96231b3b80d8>
Date:   Thu Nov 10 12:47:21 2011 +0000

    ScopDetect: Use INVALID macro to fail in case of aliasing

    This simplifies the code and also makes the error message available to the
    graphviz scop viewer.

    git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@144284

llvm-svn: 144286
2011-11-10 13:21:43 +00:00
Tobias Grosser 60cd932536 ScopDetection: Add flag to ignore possible aliasing
llvm-svn: 144285
2011-11-10 12:47:26 +00:00
Tobias Grosser 6f24d9d9ee ScopDetect: Use INVALID macro to fail in case of aliasing
This simplifies the code and also makes the error message available to
the graphviz scop viewer.

llvm-svn: 144284
2011-11-10 12:47:21 +00:00
Tobias Grosser 4eb7381607 ScopDetect: Clean the last failure message properly
llvm-svn: 144283
2011-11-10 12:45:15 +00:00
Tobias Grosser a66fa6cf02 ScopDetection: Improve formatting of error message and simplify some code
llvm-svn: 144282
2011-11-10 12:45:11 +00:00
Tobias Grosser bef690f57f Add a workaround to fix SCoPs rejected because of 'region not simple'
llvm-svn: 144281
2011-11-10 12:45:07 +00:00
Tobias Grosser e5e171eadd Reuse the old BaseAddress checking in SCEVValidator to make sure that no base
address is part of the access function. Also remove unused special cases that
were necessery when the base address was still contained in the access function

llvm-svn: 144280
2011-11-10 12:45:03 +00:00
Tobias Grosser 9759f85060 Use getBasePtr in TempScop/ScopInfo
llvm-svn: 144279
2011-11-10 12:44:55 +00:00
Tobias Grosser b8710b5952 ScopDetect: Use getPointerBase to get the base pointer
Previously we allowed in access functions only a single SCEVUnknown, which later
became the base address. We now use getPointerBase() to derive the base address
and all remaining unknowns are handled as parameters. This allows us to handle
cases like A[b+c];

llvm-svn: 144278
2011-11-10 12:44:50 +00:00
Tobias Grosser 19632d7814 Remove unused function declaration
llvm-svn: 144233
2011-11-09 22:35:19 +00:00
Tobias Grosser f50fc50c80 Remove unused parameters from TempScop
llvm-svn: 144232
2011-11-09 22:35:15 +00:00
Tobias Grosser e4e2f7b16e TempScop: Rename SCEVAffFunc to IRAccess
The SCEVAffFunc is now only used to express memory accesses. Give it a proper
name and rework the class such that this is obvious.

llvm-svn: 144231
2011-11-09 22:35:09 +00:00
Tobias Grosser 499f0a48d8 Further remove now invalid SCEVAffFunc features.
This also removes the construction of MayAliasSets that became invalid when
removing the use of SCEVAffFunc.

llvm-svn: 144230
2011-11-09 22:35:05 +00:00
Tobias Grosser 6e9f25a5d5 Remove AffineSCEVIterator
We do not use it anymore. It was replaced by SCEVVisitors like the
SCEVValidator.

llvm-svn: 144229
2011-11-09 22:35:00 +00:00
Tobias Grosser f317e3ac83 Do not check memory accesses additionally with isValidAffineFunction
This check was necessary because of the use AffineSCEVIterator in TempScopInfo.
As we removed this use recently it is not necessary any more.

llvm-svn: 144228
2011-11-09 22:34:53 +00:00
Tobias Grosser 866b8ae928 Remove more unused stuff from SCEVAffFunc
llvm-svn: 144227
2011-11-09 22:34:48 +00:00
Tobias Grosser a601fbd682 Remove SCEVAffFunc from polly::Comparison
llvm-svn: 144226
2011-11-09 22:34:44 +00:00
Tobias Grosser fb47d66a06 Remove unused code from SCEVAffFunc constructor
llvm-svn: 144224
2011-11-09 22:34:39 +00:00
Tobias Grosser 5683df4a23 Remove more of SCEVAffineFunc
llvm-svn: 144223
2011-11-09 22:34:34 +00:00
Tobias Grosser 63069c60cf ScopInfo: Use getParamsInAffineExpr to get the BaseAddress
llvm-svn: 144222
2011-11-09 22:34:28 +00:00
Tobias Grosser db87142b26 TempScop: Remove more of the buildAffineFunction
llvm-svn: 144221
2011-11-09 22:34:24 +00:00
Tobias Grosser e6efa37e76 TempScopInfo: Remove unneeded construction of SCEVAffFunc
llvm-svn: 144220
2011-11-09 22:34:18 +00:00
Tobias Grosser 02aa9fe2bd www: Fix install location of cloog in the installation guide.
llvm-svn: 144192
2011-11-09 17:44:03 +00:00
Tobias Grosser 60b54f19e6 Detect Parameters directly on the SCEV.
Instead of using TempScop to find parameters, we detect them directly
on the SCEV. This allows us to remove the TempScop parameter detection
in a subsequent commit.

This fixes a bug reported by Marcello Maggioni <hayarms@gmail.com>

llvm-svn: 144087
2011-11-08 15:41:28 +00:00
Tobias Grosser 65b0058b56 Remove const
llvm-svn: 144086
2011-11-08 15:41:19 +00:00
Tobias Grosser 6be480c4ab ScopInfo: Don't add common parameters during realignment to the context.
Previously we built a context that contained already all parameter dimensions
from the start. We now build a context without any parameter dimensions and
extend the context as needed. All parameter dimensions are added during final
realignment.

llvm-svn: 144085
2011-11-08 15:41:13 +00:00
Tobias Grosser 8cae72f186 ScopInfo: Realign parameters after the scop is built
llvm-svn: 144084
2011-11-08 15:41:08 +00:00
Tobias Grosser 9a38ab8a04 Use a map to store the dimension of the the parameters
llvm-svn: 144083
2011-11-08 15:41:03 +00:00
Tobias Grosser 76c2e32a8e ScopInfo: Extract function getIdForParam()
llvm-svn: 143961
2011-11-07 12:58:59 +00:00
Tobias Grosser 120db6b583 SCEVValidator: Move into own file
llvm-svn: 143960
2011-11-07 12:58:54 +00:00
Tobias Grosser 60e85cbd9d ScopDetection: Introduce methods to check attributes of ValidatorResult
This simplifies e.g:

if (Op.type == SCEVType::INT || Op.type == SCEVType::PARAM)

  to

if (Op.isConstant())

llvm-svn: 143959
2011-11-07 12:58:46 +00:00
Tobias Grosser eadc4285db ScopDetection: Add ValidatorResult class
llvm-svn: 143958
2011-11-07 12:58:41 +00:00
Tobias Grosser 2d0b1f9d8a ScopDetection: Small fixes and improvements for the SCEVValidator
These fixes were part of a code audit of the SCEVValidator.

llvm-svn: 143692
2011-11-04 10:08:08 +00:00
Tobias Grosser 7b0ee0ec9f ScopInfo: Add two new asserts.
They show a bug recently reported by Marcello Maggioni <hayarms@gmail.com>

llvm-svn: 143691
2011-11-04 10:08:03 +00:00
Tobias Grosser 76164677f8 ScopDetection: Use SCEVValidator for memory accesses.
We currently run the old memory access checker in parallel, as we would
otherwise fail in TempScop because of currently unsupported functions. We will
remove the old memory access checker as soon as TempScop is fixed.

llvm-svn: 143654
2011-11-03 21:03:18 +00:00
Tobias Grosser 2fea5c68fd ScopDetection: Use SCEVValidator for conditions
llvm-svn: 143653
2011-11-03 21:03:14 +00:00
Tobias Grosser 2392805094 TempScop: Remove unused SCEVAffFunc constructor
llvm-svn: 143652
2011-11-03 21:03:10 +00:00
Tobias Grosser 56f4745c3f TempScop: Remove has_signed (was unused)
llvm-svn: 143651
2011-11-03 21:03:06 +00:00
Tobias Grosser ad96c4b06d ScopDetection: A parameter cannot appear inside a SCoP.
llvm-svn: 143650
2011-11-03 21:03:01 +00:00
Tobias Grosser 3fb4992221 ScopDetection: Add new SCEV Validator
The SCEV Validator is used to check if the bound of a loop can be translated
into a polyhedral constraint. The new validator is more general as the check
used previously and e.g. allows bounds like 'smax 1, %a'. At the moment, we
only allow signed comparisons. Also, the new validator is only used to verify
loop bounds. Memory accesses are still handled by the old validator.

llvm-svn: 143576
2011-11-02 21:40:08 +00:00
Tobias Grosser 1179afafca TempScop: Remove SCEVAffFunc from LoopBoundInfo
This is not needed anymore -> Reduce impact of SCEVAffFunc.

llvm-svn: 143575
2011-11-02 21:37:51 +00:00
Tobias Grosser 65fa78e975 TempScopInfo: Print the original SCEV instead of using SCEVAffFunc
This is reducing the impact of SCEVAffFunc

llvm-svn: 143574
2011-11-02 21:37:06 +00:00
Raghesh Aloor 4eae54288f www: Change in cloog installation procedure
llvm-svn: 143025
2011-10-26 12:25:49 +00:00
Tobias Grosser 1f24897def Add forgotten -Xclang option
Reported by: yabin.hwu@gmail.com

llvm-svn: 143008
2011-10-26 02:14:40 +00:00
Tobias Grosser f524e3a258 www: reformat warning
llvm-svn: 143007
2011-10-26 02:09:11 +00:00
Tobias Grosser 954a1f2d74 www: Emphasize clang/LLVM/Polly need to be in sync
llvm-svn: 143005
2011-10-26 01:27:53 +00:00
Tobias Grosser bd54f3226f ScopInfo: Print SCEV and not the pointer to it
llvm-svn: 143004
2011-10-26 01:27:49 +00:00
Tobias Grosser 3638ef8fe1 PoCC: Fix bugs when executing PoCC
These are remainders of the switch to the newer isl version. At the point of
switching I did not test with PoCC support. I should have done. ;-)

llvm-svn: 142777
2011-10-23 20:59:49 +00:00
Tobias Grosser 7bf5999868 Remove pollycc
The recommanded and supported way to use Polly is to load it into clang.
Documentation for this is available on the website under
http://polly.grosser.es/example_load_Polly_into_clang.html

llvm-svn: 142776
2011-10-23 20:59:47 +00:00
Tobias Grosser 967239c029 Only have a single option to disable tiling for both isl and Pocc optimzer
This also documents the new option on the website.

llvm-svn: 142775
2011-10-23 20:59:44 +00:00
Tobias Grosser 67707b7131 Enable prevectorization with -enable-polly-vector.
This removes the separate prevector options for the Pluto and isl scheduler.

llvm-svn: 142774
2011-10-23 20:59:40 +00:00
Tobias Grosser d5e80c5f9c Add an option to run the PoCC optimizer
llvm-svn: 142773
2011-10-23 20:59:35 +00:00
Tobias Grosser 12dcc646d5 Allow to disable the schedule optimizer
The option -polly-no-optimizer disables the scheduling optimizer.

llvm-svn: 142772
2011-10-23 20:59:32 +00:00
Tobias Grosser 22636bf498 Rename -enable-schedule-prevector to -polly-prevector
llvm-svn: 142771
2011-10-23 20:59:29 +00:00
Tobias Grosser 353a2684bc ScheduleOptimizer: Allow to disable tiling
llvm-svn: 142770
2011-10-23 20:59:26 +00:00
Tobias Grosser 70c31f9411 ScopLib: Fix memory issues
llvm-svn: 142769
2011-10-23 20:59:24 +00:00
Tobias Grosser 048c87943c ScopInfo: Remove unneeded code
llvm-svn: 142768
2011-10-23 20:59:20 +00:00
Tobias Grosser 318955b516 Fix compilation of Polly with scoplib support
llvm-svn: 142767
2011-10-23 20:59:17 +00:00
Tobias Grosser 76a42df06e Rename -enable-polly-viewer to -polly-run-viewer
Similar changes for polly-only-viewer, polly-printer and polly-only-printer.

llvm-svn: 142766
2011-10-23 20:59:14 +00:00
Tobias Grosser f50dbc44ba RegisterPasses: Allow to disable code generation.
llvm-svn: 142765
2011-10-23 20:59:11 +00:00
Tobias Grosser 2ff8723d5d ScopDetection: Allow to limit the scop detection to a single function
-polly-detect-only=<functionname> allows to limit the scop detection to
a single function.

llvm-svn: 142750
2011-10-23 11:17:06 +00:00
Tobias Grosser f3fbcb8919 Fix buildbot link
llvm-svn: 142749
2011-10-23 11:03:06 +00:00
Tobias Grosser 57bc026634 Link to the new LLVM buildbots
llvm-svn: 142748
2011-10-23 11:01:07 +00:00
Tobias Grosser e5b5797529 www: Describe how to load Polly into clang
llvm-svn: 142747
2011-10-23 10:57:53 +00:00
Tobias Grosser 869b9a318d www: Move example into its own section (making room for another one)
llvm-svn: 142746
2011-10-23 10:57:49 +00:00
Tobias Grosser cf1a26838c Add CloogInfo debug output.
llvm-svn: 142745
2011-10-23 10:57:44 +00:00
Tobias Grosser 008442631b Update to isl 0.08
llvm-svn: 142744
2011-10-23 10:39:40 +00:00
Tobias Grosser 23b3666850 ScopInfo: Fix ctx->ref != 0 problem
Reported by: Yabin Hu <yabin.hwu@gmail.com>

llvm-svn: 142184
2011-10-17 08:32:36 +00:00
Tobias Grosser b43ba82c94 ScopDetection: Improve error messages and add another INVALID case.
llvm-svn: 141461
2011-10-08 00:49:30 +00:00
Tobias Grosser 0ad4caa263 ScopInfo: Proporly free the local space
llvm-svn: 141459
2011-10-08 00:35:17 +00:00
Tobias Grosser 4f129a6b43 Show the reason a region is not a SCoP in the DOT graphs.
llvm-svn: 141458
2011-10-08 00:30:55 +00:00
Tobias Grosser c4a0bd13ad ScopDetection: Unify the handling of invalid SCoPs
llvm-svn: 141457
2011-10-08 00:30:48 +00:00
Tobias Grosser a3263c85e2 Add flags to run the Polly Printers/Viewers
llvm-svn: 141456
2011-10-08 00:30:44 +00:00
Tobias Grosser 73600b8edd Initialize the passes early and properly.
llvm-svn: 141455
2011-10-08 00:30:40 +00:00
Tobias Grosser e19661e0ca ScopInfo: Some cleanups
- Use __isl_give and __isl_take
- Convert variables to start with Uppercase letter
- Only assign the 'domain' after it is fully constructed
- Only name it after it is fully constructed

llvm-svn: 141361
2011-10-07 08:46:57 +00:00
Tobias Grosser 04e6cbc80b Switch to the most recent version of ISL.
This switch is not for any new features, but to test have Polly tested with
the upcoming isl 0.8.

llvm-svn: 141359
2011-10-07 07:20:43 +00:00
Tobias Grosser 9b13d3dbe5 ScopInfo: Simplify the construction of the iteration domain.
llvm-svn: 141325
2011-10-06 22:32:58 +00:00
Tobias Grosser c4009383e8 Change location of our buildbot
llvm-svn: 141303
2011-10-06 18:49:37 +00:00
Tobias Grosser b7aac7f596 Address Sebastians comments
This also adds some other cleanups I performed on my way.

llvm-svn: 141275
2011-10-06 06:53:17 +00:00
Tobias Grosser 5d45381294 ScopInfo: Only give away a copy of the access relation.
Also take the chance and rename access functions to access relations. This is
because we do not only allow plain functions to describe an access, but we
can have any access relation that can be described with linear constraints.

llvm-svn: 141257
2011-10-06 00:04:11 +00:00
Tobias Grosser cf3942dfa6 ScopInfo: Only give away a copy of the schedule.
llvm-svn: 141256
2011-10-06 00:04:05 +00:00
Tobias Grosser 4da8d9fc15 ScopInfo: Only give away a copy of the Context
llvm-svn: 141255
2011-10-06 00:03:59 +00:00
Tobias Grosser 3c69fab0e8 ScopInfo: Get the isl_ctx always with getIslCtx()
llvm-svn: 141254
2011-10-06 00:03:54 +00:00
Tobias Grosser 0e27e24751 ScopInfo: Use separate function to build context
llvm-svn: 141253
2011-10-06 00:03:48 +00:00
Tobias Grosser 3748705fff Export the parameter space directly from the SCoP.
Use this to simplify some code.

llvm-svn: 141252
2011-10-06 00:03:42 +00:00
Tobias Grosser f53388034d Adapt to introduction of isl_space
Polly should now be compiled with CLooG 0c252c88946b27b7b61a1a8d8fd7f94d2461dbfd
and isl 56b7d238929980e62218525b4b3be121af386edf. The most convenient way to
update is utils/checkout_cloog.sh.

llvm-svn: 141251
2011-10-06 00:03:35 +00:00
Tobias Grosser 934efa2ca5 checkout_cloog: Fix this script to run on our buildbot.
llvm-svn: 141242
2011-10-05 23:11:17 +00:00
Tobias Grosser 54da0d838d Add forgotten "
llvm-svn: 141213
2011-10-05 21:11:30 +00:00
Tobias Grosser 2e32c4aaef Add a tool to checkout cloog/isl automatically with the correct versions.
The tool is called checkout_cloog.sh. We also update the get_started
documentation to include this tool. An older unfinished tool called
'get_cloog.sh' is removed to avoid confusion.

llvm-svn: 141212
2011-10-05 21:10:10 +00:00
Tobias Grosser 10996ef7c9 Point to our own buildbot until the official one is up again.
llvm-svn: 141070
2011-10-04 08:08:43 +00:00
Tobias Grosser 7a5246a371 Test: Convert to new exception handling
llvm-svn: 141069
2011-10-04 07:53:21 +00:00
Tobias Grosser a241132b6a Remove some empty lines
llvm-svn: 141068
2011-10-04 06:56:36 +00:00
Tobias Grosser 70738df671 configure: Add gmp_inc when checking for CLooG
Otherwise configure fails if gmp is installed in a non default location.

llvm-svn: 141067
2011-10-04 06:55:03 +00:00
Tobias Grosser ae61c317c8 Also force a fixed version of cloog
llvm-svn: 139363
2011-09-09 11:02:10 +00:00
Tobias Grosser 4d94c71cc3 Change installation instruction to use a fixed isl version
llvm-svn: 139362
2011-09-09 09:08:09 +00:00
Tobias Grosser c92151516f CodeGen: Support for Cast Operations in vector code generation
llvm-svn: 139097
2011-09-04 11:45:52 +00:00
Tobias Grosser 8b00a51164 CodeGen: Remove unused code
llvm-svn: 139096
2011-09-04 11:45:45 +00:00
Tobias Grosser 7551c3000a CodeGen: Better separate scalar and vector code generation.
llvm-svn: 139095
2011-09-04 11:45:41 +00:00
Tobias Grosser b06e71b95c CodeGeneration: Simplify code, fix style.
llvm-svn: 139094
2011-09-04 11:45:34 +00:00
Tobias Grosser 09c571008b CodeGen: Split large function in smaller ones.
llvm-svn: 139093
2011-09-04 11:45:29 +00:00
Tobias Grosser 8ae9aca5cc CodeGen: Improve naming of copied basic blocks
It may happen that we generate the code of a basic block from the original
scop is code generated several times. The new naming scheme reduces confusing
that earlier appeared as the version numbers of the new basic blocks could
have been interpreted as part of the name of the original basic block.

llvm-svn: 139092
2011-09-04 11:45:22 +00:00
Tobias Grosser c532f12965 Fix crashes due to unaligned parameters
Due to the recent introduction of isl_id, parameters need now always to be
aligned. This was not yet taken care of in the code path of vectorization and
dependence analysis.

llvm-svn: 138555
2011-08-25 08:40:59 +00:00
Tobias Grosser b406d227d2 ScheduleOptimizer: Fix another memleak
llvm-svn: 138554
2011-08-25 08:40:52 +00:00
Tobias Grosser 3df9c76d5c RegisterPasses: Rework comments slightly
llvm-svn: 138428
2011-08-24 07:33:05 +00:00
Tobias Grosser 792509b0db Register Polly passes automatically
Polly adds, after it is loaded into opt or clang, its passes to the default set
of -O3 passes. This means optimizing a program with clang and Polly becomes as
simple as executing.

clang -Xclang -load -Xclang lib/LLVMPolly.so -O3 program.c

The same should work for dragonegg powered gfortran, g++, ... or any other tool
that uses the PassManagerBuilder.

Warning: Even though using Polly became with this commit extremly easy, Polly
         is still Pre-Alpha Quality. This means in most cases it will rather
         destroy the world than doing anything positive. ;-)
llvm-svn: 138402
2011-08-23 22:35:38 +00:00
Tobias Grosser a954242c88 ScheduleOptimizer: Fix another memory leak
llvm-svn: 138401
2011-08-23 22:35:23 +00:00
Tobias Grosser 83f5c43ede Add some forgotten passes to LinkAllPasses
llvm-svn: 138400
2011-08-23 22:35:08 +00:00
Tobias Grosser fa3f226a9f Add information about polyhedral phone call.
llvm-svn: 138326
2011-08-23 12:31:17 +00:00
Tobias Grosser 6e0fdcadfe ScheduleOptimizer: Fix some memory errors.
This fixes reference counting if the schedule optimizer is used.

llvm-svn: 138325
2011-08-23 12:31:14 +00:00
Tobias Grosser 604c981f40 Temporarily remove reduction support and interchange pass
I am planning to eliminate the TempScopInfo pass. To simplify this I remove
some features that may later be added to the ScopInfo pass.

The interchange pass is currently strongly tested and furthermore ment to be
replaced by the general scheduling optimizer. Reductions itself can later
be added easily.

llvm-svn: 138219
2011-08-21 14:57:58 +00:00
Tobias Grosser b76f385334 Free isl_ctx and fix several memory leaks
Because of me not understanding the LLVM pass structure well, I did not find a
good way to allocate isl_ctx and to free it later without getting issues with
reference counting. I now found this place, such that we can free isl_ctx. This
patch also fixes the memory leaks that were ignored beforehand.

llvm-svn: 138204
2011-08-20 11:11:25 +00:00
Tobias Grosser 15f5efff8f GICHelper: Fix memory leaks, as we forgot to free some strings.
llvm-svn: 138203
2011-08-20 11:11:18 +00:00
Tobias Grosser eec4d56e63 Move common code into the function it belongs to
llvm-svn: 138202
2011-08-20 11:11:14 +00:00
Tobias Grosser fa7bc2f1a3 ScopInfo/Dependences: Use parameter ids everywhere
llvm-svn: 138155
2011-08-20 00:03:28 +00:00
Tobias Grosser 7d4cee4b02 ScopInfo: Construct the accessrelations with isl_pw_aff
This simplifies the code quite a bit.

llvm-svn: 138147
2011-08-19 23:34:28 +00:00
Tobias Grosser d2795d0365 ScopInfo: Remove adhoc comparision of affine expressions
Until today, we compared two affine expressions by defining two maps describing
them, creating an union of those maps, adding constraints that do the comparison
and projecting out unneeded dimensions.

This was simplified to using the isl_pw_aff representation of the affine
expressions and using the relevant isl functions to compare them.

llvm-svn: 137932
2011-08-18 07:51:40 +00:00
Tobias Grosser 30b8a092d8 ScopInfo: Create all isl data structures with dimension ids
At the moment, we still remove the ids after all data structures are created,
as later passes do not yet support ids. This limitation will be removed later.

llvm-svn: 137931
2011-08-18 07:51:37 +00:00
Tobias Grosser 33ba62ad11 ScopInfo: Build isl_pw_aff directly from SCEV.
Do not use AffFunc to derive the affine expressions, but use isl_pw_aff to
analyze the original SCEV directly. This will allow several simplifications in
follow up patches, with the final goal of removing AffFunc completely.

llvm-svn: 137930
2011-08-18 06:31:50 +00:00
Tobias Grosser 54a86e6c2a ScopInfo: Simplify code
llvm-svn: 137929
2011-08-18 06:31:46 +00:00
Tobias Grosser edd8372d4f TempSCoP: Store SCEV a SCEVAffFunc was derived from
llvm-svn: 137928
2011-08-18 06:31:43 +00:00
Tobias Grosser 223d4d0b37 TempScopInfo: Improve formatiing
llvm-svn: 137927
2011-08-18 06:29:25 +00:00
Raghesh Aloor 5d1b6ce83c www: Updating memaccess Documentation
llvm-svn: 137607
2011-08-15 09:37:46 +00:00
Raghesh Aloor 129e867865 Memaccess: Code generation for constant access function change
Support for generating code for an access function change which is
a constant is added. 

llvm-svn: 137603
2011-08-15 02:33:39 +00:00
Raghesh Aloor e75e986d03 Removing some trailing whitespaces
llvm-svn: 137304
2011-08-11 08:44:56 +00:00
Raghesh Aloor 490c5988f9 Memaccess: Some style changes
llvm-svn: 137043
2011-08-08 08:34:16 +00:00
Raghesh Aloor 62b13120ee Memaccess: Codegeneration for a simple access function change
Code is generated for a simple access function change imported
from JSCOP file. An access of A[i] is changed to A[0]. The code
for A[0] is generated directly without refering to isl function calls.

llvm-svn: 136789
2011-08-03 17:02:50 +00:00
Raghesh Aloor 7a04f4f9ba Memaccess: Display Changed Access Relation
The changed access relations imported from JSCOP file is shown
as output of -analyze pass.

llvm-svn: 136774
2011-08-03 13:47:59 +00:00
Tobias Grosser 3b660f8585 ScopInfo: Do not use >"< in statement names.
Signed-off-by: Tobias Grosser <tobias@grosser.es>

llvm-svn: 136750
2011-08-03 00:12:11 +00:00
Tobias Grosser 51e89bf87f Dependences: Fix memory corruption.
Signed-off-by: Tobias Grosser <tobias@grosser.es>
llvm-svn: 136749
2011-08-03 00:09:49 +00:00
Tobias Grosser bd2b2c7117 Add a vect target to the polly testsuite
Contributed by: Sebastian Pop <sebpop@gmail.com>

llvm-svn: 136685
2011-08-02 07:22:05 +00:00
Tobias Grosser 2bd3af1e89 Fix two compiler warnings
One of them actually pointed to an invalid condition in an assert.

llvm-svn: 136657
2011-08-01 22:39:00 +00:00
Raghesh Aloor ac4dacfb1f www: Memory Access Documentation Update
llvm-svn: 135641
2011-07-21 00:08:23 +00:00
Tobias Grosser 0c0acb02d5 www: Fix typo
Reported by: Chad Rosier <mcrosier@apple.com>

llvm-svn: 135428
2011-07-18 21:27:42 +00:00
Tobias Grosser 276aab5a21 www: Mention new Polly Builder in News
llvm-svn: 135421
2011-07-18 20:34:41 +00:00
Tobias Grosser 6121eb346f www: Add link to buildbot into main menu
llvm-svn: 135387
2011-07-18 11:00:13 +00:00
Tobias Grosser d3ffabfc7a www: Buildbot set up
llvm-svn: 135385
2011-07-18 09:53:35 +00:00
Tobias Grosser 55927aa400 Use llvm::*Type without const
llvm-svn: 135384
2011-07-18 09:53:32 +00:00
NAKAMURA Takumi a7913cd841 (Test commit for polly)
llvm-svn: 135345
2011-07-16 13:30:03 +00:00
Raghesh Aloor 9ca0e917a3 Memaccess: Bugfix-Reading of JSCoP file fails
While iterating through the memory accesses in JSCOP file
the inner loop index was not initialized to zero.

llvm-svn: 135340
2011-07-16 04:55:09 +00:00
Tobias Grosser 0679e17644 CodeGeneration: Adjust call to CreateCall.
Needed to avoid compile error after the patch "Convert CallInst and
InvokeInst APIs to use ArrayRef.

Contributed by: Sebastian Pop <sebpop@gmail.com>

llvm-svn: 135321
2011-07-15 22:54:41 +00:00
Raghesh Aloor 3cb6628d7c MemAccess: Reading Change in Access Function
This patch reads the change in access functions from
imported JSCOP file. A test case is also added.

llvm-svn: 134991
2011-07-12 17:14:03 +00:00
Tobias Grosser 0a33f7e678 www: Fix typo
llvm-svn: 134981
2011-07-12 12:43:00 +00:00
Tobias Grosser 851b96e7f0 Adapt to LLVM type system changes
Remove constness of Types and do not name the structures generated in the OpenMP
code.

llvm-svn: 134980
2011-07-12 12:42:54 +00:00
Raghesh Aloor 7eb661e636 Fix for broken build
isl/map.h is included in OpenScopExporter.cpp and
OpenScopImporter.cpp

llvm-svn: 134786
2011-07-09 03:10:22 +00:00
Tobias Grosser e790a8dac9 ScopLib: Add missing include
llvm-svn: 134513
2011-07-06 18:05:05 +00:00
Tobias Grosser fe37f8d0ac pollycc: Fix error message if PoCC/Pluto are not available
llvm-svn: 134512
2011-07-06 18:04:59 +00:00
Tobias Grosser 44f19ac3fb ScheduleOpt: Fix some bugs
isl changed a function name, we did not properly initialize some variables
and we freed an isl_ctx object.

llvm-svn: 134448
2011-07-05 22:15:53 +00:00
Tobias Grosser e1bb3cbf65 www/memaccess: Fix forgotten typo
llvm-svn: 134435
2011-07-05 19:13:41 +00:00
Tobias Grosser 9611623d02 CodeGen: Adapt to change of PHI operand storage
Commit 133435 "Change how PHINodes store their operands" broke Polly. Fix this
breakage by adapting to the changes in the commit.

llvm-svn: 134434
2011-07-05 19:13:31 +00:00
Tobias Grosser 928b2d16a6 test: Do not pipe the .ll file into opt
The construct '< %s' complicates debugging with gdb --args as the content of
%s is interpreted as gdb input.

llvm-svn: 134432
2011-07-05 19:13:21 +00:00
Raghesh Aloor 77e4c595b0 www: Updating memaccess documentation
This is a complete rewrite to memaccess.html file. This removed
some unwanted html tags.

llvm-svn: 134429
2011-07-05 18:51:34 +00:00
Tobias Grosser 3770157502 test: Remove redundant function definition
The latest version of LLVM fails, if a function is defined twice in an LLVM
bitcode file.

llvm-svn: 134400
2011-07-04 23:18:17 +00:00
Tobias Grosser 7c5ba83015 ScheduleOpt: Prevectorize the innermost parallel loop
Only prevectorize loops that are actually parallel and can
be vectorized. Take the innermost loop that is eligible.

llvm-svn: 134187
2011-06-30 20:29:20 +00:00
Tobias Grosser c6699b7fe8 ScheduleOpt: Add first version of prevectorization
We just strip-mine the innermost dimension by the vector width. This does not
take into account if this dimension is parallel nor if it is constant.

llvm-svn: 134186
2011-06-30 20:29:13 +00:00
Tobias Grosser de68cc91cf ScheduleOpt: Use band forest to get the schedules
isl introduced a new representation for the schedules it calculates. The new
representation uses a forest of bands and is closer to the structure of the
data as the old interface. Switch to the new interface, as it is nicer to use
and as the old interface will soon be removed from isl.

WARNING: This commit needs a version of isl that is more recent that the one
         included in CLooG. See:
	 http://polly.grosser.es/get_started.html#islTrunk
llvm-svn: 134181
2011-06-30 20:01:02 +00:00
Tobias Grosser 080307119e Buildsystem: Add -no-rtti
Build Polly without run time type info (rtti), as otherwise Polly cannot be
loaded into a LLVM that is built without rtti.

llvm-svn: 134180
2011-06-30 19:50:04 +00:00
Tobias Grosser 97fb5acf48 CodeGeneration: Adapt to SCEVExpander change
Reported-By: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 134179
2011-06-30 19:39:10 +00:00
Tobias Grosser 538d458bbc www: Fix typos.
llvm-svn: 134158
2011-06-30 14:43:35 +00:00
Tobias Grosser 1dbc8a00a2 www/contributers: Add founding through Google Doctoral Fellowship
llvm-svn: 134156
2011-06-30 14:32:33 +00:00
Tobias Grosser 3fb8c11bd0 www/get_started: Explain when PoCC is needed
llvm-svn: 134153
2011-06-30 14:07:35 +00:00
Tobias Grosser 672137eaa0 www: How to use most recent version of isl
In some cases it is necessary to use a version of isl that is more recent than
the one included with CLooG. Point out what is needed to get such a version.

llvm-svn: 134152
2011-06-30 14:07:23 +00:00
Raghesh Aloor 49a3a7ba20 www: Adding webpage to track memory access transformation
llvm-svn: 133354
2011-06-18 17:17:16 +00:00
Raghesh Aloor 94085eaa83 www: Adding link to memaccess.html
llvm-svn: 133353
2011-06-18 17:09:33 +00:00
Tobias Grosser 3d2efafb36 www: Fix path to git repository.
llvm-svn: 132761
2011-06-08 22:46:40 +00:00
Tobias Grosser d0357f8cc8 www: Allow file listing in directory of example files.
llvm-svn: 132755
2011-06-08 17:36:11 +00:00
Tobias Grosser 7e01c25f45 www: Add website for the LLVM bugtracker use
llvm-svn: 132678
2011-06-06 15:50:09 +00:00
Tobias Grosser 64cae02ec2 www: Enable SSI on the webserver.
llvm-svn: 132120
2011-05-26 12:20:16 +00:00
Tobias Grosser cf771b146b www: Use absolute links
Like this the menu can also be used in subdirectories.

llvm-svn: 131964
2011-05-24 13:56:06 +00:00
Tobias Grosser e7f23ffa66 www: Add documentation.html
llvm-svn: 131963
2011-05-24 13:29:23 +00:00
Tobias Grosser efe01ce677 www: Add a separarate documentation section.
llvm-svn: 131962
2011-05-24 13:15:01 +00:00
Tobias Grosser 76747f76a0 ScheduleOptimizer: Declare functions static
Functions that are currently only used in this file can be declared static.

Suggested by: ether

llvm-svn: 131960
2011-05-24 12:20:07 +00:00
Tobias Grosser 766b4742cc www: Add two publications
Tobias' diploma thesis and Raghesh's master thesis.

llvm-svn: 131959
2011-05-24 12:20:00 +00:00
Tobias Grosser 4e3f9a4c5c CodeGeneration: Use FIXME instead of XXX
Cleanup suggested by ether.

llvm-svn: 131898
2011-05-23 15:23:36 +00:00
Tobias Grosser f6ed8ffd69 www: Colorize TODO status
llvm-svn: 131361
2011-05-14 19:02:51 +00:00
Tobias Grosser 5d6eb86965 CodeGeneration: Cleanup getAnalysis/addPreserved
llvm-svn: 131360
2011-05-14 19:02:45 +00:00
Tobias Grosser 3fdecaee2a CodeGeneration: Localize variables
llvm-svn: 131359
2011-05-14 19:02:39 +00:00
Tobias Grosser abb6dcd865 CodeGeneration: Admit that we change the code.
No need to pretend anymore that we do not update the LLVM-IR.

llvm-svn: 131358
2011-05-14 19:02:34 +00:00
Tobias Grosser 2aec339d28 Cloog: Export clast_root
llvm-svn: 131357
2011-05-14 19:02:29 +00:00
Tobias Grosser e91c53d2a9 CodeGeneration: No need to forget SCoP.
As we do not delete the SCoP, there is no need to remove it from the SCoP
detection.

llvm-svn: 131356
2011-05-14 19:02:21 +00:00
Tobias Grosser 678dbbf3b0 CodeGeneration: We do not preserve the PostDominatorTree
llvm-svn: 131355
2011-05-14 19:02:12 +00:00
Tobias Grosser 30aa24cd6b ScheduleOptimizer: Add an isl based schedule optimizer
The isl based routines implement a new interpretation of the Pluto algorithm
new interpretation. This patch requires a recent version of isl to be installed.

llvm-svn: 131354
2011-05-14 19:02:06 +00:00
Tobias Grosser 7a16c895ac CodeGeneration: Remove -polly-codegen-only
If we only want to optimize a single function, we should extract this function
into a separate .ll file. This simplifies the code.

llvm-svn: 131353
2011-05-14 19:01:55 +00:00
Tobias Grosser 8c4cfc327b CodeGeneration: Do not delete the old version of the Scop.
Instead of deleting the old code, keep it on the side in an if-branch. It will
either be deleted by the dead code elimination or we can use it as fallback.

llvm-svn: 131352
2011-05-14 19:01:49 +00:00
Tobias Grosser 76d7c529fb CodeGeneration: Support only simple regions
llvm-svn: 131351
2011-05-14 19:01:37 +00:00
Tobias Grosser c0b259ad90 www: Update status of our move to the LLVM infrastructure
llvm-svn: 131307
2011-05-13 20:51:45 +00:00
Tobias Grosser 1aabf2777b www: Use german 'umlaut' in Simbuerger
llvm-svn: 131247
2011-05-12 21:36:27 +00:00
Tobias Grosser a806606aaa ScopDetection: Move implementation of function from header to .cpp file
llvm-svn: 131246
2011-05-12 21:33:28 +00:00
Tobias Grosser d5a7bfc51d ScopInfo: Do not return reference to member variable 'domain'.
Instead of returning a pointer to the domain, we return a new copy of it. This
is safer, as we do not give access to internal objects. It is also not
expensive, as isl will just increment a reference counter.

llvm-svn: 131010
2011-05-06 19:52:19 +00:00
Tobias Grosser 69f8514cb7 Dependences: Add interface to retrieve dependences.
llvm-svn: 131009
2011-05-06 19:52:09 +00:00
Hongbin Zheng 94c5df16e2 ScopDetection: Remember the functions generated by backend in a pointer set, so we
do not re-generate code for these functions.

llvm-svn: 130975
2011-05-06 02:38:20 +00:00
Hongbin Zheng dbdebe28de Refactor: Move 'isParallelFor' from codegen backend to Dependences analysis, so other passes can also use it.
llvm-svn: 130752
2011-05-03 13:46:58 +00:00
Tobias Grosser e79a5e65c0 www: Finish first draft of the matmul example
llvm-svn: 130751
2011-05-03 09:40:40 +00:00
Tobias Grosser fe6d9849a1 Add new website for Polly
Use the content of the Polly wiki page[1] to create a new website. I do not yet
plan to officially promote this website, but it is already a solid base that we
can improve and peer review.

[1] http://wiki.llvm.org/Polly

llvm-svn: 130689
2011-05-02 07:48:29 +00:00
Hongbin Zheng 27f3afbc1a ScopInfo: Rememeber the induction variable and its parent loop at the same thime.
llvm-svn: 130586
2011-04-30 03:26:51 +00:00
Hongbin Zheng ad6915685e JSON: Do not use throw when exception is disabled.
llvm-svn: 130575
2011-04-30 02:47:34 +00:00
Hongbin Zheng 986fee0055 JSON: Disable exception in JSON library, because exception is disable by by default.
llvm-svn: 130574
2011-04-30 02:30:58 +00:00
Andreas Simbuerger 0593f53295 Add e-mail to credits file.
llvm-svn: 130484
2011-04-29 07:54:20 +00:00
Hongbin Zheng e1bd40cfbd Partial support test polly for out of tree build.
llvm-svn: 130482
2011-04-29 07:34:54 +00:00
Tobias Grosser ca3bef8461 JSONExport: Some cleanups
llvm-svn: 130481
2011-04-29 06:52:36 +00:00
Tobias Grosser b4c99fae86 CREDITS: Replace LLVM with Polly
llvm-svn: 130480
2011-04-29 06:42:42 +00:00
Tobias Grosser b6a7c8d76b Add a converter from jscop to iscc input
llvm-svn: 130478
2011-04-29 06:29:20 +00:00
Tobias Grosser b0927ea141 JSONExporter: Remove unused variable
llvm-svn: 130477
2011-04-29 06:27:09 +00:00
Tobias Grosser 758053788b Add initial version of Polly
This version is equivalent to commit ba26ebece8f5be84e9bd6315611d412af797147e
in the old git repository.

llvm-svn: 130476
2011-04-29 06:27:02 +00:00