1 /* { dg-do compile { target { powerpc*-*-linux* } } } */
2 /* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
3 /* { dg-skip-if "" { powerpc*-*-*spe* } { "*" } { "" } } */
4 /* { dg-require-effective-target powerpc_vsx_ok } */
5 /* { dg-options "-mcpu=power7 -O2" } */
6 /* { dg-final { scan-assembler-times "ddedpdq " 4    } } */
7 /* { dg-final { scan-assembler-times "denbcdq " 2    } } */
8 /* { dg-final { scan-assembler-times "dxexq "   1    } } */
9 /* { dg-final { scan-assembler-times "diexq "   1    } } */
10 /* { dg-final { scan-assembler-times "dscliq "  2    } } */
11 /* { dg-final { scan-assembler-times "dscriq "  2    } } */
12 /* { dg-final { scan-assembler-not    "bl __builtin" } } */
13 /* { dg-final { scan-assembler-not   "dctqpq"        } } */
14 /* { dg-final { scan-assembler-not   "drdpq"         } } */
15 /* { dg-final { scan-assembler-not   "stfd"          } } */
16 /* { dg-final { scan-assembler-not   "lfd"           } } */
17 
18 _Decimal128
do_dedpdq_0(_Decimal128 a)19 do_dedpdq_0 (_Decimal128 a)
20 {
21   return __builtin_ddedpdq (0, a);
22 }
23 
24 _Decimal128
do_dedpdq_1(_Decimal128 a)25 do_dedpdq_1 (_Decimal128 a)
26 {
27   return __builtin_ddedpdq (1, a);
28 }
29 
30 _Decimal128
do_dedpdq_2(_Decimal128 a)31 do_dedpdq_2 (_Decimal128 a)
32 {
33   return __builtin_ddedpdq (2, a);
34 }
35 
36 _Decimal128
do_dedpdq_3(_Decimal128 a)37 do_dedpdq_3 (_Decimal128 a)
38 {
39   return __builtin_ddedpdq (3, a);
40 }
41 
42 _Decimal128
do_enbcdq_0(_Decimal128 a)43 do_enbcdq_0 (_Decimal128 a)
44 {
45   return __builtin_denbcdq (0, a);
46 }
47 
48 _Decimal128
do_enbcdq_1(_Decimal128 a)49 do_enbcdq_1 (_Decimal128 a)
50 {
51   return __builtin_denbcdq (1, a);
52 }
53 
54 _Decimal128
do_xexq(_Decimal128 a)55 do_xexq (_Decimal128 a)
56 {
57   return __builtin_dxexq (a);
58 }
59 
60 _Decimal128
do_iexq(_Decimal128 a,_Decimal128 b)61 do_iexq (_Decimal128 a, _Decimal128 b)
62 {
63   return __builtin_diexq (a, b);
64 }
65 
66 _Decimal128
do_scliq_1(_Decimal128 a)67 do_scliq_1 (_Decimal128 a)
68 {
69   return __builtin_dscliq (a, 1);
70 }
71 
72 _Decimal128
do_scliq_10(_Decimal128 a)73 do_scliq_10 (_Decimal128 a)
74 {
75   return __builtin_dscliq (a, 10);
76 }
77 
78 _Decimal128
do_scriq_1(_Decimal128 a)79 do_scriq_1 (_Decimal128 a)
80 {
81   return __builtin_dscriq (a, 1);
82 }
83 
84 _Decimal128
do_scriq_10(_Decimal128 a)85 do_scriq_10 (_Decimal128 a)
86 {
87   return __builtin_dscriq (a, 10);
88 }
89