Displaying 20 results from an estimated 900 matches similar to: "LSR formula rating"
2017 Nov 20
2
Nowaday Scalar Evolution's Problem.
The Problem?
Nowaday, SCEV called "Scalar Evolution" does only evolate instructions that
has predictable operand,
Constant-Based operand. such as that can evolute as a constant.
otherwise we couldn't evolate it as SCEV node, evolated as SCEVUnknown.
important thing that we remember is, we do not use SCEV only for Loop
Deletion,
which that doesn't really needed on nature loops
2015 Jan 15
4
[LLVMdev] confusion w.r.t. scalar evolution and nuw
I've been doing some digging in this area (scev, wrapping arithmetic),
learning as much as I can, and have reached a point where I'm fairly
confused about the semantics of nuw in scalar evolution expressions.
Consider the following program:
define void @foo(i32 %begin) {
entry:
br label %loop
loop:
%idx = phi i32 [ %begin, %entry ], [ %idx.dec, %loop ]
%idx.dec = sub nuw i32
2019 Jun 06
2
Strange behaviour of post-legalising optimisations(?)
Hi Tim,
Thank you for your reply. It actually helped a lot to narrow the issue, as previously I didn’t even know where to look.
I have been following the code in the debugger, specially the LSRInstance::SolveRecurse function. This function traverses recursively all possible ‘Formulae’, and determines the best instruction combination for the loop generation, based on minimal cost. The
2013 Jan 21
0
[LLVMdev] [llvm-commits] [llvm] r172534 - /llvm/trunk/test/Transforms/LoopStrengthReduce/post-inc-icmpzero.ll
Moving to llvm-dev...
On Jan 21, 2013, at 9:07 AM, Manish Verma <manish.verma at arm.com> wrote:
> Hi Andy,
>
> I have been able track down the reason for the difference in output
> generated by
> opt. The difference is caused when the target triple specified in the
> test-case
> is not a supported target for opt/clang/llvm. In this case, opt doesn't thow
> an
2011 Nov 14
1
[LLVMdev] How to make Polly ignore some non-affine memory accesses
On 11/14/2011 01:24 AM, Marcello Maggioni wrote:
> Hi Tobias.
>
> I worked on enabling Polly accepting non affine memory accesses and I
> produced a patch.
Great.
> I saw that there were a lot of updates in Polly recently, so I had to
> redo a lot of the work I did and that slowed me quite a bit.
Ups, sorry! However, I believe without these changes detecting
non-affine memory
2013 Jan 21
2
[LLVMdev] [llvm-commits] [llvm] r172534 - /llvm/trunk/test/Transforms/LoopStrengthReduce/post-inc-icmpzero.ll
Moving to llvmdev...
On Jan 21, 2013, at 11:37 AM, Nadav Rotem <nrotem at apple.com> wrote:
> Hi Manish,
>
> Thank you for looking at this. Recently opt started using the "-mtriple" command line flag to initialize the TargetMachine for IR-level transformations that use it. Currently only the following passes are using this feature: LSR, LowerSwitch, BBVectorizer and
2011 Nov 14
0
[LLVMdev] How to make Polly ignore some non-affine memory accesses
2011/11/14 Tobias Grosser <tobias at grosser.es>:
> On 11/14/2011 01:24 AM, Marcello Maggioni wrote:
>>
>> Hi Tobias.
>>
>> I worked on enabling Polly accepting non affine memory accesses and I
>> produced a patch.
>
> Great.
>
>> I saw that there were a lot of updates in Polly recently, so I had to
>> redo a lot of the work I did and
2011 Nov 11
0
[LLVMdev] [llvm-commits] [PATCH] BasicBlock Autovectorization Pass
On 11/12/2011 12:11 AM, Hal Finkel wrote:
> On Fri, 2011-11-11 at 23:55 +0100, Tobias Grosser wrote:
>> On 11/11/2011 11:36 PM, Hal Finkel wrote:
>>> On Thu, 2011-11-10 at 23:07 +0100, Tobias Grosser wrote:
>>>> On 11/08/2011 11:29 PM, Hal Finkel wrote: Talking about this I
>>>> looked again into ScalarEvolution.
>>>>
>>>> To
2005 Jul 29
0
[LLVMdev] patch for pointer-to-array conversion
The enlosed patch for IndVarSimplify.cpp works even when the pointer
increment is deeply nested wrt pointer initialization, but note that it
needs to have loop structures preserved, as in the following:
int A[3000000], B[20000], C[100], Z;
volatile int I, J, K;
int main()
{
int i, j, k, *a, *b, *c;
for ( a = &A[0], i = 0; i != 300; i++ )
{
I++;
2005 Jul 28
2
[LLVMdev] help with pointer-to-array conversion
I now understand that IndVarSimplify.cpp is capable of reproducing array
references when the pointer initialization from the array address is found
inside the immediately enclosing loop, such that in the following code:
int A[20000], B[100], Z;
int main()
{
int i, j, *a, *b;
for ( a = &A[0], i = 0; i != 200; i++ )
for ( b = &B[0], j = 0; j != 100; j++
2005 Jul 28
0
[LLVMdev] help with pointer-to-array conversion
On Thu, 28 Jul 2005, Naftali Schwartz wrote:
> I now understand that IndVarSimplify.cpp is capable of reproducing array
> references when the pointer initialization from the array address is found
> inside the immediately enclosing loop, such that in the following code:
Ok.
> int A[20000], B[100], Z;
> int main()
> {
> int i, j, *a, *b;
> for ( a =
2013 Jul 28
0
[LLVMdev] [Polly] Analysis of the expensive compile-time overhead of Polly Dependence pass
On 07/28/2013 06:52 AM, Star Tan wrote:
> Hi Tobias,
>
> I tried to investigated the problem related to ScopInfo, but I need your
> help on handling some problems about ISL and SCEV.
I copied the list as the discussion may be helpful for others.
@Sven, no need to read all. Just search for your name.
[..]
>>The interesting observation is, that Polly introduces three parameters
2013 Mar 14
0
[LLVMdev] Suggestion About Adding Target Dependent Decision in LSR Please
----- Original Message -----
> From: "Yin Ma" <yinma at codeaurora.org>
> To: "Andrew Trick" <atrick at apple.com>
> Cc: llvmdev at cs.uiuc.edu
> Sent: Thursday, March 14, 2013 4:21:50 PM
> Subject: Re: [LLVMdev] Suggestion About Adding Target Dependent Decision in LSR Please
>
>
>
>
>
> Hi Andy,
>
>
>
> Actually,
2013 Mar 14
0
[LLVMdev] Suggestion About Adding Target Dependent Decision in LSR Please
On Mar 13, 2013, at 4:37 PM, Yin Ma <yinma at codeaurora.org> wrote:
> Hi All,
>
> In the target I am working, we comes cross a situation that the loop strength reduction
> could deliver a better result but currently not, because
> 1. the algorithm narrows search space by winner registers without considering
> the target preferred format.
2013 Mar 13
2
[LLVMdev] Suggestion About Adding Target Dependent Decision in LSR Please
Hi All,
In the target I am working, we comes cross a situation that the loop
strength reduction
could deliver a better result but currently not, because
1. the algorithm narrows search space by winner registers without
considering
the target preferred format. (NarrowSearchSpaceByPickingWinnerRegs)
2. Cost comparison solely favors the number register without
considering other
2013 Mar 14
3
[LLVMdev] Suggestion About Adding Target Dependent Decision in LSR Please
Hi Andy,
Actually, if we just add hooks that preserves the existing behavior,
It is not difficult. For example,
For case one, we can define one function like
virtual const SCEV* getTargetPreferredWinnerReg(const SCEV*& ScaledReg,
SmallVector<const SCEV *, 4>& BaseRegs, GlobalValue*& BaseGV)
const;
In NarrowSearchSpaceByPickingWinnerRegs, we can
2008 Jun 10
2
[LLVMdev] SCEV Question
Is there a document describing the guts of SCEV anywhere?
I have a simple question. When looking at a linear SCEVAddRecExpr
with a constant step recurrence (that is, getStepRecurrence returns
SCEVConstant), is the constant in terms of bytes or in terms of "index,"
in that the byte offset is calculated by taking the step and multiplying it
by the data size of any memory operation its
2008 Jun 10
0
[LLVMdev] SCEV Question
Hi,
> Is there a document describing the guts of SCEV anywhere?
If you're looking for theoretical background of SCEV (chains of
recurrences algebra), you may take a look at this article:
http://citeseer.ist.psu.edu/vanengelen00symbolic.html
I'm not aware of any LLVM-specific document describing SCEV.
> I have a simple question. When looking at a linear SCEVAddRecExpr
> with a
2017 Jan 23
2
Pre/post-increment addressing mode in LSR
Dear all,
From what I can gather, there is currently no way for loop strength reduction to target pre- and post-increment addressing modes. This is because the target hook `isLegalAddressingMode` in TargetTransformInfo.h doesn’t allow for pre- and post-increment. There is in fact a comment to that effect on the function prototype: “TODO: handle pre/postinc as well” (see
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