| /* { dg-do compile } */ | |
| /* { dg-options "-O2" } */ | |
| typedef long long v2di __attribute__ ((vector_size (16))); | |
| typedef double v2df __attribute__ ((vector_size (16))); | |
| v2di | |
| construct_lanedi (long long *y) | |
| { | |
| v2di x = | |
| #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ | |
| { 0, y[0] } | |
| #else | |
| { y[0], 0 } | |
| #endif | |
| ; | |
| return x; | |
| } | |
| v2df | |
| construct_lanedf (double *y) | |
| { | |
| v2df x = | |
| #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ | |
| { 0.0, y[0] } | |
| #else | |
| { y[0], 0.0 } | |
| #endif | |
| ; | |
| return x; | |
| } | |
| /* Check that creating V2DI and V2DF vectors from a lane with a zero | |
| makes use of the D-reg LDR rather than doing explicit lane inserts. */ | |
| /* { dg-final { scan-assembler-times "ldr\td\[0-9\]+" 2 } } */ | |
| /* { dg-final { scan-assembler-not "ins\t" } } */ |