• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * This file has no copyright assigned and is placed in the Public Domain.
3  * This file is part of the mingw-w64 runtime package.
4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5  */
6 #include <math.h>
7 
rintf(float x)8 float rintf (float x) {
9   float retval = 0.0F;
10 #if defined(_AMD64_) || defined(__x86_64__) || defined(_X86_) || defined(__i386__)
11   __asm__ __volatile__ ("frndint;": "=t" (retval) : "0" (x));
12 #elif defined(__arm__) || defined(_ARM_)
13   if (isnan(x) || isinf(x))
14     return x;
15   __asm__ __volatile__ (
16     "vcvtr.s32.f32    %[dst], %[src]\n\t"
17     "vcvt.f32.s32     %[dst], %[dst]\n\t"
18     : [dst] "=t" (retval) : [src] "w" (x));
19 #elif defined(__aarch64__) || defined(_ARM64_)
20   __asm__ __volatile__ ("frintx %s0, %s1\n\t" : "=w" (retval) : "w" (x));
21 #endif
22   return retval;
23 }
24