Displaying 20 results from an estimated 1000 matches similar to: "Getting the symbolic expression for an address calculation"
2016 Oct 04
2
Getting the symbolic expression for an address calculation
How do you generate a SCEVAddRecExpr from a SCEV? It tried dyn_casting and
it seems like that the SCEV returned by getSCEV is not a SCEVAddRecExpr.
Thanks
On Fri, Sep 30, 2016 at 4:16 PM, Friedman, Eli <efriedma at codeaurora.org>
wrote:
> On 9/30/2016 12:16 PM, Charith Mendis via llvm-dev wrote:
>
>>
>> Hi all,
>>
>> What is the best way to get the symbolic
2017 Aug 21
2
Vectorization in LLVM x86 backend
I isolated the LLVM IR and the X86 instructions emitted for the function
and are attached herewith and it is clearly emitting vector instructions. I
am having a hard time figuring out where the vector instructions are
formulated. For sure SLP and Loop vectorizer is not doing anything.
On Mon, Aug 21, 2017 at 11:56 AM, Craig Topper <craig.topper at gmail.com>
wrote:
> The X86 backend
2017 Oct 03
2
Changing Alignment of global variables in LLVM
If I know for sure I am accessing 32 byte chunks at a time, how can I go
about changing the alignment of @u?
Should I use DataLayout's reset method? I couldn't find a method to change
alignment of one global variable.
Thanks
On Tue, Oct 3, 2017 at 6:34 PM, Matthias Braun <mbraun at apple.com> wrote:
> The effective alignment is part of the load and store operations. Updating
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] =
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
2017 Oct 03
2
Changing Alignment of global variables in LLVM
What is the best way to change the alignment of global variables and
allocated structures in LLVM during one of its optimization passes?
For example, I want to change,
@u = internal unnamed_addr global [5 x [65 x [65 x [65 x double]]]]
zeroinitializer, align 16
to align to 32 bytes.
How can this be accomplished so that all other references in the code
accessing this structure are also
2016 Sep 03
2
llc error
I updated to the latest revision and now llvm does not build and quits
cmake with
CMake Error at cmake/modules/LLVMProcessSources.cmake:83 (message):
Found unknown source file
../llvm-revec/lib/CodeGen/MachineFunctionAnalysis.cpp
Please update
../llvm-revec/lib/CodeGen/CMakeLists.txt
Thanks
On Sat, Sep 3, 2016 at 2:09 AM, Craig Topper <craig.topper at gmail.com> wrote:
>
2017 Aug 21
2
Vectorization in LLVM x86 backend
Hi all,
Recently I compiled the attached .c file using Clang with "-mavx2 -mfma
-m32 -O3" optimization flags.
First I used -emit-llvm and inspected the LLVM IR and there are no vector
instructions. Then I got the assembly output of the file in it I can
clearly see vector instructions in it.
Neither the SLPVectorizer or the LoopVectorizer is however doing any
vectorization (also
2016 Oct 28
1
Vector Shuffle chain lowering to X86 instructions simplification inconsistencies
Hi all,
Attached herewith is a fairly simple LLVM file (shuffle.ll) with lots of
vector shuffles.
When I use llc with -O3 -mcpu=core-avx2 the first shuffle sequence
containing types of 128 wide gets reduced a single shuffle, where as the
second shuffle sequence containing types of 256 wide doesn't get reduced to
a single shuffle instruction in the resulting X86 code (Shuffle.s attached).
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
2016 Sep 03
4
llc error
Hi all,
The attached LLVM assembly file fails to generate x86 code when compiled
using llc.
compilation command - ../llvm-build/bin/llc -filetype=asm -march=x86-64
-mcpu=core-avx2 ex4.ll
The error message is,
LLVM ERROR: Cannot select: t95: v8f32 = X86ISD::SUBV_BROADCAST t17
t17: v4f32,ch = load<LD16[%scevgep](tbaa=<0x4dbcd98>)> t0, t16, undef:i64
t16: i64 = add t2,
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
2018 Feb 08
2
[SCEV] Inconsistent SCEV formation for zext
Hi Sanjoy,
SCEV is behaving inconsistently when forming SCEV for this zext instruction in the attached test case-
%conv5 = zext i32 %dec to i64
If we request a SCEV for the instruction, it returns-
(zext i32 {{-1,+,1}<nw><%for.body>,+,-1}<nw><%for.body7> to i64)
This can be seen by invoking-
$ opt -analyze -scalar-evolution inconsistent-scev-zext.ll
But when computing
2014 Apr 22
2
[LLVMdev] SCEV and induction variable identification
Hi Fellows,
The goal is to find the induction variable for a loop, where the
induction variable increments with the multiplication, division or shift
operations, like this one:
sz = 8;
do {
... ...
sz = sz / 2;
} while (sz)
Is SCEV capable of detecting the induction variable 'sz' in this case?
The code snippet I am using to solve the problem is
for each basic-block in a
2018 Feb 10
0
[SCEV] Inconsistent SCEV formation for zext
Hi,
+CC Max, Serguei
This looks like a textbook case of why caching is hard.
We first call getZeroExtendExpr on %dec, and this call does end up
returning an add rec. However, in the process of simplifying the
zext, it also calls into isLoopBackedgeGuardedByCond which in turn
calls getZeroExtendExpr(%dec) again. However, this second (recursive)
time, we don't simplify the zext and cache a
2012 Nov 02
0
[LLVMdev] DependenceAnalysis and PR14241
Here's the current code (abstracted a bit)
const Instruction *Src,
const Instruction *Dst,
// make sure they are loads and stores, then
const Value *SrcPtr = getPointerOperand(Src); // hides a little
casting, then Src->getPointerOperand
const Value *DstPtr = getPointerOperand(Dst); // ditto
// see how underlying objects alias, then
const GEPOperator *SrcGEP =
2012 Nov 02
2
[LLVMdev] DependenceAnalysis and PR14241
On 11/02/2012 11:02 AM, Hal Finkel wrote:
> ----- Original Message -----
>> From: "Tobias Grosser" <tobias at grosser.es>
>> To: "preston briggs" <preston.briggs at gmail.com>
>> Cc: "Benjamin Kramer" <benny.kra at gmail.com>, "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
>> Sent: Friday, November
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
2014 Nov 13
1
rsync prevent destination only new folders but need new files
Good day to all!
I'm doing git file replication task and need to sync source destination,
using below sync command.
rsync -atnvv --existing --exclude '.git' --progress source/ destination/;
Here I,
1) need only sync directories that *exist on destination* ,no new folders
should copy from source - [used --existing did the job but it not copying
new files also.]
2) need to copy
2011 May 07
1
[LLVMdev] Loop transformations using LLVM
On May 5, 2011, at 5:11 AM, Rotem, Nadav wrote:
> Malveeka,
>
> You can use the LoopInfo analysis to find the induction variable.
>
> http://llvm.org/docs/doxygen/html/classllvm_1_1Loop.html#a72bbf45d2e00971f56bf8cfe4e1df01c
>
> Cheers,
> Nadav
getCanonicalInductionVariable is a good example of finding IVs without iterating over instructions. But you may need to