<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Oct 2, 2020 at 8:00 PM Amara Emerson via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><span style="color:rgb(0,0,0)">[re-sending to list with new email]</span><div><span style="color:rgb(0,0,0)"><br></span></div><div><span style="color:rgb(0,0,0)">Ping. As far as I can tell the remaining issues are solved?</span><div style="color:rgb(0,0,0)"><br></div><div style="color:rgb(0,0,0)">If so, we’ll need to duplicate the intrinsics without the “experimental”, and add support in the IR autoupgrader and fix up the tests.</div><div style="color:rgb(0,0,0)"><br></div><div style="color:rgb(0,0,0)">Amara</div></div></div></blockquote><div><br></div><div>All of my concerns have been addressed, so +1 on going ahead with the rename.<br></div><div><br></div><div>Regards,<br></div><div>Nikita<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div style="overflow-wrap: break-word;"><div><div><blockquote type="cite"><div>On Sep 9, 2020, at 9:37 AM, Sanjay Patel <<a href="mailto:spatel@rotateright.com" target="_blank">spatel@rotateright.com</a>> wrote:</div><br><div><div dir="ltr"><div>Proposal to specify semantics for the FP min/max reductions:</div><div><a href="https://reviews.llvm.org/D87391" target="_blank">https://reviews.llvm.org/D87391</a></div><div>I'm not sure how we got to the current state of codegen for those, but it doesn't seem consistent or correct as-is, so I've proposed updates there too.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jun 17, 2020 at 2:15 PM Amara Emerson via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Proposed clarification here: <a href="https://reviews.llvm.org/D82034" target="_blank">https://reviews.llvm.org/D82034</a><br><div><br><blockquote type="cite"><div>On Jun 17, 2020, at 5:52 AM, Simon Pilgrim via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:</div><br><div>
<div><p>A minor point, but I think we need to more explicitly describe
the order of floating point operations in the LangRef as well:<br>
</p><p>"If the intrinsic call has the ‘reassoc’ or ‘fast’ flags set,
then the reduction will not preserve the associativity of an
equivalent scalarized counterpart. Otherwise the reduction will be
ordered, thus implying that the operation respects the
associativity of a scalarized reduction."</p><p>Please could we add some pseudocode to show exactly how the
intrinsic will be re-expanded for ordered cases?<br>
</p>
<div>On 16/06/2020 19:38, Sanjay Patel via
llvm-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>We switched over to producing the intrinsics for x86 with:<br>
</div>
<div><a href="https://reviews.llvm.org/rGe50059f6b6b3" rel="noreferrer" target="_blank">https://reviews.llvm.org/rGe50059f6b6b3</a></div>
<div>...I'm not aware of any regressions yet.</div>
<div><br>
</div>
<div><a href="https://bugs.llvm.org/show_bug.cgi?id=45378" rel="noreferrer" target="_blank">https://bugs.llvm.org/show_bug.cgi?id=45378</a>
is also fixed as of today.</div>
<div><br>
</div>
<div>So that leaves the problem with fmin/fmax when no
fast-math-flags are specified. We need to update the LangRef
with whatever the expected behavior is for NaN and -0.0. <br>
</div>
<div>x86 will probably be poor regardless of whether we choose
"llvm.maxnum" or "llvm.maximum" semantics.<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Apr 9, 2020 at 1:28 PM
Craig Topper via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div dir="ltr">No we still use the shuffle expansion which is
why the issue isn't unique to the intrinsic.
<div><br clear="all">
<div>
<div dir="ltr">~Craig</div>
</div>
<br>
</div>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Apr 9, 2020 at
10:21 AM Amara Emerson <<a href="mailto:aemerson@apple.com" target="_blank">aemerson@apple.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>Has x86 switched to the intrinsics now?
<div>
<div><br>
<blockquote type="cite">
<div>On Apr 9, 2020, at 10:17 AM, Craig Topper
<<a href="mailto:craig.topper@gmail.com" target="_blank">craig.topper@gmail.com</a>>
wrote:</div>
<br>
<div>
<div dir="ltr">
<div>That recent X86 bug isn't unique to the
intrinsic. We generate the same code from
this which uses the shuffle sequence the
vectorizers generated before the reduction
intrinsics existed.<br>
<br>
</div>
<div>declare i64
@llvm.experimental.vector.reduce.or.v2i64(<2
x i64>)·<br>
declare void @TrapFunc(i64)<br>
<br>
define void @parseHeaders(i64 * %ptr) {<br>
%vptr = bitcast i64 * %ptr to <2 x
i64> *<br>
%vload = load <2 x i64>, <2 x
i64> * %vptr, align 8<br>
<br>
%b = shufflevector <2 x i64> %vload,
<2 x i64> undef, <2 x i32>
<i32 1, i32 undef><br>
%c = or <2 x i64> %vload, %b<br>
%vreduce = extractelement <2 x i64>
%c, i32 0<br>
<br>
%vcheck = icmp eq i64 %vreduce, 0<br>
br i1 %vcheck, label %ret, label %trap<br>
trap:<br>
%v2 = extractelement <2 x i64>
%vload, i32 1<br>
call void @TrapFunc(i64 %v2)<br>
ret void<br>
ret:<br>
ret void<br>
}<br>
</div>
<br clear="all">
<div>
<div dir="ltr">~Craig</div>
</div>
<br>
</div>
<br>
<div class="gmail_quote">
<div dir="ltr" class="gmail_attr">On Thu, Apr
9, 2020 at 10:04 AM Philip Reames via
llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>>
wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">My
experience with them so far is that the code
generation for these <br>
intrinsics is still missing a lot of cases.
Some of them are X86 <br>
specific (the target I look at mostly), but
many of them have generic forms.<br>
<br>
As one recent example, consider <br>
<a href="https://bugs.llvm.org/show_bug.cgi?id=45378" rel="noreferrer" target="_blank">https://bugs.llvm.org/show_bug.cgi?id=45378</a>.
(There's nothing special <br>
about this one other than it was recent.)<br>
<br>
I'm not necessarily arguing they can't be
promoted from experimental, <br>
but it would be a much easier case if the
code gen was routinely as good <br>
or better than the scalar forms. Or to say
that a bit differently, if <br>
we could canonicalize to them in the IR
without major regression. <br>
Having two ways to represent something in
the IR without any agreed upon <br>
canonical form is always sub-optimal.<br>
<br>
Philip<br>
<br>
On 4/7/20 9:59 PM, Amara Emerson via
llvm-dev wrote:<br>
> Hi,<br>
><br>
> It’s been a few years now since I added
some intrinsics for doing vector reductions.
We’ve been using them exclusively on
AArch64, and I’ve seen some traffic a while
ago on list for other targets too. Sander
did some work last year to refine the
semantics after some discussion.<br>
><br>
> Are we at the point where we can drop
the “experimental” from the name? IMO all
target should begin to transition to using
these as the preferred representation for
reductions. But for now, I’m only proposing
the naming change.<br>
><br>
> Cheers,<br>
> Amara<br>
>
_______________________________________________<br>
> LLVM Developers mailing list<br>
> <a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
> <a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</blockquote>
</div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote>
</div>
<br>
<fieldset></fieldset>
<pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
</div>
_______________________________________________<br>LLVM Developers mailing list<br><a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br></div></blockquote></div><br></div>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>
</div></blockquote></div><br></div></div>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div></div>