Displaying 11 results from an estimated 11 matches for "getnowrapflags".
Did you mean:
setnowrapflags
2013 Nov 16
0
[LLVMdev] SCEV getMulExpr() not propagating Wrap flags
...e NUW and NSW flags if both the
> // outer mul and the inner addrec are guaranteed to have no overflow.
> //
> // No self-wrap cannot be guaranteed after changing the step size, but
> // will be inferred if either NUW or NSW is true.
> Flags = AddRec->getNoWrapFlags(clearFlags(Flags, SCEV::FlagNW));
> const SCEV *NewRec = getAddRecExpr(NewOps, AddRecLoop, Flags);
>
> // If all of the other operands were loop invariant, we are done.
> if (Ops.size() == 1) return NewRec;
>
> I understand that you can't assume it won'...
2013 Nov 13
2
[LLVMdev] SCEV getMulExpr() not propagating Wrap flags
...new addrec. Propagate the NUW and NSW flags if both the
// outer mul and the inner addrec are guaranteed to have no overflow.
//
// No self-wrap cannot be guaranteed after changing the step size, but
// will be inferred if either NUW or NSW is true.
Flags = AddRec->getNoWrapFlags(clearFlags(Flags, SCEV::FlagNW));
const SCEV *NewRec = getAddRecExpr(NewOps, AddRecLoop, Flags);
// If all of the other operands were loop invariant, we are done.
if (Ops.size() == 1) return NewRec;
I understand that you can't assume it won't wrap around with the new
str...
2013 Nov 16
2
[LLVMdev] SCEV getMulExpr() not propagating Wrap flags
On 16 November 2013 06:56, Andrew Trick <atrick at apple.com> wrote:
> - getMulExpr constructs a new AddRec with NSW:
>
> Flags = AddRec->getNoWrapFlags(clearFlags(Flags, SCEV::FlagNW));
> const SCEV *NewRec = getAddRecExpr(NewOps, AddRecLoop, Flags);
>
Hi Andrew,
Thanks for looking at this.
Clearing the flags here makes sense, but it's being too conservative. I'm
thinking I'll need something like propagateSafeFlags(...)...
2015 Jun 11
2
[LLVMdev] Question about NoWrap flag for SCEVAddRecExpr
> On Jun 11, 2015, at 12:48 AM, Sanjoy Das <sanjoy at playingwithpointers.com> wrote:
>
> On Thu, Jun 11, 2015 at 12:02 AM, Adam Nemet <anemet at apple.com <mailto:anemet at apple.com>> wrote:
>>
>>> On Jun 10, 2015, at 11:44 PM, Sanjoy Das <sanjoy at playingwithpointers.com> wrote:
>>>
>>>> Base is treated as unsigned so
2013 Nov 16
0
[LLVMdev] SCEV getMulExpr() not propagating Wrap flags
> On Nov 16, 2013, at 4:11 AM, Renato Golin <renato.golin at linaro.org> wrote:
>
>> On 16 November 2013 06:56, Andrew Trick <atrick at apple.com> wrote:
>> - getMulExpr constructs a new AddRec with NSW:
>>
>> Flags = AddRec->getNoWrapFlags(clearFlags(Flags, SCEV::FlagNW));
>> const SCEV *NewRec = getAddRecExpr(NewOps, AddRecLoop, Flags);
>
> Hi Andrew,
>
> Thanks for looking at this.
>
> Clearing the flags here makes sense, but it's being too conservative. I'm thinking I'll need something...
2018 Feb 08
2
[SCEV] Inconsistent SCEV formation for zext
...ssion with the addrec on the outside.
return getAddRecExpr(
getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this,
Depth + 1),
getSignExtendExpr(Step, Ty, Depth + 1), L,
AR->getNoWrapFlags());
}
I believe it is wrong for ScalarEvolution to use a simplified SCEV for internal analysis and return a non-simplified SCEV to the client.
Thanks,
Pankaj
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/at...
2015 Jan 15
4
[LLVMdev] confusion w.r.t. scalar evolution and nuw
...arned to handle
non-constant ranges) in ScalarEvolution::getUnsignedRange, the
following code could fire:
if (const SCEVAddRecExpr *AddRec = dyn_cast<SCEVAddRecExpr>(S)) {
// If there's no unsigned wrap, the value will never be less than its
// initial value.
if (AddRec->getNoWrapFlags(SCEV::FlagNUW))
if (const SCEVConstant *C = dyn_cast<SCEVConstant>(AddRec->getStart()))
if (!C->getValue()->isZero())
ConservativeResult =
ConservativeResult.intersectWith(
ConstantRange(C->getValue()->getValue(), APInt(BitWidth...
2016 Apr 23
2
[IndVarSimplify] Narrow IV's are not eliminated resulting in inefficient code
...IOps);
> + AddRecOps[0] = getAddExpr(LIOps, Flags);
>
> // Build the new addrec. Propagate the NUW and NSW flags if both the
> // outer add and the inner addrec are guaranteed to have no
> overflow.
> // Always propagate NW.
> Flags = AddRec->getNoWrapFlags(setFlags(Flags, SCEV::FlagNW));
> const SCEV *NewRec = getAddRecExpr(AddRecOps, AddRecLoop, Flags);
>
> // If all of the other operands were loop invariant, we are done.
> if (Ops.size() == 1) return NewRec;
>
> Thanks!
> -- Sanjoy
>
-------------- next...
2018 Feb 10
0
[SCEV] Inconsistent SCEV formation for zext
...return getAddRecExpr(
>
> getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this,
>
> Depth + 1),
>
> getSignExtendExpr(Step, Ty, Depth + 1), L,
>
> AR->getNoWrapFlags());
>
> }
>
>
>
> I believe it is wrong for ScalarEvolution to use a simplified SCEV for
> internal analysis and return a non-simplified SCEV to the client.
>
>
>
> Thanks,
>
> Pankaj
>
>
>
>
2016 Apr 20
2
[IndVarSimplify] Narrow IV's are not eliminated resulting in inefficient code
Hi,
Would you be able to kindly check and assist with the IndVarSimplify / SCEV
problem I got in the latest LLVM, please?
Sometimes IndVarSimplify may not eliminate narrow IV's when there actually
exists such a possibility. This may affect other LLVM passes and result in
inefficient code. The reproducing test 'indvar_test.cpp' is attached.
The problem is with the second
2018 Feb 11
2
[SCEV] Inconsistent SCEV formation for zext
...return getAddRecExpr(
>
> getExtendAddRecStart<SCEVZeroExtendExpr>(AR, Ty, this,
>
> Depth + 1),
>
> getSignExtendExpr(Step, Ty, Depth + 1), L,
>
> AR->getNoWrapFlags());
>
> }
>
>
>
> I believe it is wrong for ScalarEvolution to use a simplified SCEV for
> internal analysis and return a non-simplified SCEV to the client.
>
>
>
> Thanks,
>
> Pankaj
>
>
>
>