aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/s390/signbit-4.c
blob: 2cb743edc3ac811f4e80a62155788eade8799ac0 (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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/* { dg-do run { target lp64 } } */
/* { dg-require-effective-target s390_vx } */
/* { dg-options "-O2 -march=z13 -save-temps" } */
/* { dg-final { check-function-bodies "**" "" "" } } */

/* Binary Floating-Point */

/*
** signbit_float_reg:
**    vlgvf	(%r[0-9]+),%v0,0
**    risbgn	%r2,\1,64-1,128\+63,32\+1
**    br	%r14
*/
__attribute__ ((noipa))
int signbit_float_reg (float x) { return __builtin_signbit (x); }

/*
** signbit_float_mem:
**    l	(%r[0-9]+),0\(%r2\)
**    risbgn	%r2,\1,64-1,128\+63,32\+1
**    br	%r14
*/
__attribute__ ((noipa))
int signbit_float_mem (float *x) { return __builtin_signbit (*x); }

/* Decimal Floating-Point */

/*
** signbit_dec32_reg:
**    vlgvf	(%r[0-9]+),%v0,0
**    risbgn	%r2,\1,64-1,128\+63,32\+1
**    br	%r14
*/
__attribute__ ((noipa))
int signbit_dec32_reg (_Decimal32 x) { return __builtin_signbit (x); }

/*
** signbit_dec32_mem:
**    l	(%r[0-9]+),0\(%r2\)
**    risbgn	%r2,\1,64-1,128\+63,32\+1
**    br	%r14
*/
__attribute__ ((noipa))
int signbit_dec32_mem (_Decimal32 *x) { return __builtin_signbit (*x); }

#include "signbit.h"
TEST (float, float, __builtin_inff(), __builtin_nanf("42"), 0.f, 42.f)
TEST (dec32, _Decimal32, __builtin_infd32(), __builtin_nand32("42"), 0.df, 42.df)

int
main (void)
{
  test_float ();
  test_dec32 ();
}