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