1 /* { dg-do compile { target { powerpc*-*-* && lp64 } } } */
2 /* { dg-require-effective-target powerpc_p8vector_ok } */
3 /* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { "-mcpu=power8" } } */
4 /* { dg-options "-mcpu=power8 -O2 -mno-upper-regs-sf" } */
6 /* PR target/80099 was an issue with -mno-upper-regs-sf. Test for all variable
7 extract types with various -mno-upper-regs-* options. */
10 d_extract_arg_n (vector
double v
, unsigned long n
)
12 return __builtin_vec_extract (v
, n
);
16 f_extract_arg_n (vector
float v
, unsigned long n
)
18 return __builtin_vec_extract (v
, n
);
22 sl_extract_arg_n (vector
long v
, unsigned long n
)
24 return (long) __builtin_vec_extract (v
, n
);
28 ul_extract_arg_n (vector
unsigned long v
, unsigned long n
)
30 return (unsigned long) __builtin_vec_extract (v
, n
);
34 si_extract_arg_n (vector
int v
, unsigned long n
)
36 return (int) __builtin_vec_extract (v
, n
);
40 ui_extract_arg_n (vector
unsigned int v
, unsigned long n
)
42 return (unsigned int) __builtin_vec_extract (v
, n
);
46 ss_extract_arg_n (vector
short v
, unsigned long n
)
48 return (short) __builtin_vec_extract (v
, n
);
52 us_extract_arg_n (vector
unsigned short v
, unsigned long n
)
54 return (unsigned short) __builtin_vec_extract (v
, n
);
58 sc_extract_arg_n (vector
signed char v
, unsigned long n
)
60 return (signed char) __builtin_vec_extract (v
, n
);
64 uc_extract_arg_n (vector
unsigned char v
, unsigned long n
)
66 return (unsigned char) __builtin_vec_extract (v
, n
);
71 d_extract_mem_n (vector
double *p
, unsigned long n
)
73 return __builtin_vec_extract (*p
, n
);
77 f_extract_mem_n (vector
float *p
, unsigned long n
)
79 return __builtin_vec_extract (*p
, n
);
83 sl_extract_mem_n (vector
long *p
, unsigned long n
)
85 return (long) __builtin_vec_extract (*p
, n
);
89 ul_extract_mem_n (vector
unsigned long *p
, unsigned long n
)
91 return (unsigned long) __builtin_vec_extract (*p
, n
);
95 si_extract_mem_n (vector
int *p
, unsigned long n
)
97 return (int) __builtin_vec_extract (*p
, n
);
101 ui_extract_mem_n (vector
unsigned int *p
, unsigned long n
)
103 return (unsigned int) __builtin_vec_extract (*p
, n
);
107 ss_extract_mem_n (vector
short *p
, unsigned long n
)
109 return (short) __builtin_vec_extract (*p
, n
);
113 us_extract_mem_n (vector
unsigned short *p
, unsigned long n
)
115 return (unsigned short) __builtin_vec_extract (*p
, n
);
119 sc_extract_mem_n (vector
signed char *p
, unsigned long n
)
121 return (signed char) __builtin_vec_extract (*p
, n
);
125 uc_extract_mem_n (vector
unsigned char *p
, unsigned long n
)
127 return (unsigned char) __builtin_vec_extract (*p
, n
);