Displaying 20 results from an estimated 2000 matches similar to: "[FPEnv] FNEG instruction"
2018 Aug 29
3
[FPEnv] FNEG instruction
On Wed, 29 Aug 2018 at 07:51, Cameron McInally via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> The current thinking is that FNEG(X) and FSUB(-0.0, X) are not the same operation when X is a NaN or 0.
Do you mean denormals (when flushed) rather than 0 there? AFAIK it's
OK for 0 itself.
> So, the xforms in question should only be valid under Fast-Math conditions.
We could
2018 Sep 11
2
[FPEnv] FNEG instruction
Which exactly was the plan?
Add a new, regular instruction?
Add a new constrained math intrinsic?
Both?
Andrew Kaylor made a good point here:
* As I said, all LLVM IR FP instructions are //assumed// to have no side effects. I'm not sure we want an instruction that goes beyond this to be //defined// as having no side effects. It adds a complication to the language and introduces
2018 Sep 11
2
[FPEnv] FNEG instruction
+1 for an explicit FNEG instruction, since as previously discussed, it has
stricter requirements for what value may be returned by the operation. And
strengthening the requirement on FSUB is not feasible when the values are
variables rather than literals.
That is:
FSUB(-0.0, NaN) = either NaN *or* -NaN
FSUB(-0.0, -NaN) = either NaN *or* -NaN
FNEG(NaN) = -NaN
FNEG(-NaN) = NaN
On Tue, Sep 11,
2018 Sep 26
2
[FPEnv] FNEG instruction
Do we really want to have fneg be the only instruction with guaranteed no side effects? That just sounds like a gotcha waiting to happen. Or it could result in horrible code depending on the architecture.
I’m still leaning towards having both an intrinsic and an instruction, and if they happen to have the same behavior then that’s fine. If fneg is to be a special instruction with extra promises
2018 Oct 01
6
[FPEnv] FNEG instruction
I don't see any controversy for the preliminary requirement of
removing BinaryOperator::isFNeg()
and friends, so start with that?
That work may reveal other potential regressions that we can patch in
advance too.
Other than that, I think there's really only a question of do we want 1 or
both of fneg and fneg_constrained (and if we choose both, then I assume
we'd also add
2018 Sep 25
2
[FPEnv] FNEG instruction
On Tue, Sep 25, 2018 at 1:39 PM Sanjay Patel <spatel at rotateright.com> wrote:
> I have 1 concern about adding an explicit fneg op to IR:
>
> Currently, fneg qualifies as a binop in IR (since there's no other way to
> represent it), and we have IR transforms that are based on matching that
> pattern (m_BinOp). With a proper unary fneg instruction, those transforms
>
2018 Sep 27
2
[FPEnv] FNEG instruction
Regarding non-IEEE targets: yes, we definitely support those, so we do have
to be careful about not breaking them. I know because I have broken them. :)
See the discussion and related links here: https://reviews.llvm.org/D19391
But having an exactly specified fneg op makes that easier, not harder, as I
see it. Unfortunately, if a target doesn't support this op (always toggle
the sign bit and
2018 Sep 26
2
[FPEnv] FNEG instruction
I have no example side effects in hand. But LLVM targets a bunch of architectures, and who knows what the future holds. So it may be prudent to not promise too much so as to leave ourselves an escape hatch.
Doesn’t LLVM target some chips that have floating point instruction sets that are not IEEE compliant? Can we be certain that no new LLVM target will ever have to jump through hoops to avoid
2018 Sep 26
2
[FPEnv] FNEG instruction
Well, yes, they are different operations. And, yes, this needs to be corrected. This wasn’t my point. It’s a given.
I was getting at the _declared_ absence of side effects and what promises we make to anyone using the new fneg instruction. Is this a promise we want to make?
From: Cameron McInally <cameron.mcinally at nyu.edu>
Sent: Wednesday, September 26, 2018 2:30 PM
To: Kevin Neal
2018 Aug 30
2
[FPEnv] FNEG instruction
On Thu, Aug 30, 2018 at 11:14 AM, Tim Northover <t.p.northover at gmail.com>
wrote:
> ...
> I don't think it matters for the question at hand, but I tested
> AArch64 too and it exhibits the behaviour you were describing. That
> is, we'd have problems if an fsub -0.0 was actually CodeGened like
> that (it's not, of course).
Great data point. So it's not just
2018 Oct 02
3
[FPEnv] FNEG instruction
On Tue, Oct 2, 2018 at 12:09 PM Kevin Neal <Kevin.Neal at sas.com> wrote:
> If we don’t have constrained intrinsics for some of the fp math
> instructions then aren’t we risking non-strict optimizations?
>
So far we've only added constrained FP intrinsics for operations that have
side effects (i.e. can trap).
The quiet-computational sign-bit operations are special. They never
2018 Aug 30
4
[FPEnv] FNEG instruction
On Wed, Aug 29, 2018 at 3:13 PM, Cameron McInally <cameron.mcinally at nyu.edu>
wrote:
> On Wed, Aug 29, 2018 at 1:51 PM, Stephen Canon <scanon at apple.com> wrote:
>
>> On Aug 29, 2018, at 1:22 PM, Cameron McInally via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>
>> FSUB(-0.0, NaN) = NaN
>> FSUB(-0.0, -NaN) = NaN
>>
2018 Sep 26
2
[FPEnv] FNEG instruction
On Tue, Sep 25, 2018 at 7:37 PM Sanjay Patel <spatel at rotateright.com> wrote:
>
>
> On Tue, Sep 25, 2018 at 2:28 PM Cameron McInally <cameron.mcinally at nyu.edu>
> wrote:
>
>> On Tue, Sep 25, 2018 at 1:39 PM Sanjay Patel <spatel at rotateright.com>
>> wrote:
>>
>>> I have 1 concern about adding an explicit fneg op to IR:
>>>
2018 Sep 26
3
[FPEnv] FNEG instruction
On Wed, Sep 26, 2018 at 9:32 AM Sanjay Patel <spatel at rotateright.com> wrote:
>
>
> On Tue, Sep 25, 2018 at 7:47 PM Cameron McInally <cameron.mcinally at nyu.edu>
> wrote:
>
>>
>> This is the first time I'm looking at foldShuffledBinop(...), so maybe a
>> naive question, but why not do similar shuffle canonicalizations on unary
>> (or
2018 Aug 29
2
[FPEnv] FNEG instruction
> On Aug 29, 2018, at 1:22 PM, Cameron McInally via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> FSUB(-0.0, NaN) = NaN
> FSUB(-0.0, -NaN) = NaN
Some specific architecture may define this, or APFloat might, but IEEE 754 does not interpret the sign of NaN except in four operations (copy, abs, negate, copysign), so it doesn’t say anything about these.
– Steve
--------------
2019 Apr 01
2
EuroLLVM Numerics issues
On Fri, Mar 29, 2019 at 5:51 PM Arsenault, Matthew via llvm-dev <
llvm-dev at lists.llvm.org> wrote:
> A few things I’ve been thinking about:
>
> - Is anyone working on finishing the migration to using the new fneg
> instruction?
>
> What did you have in mind? I was not aware that there is work pending.
> - Controls for allowing and/or mandating denormal
2014 Aug 08
2
[LLVMdev] Signed NaNs in APFloat arithmetic
FYI, I was looking at the SSE/AVX codegen here:
http://llvm.org/bugs/show_bug.cgi?id=20578
If LLVM starts caring about FP exceptions, even this won't be possible. Is
there a way of doing an IEEE-754 fneg in C/C++? Ie, there's no fneg() in
libm, so any C method we choose could cause an exception, and that's not
allowed by the IEEE definition of fneg.
On Fri, Aug 8, 2014 at 12:29 PM,
2016 Apr 12
2
Implementing a proposed InstCombine optimization
Good point. The same argument seems to apply to copy() too so I suppose it depends how strict we want to be about it.
From: fglaser at apple.com [mailto:fglaser at apple.com] On Behalf Of escha at apple.com
Sent: 11 April 2016 20:55
To: Daniel Sanders
Cc: Alex Rosenberg; llvm-dev at lists.llvm.org; Carlos Liam
Subject: Re: [llvm-dev] Implementing a proposed InstCombine optimization
On Apr 11,
2011 Oct 18
0
[LLVMdev] Matching addsub
On Oct 17, 2011, at 6:40 PM, Hal Finkel wrote:
> On Mon, 2011-10-17 at 17:33 -0700, Dan Gohman wrote:
>> On Oct 17, 2011, at 3:40 PM, Hal Finkel wrote:
>>
>>> How should I go about matching floating-point addsub-like vector
>>> instructions? My first inclination is to write something which matches
>>> build_vector 1.0, -1.0, and then use that in
2011 Oct 18
1
[LLVMdev] Matching addsub
On Tue, 2011-10-18 at 10:51 -0700, Dan Gohman wrote:
> On Oct 17, 2011, at 6:40 PM, Hal Finkel wrote:
>
> > On Mon, 2011-10-17 at 17:33 -0700, Dan Gohman wrote:
> >> On Oct 17, 2011, at 3:40 PM, Hal Finkel wrote:
> >>
> >>> How should I go about matching floating-point addsub-like vector
> >>> instructions? My first inclination is to write