1/* { dg-do compile } */
2/* This test checks for absolute memory operands.  */
3/* { dg-require-effective-target nonpic } */
4/* { dg-require-effective-target sse2 } */
5/* { dg-options "-O2 -msse2 -march=k8" } */
6/* { dg-final { scan-assembler "pand\[^\\n\]*magic" } } */
7/* { dg-final { scan-assembler "pandn\[^\\n\]*magic" } } */
8/* { dg-final { scan-assembler "pxor\[^\\n\]*magic" } } */
9/* { dg-final { scan-assembler "por\[^\\n\]*magic" } } */
10/* { dg-final { scan-assembler "movdqa" } } */
11/* { dg-final { scan-assembler-not "movaps\[^\\n\]*magic" } } */
12
13/* Verify that we generate proper instruction with memory operand.  */
14
15#include <xmmintrin.h>
16static __m128i magic_a, magic_b;
17__m128i
18t1(void)
19{
20return _mm_and_si128 (magic_a,magic_b);
21}
22__m128i
23t2(void)
24{
25return _mm_andnot_si128 (magic_a,magic_b);
26}
27__m128i
28t3(void)
29{
30return _mm_or_si128 (magic_a,magic_b);
31}
32__m128i
33t4(void)
34{
35return _mm_xor_si128 (magic_a,magic_b);
36}
37
38