Frank Winter
2015-Jul-13 17:39 UTC
[LLVMdev] Is metadata the right thing to associate one instruction to another?
Background: I am still working on vectorizing (widening) a whole instruction tree (from the loads to the stores). I have all scalar loads in a SetVector and have created widened version of them (new instructions). What would be very useful to have is the possibility to get to the vector load instruction from the scalar load in constant time. I was thinking to somehow add the vector load instruction (pointer) to the scalar version as metadata. With that, the traversal of the scalar tree can quickly get the vector version of the loads. But metadata seems to work with strings of MDNodes. That makes me worry if metadata is what I want.. My question: Is metadata the only possibility to 'associate' (in the sense of making it quickly accessible) an instruction to another? What type of metadata would be recommended ? Thanks, Frank
Michael Zolotukhin
2015-Jul-13 19:04 UTC
[LLVMdev] Is metadata the right thing to associate one instruction to another?
Hi Frank, Can you just create a hash ScalarInstruction -> WidenedInstruction? This is the way other vectorizers usually save such data. I don’t know much about metadata, so I’ll leave this part of the question for someone else:) Michael> On Jul 13, 2015, at 10:39 AM, Frank Winter <fwinter at jlab.org> wrote: > > Background: I am still working on vectorizing (widening) a whole instruction tree (from the loads to the stores). I have all scalar loads in a SetVector and have created widened version of them (new instructions). > > What would be very useful to have is the possibility to get to the vector load instruction from the scalar load in constant time. I was thinking to somehow add the vector load instruction (pointer) to the scalar version as metadata. With that, the traversal of the scalar tree can quickly get the vector version of the loads. But metadata seems to work with strings of MDNodes. That makes me worry if metadata is what I want.. > > My question: Is metadata the only possibility to 'associate' (in the sense of making it quickly accessible) an instruction to another? What type of metadata would be recommended ? > > Thanks, > Frank > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Frank Winter
2015-Jul-13 19:37 UTC
[LLVMdev] Is metadata the right thing to associate one instruction to another?
Hi Michael! Thanks for your reply, I appreciate the info how others do this. I was thinking of a hash function but was still hoping for a constant time solution :-) Would be great to attach/store a (user) pointer to/along with an instruction.. Thanks, Frank On 07/13/2015 03:04 PM, Michael Zolotukhin wrote:> Hi Frank, > > Can you just create a hash ScalarInstruction -> WidenedInstruction? This is the way other vectorizers usually save such data. > > I don’t know much about metadata, so I’ll leave this part of the question for someone else:) > > Michael >> On Jul 13, 2015, at 10:39 AM, Frank Winter <fwinter at jlab.org> wrote: >> >> Background: I am still working on vectorizing (widening) a whole instruction tree (from the loads to the stores). I have all scalar loads in a SetVector and have created widened version of them (new instructions). >> >> What would be very useful to have is the possibility to get to the vector load instruction from the scalar load in constant time. I was thinking to somehow add the vector load instruction (pointer) to the scalar version as metadata. With that, the traversal of the scalar tree can quickly get the vector version of the loads. But metadata seems to work with strings of MDNodes. That makes me worry if metadata is what I want.. >> >> My question: Is metadata the only possibility to 'associate' (in the sense of making it quickly accessible) an instruction to another? What type of metadata would be recommended ? >> >> Thanks, >> Frank >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev