1/* { dg-do compile } */
2/* { dg-options "-O2 -msse2 -march=k8" } */
3/* { dg-require-effective-target sse2 } */
4/* { dg-final { scan-assembler "andps" } } */
5/* { dg-final { scan-assembler "andnps" } } */
6/* { dg-final { scan-assembler "xorps" } } */
7/* { dg-final { scan-assembler "orps" } } */
8
9/* Verify that we generate proper instruction without memory operand.  */
10
11#include <xmmintrin.h>
12__m128
13t1(__m128 a, __m128 b)
14{
15a=_mm_sqrt_ps(a);
16b=_mm_sqrt_ps(b);
17return _mm_and_ps (a,b);
18}
19__m128
20t2(__m128 a, __m128 b)
21{
22a=_mm_sqrt_ps(a);
23b=_mm_sqrt_ps(b);
24return _mm_andnot_ps (a,b);
25}
26__m128
27t3(__m128 a, __m128 b)
28{
29a=_mm_sqrt_ps(a);
30b=_mm_sqrt_ps(b);
31return _mm_or_ps (a,b);
32}
33__m128
34t4(__m128 a, __m128 b)
35{
36a=_mm_sqrt_ps(a);
37b=_mm_sqrt_ps(b);
38return _mm_xor_ps (a,b);
39}
40