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