1/* { dg-do compile { target { powerpc*-*-darwin* powerpc*-*-aix* rs6000-*-* powerpc*-*-linux* } } } */
2/* { dg-options "-O2 -mlong-double-128 -fpic" } */
3
4typedef int int32_t __attribute__ ((__mode__ (__SI__)));
5typedef unsigned char uint8_t;
6typedef unsigned int uint32_t;
7typedef struct REGS REGS;
8typedef union { uint32_t F; } FW;
9typedef union { struct { FW L; } F; } DW;
10typedef struct _PSW {
11  DW ia;
12} PSW;
13struct REGS {
14  PSW psw;
15  DW cr[16];
16};
17struct ebfp {
18  long double v;
19};
20
21void s390_convert_fix32_to_bfp_ext_reg (REGS *regs)
22{
23  struct ebfp op1;
24  int32_t op2;
25  ((regs))->psw.ia.F.L.F += (4);
26  if(!((regs)->cr[(0)].F.L.F & 0x00040000))
27    op1.v = (long double)op2;
28  put_ebfp(&op1);
29}
30