Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] LICM for function calls"
2015 Jul 15
2
[LLVMdev] LICM for function calls
----- Original Message -----
> From: "Philip Reames" <listmail at philipreames.com>
> To: "Thomas F Raoux" <thomas.f.raoux at intel.com>, llvmdev at cs.uiuc.edu
> Sent: Tuesday, July 14, 2015 11:59:49 PM
> Subject: Re: [LLVMdev] LICM for function calls
>
> On 07/14/2015 07:45 AM, Raoux, Thomas F wrote:
> > Hi,
> >
> > Right now
2015 Jul 15
2
[LLVMdev] LICM for function calls
i think attributes have taken control flow into account. I think readnone
and nounwind functions are not safe to speculative execute because the
function could run indefinitely, e.g. an infinite loop.
-Xin
On Tuesday, July 14, 2015, Philip Reames <listmail at philipreames.com> wrote:
> On 07/14/2015 10:25 PM, Hal Finkel wrote:
>
>> ----- Original Message -----
>>
2015 Jul 18
2
[LLVMdev] LICM for function calls
On 07/15/2015 07:05 PM, Hal Finkel wrote:
> ----- Original Message -----
>> From: "Xin Tong" <trent.xin.tong at gmail.com>
>> To: "Philip Reames" <listmail at philipreames.com>
>> Cc: "Hal Finkel" <hfinkel at anl.gov>, llvmdev at cs.uiuc.edu
>> Sent: Wednesday, July 15, 2015 6:35:11 PM
>> Subject: Re: [LLVMdev] LICM
2015 Jul 16
2
[LLVMdev] LICM for function calls
The common case is wanting LICM to hoist a loop-invariant function call into the pre-header of a loop where the trip count is unknown - and, in particular, not known to be > 0.
-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Hal Finkel
Sent: Thursday, July 16, 2015 08:38
To: Raoux, Thomas F
Cc: llvmdev at cs.uiuc.edu
Subject:
2012 Aug 19
2
[LLVMdev] isSafeToSpeculativelyExecute() for CallInst
Hello,
Currently, llvm::isSafeToSpeculativelyExecute() always returns false for Call instructions.
This has actual performance implications, because loop-invariant code motion makes this check, and will never hoist instructions that are not safe to speculatively execute.
Unfortunately, there is currently no way to signal to LICM that a function is safe to speculatively execute. The
2012 Sep 09
1
[LLVMdev] isSafeToSpeculativelyExecute() for CallInst
Hi Nadav,
On 08/09/12 22:51, Nadav Rotem wrote:
>
> On Aug 19, 2012, at 2:55 PM, "Kuperstein, Michael M"
> <michael.m.kuperstein at intel.com <mailto:michael.m.kuperstein at intel.com>> wrote:
>
>> Hello,
>> Currently, llvm::isSafeToSpeculativelyExecute() always returns false for Call
>> instructions.
>> This has actual performance
2012 Sep 08
0
[LLVMdev] isSafeToSpeculativelyExecute() for CallInst
On Aug 19, 2012, at 2:55 PM, "Kuperstein, Michael M" <michael.m.kuperstein at intel.com> wrote:
> Hello,
>
> Currently, llvm::isSafeToSpeculativelyExecute() always returns false for Call instructions.
> This has actual performance implications, because loop-invariant code motion makes this check, and will never hoist instructions that are not safe to speculatively
2013 Jul 25
3
[LLVMdev] Does nounwind have semantics?
A patch is attached.
Not sure I'm happy with this due to the aforementioned orthogonality concerns, but I really don't have any better ideas. If anyone does, feel free to offer them, I don't mind throwing this patch into the trash.
(Also, not happy with the name, using "speculatable" as Nick suggested, for the lack of other options. If the name stays I'll add it to the
2013 Jul 25
0
[LLVMdev] Does nounwind have semantics?
Kuperstein, Michael M wrote:
> A patch is attached.
+ const CallInst* CI = dyn_cast<CallInst>(Inst);
+ return CI->isSafeToSpeculativelyExecute();
"return cast<CallInst>(Inst)->isSafeToSpeculativelyExecute();"?
Use cast<> instead of dyn_cast<>. See
http://llvm.org/docs/ProgrammersManual.html#isa . Then I don't think it
needs to be two lines.
2013 Jul 22
2
[LLVMdev] Does nounwind have semantics?
Of course frontends are free to put attributes, but it would be nice if optimizations actually used them. ;-)
My use case is that of proprietary frontend that happens to know some library function calls - which are only resolved at link time - have no side effects and are safe to execute speculatively, and wants to tell the optimizer it can move them around however it likes. I'll gladly submit
2011 Feb 07
3
[LLVMdev] A question about LICM (Loop Invariant Code Motion)
Hi,
I recently looked into the LICM(Loop Invariant Code Motion) pass of
LLVM and got a question about hoist load instruction to loop
preheader. I would like to show two examples:
Example 1:
int func(int n, int *fp) {
int i;
int a[1000];
for (i = 0; i < n; ++i) {
a[i] += *fp; // load from *fp pointer, no hoist
}
}
Here, load *fp CAN NOT be hoisted to loop preheader. If replace *fp
2013 Jul 22
0
[LLVMdev] Does nounwind have semantics?
On 22 July 2013 01:11, Kuperstein, Michael M <michael.m.kuperstein at intel.com
> wrote:
> Of course frontends are free to put attributes, but it would be nice if
> optimizations actually used them. ;-)
> My use case is that of proprietary frontend that happens to know some
> library function calls - which are only resolved at link time - have no
> side effects and are safe
2009 Aug 22
2
[LLVMdev] PR4174
On Aug 21, 2009, at 10:02 PM, Eli Friedman wrote:
> On Fri, Aug 21, 2009 at 4:53 PM, Jakub Staszak<kuba at gcc.gnu.org>
> wrote:
>>
>> On Aug 21, 2009, at 8:46 PM, Eli Friedman wrote:
>>
>>> On Fri, Aug 21, 2009 at 3:29 PM, Jakub Staszak<kuba at gcc.gnu.org>
>>> wrote:
>>>>
>>>> On Aug 21, 2009, at 7:31 PM, Eli
2015 Feb 11
3
[LLVMdev] question about licm
----- Original Message -----
> From: "Ashutosh Nema" <Ashutosh.Nema at amd.com>
> To: "songlh" <songlh at cs.wisc.edu>, llvmdev at cs.uiuc.edu
> Sent: Wednesday, February 11, 2015 3:20:27 AM
> Subject: Re: [LLVMdev] question about licm
>
> Hi,
>
> LICM can only hoist instructions which dominates all loop exit
> blocks.
> In this case
2009 Aug 22
2
[LLVMdev] PR4174
On Aug 21, 2009, at 10:27 PM, Eli Friedman wrote:
> On Fri, Aug 21, 2009 at 5:05 PM, Jakub Staszak<kuba at gcc.gnu.org>
> wrote:
>>
>> On Aug 21, 2009, at 10:02 PM, Eli Friedman wrote:
>>
>>> On Fri, Aug 21, 2009 at 4:53 PM, Jakub Staszak<kuba at gcc.gnu.org>
>>> wrote:
>>>>
>>>> On Aug 21, 2009, at 8:46 PM, Eli
2013 Jul 31
4
[LLVMdev] [Proposal] Speculative execution of function calls
Hello,
Chris requested I start a fresh discussion on this, so, here goes. The previous iterations can be found here (and in follow-ups):
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20130722/182590.html
http://lists.cs.uiuc.edu/pipermail/llvmdev/2013-July/064047.html
Cutting to the chase, the goal is to enhance llvm::isSafeToSpeculativelyExecute() to support call instructions.
2015 Feb 11
2
[LLVMdev] question about licm
hi,
I applied licm with basicaa on the following codes:
int j = atoi(argc[1]);
int lower[] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
int upper[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for(i = lower[j]; a[i] < 100 && i < upper[j]; i ++);
I notice that upper[j] is not hoisted out from the loop. Is this
because j could be larger than 10?
Thanks a lot!
Best,
2009 Aug 22
0
[LLVMdev] PR4174
On Fri, Aug 21, 2009 at 5:05 PM, Jakub Staszak<kuba at gcc.gnu.org> wrote:
>
> On Aug 21, 2009, at 10:02 PM, Eli Friedman wrote:
>
>> On Fri, Aug 21, 2009 at 4:53 PM, Jakub Staszak<kuba at gcc.gnu.org> wrote:
>>>
>>> On Aug 21, 2009, at 8:46 PM, Eli Friedman wrote:
>>>
>>>> On Fri, Aug 21, 2009 at 3:29 PM, Jakub Staszak<kuba at
2011 Feb 08
1
[LLVMdev] A question about LICM (Loop Invariant Code Motion)
On Tue, Feb 8, 2011 at 4:55 AM, Duncan Sands <baldrick at free.fr> wrote:
> Hi Yuelu,
>
>> After tracking the LICM pass, I find that both loads are loop
>> invariant, and canSinkOrHoist() also returns true; however the
>> difference is at Instruction::isSafeToSpeculativelyExecute(),
>> for load from function parameter pointer, it return false; with load
>>
2009 Aug 22
0
[LLVMdev] PR4174
On Fri, Aug 21, 2009 at 5:47 PM, Jakub Staszak<kuba at gcc.gnu.org> wrote:
>
> On Aug 21, 2009, at 10:27 PM, Eli Friedman wrote:
>
>> On Fri, Aug 21, 2009 at 5:05 PM, Jakub Staszak<kuba at gcc.gnu.org> wrote:
>>>
>>> On Aug 21, 2009, at 10:02 PM, Eli Friedman wrote:
>>>
>>>> On Fri, Aug 21, 2009 at 4:53 PM, Jakub Staszak<kuba at