1 /* { dg-do compile } */
2 /* { dg-options "-mfp64 -mhard-float -mmsa" } */
3 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
4
5 typedef double v2f64 __attribute__ ((vector_size (16)));
6 typedef long long v2i64 __attribute__ ((vector_size (16)));
7 typedef int v4i32 __attribute__ ((vector_size (16)));
8
9 long long foo(const v2f64* a)
10 {
11 v2f64 x;
12 v2i64 y;
13
14 x = (v2f64)__builtin_msa_shf_w((v4i32)*a, 0xff);
15 y = __builtin_msa_fcun_d(*a, x);
16
17 return y[0];
18 }
19
20 /* { dg-final { scan-assembler-times "ld" 1 } } */