/* PR optimization/10233 */ /* Originator: */ /* { dg-do run { target i?86-*-* } } */ /* { dg-options "-std=c99 -O3 -mmmx" } */ #include extern void abort(void); typedef union { unsigned long long uq[1]; __m64 m; } mm_t __attribute__((aligned(8))); static int foo(mm_t *p, const mm_t *q) { mm_t t; t.m = _mm_slli_pi16(p->m, 1); return t.uq[0] == q->uq[0]; } int main(void) { mm_t m1, m2; m1.uq[0] = 0x4001800180018001ULL; m2.uq[0] = 0x0002000200020002ULL; if (foo(&m1, &m2)) abort(); return 0; }