Home | History | Annotate | Download | only in fpu
      1 // SPDX-License-Identifier: GPL-2.0+
      2 /*
      3  * Copyright (C) 2007
      4  * Wolfgang Denk, DENX Software Engineering, wd (at) denx.de.
      5  */
      6 /*
      7  * This file is originally a part of the GCC testsuite.
      8  */
      9 
     10 #include <common.h>
     11 
     12 #include <post.h>
     13 
     14 GNU_FPOST_ATTR
     15 
     16 #if CONFIG_POST & CONFIG_SYS_POST_FPU
     17 
     18 static float rintf (float x)
     19 {
     20 	volatile float TWO23 = 8388608.0;
     21 
     22 	if (__builtin_fabs (x) < TWO23)
     23 	{
     24 		if (x > 0.0)
     25 		{
     26 			x += TWO23;
     27 			x -= TWO23;
     28 		}
     29 		else if (x < 0.0)
     30 		{
     31 			x = TWO23 - x;
     32 			x = -(x - TWO23);
     33 		}
     34 	}
     35 
     36 	return x;
     37 }
     38 
     39 int fpu_post_test_math2 (void)
     40 {
     41 	if (rintf (-1.5) != -2.0) {
     42 		post_log ("Error in FPU math2 test\n");
     43 		return -1;
     44 	}
     45 	return 0;
     46 }
     47 
     48 #endif /* CONFIG_POST & CONFIG_SYS_POST_FPU */
     49