1/* Test generation of DFP instructions for POWER6.  */
2/* Origin: Janis Johnson <janis187@us.ibm.com> */
3/* { dg-do compile { target { powerpc*-*-linux* && powerpc_fprs } } } */
4/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power6" } } */
5/* { dg-options "-std=gnu99 -mcpu=power6" } */
6
7/* { dg-final { scan-assembler "daddq" } } */
8/* { dg-final { scan-assembler "ddivq" } } */
9/* { dg-final { scan-assembler "dmulq" } } */
10/* { dg-final { scan-assembler "dsubq" } } */
11/* { dg-final { scan-assembler-times "dcmpuq" 6 } } */
12/* { dg-final { scan-assembler-times "dctfixq" 2 } } */
13/* { dg-final { scan-assembler-times "drintnq" 2 } } */
14/* { dg-final { scan-assembler-times "dcffixq" 2 } } */
15
16extern _Decimal128 a, b, c;
17extern int result;
18extern int si;
19extern long long di;
20
21void add (void) { a = b + c; }
22void div (void) { a = b / c; }
23void mul (void) { a = b * c; }
24void sub (void) { a = b - c; }
25void eq (void) { result = a == b; }
26void ne (void) { result = a != b; }
27void lt (void) { result = a < b; }
28void le (void) { result = a <= b; }
29void gt (void) { result = a > b; }
30void ge (void) { result = a >= b; }
31void tdsi (void) { si = a; }
32void tddi (void) { di = a; }
33void sitd (void) { a = si; }
34void ditd (void) { a = di; }
35