[BZ,#18740] Fix for SSE vector math tests run on non SSE4.1 machines

Message ID CAMXFM3sTR3rng4bYsb0rPi=-YDxHrJdzhzV2CHBgtZw6=4oV1w@mail.gmail.com
State Superseded
Headers

Commit Message

Andrew Senkevich July 30, 2015, 2:27 p.m. UTC
  Hi,

we can build SSE vector math tests with -msse2 because ifunc in vector
function itself selects SSE2 or SSE4 implementation to test.

2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>

        [BZ #18740]
        * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
        float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.



--
WBR,
Andrew
  

Comments

H.J. Lu July 30, 2015, 2:42 p.m. UTC | #1
On Thu, Jul 30, 2015 at 7:27 AM, Andrew Senkevich
<andrew.n.senkevich@gmail.com> wrote:
> Hi,
>
> we can build SSE vector math tests with -msse2 because ifunc in vector
> function itself selects SSE2 or SSE4 implementation to test.
>
> 2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>
>
>         [BZ #18740]
>         * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
>         float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.
>
> diff --git a/ChangeLog b/ChangeLog
> index bcb14cf..b5c21b5 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,9 @@
> +2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>
> +
> +       [BZ #18740]
> +       * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
> +       float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.
> +
>  2015-07-30  Mike Frysinger  <vapier@gentoo.org>
>
>         * sysdeps/hppa/nptl/bits/pthreadtypes.h (pthread_mutex_t): Change
> diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile
> index e270b8a..28802dd 100644
> --- a/sysdeps/x86_64/fpu/Makefile
> +++ b/sysdeps/x86_64/fpu/Makefile
> @@ -33,12 +33,12 @@ ifeq (yes,$(config-cflags-avx512))
>  libmvec-tests += double-vlen8 float-vlen16
>  endif
>
> -double-vlen2-arch-ext-cflags = -msse4
> +double-vlen2-arch-ext-cflags = -msse2
>  double-vlen4-arch-ext-cflags = -mavx
>  double-vlen4-arch-ext2-cflags = -mavx2
>  double-vlen8-arch-ext-cflags = -mavx512f
>
> -float-vlen4-arch-ext-cflags = -msse4
> +float-vlen4-arch-ext-cflags = -msse2
>  float-vlen8-arch-ext-cflags = -mavx
>  float-vlen8-arch-ext2-cflags = -mavx2
>  float-vlen16-arch-ext-cflags = -mavx512f
>

SSE2 is the default for x86-64.  Please just remove the line.
  
Carlos O'Donell July 31, 2015, 3:47 a.m. UTC | #2
On 07/30/2015 10:42 AM, H.J. Lu wrote:
> On Thu, Jul 30, 2015 at 7:27 AM, Andrew Senkevich
> <andrew.n.senkevich@gmail.com> wrote:
>> Hi,
>>
>> we can build SSE vector math tests with -msse2 because ifunc in vector
>> function itself selects SSE2 or SSE4 implementation to test.
>>
>> 2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>
>>
>>         [BZ #18740]
>>         * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
>>         float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.
>>
>> diff --git a/ChangeLog b/ChangeLog
>> index bcb14cf..b5c21b5 100644
>> --- a/ChangeLog
>> +++ b/ChangeLog
>> @@ -1,3 +1,9 @@
>> +2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>
>> +
>> +       [BZ #18740]
>> +       * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
>> +       float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.
>> +
>>  2015-07-30  Mike Frysinger  <vapier@gentoo.org>
>>
>>         * sysdeps/hppa/nptl/bits/pthreadtypes.h (pthread_mutex_t): Change
>> diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile
>> index e270b8a..28802dd 100644
>> --- a/sysdeps/x86_64/fpu/Makefile
>> +++ b/sysdeps/x86_64/fpu/Makefile
>> @@ -33,12 +33,12 @@ ifeq (yes,$(config-cflags-avx512))
>>  libmvec-tests += double-vlen8 float-vlen16
>>  endif
>>
>> -double-vlen2-arch-ext-cflags = -msse4
>> +double-vlen2-arch-ext-cflags = -msse2
>>  double-vlen4-arch-ext-cflags = -mavx
>>  double-vlen4-arch-ext2-cflags = -mavx2
>>  double-vlen8-arch-ext-cflags = -mavx512f
>>
>> -float-vlen4-arch-ext-cflags = -msse4
>> +float-vlen4-arch-ext-cflags = -msse2
>>  float-vlen8-arch-ext-cflags = -mavx
>>  float-vlen8-arch-ext2-cflags = -mavx2
>>  float-vlen16-arch-ext-cflags = -mavx512f
>>
> 
> SSE2 is the default for x86-64.  Please just remove the line.

Is it the default for all versions we support building glibc with?

What harm is there in leaving the line there for the sake or robustness?

Cheers,
Carlos.
  
H.J. Lu July 31, 2015, 4:52 a.m. UTC | #3
On Thu, Jul 30, 2015 at 8:47 PM, Carlos O'Donell <carlos@redhat.com> wrote:
> On 07/30/2015 10:42 AM, H.J. Lu wrote:
>> On Thu, Jul 30, 2015 at 7:27 AM, Andrew Senkevich
>> <andrew.n.senkevich@gmail.com> wrote:
>>> Hi,
>>>
>>> we can build SSE vector math tests with -msse2 because ifunc in vector
>>> function itself selects SSE2 or SSE4 implementation to test.
>>>
>>> 2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>
>>>
>>>         [BZ #18740]
>>>         * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
>>>         float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.
>>>
>>> diff --git a/ChangeLog b/ChangeLog
>>> index bcb14cf..b5c21b5 100644
>>> --- a/ChangeLog
>>> +++ b/ChangeLog
>>> @@ -1,3 +1,9 @@
>>> +2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>
>>> +
>>> +       [BZ #18740]
>>> +       * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
>>> +       float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.
>>> +
>>>  2015-07-30  Mike Frysinger  <vapier@gentoo.org>
>>>
>>>         * sysdeps/hppa/nptl/bits/pthreadtypes.h (pthread_mutex_t): Change
>>> diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile
>>> index e270b8a..28802dd 100644
>>> --- a/sysdeps/x86_64/fpu/Makefile
>>> +++ b/sysdeps/x86_64/fpu/Makefile
>>> @@ -33,12 +33,12 @@ ifeq (yes,$(config-cflags-avx512))
>>>  libmvec-tests += double-vlen8 float-vlen16
>>>  endif
>>>
>>> -double-vlen2-arch-ext-cflags = -msse4
>>> +double-vlen2-arch-ext-cflags = -msse2
>>>  double-vlen4-arch-ext-cflags = -mavx
>>>  double-vlen4-arch-ext2-cflags = -mavx2
>>>  double-vlen8-arch-ext-cflags = -mavx512f
>>>
>>> -float-vlen4-arch-ext-cflags = -msse4
>>> +float-vlen4-arch-ext-cflags = -msse2
>>>  float-vlen8-arch-ext-cflags = -mavx
>>>  float-vlen8-arch-ext2-cflags = -mavx2
>>>  float-vlen16-arch-ext-cflags = -mavx512f
>>>
>>
>> SSE2 is the default for x86-64.  Please just remove the line.
>
> Is it the default for all versions we support building glibc with?

X86-64 psABI specifies SSE2 as the minimum ISA.

> What harm is there in leaving the line there for the sake or robustness?

-m64 implies -msse2.  Adding -msse2 only leads to confusion.
  
Carlos O'Donell July 31, 2015, 4:58 a.m. UTC | #4
On 07/31/2015 12:52 AM, H.J. Lu wrote:
>> What harm is there in leaving the line there for the sake or robustness?
> 
> -m64 implies -msse2.  Adding -msse2 only leads to confusion.
> 

Perfect. That answers my question.

c.
  

Patch

diff --git a/ChangeLog b/ChangeLog
index bcb14cf..b5c21b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@ 
+2015-07-30  Andrew Senkevich  <andrew.senkevich@intel.com>
+
+       [BZ #18740]
+       * sysdeps/x86_64/fpu/Makefile (double-vlen2-arch-ext-cflags,
+       float-vlen4-arch-ext-cflags): Use -msee2 instead of -msse4.
+
 2015-07-30  Mike Frysinger  <vapier@gentoo.org>

        * sysdeps/hppa/nptl/bits/pthreadtypes.h (pthread_mutex_t): Change
diff --git a/sysdeps/x86_64/fpu/Makefile b/sysdeps/x86_64/fpu/Makefile
index e270b8a..28802dd 100644
--- a/sysdeps/x86_64/fpu/Makefile
+++ b/sysdeps/x86_64/fpu/Makefile
@@ -33,12 +33,12 @@  ifeq (yes,$(config-cflags-avx512))
 libmvec-tests += double-vlen8 float-vlen16
 endif

-double-vlen2-arch-ext-cflags = -msse4
+double-vlen2-arch-ext-cflags = -msse2
 double-vlen4-arch-ext-cflags = -mavx
 double-vlen4-arch-ext2-cflags = -mavx2
 double-vlen8-arch-ext-cflags = -mavx512f

-float-vlen4-arch-ext-cflags = -msse4
+float-vlen4-arch-ext-cflags = -msse2
 float-vlen8-arch-ext-cflags = -mavx
 float-vlen8-arch-ext2-cflags = -mavx2
 float-vlen16-arch-ext-cflags = -mavx512f