search for: getload

Displaying 20 results from an estimated 53 matches for "getload".

2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
Hi, Joseph, I guess getLoad() will either search an existed SDValue *OR* create a new one for a non-existed one depending on real parameters. Since you use exactly the same attributes dupVal/dupNode have, no doubt getLoad() return the old one. I am not sure it's *volatile* that let you get a new result, you might want t...
2006 Dec 20
1
[LLVMdev] alias-aware scheduling
...ult is pretty similar. > > Attached is a patch which implements this. I copied some routines from > > DAGCombiner.cpp for using SDOperands with alias queries; it should > > probably be factored out somewhere so the code can be shared. I > > reorganized SelectionDAGLowering::getLoadFrom a little, to make it > > simpler to use in other contexts. > > > > Also, the patch fixes a bug where SelectionDAG::getLoad and > > SelectionDAG::getStore were being called with the wrong arguments, > > with > > a default argument helping to hide it. > &...
2010 Sep 13
0
[LLVMdev] Question on getLoad() and its parameters
Hello, I'm trying to understand SelectionDAG::getLoad() and the relation between the pointer and MachineMemOp. What does the MachineMemOp do in the getLoad()? Why is both pointer (parameters SDValue Ptr, SDValue Offset) and the MMO (parameters const Value *SV, int SVOffset) needed? And the Alignment parameter seems to be the alignment of the SV withou...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
Yes, changing parameters will create a new Node, but is there some way I can force a new node with the same parameters? -Joe On Sat, Dec 1, 2012 at 10:57 PM, Triple Yang <triple.yang at gmail.com> wrote: > Hi, Joseph, I guess getLoad() will either search an existed SDValue > *OR* create a new one for a non-existed one depending on real > parameters. > > Since you use exactly the same attributes dupVal/dupNode have, no > doubt getLoad() return the old one. > > I am not sure it's *volatile* that let you g...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...at pusdesris.com>: > Yes, changing parameters will create a new Node, but is there some way I can > force a new node with the same parameters? > -Joe > > > On Sat, Dec 1, 2012 at 10:57 PM, Triple Yang <triple.yang at gmail.com> wrote: >> >> Hi, Joseph, I guess getLoad() will either search an existed SDValue >> *OR* create a new one for a non-existed one depending on real >> parameters. >> >> Since you use exactly the same attributes dupVal/dupNode have, no >> doubt getLoad() return the old one. >> >> I am not sure it'...
2010 Feb 11
3
[LLVMdev] Adding NonTemporal
While hacking around in the SelectionDAG build code, I've made the isVolatile, (new) isNonTemporal and Alignment parameters to SelectionDAG::getLoad/getStore and friends non-default. I've already caught one bug in the XCore backend by doing this: if (Offset % 4 == 0) { // We've managed to infer better alignment information than the load // already has. Use an aligned load. return DAG.getLoad(getPointerTy(), dl, C...
2012 Dec 01
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
Hi, I am writing an llvm target and I need both loads for isel reasons, but I am struggling to find the right way. I have been trying to use DAG.getLoad() to make a copy, then just change the operand in the consumers, but I cannot seem to get all of the arguments needed for that function in order to make the copy. Any help would be great, thanks! -Joe -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists....
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
So I think I have made some progress. SDValue dupVal = consumer->getOperand(OpNo); LoadSDNode *dupNode = (LoadSDNode*) dupVal.getNode(); SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(), dupVal.getDebugLoc(), dupVal.getOperand(0), dupVal.getOperand(1), dupNode->getPointerInfo(), dupNode->isVolatile(), dupNode->isNonTemporal(), d...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...me way I >> > can >> > force a new node with the same parameters? >> > -Joe >> > >> > >> > On Sat, Dec 1, 2012 at 10:57 PM, Triple Yang <triple.yang at gmail.com> >> > wrote: >> >> >> >> Hi, Joseph, I guess getLoad() will either search an existed SDValue >> >> *OR* create a new one for a non-existed one depending on real >> >> parameters. >> >> >> >> Since you use exactly the same attributes dupVal/dupNode have, no >> >> doubt getLoad() return the ol...
2010 Feb 12
0
[LLVMdev] Adding NonTemporal
On Thursday 11 February 2010 17:40:24 David Greene wrote: > While hacking around in the SelectionDAG build code, I've made the > isVolatile, (new) isNonTemporal and Alignment parameters to > SelectionDAG::getLoad/getStore and friends non-default. > > I've already caught one bug in the XCore backend by doing this: > > if (Offset % 4 == 0) { > // We've managed to infer better alignment information than the load > // already has. Use an aligned load. > return...
2008 Sep 13
2
[LLVMdev] Alignment of constant loads
...f v4f32 types, are not > aligned to the preferred alignment but rather to the ABI alignment, at > least on x86. On x86 targets it's usually 16 for both preferred and ABI. I guess you're using a target with a lower ABI alignment for vectors? > This seems to stem from SelectionDAG::getLoad() being > called with an alignment of 0, which then does: > > if (Alignment == 0) // Ensure that codegen never sees alignment 0 > Alignment = getMVTAlignment(VT); > > Inside getMVTAlignment, the ABI alignment is retrieved for the given VT. > > It appears that consta...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...meters will create a new Node, but is there some way I > can > > force a new node with the same parameters? > > -Joe > > > > > > On Sat, Dec 1, 2012 at 10:57 PM, Triple Yang <triple.yang at gmail.com> > wrote: > >> > >> Hi, Joseph, I guess getLoad() will either search an existed SDValue > >> *OR* create a new one for a non-existed one depending on real > >> parameters. > >> > >> Since you use exactly the same attributes dupVal/dupNode have, no > >> doubt getLoad() return the old one. > >>...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...> force a new node with the same parameters? > >> > -Joe > >> > > >> > > >> > On Sat, Dec 1, 2012 at 10:57 PM, Triple Yang <triple.yang at gmail.com> > >> > wrote: > >> >> > >> >> Hi, Joseph, I guess getLoad() will either search an existed SDValue > >> >> *OR* create a new one for a non-existed one depending on real > >> >> parameters. > >> >> > >> >> Since you use exactly the same attributes dupVal/dupNode have, no > >> >> doub...
2006 Dec 19
0
[LLVMdev] alias-aware scheduling
...atisfactory results by turning it on? > > Attached is a patch which implements this. I copied some routines from > DAGCombiner.cpp for using SDOperands with alias queries; it should > probably be factored out somewhere so the code can be shared. I > reorganized SelectionDAGLowering::getLoadFrom a little, to make it > simpler to use in other contexts. > > Also, the patch fixes a bug where SelectionDAG::getLoad and > SelectionDAG::getStore were being called with the wrong arguments, > with > a default argument helping to hide it. Can you be more specific about what...
2008 Sep 15
0
[LLVMdev] Alignment of constant loads
Hi Dan, > It looks like the best way to do this is to visit the handful of > places in legalize that create loads from constant pools and > add alignment parameters to the getLoad/getExtLoad calls. > > If you move the handling of Alignment==0 out of ScheduleDAGEmit.cpp > and into SelectionDAG::getConstantPool, you can then have legalize > read the alignment from the node, instead of making its own > decision: > cast<ConstantPoolSDNode>(CPIdx)->g...
2006 Dec 19
3
[LLVMdev] alias-aware scheduling
...duling so that independent memory operations may be reordered. Attached is a patch which implements this. I copied some routines from DAGCombiner.cpp for using SDOperands with alias queries; it should probably be factored out somewhere so the code can be shared. I reorganized SelectionDAGLowering::getLoadFrom a little, to make it simpler to use in other contexts. Also, the patch fixes a bug where SelectionDAG::getLoad and SelectionDAG::getStore were being called with the wrong arguments, with a default argument helping to hide it. I'm interested in any comments or feedback that people might ha...
2017 Sep 18
1
Question about 'DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT'
> so I think we need to use non-extending load for element size less than 8bit on "DAGTypeLegalizer::SplitVecOp_EXTRACT_VECTOR_ELT" like this roughly. > if (N->getOperand(0).getValueType().getVectorElementType().getSizeInBits() < 8) { > return DAG.getLoad(N->getValueType(0), dl, Store, StackPtr, MachinePointerInfo()); > } else { > return DAG.getExtLoad(ISD::EXTLOAD, dl, N->getValueType(0), Store, StackPtr, MachinePointerInfo(), EltVT); > } I assume that we need the opposite - if (.. < 8) getExtLoad // VT should be MVT::i8, Me...
2016 Oct 12
2
Selection DAG adding node question
...with node2, leaving node1 dead. While this is kind of expected, does this mean a) always create new node (can you clone node, e.g. node1 above)? b) is this something that selection DAG is not intended for at all? c) sometimes it is not straight forward to create a new load, e.g. for loads, as DAG.getLoad will return "old" node if identical => a) can I clone a node? Thanks! Hendrik -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20161012/d69073c4/attachment.html>
2010 Feb 12
1
[LLVMdev] Adding NonTemporal
...12, 2010 at 1:43 PM, David Greene <dag at cray.com> wrote: > On Thursday 11 February 2010 17:40:24 David Greene wrote: >> While hacking around in the SelectionDAG build code, I've made the >> isVolatile, (new) isNonTemporal and Alignment parameters to >> SelectionDAG::getLoad/getStore and friends non-default. >> >> I've already caught one bug in the XCore backend by doing this: >> >>     if (Offset % 4 == 0) { >>       // We've managed to infer better alignment information than the load >>       // already has. Use an aligned...
2006 Sep 20
1
[LLVMdev] using the constant pool during select
...---------------------------------------------------------- const Type *OpNTy = MVT::getTypeForValueType(MVT::i32); Constant *C = ConstantUInt::get(OpNTy, t); int alignment = 2; SDOperand Addr = CurDAG->getTargetConstantPool(C, MVT::i32, alignment); Arg = CurDAG->getLoad(MVT::i32, CurDAG->getEntryNode(), Addr, CurDAG->getSrcValue(NULL)); ---------------------------------------------------------------------------------------- This fails with the assert "This target-independent node should have been selected". It is illeg...