Displaying 13 results from an estimated 13 matches for "isinvariant".
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...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 example, it will create a new node, but otherwis...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...ValueType(),
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 example, it will create
a new node, but otherwise it will...
2019 May 01
2
Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG
...ic arguments). It may also be possible to use an intrinsic to mark
the pointer itself instead of the instructions manipulating it, again it
depends on what you are modelling.
I've found that in the DAGBuilder metadata information connected with
> LoadInst instruction is utilized:
> bool isInvariant = I.getMetadata(LLVMContext::MD_invariant_load) !=
> nullptr;
>
> Is this metadata somehow protected against dropping - as you mentioned?
>
Nothing is protected as far as I know, the design is that it should always
be legal to drop a metadata.
I don’t know what the invariant_load infor...
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.
...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 example, it will
> c...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...al.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...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...al.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.
>> >> > I...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...t;> > 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 som...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...t; >> >> > 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.
>...
2019 May 01
2
Assigning custom information to IR instruction and passing it to its correspondent in Selection DAG
On Tue, Apr 30, 2019 at 3:51 PM Przemyslaw Ossowski via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> Hi,
> as I wrote in mu previous post I wanted to somehow mark one IR instruction
> (in this particular case it would be 'load') during dedicated pass, which
> will set the marking based on neighboring instructions. Next I wanted to
> somehow to convey this marking
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
2013 Sep 25
1
[LLVMdev] arm64 / iOS support
...ddr = DAG.getLoad(PtrVT, dl, DAG.getEntryNode(), PoolAddr,
+ MachinePointerInfo::getConstantPool(),
+ /*isVolatile=*/ false,
+ /*isNonTemporal=*/ true,
+ /*isInvariant=*/ true, 8);
+ if (GN->getOffset() != 0)
+ return DAG.getNode(ISD::ADD, dl, PtrVT, GlobalAddr,
+ DAG.getConstant(GN->getOffset(), PtrVT));
+
+ return GlobalAddr;
+ }
+
+ if (Alignment == 0) {
+ const PointerType *GVPtrTy = cast<PointerType>(GV->...
2014 Mar 07
3
[LLVMdev] [RFC] Add second "failure" AtomicOrdering to cmpxchg instruction
...4,7 @@ public:
/// Abstact virtual class for operations for memory operations
class MemSDNode : public SDNode {
private:
+
// MemoryVT - VT of in-memory value.
EVT MemoryVT;
@@ -1013,9 +1014,11 @@ public:
bool isNonTemporal() const { return (SubclassData >> 6) & 1; }
bool isInvariant() const { return (SubclassData >> 7) & 1; }
+
AtomicOrdering getOrdering() const {
return AtomicOrdering((SubclassData >> 8) & 15);
}
+
SynchronizationScope getSynchScope() const {
return SynchronizationScope((SubclassData >> 12) & 1);
}
@@ -108...