[doc, testsuite, libgfortran] Avoid use of SSE/SSE2/SSE3 on Solaris 8/9 x86

Uros Bizjak ubizjak@gmail.com
Sat Jul 17 11:23:00 GMT 2010


On Fri, Jul 16, 2010 at 4:38 PM, Rainer Orth
<ro@cebitec.uni-bielefeld.de> wrote:
> Uros Bizjak <ubizjak@gmail.com> writes:
>
>>>> BTW: I think you will need to change all *-check.h checks (minus
>>>> MMX/3dNOW! ones) to prevent tests from touching xmm regs.
>>>
>>> For complete correctness, you're certainly right.  On the other hand,
>>> Solaris 8 and 9 won't run on very recent processors, so I've only
>>> changed those *-check.h tests that exhibited execution failures.  I can
>>> of course change all the *-check.h checks for generality if you prefer.
>>
>> Ah, I see. I'll leave this to you. Perhaps you could put a comment in
>> net sse-os-support.h, why partial check is OK.
>
> I'll restrict the changes to sse{,2,3}-check.h since I cannot check
> anything else except for syntactic validity, but I've added an
> appropriate comment before sse_os_support ().
>
> Here's the patch I've come up with.  __get_cpuid () is now only used in
> gcc.dg/compat/vector-[12]b_main.c for AVX support.  Someone with the
> necessary hardware could change this to use dg-require-effective-target
> avx_runtime instead.

I will look at these.
BTW: There is no AVX hardware available yet, but you can play with
Intel SDE [1].

> A bootstrap on i386-pc-solaris2.10 with GNU as succeeded without
> regressions, so there are no syntax errors.  A i386-pc-solaris2.8
> bootstrap is still running.
>
> Ok for mainline and the branches if that passes?
>
> Thanks.
>        Rainer
>
>
> 2010-06-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
>
>        gcc:
>        * doc/sourcebuild.texi (Effective-Target Keywords): Document
>        sse_runtime, sse2_runtime.
>
>        gcc/testsuite:
>        * lib/target-supports.exp (check_sse_os_support_available): New
>        proc.
>        (check_sse_hw_available): New proc.
>        (check_effective_target_sse_runtime): New proc.
>        (check_effective_target_sse2_runtime): New proc.
>        * lib/fortran-torture.exp (get-fortran-torture-options): Only add
>        -msse2 if check_sse_os_support_available.
>        * g++.dg/vect/vect.exp: Only run -msse2 tests if
>        check_sse_os_support_available.
>        * gcc.dg/vect/vect.exp: Likewise.
>        * gfortran.dg/vect/vect.exp: Likewise.
>        * gcc.target/i386/sol2-check: Renamed to ...
>        * gcc.target/i386/sse-os-support.h: ... this.
>        (sol2_check): Renamed to ...
>        (sse_os_support): ... this.
>        Only test movss with xmm registers.
>        * gcc.target/i386/sse-check.h: Reflect new header and function names.
>        Removed ILL_INSN, ILL_INSN_LEN.
>        * gcc.target/i386/sse2-check.h: Likewise.
>        * gcc.target/i386/sse3-check.h: Likewise.
>        * gcc.dg/pr40550.c: Use dg-require-effective-target sse_runtime.
>        Removed cpuid.h, __get_cpuid test.
>        * g++.dg/other/i386-1.C: Use dg-require-effective-target sse2_runtime.
>        Removed cpuid.h, __get_cpuid test.
>        * 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/pr36584.c: Likewise.
>        * gcc.dg/pr37544.c: Likewise.
>        * gcc.dg/torture/pr16104-1.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/torture/pr35771.h: Removed cpuid.h, __get_cpuid test.
>        * gcc.dg/torture/pr35771-1.c: Use dg-require-effective-target
>        sse2_runtime.
>        * gcc.dg/torture/pr35771-2.c: Likewise.
>        * gcc.dg/torture/pr35771-3.c: Likewise.
>        * gcc.target/i386/pr39315-2.c: Likewise.
>        * gcc.target/i386/pr39315-4.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/vperm-v4sf-1.c: Use dg-require-effective-target
>        sse_runtime.

This is OK for mainline SVN and branches.

[1] http://software.intel.com/en-us/articles/intel-software-development-emulator/

Thanks,
Uros.



More information about the Gcc-patches mailing list