aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/s390/signbit-1.c
blob: 45f608a3f289fc1f2efbfa4ab9ea91a7a57ebe39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/* { dg-do run } */
/* { dg-options "-O2 -march=z900 -save-temps" } */
/* { dg-final { scan-assembler-times {\ttceb\t} 2 } } */
/* { dg-final { scan-assembler-times {\ttcdb\t} 2 } } */
/* { dg-final { scan-assembler-times {\ttcxb\t} 2 } } */

/* Binary Floating-Point */

__attribute__ ((noipa))
int signbit_float_reg (float x) { return __builtin_signbit (x); }
__attribute__ ((noipa))
int signbit_float_mem (float *x) { return __builtin_signbit (*x); }
__attribute__ ((noipa))
int signbit_double_reg (double x) { return __builtin_signbit (x); }
__attribute__ ((noipa))
int signbit_double_mem (double *x) { return __builtin_signbit (*x); }

__attribute__ ((noipa))
int
signbit_longdouble_reg (long double x)
{
  __asm__ ("" : "+f" (x));
  return __builtin_signbit (x);
}

__attribute__ ((noipa))
int signbit_longdouble_mem (long double *x) { return __builtin_signbit (*x); }

#include "signbit.h"
TEST (float, float, __builtin_inff(), __builtin_nanf("42"), 0.f, 42.f)
TEST (double, double, __builtin_inf(), __builtin_nan("42"), 0., 42.)
TEST (longdouble, long double, __builtin_infl(), __builtin_nanl("42"), 0.L, 42.L)

int
main (void)
{
  test_float ();
  test_double ();
  test_longdouble ();
}