Displaying 20 results from an estimated 2000 matches similar to: "Should rint and nearbyint be always constrained?"
2020 Mar 02
2
Should rint and nearbyint be always constrained?
>
> I'm not sure why this is an issue. Yes, these two intrinsics depend
> on the current rounding mode according to the C standard, and yes,
> LLVM in default mode assumes that the current rounding mode is the
> default rounding mode. But the same holds true for many other
> intrinsics and even the arithmetic IR operations like add.
Any other intrinsic, like `floor`,
2020 Mar 02
2
Should rint and nearbyint be always constrained?
Some clarification after getting feedback from Craig Topper….
It’s probably best to say in the documentation that the llvm.nearbyint and llvm.rint functions “assume the default rounding mode, roundToNearest”. This will allow the optimizer to transform them as if they were rounding to nearest without requiring backends to use an encoding that enforces roundToNearest as the rounding mode for these
2020 Mar 03
2
Should rint and nearbyint be always constrained?
>
> The only issue I see is that since we also assume FP operations have no
> side effects by default there is no difference between llvm.rint and
> llvm.nearbyint. I wouldn’t have a problem with dropping llvm.rint
> completely.
The forthcoming C standard (
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2454.pdf, 7.12.9.8)
defines new function, `roundeven`, which implements
2020 Mar 03
5
Should rint and nearbyint be always constrained?
>
> One concern with replacing llvm.rint and llvm.nearbyint with
> llvm.roundeven makes it difficult to turn back into a libcall if the
> backend doesn't have an instruction for it. You can't just call the
> roundeven library function since that wouldn't exist in older libm
> implementations. So ideally you would know which function was originally
> used in the
2020 Mar 05
3
Should rint and nearbyint be always constrained?
+cfe-dev as the discussion is now biased toward C standard.
I'm not sure what problem you see here. In default mode, i.e.
> when there is no "#pragma STDC FENV_ACCESS on" in effect,
> then the compiler can always assume that the default rounding
> mode is in effect.
Well, if #pragma STDC FENV_ACCESS on is not in effect, that means
> that the user has promised that at
2013 Jun 19
1
[LLVMdev] round() vs. rint()/nearbyint() with fast-math
Hello,
Sometime over the last few months, I implemented in the PowerPC backend a fast-math-only optimization which lowers ISD::FRINT/FNEARBYINT in terms of the frin instruction (when supported). As one of my users has pointed out to me, frin actually implements the semantics of round() [it ties away from zero] instead of implementing nearbyint() [which ties to even]. This user has additionally
2013 Jul 05
1
[LLVMdev] round() vs. rint()/nearbyint() with fast-math
----- Original Message -----
>
> On Fri, Jun 21, 2013 at 5:11 PM, Erik Schnetter <
> schnetter at cct.lsu.edu > wrote:
>
>
>
>
>
>
> On Fri, Jun 21, 2013 at 7:54 AM, David Tweed < david.tweed at arm.com >
> wrote:
>
>
>
>
>
>
> | LLVM does not currently have special lowering handling for round(),
> | and
>
2013 Jun 21
2
[LLVMdev] round() vs. rint()/nearbyint() with fast-math
On Fri, Jun 21, 2013 at 7:54 AM, David Tweed <david.tweed at arm.com> wrote:
> | LLVM does not currently have special lowering handling for round(), and
> I'll propose a patch to add that, but the larger question is this: should
> fast-math change the tie-breaking behavior of
> | rint/nearbyint/round, etc. and, if so, should we make a specific effort
> to
> have all
2013 Jul 04
0
[LLVMdev] round() vs. rint()/nearbyint() with fast-math
On Fri, Jun 21, 2013 at 5:11 PM, Erik Schnetter <schnetter at cct.lsu.edu>wrote:
> On Fri, Jun 21, 2013 at 7:54 AM, David Tweed <david.tweed at arm.com> wrote:
>
>> | LLVM does not currently have special lowering handling for round(), and
>> I'll propose a patch to add that, but the larger question is this: should
>> fast-math change the tie-breaking
2018 Nov 14
2
llvm.rint specification
Hello,
I believe llvm.rint description in LangRef is not quite complete.
Llvm seems to map math.h:rint() call to llvm.rint intrinsic, and the LangRef says that the result of llvm.rint matches the result of libm rint() call. Next, LangRef states that llvm.rint "returns the operand rounded to the nearest integer."
Shouldn't the specification also say that "the actual rounding
2018 Nov 14
2
llvm.rint specification
Hi Cameron,
Thank you for the comments, but I am confused even more now ☺
> llvm.rint won't honor the FPEnv in all cases. It falls under the default FPEnv
The default FPEnv section specifies round-to-nearest rounding mode. In this case, how is it correct to map rint() user call to llvm.rint intrinsic call? If this is just a temporary inconsistency, and the long term solution is to map
2000 Aug 27
2
Problems supporting rint.
I am coding with vorbis using mingw32 (g++ for win32 without the cygwin.dll
dependency). mingw32's math library does not support rint and I can't find
a replacement so I have tried the following:
Use Cygwin to execute ./configure.
Then:
(1) "make" with Cygwin - ok. Cygwin supports rint. I encode my Aerosmith's
"Get A Grip" .wav from the CD to .ogg with
2020 Jan 18
5
Combining fast math flags with constrained intrinsics
On Fri, Jan 17, 2020 at 8:09 PM Finkel, Hal J. <hfinkel at anl.gov> wrote:
> Andy, thanks for writing this up. A few thoughts:
>
> 1. The mental model that I have is that there is always an FP_CONTRACT pragma: there's some default (implicit) pragma at the beginning, and what it says (off/on/fast) is controlled by the command-line flags (or the driver's default if no flags
2007 Sep 10
2
Are the error messages of ConstrOptim() consisten with each other?
Dear Friends.
I found something very puzzling with constOptim(). When I change the
parameters for ConstrOptim, the error messages do not seem to be
consistent with each other:
> constrOptim(c(0.5,0.3,0.5), f=fit.error, gr=fit.error.grr, ui=ui,ci=ci)
Error in constrOptim(c(0.5, 0.3, 0.5), f = fit.error, gr = fit.error.grr, :
initial value not feasible
> constrOptim(c(0.5,0.9,0.5),
2017 Jun 01
2
Building theora 1.1.1 with mingw-w64-gcc 7.1 and msys
Hello,
I recently attempted to build theora 1.1.1 with mingw-w64-gcc 7.1 and
msys and it fails to build the encoder_example.c example program. There
are multiple declarations of the function 'rint'. The source file
created its own version of the function that rounds AWAY from zero.
MinGW-W64 has its own version of the 'rint' function, which does not
round away from zero.
2018 Feb 06
2
libc++ cross-compile linux-armv7 and math function problems
Hello,
I am trying to cross-compile libc++ from my x86_64 linux system to armv7hf.
We have our own gcc compiler that we build with crosstools-ng (based on gcc
6.3.0) and I set my environment like this:
CC=armv7a-plex-linux-gnueabihf-gcc
CXX=armv7a-plex-linux-gnueabihf-g++
CFLAGS=-fPIC -DPIC -mfloat-abi=hard -march=armv7-a -Os -mfpu=vfpv3-d16
--sysroot=<path>
CXXFLAGS=-fPIC -DPIC
2018 Feb 06
0
libc++ cross-compile linux-armv7 and math function problems
At first glance, it looks like long double functions (such as fabsl and friends) are missing from your sysroot's <math.h>. Does your target support long double at all?
-Dimitry
> On 6 Feb 2018, at 09:51, Tobias Hieta via llvm-dev <llvm-dev at lists.llvm.org> wrote:
>
> Hello,
>
> I am trying to cross-compile libc++ from my x86_64 linux system to armv7hf. We have
2018 Feb 06
1
libc++ cross-compile linux-armv7 and math function problems
Hello Dimitry and thanks for your answer.
I am pretty sure it does indeed support long double. It's configured with
vfpv3-d16 - but I noticed that c++config.h in gcc has _GLIBCXX__HAS_FABSL
and friends are undefined. I think I need to look deeper at the
configuration of our toolchain.
long double support is required in libc++ then I gather?
-- Tobias
On Tue, Feb 6, 2018 at 11:47 AM,
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() {
1999 Nov 15
1
(no subject)
Hello Monty,
I tried to complile vorbis under win32 (using MS Visual C 5.0)
I found some things:
1.)
In bitvise.c there must be buffer cleared after malloc:
void _oggpack_writeinit(oggpack_buffer *b){
memset(b,0,sizeof(oggpack_buffer));
b->ptr=b->buffer=malloc(BUFFER_INCREMENT);
+ memset(b->ptr,0,BUFFER_INCREMENT);
b->storage=BUFFER_INCREMENT;
}
void