search for: gcse

Displaying 20 results from an estimated 76 matches for "gcse".

Did you mean: cse
2008 Sep 03
0
[LLVMdev] Merge-Cha-Cha
.... -I../../gcc -I../../gcc/. -I../../gcc/../include -I../../gcc/../libcpp/include -I../../gcc/../libdecnumber -I../libdecnumber -I/home/regehr/llvm/include -I/home/regehr/llvm/include -DENABLE_LLVM -I/home/regehr/llvm/include -D_DEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS ../../gcc/postreload-gcse.c -o postreload-gcse.o ../../gcc/postreload-gcse.c: In function eliminate_partially_redundant_load: ../../gcc/postreload-gcse.c:1123: error: flag_darwin_rtl_pre_ignore_critical_edges undeclared (first use in this function) ../../gcc/postreload-gcse.c:1123: error: (Each undeclared identifier is...
2008 Sep 03
3
[LLVMdev] Merge-Cha-Cha
As you all have undoubtedly noticed, I recently did Yet Another Merge to Apple's GCC top-of-tree. This merge was prompted by several important fixes in the "blocks" implementation. There are still many testcases that need to be moved over, but those can come at our leisure. I compiled both the "Apple way" and the "FSF way". It also passed the tests in
2005 Feb 22
3
[LLVMdev] Area for improvement
...h > reduction be performed.  getelementptr needs to be broken down into > its constituent operations at some point. Jeff, This is exactly right -- any multi-dimensional array indexing operations need to decomposed into a sequence of single index operations so that they can be exposed to GCSE and LICM. This transformation obscures the indexing behavior of the code, so the right place to do this is within each back-end, on LLVM code just before instruction selection. There is a pass called DecomposeMultiDimRefs (which seems to have been incorrectly moved to lib/Target/SparcV9/) whi...
2006 Oct 13
2
[LLVMdev] opt usage?
I'm new to the LLVM, so please forgive what might be a silly question. I'd like to use the opt bytecode-to-bytecode optimizer, but when I try running it to do, for example, dead code elimination (-dce) or global common subexpression elimination (-gcse), nothing much seems to happen: opt -gcse -dce -o bar-opt.bc bar.bc llvm2cpp -o bar-opt.cpp bar-opt.bc diff bar.bc bar-opt.bc 40c40 < Module* mod = new Module("bar.bc"); --- < Module* mod = new Module("bar-opt.bc");...
2005 Feb 22
0
[LLVMdev] Area for improvement
...lementptr needs to be >> broken down into its constituent operations at some point. > > > Jeff, > > This is exactly right -- any multi-dimensional array indexing > operations need to decomposed into a sequence of single index > operations so that they can be exposed to GCSE and LICM. This > transformation obscures the indexing behavior of the code, so the > right place to do this is within each back-end, on LLVM code just > before instruction selection. > > There is a pass called DecomposeMultiDimRefs (which seems to have been > incorrectly move...
2006 May 10
0
[LLVMdev] SCCP
...but here are some comments. :) 1. The SCCP pass only does really simple propagation of loads: in particular, a load will only be "constant folded" if it is a load from a constant global. This isn't, so SCCP won't touch it. 2. SCCP isn't propagating foo[0], -load-vn -gcse does. In particular, GCSE sees a store to a memory location, followed by a load from the same location (without an intervening, potentially aliasing, store). It forward propagates the stored value to the load (in this case, the constant), eliminating the load. 3. It would be straig...
2005 Feb 22
1
[LLVMdev] Area for improvement
...that a piece of code is hot), the second JIT gets different LLVM code than the first one had as input. We are still not quite to the point where this is the case, but we are getting there. 2. The way LowerMultiDimRefs works is by decimating GEP instructions into pieces, then relying on GCSE and LICM to clean them up. The problem with this is that GCSE and LICM are not the trivial passes that you'd like them to be for a simple cleanup job like this. In particular, GCSE requires a value numbering implementation, LICM requires loop info and alias analysis. Finally,...
2008 May 21
0
[LLVMdev] Optimization passes organization and tradeoffs
On Wednesday 21 May 2008 15:48, Chris Lattner wrote: > > What's the difference between GVN and GCSE, if they both perform common > > subexpression elimination? > > GVN does more, and is a better algorithm. GCSE is basically deprecated > and should be removed at some point. Er...waitaminute. Maybe there's something I don't fully grok about GVN, but in general, value numbe...
2006 May 10
2
[LLVMdev] SCCP
Chris Lattner wrote: > On Tue, 9 May 2006, Nick Lewycky wrote: > >>> You could do that, but SCCPSolver isn't really useful to mainline LLVM >>> for anything other than SCCP and IPSCCP, so we don't need it in a public >>> header. Out of curiosity, what are you looking to use the latice values >>> for? Why not just run SCCP and then look at the
2008 May 21
2
[LLVMdev] Optimization passes organization and tradeoffs
...to "fadd"/"iadd" and then make the "fp" operations have some sort of flags to parameterize the optimizations allowed for them. This would allow us to propagate down the equivalent of GCC's -ffast-math into the IR. > What's the difference between GVN and GCSE, if they both perform common > subexpression elimination? GVN does more, and is a better algorithm. GCSE is basically deprecated and should be removed at some point. > So far LLVM is working great for me. I'm impressed by the overall > architecture and the fair learning curve. I...
2006 May 10
2
[LLVMdev] SCCP
...le this time. > 1. The SCCP pass only does really simple propagation of loads: in > particular, a load will only be "constant folded" if it is a load from > a constant global. This isn't, so SCCP won't touch it. > 2. SCCP isn't propagating foo[0], -load-vn -gcse does. In particular, > GCSE sees a store to a memory location, followed by a load from the > same location (without an intervening, potentially aliasing, store). > It forward propagates the stored value to the load (in this case, the > constant), eliminating the load. I te...
2005 Jan 19
1
[LLVMdev] Constant Propagation Problem
...RaisePointerReferencesPass TailDuplicationPass CFGSimplificationPass ScalarReplAggregatesPass InstructionCombiningPass ReassociatePass InstructionCombiningPass TailCallEliminationPass CFGSimplificationPass LICMPass InstructionCombiningPass IndVarSimplifyPass LoopUnrollPass InstructionCombiningPass GCSEPass SCCPPass InstructionCombiningPass DeadStoreEliminationPass AggressiveDCEPass CFGSimplificationPass -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: optimizeme.txt URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20050119/1336c2...
2005 Feb 22
4
[LLVMdev] Area for improvement
...knowledge of how the instruction selector will select the code (e.g. the advice about allowing constant indices to be grouped together). This is *exactly* the reason why the new instruction selection framework was introduced. It already handles local CSE trivially, and will be extended to do GCSE, LICM, and eventually PDCE as time permits. Combined with loop strength reduction, these problems should go completely away. Also, with the new instruction selection frameworks, targets don't have to handle GEP instructions at all, so the "complexity" argument above doesn't a...
2008 Sep 04
3
[LLVMdev] A simple case about SDiv
...] sdiv i32 %0, %1 ; <i32>:2 [#uses=1] ret i32 %2 } With llvm-gcc -O2, I got: define i32 @test(i32 %x, i32 %y) nounwind { entry: sdiv i32 %x, %y ; <i32>:0 [#uses=1] ret i32 %0 } I wonder which pass does this transform. I tried several passes, like -instcombine, -simplifycfg, -gcse -globaldce -globalopt -adce , but all failed to do this transform. Anybody know this? Thanks. Sheng. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080904/e0428101/attachment.html>
2006 Mar 17
3
[LLVMdev] Stupid '-load-vn -licm' question (LLVM 1.6)
...ds appear at the top of the %regex6 and %regex2 >> blocks below. I've tried various alias analysis implementations >> either alone or in combination. > > LICM doesn't remove common subexpressions, also -load-vn doesn't > affect LICM. Try "-licm -load-vn -gcse" instead of "-load-vn -licm" That works! Thank you. The bytecodes look really good--not only are the loads eliminated, but the tests are actually reduced to a switch statement using '-anders-aa -load-vn -gcse -simplifycfg -instcombine': regex6: ; preds = %loop_t...
2006 Aug 23
5
negatively skewed data; reflecting
...s applied. I know that you first need to reflect the negatively skewed data and then apply another transformation such as log, square root etc to bring it towards normailty. How is it that I reflect data in R? I'm sorry if this seems a very simple task, I think it involves going back to Maths GCSE and relearning reflection, rotation, translation etc! I have searched the internet, but cannot come up with anything useful on how to reflect data. > hist(Lsoc) #how do I reflect Lsoc in R? I am grateful for any help regarding this matter, it is just a very small part of my analysis and does...
2007 Jul 18
1
[LLVMdev] llvm-ld doesn't honor -Ox
...O1 ?!? 3 argpromotion - Number of aggregate arguments promoted 25 constmerge - Number of global constants merged 2 deadargelim - Number of unread args removed 0 deadargelim - Number of unused return values removed 29 dse - Number of stores deleted 1103 gcse - Number of instructions removed 17 gcse - Number of instructions removed due to non-instruction values 316 gcse - Number of loads removed 1 globaldce - Number of global variables removed 3 globalopt - Number of functions converted to fastc...
2006 Mar 17
0
[LLVMdev] Stupid '-load-vn -licm' question (LLVM 1.6)
...t; > The duplicate loads appear at the top of the %regex6 and %regex2 blocks > below. I've tried various alias analysis implementations either alone or in > combination. LICM doesn't remove common subexpressions, also -load-vn doesn't affect LICM. Try "-licm -load-vn -gcse" instead of "-load-vn -licm" -Chris > Any thoughts? I'm sure that this will prove embarrassingly obvious. :-) > > Cheers, > Eric > > ; ModuleID = 'regex-opt.bc' > > implementation ; Functions: > > bool %matches(ubyte* %begin, ubyte* %end)...
2006 Mar 16
2
[LLVMdev] Stupid '-load-vn -licm' question (LLVM 1.6)
Hello! I'm compiling code which uses pointers as iterators. For some reason--probably a silly misunderstanding of the docs--I can't eliminate duplicate pointer loads. I'll probably figure this out eventually, but if somebody else sees the answer instantly, I certainly won't complain. :-) Here are the optimizers I'm running: opt -f -simplifycfg -dce -instcombine
2008 Sep 04
0
[LLVMdev] A simple case about SDiv
> I tried several passes, like -instcombine, -simplifycfg, -gcse -globaldce > -globalopt -adce , but all failed to do this transform. Try "opt -std-compile-opts -debug-pass=Arguments" If that does the simplification, then try bisecting the set of passes it ran (printed thanks to -debug-pass) to find out which combination did it. Ciao, Duncan.