* doc/sourcebuild.texi (Effective-Target Keywords): Document
3dnow, sse3, sse2.
(Directives): Document optional dg-require-effective-target
selector.
gcc/testsuite:
* lib/target-supports.exp (check_effective_target_sse2): New proc.
* lib/target-supports-dg.exp (dg-require-effective-target): Allow
for optional selector.
* gcc.target/i386/i386.exp (check_effective_target_3dnow): New proc.
(check_effective_target_sse3): New proc.
* gcc.target/i386/math-torture/math-torture.exp: Load
target-supports.exp.
Only add options with -msse2 to MATH_TORTURE_OPTIONS if
check_effective_target_sse2.
* gcc.dg/vect/vect.exp: Return unless check_effective_target_sse2.
* gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp: Likewise.
* g++.dg/vect/vect.exp: Likewise.
* gfortran.dg/vect/vect.exp: Likewise.
* lib/fortran-torture.exp (get-fortran-torture-options): Only use
-msse2 if check_effective_target_sse2.
* gcc.target/i386/3dnow-1.c: Use dg-require-effective-target 3dnow.
* gcc.target/i386/3dnow-2.c: Likewise.
* gcc.target/i386/3dnowA-1.c: Likewise.
* gcc.target/i386/3dnowA-2.c: Likewise.
* gcc.target/i386/pr42549.c: Likewise.
* gcc.target/i386/sse3-addsubpd.c: Use dg-require-effective-target sse3.
* gcc.target/i386/sse3-addsubps.c: Likewise.
* gcc.target/i386/sse3-haddpd.c: Likewise.
* gcc.target/i386/sse3-haddps.c: Likewise.
* gcc.target/i386/sse3-hsubpd.c: Likewise.
* gcc.target/i386/sse3-hsubps.c: Likewise.
* gcc.target/i386/sse3-lddqu.c: Likewise.
* gcc.target/i386/sse3-movddup.c: Likewise.
* gcc.target/i386/sse3-movshdup.c: Likewise.
* gcc.target/i386/sse3-movsldup.c: Likewise.
* g++.dg/abi/mangle42.C: Use dg-require-effective-target sse2.
* g++.dg/ext/attrib35.C: Likewise.
* g++.dg/opt/pr40496.C: Likewise.
* g++.dg/other/i386-1.C: Likewise.
* g++.dg/other/i386-4.C: Likewise.
* g++.dg/other/pr34435.C: Likewise.
* g++.dg/other/pr39496.C: Likewise.
* g++.dg/other/pr40446.C: Likewise.
* gcc.dg/compat/union-m128-1_main.c: Likewise.
* gcc.dg/compat/vector-1a_main.c: Likewise.
* gcc.dg/compat/vector-2a_main.c: Likewise.
* gcc.dg/lto/
20090206-1_0.c: Likewise.
* gcc.dg/pr34856.c: Likewise.
* gcc.dg/pr36584.c: Likewise.
* gcc.dg/pr36997.c: Likewise. Adapt dg-message line number.
* gcc.dg/pr37544.c: Likewise.
* gcc.dg/torture/pr16104-1.c: Likewise.
* gcc.dg/torture/pr35771-1.c: Likewise.
* gcc.dg/torture/pr35771-2.c: Likewise.
* gcc.dg/torture/pr35771-3.c: Likewise.
* gcc.dg/torture/stackalign/alloca-2.c: Likewise.
* gcc.dg/torture/stackalign/alloca-3.c: Likewise.
* gcc.dg/torture/stackalign/push-1.c: Likewise.
* gcc.dg/torture/stackalign/vararg-3.c: Likewise.
* gcc.dg/tree-ssa/prefetch-6.c: Likewise.
* gcc.dg/tree-ssa/prefetch-7.c: Likewise.
* gcc.dg/vect/vect-debug-pr41926.c: Likewise.
* gcc.target/i386/
20060512-1.c: Likewise.
* gcc.target/i386/
20060512-3.c: Likewise.
* gcc.target/i386/all_one_m128i.c: Likewise.
* gcc.target/i386/float128-1.c: Likewise.
* gcc.target/i386/float128-2.c: Likewise.
* gcc.target/i386/fpcvt-1.c: Likewise.
* gcc.target/i386/fpcvt-2.c: Likewise.
* gcc.target/i386/fpcvt-3.c: Likewise.
* gcc.target/i386/fpprec-1.c: Likewise.
* gcc.target/i386/funcspec-9.c: Likewise.
* gcc.target/i386/incoming-1.c: Likewise.
* gcc.target/i386/incoming-12.c: Likewise.
* gcc.target/i386/incoming-2.c: Likewise.
* gcc.target/i386/incoming-3.c: Likewise.
* gcc.target/i386/incoming-4.c: Likewise.
* gcc.target/i386/incoming-6.c: Likewise.
* gcc.target/i386/incoming-7.c: Likewise.
* gcc.target/i386/incoming-8.c: Likewise.
* gcc.target/i386/opt-1.c: Likewise.
* gcc.target/i386/opt-2.c: Likewise.
* gcc.target/i386/ordcmp-1.c: Likewise.
* gcc.target/i386/pr17692.c: Likewise.
* gcc.target/i386/pr18614-1.c: Likewise.
* gcc.target/i386/pr22152.c: Likewise.
* gcc.target/i386/pr23570.c: Likewise.
* gcc.target/i386/pr23575.c: Likewise.
* gcc.target/i386/pr26449-1.c: Likewise.
* gcc.target/i386/pr26600.c: Likewise.
* gcc.target/i386/pr27790.c: Likewise.
* gcc.target/i386/pr28839.c: Likewise.
* gcc.target/i386/pr30970.c: Likewise.
* gcc.target/i386/pr32000-1.c: Likewise.
* gcc.target/i386/pr32000-2.c: Likewise.
* gcc.target/i386/pr32280.c: Likewise.
* gcc.target/i386/pr32661.c: Likewise.
* gcc.target/i386/pr32708-1.c: Likewise.
* gcc.target/i386/pr32961.c: Likewise.
* gcc.target/i386/pr33329.c: Likewise.
* gcc.target/i386/pr35714.c: Likewise.
* gcc.target/i386/pr35767-1.c: Likewise.
* gcc.target/i386/pr35767-1d.c: Likewise.
* gcc.target/i386/pr35767-1i.c: Likewise.
* gcc.target/i386/pr35767-2.c: Likewise.
* gcc.target/i386/pr35767-2d.c: Likewise.
* gcc.target/i386/pr35767-2i.c: Likewise.
* gcc.target/i386/pr35767-3.c: Likewise.
* gcc.target/i386/pr35767-5.c: Likewise.
* gcc.target/i386/pr36222-1.c: Likewise.
* gcc.target/i386/pr36578-1.c: Likewise.
* gcc.target/i386/pr36578-2.c: Likewise.
* gcc.target/i386/pr36992-1.c: Likewise.
* gcc.target/i386/pr37101.c: Likewise.
* gcc.target/i386/pr37216.c: Likewise.
* gcc.target/i386/pr37434-1.c: Likewise.
* gcc.target/i386/pr37434-2.c: Likewise.
* gcc.target/i386/pr37843-3.c: Likewise.
* gcc.target/i386/pr37843-4.c: Likewise.
* gcc.target/i386/pr39162.c: Likewise.
* gcc.target/i386/pr39315-1.c: Likewise.
* gcc.target/i386/pr39315-2.c: Likewise.
* gcc.target/i386/pr39315-3.c: Likewise.
* gcc.target/i386/pr39315-4.c: Likewise.
* gcc.target/i386/pr39445.c: Likewise.
* gcc.target/i386/pr39496.c: Likewise.
* gcc.target/i386/pr40809.c: Likewise.
* gcc.target/i386/pr40906-3.c: Likewise.
* gcc.target/i386/pr41019.c: Likewise.
* gcc.target/i386/pr42542-1.c: Likewise.
* gcc.target/i386/pr42542-2.c: Likewise.
* gcc.target/i386/pr42542-3.c: Likewise.
* gcc.target/i386/pr42542-3a.c: Likewise.
* gcc.target/i386/pr42881.c: Likewise.
* gcc.target/i386/push-1.c: Likewise.
* gcc.target/i386/quad-sse.c: Likewise.
* gcc.target/i386/reload-1.c: Likewise.
* gcc.target/i386/sse-10.c: Likewise.
* gcc.target/i386/sse-11.c: Likewise.
* gcc.target/i386/sse-15.c: Likewise.
* gcc.target/i386/sse-17.c: Likewise.
* gcc.target/i386/sse-18.c: Likewise.
* gcc.target/i386/sse-19.c: Likewise.
* gcc.target/i386/sse-4.c: Likewise.
* gcc.target/i386/sse-6.c: Likewise.
* gcc.target/i386/sse-vect-types.c: Likewise.
* gcc.target/i386/sse2-addpd-1.c: Likewise.
* gcc.target/i386/sse2-addsd-1.c: Likewise.
* gcc.target/i386/sse2-andnpd-1.c: Likewise.
* gcc.target/i386/sse2-andpd-1.c: Likewise.
* gcc.target/i386/sse2-cmpsd-1.c: Likewise.
* gcc.target/i386/sse2-comisd-1.c: Likewise.
* gcc.target/i386/sse2-comisd-2.c: Likewise.
* gcc.target/i386/sse2-comisd-3.c: Likewise.
* gcc.target/i386/sse2-comisd-4.c: Likewise.
* gcc.target/i386/sse2-comisd-5.c: Likewise.
* gcc.target/i386/sse2-comisd-6.c: Likewise.
* gcc.target/i386/sse2-copysign-vec.c: Likewise.
* gcc.target/i386/sse2-cvtdq2pd-1.c: Likewise.
* gcc.target/i386/sse2-cvtdq2ps-1.c: Likewise.
* gcc.target/i386/sse2-cvtpd2dq-1.c: Likewise.
* gcc.target/i386/sse2-cvtpd2ps-1.c: Likewise.
* gcc.target/i386/sse2-cvtps2dq-1.c: Likewise.
* gcc.target/i386/sse2-cvtps2pd-1.c: Likewise.
* gcc.target/i386/sse2-cvtsd2si-1.c: Likewise.
* gcc.target/i386/sse2-cvtsd2si-2.c: Likewise.
* gcc.target/i386/sse2-cvtsd2ss-1.c: Likewise.
* gcc.target/i386/sse2-cvtsi2sd-1.c: Likewise.
* gcc.target/i386/sse2-cvtsi2sd-2.c: Likewise.
* gcc.target/i386/sse2-cvtss2sd-1.c: Likewise.
* gcc.target/i386/sse2-cvttpd2dq-1.c: Likewise.
* gcc.target/i386/sse2-cvttps2dq-1.c: Likewise.
* gcc.target/i386/sse2-cvttsd2si-1.c: Likewise.
* gcc.target/i386/sse2-cvttsd2si-2.c: Likewise.
* gcc.target/i386/sse2-divpd-1.c: Likewise.
* gcc.target/i386/sse2-divsd-1.c: Likewise.
* gcc.target/i386/sse2-init-v16qi-1.c: Likewise.
* gcc.target/i386/sse2-init-v2di-1.c: Likewise.
* gcc.target/i386/sse2-init-v4si-1.c: Likewise.
* gcc.target/i386/sse2-init-v8hi-1.c: Likewise.
* gcc.target/i386/sse2-lrint-vec.c: Likewise.
* gcc.target/i386/sse2-lrintf-vec.c: Likewise.
* gcc.target/i386/sse2-maxpd-1.c: Likewise.
* gcc.target/i386/sse2-maxsd-1.c: Likewise.
* gcc.target/i386/sse2-minpd-1.c: Likewise.
* gcc.target/i386/sse2-minsd-1.c: Likewise.
* gcc.target/i386/sse2-mmx.c: Likewise.
* gcc.target/i386/sse2-movapd-1.c: Likewise.
* gcc.target/i386/sse2-movapd-2.c: Likewise.
* gcc.target/i386/sse2-movd-1.c: Likewise.
* gcc.target/i386/sse2-movd-2.c: Likewise.
* gcc.target/i386/sse2-movdqa-1.c: Likewise.
* gcc.target/i386/sse2-movdqa-2.c: Likewise.
* gcc.target/i386/sse2-movdqu-1.c: Likewise.
* gcc.target/i386/sse2-movdqu-2.c: Likewise.
* gcc.target/i386/sse2-movhpd-1.c: Likewise.
* gcc.target/i386/sse2-movhpd-2.c: Likewise.
* gcc.target/i386/sse2-movlpd-1.c: Likewise.
* gcc.target/i386/sse2-movlpd-2.c: Likewise.
* gcc.target/i386/sse2-movmskpd-1.c: Likewise.
* gcc.target/i386/sse2-movntdq-1.c: Likewise.
* gcc.target/i386/sse2-movntpd-1.c: Likewise.
* gcc.target/i386/sse2-movq-1.c: Likewise.
* gcc.target/i386/sse2-movq-2.c: Likewise.
* gcc.target/i386/sse2-movq-3.c: Likewise.
* gcc.target/i386/sse2-movsd-1.c: Likewise.
* gcc.target/i386/sse2-movsd-2.c: Likewise.
* gcc.target/i386/sse2-movupd-1.c: Likewise.
* gcc.target/i386/sse2-movupd-2.c: Likewise.
* gcc.target/i386/sse2-mulpd-1.c: Likewise.
* gcc.target/i386/sse2-mulsd-1.c: Likewise.
* gcc.target/i386/sse2-orpd-1.c: Likewise.
* gcc.target/i386/sse2-packssdw-1.c: Likewise.
* gcc.target/i386/sse2-packsswb-1.c: Likewise.
* gcc.target/i386/sse2-packuswb-1.c: Likewise.
* gcc.target/i386/sse2-paddb-1.c: Likewise.
* gcc.target/i386/sse2-paddd-1.c: Likewise.
* gcc.target/i386/sse2-paddq-1.c: Likewise.
* gcc.target/i386/sse2-paddsb-1.c: Likewise.
* gcc.target/i386/sse2-paddsw-1.c: Likewise.
* gcc.target/i386/sse2-paddusb-1.c: Likewise.
* gcc.target/i386/sse2-paddusw-1.c: Likewise.
* gcc.target/i386/sse2-paddw-1.c: Likewise.
* gcc.target/i386/sse2-pand-1.c: Likewise.
* gcc.target/i386/sse2-pandn-1.c: Likewise.
* gcc.target/i386/sse2-pavgb-1.c: Likewise.
* gcc.target/i386/sse2-pavgw-1.c: Likewise.
* gcc.target/i386/sse2-pcmpeqb-1.c: Likewise.
* gcc.target/i386/sse2-pcmpeqd-1.c: Likewise.
* gcc.target/i386/sse2-pcmpeqw-1.c: Likewise.
* gcc.target/i386/sse2-pcmpgtb-1.c: Likewise.
* gcc.target/i386/sse2-pcmpgtd-1.c: Likewise.
* gcc.target/i386/sse2-pcmpgtw-1.c: Likewise.
* gcc.target/i386/sse2-pmaddwd-1.c: Likewise.
* gcc.target/i386/sse2-pmaxsw-1.c: Likewise.
* gcc.target/i386/sse2-pmaxub-1.c: Likewise.
* gcc.target/i386/sse2-pminsw-1.c: Likewise.
* gcc.target/i386/sse2-pminub-1.c: Likewise.
* gcc.target/i386/sse2-pmovmskb-1.c: Likewise.
* gcc.target/i386/sse2-pmulhuw-1.c: Likewise.
* gcc.target/i386/sse2-pmulhw-1.c: Likewise.
* gcc.target/i386/sse2-pmullw-1.c: Likewise.
* gcc.target/i386/sse2-pmuludq-1.c: Likewise.
* gcc.target/i386/sse2-por-1.c: Likewise.
* gcc.target/i386/sse2-psadbw-1.c: Likewise.
* gcc.target/i386/sse2-pshufd-1.c: Likewise.
* gcc.target/i386/sse2-pshufhw-1.c: Likewise.
* gcc.target/i386/sse2-pshuflw-1.c: Likewise.
* gcc.target/i386/sse2-pslld-1.c: Likewise.
* gcc.target/i386/sse2-pslld-2.c: Likewise.
* gcc.target/i386/sse2-pslldq-1.c: Likewise.
* gcc.target/i386/sse2-psllq-1.c: Likewise.
* gcc.target/i386/sse2-psllq-2.c: Likewise.
* gcc.target/i386/sse2-psllw-1.c: Likewise.
* gcc.target/i386/sse2-psllw-2.c: Likewise.
* gcc.target/i386/sse2-psrad-1.c: Likewise.
* gcc.target/i386/sse2-psrad-2.c: Likewise.
* gcc.target/i386/sse2-psraw-1.c: Likewise.
* gcc.target/i386/sse2-psraw-2.c: Likewise.
* gcc.target/i386/sse2-psrld-1.c: Likewise.
* gcc.target/i386/sse2-psrld-2.c: Likewise.
* gcc.target/i386/sse2-psrldq-1.c: Likewise.
* gcc.target/i386/sse2-psrlq-1.c: Likewise.
* gcc.target/i386/sse2-psrlq-2.c: Likewise.
* gcc.target/i386/sse2-psrlw-1.c: Likewise.
* gcc.target/i386/sse2-psrlw-2.c: Likewise.
* gcc.target/i386/sse2-psubb-1.c: Likewise.
* gcc.target/i386/sse2-psubd-1.c: Likewise.
* gcc.target/i386/sse2-psubq-1.c: Likewise.
* gcc.target/i386/sse2-psubsb-1.c: Likewise.
* gcc.target/i386/sse2-psubsw-1.c: Likewise.
* gcc.target/i386/sse2-psubw-1.c: Likewise.
* gcc.target/i386/sse2-punpckhbw-1.c: Likewise.
* gcc.target/i386/sse2-punpckhdq-1.c: Likewise.
* gcc.target/i386/sse2-punpckhqdq-1.c: Likewise.
* gcc.target/i386/sse2-punpckhwd-1.c: Likewise.
* gcc.target/i386/sse2-punpcklbw-1.c: Likewise.
* gcc.target/i386/sse2-punpckldq-1.c: Likewise.
* gcc.target/i386/sse2-punpcklqdq-1.c: Likewise.
* gcc.target/i386/sse2-punpcklwd-1.c: Likewise.
* gcc.target/i386/sse2-pxor-1.c: Likewise.
* gcc.target/i386/sse2-set-epi32-1.c: Likewise.
* gcc.target/i386/sse2-set-epi64x-1.c: Likewise.
* gcc.target/i386/sse2-set-v16qi-1.c: Likewise.
* gcc.target/i386/sse2-set-v16qi-2.c: Likewise.
* gcc.target/i386/sse2-set-v16qi-3.c: Likewise.
* gcc.target/i386/sse2-set-v8hi-1.c: Likewise.
* gcc.target/i386/sse2-set-v8hi-1a.c: Likewise.
* gcc.target/i386/sse2-set-v8hi-2.c: Likewise.
* gcc.target/i386/sse2-set-v8hi-2a.c: Likewise.
* gcc.target/i386/sse2-shufpd-1.c: Likewise.
* gcc.target/i386/sse2-shufps-1.c: Likewise.
* gcc.target/i386/sse2-sqrtpd-1.c: Likewise.
* gcc.target/i386/sse2-subpd-1.c: Likewise.
* gcc.target/i386/sse2-subsd-1.c: Likewise.
* gcc.target/i386/sse2-ucomisd-1.c: Likewise.
* gcc.target/i386/sse2-ucomisd-2.c: Likewise.
* gcc.target/i386/sse2-ucomisd-3.c: Likewise.
* gcc.target/i386/sse2-ucomisd-4.c: Likewise.
* gcc.target/i386/sse2-ucomisd-5.c: Likewise.
* gcc.target/i386/sse2-ucomisd-6.c: Likewise.
* gcc.target/i386/sse2-unpack-1.c: Likewise.
* gcc.target/i386/sse2-unpckhpd-1.c: Likewise.
* gcc.target/i386/sse2-unpcklpd-1.c: Likewise.
* gcc.target/i386/sse2-vec-1.c: Likewise.
* gcc.target/i386/sse2-vec-2.c: Likewise.
* gcc.target/i386/sse2-vec-3.c: Likewise.
* gcc.target/i386/sse2-vec-4.c: Likewise.
* gcc.target/i386/sse2-vec-5.c: Likewise.
* gcc.target/i386/sse2-vec-6.c: Likewise.
* gcc.target/i386/sse2-xorpd-1.c: Likewise.
* gcc.target/i386/ssefn-2.c: Likewise.
* gcc.target/i386/ssefn-4.c: Likewise.
* gcc.target/i386/ssefp-1.c: Likewise.
* gcc.target/i386/ssefp-2.c: Likewise.
* gcc.target/i386/sseregparm-3.c: Likewise.
* gcc.target/i386/sseregparm-4.c: Likewise.
* gcc.target/i386/sseregparm-5.c: Likewise.
* gcc.target/i386/sseregparm-6.c: Likewise.
* gcc.target/i386/sseregparm-7.c: Likewise.
* gcc.target/i386/ssetype-1.c: Likewise.
* gcc.target/i386/ssetype-2.c: Likewise.
* gcc.target/i386/ssetype-3.c: Likewise.
* gcc.target/i386/ssetype-4.c: Likewise.
* gcc.target/i386/ssetype-5.c: Likewise.
* gcc.target/i386/unordcmp-1.c: Likewise.
* gcc.target/i386/vararg-1.c: Likewise.
* gcc.target/i386/vararg-2.c: Likewise.
* gcc.target/i386/vararg-3.c: Likewise.
* gcc.target/i386/vararg-4.c: Likewise.
* gcc.target/i386/vararg-7.c: Likewise.
* gcc.target/i386/vararg-8.c: Likewise.
* gcc.target/i386/vecinit-1.c: Likewise.
* gcc.target/i386/vecinit-2.c: Likewise.
* gcc.target/i386/vecinit-3.c: Likewise.
* gcc.target/i386/vecinit-4.c: Likewise.
* gcc.target/i386/vecinit-5.c: Likewise.
* gcc.target/i386/vecinit-6.c: Likewise.
* gcc.target/i386/vectorize2.c: Likewise.
* gcc.target/i386/vectorize3.c: Likewise.
* gcc.target/i386/vectorize4.c: Likewise.
* gcc.target/i386/vectorize6.c: Likewise.
* gcc.target/i386/vectorize7.c: Likewise.
* gcc.target/i386/vectorize8.c: Likewise.
* gcc.target/i386/vperm-v2df.c: Likewise.
* gcc.target/i386/vperm-v2di.c: Likewise.
* gcc.target/i386/vperm-v4si-1.c: Likewise.
* gcc.target/i386/xorps-sse2.c: Likewise.
* gcc.target/i386/xorps.c: Likewise.
* gfortran.dg/graphite/pr42326-1.f90: Likewise.
* gfortran.dg/graphite/pr42326.f90: Likewise.
* gfortran.dg/vect/fast-math-mgrid-resid.f: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159584
138bc75d-0d04-0410-961f-
82ee72b054a4
+2010-05-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * doc/sourcebuild.texi (Effective-Target Keywords): Document
+ 3dnow, sse3, sse2.
+ (Directives): Document optional dg-require-effective-target
+ selector.
+
2010-05-19 Richard Guenther <rguenther@suse.de>
PR lto/44196
/* @{ dg-skip-if "" @{ *-*-* @} @{ "-O2 -g" "-O3 -g" @} @{ "-fpic" @} @} */
@end smallexample
-@item @{ dg-require-effective-target @var{keyword} @}
+@item @{ dg-require-effective-target @var{keyword} [@{ @var{selector} @}] @}
Skip the test if the test target, including current multilib flags,
is not covered by the effective-target keyword.
+If the directive includes the optional @samp{@{ @var{selector} @}}
+then the effective-target test is only performed if the target system
+matches the @var{selector}.
This directive must appear after any @code{dg-do} directive in the test
and before any @code{dg-additional-sources} directive.
@xref{Effective-Target Keywords, , }.
@item hard_float
Target supports FPU instructions.
+@item sse2
+Target supports compiling @code{sse2} instructions.
+
@item sync_char_short
Target supports atomic operations on @code{char} and @code{short}.
@subsubsection Local to tests in @code{gcc.target/i386}
@table @code
+@item 3dnow
+Target supports compiling @code{3dnow} instructions.
+
@item aes
Target supports compiling @code{aes} instructions.
@item pclmul
Target supports compiling @code{pclmul} instructions.
+@item sse3
+Target supports compiling @code{sse3} instructions.
+
@item sse4
Target supports compiling @code{sse4} instructions.
+2010-05-19 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * lib/target-supports.exp (check_effective_target_sse2): New proc.
+ * lib/target-supports-dg.exp (dg-require-effective-target): Allow
+ for optional selector.
+ * gcc.target/i386/i386.exp (check_effective_target_3dnow): New proc.
+ (check_effective_target_sse3): New proc.
+ * gcc.target/i386/math-torture/math-torture.exp: Load
+ target-supports.exp.
+ Only add options with -msse2 to MATH_TORTURE_OPTIONS if
+ check_effective_target_sse2.
+ * gcc.dg/vect/vect.exp: Return unless check_effective_target_sse2.
+ * gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp: Likewise.
+ * g++.dg/vect/vect.exp: Likewise.
+ * gfortran.dg/vect/vect.exp: Likewise.
+ * lib/fortran-torture.exp (get-fortran-torture-options): Only use
+ -msse2 if check_effective_target_sse2.
+
+ * gcc.target/i386/3dnow-1.c: Use dg-require-effective-target 3dnow.
+ * gcc.target/i386/3dnow-2.c: Likewise.
+ * gcc.target/i386/3dnowA-1.c: Likewise.
+ * gcc.target/i386/3dnowA-2.c: Likewise.
+ * gcc.target/i386/pr42549.c: Likewise.
+
+ * gcc.target/i386/sse3-addsubpd.c: Use dg-require-effective-target sse3.
+ * gcc.target/i386/sse3-addsubps.c: Likewise.
+ * gcc.target/i386/sse3-haddpd.c: Likewise.
+ * gcc.target/i386/sse3-haddps.c: Likewise.
+ * gcc.target/i386/sse3-hsubpd.c: Likewise.
+ * gcc.target/i386/sse3-hsubps.c: Likewise.
+ * gcc.target/i386/sse3-lddqu.c: Likewise.
+ * gcc.target/i386/sse3-movddup.c: Likewise.
+ * gcc.target/i386/sse3-movshdup.c: Likewise.
+ * gcc.target/i386/sse3-movsldup.c: Likewise.
+
+ * g++.dg/abi/mangle42.C: Use dg-require-effective-target sse2.
+ * g++.dg/ext/attrib35.C: Likewise.
+ * g++.dg/opt/pr40496.C: Likewise.
+ * g++.dg/other/i386-1.C: Likewise.
+ * g++.dg/other/i386-4.C: Likewise.
+ * g++.dg/other/pr34435.C: Likewise.
+ * g++.dg/other/pr39496.C: Likewise.
+ * g++.dg/other/pr40446.C: Likewise.
+ * gcc.dg/compat/union-m128-1_main.c: Likewise.
+ * gcc.dg/compat/vector-1a_main.c: Likewise.
+ * gcc.dg/compat/vector-2a_main.c: Likewise.
+ * gcc.dg/lto/20090206-1_0.c: Likewise.
+ * gcc.dg/pr34856.c: Likewise.
+ * gcc.dg/pr36584.c: Likewise.
+ * gcc.dg/pr36997.c: Likewise. Adapt dg-message line number.
+ * gcc.dg/pr37544.c: Likewise.
+ * gcc.dg/torture/pr16104-1.c: Likewise.
+ * gcc.dg/torture/pr35771-1.c: Likewise.
+ * gcc.dg/torture/pr35771-2.c: Likewise.
+ * gcc.dg/torture/pr35771-3.c: Likewise.
+ * gcc.dg/torture/stackalign/alloca-2.c: Likewise.
+ * gcc.dg/torture/stackalign/alloca-3.c: Likewise.
+ * gcc.dg/torture/stackalign/push-1.c: Likewise.
+ * gcc.dg/torture/stackalign/vararg-3.c: Likewise.
+ * gcc.dg/tree-ssa/prefetch-6.c: Likewise.
+ * gcc.dg/tree-ssa/prefetch-7.c: Likewise.
+ * gcc.dg/vect/vect-debug-pr41926.c: Likewise.
+ * gcc.target/i386/20060512-1.c: Likewise.
+ * gcc.target/i386/20060512-3.c: Likewise.
+ * gcc.target/i386/all_one_m128i.c: Likewise.
+ * gcc.target/i386/float128-1.c: Likewise.
+ * gcc.target/i386/float128-2.c: Likewise.
+ * gcc.target/i386/fpcvt-1.c: Likewise.
+ * gcc.target/i386/fpcvt-2.c: Likewise.
+ * gcc.target/i386/fpcvt-3.c: Likewise.
+ * gcc.target/i386/fpprec-1.c: Likewise.
+ * gcc.target/i386/funcspec-9.c: Likewise.
+ * gcc.target/i386/incoming-1.c: Likewise.
+ * gcc.target/i386/incoming-12.c: Likewise.
+ * gcc.target/i386/incoming-2.c: Likewise.
+ * gcc.target/i386/incoming-3.c: Likewise.
+ * gcc.target/i386/incoming-4.c: Likewise.
+ * gcc.target/i386/incoming-6.c: Likewise.
+ * gcc.target/i386/incoming-7.c: Likewise.
+ * gcc.target/i386/incoming-8.c: Likewise.
+ * gcc.target/i386/opt-1.c: Likewise.
+ * gcc.target/i386/opt-2.c: Likewise.
+ * gcc.target/i386/ordcmp-1.c: Likewise.
+ * gcc.target/i386/pr17692.c: Likewise.
+ * gcc.target/i386/pr18614-1.c: Likewise.
+ * gcc.target/i386/pr22152.c: Likewise.
+ * gcc.target/i386/pr23570.c: Likewise.
+ * gcc.target/i386/pr23575.c: Likewise.
+ * gcc.target/i386/pr26449-1.c: Likewise.
+ * gcc.target/i386/pr26600.c: Likewise.
+ * gcc.target/i386/pr27790.c: Likewise.
+ * gcc.target/i386/pr28839.c: Likewise.
+ * gcc.target/i386/pr30970.c: Likewise.
+ * gcc.target/i386/pr32000-1.c: Likewise.
+ * gcc.target/i386/pr32000-2.c: Likewise.
+ * gcc.target/i386/pr32280.c: Likewise.
+ * gcc.target/i386/pr32661.c: Likewise.
+ * gcc.target/i386/pr32708-1.c: Likewise.
+ * gcc.target/i386/pr32961.c: Likewise.
+ * gcc.target/i386/pr33329.c: Likewise.
+ * gcc.target/i386/pr35714.c: Likewise.
+ * gcc.target/i386/pr35767-1.c: Likewise.
+ * gcc.target/i386/pr35767-1d.c: Likewise.
+ * gcc.target/i386/pr35767-1i.c: Likewise.
+ * gcc.target/i386/pr35767-2.c: Likewise.
+ * gcc.target/i386/pr35767-2d.c: Likewise.
+ * gcc.target/i386/pr35767-2i.c: Likewise.
+ * gcc.target/i386/pr35767-3.c: Likewise.
+ * gcc.target/i386/pr35767-5.c: Likewise.
+ * gcc.target/i386/pr36222-1.c: Likewise.
+ * gcc.target/i386/pr36578-1.c: Likewise.
+ * gcc.target/i386/pr36578-2.c: Likewise.
+ * gcc.target/i386/pr36992-1.c: Likewise.
+ * gcc.target/i386/pr37101.c: Likewise.
+ * gcc.target/i386/pr37216.c: Likewise.
+ * gcc.target/i386/pr37434-1.c: Likewise.
+ * gcc.target/i386/pr37434-2.c: Likewise.
+ * gcc.target/i386/pr37843-3.c: Likewise.
+ * gcc.target/i386/pr37843-4.c: Likewise.
+ * gcc.target/i386/pr39162.c: Likewise.
+ * gcc.target/i386/pr39315-1.c: Likewise.
+ * gcc.target/i386/pr39315-2.c: Likewise.
+ * gcc.target/i386/pr39315-3.c: Likewise.
+ * gcc.target/i386/pr39315-4.c: Likewise.
+ * gcc.target/i386/pr39445.c: Likewise.
+ * gcc.target/i386/pr39496.c: Likewise.
+ * gcc.target/i386/pr40809.c: Likewise.
+ * gcc.target/i386/pr40906-3.c: Likewise.
+ * gcc.target/i386/pr41019.c: Likewise.
+ * gcc.target/i386/pr42542-1.c: Likewise.
+ * gcc.target/i386/pr42542-2.c: Likewise.
+ * gcc.target/i386/pr42542-3.c: Likewise.
+ * gcc.target/i386/pr42542-3a.c: Likewise.
+ * gcc.target/i386/pr42881.c: Likewise.
+ * gcc.target/i386/push-1.c: Likewise.
+ * gcc.target/i386/quad-sse.c: Likewise.
+ * gcc.target/i386/reload-1.c: Likewise.
+ * gcc.target/i386/sse-10.c: Likewise.
+ * gcc.target/i386/sse-11.c: Likewise.
+ * gcc.target/i386/sse-15.c: Likewise.
+ * gcc.target/i386/sse-17.c: Likewise.
+ * gcc.target/i386/sse-18.c: Likewise.
+ * gcc.target/i386/sse-19.c: Likewise.
+ * gcc.target/i386/sse-4.c: Likewise.
+ * gcc.target/i386/sse-6.c: Likewise.
+ * gcc.target/i386/sse-vect-types.c: Likewise.
+ * gcc.target/i386/sse2-addpd-1.c: Likewise.
+ * gcc.target/i386/sse2-addsd-1.c: Likewise.
+ * gcc.target/i386/sse2-andnpd-1.c: Likewise.
+ * gcc.target/i386/sse2-andpd-1.c: Likewise.
+ * gcc.target/i386/sse2-cmpsd-1.c: Likewise.
+ * gcc.target/i386/sse2-comisd-1.c: Likewise.
+ * gcc.target/i386/sse2-comisd-2.c: Likewise.
+ * gcc.target/i386/sse2-comisd-3.c: Likewise.
+ * gcc.target/i386/sse2-comisd-4.c: Likewise.
+ * gcc.target/i386/sse2-comisd-5.c: Likewise.
+ * gcc.target/i386/sse2-comisd-6.c: Likewise.
+ * gcc.target/i386/sse2-copysign-vec.c: Likewise.
+ * gcc.target/i386/sse2-cvtdq2pd-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtdq2ps-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtpd2dq-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtpd2ps-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtps2dq-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtps2pd-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtsd2si-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtsd2si-2.c: Likewise.
+ * gcc.target/i386/sse2-cvtsd2ss-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtsi2sd-1.c: Likewise.
+ * gcc.target/i386/sse2-cvtsi2sd-2.c: Likewise.
+ * gcc.target/i386/sse2-cvtss2sd-1.c: Likewise.
+ * gcc.target/i386/sse2-cvttpd2dq-1.c: Likewise.
+ * gcc.target/i386/sse2-cvttps2dq-1.c: Likewise.
+ * gcc.target/i386/sse2-cvttsd2si-1.c: Likewise.
+ * gcc.target/i386/sse2-cvttsd2si-2.c: Likewise.
+ * gcc.target/i386/sse2-divpd-1.c: Likewise.
+ * gcc.target/i386/sse2-divsd-1.c: Likewise.
+ * gcc.target/i386/sse2-init-v16qi-1.c: Likewise.
+ * gcc.target/i386/sse2-init-v2di-1.c: Likewise.
+ * gcc.target/i386/sse2-init-v4si-1.c: Likewise.
+ * gcc.target/i386/sse2-init-v8hi-1.c: Likewise.
+ * gcc.target/i386/sse2-lrint-vec.c: Likewise.
+ * gcc.target/i386/sse2-lrintf-vec.c: Likewise.
+ * gcc.target/i386/sse2-maxpd-1.c: Likewise.
+ * gcc.target/i386/sse2-maxsd-1.c: Likewise.
+ * gcc.target/i386/sse2-minpd-1.c: Likewise.
+ * gcc.target/i386/sse2-minsd-1.c: Likewise.
+ * gcc.target/i386/sse2-mmx.c: Likewise.
+ * gcc.target/i386/sse2-movapd-1.c: Likewise.
+ * gcc.target/i386/sse2-movapd-2.c: Likewise.
+ * gcc.target/i386/sse2-movd-1.c: Likewise.
+ * gcc.target/i386/sse2-movd-2.c: Likewise.
+ * gcc.target/i386/sse2-movdqa-1.c: Likewise.
+ * gcc.target/i386/sse2-movdqa-2.c: Likewise.
+ * gcc.target/i386/sse2-movdqu-1.c: Likewise.
+ * gcc.target/i386/sse2-movdqu-2.c: Likewise.
+ * gcc.target/i386/sse2-movhpd-1.c: Likewise.
+ * gcc.target/i386/sse2-movhpd-2.c: Likewise.
+ * gcc.target/i386/sse2-movlpd-1.c: Likewise.
+ * gcc.target/i386/sse2-movlpd-2.c: Likewise.
+ * gcc.target/i386/sse2-movmskpd-1.c: Likewise.
+ * gcc.target/i386/sse2-movntdq-1.c: Likewise.
+ * gcc.target/i386/sse2-movntpd-1.c: Likewise.
+ * gcc.target/i386/sse2-movq-1.c: Likewise.
+ * gcc.target/i386/sse2-movq-2.c: Likewise.
+ * gcc.target/i386/sse2-movq-3.c: Likewise.
+ * gcc.target/i386/sse2-movsd-1.c: Likewise.
+ * gcc.target/i386/sse2-movsd-2.c: Likewise.
+ * gcc.target/i386/sse2-movupd-1.c: Likewise.
+ * gcc.target/i386/sse2-movupd-2.c: Likewise.
+ * gcc.target/i386/sse2-mulpd-1.c: Likewise.
+ * gcc.target/i386/sse2-mulsd-1.c: Likewise.
+ * gcc.target/i386/sse2-orpd-1.c: Likewise.
+ * gcc.target/i386/sse2-packssdw-1.c: Likewise.
+ * gcc.target/i386/sse2-packsswb-1.c: Likewise.
+ * gcc.target/i386/sse2-packuswb-1.c: Likewise.
+ * gcc.target/i386/sse2-paddb-1.c: Likewise.
+ * gcc.target/i386/sse2-paddd-1.c: Likewise.
+ * gcc.target/i386/sse2-paddq-1.c: Likewise.
+ * gcc.target/i386/sse2-paddsb-1.c: Likewise.
+ * gcc.target/i386/sse2-paddsw-1.c: Likewise.
+ * gcc.target/i386/sse2-paddusb-1.c: Likewise.
+ * gcc.target/i386/sse2-paddusw-1.c: Likewise.
+ * gcc.target/i386/sse2-paddw-1.c: Likewise.
+ * gcc.target/i386/sse2-pand-1.c: Likewise.
+ * gcc.target/i386/sse2-pandn-1.c: Likewise.
+ * gcc.target/i386/sse2-pavgb-1.c: Likewise.
+ * gcc.target/i386/sse2-pavgw-1.c: Likewise.
+ * gcc.target/i386/sse2-pcmpeqb-1.c: Likewise.
+ * gcc.target/i386/sse2-pcmpeqd-1.c: Likewise.
+ * gcc.target/i386/sse2-pcmpeqw-1.c: Likewise.
+ * gcc.target/i386/sse2-pcmpgtb-1.c: Likewise.
+ * gcc.target/i386/sse2-pcmpgtd-1.c: Likewise.
+ * gcc.target/i386/sse2-pcmpgtw-1.c: Likewise.
+ * gcc.target/i386/sse2-pmaddwd-1.c: Likewise.
+ * gcc.target/i386/sse2-pmaxsw-1.c: Likewise.
+ * gcc.target/i386/sse2-pmaxub-1.c: Likewise.
+ * gcc.target/i386/sse2-pminsw-1.c: Likewise.
+ * gcc.target/i386/sse2-pminub-1.c: Likewise.
+ * gcc.target/i386/sse2-pmovmskb-1.c: Likewise.
+ * gcc.target/i386/sse2-pmulhuw-1.c: Likewise.
+ * gcc.target/i386/sse2-pmulhw-1.c: Likewise.
+ * gcc.target/i386/sse2-pmullw-1.c: Likewise.
+ * gcc.target/i386/sse2-pmuludq-1.c: Likewise.
+ * gcc.target/i386/sse2-por-1.c: Likewise.
+ * gcc.target/i386/sse2-psadbw-1.c: Likewise.
+ * gcc.target/i386/sse2-pshufd-1.c: Likewise.
+ * gcc.target/i386/sse2-pshufhw-1.c: Likewise.
+ * gcc.target/i386/sse2-pshuflw-1.c: Likewise.
+ * gcc.target/i386/sse2-pslld-1.c: Likewise.
+ * gcc.target/i386/sse2-pslld-2.c: Likewise.
+ * gcc.target/i386/sse2-pslldq-1.c: Likewise.
+ * gcc.target/i386/sse2-psllq-1.c: Likewise.
+ * gcc.target/i386/sse2-psllq-2.c: Likewise.
+ * gcc.target/i386/sse2-psllw-1.c: Likewise.
+ * gcc.target/i386/sse2-psllw-2.c: Likewise.
+ * gcc.target/i386/sse2-psrad-1.c: Likewise.
+ * gcc.target/i386/sse2-psrad-2.c: Likewise.
+ * gcc.target/i386/sse2-psraw-1.c: Likewise.
+ * gcc.target/i386/sse2-psraw-2.c: Likewise.
+ * gcc.target/i386/sse2-psrld-1.c: Likewise.
+ * gcc.target/i386/sse2-psrld-2.c: Likewise.
+ * gcc.target/i386/sse2-psrldq-1.c: Likewise.
+ * gcc.target/i386/sse2-psrlq-1.c: Likewise.
+ * gcc.target/i386/sse2-psrlq-2.c: Likewise.
+ * gcc.target/i386/sse2-psrlw-1.c: Likewise.
+ * gcc.target/i386/sse2-psrlw-2.c: Likewise.
+ * gcc.target/i386/sse2-psubb-1.c: Likewise.
+ * gcc.target/i386/sse2-psubd-1.c: Likewise.
+ * gcc.target/i386/sse2-psubq-1.c: Likewise.
+ * gcc.target/i386/sse2-psubsb-1.c: Likewise.
+ * gcc.target/i386/sse2-psubsw-1.c: Likewise.
+ * gcc.target/i386/sse2-psubw-1.c: Likewise.
+ * gcc.target/i386/sse2-punpckhbw-1.c: Likewise.
+ * gcc.target/i386/sse2-punpckhdq-1.c: Likewise.
+ * gcc.target/i386/sse2-punpckhqdq-1.c: Likewise.
+ * gcc.target/i386/sse2-punpckhwd-1.c: Likewise.
+ * gcc.target/i386/sse2-punpcklbw-1.c: Likewise.
+ * gcc.target/i386/sse2-punpckldq-1.c: Likewise.
+ * gcc.target/i386/sse2-punpcklqdq-1.c: Likewise.
+ * gcc.target/i386/sse2-punpcklwd-1.c: Likewise.
+ * gcc.target/i386/sse2-pxor-1.c: Likewise.
+ * gcc.target/i386/sse2-set-epi32-1.c: Likewise.
+ * gcc.target/i386/sse2-set-epi64x-1.c: Likewise.
+ * gcc.target/i386/sse2-set-v16qi-1.c: Likewise.
+ * gcc.target/i386/sse2-set-v16qi-2.c: Likewise.
+ * gcc.target/i386/sse2-set-v16qi-3.c: Likewise.
+ * gcc.target/i386/sse2-set-v8hi-1.c: Likewise.
+ * gcc.target/i386/sse2-set-v8hi-1a.c: Likewise.
+ * gcc.target/i386/sse2-set-v8hi-2.c: Likewise.
+ * gcc.target/i386/sse2-set-v8hi-2a.c: Likewise.
+ * gcc.target/i386/sse2-shufpd-1.c: Likewise.
+ * gcc.target/i386/sse2-shufps-1.c: Likewise.
+ * gcc.target/i386/sse2-sqrtpd-1.c: Likewise.
+ * gcc.target/i386/sse2-subpd-1.c: Likewise.
+ * gcc.target/i386/sse2-subsd-1.c: Likewise.
+ * gcc.target/i386/sse2-ucomisd-1.c: Likewise.
+ * gcc.target/i386/sse2-ucomisd-2.c: Likewise.
+ * gcc.target/i386/sse2-ucomisd-3.c: Likewise.
+ * gcc.target/i386/sse2-ucomisd-4.c: Likewise.
+ * gcc.target/i386/sse2-ucomisd-5.c: Likewise.
+ * gcc.target/i386/sse2-ucomisd-6.c: Likewise.
+ * gcc.target/i386/sse2-unpack-1.c: Likewise.
+ * gcc.target/i386/sse2-unpckhpd-1.c: Likewise.
+ * gcc.target/i386/sse2-unpcklpd-1.c: Likewise.
+ * gcc.target/i386/sse2-vec-1.c: Likewise.
+ * gcc.target/i386/sse2-vec-2.c: Likewise.
+ * gcc.target/i386/sse2-vec-3.c: Likewise.
+ * gcc.target/i386/sse2-vec-4.c: Likewise.
+ * gcc.target/i386/sse2-vec-5.c: Likewise.
+ * gcc.target/i386/sse2-vec-6.c: Likewise.
+ * gcc.target/i386/sse2-xorpd-1.c: Likewise.
+ * gcc.target/i386/ssefn-2.c: Likewise.
+ * gcc.target/i386/ssefn-4.c: Likewise.
+ * gcc.target/i386/ssefp-1.c: Likewise.
+ * gcc.target/i386/ssefp-2.c: Likewise.
+ * gcc.target/i386/sseregparm-3.c: Likewise.
+ * gcc.target/i386/sseregparm-4.c: Likewise.
+ * gcc.target/i386/sseregparm-5.c: Likewise.
+ * gcc.target/i386/sseregparm-6.c: Likewise.
+ * gcc.target/i386/sseregparm-7.c: Likewise.
+ * gcc.target/i386/ssetype-1.c: Likewise.
+ * gcc.target/i386/ssetype-2.c: Likewise.
+ * gcc.target/i386/ssetype-3.c: Likewise.
+ * gcc.target/i386/ssetype-4.c: Likewise.
+ * gcc.target/i386/ssetype-5.c: Likewise.
+ * gcc.target/i386/unordcmp-1.c: Likewise.
+ * gcc.target/i386/vararg-1.c: Likewise.
+ * gcc.target/i386/vararg-2.c: Likewise.
+ * gcc.target/i386/vararg-3.c: Likewise.
+ * gcc.target/i386/vararg-4.c: Likewise.
+ * gcc.target/i386/vararg-7.c: Likewise.
+ * gcc.target/i386/vararg-8.c: Likewise.
+ * gcc.target/i386/vecinit-1.c: Likewise.
+ * gcc.target/i386/vecinit-2.c: Likewise.
+ * gcc.target/i386/vecinit-3.c: Likewise.
+ * gcc.target/i386/vecinit-4.c: Likewise.
+ * gcc.target/i386/vecinit-5.c: Likewise.
+ * gcc.target/i386/vecinit-6.c: Likewise.
+ * gcc.target/i386/vectorize2.c: Likewise.
+ * gcc.target/i386/vectorize3.c: Likewise.
+ * gcc.target/i386/vectorize4.c: Likewise.
+ * gcc.target/i386/vectorize6.c: Likewise.
+ * gcc.target/i386/vectorize7.c: Likewise.
+ * gcc.target/i386/vectorize8.c: Likewise.
+ * gcc.target/i386/vperm-v2df.c: Likewise.
+ * gcc.target/i386/vperm-v2di.c: Likewise.
+ * gcc.target/i386/vperm-v4si-1.c: Likewise.
+ * gcc.target/i386/xorps-sse2.c: Likewise.
+ * gcc.target/i386/xorps.c: Likewise.
+ * gfortran.dg/graphite/pr42326-1.f90: Likewise.
+ * gfortran.dg/graphite/pr42326.f90: Likewise.
+ * gfortran.dg/vect/fast-math-mgrid-resid.f: Likewise.
+
2010-05-19 Richard Guenther <rguenther@suse.de>
PR lto/44196
// Origin: PR c++/43375
// { dg-do compile { target i?86-*-* x86_64-*-* } }
// { dg-options "-msse2 -std=gnu++0x" }
+// { dg-require-effective-target sse2 }
typedef float __v4sf __attribute__ ((__vector_size__ (16)));
typedef int __v4si __attribute__ ((__vector_size__ (16)));
// { dg-do compile { target i?86-*-* x86_64-*-* } }
// { dg-options "-O3 -msse2" }
+// { dg-require-effective-target sse2 }
// You can make NON-template typedefs with a large alignment.
typedef double AlignedDoubleType __attribute__((aligned(16)));
// { dg-do compile }
// { dg-options "-O2 -fprefetch-loop-arrays -msse2" { target i?86-*-* x86_64-*-* } }
+// { dg-require-effective-target sse2 { target i?86-*-* x86_64-*-* } }
struct DOMStringHandle
{
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <xmmintrin.h>
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O1 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <xmmintrin.h>
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2 -Wno-abi" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
// PR target/39496
// { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && ilp32 } } }
// { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -mtune=i686 -msse2 -mfpmath=sse" }
+// { dg-require-effective-target sse2 }
// Verify that {foo,bar}{,2}param are all passed on the stack, using
// normal calling conventions, when not optimizing.
// { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*fooparam," } }
// PR middle-end/40446
// { dg-do run { target i?86-*-* x86_64-*-* } }
// { dg-options "-O1 -msse2" }
+// { dg-require-effective-target sse2 }
#include <emmintrin.h>
#include "cpuid.h"
-# Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2007, 2008, 2010 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
} elseif { [istarget "spu-*-*"] } {
set dg-do-what-default run
} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } {
+ if { ![check_effective_target_sse2] } then {
+ return
+ }
lappend DEFAULT_VECTCFLAGS "-msse2"
if [check_sse2_hw_available] {
set dg-do-what-default run
/* { dg-skip-if "test SSE2 support" { ! { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-O" } */
+/* { dg-require-effective-target sse2 } */
#include "cpuid.h"
/* { dg-skip-if "test SSE2 vector" { ! { i?86-*-* x86_64-*-* } } } */
+/* { dg-require-effective-target sse2 } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
/* { dg-skip-if "test SSE2 support" { ! { i?86-*-* x86_64-*-* } } } */
+/* { dg-require-effective-target sse2 } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
/* { dg-lto-do link } */
/* { dg-skip-if "" { ! { i?86-*-linux* x86_64-*-linux* } } { "*" } { "" } } */
/* { dg-lto-options {{-fPIC -r -nostdlib -fwhopr -msse2}} } */
+/* { dg-require-effective-target sse2 } */
/* { dg-suppress-ld-options {-fPIC -msse2} } */
typedef short v8hi __attribute__((__vector_size__(16)));
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -msse2" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-require-effective-target sse2 { target { i?86-*-* x86_64-*-* } } } */
/* { dg-options "-O2 -maltivec" { target { powerpc*-*-linux* && powerpc_altivec_ok } } } */
typedef unsigned __attribute__ ((__mode__ (__pointer__))) uintptr_t;
/* { dg-do run } */
/* { dg-options "-O2 -lm" } */
/* { dg-options "-O2 -msse2 -mfpmath=sse" { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
-
+/* { dg-require-effective-target sse2 { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
#ifdef __i386__
#include "cpuid.h"
/* { dg-do compile { target x86_64-*-* i?86-*-* } } */
/* { dg-options "-std=c99 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef int __m64 __attribute__ ((__vector_size__ (8), __may_alias__));
__m64 _mm_add_si64 (__m64 __m1, __m64 __m2)
{
return (__m64) __builtin_ia32_paddq ((long long)__m1, (long long)__m2); /* { dg-error "incompatible type" } */
- /* { dg-message "note: expected '__vector.1. long long int' but argument is of type 'long long int'" "" { target *-*-* } 7 } */
+ /* { dg-message "note: expected '__vector.1. long long int' but argument is of type 'long long int'" "" { target *-*-* } 8 } */
}
/* { dg-do run } */
/* { dg-options "-O2" } */
/* { dg-options "-O2 -msse2 -mtune=core2 -mfpmath=387" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-require-effective-target sse2 { target { i?86-*-* x86_64-*-* } } } */
#ifdef __i386__
#include "cpuid.h"
/* PR rtl-optimization/16104 */
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "cpuid.h"
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
/* { dg-do run { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
/* PR middle-end/37009 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
#include "cpuid.h"
/* PR middle-end/37009 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
#include "cpuid.h"
/* PR middle-end/37010 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2 -mpreferred-stack-boundary=2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
#include "cpuid.h"
/* PR middle-end/37009 */
/* { dg-do run { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <stdarg.h>
#include <emmintrin.h>
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 -fdump-tree-aprefetch-details" } */
#define N 1000
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-skip-if "" { i?86-*-* x86_64-*-* } { "-march=*" } { "-march=athlon" } } */
/* { dg-options "-O2 -fprefetch-loop-arrays -march=athlon -msse2 -mfpmath=sse --param simultaneous-prefetches=100 --param max-unrolled-insns=1 -fdump-tree-aprefetch-details -fdump-tree-optimized" } */
-# Copyright (C) 1997, 2004, 2005, 2006, 2007, 2008
+# Copyright (C) 1997, 2004, 2005, 2006, 2007, 2008, 2010
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
global dg-do-what-default
set save-dg-do-what-default ${dg-do-what-default}
+if { ![check_effective_target_sse2] } then {
+ return
+}
lappend DEFAULT_VECTCFLAGS "-msse2"
if [check_sse2_hw_available] {
set dg-do-what-default run
/* PR debug/41926 */
/* { dg-do compile } */
/* { dg-options "-O2 -g -ffast-math -funroll-loops -ftree-vectorize -msse2" { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-require-effective-target sse2 { target { i?86-*-* x86_64-*-* } } } */
void
foo (double (*__restrict p)[4], double (*__restrict q)[4],
-# Copyright (C) 1997, 2004, 2005, 2006, 2007, 2008
+# Copyright (C) 1997, 2004, 2005, 2006, 2007, 2008, 2010
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
} elseif { [istarget "spu-*-*"] } {
set dg-do-what-default run
} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } {
+ if { ![check_effective_target_sse2] } then {
+ return
+ }
lappend DEFAULT_VECTCFLAGS "-msse2"
if [check_sse2_hw_available] {
set dg-do-what-default run
/* { dg-do run } */
/* { dg-require-effective-target ilp32 } */
/* { dg-options "-std=gnu99 -msse2 -mpreferred-stack-boundary=4" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-std=gnu99 -msse2 -mstackrealign -mpreferred-stack-boundary=4" } */
#include "sse2-check.h"
/* { dg-do assemble } */
+/* { dg-require-effective-target 3dnow } */
/* { dg-options "-O2 -Werror-implicit-function-declaration -m3dnow" } */
/* Test that the intrinsics compile with optimization. All of them are
/* { dg-do assemble } */
+/* { dg-require-effective-target 3dnow } */
/* { dg-options "-O0 -Werror-implicit-function-declaration -m3dnow" } */
/* Test that the intrinsics compile without optimization. All of them are
/* { dg-do assemble } */
+/* { dg-require-effective-target 3dnow } */
/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow" } */
/* Test that the intrinsics compile with optimization. All of them are
/* { dg-do assemble } */
+/* { dg-require-effective-target 3dnow } */
/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -m3dnow" } */
/* Test that the intrinsics compile without optimization. All of them are
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
typedef int __v4si __attribute__ ((__vector_size__ (16)));
/* { dg-do run { target *-*-linux* } } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run { target *-*-linux* *-*-darwin* } } */
/* { dg-options "-Os -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -march=k8" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "cvtss2sd" } } */
float a,b;
main()
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -march=k8" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "cvtss2sd" } } */
float a,b;
main()
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -march=k8" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "cvtss2sd" } } */
extern double fabs (double);
float a,b;
/* { dg-do run } */
/* { dg-options "-O2 -fno-math-errno -fno-trapping-math -msse2 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* Test whether using target specific options, we can generate FMA4 code. */
/* { dg-do compile } */
/* { dg-options "-O2 -march=k8 -mfpmath=sse -msse2" } */
+/* { dg-require-effective-target sse2 } */
extern void exit (int);
}
}
+# Return 1 if 3dnow instructions can be compiled.
+proc check_effective_target_3dnow { } {
+ return [check_no_compiler_messages 3dnow object {
+ void _m_pfadd (void)
+ {
+ __builtin_ia32_pfadd();
+ }
+ } "-O2 -m3dnow" ]
+}
+
+# Return 1 if sse3 instructions can be compiled.
+proc check_effective_target_sse3 { } {
+ return [check_no_compiler_messages sse3 object {
+ typedef double __m128d __attribute__ ((__vector_size__ (16)));
+ typedef double __v2df __attribute__ ((__vector_size__ (16)));
+
+ __m128d _mm_addsub_pd (__m128d __X, __m128d __Y)
+ {
+ return (__m128d) __builtin_ia32_addsubpd ((__v2df)__X, (__v2df)__Y);
+ }
+ } "-O2 -msse3" ]
+}
+
# Return 1 if ssse3 instructions can be compiled.
proc check_effective_target_ssse3 { } {
return [check_no_compiler_messages ssse3 object {
/* PR middle-end/37009 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
/* PR target/40838 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -mstackrealign -O2 -msse2 -mpreferred-stack-boundary=4" } */
+/* { dg-require-effective-target sse2 } */
typedef int v4si __attribute__ ((vector_size (16)));
/* PR middle-end/37009 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
/* PR middle-end/37009 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
/* PR middle-end/37009 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" } */
+/* { dg-require-effective-target sse2 } */
#include <stdarg.h>
#include <emmintrin.h>
/* PR target/40838 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -mstackrealign -O2 -msse2 -mpreferred-stack-boundary=4" } */
+/* { dg-require-effective-target sse2 } */
typedef int v4si __attribute__ ((vector_size (16)));
/* PR target/40838 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -mstackrealign -O2 -msse2 -mpreferred-stack-boundary=4" } */
+/* { dg-require-effective-target sse2 } */
typedef int v4si __attribute__ ((vector_size (16)));
/* PR target/40838 */
/* { dg-do compile { target { { ! *-*-darwin* } && ilp32 } } } */
/* { dg-options "-w -mstackrealign -O3 -msse2 -mpreferred-stack-boundary=4" } */
+/* { dg-require-effective-target sse2 } */
float
foo (float f)
-# Copyright (C) 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# This harness is for tests that should be run at all optimisation levels.
+load_lib target-supports.exp
+
# Exit immediately if this isn't a x86 target.
if { ![istarget i?86*-*-*] && ![istarget x86_64-*-*] } then {
return
{ -O0 } \
{ -O0 -mfpmath=387 } \
{ -O0 -msse -mno-sse2 -mfpmath=sse } \
- { -O0 -msse -msse2 -mfpmath=sse } \
{ -O0 -msse -mno-sse2 -mfpmath=sse,387 } \
- { -O0 -msse -msse2 -mfpmath=sse,387 } \
{ -O0 -mfpmath=387 -ffast-math } \
{ -O0 -msse -mno-sse2 -mfpmath=sse -ffast-math } \
- { -O0 -msse -msse2 -mfpmath=sse -ffast-math } \
{ -O0 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \
- { -O0 -msse -msse2 -mfpmath=sse,387 -ffast-math } \
{ -O2 } \
{ -O2 -mfpmath=387 } \
{ -O2 -msse -mno-sse2 -mfpmath=sse } \
- { -O2 -msse -msse2 -mfpmath=sse } \
{ -O2 -msse -mno-sse2 -mfpmath=sse,387 } \
- { -O2 -msse -msse2 -mfpmath=sse,387 } \
{ -O2 -mfpmath=387 -ffast-math } \
{ -O2 -msse -mno-sse2 -mfpmath=sse -ffast-math } \
- { -O2 -msse -msse2 -mfpmath=sse -ffast-math } \
{ -O2 -msse -mno-sse2 -mfpmath=sse,387 -ffast-math } \
- { -O2 -msse -msse2 -mfpmath=sse,387 -ffast-math } \
]
+if { [check_effective_target_sse2] } {
+ lappend MATH_TORTURE_OPTIONS \
+ { -O0 -msse -msse2 -mfpmath=sse } \
+ { -O0 -msse -msse2 -mfpmath=sse,387 } \
+ { -O0 -msse -msse2 -mfpmath=sse -ffast-math } \
+ { -O0 -msse -msse2 -mfpmath=sse,387 -ffast-math } \
+ { -O2 -msse -msse2 -mfpmath=sse } \
+ { -O2 -msse -msse2 -mfpmath=sse,387 } \
+ { -O2 -msse -msse2 -mfpmath=sse -ffast-math } \
+ { -O2 -msse -msse2 -mfpmath=sse,387 -ffast-math } \
+}
+
load_lib gcc-dg.exp
load_lib torture-options.exp
whether we vectorize a simple loop. */
/* { dg-do compile } */
/* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "prefetcht0" } } */
/* { dg-final { scan-assembler "addps" } } */
/* { dg-final { scan-assembler "subss" } } */
whether we vectorize a simple loop. */
/* { dg-do compile } */
/* { dg-options "-O1 -msse2 -mfpmath=sse -march=k8" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "prefetcht0" } } */
/* { dg-final { scan-assembler "addps" } } */
/* { dg-final { scan-assembler "subss" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "cmpordss" } } */
/* { dg-final { scan-assembler "cmpordps" } } */
/* { dg-final { scan-assembler "cmpordsd" } } */
/* { dg-do compile } */
/* { dg-options "-O -mfpmath=sse -msse2" } */
+/* { dg-require-effective-target sse2 } */
/* The fact that t1 and t2 are uninitialized is critical. With them
uninitialized, the register allocator is free to put them in the same
hard register, which results in
/* PR rtl-optimization/18614 */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef double v2df __attribute__ ((vector_size (16)));
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <mmintrin.h>
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef float __v4sf __attribute__ ((__vector_size__ (16)));
typedef float __m128 __attribute__ ((__vector_size__ (16)));
/* { dg-do compile } */
/* { dg-options "-msse2 -O2" } */
+/* { dg-require-effective-target sse2 } */
/* We used to ICE because of a bogous pattern. */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -mtune=k8" } */
+/* { dg-require-effective-target sse2 } */
typedef short __v8hi __attribute__ ((__vector_size__ (16)));
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
/* { dg-do compile } */
/* { dg-options "-O -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
void foo(int *p, int N)
{
/* { dg-do compile } */
/* { dg-options "-O -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
void binarize (int npixels, unsigned char *b)
{
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -ftree-vectorize -funswitch-loops" } */
+/* { dg-require-effective-target sse2 } */
static int ready[10];
void abort (void);
/* { dg-do compile }
/* { dg-options "-msse2 -O2 -ftree-vectorize" } */
+/* { dg-require-effective-target sse2 } */
#define N 256
int b[N];
/* { dg-do run } */
/* { dg-require-effective-target dfp } */
/* { dg-options "-O -msse2 -std=gnu99" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-skip-if "" { ! { ilp32 && dfp } } { "*" } { "" } } */
/* { dg-options "-O -msse2 -std=gnu99 -mpreferred-stack-boundary=2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef int __v4si __attribute__ ((__vector_size__ (16)));
typedef float __v4sf __attribute__ ((__vector_size__ (16)));
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef long long __v2di __attribute__ ((__vector_size__ (16)));
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
/* { dg-do compile } */
/* { dg-options "-O0 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <xmmintrin.h>
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
extern void g (int *);
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O -msse2 -std=gnu99" } */
#include "sse2-check.h"
/* Test that we generate aligned load when memory is aligned. */
/* { dg-do compile } */
/* { dg-options "-O -msse2 -mtune=generic" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "movups" } } */
/* { dg-final { scan-assembler "movaps" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
typedef int __v4si __attribute__ ((__vector_size__ (16)));
/* Test for unsafe floating-point conversions. PR 36578. */
/* { dg-do run } */
/* { dg-options "-msse2 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* Test for unsafe floating-point conversions. */
/* { dg-do run } */
/* { dg-options "-msse2 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile }
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -ftree-vectorize -march=nocona" } */
+/* { dg-require-effective-target sse2 } */
typedef __SIZE_TYPE__ size_t;
extern void *malloc (size_t);
/* { dg-do run } */
/* { dg-options "-O3 -msse2" } */
/* { dg-options "-O3 -msse2 -mpe-aligned-commons" { target pe_aligned_commons } } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef short __v8hi __attribute__ ((__vector_size__ (16)));
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
/* { dg-do compile } */
/* { dg-options "-O2 -mtune=core2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef short __v8hi __attribute__ ((__vector_size__ (16)));
typedef long long __m128i __attribute__ ((__vector_size__ (16)));
/* Test for stack alignment with sibcall optimization. */
/* { dg-do compile { target { ilp32 && nonpic } } } */
/* { dg-options "-O2 -msse2 -mpreferred-stack-boundary=4 -mstackrealign" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "andl\[\\t \]*\\$-16,\[\\t \]*%\[re\]?sp" } } */
/* { dg-final { scan-assembler-not "call\[\\t \]*_?foo" } } */
/* { dg-final { scan-assembler "jmp\[\\t \]*_?foo" } } */
/* Test for stack alignment with sibcall optimization. */
/* { dg-do compile { target { ilp32 && nonpic } } } */
/* { dg-options "-O2 -msse2 -mpreferred-stack-boundary=4 -mstackrealign" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "andl\[\\t \]*\\$-16,\[\\t \]*%\[re\]?sp" } } */
/* { dg-final { scan-assembler-not "call\[\\t \]*foo" } } */
/* { dg-final { scan-assembler "jmp\[\\t \]*foo" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -mno-avx" } */
+/* { dg-require-effective-target sse2 } */
typedef long long __m256i __attribute__ ((__vector_size__ (32), __may_alias__));
/* PR middle-end/39315 */
/* { dg-do compile } */
/* { dg-options "-O -msse2 -mtune=generic" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "movups" } } */
/* { dg-final { scan-assembler-not "movlps" } } */
/* { dg-final { scan-assembler-not "movhps" } } */
/* PR middle-end/39315 */
/* { dg-do run } */
/* { dg-options "-O -msse2 -mtune=generic" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-additional-sources pr39315-check.c } */
typedef float __m128 __attribute__ ((__vector_size__ (16)));
/* PR middle-end/39315 */
/* { dg-do compile } */
/* { dg-options "-O -msse2 -mtune=generic" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler-not "movups" } } */
/* { dg-final { scan-assembler-not "movlps" } } */
/* { dg-final { scan-assembler-not "movhps" } } */
/* PR middle-end/39315 */
/* { dg-do run } */
/* { dg-options "-O -msse2 -mtune=generic" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-additional-sources pr39315-check.c } */
typedef float __m128 __attribute__ ((__vector_size__ (16)));
/* { dg-do run } */
/* { dg-options "-Os -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* PR target/39496 */
/* { dg-do compile { target { { i?86-*-linux* x86_64-*-linux* } && ilp32 } } } */
/* { dg-options "-O0 -fverbose-asm -fno-omit-frame-pointer -mtune=i686 -msse2 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
/* Verify that {foo,bar}{,2}param are all passed on the stack, using
normal calling conventions, when not optimizing. */
/* { dg-final { scan-assembler "\[^0-9-\]8\\(%ebp\\),\[^\n\]*fooparam," } } */
/* { dg-do run } */
/* { dg-options "-O2 -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run { target *-*-linux* } } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -fomit-frame-pointer -msse2 -mpush-args -mno-accumulate-outgoing-args" } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2 -ftree-vectorize" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O1 -msse2 -ftree-vectorize" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O1 -msse2 -ftree-vectorize" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O1 -msse2 -ftree-vectorize" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O1 -msse2 -ftree-vectorize" } */
+/* { dg-require-effective-target sse2 } */
#include "pr42542-3.c"
/* { dg-do run } */
+/* { dg-require-effective-target 3dnow } */
/* { dg-options "-O2 -m3dnow" } */
#include "mmx-3dnow-check.h"
/* PR target/42881 */
/* { dg-do run } */
/* { dg-options "-O0 -msse2" } */
+/* { dg-require-effective-target sse2 } */
+
#include "sse2-check.h"
static void
sse2_test (void)
/* { dg-do compile { target { { i?86-*-* x86_64-*-* } && ilp32 } } } */
/* { dg-options "-w -msse2 -Os" } */
+/* { dg-require-effective-target sse2 } */
typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
__float128 x, y;
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O3 -msse2 -fdump-rtl-csa" } */
/* { dg-skip-if "no stdint" { vxworks_kernel } } */
/* { dg-do run } */
/* { dg-options "-O1 -msse2 -mfpmath=sse -mno-accumulate-outgoing-args -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer" } */
/* { dg-options "-O1 -msse2 -mfpmath=sse -fno-omit-frame-pointer" { target *-*-mingw* *-*-cygwin* } } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* PR rtl-optimization/21239 */
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O2 -msse -msse2" } */
+/* { dg-require-effective-target sse2 } */
/* Test that the intrinsics compile with optimization. These were not
tested in i386-sse-[12].c because these builtins require immediate
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
#include <xmmintrin.h>
extern void abort();
/* { dg-do run } */
/* { dg-options "-O3 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O3 -msse2" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "punpcklbw" } } */
extern void abort();
#include <emmintrin.h>
/* This testcase caused a buffer overflow in simplify_immed_subreg. */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O0 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <xmmintrin.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2 -std=c99" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2" } */
#ifndef CHECK_H
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2" } */
#ifndef CHECK_H
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2" } */
#ifndef CHECK_H
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -mfpmath=sse -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -mfpmath=sse -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2" } */
#ifndef CHECK_H
/* { dg-do run } */
/* { dg-require-effective-target lp64 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2" } */
#ifndef CHECK_H
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define CHECK_H "sse2-check.h"
#define TEST sse2_test
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define CHECK_H "sse2-check.h"
#define TEST sse2_test
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define CHECK_H "sse2-check.h"
#define TEST sse2_test
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define CHECK_H "sse2-check.h"
#define TEST sse2_test
/* { dg-do run } */
/* { dg-options "-O2 -mtune=core2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define CHECK_H "sse2-check.h"
#define TEST sse2_test
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define CHECK_H "sse2-check.h"
#define TEST sse2_test
/* { dg-do run } */
/* { dg-options "-O2 -mtune=core2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define CHECK_H "sse2-check.h"
#define TEST sse2_test
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <emmintrin.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#ifndef CHECK_H
#define CHECK_H "sse2-check.h"
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do run } */
+/* { dg-require-effective-target sse3 } */
/* { dg-options "-O2 -msse3 -mfpmath=sse" } */
#ifndef CHECK_H
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "movss" } } */
/* { dg-final { scan-assembler "mulss" } } */
/* { dg-final { scan-assembler "movsd" } } */
/* { dg-do run } */
/* { dg-options "-O2 -msse2 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -march=k8 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "maxsd" } } */
/* { dg-final { scan-assembler "minsd" } } */
double x;
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -march=k8 -mfpmath=sse" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "maxsd" } } */
/* { dg-final { scan-assembler "minsd" } } */
double x;
/* { dg-do compile } */
/* { dg-options "-msse2 -O2" } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* Make sure we know that mysinfp returns in %xmm0. */
/* { dg-do compile } */
/* { dg-options "-msse2 -O2" } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* Make sure we know that mysinfp returns in %xmm0. */
/* { dg-do compile } */
/* { dg-options "-msse2 -O2" } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* Make sure we know that mysinfp returns in %xmm0. */
/* { dg-do compile } */
/* { dg-options "-msse2 -O2" } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* Make sure we know that mysinfp returns in %xmm0. */
/* { dg-do compile } */
/* { dg-options "-msse2 -O2" } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* Make sure we know that mysinfp returns in %xmm0. */
/* { dg-do compile } */
/* This test checks for absolute memory operands. */
/* { dg-require-effective-target nonpic } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "andpd\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "andnpd\[^\\n\]*magic" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -march=k8" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "andpd" } } */
/* { dg-final { scan-assembler "andnpd" } } */
/* { dg-final { scan-assembler "xorpd" } } */
/* { dg-do compile } */
/* This test checks for absolute memory operands. */
/* { dg-require-effective-target nonpic } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "andps\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "andnps\[^\\n\]*magic" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -march=k8" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "andps" } } */
/* { dg-final { scan-assembler "andnps" } } */
/* { dg-final { scan-assembler "xorps" } } */
/* { dg-do compile } */
/* This test checks for absolute memory operands. */
/* { dg-require-effective-target nonpic } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -msse2 -march=k8" } */
/* { dg-final { scan-assembler "pand\[^\\n\]*magic" } } */
/* { dg-final { scan-assembler "pandn\[^\\n\]*magic" } } */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "cmpunordss" } } */
/* { dg-final { scan-assembler "cmpunordps" } } */
/* { dg-final { scan-assembler "cmpunordsd" } } */
/* { dg-do run } */
/* { dg-options "-w" { target { lp64 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" { target { ilp32 } } } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
#include <stdarg.h>
/* { dg-do run } */
/* { dg-options "-w" { target { lp64 } } } */
/* { dg-options "-w -msse2 -mpreferred-stack-boundary=2" { target { ilp32 } } } */
+/* { dg-require-effective-target sse2 } */
#include "sse2-check.h"
#include <stdarg.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <stdarg.h>
#include <assert.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <stdarg.h>
#include <assert.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <stdarg.h>
#include <assert.h>
/* { dg-do run } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include <stdarg.h>
#include <assert.h>
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define vector __attribute__((vector_size(16)))
float a;
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define vector __attribute__((vector_size(16)))
int a;
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define vector __attribute__((vector_size(16)))
char a;
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define vector __attribute__((vector_size(16)))
short a;
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define vector __attribute__((vector_size(16)))
float a, b;
/* { dg-do compile } */
/* { dg-options "-O2 -msse2" } */
+/* { dg-require-effective-target sse2 } */
#define vector __attribute__((vector_size(16)))
int a, b;
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2 -mfpmath=sse" } */
double a[256];
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2 -mfpmath=sse" } */
float a[256];
/* { dg-do compile } */
/* { dg-require-effective-target ilp32 } */
+/* { dg-require-effective-target sse2 } */
/* { dg-options "-O2 -ffast-math -ftree-vectorize -msse2 --param ggc-min-expand=0 --param ggc-min-heapsize=0" } */
/* This test, tests two thing, we vectorize square root and also we don't crash due to a GC issue. */
/* { dg-do compile } */
/* { dg-options "-O2 -msse2 -ftree-vectorize -mveclibabi=svml -ffast-math" } */
+/* { dg-require-effective-target sse2 } */
double x[256];
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
unsigned int a[256];
float b[256];
/* { dg-do compile } */
/* { dg-options "-O2 -ftree-vectorize -msse2" } */
+/* { dg-require-effective-target sse2 } */
unsigned int a[256];
double b[256];
/* { dg-do run } */
/* { dg-options "-O -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "isa-check.h"
/* { dg-do run } */
/* { dg-options "-O -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "isa-check.h"
/* { dg-do run } */
/* { dg-options "-O -msse2" } */
+/* { dg-require-effective-target sse2 } */
#include "isa-check.h"
/* Test that we generate xorps when the result is used in FP math. */
/* { dg-do compile } */
/* { dg-options "-O -msse2 -mno-sse3" } */
+/* { dg-require-effective-target sse2 } */
/* { dg-final { scan-assembler "xorps\[ \t\]" { xfail *-*-* } } } */
/* { dg-final { scan-assembler-not "pxor" { xfail *-*-* } } } */
/* { dg-do compile } */
/* { dg-options "-Os -msse2" } */
+/* { dg-require-effective-target sse2 } */
typedef float __m128 __attribute__ ((vector_size (16)));
! { dg-do compile { target i?86-*-* x86_64-*-* } }
! { dg-require-effective-target ilp32 }
+! { dg-require-effective-target sse2 }
! { dg-options "-O2 -floop-parallelize-all -fprefetch-loop-arrays -msse2" }
subroutine phasad(t,i,ium)
! { dg-do compile { target i?86-*-* x86_64-*-* } }
! { dg-require-effective-target ilp32 }
+! { dg-require-effective-target sse2 }
! { dg-options "-O2 -floop-strip-mine -fprefetch-loop-arrays -msse2" }
subroutine blts ( ldmx, ldmy, v, tmp1, i, j, k)
! { dg-do compile { target i?86-*-* x86_64-*-* } }
! { dg-require-effective-target vect_double }
+! { dg-require-effective-target sse2 }
! { dg-options "-O3 -ffast-math -msse2 -fpredictive-commoning -ftree-vectorize -fdump-tree-optimized" }
-# Copyright (C) 1997, 2004, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 1997, 2004, 2007, 2008, 2010 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
} elseif { [istarget "spu-*-*"] } {
set dg-do-what-default run
} elseif { [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] } {
+ if { ![check_effective_target_sse2] } then {
+ return
+ }
lappend DEFAULT_VECTCFLAGS "-msse2"
if [check_sse2_hw_available] {
set dg-do-what-default run
-# Copyright (C) 2003, 2006, 2007, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
} elseif { [istarget "spu-*-*"] } {
set test_tree_vectorize 1
} elseif { ( [istarget "i?86-*-*"] || [istarget "x86_64-*-*"] )
+ && [check_effective_target_sse2]
&& [check_sse2_hw_available] } {
lappend vectorizer_options "-msse2"
set test_tree_vectorize 1
-# Copyright (C) 1997, 1999, 2000, 2003, 2004, 2005, 2007, 2008, 2009
+# Copyright (C) 1997, 1999, 2000, 2003, 2004, 2005, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
}
# If the target does not match the required effective target, skip this test.
+# Only apply this if the optional selector matches.
proc dg-require-effective-target { args } {
set args [lreplace $args 0 0]
- if { [llength $args] != 1 } {
- error "syntax error, need a single effective-target keyword"
+ # Verify the number of arguments. The last is optional.
+ if { [llength $args] < 1 || [llength $args] > 2 } {
+ error "syntax error, need a single effective-target keyword with optional selector"
}
+
+ # Evaluate selector if present.
+ if { [llength $args] == 2 } {
+ switch [dg-process-target [lindex $args 1]] {
+ "S" { }
+ "N" { return }
+ }
+ }
+
if { ![is-effective-target [lindex $args 0]] } {
upvar dg-do-what dg-do-what
set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
} "-O2 -mavx" ]
}
+# Return 1 if sse2 instructions can be compiled.
+proc check_effective_target_sse2 { } {
+ return [check_no_compiler_messages sse2 object {
+ typedef long long __m128i __attribute__ ((__vector_size__ (16)));
+
+ __m128i _mm_srli_si128 (__m128i __A, int __N)
+ {
+ return (__m128i)__builtin_ia32_psrldqi128 (__A, 8);
+ }
+ } "-O2 -msse2" ]
+}
+
# Return 1 if C wchar_t type is compatible with char16_t.
proc check_effective_target_wchar_t_char16_t_compatible { } {