summaryrefslogtreecommitdiffstats
path: root/polly/test
Commit message (Collapse)AuthorAgeFilesLines
...
* [Simplify] Remove empty partial accesses first. NFC.Michael Kruse2017-07-281-1/+1
| | | | | | So follow-up cleanup do not need special handling for such accesses. llvm-svn: 309401
* [ScopDetect] add `-polly-ignore-func` flag to ignore functions by name.Siddharth Bhat2017-07-281-0/+124
| | | | | | | | | | Ignore all functions whose name match a regex. Useful because creating a regex that does *not* match a string is somewhat hard. Example: https://stackoverflow.com/questions/1240275/how-to-negate-specific-word-in-regex llvm-svn: 309377
* [GPGPU] Do not require the Scop::Context to have information about all ↵Tobias Grosser2017-07-281-0/+41
| | | | | | parameters llvm-svn: 309368
* [GPGPU] Fix compilation issue with latest CUDA upgrade to i128Tobias Grosser2017-07-282-3/+3
| | | | llvm-svn: 309366
* [Simplify] Count PHINodes in simplifiable exit nodes as escaping use.Michael Kruse2017-07-271-0/+37
| | | | | | | | | After region exit simplification, the incoming block of a phi node in the SCoP region's exit block lands outside of the region. Since we treat SCoPs as if this already happened, we need to account for that when looking for outside uses of scalars (i.e. escaping scalars). llvm-svn: 309271
* [Simplify] Fix invalid removal write for escaping values.Michael Kruse2017-07-261-0/+44
| | | | | | | | | A PHI node's incoming block is the user of its operand, not the PHI's parent. Assuming the PHINode's parent being the user lead to the removal of a MemoryAccesses because its use was assumed to be inside of the SCoP. llvm-svn: 309164
* [SCEVValidator] Loop exit values of loops before the SCoP are synthesizable.Michael Kruse2017-07-263-2/+147
| | | | | | | | | | | | | | | | | | | | | | | In the following loop: int i; for (i = 0; i < func(); i+=1) ; SCoP: for (int j = 0; j<n; j+=1) S(i, j) The value i is synthesizable in the SCoP that includes only the j-loop. This is because i is fixed within the SCoP, it is irrelevant whether it originates from another loop. This fixes a strange case where a PHI was synthesiable in a SCoP, but not its incoming value, triggering an assertion. This should fix MultiSource/Applications/sgefa/sgefa of the perf-x86_64-penryn-O3-polly-before-vectorizer-unprofitable buildbot. llvm-svn: 309109
* [IslAst] Untangle IslAst lit-testcases from specifics of the legacy-PMPhilip Pfaffe2017-07-256-12/+4
| | | | | | | | | | | | | | | | | | | | Summary: This consists instances of two changes: - Accept any order of checks for a specific loop form, that appear in different order in the new vs legacy-PM. - Remove checks for specific regions. Reviewers: grosser Reviewed By: grosser Subscribers: pollydev, llvm-commits Tags: #polly Differential Revision: https://reviews.llvm.org/D35837 llvm-svn: 308976
* [ScopInfo] Fix assertion for PHIs not in a region stmts entry.Michael Kruse2017-07-251-0/+63
| | | | | | | A PHI node within a region statement is legal, but does not have a MemoryKind::PHI access. llvm-svn: 308973
* [PPCGCodeGeneration] Skip arrays with empty extent.Siddharth Bhat2017-07-251-0/+84
| | | | | | | | | | | | | | | | | Invariant load hoisted scalars, and arrays whose size we can statically compute to be 0 do not need to be allocated as arrays. Invariant load hoisted scalars are sent to the kernel directly as parameters. Earlier, we used to allocate `0` bytes of memory for these because our computation of size from `PPCGCodeGeneration::getArraySize` would result in `0`. Now, since we don't invariant loads as arrays in PPCGCodeGeneration, this problem does not occur anymore. Differential Revision: https://reviews.llvm.org/D35795 llvm-svn: 308971
* [ForwardOpTree] Support read-only value uses.Michael Kruse2017-07-241-0/+84
| | | | | | | | | | | | Read-only values (values defined before the SCoP) require special handing with -polly-analyze-read-only-scalars=true (which is the default). If active, each use of a value requires a read access. When a copied value uses a read-only value, we must also ensure that such a MemoryAccess is available or is created. Differential Revision: https://reviews.llvm.org/D35764 llvm-svn: 308876
* [Polly] [NFC] [ScopDetection] Make `polly-only-func` perform regex scop name ↵Siddharth Bhat2017-07-241-0/+130
| | | | | | | | | | | | | | match. Summary: - We were using `.count` in `StringRef`, which matches substrings. - We may want to use this for equality as well. - Generalise this, so allow regexes as a parameter to `polly-only-func`. Differential Revision: https://reviews.llvm.org/D35728 llvm-svn: 308875
* [Simplify] Remove partial write accesses with empty domain.Michael Kruse2017-07-223-0/+86
| | | | | | | | | | | If the access relation's domain is empty, the access will never be executed. We can just remove it. We only remove write accesses. Partial read accesses are not yet supported and instructions in the statement might require the llvm::Value holding the read's result to be defined. llvm-svn: 308830
* [ForwardOpTree] Support hoisted invariant loads.Michael Kruse2017-07-221-0/+64
| | | | | | | | Hoisted loads can be trivially supported because there are no MemoryAccess to be modified, the loaded value is just available at code generation. llvm-svn: 308826
* [ForwardOpTree] Introduce the -polly-optree pass.Michael Kruse2017-07-227-0/+369
| | | | | | | | | | | | | | | | | | This pass 'forwards' operand trees into statements that use them in order to avoid scalar dependencies. This minimal implementation handles only the case of speculatable instructions. We will successively add support for: - Hoisted loads - Read-only values - Synthesizable values - Loads - PHIs - Forwarding only parts of the tree Differential Revision: https://reviews.llvm.org/D35754 llvm-svn: 308825
* Untangle ScopInfo lit-testcases from specifics of the legacy-PMPhilip Pfaffe2017-07-217-22/+19
| | | | | | | | | | | | | | | | | | | Summary: For the ScopInfo lit testsuite, this patch removes some dependences on output behaviour of the legacy PM. In most cases, these tests checked the tool output for labels created by the pass printer in the legacy PM. This doesn't work for the new PM anymore. Untangling the testcases is the first step to porting the testsuite for the new PM infrastructure. Reviewers: grosser, Meinersbur, bollu Reviewed By: grosser Subscribers: llvm-commits, pollydev Tags: #polly Differential Revision: https://reviews.llvm.org/D35727 llvm-svn: 308754
* [Polly][GPGPU] Added SPIR Code Generation and Corresponding Runtime Support ↵Philipp Schaad2017-07-211-0/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | for Intel Summary: Added SPIR Code Generation to the PPCG Code Generator. This can be invoked using the polly-gpu-arch flag value 'spir32' or 'spir64' for 32 and 64 bit code respectively. In addition to that, runtime support has been added to execute said SPIR code on Intel GPU's, where the system is equipped with Intel's open source driver Beignet (development version). This requires the cmake flag 'USE_INTEL_OCL' to be turned on, and the polly-gpu-runtime flag value to be 'libopencl'. The transformation of LLVM IR to SPIR is currently quite a hack, consisting in part of regex string transformations. Has been tested (working) with Polybench 3.2 on an Intel i7-5500U (integrated graphics chip). Reviewers: bollu, grosser, Meinersbur, singam-sanjay Reviewed By: grosser, singam-sanjay Subscribers: pollydev, nemanjai, mgorny, Anastasia, kbarton Tags: #polly Differential Revision: https://reviews.llvm.org/D35185 llvm-svn: 308751
* [IslNodeBuilder] Relax complexity check in invariant loads and run it earlyTobias Grosser2017-07-202-70/+73
| | | | | | | | | | | | | | | | | | | | | | | | When performing invariant load hoisting we check that invariant load expressions are not too complex. Up to this commit, we performed this check by counting the sum of dimensions in the access range as a very simple heuristic. This heuristic is a little too conservative, as it prevents hoisting for any scops with a very large number of parameters. Hence, we update the heuristic to only count existentially quantified dimensions and set dimensions. We expect this to still detect the problematic expressions in h264 because of which this check was originally introduced. For some unknown reason, this complexity check was originally committed in IslNodeBuilder. It really belongs in ScopInfo, as there is no point in optimizing a program which we could have known earlier cannot be code generated. The benefit of running the check early is that we can avoid to even hoist checks that are expensive to code generate as invariant loads. This can be seen in the changed tests, where we now indeed detect the scop, but just not invariant load hoist the complicated access. We also improve the formatting of the code, document it, and use isl++ to simplify expressions. llvm-svn: 308659
* Support fabs and copysign in Polly-ACCTobias Grosser2017-07-201-4/+13
| | | | llvm-svn: 308649
* [Simplify] Remove unused instructions and accesses.Michael Kruse2017-07-204-0/+193
| | | | | | | | | | | | | | | | | | | | | | | | | | Use a mark-and-sweep algorithm to find and remove unused instructions and MemoryAccesses. This is useful in particular to remove scalar writes that are never used anywhere. A scalar write in a loop induces a write-after-write dependency that stops the loop iterations to be rescheduled. Such writes can be a result of previous transformations such as DeLICM and operand tree forwarding. It adds a new class VirtualInstruction that represents an instruction in a particular statement. At the moment an instruction can only belong to the statement that represents a BasicBlock. In the future, instructions can be in one of multiple statements representing a BasicBlock (Nandini's work), in different statements than its BasicBlock would indicate, and even multiple statements at once (by forwarding operand trees). It also integrates nicely with the VirtualUse class. ScopStmt::contains(Instruction*) currently uses the instruction's parent BasicBlock to check whether it contains the instruction. It will need to check the actual statement list when one of the aforementioned features become possible. Differential Revision: https://reviews.llvm.org/D35656 llvm-svn: 308626
* [PPCGCodeGen] [3/3] Update PPCGCodeGen + tests to latest ppcg.Siddharth Bhat2017-07-2013-137/+74
| | | | | | | | | | | | | | | | | | | | | This commit *WILL COMPILE*. 1. `PPCG` now uses `isl_multi_pw_aff` instead of an array of `pw_aff`. This needs us to adjust how we index array bounds and how we construct array bounds. 2. `PPCG` introduces two new kinds of nodes: `init_device` and `clear_device`. We should investigate what the correct way to handle these are. 3. `PPCG` has gotten smarter with its use of live range reordering, so some of the tests have a qualitative improvement. 4. `PPCG` changed its output style, so many test cases need to be updated to fit the new style for `polly-acc-dump-code` checks. Differential Revision: https://reviews.llvm.org/D35677 llvm-svn: 308625
* [ScopInfo] Add support for wrap-around of integers in unsigned comparisons.Michael Kruse2017-07-208-5/+189
| | | | | | | | | | | | | | | | | | | | | | | | This is one possible solution to implement wrap-arounds for integers in unsigned icmp operations. For example, store i32 -1, i32* %A_addr %0 = load i32, i32* %A_addr %1 = icmp ult i32 %0, 0 %1 should hold false, because under the assumption of unsigned integers, -1 should wrap around to 2^32-1. However, previously. it was assumed that the MSB (Most Significant Bit - aka the Sign bit) was never set for integers in unsigned operations. This patch modifies the buildConditionSets function in ScopInfo.cpp to give better information about the integers in these unsigned comparisons. Contributed-by: Annanay Agarwal <cs14btech11001@iith.ac.in> Differential Revision: https://reviews.llvm.org/D35464 llvm-svn: 308608
* [CMake] Fix r307650: Readd missing dependency.Philip Pfaffe2017-07-191-1/+2
| | | | | | | The commit erroneously removed the dependency of the Polly tests on things like opt and FileCheck. Add that dependency back. llvm-svn: 308512
* [FIX] Update test/ScheduleOptimizer/pattern-matching-based-opts_11.ll.Roman Gareev2017-07-191-0/+1
| | | | llvm-svn: 308501
* [FIX] Fix pattern-matching-based-opts_11.ll.Roman Gareev2017-07-191-3/+14
| | | | llvm-svn: 308499
* Make the pattern matching work with modified memory accessesRoman Gareev2017-07-192-0/+98
| | | | | | | | | | | | | Some optimizations (e.g., DeLICM) can modify memory accesses (e.g., change their MemoryKind). Consequently, the pattern matching should take it into the account. Reviewed-by: Tobias Grosser <tobias@grosser.es>, Michael Kruse <llvm@meinersbur.de> Differential Revision: https://reviews.llvm.org/D33138 llvm-svn: 308494
* [Test] Do not pipe binary data to FileCheck.Michael Kruse2017-07-191-1/+1
| | | | llvm-svn: 308437
* [Polly] [OptDiag] Updating Polly Diagnostics RemarksEli Friedman2017-07-172-1/+89
| | | | | | | | | | | | | | | | | Utilizing newer LLVM diagnostic remark API in order to enable use of opt-viewer tool. Polly Diagnostic Remarks also now appear in YAML remark file. In this patch, I've added the OptimizationRemarkEmitter into certain classes where remarks are being emitted and update the remark emit calls itself. I also provide each remark a BasicBlock or Instruction from where it is being called, in order to compute the hotness of the remark. Patch by Tarun Rajendran! Differential Revision: https://reviews.llvm.org/D35399 llvm-svn: 308233
* [ScopInfo] Simplify new access functions under domain contextTobias Grosser2017-07-1713-117/+117
| | | | | | | | | | | | | | | | | | | | | | | Summary: We do not keep domain constraints on access functions when building the scop. Hence, for consistency reasons, it makes also sense to not include them when storing a new access function. This change results in simpler access functions that make output easier to read. This patch also helps to make DeLICMed memory accesses to be understood by our matrix multiplication pattern matching pass. Further changes to the matrix multiplication pattern matching are needed for this to work, so the corresponding test case will be added in a future commit. Reviewers: Meinersbur, bollu, gareevroman, efriedma, huihuiz, sebpop, simbuerg Subscribers: pollydev, llvm-commits Tags: #polly Differential Revision: https://reviews.llvm.org/D35237 llvm-svn: 308215
* [PPCGCodeGeneration] Generate invariant loads before trying to generate IR.Siddharth Bhat2017-07-171-0/+71
| | | | | | | | | - We should call `preloadInvariantLoads` to make sure that code is generated for invariant loads in the kernel. Differential Revision: https://reviews.llvm.org/D35410 llvm-svn: 308187
* [ScopDetection] If a loop is not part of a scop, none of it backedges can beTobias Grosser2017-07-153-49/+58
| | | | | | | | | | | | | | | | | | This patch makes sure that in case a loop is not fully contained within a region that later forms a SCoP, none of the loop backedges are allowed to be part of the region. We currently do not support the situation where only some of a loops backedges are part of a scop. Today, this can break both scop modeling and code generation. One such breaking test case is for example test/ScopDetectionDiagnostics/loop_partially_in_scop-2.ll, where we totally forgot to code generate some of the backedges. Fortunately, it is commonly not necessary to support these partial loops, it is way more common that either no backedge is included in a region or all loop backedge are included. This fixes a recent miscompile in MultiSource/Benchmarks/MiBench/consumer-typeset which was exposed after r306477. llvm-svn: 308113
* [PPCGCodeGeneration] Fix runtime check adjustments since they make ↵Siddharth Bhat2017-07-141-0/+84
| | | | | | | | | | | | | | | | | | | | | | | assumptions about BB layout. - There is a conditional branch that is used to switch between the old and new versions of the code. - If we detect that the build was unsuccessful, `PPCGCodeGeneration` will change the runtime check to be always set to false. - To actually *reach* this runtime check instruction, `PPCGCodeGeneration` was using assumptions about the layout of the BBs. - However, invariant load hoisting violates this assumption by inserting an extra basic block in the middle. - Fix the assumption on the layout by having `createScopConditionally` return the conditional branch instruction. - Use this reference to set to always-false. llvm-svn: 308010
* [Invariant Loads] Do not consider invariant loads to have dependences.Siddharth Bhat2017-07-1310-47/+141
| | | | | | | | | | | | | | | | | We need to relax constraints on invariant loads so that they do not create fake RAW dependences. So, we do not consider invariant loads as scalar dependences in a region. During these changes, it turned out that we do not consider `llvm::Value` replacements correctly within `PPCGCodeGeneration` and `ISLNodeBuilder`. The replacements dictated by `ValueMap` were not being followed in all places. This was fixed in this commit. There is no clean way to decouple this change because this bug only seems to arise when the relaxed version of invariant load hoisting was enabled. Differential Revision: https://reviews.llvm.org/D35120 llvm-svn: 307907
* [PPCGCodeGen] Differentiate kernels based on their parent ScopSingapuram Sanjay Srivallabh2017-07-127-12/+136
| | | | | | | | | | | | | | | | | | | | | Summary: Add a sequence number that identifies a ptx_kernel's parent Scop within a function to it's name to differentiate it from other kernels produced from the same function, yet different Scops. Kernels produced from different Scops can end up having the same name. Consider a function with 2 Scops and each Scop being able to produce just one kernel. Both of these kernels have the name "kernel_0". This can lead to the wrong kernel being launched when the runtime picks a kernel from its cache based on the name alone. This patch supplements D33985, by differentiating kernels across Scops as well. Previously (even before D33985) while profiling kernels generated through JIT e.g. Julia, [[ https://groups.google.com/d/msg/polly-dev/J1j587H3-Qw/mR-jfL16BgAJ | kernels associated with different functions, and even different SCoPs within a function, would be grouped together due to the common name ]]. This patch prevents this grouping and the kernels are reported separately. Reviewers: grosser, bollu Reviewed By: grosser Subscribers: mehdi_amini, nemanjai, pollydev, kbarton Tags: #polly Differential Revision: https://reviews.llvm.org/D35176 llvm-svn: 307814
* [Polly] [Tests] Update `lit.cfg` uses of `lit.util.capture` to ↵Siddharth Bhat2017-07-121-2/+4
| | | | | | | | | | | | `subprocess.check_output` - `lit.util.capture` was removed in `r306625`. - Replace `lit.util.capture` to `subprocess.check_output` as LLVM did. - LLVM revision of this change: `https://reviews.llvm.org/D35088`. Differential Revision: https://reviews.llvm.org/D35255 llvm-svn: 307765
* [Simplify] Also remove redundant writes which originally came from PHI nodesTobias Grosser2017-07-111-6/+0
| | | | llvm-svn: 307660
* [Polly][CMake] Skip unit-tests in lit if gtest is not availablePhilip Pfaffe2017-07-113-5/+9
| | | | | | | | | | | | | | | | | | | | | Summary: There is a bug in the current lit configurations for the unittests. If gtest is not available, the site-config for the unit tests won't be generated. Because lit recurses through the test directory, the lit configuration for the unit tests will be discovered nevertheless, leading to a fatal error in lit. This patch semi-gracefully skips the unittests if gtest is not available. As a result, running lit now prints this: `warning: test suite 'Polly-Unit' contained no test`. If people think that this is too annoying, the alternative would be to pick apart the test directory, so that the lit testsuite discovery will always only find one configuration. In fact, both of these things could be combined. While it's certainly nice that running a single lit command runs all the tests, I suppose people use the `check-polly` make target over lit most of the time, so the difference might not be noticed. Reviewers: Meinersbur, grosser Reviewed By: grosser Subscribers: mgorny, bollu, pollydev, llvm-commits Tags: #polly Differential Revision: https://reviews.llvm.org/D34053 llvm-svn: 307651
* [Polly][CMake] Use the CMake Package instead of llvm-config in out-of-tree ↵Philip Pfaffe2017-07-113-160/+94
| | | | | | | | | | | | | | | | | | | | | | | builds Summary: As of now, Polly uses llvm-config to set up LLVM dependencies in an out-of-tree build. This is problematic for two reasons: 1) Right now, in-tree and out-of-tree builds in fact do different things. E.g., in an in-tree build, libPolly depends on a handful of LLVM libraries, while in an out-of-tree build it depends on all of them. This means that we often need to treat both paths seperately. 2) I'm specifically unhappy with the way libPolly is linked right now, because it just blindly links against all the LLVM libs. That doesn't make a lot of sense. For instance, one of these libs is LLVMTableGen, which contains a command line definition of a -o option. This means that I can not link an out-of-tree libPolly into a tool which might want to offer a -o option as well. This patch (mostly) drop the use of llvm-config in favor of LLVMs exported cmake package. However, building Polly with unittests requires access to the gtest sources (in the LLVM source tree). If we're building against an LLVM installation, this source tree is unavailable and must specified. I'm using llvm-config to provide a default in this case. Reviewers: Meinersbur, grosser Reviewed By: grosser Subscribers: tstellar, bollu, chapuni, mgorny, pollydev, llvm-commits Differential Revision: https://reviews.llvm.org/D33299 llvm-svn: 307650
* [tests] Add import-jscop-dir to lit.site.cfg.inTobias Grosser2017-07-111-0/+2
| | | | | | | For the previous commit I accidentally added this change to lit.site.cfg, which is autogenerated and was consequently not part of the previous commit. llvm-svn: 307648
* [tests] Set -polly-import-jscop-dir=%S alwaysTobias Grosser2017-07-1167-76/+76
| | | | | | This simplifies the test cases. llvm-svn: 307645
* [Simplify] Add test case which we currently missTobias Grosser2017-07-113-0/+356
| | | | llvm-svn: 307643
* [IslAst] Print memory accesses in AST dumpTobias Grosser2017-07-102-3/+60
| | | | | | | | | | | | | | | | | | | | When providing the option "-polly-ast-print-accesses" Polly also prints the memory accesses that are generated: #pragma known-parallel for (int c0 = 0; c0 <= 1023; c0 += 4) #pragma simd for (int c1 = c0; c1 <= c0 + 3; c1 += 1) Stmt_for_body( /* read */ &MemRef_B[0] /* write */ MemRef_A[c1] ); This makes writing and debugging memory layout transformations easier. Based on a patch contributed by Thomas Lang (ETH Zurich) llvm-svn: 307579
* [NFC] [PPCGCodeGeneration] Extend ↵Siddharth Bhat2017-07-071-6/+11
| | | | | | | | | | `invariant-load-hoisting-with-variable-upper-bound` test case. - Check that we have invariant accesses. - Use `-polly-use-llvm-names` for better names in the test. - Rename test function to `f` for brevity. llvm-svn: 307401
* [NFC] [PPCGCodeGeneration] Add test for simple invariant load hoisting.Siddharth Bhat2017-07-071-0/+52
| | | | | | | | - This already works, but add this to ensure that there is no regressions when I expand the invariant load hoisting ability of `PPCGCodeGeneration`. llvm-svn: 307398
* Make create_ll work with latest LLVM [NFC]Tobias Grosser2017-07-071-7/+4
| | | | | | | | | | | | | | - Instead of running with -O0, we enable the highest optimization level, but then disable optimizations. This ensures that possibly important metadata is still emitted. - Update the code for attribute removal to work with latest LLVM - Do not cut an arbitrary number of lines from the LL file. It is undocumented why this was needed at the first place, and such a feature is likely to break with trivial IR changes that may come in the future. llvm-svn: 307355
* [Polly] [PPCGCodeGeneration] Teach `must_kills` to kill scalars that are ↵Siddharth Bhat2017-07-062-4/+92
| | | | | | | | | | | | | | local to the scop. - By definition, we can pass something as a `kill` to PPCG if we know that no data can flow across a kill. - This is useful for more complex examples where we have scalars that are local to a scop. - If the local is only used within a scop, we are free to kill it. Differential Revision: https://reviews.llvm.org/D35045 llvm-svn: 307260
* Prefix the name of the calling host function in the name of callee GPU kernelSingapuram Sanjay Srivallabh2017-07-056-12/+12
| | | | | | | | | | | | | | | | | | | Summary: Provide more context to the name of a GPU kernel by prefixing its name with the host function that calls it. E.g. The first kernel called by `gemm` would be `FUNC_gemm_KERNEL_0`. Kernels currently follow the "kernel_#" (# = 0,1,2,3,...) nomenclature. This patch makes it easier to map host caller and device callee, especially when there are many kernels produced by Polly-ACC. Reviewers: grosser, Meinersbur, bollu, philip.pfaffe, kbarton! Reviewed By: grosser Subscribers: nemanjai, pollydev Tags: #polly Differential Revision: https://reviews.llvm.org/D33985 llvm-svn: 307173
* [NFC] Fix breaking build by adding REQUIRES: pollyaccSiddharth Bhat2017-07-052-0/+4
| | | | llvm-svn: 307165
* [PPCGCodeGeneration] Teach Polly to start using live range reordering.Siddharth Bhat2017-07-054-7/+119
| | | | | | | | | | | | | | | | | | | | Polly did not use PPCG's live range reordering feature. Teach PPCGCodeGeneration to use this. Documentation on this is sparse, so much of the code is conservative. We currently kill all phi nodes in a Scop by appending them to the must_kill map we pass to PPCG. I do not have a proof of correctness, but it seems to be intuitively correct. We also do not handle `array_order`, which, quoting PPCG, is: PPCG/gpu.h: "Order dependences on non-scalars." It seems to consist of RAW dependences between arrays. We need to pass this information for more complex privatization cases. Differential Revision: https://reviews.llvm.org/D34941 llvm-svn: 307163
* Bump isl to isl-0.18-768-g033b61aeTobias Grosser2017-07-043-4/+4
| | | | | | | | | | | | | | Summary: This is a general maintenance update Reviewers: grosser Subscribers: srhines, fedor.sergeev, pollydev, llvm-commits Contributed-by: Maximilian Falkenstein <falkensm@student.ethz.ch> Differential Revision: https://reviews.llvm.org/D34903 llvm-svn: 307090
OpenPOWER on IntegriCloud