search for: gettbaainfo

Displaying 20 results from an estimated 24 matches for "gettbaainfo".

2013 Apr 18
2
[LLVMdev] alias analysis in backend
...MMOa->getSize() + MMOa->getOffset() - MinOffset; > int64_t Overlapb = MMOb->getSize() + MMOb->getOffset() - MinOffset; > > AliasAnalysis::AliasResult AAResult = AA->alias( > AliasAnalysis::Location(MMOa->getValue(), Overlapa, > MMOa->getTBAAInfo()), > AliasAnalysis::Location(MMOb->getValue(), Overlapb, > MMOb->getTBAAInfo())); > > return (AAResult != AliasAnalysis::NoAlias); This conservatively compensates for loads/stores that were split into narrower accesses during lowering, so doesn't...
2013 Apr 17
0
[LLVMdev] alias analysis in backend
...int64_t Overlapa = MMOa->getSize() + MMOa->getOffset() - MinOffset; int64_t Overlapb = MMOb->getSize() + MMOb->getOffset() - MinOffset; AliasAnalysis::AliasResult AAResult = AA->alias( AliasAnalysis::Location(MMOa->getValue(), Overlapa, MMOa->getTBAAInfo()), AliasAnalysis::Location(MMOb->getValue(), Overlapb, MMOb->getTBAAInfo())); return (AAResult != AliasAnalysis::NoAlias); -Hal > > /Jonas > > > > -----Original Message----- > > From: Hal Finkel [mailto:hfinkel at anl.gov] > &gt...
2013 Apr 17
2
[LLVMdev] alias analysis in backend
Hi Hal, Thanks. How about a symbol with two different immediate offsets - the Value* would be the same, right? I don't see how AliasAnalysis::Location would handle this... And BasicAliasAnalysis does if (V1 == V2) return MustAlias; , so I'm not sure how this would be done .. ? /Jonas > -----Original Message----- > From: Hal Finkel [mailto:hfinkel at anl.gov] > Sent:
2013 Apr 18
0
[LLVMdev] alias analysis in backend
...t; > MinOffset; > > int64_t Overlapb = MMOb->getSize() + MMOb->getOffset() - > > MinOffset; > > > > AliasAnalysis::AliasResult AAResult = AA->alias( > > AliasAnalysis::Location(MMOa->getValue(), Overlapa, > > MMOa->getTBAAInfo()), > > AliasAnalysis::Location(MMOb->getValue(), Overlapb, > > MMOb->getTBAAInfo())); > > > > return (AAResult != AliasAnalysis::NoAlias); > > This conservatively compensates for loads/stores that were split into > narrower access...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...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 not. Any ideas? > -Joe > > > On Fri, Nov 30, 2012 at 9:55 PM, Joseph...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
..., 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 not. Any ideas? -Joe On Fri, Nov 30, 2012 at 9:55 PM, Joseph Pusdesris <joe at p...
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 Mar 01
0
[LLVMdev] problem with inlining pass
Hi Jochen, > My llvm version is 3.0 release. > I have a module generated by clang. When I optimize it, I first add an > inlining pass (llvm::createFunctionInliningPass), then these passes: > - own FunctionPass > - llvm::createPromoteMemoryToRegisterPass > - llvm::createInstructionCombiningPass > - llvm::createDeadInstEliminationPass > - llvm::createDeadStoreEliminationPass
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...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 not. Any ideas? > > -Joe > > > > > >...
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...PointerInfo(), >> > 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 not. Any ideas? >> >...
2012 Feb 29
2
[LLVMdev] problem with inlining pass
Hi! My llvm version is 3.0 release. I have a module generated by clang. When I optimize it, I first add an inlining pass (llvm::createFunctionInliningPass), then these passes: - own FunctionPass - llvm::createPromoteMemoryToRegisterPass - llvm::createInstructionCombiningPass - llvm::createDeadInstEliminationPass - llvm::createDeadStoreEliminationPass - new llvm::DominatorTree() - new
2012 Dec 02
2
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...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 >> >...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...gt; > 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 not....
2012 Mar 01
3
[LLVMdev] Aliasing bug or feature?
...Size() + MMOa->getOffset() - MinOffset; int64_t Overlapb = MMOb->getSize() + MMOb->getOffset() - MinOffset; AliasAnalysis::AliasResult AAResult = AA->alias( AliasAnalysis::Location(MMOa->getValue(), Overlapa, MMOa->getTBAAInfo()), AliasAnalysis::Location(MMOb->getValue(), Overlapb, MMOb->getTBAAInfo())); Quick debug of BasicAliasAnalysis::aliasCheck() points to this code: if (isIdentifiedObject(O1) && isIdentifiedObject(O2)) return NoAlias; And in llv...
2012 Dec 02
0
[LLVMdev] Splitting a load with 2 consumers into 2 loads.
...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 > >> >&gt...
2011 Nov 17
2
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...s.begin(), e = writes.end(); > + i != e; ++i) { > + for (AliasSet::iterator j = i->begin(), e2 = i->end(); > + j != e2; ++j) { > + AliasAnalysis::Location ptrLoc(j->getValue(), j->getSize(), > + j->getTBAAInfo()); > + if (AA.getModRefInfo(J, ptrLoc) != AliasAnalysis::NoModRef) { > + usesI = true; break; One instruction per line. > + } > + } > + if (usesI) break; > + } > + } Many of these braces are not ne...
2011 Nov 21
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...(); > > + i != e; ++i) { > > + for (AliasSet::iterator j = i->begin(), e2 = i->end(); > > + j != e2; ++j) { > > + AliasAnalysis::Location ptrLoc(j->getValue(), j->getSize(), > > + j->getTBAAInfo()); > > + if (AA.getModRefInfo(J, ptrLoc) != AliasAnalysis::NoModRef) { > > + usesI = true; break; > One instruction per line. > > > + } > > + } > > + if (usesI) break; > > + } > &g...
2011 Nov 16
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
Tobias, et al., Attached is the my autovectorization pass. I've fixed a bug that appears when using -bb-vectorize-aligned-only, fixed some 80-col violations, etc., and at least on x86_64, all test cases pass except for a few; and all of these failures look like instruction-selection bugs. For example: MultiSource/Applications/ClamAV - fails to compile shared_sha256.c with an error: error in
2011 Nov 15
3
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
Tobias, I've attached the latest version of my autovectorization patch. I was able to add support for using the ScalarEvolution analysis for load/store pairing (thanks for your help!). This led to a modest performance increase and a modest compile-time increase. This version also has a cutoff as you suggested (although the default value is set high (4000 instructions between pairs) because
2011 Dec 02
5
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
...e for this 'for'. > + WE = WriteSet.end(); W != WE; ++W) { > + for (AliasSet::iterator A = W->begin(), AE = W->end(); > + A != AE; ++A) { > + AliasAnalysis::Location ptrLoc(A->getValue(), A->getSize(), > + A->getTBAAInfo()); Align this argument with the first argument. AliasAnalysis::Location ptrLoc(A->getValue(), A->getSize(), A->getTBAAInfo()); > + if (AA.getModRefInfo(J, ptrLoc) != AliasAnalysis::NoModRef) { > + UsesI = true; > + break...