Commit Graph

50 Commits

Author SHA1 Message Date
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 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 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
Tobias Grosser 55927aa400 Use llvm::*Type without const
llvm-svn: 135384
2011-07-18 09:53:32 +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 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 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 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 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 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 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 4e3f9a4c5c CodeGeneration: Use FIXME instead of XXX
Cleanup suggested by ether.

llvm-svn: 131898
2011-05-23 15:23:36 +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 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
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
Tobias Grosser ca3bef8461 JSONExport: Some cleanups
llvm-svn: 130481
2011-04-29 06:52:36 +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