Displaying 20 results from an estimated 4000 matches similar to: "The semantics of the fptrunc instruction with an example of incorrect optimisation"
2016 Aug 18
5
fenv.h vs the optimizer
Howdy all,
I've been playing around with programs that use the C11 fenv.h.
It seems that, currently, the LLVM compiler does not regard to the
exception-flag side-effects of floating point operations?
When run on my macbook, the example code on
http://en.cppreference.com/w/c/numeric/fenv/FE_exceptions does not print
all the expected exceptions.
Other examples:
void foo() {
2017 Nov 03
2
FW: clarification needed for the constrained fp implementation.
Copying the list on a discussion of potentially general interest....
From: Kaylor, Andrew
Sent: Friday, November 03, 2017 1:11 PM
To: 'Ding, Wei' <Wei.Ding2 at amd.com>; Sumner, Brian <Brian.Sumner at amd.com>; Arsenault, Matthew <Matthew.Arsenault at amd.com>
Subject: RE: clarification needed for the constrained fp implementation.
Hi Wei,
I've been meaning to
2017 Nov 04
2
FW: clarification needed for the constrained fp implementation.
On 11/03/2017 05:26 PM, 陳韋任 via llvm-dev wrote:
>
>
> 2017-11-04 4:29 GMT+08:00 Kaylor, Andrew via llvm-dev
> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>>:
>
> Copying the list on a discussion of potentially general interest….
>
> *From:* Kaylor, Andrew
> *Sent:* Friday, November 03, 2017 1:11 PM
> *To:* 'Ding,
2008 Mar 11
1
[LLVMdev] Rounding Mode for fptrunc Instruction
Hi,
What is the rounding mode for the fptrunc instruction? Round to zero?
Round to nearest? Or undefined?
Regards,
Jon
2020 Sep 09
3
constrained cosine rounding mode behavior
Hi:
I am trying to implement interval arithmetic through llvm. I have a problem with the rounding mode with llvm.experimental.constrained.cos
I have two pieces of codes:
; Function Attrs: norecurse nounwind readnone ssp uwtable
define double @cosine_down(double returned) local_unnamed_addr #0 {
; call the llvm intrinsic to perform downward cosine
2020 Jan 18
2
Combining fast math flags with constrained intrinsics
Hi all,
A question came up in a code review (https://reviews.llvm.org/D72820) about whether or not to allow fast-math flags to be applied to constrained floating point intrinsics (http://llvm.org/docs/LangRef.html#constrained-floating-point-intrinsics). This has come up several times before, but I don't think we've ever made a decision about it.
By default, the optimizer assumes that
2019 Nov 15
3
RFC: token arguments and operand bundles
We really have been trying to keep in mind that LLVM needs to support multiple front ends, which may be implementing different language standards. As much as possible, I’ve been trying to let the IEEE 754 spec drive my thinking about this, though I’ll admit that on a few points I’ve use the C99 spec as a sort of reference interpretation of IEEE 754.
LLVM’s IRBuilder has been recently updated to
2008 Apr 01
0
[LLVMdev] Reference Manual Clarifications 2
On Mon, 31 Mar 2008, Jon Sargeant wrote:
> The fptrunc instruction states "If the value cannot fit within the
> destination type, ty2, then the results are undefined." This is fine, but
> what about other floating-point operations that can overflow? For example,
> does 'mul double 1.0e300, 1.0e300' produce +infinity or is it undefined?
It is defined by IEEE to
2008 Apr 01
3
[LLVMdev] Reference Manual Clarifications 2
The fptrunc instruction states "If the value cannot fit within the
destination type, ty2, then the results are undefined." This is fine,
but what about other floating-point operations that can overflow? For
example, does 'mul double 1.0e300, 1.0e300' produce +infinity or is it
undefined? I think LLVM should treat floating-point overflows
consistently. On a similar note,
2019 Dec 10
2
TypePromoteFloat loses intermediate rounding operations
For the following C code
__fp16 x, y, z, w;
void foo() {
x = y + z;
x = x + w;
}
clang produces IR that extends each operand to float and then truncates to
half before assigning to x. Like this
define dso_local void @foo() #0 !dbg !18 {
%1 = load half, half* @y, align 2, !dbg !21
%2 = fpext half %1 to float, !dbg !21
%3 = load half, half* @z, align 2, !dbg !22
%4 = fpext half %3 to float, !dbg
2019 Dec 10
2
TypePromoteFloat loses intermediate rounding operations
Thanks Eli.
I forgot to bring up the strict FP questions which I was working on when I
found this. If we're in a strict FP function, do the fp_to_f16/f16_to_fp
emitted by promoting load/store/bitcast need to be strict versions of
fp_to_f16/f16_to_fp. And if so where do we get the chain, especially for
the bitcast case which isn't a chained node.
~Craig
On Tue, Dec 10, 2019 at 3:18 PM
2013 Mar 21
0
[LLVMdev] fptrunc and undefined results
Hi,
The LangRef says this about fptrunc:
"The ‘fptrunc‘ instruction truncates a value from a larger floating point
type to a smaller floating point type. If the value cannot fit within the
destination type, ty2, then the results are undefined."
What does it mean for the value to "fit within the destination type"? For
instance, is the value of
%Inf = fptrunc double
2014 Jul 09
6
[LLVMdev] Help!!!!Help!!!! " LLVM ERROR: Cannot select: 0x9fc9680: i32 = fp32_to_fp16 0x9fc0750 [ID=16] " problem!!!!!!!!!!!!!!!!!!
Thank you Kevin!!! If I use fptrunc and bitcast realise NEON vcvtt ( I can sure, "fptrunc double %tmp to float" is right, but "fptrunc float %tmp to half" is wrong). My target platform is MIPS. The command as following:
NEON: vcvtt.f16.f32 s2, s0
llvm Code:
%Vt_2 = load float* %VFP_s0, align 4
%Vt3_1 = fptrunc float %Vt_2 to half
%Vt4_1 = bitcast half
2014 Jul 09
4
[LLVMdev] Help!!!!Help!!!! " LLVM ERROR: Cannot select: 0x9fc9680: i32 = fp32_to_fp16 0x9fc0750 [ID=16] " problem!!!!!!!!!!!!!!!!!!
On 07/09/2014 12:41 PM, Matt Arsenault wrote:
> On 07/09/2014 03:30 PM, yalong at multicorewareinc.com wrote:
>> Thank you Kevin!!!
>> If I use fptrunc and bitcast realise NEON vcvtt ( I can sure,
>> "fptrunc double %tmp to float" is right, but "fptrunc float %tmp to
>> half" is wrong). My target platform is MIPS. The command as following:
2008 Jun 03
2
[LLVMdev] Truncate float to int?
Newbie question here: what's the best way to truncate a float to a
signed int? The fptosi instruction rounds, and the fptrunc
instruction simply truncates from a large float type to a smaller
float type.
Mark
2014 Jul 10
2
[LLVMdev] Help!!!!Help!!!! " LLVM ERROR: Cannot select: 0x9fc9680: i32 = fp32_to_fp16 0x9fc0750 [ID=16] " problem!!!!!!!!!!!!!!!!!!
Hi Daniel, Thank you your replying. Yes, the problem is about MIPS backend. You give me this message "There is limited support for the <8 x f16> type when MSA (MIPS SIMD Architecture) is enabled but even then scalar half-precision is not currently supported." Could you give me some official link or some evidence? Thank you very much.
Robin
yalong at multicorewareinc.com
2014 Jul 14
2
[LLVMdev] RFC: Do we still need @llvm.convert.to.fp16 and the reverse?
On Jul 14, 2014, at 7:23 AM, Tom Stellard <tom at stellard.net> wrote:
> On Mon, Jul 14, 2014 at 01:08:54PM +0100, Tim Northover wrote:
>> Hi all,
>>
>> What do people think of doing away with the @llvm.convert.to.fp16 and
>> @llvm.convert.from.fp16 intrinsics, in favour of using "half" and
>> fpext/fptrunc? [1]
>>
>
> I am in favor
2019 Nov 14
3
RFC: token arguments and operand bundles
Let me clarify. These aren’t intended to be exposed to the user. The user code that leads to the generation of these intrinsics will be normal floating point operations combined with either pragmas (such as “STDC FENV_ACCESS ON”) or command line options (such as the recently introduced “-fp-model=strict”).
The reason I’ve been avoiding normal constant values is that it provides no information when
2008 Jun 03
0
[LLVMdev] Truncate float to int?
On Tue, Jun 3, 2008 at 11:32 AM, Mark Leone <markleone at gmail.com> wrote:
> Newbie question here: what's the best way to truncate a float to a
> signed int? The fptosi instruction rounds, and the fptrunc
> instruction simply truncates from a large float type to a smaller
> float type.
fptosi is equivalent to a C cast from float to int.
-Eli
2019 Feb 25
3
Why is there still ineffective code after -o3 optimization?
Hi,
I have some IR module from random generation (mostly ineffective
instructions).
It has a function with void return, and two function arguments where one
is a reference.
Therefore, I expect every instruction not altering the value at the 2nd
arguments address should be ineffective.
Here is the function definition (see below for full ll):
define void @_Z27entityMainDataInputCallbackdRd(double