Nicolas Geoffray wrote:> Andrew Haley wrote: > >> I should have asked a better question. By "does it work" I meant something >> like >> >> for (int i = 0; i < a.length; i++) >> System.out.println(a[i]); >> >> > > OK, so no :) VMKit does not know that a[i] is related to a.length. I > believe Andre's optimizations will take care of that. > > Nicolas > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >Thanks for all answers. I will consider them all before I start coding. I have another discussion that I would like to hear from you. I can implement SSI in two different ways. Analysis or Transformation Pass. As an Analysis Pass, I would create a SSI LiveInterval, mapping each interval with a constraint. Pros: No change to the IR. Cons: It is a simulation. As an Transformation Pass, SSI would be implemented in the IR with copy instructions (pi functions) and phi functions on the end. Pros: Real SSI. Each interval has a constraint. Cons: IR is bigger, what can impact other optimizations. What do you think? -- Andre Tavares Master Student in Computer Science - UFMG - Brasil http://dcc.ufmg.br/~andrelct
Hi Andre? Andre Tavares wrote:> Thanks for all answers. I will consider them all before I start coding. > > I have another discussion that I would like to hear from you. > > I can implement SSI in two different ways. Analysis or Transformation Pass. > > As an Analysis Pass, I would create a SSI LiveInterval, mapping each > interval with a constraint. > Pros: No change to the IR. > Cons: It is a simulation. >It is a simulation == bad performance?> As an Transformation Pass, SSI would be implemented in the IR with copy > instructions (pi functions) and phi functions on the end. > Pros: Real SSI. Each interval has a constraint. > Cons: IR is bigger, what can impact other optimizations. > >How would you model this pi function? New instruction? New intrinsic? Nicolas
Nicolas Geoffray wrote:> Hi Andre? > > Andre Tavares wrote: > >> Thanks for all answers. I will consider them all before I start coding. >> >> I have another discussion that I would like to hear from you. >> >> I can implement SSI in two different ways. Analysis or Transformation Pass. >> >> As an Analysis Pass, I would create a SSI LiveInterval, mapping each >> interval with a constraint. >> Pros: No change to the IR. >> Cons: It is a simulation. >> >> > > It is a simulation == bad performance? > > >> As an Transformation Pass, SSI would be implemented in the IR with copy >> instructions (pi functions) and phi functions on the end. >> Pros: Real SSI. Each interval has a constraint. >> Cons: IR is bigger, what can impact other optimizations. >> >> >> > > How would you model this pi function? New instruction? New intrinsic? > > Nicolas > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >Nicolas, I think the performance of my Pass will be the same independent of which type I use. But if I make transformations I will reduce the performance of other optimizations. The pi functions can be implemented with copy instructions. This way it won't change other optimizations. Example: a1, a2 = pi(a) into a1 = a a2 = a -- Andre Tavares Master Student in Computer Science - UFMG - Brasil http://dcc.ufmg.br/~andrelct