Displaying 20 results from an estimated 1000 matches similar to: "Verify that we only get loop metadata on latches"
2020 Mar 20
5
CFG manipulation and !llvm.loop metadata
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200320/34cdec77/attachment.html>
-------------- next part --------------
Hi all,
I have encountered some issues with the preservation of the location of llvm.loop metadata (containing optimisation hints), and would appreciate some feedback on the issue.
The IR language description states that
2015 Jun 26
2
[LLVMdev] Can LLVM vectorize <2 x i32> type
For example, I have the following IR code,
for.cond.preheader: ; preds = %if.end18
%mul = mul i32 %12, %3
%cmp21128 = icmp sgt i32 %mul, 0
br i1 %cmp21128, label %for.body.preheader, label %return
for.body.preheader: ; preds =
%for.cond.preheader
%19 = mul i32 %12, %3
%20 = add i32 %19, -1
%21 = zext i32 %20 to i64
%22 =
2015 Jan 08
9
[LLVMdev] Separating loop nests based on profile information?
I've been playing with approaches to getting better optimization of
loops which contain infrequently executed slow paths. I've gotten as
far as throwing together a proof of concept implementation of a profile
guided optimization to separate a single loop with multiple latches into
a loop nest, but I want to get feedback from interested parties before
investing much more effort.
The
2013 Feb 25
2
[LLVMdev] loop metdata instruction
Hi,
I've been looking through past threads looking for an answer to why the loop metadata is attached to the loop latch branch. What is the reason for putting the metadata inside the loop rather than outside (for example on the branch into the loop header.) Note that I'm asking about llvm.loop.parallel not llvm.mem.parallel_loop_access which obviously must be inside the loop.
It seems
2013 May 15
2
[LLVMdev] [polly] Polly Loop info and LoopSimplify functionality
Tobias,
I am working on one very well hidden issue with Polly loop structure. Here
is a brief description.
In polly::createLoop() we create something like this (topology is
important):
polly.start: ; preds =
%polly.split_new_and_old
... <some code>
br label %polly.loop_header
polly.loop_after: ; preds =
2017 May 18
2
Computing loop trip counts with Scalar evolution
Hello.
I tried to get the trip count of a loop with Scalar evolution. I got inspired from
http://stackoverflow.com/questions/13834364/how-to-get-loop-bounds-in-llvm .
However the analysis described there doesn't work well for the second inner loop of
thes function below (although if we declare Bcols a short it works well):
void MatMul(int Arows, int Acols, int Brows, int
2013 Feb 25
0
[LLVMdev] loop metdata instruction
On 2/25/2013 2:08 PM, Redmond, Paul wrote:
>
> I've been looking through past threads looking for an answer to why the loop metadata is attached to the loop latch branch. What is the reason for putting the metadata inside the loop rather than outside (for example on the branch into the loop header.)
Latch is a branch to the header. What branch in particular do you have
in mind?
Loop
2017 May 19
4
memcmp code fragment
Hi,
Look at the following code:
Look at the following C code seqence:
unsigned char mainGtU ( unsigned int i1,
unsigned int i2,
unsigned char* block)
{
unsigned char c1, c2;
c1 = block[i1]; c2 = block[i2];
if (c1 != c2) return (c1 > c2);
i1++; i2++;
c1 = block[i1]; c2 = block[i2];
if (c1 != c2) return (c1 > c2);
i1++; i2++;
..
..
2015 Jan 08
2
[LLVMdev] Separating loop nests based on profile information?
> On Jan 7, 2015, at 5:33 PM, Chandler Carruth <chandlerc at google.com> wrote:
>
>
> On Wed, Jan 7, 2015 at 5:19 PM, Philip Reames <listmail at philipreames.com <mailto:listmail at philipreames.com>> wrote:
> I've been playing with approaches to getting better optimization of loops which contain infrequently executed slow paths. I've gotten as far as
2015 Jan 08
8
[LLVMdev] Separating loop nests based on profile information?
On 01/07/2015 05:33 PM, Chandler Carruth wrote:
> How does this compare with classical approaches of loop peeling,
> partitioning, fission, or whatever you might call it?
I'm still developing a good sense for this, but let me lay out some
observations. Fair warning, this is going to be long and rambling.
Let's start with a toy example:
while(c) {
x = this->x;
y =
2010 Apr 04
1
[LLVMdev] Code generators (both llvmc and Jit) get stuck when dealing circular CFG
Hi,
The following arbitrary example makes the code generators to get stuck
(llvmc won't return from command line, Jit won't return from function
call)
Basically it is a CFG with circles, (the function will return by
comparing a branch counter to a threshold on runtime - see the
"Brancher" blocks below)
Any idea what goes wrong? Is it a bug in llvm ?
; ModuleID =
2013 Apr 26
0
[LLVMdev] 'LowerDbgDeclare' in Instruction combining affects scope information
Hi All,
For the test snippet below,
int func(int dd, int ds, int *rm)
{
int d_sn = 0;
int dv_sn = 0;
unsigned int d, r;
if (dd < 0) { d_sn = 1; dd = -dd; };
if (ds < 0) { dv_sn = 1; ds = -ds ; };
d = func1( dd, ds, &r);
if (d_sn && dv_sn){ r = -r;}
else if (d_sn) { d = -d; r = -r; }
else if (dv_sn) { d = -d; };
if (rm) { *rm = (signed int)r; }
2018 May 29
0
LLVM Block is not the basic block
Hi
Sorry, that the previous email is sent out before I complete it due to my
mistake. Please read this
I am using the LLVM function pass to help me to do code analysis. However,
I found that the block LLVM identified will ignore the function call.
For example, the below IR should not be a basic block.
%call17 = call i32* @__errno_location() #14, !dbg !1384
%18 = load i32, i32* %call17,
2018 May 29
2
LLVM Block is not the basic block
> On 29 May 2018, at 22:40, Muhui Jiang via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hi
>
> Sorry, that the previous email is sent out before I complete it due to my mistake. Please read this
>
> I am using the LLVM function pass to help me to do code analysis. However, I found that the block LLVM identified will ignore the function call.
>
> For
2014 Aug 28
2
[LLVMdev] The problem of densemap and loop
Hello, everyone,
I created a dense map like this: DenseMap<Loop *, int> ls;
And I have a module which contains 3 functions:
function F and it has a loop which is " Loop at depth 1 containing: %1<header><exiting>,%3,%5<latch> "
function G and it has two loops which are "
Loop at depth 1 containing: %8<header><exiting>,%10,%14<latch>
2014 Aug 29
2
[LLVMdev] The problem of densemap and loop
Dear John,
First thing, the 3 loops in Densemap are all " Loop at depth 1 containing: %1<header><exiting>,%3,%5<latch> " in the 3 functions.
The dense map is in a ImmutablePass. I got it in FunctionPass and tried insert the information in this FunctionPass. So to turn the FunctionPass to ModulePass may be a better idea?
Another interesting thing: if just before
2013 Jan 31
0
[LLVMdev] [PATCH] parallel loop metadata
Dear all,
Here's an updated version of the parallel loop metadata patch.
It includes documentation for the new metadata types with
a semantics description.
--
Pekka
-------------- next part --------------
A non-text attachment was scrubbed...
Name: parallel-loop-metadata.patch
Type: text/x-patch
Size: 12972 bytes
Desc: not available
URL:
2013 Feb 25
2
[LLVMdev] loop metdata instruction
Hi,
On 2013-02-25, at 5:11 PM, Krzysztof Parzyszek wrote:
> On 2/25/2013 2:08 PM, Redmond, Paul wrote:
>>
>> I've been looking through past threads looking for an answer to why the loop metadata is attached to the loop latch branch. What is the reason for putting the metadata inside the loop rather than outside (for example on the branch into the loop header.)
>
>
2013 Jan 30
3
[LLVMdev] [PATCH] parallel loop metadata
On Wed, Jan 30, 2013 at 12:35 PM, Pekka Jääskeläinen
<pekka.jaaskelainen at tut.fi> wrote:
> Thank you all for comments,
>
>
> On 01/30/2013 11:22 AM, David Tweed wrote:
>>
>> In a personal capacity I'm quite interested in the issues of producing
>> from a
>> high-level language some LLVM IR which is labelled with vectorization info
>> (including
2015 Jul 15
5
[LLVMdev] Improving loop vectorizer support for loops with a volatile iteration variable
Hi all,
I would like to propose an improvement of the “almost dead” block
elimination in Transforms/Local.cpp so that it will preserve the canonical
loop form for loops with a volatile iteration variable.
*** Problem statement
Nested loops in LCALS Subset B (https://codesign.llnl.gov/LCALS.php) are
not vectorized with LLVM -O3 because the LLVM loop vectorizer fails the
test whether the loop