1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -msse2" } */
       3  
       4  typedef int __attribute__((vector_size(8))) v2si_t;
       5  typedef int __attribute__((vector_size(16))) v4si_t;
       6  typedef double __attribute__((vector_size(16))) v2df_t;
       7  
       8  struct __attribute__((packed)) s {
       9    int i;
      10    v2si_t m;
      11    v4si_t v;
      12  };
      13  
      14  int test (struct s*ps)
      15  {
      16    v4si_t r = ps->v;
      17    v2si_t m;
      18  
      19    if (ps->i > 0)
      20      {
      21        asm volatile ("" : "+m" (*ps));
      22        m = __builtin_ia32_cvtpd2pi ((v2df_t)ps->v);
      23        r[0] = __builtin_ia32_paddd (m, m)[0];
      24      }
      25    else
      26      {
      27        asm volatile ("" : "+m" (*ps));
      28        m = __builtin_ia32_cvttpd2pi ((v2df_t)ps->v);
      29        r[0] = __builtin_ia32_paddd (m, m)[0];
      30      }
      31  
      32    return r[0];
      33  }
      34  
      35  /* { dg-final { scan-assembler-not "cvtpd2pi\[ \t]\[^\n\r]*\\(" } } */
      36  /* { dg-final { scan-assembler-not "cvttpd2pi\[ \t]\[^\n\r]*\\(" } } */