blob: ca12cd59c41a7b0af4478f6c6b3613cce52ea8b1 [file] [log] [blame]
/* { dg-do run } */
/* { dg-options "-O2" } */
#include "arm_neon.h"
int
main (int argc, char** argv)
{
int64x1_t val1;
int64x1_t val2;
int64x1_t val3;
uint64x1_t val13;
uint64x2_t val14;
uint64_t got;
uint64_t exp;
val1 = vcreate_s64(UINT64_C(0xffffffff80008000));
val2 = vcreate_s64(UINT64_C(0x0000f38d00000000));
val3 = vcreate_s64(UINT64_C(0xffff7fff0000809b));
/* Expect: "val13" = 8000000000001553. */
val13 = vcreate_u64 (UINT64_C(0x8000000000001553));
/* Expect: "val14" = 0010 0000 0000 0002 0000 0000 0000 0000. */
val14 = vcombine_u64(vcgt_s64(vqrshl_s64(val1, val2),
vshr_n_s64(val3, 18)),
vshr_n_u64(val13, 11));
/* Should be 0000000000000000. */
got = vgetq_lane_u64(val14, 0);
exp = 0;
if(exp != got)
__builtin_abort ();
}