search for: isinvariant

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-&gt...
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...