Hi Hal, On 02/12/11 21:06, Hal Finkel wrote:> On Fri, 2011-12-02 at 19:08 +0100, Pablo Barrio wrote: >> I applied the patch to the trunk version successfully, although I get an error in between: >> >> 1 out of 1 hunk FAILED -- saving rejects to file lib/Transforms/IPO/CMakeLists.txt.rej >> >> Can I ignore the error? The patch exits normally except for that error. > The attached patch should apply cleanly. > > Thanks for the feedback, > HalI'm still getting the following error: --- 1 out of 3 hunks FAILED -- saving rejects to file lib/Transforms/IPO/PassManagerBuilder.cpp.rej --- I'm using LLVM rev. 146369 (current trunk). Is it the same as you? If not, tell me your revision and I'll try again. Suggestion: would it be possible to have a patch for the stable version (LLVM 3.0)? Thanks ahead, Pablo>> Also, I tried to apply the patch to the LLVM 3.0 but does not work at all. Is the trunk version the only one where the patch can be applied? >> >> Thanks ahead, >> Pablo >> >> On 29/11/2011, at 16:38, Hal Finkel wrote: >> >>> On Tue, 2011-11-29 at 16:26 +0100, Pablo Barrio wrote: >>>> On 28/11/2011, at 18:52, Hal Finkel wrote: >>>> >>>>> On Mon, 2011-11-28 at 17:49 +0100, Pablo Barrio wrote: >>>>>> How can I install the patch? Any step-by-step guide? >>>>> First, grab the trunk versions of llvm and clang. This is detailed on >>>>> http://clang.llvm.org/get_started.html >>>>> >>>>> Then you apply the patch. On a Unix-like system, this is something like: >>>>> cd llvm >>>>> patch -p1< /path/to/the-patch-file.diff >>>>> >>>> I tried to apply the patch to llvm 2.9 (not the trunk) but it shows a lot of "... hunk FAILED -- saving rejects to file ...". Is it safe to ignore these errors? Is it impossible to apply this patch to LLVM 2.9? Do you have a version of the patch compatible with 2.9? >>>> >>> Unfortunately, I don't have a version for 2.9. >>> >>> -Hal >>> >>>> Right now I cannot switch to the trunk version. >>>> >>>> Thanks in advance, >>>> Pablo >>>> >>>>> Then you rebuild. >>>>> >>>>> If you have any further questions, or need a more-detailed answer, >>>>> please let me know. >>>>> >>>>> -Hal >>>>> >>>>>> Thanks, >>>>>> Pablo >>>>>> >>>>>> On 24/11/2011, at 15:33, Hal Finkel wrote: >>>>>> >>>>>>> On Thu, 2011-11-24 at 15:09 +0100, Pablo Barrio López-Cortijo wrote: >>>>>>>> Hi everybody, >>>>>>>> >>>>>>>> I'm trying to run some examples with different backend options (turning >>>>>>>> on/off SSE, 3dnow, or MMX instructions). However, I don't see any >>>>>>>> difference in terms of execution time. Does anybody know which language >>>>>>>> constructs (in C/C++ preferably) should I try to make these instructions >>>>>>>> generated (and thus make a difference between a backend that enables >>>>>>>> them or not) ? >>>>>>>> >>>>>>>> I tried generating vector instructions with loops but it's not >>>>>>>> happening. Perhaps Polly can generate vector instructions? >>>>>>> You can also try my basic-block autovectorization patch. >>>>>>> >>>>>>> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20111121/132206.html >>>>>>> >>>>>>> After applying the patch (I recommend applying it to the current trunk), >>>>>>> then run clang with the flags: >>>>>>> -mllvm -vectorize -mllvm -unroll-allow-partial >>>>>>> (the -unroll-allow-partial is not necessary for the vectorization, but >>>>>>> tends to expose additional vectorization opportunities). The basic-block >>>>>>> vectorizer has a number of flags that can be used to customize its >>>>>>> behavior, so if it is not vectorizing something that you think it should >>>>>>> be (or is doing something performance detrimental), please let me know >>>>>>> and I'll be happy to help. >>>>>>> >>>>>>> -Hal >>>>>>> >>>>>>>> Thanks ahead, >>>>>>>> >>>>>>>> Pablo >>>>>>>> DIE-UPM >>>>>>>> Madrid >>>>>>>> >>>>>>>> _______________________________________________ >>>>>>>> LLVM Developers mailing list >>>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>>>>>> -- >>>>>>> Hal Finkel >>>>>>> Postdoctoral Appointee >>>>>>> Leadership Computing Facility >>>>>>> Argonne National Laboratory >>>>>>> >>>>> -- >>>>> Hal Finkel >>>>> Postdoctoral Appointee >>>>> Leadership Computing Facility >>>>> Argonne National Laboratory >>>>> >>> -- >>> Hal Finkel >>> Postdoctoral Appointee >>> Leadership Computing Facility >>> Argonne National Laboratory >>>-- Pablo Barrio Dpt. Electrical Engineering - Technical University of Madrid Despacho C-203 Avda. Complutense s/n, 28040 Madrid (+34) 915495700 ext. 4234 @: pbarrio at die.upm.es
On Mon, 2011-12-12 at 12:59 +0100, Pablo Barrio wrote:> Hi Hal, > > On 02/12/11 21:06, Hal Finkel wrote: > > On Fri, 2011-12-02 at 19:08 +0100, Pablo Barrio wrote: > >> I applied the patch to the trunk version successfully, although I get an error in between: > >> > >> 1 out of 1 hunk FAILED -- saving rejects to file lib/Transforms/IPO/CMakeLists.txt.rej > >> > >> Can I ignore the error? The patch exits normally except for that error. > > The attached patch should apply cleanly. > > > > Thanks for the feedback, > > Hal > > I'm still getting the following error: > > --- > 1 out of 3 hunks FAILED -- saving rejects to file > lib/Transforms/IPO/PassManagerBuilder.cpp.rej > --- > > I'm using LLVM rev. 146369 (current trunk). Is it the same as you? If > not, tell me your revision and I'll try again.LLVM develops quickly ;) -- The patch you have is again out of sync. I'll send an updated patch to the list soon.> > Suggestion: would it be possible to have a patch for the stable version > (LLVM 3.0)?I'll add that to my TODO list, but I probably won't get to it until after the current patch finishes code review. I'll worry about backporting after that. -Hal> > Thanks ahead, > Pablo > >> Also, I tried to apply the patch to the LLVM 3.0 but does not work at all. Is the trunk version the only one where the patch can be applied? > >> > >> Thanks ahead, > >> Pablo > >> > >> On 29/11/2011, at 16:38, Hal Finkel wrote: > >> > >>> On Tue, 2011-11-29 at 16:26 +0100, Pablo Barrio wrote: > >>>> On 28/11/2011, at 18:52, Hal Finkel wrote: > >>>> > >>>>> On Mon, 2011-11-28 at 17:49 +0100, Pablo Barrio wrote: > >>>>>> How can I install the patch? Any step-by-step guide? > >>>>> First, grab the trunk versions of llvm and clang. This is detailed on > >>>>> http://clang.llvm.org/get_started.html > >>>>> > >>>>> Then you apply the patch. On a Unix-like system, this is something like: > >>>>> cd llvm > >>>>> patch -p1< /path/to/the-patch-file.diff > >>>>> > >>>> I tried to apply the patch to llvm 2.9 (not the trunk) but it shows a lot of "... hunk FAILED -- saving rejects to file ...". Is it safe to ignore these errors? Is it impossible to apply this patch to LLVM 2.9? Do you have a version of the patch compatible with 2.9? > >>>> > >>> Unfortunately, I don't have a version for 2.9. > >>> > >>> -Hal > >>> > >>>> Right now I cannot switch to the trunk version. > >>>> > >>>> Thanks in advance, > >>>> Pablo > >>>> > >>>>> Then you rebuild. > >>>>> > >>>>> If you have any further questions, or need a more-detailed answer, > >>>>> please let me know. > >>>>> > >>>>> -Hal > >>>>> > >>>>>> Thanks, > >>>>>> Pablo > >>>>>> > >>>>>> On 24/11/2011, at 15:33, Hal Finkel wrote: > >>>>>> > >>>>>>> On Thu, 2011-11-24 at 15:09 +0100, Pablo Barrio López-Cortijo wrote: > >>>>>>>> Hi everybody, > >>>>>>>> > >>>>>>>> I'm trying to run some examples with different backend options (turning > >>>>>>>> on/off SSE, 3dnow, or MMX instructions). However, I don't see any > >>>>>>>> difference in terms of execution time. Does anybody know which language > >>>>>>>> constructs (in C/C++ preferably) should I try to make these instructions > >>>>>>>> generated (and thus make a difference between a backend that enables > >>>>>>>> them or not) ? > >>>>>>>> > >>>>>>>> I tried generating vector instructions with loops but it's not > >>>>>>>> happening. Perhaps Polly can generate vector instructions? > >>>>>>> You can also try my basic-block autovectorization patch. > >>>>>>> > >>>>>>> http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20111121/132206.html > >>>>>>> > >>>>>>> After applying the patch (I recommend applying it to the current trunk), > >>>>>>> then run clang with the flags: > >>>>>>> -mllvm -vectorize -mllvm -unroll-allow-partial > >>>>>>> (the -unroll-allow-partial is not necessary for the vectorization, but > >>>>>>> tends to expose additional vectorization opportunities). The basic-block > >>>>>>> vectorizer has a number of flags that can be used to customize its > >>>>>>> behavior, so if it is not vectorizing something that you think it should > >>>>>>> be (or is doing something performance detrimental), please let me know > >>>>>>> and I'll be happy to help. > >>>>>>> > >>>>>>> -Hal > >>>>>>> > >>>>>>>> Thanks ahead, > >>>>>>>> > >>>>>>>> Pablo > >>>>>>>> DIE-UPM > >>>>>>>> Madrid > >>>>>>>> > >>>>>>>> _______________________________________________ > >>>>>>>> LLVM Developers mailing list > >>>>>>>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > >>>>>>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >>>>>>> -- > >>>>>>> Hal Finkel > >>>>>>> Postdoctoral Appointee > >>>>>>> Leadership Computing Facility > >>>>>>> Argonne National Laboratory > >>>>>>> > >>>>> -- > >>>>> Hal Finkel > >>>>> Postdoctoral Appointee > >>>>> Leadership Computing Facility > >>>>> Argonne National Laboratory > >>>>> > >>> -- > >>> Hal Finkel > >>> Postdoctoral Appointee > >>> Leadership Computing Facility > >>> Argonne National Laboratory > >>> > >-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
On 12/12/11 17:07, Hal Finkel wrote:> On Mon, 2011-12-12 at 12:59 +0100, Pablo Barrio wrote: >> >> I'm still getting the following error: >> >> --- >> 1 out of 3 hunks FAILED -- saving rejects to file >> lib/Transforms/IPO/PassManagerBuilder.cpp.rej >> --- >> >> I'm using LLVM rev. 146369 (current trunk). Is it the same as you? If >> not, tell me your revision and I'll try again. > LLVM develops quickly ;) -- The patch you have is again out of sync. > I'll send an updated patch to the list soon.Great! I'll wait for the new patch. Thanks for the help! One more question: I'm currently using dragonegg for autovectorization, but I cannot get any vector longer than 4 elements for floats and 2 for doubles. I suspect this is because my processor doesn't support bigger vectors. However, I would like to generate bigger vectors into the LLVM IR, and then decide what to do with them in the backend. Can your vectorizer do something like that? Thanks, Pablo>> Suggestion: would it be possible to have a patch for the stable version >> (LLVM 3.0)? > I'll add that to my TODO list, but I probably won't get to it until > after the current patch finishes code review. I'll worry about > backporting after that. > > -Hal > >> Thanks ahead, >> Pablo-- Pablo Barrio Dpt. Electrical Engineering - Technical University of Madrid Office C-203 Avda. Complutense s/n, 28040 Madrid (+34) 915495700 ext. 4234 @: pbarrio at die.upm.es