search for: isnontemporal

Displaying 20 results from an estimated 23 matches for "isnontemporal".

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 l...
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 >...
2013 Mar 04
1
[LLVMdev] Custom Lowering of ARM zero-extending loads
...Value Ptr = LD->getBasePtr(); DebugLoc dl = Op.getNode()->getDebugLoc(); SDValue LdResult = DAG.getExtLoad(ISD::EXTLOAD, dl, MVT::i32, Chain, Ptr, LD->getPointerInfo(), MVT::i32, LD->isVolatile(), LD->isNonTemporal(), LD->getAlignment()); Chain = LdResult.getValue(1); SDValue Mask = DAG.getConstant(0x1, MVT::i32); DAG.ReplaceAllUsesOfValueWith(SDValue(LD, 0), LdResult); DAG.ReplaceAllUsesOfValueWith(SDValue(LD, 1), Chain); DAG.RemoveDeadNode(LD);...
2009 Jul 31
4
[LLVMdev] RFC: SDNode Flags
...so we need to consider that. The constructor could look something like this: MemSDNode(unsigned Opc, DebugLoc dl, SDVTList VTs, MVT MemoryVT, const Value *srcValue, int SVOff, unsigned alignment, unsigned flags); and called like this: new (N) LoadSDNode(..., isVolatile|isNonTemporal); Thoughts? -Dave
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...Value newLoad = CurDAG->getLoad(dupVal.getValueType(), dupVal.getDebugLoc(), > dupVal.getOperand(0), dupVal.getOperand(1), > dupNode->getPointerInfo(), > dupNode->isVolatile(), dupNode->isNonTemporal(), > dupNode->isInvariant(), dupNode->getAlignment(), > dupNode->getTBAAInfo(), dupNode->getRanges()); > However, my problem now is that it will re-use the same load still. If I change something, like setting volati...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
....getNode(); SDValue newLoad = CurDAG->getLoad(dupVal.getValueType(), dupVal.getDebugLoc(), dupVal.getOperand(0), dupVal.getOperand(1), dupNode->getPointerInfo(), dupNode->isVolatile(), dupNode->isNonTemporal(), dupNode->isInvariant(), dupNode->getAlignment(), dupNode->getTBAAInfo(), dupNode->getRanges()); However, my problem now is that it will re-use the same load still. If I change something, like setting volatile to true for...
2009 Aug 01
0
[LLVMdev] RFC: SDNode Flags
...constructor could look something like this: > > MemSDNode(unsigned Opc, DebugLoc dl, SDVTList VTs, MVT MemoryVT, > const Value *srcValue, int SVOff, > unsigned alignment, unsigned flags); > > and called like this: > > new (N) LoadSDNode(..., isVolatile|isNonTemporal); > > Thoughts? This sounds reasonable. I'd suggest using names like MemRefFlags rather than isVolatileisNonTemporal, but that's just a detail :-). My biggest concern is how this is encoded in the SDNode. It'd be good to avoid making MemSDNode bigger, but there are a variety o...
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
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...Load(dupVal.getValueType(), > dupVal.getDebugLoc(), > > dupVal.getOperand(0), > dupVal.getOperand(1), > > dupNode->getPointerInfo(), > > dupNode->isVolatile(), > dupNode->isNonTemporal(), > > dupNode->isInvariant(), > dupNode->getAlignment(), > > dupNode->getTBAAInfo(), > dupNode->getRanges()); > > However, my problem now is that it will re-use the same load still. If > I change...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...t; dupVal.getDebugLoc(), >> > dupVal.getOperand(0), >> > dupVal.getOperand(1), >> > dupNode->getPointerInfo(), >> > dupNode->isVolatile(), >> > dupNode->isNonTemporal(), >> > dupNode->isInvariant(), >> > dupNode->getAlignment(), >> > dupNode->getTBAAInfo(), >> > dupNode->getRanges()); >> > However, my problem now is that it will re-use the same...
2012 Feb 10
1
[LLVMdev] Prevent DAG combiner from changing "store ConstFP, addr" to integer store
...getConstant((uint32_t)CFP->getValueAPF(). bitcastToAPInt().getZExtValue(), MVT::i32); return DAG.getStore(Chain, N->getDebugLoc(), Tmp, Ptr, ST->getPointerInfo(), ST->isVolatile(), ST->isNonTemporal(), ST->getAlignment()); } break; ------------- What would be the proper way to inhibit this change? In my target (a custom b/e) MVT::i32 is a legal type, and I have a "store MVT::i32" instruction, but I want to later promote the store to a MOV (in a custom lowering ste...
2009 Aug 03
2
[LLVMdev] RFC: SDNode Flags
On Saturday 01 August 2009 15:12, Dan Gohman wrote: > LoadSDNode, which inherits from MemSDNode is the largest > SDNode. With the current SDNode allocation strategy, making it > bigger will increase the allocation needed for all nodes. Ok. > > new (N) LoadSDNode(..., isVolatile|isNonTemporal); > > > > Thoughts? > > This sounds reasonable. I'd suggest using names like MemRefFlags rather > than isVolatileisNonTemporal, but that's just a detail :-). There's a pipe there. :) > My biggest concern is how this is encoded in the SDNode. It'd be >...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...t; dupVal.getOperand(0), >> >> > dupVal.getOperand(1), >> >> > dupNode->getPointerInfo(), >> >> > dupNode->isVolatile(), >> >> > dupNode->isNonTemporal(), >> >> > dupNode->isInvariant(), >> >> > dupNode->getAlignment(), >> >> > dupNode->getTBAAInfo(), >> >> > dupNode->getRanges()); >> >> > However, my...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...> >> > dupVal.getOperand(0), > >> > dupVal.getOperand(1), > >> > dupNode->getPointerInfo(), > >> > dupNode->isVolatile(), > >> > dupNode->isNonTemporal(), > >> > dupNode->isInvariant(), > >> > dupNode->getAlignment(), > >> > dupNode->getTBAAInfo(), > >> > dupNode->getRanges()); > >> > However, my problem now is that...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...dupVal.getOperand(0), > >> >> > dupVal.getOperand(1), > >> >> > dupNode->getPointerInfo(), > >> >> > dupNode->isVolatile(), > >> >> > dupNode->isNonTemporal(), > >> >> > dupNode->isInvariant(), > >> >> > dupNode->getAlignment(), > >> >> > dupNode->getTBAAInfo(), > >> >> > dupNode->getRanges()); > >>...
2010 Feb 12
1
[LLVMdev] Adding NonTemporal
On Fri, Feb 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 t...
2010 Feb 11
1
[LLVMdev] Metadata [volatile bug?]
On Thursday 11 February 2010 14:44:23 Dan Gohman wrote: > > Then we can't use it to hold a non-temporal flag. The operand might be > > non-temporal in one context but it may not be in another. > > Sharing only happens when two instructions have the "same" memory > reference info. You just need to make sure that the non-temporal > flag is significant.
2009 Aug 03
0
[LLVMdev] RFC: SDNode Flags
...constructor could look something like this: > > MemSDNode(unsigned Opc, DebugLoc dl, SDVTList VTs, MVT MemoryVT, > const Value *srcValue, int SVOff, > unsigned alignment, unsigned flags); > > and called like this: > > new (N) LoadSDNode(..., isVolatile|isNonTemporal); > > Thoughts? > > -Dave > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
2009 Aug 03
0
[LLVMdev] RFC: SDNode Flags
...an Gohman wrote: > >> LoadSDNode, which inherits from MemSDNode is the largest >> SDNode. With the current SDNode allocation strategy, making it >> bigger will increase the allocation needed for all nodes. > > Ok. > > >>> new (N) LoadSDNode(..., isVolatile|isNonTemporal); >>> >>> Thoughts? >> >> This sounds reasonable. I'd suggest using names like MemRefFlags >> rather >> than isVolatileisNonTemporal, but that's just a detail :-). > > There's a pipe there. :) Oops. I blame my font ;-). > >>...
2017 Oct 13
2
[SelectionDAG] Assertion due to MachineMemOperand flags difference.
Hello, I've hit an assertion in SelectionDAG where we try to merge 2 loads that have the same operands but their MMO flags differ. One is dereferenceable and one is not. I'm not sure what the underlying issue here is: 1) MDSDNode with the same operands should have the same flags set on their respective MMO. The fact the flags differ when the opcode,types,operands and address-space are