Tobias Grosser
8d7c4dbf8c
Add llvm.codegen intrinsic patch file to polly/utils.
...
The "llvm.codegen" intrinsic patch is a patch to LLVM, which is used
to generate code for embedded LLVM-IR strings. In Polly, we use it
to generate ptx assembly text for GPGPU code generation.
llvm-svn: 157689
2012-05-30 13:53:57 +00:00
Tobias Grosser
084d8f7d4c
ScopInfo: Store ScopStmt pointer in the domain
...
Store a pointer to each ScopStmt in the isl_id associated with the space of its
domain. This will later allow us to recover the statement during code
generation with isl.
llvm-svn: 157607
2012-05-29 09:29:44 +00:00
Tobias Grosser
400a4ac658
Mark the increments of the generated induction variables 'NSW'
...
In general, all code that we produce is NSW.
llvm-svn: 157606
2012-05-29 09:11:59 +00:00
Tobias Grosser
3a275d20dd
Move executeScopConditionally() into its own file
...
We will reuse this function for the isl code generator.
llvm-svn: 157605
2012-05-29 09:11:54 +00:00
Tobias Grosser
0a91f3220b
Move CLooG.h into include/polly/CodeGen/
...
llvm-svn: 157604
2012-05-29 09:11:46 +00:00
Tobias Grosser
29666113fd
ScheduleOptimizer: Simplify some code
...
We now use isl_map_equate, which makes the code a lot simpler.
llvm-svn: 157246
2012-05-22 10:47:31 +00:00
Tobias Grosser
18daacad61
ScopInfo: Add parameter bounds to context
...
Derive the maximal and minimal values of a parameter from the type it has. Add
this information to the scop context. This information is needed, to derive
optimal types during code generation.
llvm-svn: 157245
2012-05-22 10:47:27 +00:00
Tobias Grosser
3b2cf96bae
Replace some asserts with llvm_unreachable
...
llvm-svn: 157244
2012-05-22 10:47:21 +00:00
Tobias Grosser
42b69e5745
ScopInfo: SCEVUnknowns are always parameters
...
There is no need for special code to handle SCEVUnknowns. SCEVUnkowns are always
parameters and will be handled by the generic parameter handling code in
visit().
llvm-svn: 157243
2012-05-22 10:47:17 +00:00
Tobias Grosser
e192b23f5e
Move isParallelFor into CodeGeneration
...
This removes another include of CLooG header files.
llvm-svn: 157242
2012-05-22 08:46:07 +00:00
Sebastian Pop
8b7f01c6a1
make registerPollyPreoptPasses static
...
llvm-svn: 156326
2012-05-07 21:27:11 +00:00
Sebastian Pop
5cc8caf88d
make registerPollyPasses static, remove param
...
llvm-svn: 156325
2012-05-07 21:27:09 +00:00
Sebastian Pop
e1f6554ed8
add some more missing ifdef CLOOG_FOUND
...
llvm-svn: 156306
2012-05-07 16:35:11 +00:00
Sebastian Pop
082cea8616
add a check for ISL codegen at configure time
...
llvm-svn: 156305
2012-05-07 16:20:07 +00:00
Hongbin Zheng
da4bf55066
WWW: Adapt the vectorize option change.
...
llvm-svn: 156256
2012-05-06 10:22:57 +00:00
Hongbin Zheng
6417255283
Regression tests: Adapt the vectorize option change.
...
llvm-svn: 156255
2012-05-06 10:22:43 +00:00
Hongbin Zheng
6879421727
Allow polly ask bb-vectorizer to vectorize the loop body.
...
llvm-svn: 156254
2012-05-06 10:22:19 +00:00
Sebastian Pop
775d8e65e8
fix typo
...
llvm-svn: 156210
2012-05-04 21:36:08 +00:00
Chandler Carruth
30dfdfca3b
Try to fix the Polly build while I'm trying to get it to build at all locally.
...
llvm-svn: 156207
2012-05-04 21:24:27 +00:00
Chandler Carruth
d6447953f2
Update Polly to match the LLVM interface change in r156196.
...
llvm-svn: 156203
2012-05-04 20:57:29 +00:00
Sebastian Pop
c200977905
compile cloog code only when CLOOG_FOUND is set
...
llvm-svn: 156199
2012-05-04 20:30:03 +00:00
Sebastian Pop
de613265c5
move Cloog.cpp to CodeGen
...
llvm-svn: 156184
2012-05-04 18:15:57 +00:00
Tobias Grosser
14afc07577
Fix typo.
...
Reported by: Andreas Simbuerger
llvm-svn: 156171
2012-05-04 12:11:01 +00:00
Tobias Grosser
913fa54836
ScopDection: Improve status message for non-affine memory accesses.
...
llvm-svn: 156170
2012-05-04 11:26:52 +00:00
Tobias Grosser
ca9a2913b7
Remove unused function
...
Suggested by: Sebastian Pop
llvm-svn: 155863
2012-04-30 23:49:05 +00:00
Tobias Grosser
e71c6ab54c
SCEV based code generation
...
This is an incomplete implementation of the SCEV based code generation.
When finished it will remove the need for -indvars -enable-iv-rewrite.
For the moment it is still disabled. Even though it passes 'make polly-test',
there are still loose ends especially in respect of OpenMP code generation.
llvm-svn: 155717
2012-04-27 16:36:14 +00:00
Hongbin Zheng
746eefeddd
1. Add a header guard for RegisterPasses.h to prevent multiple inclusion.
...
2. Include the helper function and the helper class in the RegisterPasses.h into the polly namespace.
llvm-svn: 155636
2012-04-26 13:55:33 +00:00
Tobias Grosser
f91c441e72
Further simplify parallelism test
...
llvm-svn: 155634
2012-04-26 13:43:03 +00:00
Tobias Grosser
460e9a463d
ScheduleOptimizer: Move functions into class
...
llvm-svn: 155548
2012-04-25 13:22:43 +00:00
Hongbin Zheng
8a8466106c
Refactor: Move the code generation related header files to include/polly/CodeGen.
...
llvm-svn: 155547
2012-04-25 13:18:28 +00:00
Hongbin Zheng
3b11a16a44
Refactor: Move the declaration of the BlockGenerator/VectorBlockGenerator
...
to standalone header and source files.
llvm-svn: 155546
2012-04-25 13:16:49 +00:00
Hongbin Zheng
39645abf4c
ScopStmt: Provide a function to allow users look up the corresponding
...
memory access of a particular instruction, the function will return
null if no such memory access.
llvm-svn: 155544
2012-04-25 09:34:33 +00:00
Hongbin Zheng
86a37745eb
Minor change: Replace convertInt in ScopInfo.cpp by utostr_32, which is
...
defined in StringExtras.h.
llvm-svn: 155539
2012-04-25 08:01:38 +00:00
Tobias Grosser
fe0675927d
Simplify import/export command line flags.
...
Instead of -polly-run-import-jscop and -polly-run-export-jscop, we just use
-polly-import and -polly-export.
llvm-svn: 155446
2012-04-24 16:12:34 +00:00
Tobias Grosser
58eee8f106
Unify the optimizer selection.
...
We now support -polly-optimizer=isl, -polly-optimizer=pocc and
-polly-optimizer=none. The option -polly-no-optimizer is gone.
llvm-svn: 155445
2012-04-24 16:12:30 +00:00
Tobias Grosser
7c3061acdd
Make vector tests less sensible to codegen changes
...
llvm-svn: 155438
2012-04-24 11:08:07 +00:00
Hongbin Zheng
4ac4e15582
Refactor: Pass the argument 'IRBuilder' and 'AfterBlock' of function 'createLoop' by
...
reference, so that we do not need to type an extra '&' operator when calling the function.
llvm-svn: 155349
2012-04-23 13:03:56 +00:00
Hongbin Zheng
6f7aa074ad
1. Add a header guard for LoopGenerators.h to prevent multiple inclusion.
...
2. Include the helper function and the helper class in the LoopGenerator.h into the polly namespace.
llvm-svn: 155348
2012-04-23 13:03:43 +00:00
Tobias Grosser
902c9b243d
Dependences: Rework parallelism check
...
After working and explaining this function to someone, I realized it could be
simplified and better documented.
llvm-svn: 155135
2012-04-19 16:38:16 +00:00
Tobias Grosser
105c984b51
www: Update matmul example slightly.
...
llvm-svn: 154952
2012-04-17 21:38:20 +00:00
Tobias Grosser
216ea58b21
ScheduleOpt: Fix crash with -enable-polly-vector
...
llvm-svn: 154808
2012-04-16 11:06:06 +00:00
Tobias Grosser
4cb5461dae
CodeGen: Generate scalar code if vector instructions cannot be generated
...
This fixes two crashes that appeared in case of:
- A load of a non vectorizable type (e.g. float**)
- An instruction that is not vectorizable (e.g. call)
llvm-svn: 154586
2012-04-12 10:46:55 +00:00
Hongbin Zheng
e2107f0999
Revert "Make the "all" target depend on polly-test, so that users can run regression"
...
This reverts commit 97bd8d50881000c11b65b0e033996ec5f57bcd15.
llvm-svn: 154487
2012-04-11 07:43:24 +00:00
Hongbin Zheng
91bfd78fb2
Revert "Fix a bug introduced by r153739: We are not able to provide the correct"
...
This reverts commit 2c6bdbf972ac966498489d30a33bfd252df9107d.
llvm-svn: 154486
2012-04-11 07:43:13 +00:00
Tobias Grosser
d654c250c4
Fix typo
...
Suggested by: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 154415
2012-04-10 18:12:19 +00:00
Tobias Grosser
f9fbbdfd74
Fix typos.
...
Pointed out by: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 154337
2012-04-09 19:46:05 +00:00
Hongbin Zheng
ed986ab6a4
Rewritten expandRegion to clarify the intention and improve
...
performance, patched by Johannes Doerfert <johannes@jdoerfert.de>.
llvm-svn: 154260
2012-04-07 15:14:28 +00:00
Hongbin Zheng
3a2d6035d2
ScopDetection: Add some comments to function "expandRegion".
...
llvm-svn: 154259
2012-04-07 12:29:27 +00:00
Hongbin Zheng
94868e6cc6
Speed up SCoP detection time by checking the exit of the region first,
...
patched by Johannes Doerfert <johannes@jdoerfert.de>.
llvm-svn: 154258
2012-04-07 12:29:17 +00:00
Tobias Grosser
84ecc47e1c
CodeGen: Allow Polly to do 'grouped unrolling', but no vector generation.
...
Grouped unrolling means that we unroll a loop such that the different instances
of a certain statement are scheduled right after each other, but we do
not generate any vector code. The idea here is that we can schedule the
bb vectorizer right afterwards and use it heuristics to decide when
vectorization should be performed.
llvm-svn: 154251
2012-04-07 06:16:08 +00:00
Hongbin Zheng
2b4aeca74e
Fix a bug introduced by r153739: We are not able to provide the correct
...
dependent list for target polly-test, hence making "all" from the top
of llvm build directory will cause the target "polly-test" being built
before its dependencing target built.
Patched by Sebastian Pop<spop@codeaurora.org>
llvm-svn: 154162
2012-04-06 03:56:27 +00:00
Tobias Grosser
8239a4cadf
CodeGen: Remove unused declaration
...
llvm-svn: 153954
2012-04-03 12:37:14 +00:00
Tobias Grosser
0905a23806
CodeGen: Recreate old ivs with the original type
...
To avoid overflows we still use a larger type (i64) while calculating the value
of the old ivs. However, we truncate the result to the type of the old iv when
providing it to the new code.
A corresponding test case is added to the polly test suite. Also, a failing test
case is fixed.
This fixes PR12311.
Contributed by: Tsingray Liu <tsingrayliu@gmail.com>
llvm-svn: 153952
2012-04-03 12:24:32 +00:00
Hongbin Zheng
9270a8875a
www: Fix typo, replace "LD_LBIRARY_PATH" by "LD_LIBRARY_PATH" in get_started.
...
llvm-svn: 153948
2012-04-03 09:15:52 +00:00
Hongbin Zheng
da4138d105
www: Append path instead overwrite path when exporting the path of pocc.
...
llvm-svn: 153936
2012-04-03 06:29:27 +00:00
Hongbin Zheng
eedc49c3d4
www: Fix typo in the setting LD_LBIRARY_PATH command, as pointed out by
...
Dmitry N. Mikushin.
llvm-svn: 153934
2012-04-03 04:39:47 +00:00
Tobias Grosser
f00bd96cde
CodeGen: Some style improvements
...
llvm-svn: 153871
2012-04-02 12:26:13 +00:00
Tobias Grosser
d6d7d7e128
CodeGen: Remove unused variable
...
llvm-svn: 153840
2012-04-01 16:55:30 +00:00
Tobias Grosser
de49ef76f6
Remove unneeded alias analysis
...
llvm-svn: 153839
2012-04-01 16:49:48 +00:00
Tobias Grosser
89339067b0
CodeGen: Allow function parameters to be rewritten in getNewValue()
...
When deriving new values for the statements of a SCoP, we assumed that parameter
values are constant within the SCoP and consquently do not need to be rewritten.
For OpenMP code generation this assumption is wrong, as such values are not
available in the OpenMP subfunction and consequently also may need to be
rewritten.
Committed with some changes.
Contributed-By: Johannes Doerfert <s9jodoer@stud.uni-saarland.de>
llvm-svn: 153838
2012-04-01 16:49:45 +00:00
Hongbin Zheng
b5bf8cfa17
Make the "all" target depend on polly-test, so that users can run regression
...
tests by simply typing "make -C tools/polly/test", like llvm's regression
tests.
llvm-svn: 153739
2012-03-30 09:27:16 +00:00
Hongbin Zheng
2700adebfa
Autoconf build: Try to update LLVMPolly.so before running regression tests
...
llvm-svn: 153738
2012-03-30 09:27:07 +00:00
Hongbin Zheng
609089f254
Move the CodeGeneration.cpp to the CodeGen folder and update the build system.
...
Patched by Tsingray.
llvm-svn: 153736
2012-03-30 08:46:18 +00:00
Hongbin Zheng
3ab0434bb7
Get started guide: Suggest users to append the parent directory of cloog
...
libraries to LD_LIBRARY_PATH.
llvm-svn: 153734
2012-03-30 08:18:19 +00:00
Tobias Grosser
f49d11dfac
www: Add more missing features to the TODO list
...
llvm-svn: 153664
2012-03-29 17:53:54 +00:00
Tobias Grosser
f67a77b9b9
www: Update TODO list
...
- Link to several new bug reports that describe problems in more detail
- Add some more items
- Remove owners for inactive projects. This just blocks other people
- Rename 'middle part' to 'optimizer'
llvm-svn: 153647
2012-03-29 13:10:34 +00:00
Tobias Grosser
217616df99
www: Link to console view with only polly buildbots
...
llvm-svn: 153646
2012-03-29 13:10:30 +00:00
Tobias Grosser
900893d2d8
CodeGeneration: Proberly build the dominator tree
...
llvm-svn: 153645
2012-03-29 13:10:26 +00:00
Hongbin Zheng
e53bdfe633
Use python script to silence the expected testcase fails on 32bit platform.
...
llvm-svn: 153644
2012-03-29 13:10:10 +00:00
Hongbin Zheng
689e84fcec
Regession testing: Substitut POLLY_LIB_DIR, which is introduced by commit
...
r152924, by $(LibDir). Because we assume polly built by autoconf is always
in llvm tree.
llvm-svn: 153642
2012-03-29 12:36:52 +00:00
Hongbin Zheng
b7c07f3c2e
Out of tree build support: Set TARGET_TRIPLE from the result of "llvm-config --host-target"
...
instead of loading the "LLVMConfig.cmake" which is only installed when
llvm configured by cmake.
llvm-svn: 153503
2012-03-27 07:56:07 +00:00
Hongbin Zheng
0578aaf77c
Don't fail the lli testcases on 32bit platform.
...
llvm-svn: 153440
2012-03-26 15:16:48 +00:00
Hongbin Zheng
b85c0b3e0c
Out-of-tree build: Load the configuration of the installed llvm.
...
llvm-svn: 153439
2012-03-26 15:16:29 +00:00
Tobias Grosser
5e8ffa83c0
CodeGen: Remove the need for setIVS
...
llvm-svn: 153331
2012-03-23 12:20:36 +00:00
Tobias Grosser
ebf3008ec6
CodeGen: Simplify Variable Names
...
llvm-svn: 153330
2012-03-23 12:20:32 +00:00
Tobias Grosser
f74a4cd3dd
CodeGen: Extract the LLVM-IR generaction of scalar and OpenMP loops.
...
We create a new file LoopGenerators that provides utility classes for the
generation of OpenMP parallel and scalar loops. This means we move a lot
of the OpenMP generation out of the Polly specific code generator.
llvm-svn: 153325
2012-03-23 10:35:18 +00:00
Tobias Grosser
46fc9ca53f
CodeGen: Change some variables to uppercase
...
No functional changes intended.
llvm-svn: 153321
2012-03-23 08:24:10 +00:00
Tobias Grosser
cf88d84d79
test: Remove memaccess prefix
...
The prefix is not needed, as all test cases are already in a separate folder.
llvm-svn: 153320
2012-03-23 08:24:04 +00:00
Tobias Grosser
d6adda3071
CodeGen: Full support for isl_pw expressions in modified access functions.
...
This also adds support for modifiable write accesses (until now only read
accesses where supported). We currently do not derive an exact type for the
expression, but assume that i64 is good enough. This will be improved in future
patches.
Contributed by: Yabin Hu <yabin.hwu@gmail.com>
llvm-svn: 153319
2012-03-23 08:21:22 +00:00
Tobias Grosser
3e72197efc
IndVarSimplify: Disable simplifyIVUsers
...
This functionality is not available in LLVM trunk and breaks the compilation of
Polly. This patch fixes the compilation, but may not be enough to recover all
functionality.
llvm-svn: 153318
2012-03-23 08:02:19 +00:00
Tobias Grosser
d87492bb8c
IndVarSimplify: Adapt to changes in LLVM trunk
...
Contributed-By: Andrew Trick <atrick@apple.com>
llvm-svn: 153317
2012-03-23 08:02:15 +00:00
Tobias Grosser
d1f12db70e
IndVarSimplify: Proberly initialize the pass.
...
llvm-svn: 153316
2012-03-23 08:02:05 +00:00
Tobias Grosser
2f809feec5
ScheduleOptimizer: Remove forgotten debug output
...
llvm-svn: 152936
2012-03-16 18:45:10 +00:00
Tobias Grosser
0acfcdbe7b
Do not fail if a command line argument is given more than once
...
For boolean flags in Polly there is no problem if they are given more than once.
Hence, we can allow it to not fail for build systems that (acciently) add flags
several times.
This fixes: PR12278
Reported by: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 152933
2012-03-16 17:17:16 +00:00
Tobias Grosser
3ec2abc5fb
Don't allow pointer types in affine expressions
...
We currently do not support pointer types in affine expressions. Hence, we
disallow in the SCoP detection. Later we may decide to add support for them.
This fixes PR12277
Reported-By: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 152928
2012-03-16 16:36:47 +00:00
Hongbin Zheng
c507b1e262
Off-tree build support: Also check the existence of the "not" utility.
...
llvm-svn: 152925
2012-03-16 14:34:27 +00:00
Hongbin Zheng
c7584ff270
Off-tree build support: Set the path of Polly's library correctly.
...
llvm-svn: 152924
2012-03-16 14:34:20 +00:00
Hongbin Zheng
33254d1edf
Revert "Minor change: Use config.polly_obj_root to locate Polly's library,"
...
This reverts commit 7dd9b6327b54b08ece32a4607d5ac093b518b79a.
llvm-svn: 152923
2012-03-16 13:49:55 +00:00
Hongbin Zheng
632f5f4934
Off-tree build support: Warn the user if FileCheck cannot be found.
...
llvm-svn: 152921
2012-03-16 13:24:42 +00:00
Hongbin Zheng
95c84eab5c
Minor change: Use config.polly_obj_root to locate Polly's library,
...
so lit find Polly's library in off-tree build.
llvm-svn: 152920
2012-03-16 13:24:34 +00:00
Tobias Grosser
8a5070213a
ScheduleOptimizer: Do not get dependences, if we do not calculate a schedule
...
This solves the 'isl_ctx freed, but some objects still reference it' problem
reported in PR12276.
llvm-svn: 152917
2012-03-16 11:51:41 +00:00
Tobias Grosser
371badaa47
SCEVValidator: Ensure that parameters are recorded correctly
...
This also fixes UMax where we did not correctly keep track of the parameters.
Fixes PR12275.
Reported-By: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 152913
2012-03-16 10:16:28 +00:00
Tobias Grosser
540757b09c
ScevValidator: Add printer for ValidatorResult
...
llvm-svn: 152912
2012-03-16 10:12:37 +00:00
Hongbin Zheng
c0f53b1c00
Polly-test: Add a cmake option "POLLY_TEST_DISABLE_BAR". We can enable
...
this option in the configure step of Polly's builder to get more readable
output from the stdio log.
llvm-svn: 152910
2012-03-16 09:04:09 +00:00
Hongbin Zheng
73e53f510a
More AddUsersIfInteresting related fix.
...
llvm-svn: 152909
2012-03-16 08:31:24 +00:00
Hongbin Zheng
741f8d666f
IndVarSimplify: Adpat to IVUsers::AddUsersIfInteresting change.
...
llvm-svn: 152908
2012-03-16 08:26:12 +00:00
Tobias Grosser
0e979d1628
www: Fix german special characters
...
llvm-svn: 152800
2012-03-15 13:55:38 +00:00
Tobias Grosser
126af46c4c
www: Add another GPGPU publication
...
llvm-svn: 152799
2012-03-15 13:54:12 +00:00
Raghesh Aloor
f41d001384
Memaccess: Updating Documentation
...
Adding documentation for changes in coefficients of induction
variables.
llvm-svn: 152795
2012-03-15 11:40:05 +00:00
Tobias Grosser
00d898d6b0
CodeGen: Call isl_set_copy() within the loop
...
llvm-svn: 152793
2012-03-15 09:34:58 +00:00
Tobias Grosser
2da263e3b6
CodeGen: Start variables with uppercase letters
...
llvm-svn: 152792
2012-03-15 09:34:55 +00:00
Tobias Grosser
d596b37eb0
CodeGen: Get analyses from the Pass instance
...
llvm-svn: 152791
2012-03-15 09:34:52 +00:00
Tobias Grosser
e9ffea2ccf
CodeGen: Introduce helper function to get pointer to int
...
llvm-svn: 152790
2012-03-15 09:34:48 +00:00
Raghesh Aloor
b20b49e3f0
Memaccess: Removing unwanted code
...
When the code is moved to IslGenerator class there is no use for
IslPwAffUserInfo.
llvm-svn: 152612
2012-03-13 05:51:44 +00:00
Tobias Grosser
3cbe5cfff3
Remove FinalRead
...
The FinalRead statement represented a virtual read that is executed after the
SCoP. It was used when we verified the correctness of a schedule by checking if
it yields the same FLOW dependences as the original code. This is only works, if
we have a final read that reads all memory at the end of the SCoP.
We now switched to just checking if a schedule does not introduce negative
dependences and also consider WAW WAR dependences. This restricts the schedules
a little bit more, but we do not have any optimizer that would calculate a more
complex schedule. Hence, for now final reads are obsolete.
llvm-svn: 152319
2012-03-08 15:21:51 +00:00
Tobias Grosser
45ed487a9c
Dependences: Fix typo
...
llvm-svn: 152318
2012-03-08 15:21:42 +00:00
Tobias Grosser
9ffa550dd9
www: Really fix it
...
llvm-svn: 152311
2012-03-08 12:02:59 +00:00
Tobias Grosser
9206404faf
www: Fix link to image
...
llvm-svn: 152310
2012-03-08 12:02:10 +00:00
Tobias Grosser
f67424ef96
www: Move the Polly architecture to the documentation
...
llvm-svn: 152309
2012-03-08 11:59:43 +00:00
Tobias Grosser
3495b42f9d
www: Point to the memaccess documentation
...
llvm-svn: 152308
2012-03-08 11:55:27 +00:00
Tobias Grosser
7a82da99b1
www: Simplify bugs text
...
llvm-svn: 152307
2012-03-08 11:45:49 +00:00
Tobias Grosser
e586f0ec5c
www: Merge Examples with Documentation section
...
llvm-svn: 152306
2012-03-08 11:37:39 +00:00
Tobias Grosser
f9250a1cb0
www: Update todo page
...
llvm-svn: 152305
2012-03-08 11:31:54 +00:00
Tobias Grosser
62afff33c8
Dependences: Simplify isParallelDimension
...
llvm-svn: 152238
2012-03-07 17:42:49 +00:00
Tobias Grosser
04734a4843
Dependences: Restructure and Document code
...
llvm-svn: 152237
2012-03-07 17:42:45 +00:00
Tobias Grosser
9691d23d37
Dependences: Prettify the header slightly
...
llvm-svn: 152236
2012-03-07 17:42:39 +00:00
Tobias Grosser
1d8c0d799c
Dependences: Remove unused no_source information
...
llvm-svn: 152235
2012-03-07 17:42:36 +00:00
Tobias Grosser
5c0e7190ff
Dependences: Simplify the check if a new scattering is valid.
...
We now just check if the new scattering would create non-positive dependences.
This is a lot faster than recalculating dependences (which is especially slow
on tiled code).
llvm-svn: 152230
2012-03-07 16:10:40 +00:00
Tobias Grosser
29d7255baf
www: Fix some command lines in the examples
...
llvm-svn: 152229
2012-03-07 14:30:54 +00:00
Tobias Grosser
3c2efba7ff
CodeGen: Fix typo 'form' -> 'from'
...
Suggested by: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 152109
2012-03-06 07:38:57 +00:00
Tobias Grosser
55d5208eae
CodeGen: Document and beautify the parts of the BlockGenerators
...
llvm-svn: 151917
2012-03-02 15:20:39 +00:00
Tobias Grosser
df3823750e
CodeGen: Pass the scalar maps properly
...
llvm-svn: 151916
2012-03-02 15:20:35 +00:00
Tobias Grosser
8367e0c3d2
CodeGen: Prettify
...
llvm-svn: 151915
2012-03-02 15:20:31 +00:00
Tobias Grosser
260e86d3f0
CodeGen: Style
...
llvm-svn: 151914
2012-03-02 15:20:28 +00:00
Tobias Grosser
08a8238b7a
CodeGen: Move domain into the VectorBlockGenerator
...
llvm-svn: 151913
2012-03-02 15:20:24 +00:00
Tobias Grosser
f6beec674e
CodeGen: Simplify the generation of a splat
...
llvm-svn: 151912
2012-03-02 15:20:21 +00:00
Tobias Grosser
415245def5
CodeGen: Prettify function
...
llvm-svn: 151911
2012-03-02 15:20:17 +00:00
Tobias Grosser
80998e7618
CodeGen: Create separate VectorBlockGenerator
...
llvm-svn: 151907
2012-03-02 11:27:28 +00:00
Tobias Grosser
642c41116d
CodeGen: Extract code generation for isl types into its own class
...
llvm-svn: 151906
2012-03-02 11:27:25 +00:00
Tobias Grosser
44d169552b
CodeGen: Remove unneeded member variable
...
llvm-svn: 151905
2012-03-02 11:27:21 +00:00
Tobias Grosser
32152cbd1c
CodeGen: Extract code into the new function copyVectorInstruction
...
llvm-svn: 151904
2012-03-02 11:27:18 +00:00
Tobias Grosser
fc1153fb09
CodeGen: Sink loop to iterate vector lanes down into copyInstruction
...
llvm-svn: 151903
2012-03-02 11:27:15 +00:00
Tobias Grosser
8b4bf8b2fa
CodeGenerator: Rename functions to show they produce vector code
...
llvm-svn: 151902
2012-03-02 11:27:11 +00:00
Tobias Grosser
b35d9c1dfc
Fix typo
...
llvm-svn: 151901
2012-03-02 11:27:08 +00:00
Tobias Grosser
8927a44f90
CodeGen: No need to forward the vector dimension
...
llvm-svn: 151900
2012-03-02 11:27:05 +00:00
Tobias Grosser
f81a691ef7
CodeGen: Store the vector width in the block generator
...
This allows us to remove a lot of redundant parameters.
llvm-svn: 151899
2012-03-02 11:27:02 +00:00
Tobias Grosser
32386750a6
CodeGen: Remove dead code
...
llvm-svn: 151898
2012-03-02 11:26:59 +00:00
Tobias Grosser
8412cda5ad
Codegen: Add Pass as a member variable of BlockGenerator
...
llvm-svn: 151897
2012-03-02 11:26:55 +00:00
Tobias Grosser
14bcbd5380
CodeGen: Simplify and Prettify code
...
llvm-svn: 151896
2012-03-02 11:26:52 +00:00
Tobias Grosser
c941ede854
CodeGen: Hide the private implementation of the block generator
...
llvm-svn: 151895
2012-03-02 11:26:49 +00:00
Tobias Grosser
262df3b9e7
CodeGen: Start with uppercase letter
...
llvm-svn: 151894
2012-03-02 11:26:46 +00:00
Tobias Grosser
ce3f537ae2
CodeGen: Only check once if a loop is parallel
...
Suggested by: Sebastian Pop <sebpop@gmail.com>
llvm-svn: 151893
2012-03-02 11:26:42 +00:00
Tobias Grosser
2e04dad751
www: Fix typo founded -> funded
...
Found-By: Christian Lengauer
llvm-svn: 151810
2012-03-01 15:02:21 +00:00
Tobias Grosser
e550fa2f95
www: Fix french special characters
...
llvm-svn: 150959
2012-02-20 14:03:56 +00:00
Tobias Grosser
be3df7b3ee
Add information, that Polly became a real LLVM project
...
llvm-svn: 150955
2012-02-20 08:41:55 +00:00
Tobias Grosser
7cde0845b5
www: Update links polly.grosser.es -> polly.llvm.org
...
llvm-svn: 150954
2012-02-20 08:41:51 +00:00
Tobias Grosser
92f5480f04
ScheduleOpt: Add option to bound scheduling coefficients of dimensions.
...
llvm-svn: 150953
2012-02-20 08:41:47 +00:00
Tobias Grosser
6b675e3108
Update isl
...
This version of isl, contains some recently committed scheduler patches.
llvm-svn: 150952
2012-02-20 08:41:44 +00:00
Tobias Grosser
4d63b9d0f9
ScheduleOptimizer: Dump the calculated schedule in debug mode
...
llvm-svn: 150951
2012-02-20 08:41:21 +00:00
Tobias Grosser
992e60ca57
ScheduleOpt: Add option to bound constant term coefficients
...
llvm-svn: 150950
2012-02-20 08:41:15 +00:00
Tobias Grosser
9a44b97913
Revert "CodeGeneration: Implement ceild/floord exactly as CLooG does"
...
I think I did not get the implementation right. As the current implementation
works well, we will just stick with it for now.
llvm-svn: 150691
2012-02-16 14:13:19 +00:00
Tobias Grosser
26fb5efc6d
www: Add 'pet' paper to the publications
...
llvm-svn: 150676
2012-02-16 09:59:34 +00:00
Tobias Grosser
62a3c96e5d
CodeGen: Code following a clast_guard comes after the merge block
...
llvm-svn: 150675
2012-02-16 09:56:21 +00:00
Tobias Grosser
eeafc867ed
RegisterPasses: Allow to print the CFG right after polly
...
llvm-svn: 150674
2012-02-16 09:56:17 +00:00
Tobias Grosser
e04f318772
CodeGeneration: Implement ceild/floord exactly as CLooG does
...
llvm-svn: 150673
2012-02-16 09:56:14 +00:00
Tobias Grosser
906eafe32c
CodeGen: Simplify code slightly
...
llvm-svn: 150672
2012-02-16 09:56:10 +00:00
Tobias Grosser
099cb16700
RegisterPasses: Add -polly-run-export-cloog option
...
llvm-svn: 150671
2012-02-16 09:56:07 +00:00
Tobias Grosser
f12cea4257
CodeGen: Update the BasicBlock pointer correctly when creating 'polly.split...'
...
Problem reported by: Ryan Taylor <ryta1203@gmail.com>
llvm-svn: 150577
2012-02-15 09:58:53 +00:00
Tobias Grosser
cb47dfeb96
CodeGen: Retain the old BB names within the original SCoP
...
llvm-svn: 150576
2012-02-15 09:58:50 +00:00
Tobias Grosser
b61e6318ac
CodeGen: Name stmt bbs 'polly.stmt.' + OriginalName
...
llvm-svn: 150575
2012-02-15 09:58:46 +00:00
Tobias Grosser
1e03ad7213
ScheduleOpt: Only get RAW dependences if we asked for raw
...
llvm-svn: 150574
2012-02-15 09:58:42 +00:00
Tobias Grosser
1deda29598
ScheduleOpt: Allow to configure for which dependences to optimize
...
We can either optimize for RAW dependences or for all dependences.
For the moment, I do not see a big difference here.
llvm-svn: 150484
2012-02-14 14:02:48 +00:00
Tobias Grosser
00383a75b8
CodeGen: Get dependences for validity and proximity separately
...
This change itself should not change functionality, but it will make it easier
to support use different dependence kinds in for validity and proximity
constraints.
llvm-svn: 150483
2012-02-14 14:02:44 +00:00
Tobias Grosser
5f9a762056
ScopInfo: Add Scop::getDomains()
...
llvm-svn: 150482
2012-02-14 14:02:40 +00:00
Tobias Grosser
cef36d5b99
Copy IndVarSimplify pass from LLVM to Polly
...
This allows us to enable -enable-iv-rewrite by default and releases LLVM from
the burdon to keep that feature. This is an intermediate step. We plan to soon
remove the need for rewritten induction variables entirely.
llvm-svn: 150481
2012-02-14 14:02:33 +00:00
Tobias Grosser
0ac9214c2f
Recommit "CodeGen: Maintain a valid CFG during code generation"
...
When I first tried to commit this patch, the builder pointed after generation
of a loop still into the loop body. This means that code that was supposed to
be generated after the loop was generated right into the loop body. We fixed
this by pointing the builder to the BB after the loop, as soon as code
generation of the loop body itself is finished.
llvm-svn: 150480
2012-02-14 14:02:27 +00:00
Tobias Grosser
1773fb1c00
Revert "CodeGen: Maintain a valid CFG during code generation"
...
This commit contained some bugs. Revert it until I get around to fix them.
llvm-svn: 150431
2012-02-13 23:31:43 +00:00
Tobias Grosser
98610eed34
ScheduleOptimizer: Change vars to start with uppercase letter
...
llvm-svn: 150430
2012-02-13 23:31:39 +00:00
Tobias Grosser
04eadc476e
tests: Replace . by %s
...
llvm-svn: 150377
2012-02-13 12:29:43 +00:00
Tobias Grosser
5c853bab78
CodeGen: Remove unused variable.
...
llvm-svn: 150376
2012-02-13 12:29:34 +00:00
Tobias Grosser
0b6c613a10
CodeGen: Maintain a valid CFG during code generation
...
Before this change we built the CFG such that it was only valid after code was
fully generated. During code generation itself, it was often incomplete. After
this change always maintain a valid CFG. This will later allow us to use the
SCEVExpander during code generation. This is the first step to get rid of the
independent blocks pass.
llvm-svn: 150339
2012-02-12 12:09:53 +00:00
Tobias Grosser
194beea739
CodeGen: Remove unused instruction
...
llvm-svn: 150338
2012-02-12 12:09:49 +00:00
Tobias Grosser
8518bbe39f
CodeGen: Always name merge block
...
llvm-svn: 150337
2012-02-12 12:09:46 +00:00
Tobias Grosser
bd608a8949
CodeGen: Start variable names with uppercase letter.
...
llvm-svn: 150336
2012-02-12 12:09:41 +00:00
Tobias Grosser
0dbbdd7637
Codegen: Give split and merge basic blocks better names
...
llvm-svn: 150335
2012-02-12 12:09:37 +00:00
Tobias Grosser
d855cc5720
CodeGen: Further improve style
...
llvm-svn: 150334
2012-02-12 12:09:32 +00:00
Tobias Grosser
b1c9599faa
CodeGen: Move generation of OpenMP out of the way
...
We also fix some style issues. This change contains no functional change.
llvm-svn: 150333
2012-02-12 12:09:27 +00:00
Tobias Grosser
a2a9b9a3e8
RegisterPasses: Make sure to always execute the SCoPInfo pass
...
llvm-svn: 149871
2012-02-06 14:53:51 +00:00
Tobias Grosser
c327932cf5
ScopInfo: Simplify some isl code
...
llvm-svn: 149503
2012-02-01 14:23:36 +00:00
Tobias Grosser
5772e65be0
CodeGeneration: Rephrase comment slightly
...
llvm-svn: 149502
2012-02-01 14:23:33 +00:00
Tobias Grosser
bda1f8f808
CodeGeneration: Order includes alphabetically
...
llvm-svn: 149501
2012-02-01 14:23:29 +00:00
Tobias Grosser
ab1f7c4ee3
www: More typos
...
Pointed out by Chad Rosier
llvm-svn: 149456
2012-02-01 00:08:10 +00:00
Tobias Grosser
f316b38e20
www: Add missing -mllvm to documentation
...
Found by Ryan Taylor
llvm-svn: 149415
2012-01-31 20:24:21 +00:00
Tobias Grosser
1f1daa9ac7
www: Spelling fixes
...
Reported by Sebastian Pop
llvm-svn: 149410
2012-01-31 19:54:50 +00:00
Tobias Grosser
1d348673e0
Add a sceleton for a polyhedral dead code elimination.
...
Such a dead code elimination can remove redundant stores to arrays. It can also
eliminate calculations where the results are stored to memory but where they are
overwritten before ever being read. It may also fix bugs like:
http://llvm.org/bugs/show_bug.cgi?id=5117
This commit just adds a sceleton without any functionality.
If anybody is interested to learn about polyhedral optimizations this would be
a good task. Well definined, self contained and pretty simple. Ping me if you
want to start and you need some pointers to get going.
llvm-svn: 149386
2012-01-31 14:00:27 +00:00
Tobias Grosser
8ad6bc339a
Schedule: Sort includes and remove useless ones
...
llvm-svn: 149383
2012-01-31 13:26:29 +00:00
Tobias Grosser
ccda0d5060
www: Add news about the improved isl scheduling support
...
llvm-svn: 149374
2012-01-31 09:13:12 +00:00
Tobias Grosser
62f55bc3b0
www: Remove PoCC from the prerequisites
...
llvm-svn: 149373
2012-01-31 08:50:23 +00:00
Tobias Grosser
3d8bec8db9
polly.sh: Do not automatically install scoplib either.
...
It is only needed for PoCC. We may update our openscop support which is
expected to be wider used. If this is the case we could automatically build
openscop.
llvm-svn: 149372
2012-01-31 08:50:19 +00:00
Tobias Grosser
86b6b62c2c
www: Move PoCC to the end of the installation section
...
llvm-svn: 149371
2012-01-31 08:50:16 +00:00
Tobias Grosser
5d38c64b79
polly.sh: Do not build PoCC automatically
...
As we now have a scheduler that works, I do not believe a lot of people need
PoCC right ahead. People who want to do an in depth investigation of the
different schedulers can install it as well manually.
llvm-svn: 149370
2012-01-31 08:50:12 +00:00
Tobias Grosser
9f75aba51f
Remove leftover constant
...
llvm-svn: 149290
2012-01-30 22:46:22 +00:00
Tobias Grosser
18aa54cbae
Scheduling: Limiting the constant term is not necessary any more
...
Due to our gist simplifications, limiting the constant term does not seem to
be necessary any more.
Pointed out by Sven Verdoolaege
llvm-svn: 149288
2012-01-30 22:44:05 +00:00
Tobias Grosser
a4ea90b88c
Typo: Maxize -> Mazimize
...
Found by Sebastian Pop.
llvm-svn: 149287
2012-01-30 22:43:56 +00:00
Tobias Grosser
50ff31dabe
Scheduling: Set fusion strategy to minimal
...
This has shown better results for 2mm, 3mm and a couple of other benchmarks.
After this we show consistenly better results as PoCC with maxfuse. We need
to see if PoCC can also give better results with another fusion strategy.
llvm-svn: 149267
2012-01-30 19:38:58 +00:00
Tobias Grosser
95e860c19c
Scheduling: Add option to disable schedule_maximise_band_depth
...
maximise_band_depth does not seem to have any effect for now, but it may help to
increase the amount of tileable loops. We expose the flag to be able to analyze
its effects when looking into individual benchmarks.
llvm-svn: 149266
2012-01-30 19:38:54 +00:00
Tobias Grosser
b3ad85b03c
Scheduler: Allow to select the fusion strategy
...
llvm-svn: 149265
2012-01-30 19:38:50 +00:00
Tobias Grosser
42152ff3c7
Scheduling: Use original schedule if we cannot find a new one
...
After this we can now compile all polybench 2.0 kernels without any compiler
crash.
llvm-svn: 149264
2012-01-30 19:38:47 +00:00
Tobias Grosser
a26db47083
Scheduler: Simplify dependences by default (only isl)
...
This speeds up the scheduler by orders of magnitude and in addition yields often
to a better schedule.
With this we can compile all polybench kernels with less than 5x compile time
overhead. In general the overhead is even less than 2-3x. This is still with
running a lot of redundant passes and no compile time tuning at all. There are
several obvious areas where we can improve here further.
There are also two test cases where we cannot find a schedule any more (cholesky
and another). I will look into them later on.
With this we have a very solid base line from which we can start to optimize
further.
llvm-svn: 149263
2012-01-30 19:38:43 +00:00
Tobias Grosser
061e20d2f8
Use isl version: 3c66541593a6bf3b5a3d35d31567abe6c9e5a04b
...
This allows us to set the fusion strategy and to gist-simplify union_maps.
llvm-svn: 149262
2012-01-30 19:38:40 +00:00