Displaying 20 results from an estimated 8000 matches similar to: "[LLVMdev] Upcoming API change: FAdd, FSub, FMul"
2009 Jun 16
0
[LLVMdev] Upcoming API change: FAdd, FSub, FMul
> The LLVM IR opcodes Add, Sub, and Mul have been each split into
> two. Add, Sub, and Mul now only handle integer types, and three
> new opcodes, FAdd, FSub, and FMul now handle floating-point types.
Dan,
Wondering the reason why there is no FDiv ?
Thanks,
Aaron
2009 Jun 16
3
[LLVMdev] Upcoming API change: FAdd, FSub, FMul
On Jun 16, 2009, at 7:34 AM, Aaron Gray wrote:
>> The LLVM IR opcodes Add, Sub, and Mul have been each split into
>> two. Add, Sub, and Mul now only handle integer types, and three
>> new opcodes, FAdd, FSub, and FMul now handle floating-point types.
>
> Dan,
>
> Wondering the reason why there is no FDiv ?
FDiv already exists; div was split quite a while ago.
Dan
2017 Jun 10
3
Fusing contract fadd/fsub with normal fmul
Hi,
On LLVM 5.0 (current trunk), fadd/fsub and fmul that are both marked
with `contract` or `fast` can be merged to a fma instruction by the
backend.
I'm wondering about the exact semantic of this new flag as well as
`fast` and in particular, would it be valid to do this when only the
`fadd`/`fsub` (and not the `fmul`) is marked with `contract` or at
least `fast`. The reasoning is that doing
2009 Jun 16
0
[LLVMdev] Upcoming API change: FAdd, FSub, FMul
----- Original Message -----
From: "Dan Gohman" <gohman at apple.com>
To: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
Sent: Tuesday, June 16, 2009 7:49 AM
Subject: Re: [LLVMdev] Upcoming API change: FAdd, FSub, FMul
>
> On Jun 16, 2009, at 7:34 AM, Aaron Gray wrote:
>
>>> The LLVM IR opcodes Add, Sub, and Mul have been each split
2014 Sep 22
2
[LLVMdev] Bug 16257 - fmul of undef ConstantExpr not folded to undef
Hi Duncan,
On 17.09.2014 21:10, Duncan Sands wrote:
> Hi Oleg,
>
> On 17/09/14 18:45, Oleg Ranevskyy wrote:
>> Hi,
>>
>> Thank you for all your helpful comments.
>>
>> To sum up, below is the list of correct folding examples for fadd:
>> (1) fadd %x, -0.0 -> %x
>> (2) fadd undef, undef -> undef
2014 Sep 17
3
[LLVMdev] Bug 16257 - fmul of undef ConstantExpr not folded to undef
Hi,
Thank you for all your helpful comments.
To sum up, below is the list of correct folding examples for fadd:
(1) fadd %x, -0.0 -> %x
(2) fadd undef, undef -> undef
(3) fadd %x, undef -> NaN (undef is a NaN which is
propagated)
Looking through the code I found the "NoNaNs" flag accessed through an
instance of
2010 Sep 29
3
[LLVMdev] spilling & xmm register usage
Hello everybody,
I have stumbled upon a test case (the attached module is a slightly
reduced version) that shows extremely reduced performance on linux
compared to windows when executed using LLVM's JIT.
We narrowed the problem down to the actual code being generated, the
source IR on both systems is the same.
Try compiling the attached module:
llc -O3 -filetype=asm -o BAD.s BAD.ll
Under
2018 Feb 28
3
how to simplify FP ops with an undef operand?
%y = fadd float %x, undef
Can we simplify this?
Currently in IR, we do nothing for fadd/fsub/fmul. For fdiv/frem, we
propagate undef. The code comment for fdiv/frem says:
"the undef could be a snan"
If that's correct, then shouldn't it be the same for fadd/fsub/fmul? But
this can't be correct because we support targets that don't raise
exceptions...and even targets
2014 Sep 16
2
[LLVMdev] Bug 16257 - fmul of undef ConstantExpr not folded to undef
As far as I know, LLVM does not try very hard to guarantee constant folded NaN payloads that match exactly what the target would generate.
—Owen
> On Sep 16, 2014, at 10:30 AM, Oleg Ranevskyy <llvm.mail.list at gmail.com> wrote:
>
> Hi Duncan,
>
> I reread everything we've discussed so far and would like to pay closer attention to the the ARM's FPSCR register
2018 Feb 28
2
how to simplify FP ops with an undef operand?
Yes, if %x is a NaN, we should expect that NaN is propagated.
I'm still not sure what to do here. We can take comfort in knowing that
whatever we do is likely an improvement over the current situation though.
:)
That's because the code in InstSimplify is inconsistent with the LangRef:
http://llvm.org/docs/LangRef.html#undefined-values (UB for fdiv by 0?)
...and both of those are
2018 Feb 28
0
how to simplify FP ops with an undef operand?
I’m not sure the transformation happening with fdiv is correct. If we have “%y = fdiv float %x, undef” and %x is a NaN then the result will be NaN for any value of the undef, right? So if I understand the undef rules correctly (never a certainty) then we can’t safely replace the expression with undef. We could, I think, replace it with “%y = %x” though. I think the same is true for fadd, fsub,
2014 Aug 26
2
[LLVMdev] Bug 16257 - fmul of undef ConstantExpr not folded to undef
Hi Duncan,
Thank you for your comment to the bug 16257.
I am new to LLVM, so not all the aspects of LLVM's /"undef"/ seem clear
to me yet.
I read and understood the examples from the LLVM documentation:
http://llvm.org/docs/LangRef.html#undefined-values
However, those examples do not cover all of the possible contexts where
/"undef"/ can appear.
E.g., I can't
2013 Jul 18
0
[LLVMdev] SIMD instructions and memory alignment on X86
Are you able to send any IR for others to reproduce this issue?
On Wed, Jul 17, 2013 at 11:23 PM, Peter Newman <peter at uformia.com> wrote:
> Unfortunately, this doesn't appear to be the bug I'm hitting. I applied
> the fix to my source and it didn't make a difference.
>
> Also further testing found me getting the same behavior with other SIMD
> instructions.
2014 Aug 27
2
[LLVMdev] Bug 16257 - fmul of undef ConstantExpr not folded to undef
Hi Duncan,
Thank you a lot for your time to provide that great and informative
explanation.
Now the "undef" logic makes much more sense for me.
>> /You are wrong to say that "div undef, %X" is folded to "undef" by
InstructionSimplify, it is folded to zero./
My mistake. I meant to say "*f****div* undef, %X" is folded to "undef"
(not
2013 Jul 18
2
[LLVMdev] SIMD instructions and memory alignment on X86
Unfortunately, this doesn't appear to be the bug I'm hitting. I applied
the fix to my source and it didn't make a difference.
Also further testing found me getting the same behavior with other SIMD
instructions. The common factor is in each case, ECX is set to
0x7fffffff, and it's an operation using xmm ptr ecx+offset .
Additionally, turning the optimization level passed to
2018 Feb 28
2
how to simplify FP ops with an undef operand?
Correct - NaN is not undef in IR. But we don't have a NaN in this example.
We have its moral equivalent in LLVM - an uninitialized value, undef.
So we're not introducing any extra uncertainty by propagating the undef.
The backend can choose whatever encoding of undef makes sense when lowering?
And yes, I don't know why FP-div-by-zero would ever be UB. I think that
text in the LangRef
2014 Aug 27
3
[LLVMdev] Bug 16257 - fmul of undef ConstantExpr not folded to undef
Duncan,
> Hi Oleg,
>
>> >> /This is either a mistake, or a decision that in LLVM IR snans
>> are always
>> considered to be signalling. /
>> Yes, this seems to be an agreement to treat "undef" as a SNaN for
>> "fdiv".
>
> "undef" is whatever bit pattern you want it to be, i.e. the compiler
> can assume it is any
2018 Feb 28
0
how to simplify FP ops with an undef operand?
Why is NaN “just ‘undef’ in IR”? NaN is a specific value with well-defined behavior. I would think that unless the no-NaNs flag is used we need to preserve the behavior of NaNs.
From: Sanjay Patel [mailto:spatel at rotateright.com]
Sent: Wednesday, February 28, 2018 12:08 PM
To: Kaylor, Andrew <andrew.kaylor at intel.com>
Cc: llvm-dev <llvm-dev at lists.llvm.org>; Nuno Lopes
2018 Feb 28
3
how to simplify FP ops with an undef operand?
Ah, thanks for explaining. So given that any of these ops will return NaN
with a NaN operand, let's choose the undef operand value to be NaN. That
means we can fold all of these to a NaN constant in the general case.
But if we have 'nnan' FMF, then we can fold harder to undef?
nnan - Allow optimizations to assume the arguments and result are not NaN.
Such optimizations are required to
2018 Feb 28
5
how to simplify FP ops with an undef operand?
For the first part of Sanjay’s question, I think the answer is, “Yes, we can fold all of these to NaN in the general case.” For the second part, which the nnan FMF is present, I’m not sure. The particulars of the semantics of nnan are unclear to me.
But let me explore what Eli is saying. It sounds reasonable, but I have a question about it.
Suppose we have the nnan FMF set, and we encounter