1 /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2 /* { dg-require-effective-target powerpc_p9vector_ok } */
3 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power9" } } */
4 /* { dg-options "-mcpu=power9 -O2 -mfloat128" } */
9 #define TYPE __float128
12 TYPE
from_double (double a
) { return (TYPE
)a
; }
13 TYPE
from_single (float a
) { return (TYPE
)a
; }
15 TYPE
from_double_load (double *a
) { return (TYPE
)*a
; }
16 TYPE
from_single_load (float *a
) { return (TYPE
)*a
; }
18 double to_double (TYPE a
) { return (double)a
; }
19 float to_single (TYPE a
) { return (float)a
; }
21 void to_double_store (TYPE a
, double *p
) { *p
= (double)a
; }
22 void to_single_store (TYPE a
, float *p
) { *p
= (float)a
; }
24 TYPE
from_sign_char (signed char a
) { return (TYPE
)a
; }
25 TYPE
from_sign_short (short a
) { return (TYPE
)a
; }
26 TYPE
from_sign_int (int a
) { return (TYPE
)a
; }
27 TYPE
from_sign_long (long a
) { return (TYPE
)a
; }
29 TYPE
from_sign_char_load (signed char *a
) { return (TYPE
)*a
; }
30 TYPE
from_sign_short_load (short *a
) { return (TYPE
)*a
; }
31 TYPE
from_sign_int_load (int *a
) { return (TYPE
)*a
; }
32 TYPE
from_sign_long_load (long *a
) { return (TYPE
)*a
; }
34 TYPE
from_sign_char_load_4 (signed char *a
) { return (TYPE
)a
[4]; }
35 TYPE
from_sign_short_load_4 (short *a
) { return (TYPE
)a
[4]; }
36 TYPE
from_sign_int_load_4 (int *a
) { return (TYPE
)a
[4]; }
37 TYPE
from_sign_long_load_4 (long *a
) { return (TYPE
)a
[4]; }
39 TYPE
from_sign_char_load_n (signed char *a
, long n
) { return (TYPE
)a
[n
]; }
40 TYPE
from_sign_short_load_n (short *a
, long n
) { return (TYPE
)a
[n
]; }
41 TYPE
from_sign_int_load_n (int *a
, long n
) { return (TYPE
)a
[n
]; }
42 TYPE
from_sign_long_load_n (long *a
, long n
) { return (TYPE
)a
[n
]; }
44 signed char to_sign_char (TYPE a
) { return (signed char)a
; }
45 short to_sign_short (TYPE a
) { return (short)a
; }
46 int to_sign_int (TYPE a
) { return (int)a
; }
47 long to_sign_long (TYPE a
) { return (long)a
; }
49 void to_sign_char_store (TYPE a
, signed char *p
) { *p
= (signed char)a
; }
50 void to_sign_short_store (TYPE a
, short *p
) { *p
= (short)a
; }
51 void to_sign_int_store (TYPE a
, int *p
) { *p
= (int)a
; }
52 void to_sign_long_store (TYPE a
, long *p
) { *p
= (long)a
; }
54 void to_sign_char_store_4 (TYPE a
, signed char *p
) { p
[4] = (signed char)a
; }
55 void to_sign_short_store_4 (TYPE a
, short *p
) { p
[4] = (short)a
; }
56 void to_sign_int_store_4 (TYPE a
, int *p
) { p
[4] = (int)a
; }
57 void to_sign_long_store_4 (TYPE a
, long *p
) { p
[4] = (long)a
; }
59 void to_sign_char_store_n (TYPE a
, signed char *p
, long n
) { p
[n
] = (signed char)a
; }
60 void to_sign_short_store_n (TYPE a
, short *p
, long n
) { p
[n
] = (short)a
; }
61 void to_sign_int_store_n (TYPE a
, int *p
, long n
) { p
[n
] = (int)a
; }
62 void to_sign_long_store_n (TYPE a
, long *p
, long n
) { p
[n
] = (long)a
; }
64 TYPE
from_uns_char (unsigned char a
) { return (TYPE
)a
; }
65 TYPE
from_uns_short (unsigned short a
) { return (TYPE
)a
; }
66 TYPE
from_uns_int (unsigned int a
) { return (TYPE
)a
; }
67 TYPE
from_uns_long (unsigned long a
) { return (TYPE
)a
; }
69 TYPE
from_uns_char_load (unsigned char *a
) { return (TYPE
)*a
; }
70 TYPE
from_uns_short_load (unsigned short *a
) { return (TYPE
)*a
; }
71 TYPE
from_uns_int_load (unsigned int *a
) { return (TYPE
)*a
; }
72 TYPE
from_uns_long_load (unsigned long *a
) { return (TYPE
)*a
; }
74 TYPE
from_uns_char_load_4 (unsigned char *a
) { return (TYPE
)a
[4]; }
75 TYPE
from_uns_short_load_4 (unsigned short *a
) { return (TYPE
)a
[4]; }
76 TYPE
from_uns_int_load_4 (unsigned int *a
) { return (TYPE
)a
[4]; }
77 TYPE
from_uns_long_load_4 (unsigned long *a
) { return (TYPE
)a
[4]; }
79 TYPE
from_uns_char_load_n (unsigned char *a
, long n
) { return (TYPE
)a
[n
]; }
80 TYPE
from_uns_short_load_n (unsigned short *a
, long n
) { return (TYPE
)a
[n
]; }
81 TYPE
from_uns_int_load_n (unsigned int *a
, long n
) { return (TYPE
)a
[n
]; }
82 TYPE
from_uns_long_load_n (unsigned long *a
, long n
) { return (TYPE
)a
[n
]; }
84 unsigned char to_uns_char (TYPE a
) { return (unsigned char)a
; }
85 unsigned short to_uns_short (TYPE a
) { return (unsigned short)a
; }
86 unsigned int to_uns_int (TYPE a
) { return (unsigned int)a
; }
87 unsigned long to_uns_long (TYPE a
) { return (unsigned long)a
; }
89 void to_uns_char_store (TYPE a
, unsigned char *p
) { *p
= (unsigned char)a
; }
90 void to_uns_short_store (TYPE a
, unsigned short *p
) { *p
= (unsigned short)a
; }
91 void to_uns_int_store (TYPE a
, unsigned int *p
) { *p
= (unsigned int)a
; }
92 void to_uns_long_store (TYPE a
, unsigned long *p
) { *p
= (unsigned long)a
; }
94 void to_uns_char_store_4 (TYPE a
, unsigned char *p
) { p
[4] = (unsigned char)a
; }
95 void to_uns_short_store_4 (TYPE a
, unsigned short *p
) { p
[4] = (unsigned short)a
; }
96 void to_uns_int_store_4 (TYPE a
, unsigned int *p
) { p
[4] = (unsigned int)a
; }
97 void to_uns_long_store_4 (TYPE a
, unsigned long *p
) { p
[4] = (unsigned long)a
; }
99 void to_uns_char_store_n (TYPE a
, unsigned char *p
, long n
) { p
[n
] = (unsigned char)a
; }
100 void to_uns_short_store_n (TYPE a
, unsigned short *p
, long n
) { p
[n
] = (unsigned short)a
; }
101 void to_uns_int_store_n (TYPE a
, unsigned int *p
, long n
) { p
[n
] = (unsigned int)a
; }
102 void to_uns_long_store_n (TYPE a
, unsigned long *p
, long n
) { p
[n
] = (unsigned long)a
; }
104 /* { dg-final { scan-assembler-not {\mbl __} } } */
105 /* { dg-final { scan-assembler {\mxscvdpqp\M} } } */
106 /* { dg-final { scan-assembler {\mxscvqpdp\M} } } */
107 /* { dg-final { scan-assembler {\mxscvqpdpo\M} } } */
108 /* { dg-final { scan-assembler {\mxscvqpsdz\M} } } */
109 /* { dg-final { scan-assembler {\mxscvqpswz\M} } } */
110 /* { dg-final { scan-assembler {\mxscvsdqp\M} } } */
111 /* { dg-final { scan-assembler {\mxscvudqp\M} } } */
112 /* { dg-final { scan-assembler {\mlxsd\M} } } */
113 /* { dg-final { scan-assembler {\mlxsiwax\M} } } */
114 /* { dg-final { scan-assembler {\mlxsiwzx\M} } } */
115 /* { dg-final { scan-assembler {\mlxssp\M} } } */
116 /* { dg-final { scan-assembler {\mstxsd\M} } } */
117 /* { dg-final { scan-assembler {\mstxsiwx\M} } } */
118 /* { dg-final { scan-assembler {\mstxssp\M} } } */