Displaying 20 results from an estimated 10000 matches similar to: "carries_dependency attribute"
2016 Feb 26
0
[isocpp-parallel] Proposal for new memory_order_consume definition
If carries_dependency affects semantics, then it should not be an attribute.
The original design, or at least my understanding of it, was that it not
have semantics; it was only a suggestion to the compiler that it should
preserve dependencies instead of inserting a fence at the call site.
Dependency-based ordering would be preserved in either case. But I think
we're moving away from that
2016 Sep 06
5
Recommended computer resources to build llvm
And again...
LLVM_BUILD_LLVM_DYLIB:BOOL=ON
LLVM_LINK_LLVM_DYLIB:BOOL=ON
This one is the good one... maybe.
On Tue, Sep 6, 2016 at 11:35 PM, Alexandre Isoard <
alexandre.isoard at gmail.com> wrote:
> That is because I mistyped it:
> LLVM_ENABLE_LLVM_DYLIB:BOOL=ON
> LLVM_LINK_LLVM_DYLIB:BOOL=ON
>
> On Tue, Sep 6, 2016 at 11:31 PM, Wink Saville <wink at saville.com>
2016 Oct 19
2
RFC: Killing undef and spreading poison
Hi Alexandre,
On Wed, Oct 19, 2016 at 11:19 AM, Alexandre Isoard
<alexandre.isoard at gmail.com> wrote:
> I am probably missing something important, but what I mean is that you can
> always convert:
>
> %y = xor %x, %x
> to
> %y = 0
>
> Regardless of if %x is/might be an undef. That is, consider that reading %x
> any number of times always give the value of its
2017 Nov 04
2
returns_twice / noreturn
On Fri, Nov 3, 2017 at 5:39 PM, Hal Finkel <hfinkel at anl.gov> wrote:
>
> On 11/03/2017 07:20 PM, Alexandre Isoard via llvm-dev wrote:
>
> Hello,
>
> I am not sure about the semantic (if any) of returns_twice and noreturn
> attributes.
>
> int fork() __attribute__((returns_twice));
> void join(int) __attribute__((noreturn));
>
> int f(int n) {
> int
2017 Aug 11
2
Are SCEV normal form?
Note that there is a slight difficulty due to the fact that we "sink" the
trunc:
(zext i16 {0,+,1}<%bb> to i32) + (65536 * ({0,+,1}<nuw><%bb> /u 65536)
Here the recurrence lost it's <nuw> and got reduced to a i16 (on the left),
but not on the right.
But we can prove:
- that (zext i16 {0,+,1}<%bb> to i32) has the same 16 LSB than (i32
2017 Jul 05
3
trunc nsw/nuw?
On 07/05/2017 03:10 PM, Alexandre Isoard wrote:
> Ah, ok. I read it wrong. In *neither* case it is UB.
>
> Hum, can an implementation define it as UB? :-)
Nope :-)
The only case I've thought of where we could add these for C++ would be
on conversions to (most) enums (because they used signed underlying
types and the out-of-bounds mapping won't generally be one of the
allowed
2017 Jul 06
2
trunc nsw/nuw?
According to 6.3.1.3/3 of the C standard (I didn't check C++):
"3 Otherwise, the new type is signed and the value cannot be represented
in it; either the result is implementation-defined or an
implementation-defined signal is raised."
I *think* that means that IF a signal is raised then the signal raised
could be one that you can't guarantee to be able to return from
2016 Feb 20
3
[isocpp-parallel] Proposal for new memory_order_consume definition
On Fri, Feb 19, 2016 at 09:15:16PM -0500, Tony V E wrote:
> There's at least one easy answer in there:
>
> > If implementations must support annotation, what form should that
> annotation take? P0190R0 recommends the [[carries_dependency]]
> attribute, but I am not picky as long as it can be (1) applied
> to all relevant pointer-like objects and (2) used in C as well
2016 Sep 06
2
Recommended computer resources to build llvm
On Tue, Sep 6, 2016 at 3:05 PM, Alexandre Isoard
<alexandre.isoard at gmail.com> wrote:
> LLVM_ENABLE_DYLIB
Where/when/how do you specify LLVM_ENABLE_DYLIB and LLVM_LINK_DYLIB?
I tried the following on the cmake command line:
$ cmake -G Ninja .. -DCMAKE_INSTALL_PREFIX=/home/wink/opt/llvm
-DLLVM_ENABLE_DYLIB=true -DLLVM_LINK_DYLIB=true
And got:
...
-- Performing Test
2017 Jul 21
2
[SPIR/PTX] Divergence analysis for BasicBlocks
Hello,
Yes? Where is allActive defined, I couldn't find it.
Basically, a BB is control divergent if it's execution depends on a branch
that itself depends on a divergent ssa value.
On Fri, Jul 21, 2017 at 4:13 PM, Zaks, Ayal <ayal.zaks at intel.com> wrote:
> What would be the definition of “isControlDivergent(BasicBlock*)”; the
> complementary of “allActive(BasicBlock*)” –
2017 Jul 07
3
trunc nsw/nuw?
Hi,
Even if there are no ways in which a *frontend* can produce nsw
truncs, it may still be useful to have if optimization passes can
usefully attach nsw to truncates (after proving the truncates don't
"overflow"). For instance in
%a = ashr i64 %v, i32 33
%t = trunc %a to i32
the trunc can be marked nsw.
However, the burden of proof here is to show that we can do some
useful
2020 Jun 17
2
InstCombine doesn't delete instructions with token
I did not observe any assertion. In addition, the documentation (
https://llvm.org/docs/LangRef.html#undefined-values) says:
The string ‘undef’ can be used anywhere a constant is expected, and
indicates that the user of the value may receive an unspecified
bit-pattern. Undefined values may be of any type (other than ‘label’ or ‘
void’) and be used anywhere a constant is permitted.
Either way,
2017 Mar 09
2
Alias semantic
Hello fellow LLVM developers,
I was wondering about the semantic of aliasing.
Here are some examples where I am not sure if the two stores aliases:
Example 1:
for (int i = 2; i < n; ++i) {
store A[i];
store A[i-2];
}
Example 2:
for (int i = 2; i < n; ++i)
store A[i];
for (int i = 2; i < n; ++i)
store A[i-2];
In the example 1, they do not alias in a single iteration, but they
2018 Aug 16
3
[SCEV] Why is backedge-taken count <nsw> instead of <nuw>?
Ok.
To go back to the original issue, would it be meaningful to add a
SCEVUMax(0, BTC) on the final BTC computed by SCEV?
So that it does not use "negative values"?
On Wed, Aug 15, 2018 at 2:40 PM Friedman, Eli <efriedma at codeaurora.org>
wrote:
> On 8/15/2018 2:27 PM, Alexandre Isoard wrote:
>
> I'm not sure I understand the poison/undef/UB distinctions.
>
2017 Jul 05
2
trunc nsw/nuw?
On Wed, Jul 5, 2017 at 3:59 PM, Hal Finkel via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
>
> On 07/04/2017 01:41 AM, Dr.-Ing. Christoph Cullmann via llvm-dev wrote:
>
>> Hi,
>>
>> Hi Alexandre,
>>>
>>> LLVM currently doesn't have trunc nsw/nuw, no.
>>> Which frontend would emit such instructions? Any application in mind?
2016 Feb 18
2
Proposal for new memory_order_consume definition
Hello!
A proposal (quaintly identified as P0190R0) for a new memory_order_consume
definition may be found here:
http://www2.rdrop.com/users/paulmck/submission/consume.2016.02.10b.pdf
As requested at the October C++ Standards Committee meeting, this
is a follow-on to P0098R1 that picks one alternative and describes
it in detail. This approach focuses on existing practice, with the
goal of
2017 Nov 04
2
returns_twice / noreturn
Hello,
I am not sure about the semantic (if any) of returns_twice and noreturn
attributes.
int fork() __attribute__((returns_twice));
void join(int) __attribute__((noreturn));
int f(int n) {
int t = fork();
n++;
if (t != 0)
join(t);
return n;
}
Produces the following LLVM IR:
; Function Attrs: nounwind uwtable
define i32 @f(i32 %n) local_unnamed_addr #0 {
entry:
%call = call i32
2016 Aug 24
3
LLVM 3.9 RC2's SCCP pass removing calls to external functions?!
On Wed, Aug 24, 2016 at 10:11 AM, Renato Golin <renato.golin at linaro.org>
wrote:
> On 24 August 2016 at 08:48, Alexandre Isoard via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> > I am probably stating the obvious, but if the function is side-effect
> free
> > (onlyReadsMemory) it is valid to remove it.
> >
> > But I am guessing that does not
2017 Jul 25
2
Are SCEV normal form?
Hello,
I assumed SCEV purpose was to be a normal form, but then I wondered which
one of those is the normal form:
(zext i16 (trunc i32 %a to i16) to i32)
vs
(-((%a /u 65536) *u 65536) + %a)
The first one is nice for interval analysis, and known bit analysis.
The second one is nice when plugged into gep of 2d arrays.
--
*Alexandre Isoard*
-------------- next part --------------
An HTML
2018 Aug 15
2
[SCEV] Why is backedge-taken count <nsw> instead of <nuw>?
I'm not sure I understand the poison/undef/UB distinctions.
But on this example:
define i32 @func(i1 zeroext %b, i32 %x, i32 %y) {
> entry:
> %adds = add nsw i32 %x, %y
> %addu = add nuw i32 %x, %y
> %cond = select i1 %b, i32 %adds, i32 %addu
> ret i32 %cond
> }
It is important to not propagate the nsw/nuw between the two SCEV
expressions (which unification would