parent
c1a106c222
commit
8662802d49
|
@ -0,0 +1,36 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -msse2" } */
|
||||
|
||||
typedef int __attribute__((vector_size(8))) v2si_t;
|
||||
typedef int __attribute__((vector_size(16))) v4si_t;
|
||||
typedef double __attribute__((vector_size(16))) v2df_t;
|
||||
|
||||
struct __attribute__((packed)) s {
|
||||
int i;
|
||||
v2si_t m;
|
||||
v4si_t v;
|
||||
};
|
||||
|
||||
int test (struct s*ps)
|
||||
{
|
||||
v4si_t r = ps->v;
|
||||
v2si_t m;
|
||||
|
||||
if (ps->i > 0)
|
||||
{
|
||||
asm volatile ("" : "+m" (*ps));
|
||||
m = __builtin_ia32_cvtpd2pi ((v2df_t)ps->v);
|
||||
r[0] = __builtin_ia32_paddd (m, m)[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
asm volatile ("" : "+m" (*ps));
|
||||
m = __builtin_ia32_cvttpd2pi ((v2df_t)ps->v);
|
||||
r[0] = __builtin_ia32_paddd (m, m)[0];
|
||||
}
|
||||
|
||||
return r[0];
|
||||
}
|
||||
|
||||
/* { dg-final { scan-assembler-not "cvtpd2pi\[ \t]\[^\n\r]*\\(" } } */
|
||||
/* { dg-final { scan-assembler-not "cvttpd2pi\[ \t]\[^\n\r]*\\(" } } */
|
Loading…
Reference in New Issue