similar to: [LLVMdev] Strange loop unrolling problem

Displaying 20 results from an estimated 6000 matches similar to: "[LLVMdev] Strange loop unrolling problem"

2009 Apr 27
1
[LLVMdev] Strange loop unrolling problem (partially solved)
A short while ago I wrote about the strange loop unrolling behavior we encountered. The problem was that with -O3, the following loop does not get unrolled if the ifdef'ed dead code is not present. ------------------------------------ extern volatile int v1; int unroll() { int i; int v2 = 0; for(i = 0; i < 3; i++) { if (i == v2) { v1 = 1000; } else { v1 = 1001; }
2006 Nov 09
2
[LLVMdev] LLVM and newlib progress
Hi Reid, I'll write a separate post about the intrinsics, but just a quick note about the CFLAGS issue. Reid Spencer kirjoitti: > On Thu, 2006-11-09 at 15:29 +0200, Pertti Kellomäki wrote: >> Another related thing is that even when I defined -emit-llvm in >> what I thought would be a global CFLAGS for all of newlib, it did >> not get propagated to all subdirectories.
2016 Oct 12
2
Loop Unrolling Fail in Simple Vectorized loop
Hi all, Attached herewith is a simple vectorized function with loops performing a simple shuffle. I want all loops (inner and outer) to be unrolled by 2 and as such used -unroll-count=2 The inner loops(with k as the induction variable and having constant trip counts) unroll fully, but the outer loop with (j) fails to unroll. The llvm code is also attached with inner loops fully unrolled. To
2006 Apr 20
0
[LLVMdev] 1.7 Pre-Release Ready for Testing
This came up when trying to compile the Python bindings against llvm 1.7. File include/llvm/Transforms/Scalar.h declares llvm::createPREPass(), which does not seem to be implemented anywhere. Should I report this in llvmbugs? -- Pertti
2008 Oct 15
6
[LLVMdev] LLVM 2.4 problem? (resend)
On 15.10.2008, at 14.01, Pertti Kellomäki wrote: > Tatu Vaajalahti wrote: >> With this program llvm-gcc -O2 optimizes test2 away even though it's >> address is taken in program (gcc-4.2 does not, neither does llvm-gcc >> with -O or -O0): >> >> >> #include <stdio.h> >> >> static const char test1 = 'x'; >> static const char
2016 Oct 13
2
Loop Unrolling Fail in Simple Vectorized loop
Thanks for the explanation. But I am a little confused with the following fact. Can't LLVM keep vectorizable_elements as a symbolic value and convert the loop to say; for(unsigned i = 0; i < vectorizable_elements ; i += 2){ //main loop } for(unsigned i=0 ; i < vectorizable_elements % 2; i++){ //fix up } Why does it have to reason about the range of vectorizable_elements? Even
2012 May 24
0
[LLVMdev] data dependency and fully loop unrolling
Cheng, Are you looking specifically for an analysis that can 'undo' the effects of loop unrolling, or do you want dependency analysis that can run on the loop prior to unrolling? For dependency analysis on loops (prior to unrolling) Preston and Sanjoy have been working on this, see: http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-May/049769.html
2014 Jul 15
4
[LLVMdev] Partial loop unrolling
Hi, PS: It is a generic question related to partial loop unrolling, and nothing specific to LLVM. As far as partial loop unrolling is concerned, I could see following three different possibilities. Assume that unroll factor is 3. Original loop: for (i = 0; i < 10; i++) { do_foo(i); } 1. First possibility i = 0; do_foo(i++); do_foo(i++);
2016 Oct 13
2
Loop Unrolling Fail in Simple Vectorized loop
If count > MAX_UINT-4 your loop loops indefinitely with an increment of 4, I think. On Thu, Oct 13, 2016 at 4:42 PM, Charith Mendis via llvm-dev < llvm-dev at lists.llvm.org> wrote: > So, I tried unrolling the following simple loop. > > int unroll(unsigned * a, unsigned * b, unsigned *c, unsigned count){ > > for(unsigned i=0; i<count; i++){ > > a[i] =
2012 May 24
2
[LLVMdev] data dependency and fully loop unrolling
Hi, all When I have a loop unrolled, in the loop body, the same element of the array may be accessed multiple times. I see there are then load and store instructions and I can no longer trace the data dependency directly by comparing the operands. So I am writing to see if anyone has done this or any methods in llvm that may help? Best regards, -- Cheng Liu PhD Candidate Department of
2006 Apr 20
1
[LLVMdev] 1.7 Pre-Release Ready for Testing
Pertti Kellomäki wrote: > This came up when trying to compile the Python bindings > against llvm 1.7. File include/llvm/Transforms/Scalar.h > declares llvm::createPREPass(), which does not seem to > be implemented anywhere. Should I report this in llvmbugs? Just to clarify myself: this is an issue with the LLVM sources, not with the Python bindings. -- Pertti
2008 Oct 15
0
[LLVMdev] LLVM 2.4 problem? (resend)
Tatu Vaajalahti wrote: > On 15.10.2008, at 14.01, Pertti Kellomäki wrote: >> Seems to me that it is perfectly legitimate for the compiler to fold >> the two char constants together. > True, but note that it is the address of a variable that is used, not > the value. I don't have the C standard handy, but I would be somewhat surprised if the standard would explicitly
2008 May 12
4
[LLVMdev] Size and performance figures for LLVM?
I gave a short presentation on LLVM for a couple of people here, and they had questions I could not immediately answer. The questions are rather obvious, so I'm hoping that someone has already found out the answers. So here we go: 1) What is the relative size of LLVM bitcode files and the corresponding native binaries? Are there significant differences between targets (e.g. x86, ARM,
2013 Apr 15
1
[LLVMdev] State of Loop Unrolling and Vectorization in LLVM
Hi , I have a test case (and a micro benchmark made out of the test case) to check if loop unrolling and loop vectorization is efficiently done on LLVM. Here is the test case (credits: Tyler Nowicki) {code} extern float * array; extern int array_size; float g() { int i; float total = 0; for(i = 0; i < array_size; i++) { total += array[i]; } return total; } {code} When
2014 Jan 21
5
[LLVMdev] Loop unrolling opportunity in SPEC's libquantum with profile info
On 16/01/2014, 23:47 , Andrew Trick wrote: > > On Jan 15, 2014, at 4:13 PM, Diego Novillo <dnovillo at google.com > <mailto:dnovillo at google.com>> wrote: > >> Chandler also pointed me at the vectorizer, which has its own >> unroller. However, the vectorizer only unrolls enough to serve the >> target, it's not as general as the runtime-triggered
2006 Nov 23
3
[LLVMdev] Byte code portability (was Re: libstdc++ as bytecode, and compiling C++ to C)
On Wed, 22 Nov 2006, [ISO-8859-1] Pertti Kellom�ki wrote: > Aside from stuff that depends on system headers, are there any other > dependencies on the host system? In other words, will llvm-gcc produce > exactly the same byte code for a given set of source files regardless of > where compilation takes place? This has obvious implications on Yes. Many aspects of the target compiler
2006 Nov 23
2
[LLVMdev] Byte code portability (was Re: libstdc++ as bytecode, and compiling C++ to C)
Pertti Kellomäki schrieb: > Chris Lattner wrote: >> Many aspects of the target compiler can leak through. > > So if one wants to use the LLVM system as a cross compiler, one > has to configure llvm-gcc as a cross compiler? Fair enough, I guess. I hope the C backend is still meant to generate portable code though. Philipp
2006 Nov 09
9
[LLVMdev] LLVM and newlib progress
I managed to compile newlib with llvm-gcc yesterday. That is, the machine independent part is now basically done, and the syscall part contains no-op stubs provided by libgloss. I haven't tested the port yet, but since newlib has already been ported to many architectures, I would be pretty surprised if there were any major problems. A couple of things I noticed when configuring newlib for
2014 Jan 16
11
[LLVMdev] Loop unrolling opportunity in SPEC's libquantum with profile info
I am starting to use the sample profiler to analyze new performance opportunities. The loop unroller has popped up in several of the benchmarks I'm running. In particular, libquantum. There is a ~12% opportunity when the runtime unroller is triggered. This helps functions like quantum_sigma_x (http://sourcecodebrowser.com/libquantum/0.2.4/gates_8c_source.html#l00149). The function accounts
2016 Jun 27
1
Loop unrolling parameters
We've notice that when loops are unrolled there seems to be a limit of 64 subexpressions that can be assigned to registers. In our architecture we've got a lot more registers available than just 64. Is there some parameter we can change to the loop unroller that allows more subexpressions to be assigned to a number of registers beyond 64? Phil -------------- next part -------------- An