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]
> >...
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
> >> >>...
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...