search for: v2size

Displaying 15 results from an estimated 15 matches for "v2size".

Did you mean: v1size
2018 Jun 18
2
Question about Alias Analysis with restrict keyword
...1298     // instruction.  If one pointer is a GEP with a non-zero index of the other 1299     // pointer, we know they cannot alias. 1300 1301     // If both accesses are unknown size, we can't do anything useful here. 1302     if (V1Size == MemoryLocation::UnknownSize && 1303         V2Size == MemoryLocation::UnknownSize) 1304       return MayAlias; 1305 1306     AliasResult R = aliasCheck(UnderlyingV1, MemoryLocation::UnknownSize, 1307                                AAMDNodes(), V2, MemoryLocation::UnknownSize, 1308                                V2AAInfo, nullptr, UnderlyingV2);...
2013 Feb 27
2
[LLVMdev] Question about intrinsic function llvm.objectsize
...the basicaa code fragment you quote below. The code fragment asserts that something can be assumed "no alias" if the access size of an memory access (i.e. a load or store) is bigger than the underlying object of the other accessed object. For you example below: V1Size = sizeof(mydata) V2Size = say 4 assuming that GetUnderlyingObject for addr1 and addr2 returns mydata: getObjectSize(O1) = sizeof(mydata) getObjectSize(O2) = sizeof(mydata) this should be isObjectSmallerThan(O2, V1Size) == false isObjectSmallerThan(O1, V2Size) == false ?? > > In llvm, the "object poin...
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...uote below. > > The code fragment asserts that something can be assumed "no alias" if the access size of an memory access (i.e. a load or store) is bigger than the underlying object of the other accessed object. > > For you example below: > > V1Size = sizeof(mydata) > V2Size = say 4 > > assuming that GetUnderlyingObject for addr1 and addr2 returns mydata: This assumption is wrong. The GetUnderlyingObject() return phi node instead of &mydata. > > getObjectSize(O1) = sizeof(mydata) > getObjectSize(O2) = sizeof(mydata) > > this should be > is...
2013 Feb 26
2
[LLVMdev] Question about intrinsic function llvm.objectsize
...alysis.cpp 1205 // If the size of one access is larger than the entire object on the other 1206 // side, then we know such behavior is undefined and can assume no alias. 1207 if (TD) 1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2, V1Size, *TD, *TLI)) || 1209 (V2Size != UnknownSize && isObjectSmallerThan(O1, V2Size, *TD, *TLI))) 1210 return NoAlias; -------------- next part -------------- ; ModuleID = 'a.c' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64...
2009 Nov 05
0
[LLVMdev] BasicAliasAnalysis: Null pointers do not alias with anything
.../Analysis/BasicAliasAnalysis.cpp (revision 86023) > +++ lib/Analysis/BasicAliasAnalysis.cpp (working copy) > @@ -633,6 +633,15 @@ > AliasAnalysis::AliasResult > BasicAliasAnalysis::aliasCheck(const Value *V1, unsigned V1Size, > const Value *V2, unsigned V2Size) { > + // Null pointers do not alias with anything > + if (const Constant *C = dyn_cast<Constant>(V1)) > + if (C->isNullValue()) > + return NoAlias; > + > + if (const Constant *C = dyn_cast<Constant>(V2)) > + if (C->isNullValue()) > + ret...
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...e access is larger than the entire object > on the other > 1206 // side, then we know such behavior is undefined and can > assume no alias. > 1207 if (TD) > 1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2, > V1Size, *TD, *TLI)) || > 1209 (V2Size != UnknownSize && isObjectSmallerThan(O1, > V2Size, *TD, *TLI))) > 1210 return NoAlias;
2013 Feb 27
0
[LLVMdev] Question about intrinsic function llvm.objectsize
...larger than the entire object on the other >>> 1206 // side, then we know such behavior is undefined and can assume no alias. >>> 1207 if (TD) >>> 1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2, V1Size, *TD, *TLI)) || >>> 1209 (V2Size != UnknownSize && isObjectSmallerThan(O1, V2Size, *TD, *TLI))) >>> 1210 return NoAlias; > Best, > Arnold
2013 Feb 27
4
[LLVMdev] Question about intrinsic function llvm.objectsize
...of one access is larger than the entire object on the other >> 1206 // side, then we know such behavior is undefined and can assume no alias. >> 1207 if (TD) >> 1208 if ((V1Size != UnknownSize && isObjectSmallerThan(O2, V1Size, *TD, *TLI)) || >> 1209 (V2Size != UnknownSize && isObjectSmallerThan(O1, V2Size, *TD, *TLI))) >> 1210 return NoAlias; Best, Arnold
2009 Nov 04
5
[LLVMdev] BasicAliasAnalysis: Null pointers do not alias with anything
This is the first patch I've sent to this project. Please be gentle :) LLVM fails to remove the dead load in the following code when running $./llvm-as -o - test.ll | ./opt -O3 -o - | ./llvm-dis -o - %t = type { i32 } declare void @foo(i8*) define void @f(%t* noalias nocapture %stuff ) { %p = getelementptr inbounds %t* %stuff, i32 0, i32 0 %before = load i32* %p call void
2007 Jul 24
1
[LLVMdev] alias information on machine instructions
...value and the size of the type is relevant for the query. but when i look at the DAGCombiner an "overlap" is calculated from the type size, the offset and an other offset. how is this supposed to work? the arguments of the "alias" function are named "V1Size" and "V2Size", so it would make sense to pass the size only? > >> + SDOperand getVecLoad(unsigned Count, MVT::ValueType VT, SDOperand Chain, >> + SDOperand Ptr, SDOperand SV); > > This is code that was deleted from the LLVM trunk recently; it looks like it &g...
2008 Aug 18
2
[LLVMdev] Flow-Sensitive AA
...is wouldn't know which operands we're interested in. So does AliasAnalysis need an updated interface, something like: virtual AliasResult alias(const Value *V1, unsigned V1Size, const Instruction *V1Inst, const Value *V2, unsigned V2Size, const Instruction *V2Inst); ? Or am I missing something? -Dave
2009 Nov 06
2
[LLVMdev] BasicAliasAnalysis: Null pointers do not alias with anything
...Analysis.cpp (revision 86023) >> +++ lib/Analysis/BasicAliasAnalysis.cpp (working copy) >> @@ -633,6 +633,15 @@ >> AliasAnalysis::AliasResult >> BasicAliasAnalysis::aliasCheck(const Value *V1, unsigned V1Size, >> const Value *V2, unsigned V2Size) { >> + // Null pointers do not alias with anything >> + if (const Constant *C = dyn_cast<Constant>(V1)) >> + if (C->isNullValue()) >> + return NoAlias; >> + >> + if (const Constant *C = dyn_cast<Constant>(V2)) >> + if (C->is...
2007 Jul 23
0
[LLVMdev] alias information on machine instructions
On Mon, Jul 23, 2007 at 02:19:38PM +0200, Florian Brandner wrote: > hi, > > i know it took a while, but here is a patch that adds a list of source > values to machine instructions. Cool! > i've testet all this for our backend only, which is not public. i do not > know how much has to be done to integrate this with the other, e.g., the > x86, targets. does any of the
2020 Mar 18
2
valid BasicAA behavior?
Am Di., 17. März 2020 um 16:56 Uhr schrieb Chawla, Pankaj via llvm-dev <llvm-dev at lists.llvm.org>: > All I am expecting from DA is a direction vector containing (*). There seems to be a bug in DI, see Felipe's answer. > I think the main problem is that currently there is no exact way DA can query AliasAnalysis in a ‘conservatively correct’ manner. > > Using UnknownSize
2007 Jul 23
1
[LLVMdev] alias information on machine instructions
hi, i know it took a while, but here is a patch that adds a list of source values to machine instructions. i modified the DAGISelEmiter to automatically catch regular loads/stores. custom instructions and loads/stores rewritten by the lowering pass are not automatically captured. during the instruction selection a source value operand is added to the DAG for patterns matching a load/store.