Displaying 20 results from an estimated 10000 matches similar to: "RFC: separating guards and implicit control flow"
2018 May 17
0
RFC: separating guards and implicit control flow
On 05/16/2018 04:49 PM, Philip Reames wrote:
> All,
>
> TLDR: guards currently require reasoning about implicit control flow.
> LLVM struggles with implicit control flow within a basic block. We
> should redesign guards to admit this rather than trying to boil the
> ocean.
>
> As you may be aware, LLVM currently has experimental support for a
> construct called a
2018 Jul 13
2
Giving up using implicit control flow in guards
Hi Sanjoy,
Thanks for feedback! As for memory effects, currently I use " inaccessiblememonly " for it. It allows to prove that it doesn't alias with any other load/store in the function, but doesn't allow CSE to eliminate it. It is not actually super-cool, because there is no way that we can safely hoist it out of loop (and sometimes we want to, for example to make unswitching).
2018 Jul 10
2
Giving up using implicit control flow in guards
Hello Everyone,
I want to raise a discussion about @llvm.experimental.guard intrinsic and reasons why we should give up using it. Here is an alternative approach to representation of guards that resolves some of fundamental flaws that the current guards have.
Basically, this intrinsic was introduced to model the following situation: we want to check that some condition is true, and if it's
2016 Feb 21
2
RFC: Add guard intrinsics to LLVM
Hi Andy,
Thanks for replying, responses inline below:
On Fri, Feb 19, 2016 at 11:12 AM, Andrew Trick <atrick at apple.com> wrote:
> This clearly doesn't need operand bundles, but using an intrinsic
> would permit special code motion semantics. It could be hoisted and
> merged with other traps, but the condition could never be widened
> beyond the union of the original
2019 May 30
2
Making loop guards part of canonical loop structure
On Hexagon, unguarded loops cannot be converted to hardware loops.
If the loop's latch branch alone handles the iteration count, including the possibility of 0, then the loop cannot be converted to a hardware loop, because hardware loops must iterate at least once. If the entire loop is guarded against zero iteration count, we can put the loop setup in the preheader, since at that point the
2016 Feb 17
7
RFC: Add guard intrinsics to LLVM
This is a proposal to add guard intrinsics to LLVM.
Couple of glossary items: when I say "interpreter" I mean "the most
conservative tier in the compilation stack" which can be an actual
interpreter, a "splat compiler" or even a regular JIT that doesn't
make optimistic assumptions. By "bailing out to the interpreter" I
mean "side exit" as
2016 Feb 18
2
RFC: Add guard intrinsics to LLVM
Sanjoy gave the long answer, let me give the short one. :)
"deopt" argument bundles are used in the middle end, they are lowered
into a statepoint, and generate the existing stackmap format. i.e. one
builds on the other.
On 02/18/2016 11:43 AM, Eric Christopher wrote:
> Hi Sanjoy,
>
> A quick question here. With the bailing to the interpreter support
> that you're
2019 May 28
6
Making loop guards part of canonical loop structure
Hi all,
TL;DR: Should the loop guard branch be part of the canonical loop structure?
Background:
-----------
While working on the next set of improvements to loop fusion, we discovered that
loop rotation will put a guard around a loop if it cannot prove the loop will
execute at least once, as seen in the following (simplified) example:
entry:
br i1 %cmp1, label %for.body.lr.ph, label
2016 Feb 18
2
RFC: Add guard intrinsics to LLVM
Replies inline.
At a high level, it feels like we'll eventually need a new instruction
to represent the kind of control flow a guard entails (to be clear: we
should probably still start with an intrinsic) -- they are fairly
well-behaved, i.e. readonly, nounwind etc. as far as the immediate
"physical" caller is concerned, but not so as far as its callers's
callers are concerned.
2016 Apr 27
2
RFC: Generalize AssumptionCache to AxiomCache
Hi all,
Guard intrinsics[0] are similar in nature to Assume intrinsics, in
that the condition passed to a guard intrinsic call is known to be
true at locations dominated (but *not* post-dominated) by the
call[1]. I'd like to re-use the AssumptionCache infrastructure that
already exists to teach the mid level optimizer to exploit this
property.
The steps I want to take are (not necessarily
2016 Feb 23
5
RFC: Add guard intrinsics to LLVM
Assuming everyone is on the same page, here's a rough high level agenda:
# step A: Introduce an `interposable` function attribute
We can bike shed on the name and the exact specification, but the
general idea is that you cannot do IPA / IPO over callsites calling
`interposable` functions without inlining them. This attribute will
(usually) have to be used on function bodies that can
2016 Feb 18
5
RFC: Add guard intrinsics to LLVM
On Wed, Feb 17, 2016 at 8:53 PM, Philip Reames
<listmail at philipreames.com> wrote:
> I think you're jumping ahead a bit here. I'm not sure the semantics are
> anywhere near as weird as you're framing them to be. :)
I now think this weirdness actually does not have to do anything with
guard_on or bail_to_interpeter, but it has to do with deopt bundles
itself. Our
2019 May 30
4
Making loop guards part of canonical loop structure
I don't remember the details of the particular case where we encountered this, but I think the loop started with the condition check and ended with an unconditional branch back to the beginning.
--
Krzysztof Parzyszek kparzysz at quicinc.com LLVM compiler development
-----Original Message-----
From: Philip Reames <listmail at philipreames.com>
Sent: Thursday, May 30, 2019 3:00 PM
2005 May 18
2
R Include File Guards
R 2.1.0/src/include from 2005/04/18 download
Naming inconsistent for guards as well but that's pedantic.
Simple convention:
file <foo.h>
#ifndef R_FOO_H
file <R_ext/bar.h>
#ifndef R_EXT_BAR_H
Missing guards:
<IOStuff.h>
<Internal.h>
<Parse.h>
<R_ext/GraphicsBase.h>
<R_ext/GraphicsDevice.h>
<R_ext/GraphicsEngine.h>
2020 May 14
2
Sancov guard semantics for usage between comdats
Given the following C++ code:
```
// test.cpp
struct Foo {
int public_foo();
int outside_foo();
[[gnu::always_inline]] int inline_foo() {
int x = outside_foo();
if (x % 17) {
x += 1;
}
return x;
}
[[gnu::noinline]] int inline_bar1() {
int x = inline_foo();
if (x % 23) {
x += 2;
}
return x;
}
[[gnu::noinline]] int inline_bar2() {
2017 Jan 28
2
[PATCH] Add missing HAVE_CONFIG_H guards
Hi,
Attached patch adds some missing HAVE_CONFIG_H guards to some places in
celt/arm. Please review.
Thanks,
--Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.xiph.org/pipermail/opus/attachments/20170127/a56493d8/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name:
2016 Feb 18
2
RFC: Add guard intrinsics to LLVM
On Thu, Feb 18, 2016 at 12:48 PM, Eric Christopher <echristo at gmail.com> wrote:
> Heh. I like his more, but I see where you're coming from as well - the easy
> way (for me at least) to look at the guard is as an implicit branch to a
> side exit that restores (or communicates) state back to the interpreter. The
By "this" do you mean "explicit conditional branch
2010 Sep 23
1
Behavior of R CMD build and library() w.r.t. setGeneric-like functions
Hello developeRs,
Apologies in advance for a rather long email, but to describe the
problem, I need to step through many details. I have been working on a
new dispatching system (futile.paradigm on CRAN) based on functional
programming concepts that is an alternative to S3 and S4 dispatching. I
use a declarative syntax using guard statements to control the
dispatching between function variants. I
2017 Mar 28
4
[Bug 1139] New: The include guards on the include/libipset/linux_ip_set*.h are wrong
https://bugzilla.netfilter.org/show_bug.cgi?id=1139
Bug ID: 1139
Summary: The include guards on the
include/libipset/linux_ip_set*.h are wrong
Product: ipset
Version: unspecified
Hardware: x86_64
OS: All
Status: NEW
Severity: enhancement
Priority: P5
Component:
2016 Feb 23
3
RFC: Add guard intrinsics to LLVM
On Mon, Feb 22, 2016 at 9:40 PM, Andrew Trick <atrick at apple.com> wrote:
> I actually see fences as a proxy for potential inter-process
> communication and I/O. It's important that any opaque library call
> could contain a fence.
This makes perfect sense to me now, especially if you want to use
@trap_on for safety checks. Without re-ordering restrictions, a
failed @trap_on