1 /* { dg-require-effective-target lp64 } */
2 /* { dg-options "-mdejagnu-cpu=power10" } */
4 extern void abort (void);
7 do_cfuged (unsigned long long int source
, unsigned long long int mask
)
9 return __builtin_cfuged (source
, mask
);
12 int main (int argc
, char *argv
[])
14 unsigned long long int sources
[4], masks
[4];
15 unsigned long long int results
[4][4] = {
16 /* sources[0] with each of masks [0 .. 3] */
17 {0x7e3ca5f0ll
, 0xa5f07e3cll
, 0xaf7350ecll
, 0x50ecaf73ll
},
18 /* sources[1] with each of masks [0 .. 3] */
19 { 0xa5f07e3cll
, 0x7e3ca5f0ll
, 0x73afec50ll
, 0xec5073afll
},
20 /* sources[2] with each of masks [0 .. 3] */
21 { 0xf07e3ca5ll
, 0x3ca5f07ell
, 0x3af7c50ell
, 0xc50e3af7ll
},
22 /* sources[3] with each of masks [0 .. 3] */
23 { 0xe7c35a0fll
, 0x5a0fe7c3ll
, 0x50ecaf73ll
, 0xaf7350ecll
},
26 sources
[0] = 0xa5f07e3cll
;
27 sources
[1] = 0x7e3ca5f0ll
;
28 sources
[2] = 0x3ca5f07ell
;
29 sources
[3] = 0x5a0fe7c3ll
;
31 masks
[0] = 0xffff0000ll
;
32 masks
[1] = 0x0000ffffll
;
33 masks
[2] = 0x0f0f0f0fll
;
34 masks
[3] = 0xf0f0f0f0ll
;
36 unsigned long long int result
;
38 for (int i
= 0; i
< 4; i
++)
40 for (int j
= 0; j
< 4; j
++)
42 if (do_cfuged (sources
[i
], masks
[j
]) != results
[i
][j
])
50 /* { dg-final { scan-assembler {\mcfuged\M} } } */