Displaying 20 results from an estimated 4000 matches similar to: "[LLVMdev] where does %a_addr.0 come from?"
2010 Sep 23
0
[LLVMdev] where does %a_addr.0 come from?
Hi Maarten,
If you look at the start of basic block 2 (bb2) you'll see the
following instruction:
%a_addr.0 = phi i32 [ 1, %bb ], [ 0, %bb1 ] ; <i32> [#uses=1]
This is an SSA phi node which assigns a value of either 1 or 0 to %a_addr.0
depending on whether control reached the PHI node from basic block bb, or
bb1.
- Lang.
On Thu, Sep 23, 2010 at 11:26 PM, maarten faddegon <
2012 Sep 21
3
[LLVMdev] Alias Analysis accuracy
On Fri, Sep 21, 2012 at 3:08 PM, Welson Sun <welson.sun at gmail.com> wrote:
> OK, with the restrict type qualifier, it is a little bit better:
>
> The IR's function signature becomes:
> define void @foo(i32* noalias %a, i32* noalias %b, i32* noalias %c) nounwind
> {
>
> Now the AA result:
> Function: foo: 13 pointers, 0 call sites
> NoAlias: i32* %a,
2012 Sep 21
0
[LLVMdev] Alias Analysis accuracy
Here is the result of running mem2reg then basicaa, it is even worse: (%a
should be alias to %0, and partial alias to %3)
opt -mem2reg -basicaa -aa-eval -print-all-alias-modref-info < foo.s >
/dev/null
Function: foo: 6 pointers, 0 call sites
NoAlias: i32* %a, i32* %b
NoAlias: i32* %a, i32* %c
NoAlias: i32* %b, i32* %c
PartialAlias: i32* %1, i32* %a
NoAlias:
2012 Sep 21
3
[LLVMdev] Alias Analysis accuracy
Dear LLVM,
I would like to understand how to improve the LLVM alias analysis accuracy.
I am currently using llvmgcc 2.9 and llvm 3.0. Here is the C code:
void foo(int a[SIZE], int b[SIZE], int c[SIZE])
{
for(int i=0; i<SIZE; i++)
c[i] = a[i] + b[i];
}
Here is the IR:
target datalayout =
2011 Jan 27
0
[LLVMdev] Update PHINode after extracting code
I guess I didn't have a clear question.
Suppose we have BB1 and BB2 both point to BB3.
BB1 has variable x. BB2 also as variable x.
BB3 will have PHINode for x with 2 value from BB1 and BB2.
BB1 BB2
\ /
BB3
Now if BB1 and BB2 is extracted into a function
(using ExtractCodeRegion), they will be replaced by
a basic block called codeRepl (which has a call to the extracted
2012 Feb 06
1
[LLVMdev] Fwd: Updating PHI for Instruction Domination?
---------- Forwarded message ----------
From: Ryan Taylor <ryta1203 at gmail.com>
Date: Mon, Feb 6, 2012 at 10:36 AM
Subject: Re: [LLVMdev] Updating PHI for Instruction Domination?
To: Eric Christopher <echristo at apple.com>
Since I'm not sure which instructions I might want to replicate, would it
be possible to cast the Value from "PHINode::getIncomingValue" to
2014 May 22
2
[LLVMdev] RFC: Indexing of structs vs arrays in getelementpointer
On May 22, 2014, at 3:51 PM, Chandler Carruth <chandlerc at google.com> wrote:
>
> On Thu, May 22, 2014 at 4:42 PM, Louis Gerbarg <lgg at apple.com> wrote:
> The problem that the above transform is technically illegal because “When indexing into a (optionally packed) structure, only i32 integer constants are allowed (when using a vector of indices they must all be the same
2012 Feb 06
0
[LLVMdev] Updating PHI for Instruction Domination?
I guess not since Value is a superclass of Instruction.
On Mon, Feb 6, 2012 at 10:36 AM, Ryan Taylor <ryta1203 at gmail.com> wrote:
>
>
> ---------- Forwarded message ----------
> From: Ryan Taylor <ryta1203 at gmail.com>
> Date: Mon, Feb 6, 2012 at 10:36 AM
> Subject: Re: [LLVMdev] Updating PHI for Instruction Domination?
> To: Eric Christopher <echristo at
2011 Jan 27
2
[LLVMdev] Update PHINode after extracting code
On 01/26/2011 07:50 PM, Vu Le wrote:
> I guess I didn't have a clear question.
>
> Suppose we have BB1 and BB2 both point to BB3.
> BB1 has variable x. BB2 also as variable x.
> BB3 will have PHINode for x with 2 value from BB1 and BB2.
> BB1 BB2
> \ /
> BB3
>
> Now if BB1 and BB2 is extracted into a function
> (using ExtractCodeRegion), they
2012 Feb 06
1
[LLVMdev] Updating PHI for Instruction Domination?
You're creating a new path that doesn't include L. For all values defined in L and used outside of L, you need to determine the new reaching def. That's specific to your transformation and can't be automated. Once you do that, creating the phi in F is natural.
-Andy
On Feb 6, 2012, at 11:51 AM, Ryan Taylor <ryta1203 at gmail.com> wrote:
> I guess not since Value is a
2013 Jul 30
0
[LLVMdev] Eliminating PHI with Identical Inputs
Hi John,
On 30/07/13 16:12, John Criswell wrote:
> Dear All,
>
> Is there a pass (or set of passes) that will replace a phi whose input operands
> all compute the same value with an instruction that computes that value? In
> other words, something that will convert:
>
> define internal i32 @function(i32 %x) {
> ...
> bb1:
> %y = add %x, 10
> ...
> bb2:
> %z
2013 Jul 30
1
[LLVMdev] Eliminating PHI with Identical Inputs
On 7/30/13 9:46 AM, Duncan Sands wrote:
> Hi John,
>
> On 30/07/13 16:12, John Criswell wrote:
>> Dear All,
>>
>> Is there a pass (or set of passes) that will replace a phi whose
>> input operands
>> all compute the same value with an instruction that computes that
>> value? In
>> other words, something that will convert:
>>
>>
2013 Jul 30
2
[LLVMdev] Eliminating PHI with Identical Inputs
Dear All,
Is there a pass (or set of passes) that will replace a phi whose input
operands all compute the same value with an instruction that computes
that value? In other words, something that will convert:
define internal i32 @function(i32 %x) {
...
bb1:
%y = add %x, 10
...
bb2:
%z = add %x, 10
...
bb3:
%phi = [bb1, %y], [bb2, %z]
into
define internal i32 @function(i32 %x) {
...
bb1:
...
2019 Jul 01
2
[cfe-dev] [RFC] ASM Goto With Output Constraints
On Fri, Jun 28, 2019 at 3:35 PM James Y Knight <jyknight at google.com> wrote:
> On Fri, Jun 28, 2019 at 5:53 PM Bill Wendling <isanbard at gmail.com> wrote:
>
>> On Fri, Jun 28, 2019 at 1:48 PM James Y Knight <jyknight at google.com>
>> wrote:
>>
>>> On Fri, Jun 28, 2019 at 3:00 PM Bill Wendling <isanbard at gmail.com>
>>> wrote:
2019 Jul 02
2
[cfe-dev] [RFC] ASM Goto With Output Constraints
On Mon, Jul 1, 2019 at 6:25 PM Finkel, Hal J. <hfinkel at anl.gov> wrote:
> On 7/1/19 1:38 PM, Bill Wendling via llvm-dev wrote:
>
> On Fri, Jun 28, 2019 at 3:35 PM James Y Knight <jyknight at google.com>
> wrote:
>
>> On Fri, Jun 28, 2019 at 5:53 PM Bill Wendling <isanbard at gmail.com> wrote:
>>
>>> On Fri, Jun 28, 2019 at 1:48 PM James Y
2012 Dec 26
2
[LLVMdev] Can simplifycfg kill llvm.lifetime intrinsics?
> Ok, suppose you have the following code:
> BB1:
> llvm.lifetime.start(%a)
> store to %a
> llvm.lifetime.end(%a)
> br %BB2
>
> BB2:
> <some code>
> br %BB1
>
> If you remove the first "llvm.lifetime.start", then when you enter
> %BB1 for the second time, your "store to %a" can be considered invalid,
> as you've
2015 Feb 25
0
[LLVMdev] Jump Theading/GVN bug - moving discussion to llvm-dev
On 02/25/2015 10:41 AM, Rafael Espíndola wrote:
>>> all the zero paths from entry to %a pass by %b.
>>
>> That is a graph-wise definition, sure.
>> So, this is an interesting definition, and maybe this is part of the source
>> of the problem.
>>
>> For SSA, at least GCC requires that both "definition block dominates use
>> block" (which
2012 Jul 25
2
[LLVMdev] Question about an unusual jump instruction
Dear all,
I'm working on an exploratory backend on llvm. In the instruction set I'm using
I have an instruction (called DECJNZ) that decrements a register and, if the
decremented value is not zero, jumps (with a relative jump) to a given offset.
I've described in tablegen this instruction as follow:
def DECJNZ : Instruction {
let Namespace = "MyTarget";
let
2012 Jul 25
0
[LLVMdev] Question about an unusual jump instruction
On Wed, Jul 25, 2012 at 12:48 AM, Michele Scandale
<michele.scandale at gmail.com> wrote:
> Dear all,
>
> I'm working on an exploratory backend on llvm. In the instruction set I'm using
> I have an instruction (called DECJNZ) that decrements a register and, if the
> decremented value is not zero, jumps (with a relative jump) to a given offset.
>
> I've
2011 Aug 30
2
[LLVMdev] Getting rid of phi instructions?
Hi all,
is there a pass to get rid of phi-instructions in a function? There's no loop involved.
I have a function approx. like this:
void @func() {
entry:
…
bb1:
…
bb2:
…
%tmp100 = phi i32 [ 0, bb1 ], [ 1, bb2 ] …
%tmp101 = getelementptr …, %tmp100
tail call void @anotherfunc(…, %tmp101)
ret void
}
I would like it to rather be something like this:
void @func() {
entry:
…
bb1:
...