r233223 - Make the msse4/mno-sse4 flags aliases of the maximum sse values

David Blaikie dblaikie at gmail.com
Fri Mar 27 10:32:53 PDT 2015


On Fri, Mar 27, 2015 at 10:08 AM, Eric Christopher <echristo at gmail.com>
wrote:

>
>
> On Fri, Mar 27, 2015 at 9:48 AM David Blaikie <dblaikie at gmail.com> wrote:
>
>> On Wed, Mar 25, 2015 at 3:09 PM, Eric Christopher <echristo at gmail.com>
>> wrote:
>>
>>> Author: echristo
>>> Date: Wed Mar 25 17:09:26 2015
>>> New Revision: 233223
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=233223&view=rev
>>> Log:
>>> Make the msse4/mno-sse4 flags aliases of the maximum sse values
>>> they enable/disable.
>>>
>>> This fixes two things:
>>>
>>> a) sse4 isn't actually a target feature, don't treat it as one.
>>> b) we weren't correctly disabling sse4.1 when we'd pass -mno-sse4
>>>    after enabling it, thus passing preprocessor directives and
>>>    (soon) passing the function attribute as well when we shouldn't.
>>>
>>
>> Where's the logic to treat -msse4.2 as also disabling sse4.1? Currently
>> passing -msse4 -mno-sse4 produces:
>>
>> "-target-feature" "+sse4.2" "-target-feature" "-sse4.1"
>>
>> Is that the right thing, or would I end up getting sse4.2 behavior still?
>>
>>
>
> Sadly it's the right thing and one of the things that the test makes sure
> about. The followup comment that Rafael asked for explains it in more
> detail.
>

Ah, rightio - sorry for the noise.


>
> -eric
>
>
>>
>>> Modified:
>>>     cfe/trunk/include/clang/Driver/Options.td
>>>     cfe/trunk/lib/Basic/Targets.cpp
>>>     cfe/trunk/test/Driver/x86_features.c
>>>     cfe/trunk/test/Preprocessor/x86_target_features.c
>>>
>>> Modified: cfe/trunk/include/clang/Driver/Options.td
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=233223&r1=233222&r2=233223&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/include/clang/Driver/Options.td (original)
>>> +++ cfe/trunk/include/clang/Driver/Options.td Wed Mar 25 17:09:26 2015
>>> @@ -1185,9 +1185,9 @@ def mno_stackrealign : Flag<["-"], "mno-
>>>  def mno_sse2 : Flag<["-"], "mno-sse2">, Group<m_x86_Features_Group>;
>>>  def mno_sse3 : Flag<["-"], "mno-sse3">, Group<m_x86_Features_Group>;
>>>  def mno_sse4a : Flag<["-"], "mno-sse4a">, Group<m_x86_Features_Group>;
>>> -def mno_sse4 : Flag<["-"], "mno-sse4">, Group<m_x86_Features_Group>;
>>>  def mno_sse4_1 : Flag<["-"], "mno-sse4.1">, Group<m_x86_Features_Group>;
>>>  def mno_sse4_2 : Flag<["-"], "mno-sse4.2">, Group<m_x86_Features_Group>;
>>> +def mno_sse4 : Flag<["-"], "mno-sse4">, Alias<mno_sse4_1>;
>>>  def mno_sse : Flag<["-"], "mno-sse">, Group<m_x86_Features_Group>;
>>>  def mno_ssse3 : Flag<["-"], "mno-ssse3">, Group<m_x86_Features_Group>;
>>>  def mno_aes : Flag<["-"], "mno-aes">, Group<m_x86_Features_Group>;
>>> @@ -1310,9 +1310,9 @@ def mimplicit_float : Flag<["-"], "mimpl
>>>  def msse2 : Flag<["-"], "msse2">, Group<m_x86_Features_Group>;
>>>  def msse3 : Flag<["-"], "msse3">, Group<m_x86_Features_Group>;
>>>  def msse4a : Flag<["-"], "msse4a">, Group<m_x86_Features_Group>;
>>> -def msse4 : Flag<["-"], "msse4">, Group<m_x86_Features_Group>;
>>>  def msse4_1 : Flag<["-"], "msse4.1">, Group<m_x86_Features_Group>;
>>>  def msse4_2 : Flag<["-"], "msse4.2">, Group<m_x86_Features_Group>;
>>> +def msse4 : Flag<["-"], "msse4">, Alias<msse4_2>;
>>>  def msse : Flag<["-"], "msse">, Group<m_x86_Features_Group>;
>>>  def mssse3 : Flag<["-"], "mssse3">, Group<m_x86_Features_Group>;
>>>  def maes : Flag<["-"], "maes">, Group<m_x86_Features_Group>;
>>>
>>> Modified: cfe/trunk/lib/Basic/Targets.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=233223&r1=233222&r2=233223&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/lib/Basic/Targets.cpp (original)
>>> +++ cfe/trunk/lib/Basic/Targets.cpp Wed Mar 25 17:09:26 2015
>>> @@ -2580,11 +2580,6 @@ void X86TargetInfo::setXOPLevel(llvm::St
>>>
>>>  void X86TargetInfo::setFeatureEnabledImpl(llvm::StringMap<bool>
>>> &Features,
>>>                                            StringRef Name, bool Enabled)
>>> {
>>> -  // FIXME: This *really* should not be here.  We need some way of
>>> translating
>>> -  // options into llvm subtarget features.
>>> -  if (Name == "sse4")
>>> -    Name = "sse4.2";
>>> -
>>>    Features[Name] = Enabled;
>>>
>>>    if (Name == "mmx") {
>>>
>>> Modified: cfe/trunk/test/Driver/x86_features.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/x86_features.c?rev=233223&r1=233222&r2=233223&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/Driver/x86_features.c (original)
>>> +++ cfe/trunk/test/Driver/x86_features.c Wed Mar 25 17:09:26 2015
>>> @@ -1,5 +1,5 @@
>>>  // RUN: %clang -target i386-unknown-unknown -### -S %s -msse -msse4
>>> -mno-sse -mno-mmx -msse  2>&1 | FileCheck %s
>>> -// CHECK: "pentium4" "-target-feature" "+sse4" "-target-feature" "-mmx"
>>> "-target-feature" "+sse"
>>> +// CHECK: "pentium4" "-target-feature" "+sse4.2" "-target-feature"
>>> "-mmx" "-target-feature" "+sse"
>>>  // Note that we filter out all but the last -m(no)sse.
>>>
>>>  // Test that we don't produce an error with -mieee-fp.
>>>
>>> Modified: cfe/trunk/test/Preprocessor/x86_target_features.c
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/x86_target_features.c?rev=233223&r1=233222&r2=233223&view=diff
>>>
>>> ==============================================================================
>>> --- cfe/trunk/test/Preprocessor/x86_target_features.c (original)
>>> +++ cfe/trunk/test/Preprocessor/x86_target_features.c Wed Mar 25
>>> 17:09:26 2015
>>> @@ -9,6 +9,10 @@
>>>  // SSE4: #define __SSE__ 1
>>>  // SSE4: #define __SSSE3__ 1
>>>
>>> +// RUN: %clang -target i386-unknown-unknown -march=core2 -msse4.1
>>> -mno-sse4 -x c -E -dM -o - %s | FileCheck --check-prefix=NOSSE4 %s
>>> +
>>> +// NOSSE4-NOT: #define __SSE4_1__ 1
>>> +
>>>  // RUN: %clang -target i386-unknown-unknown -march=core2 -msse4
>>> -mno-sse2 -x c -E -dM -o - %s | FileCheck --check-prefix=SSE %s
>>>
>>>  // SSE-NOT: #define __SSE2_MATH__ 1
>>>
>>>
>>> _______________________________________________
>>> cfe-commits mailing list
>>> cfe-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20150327/0cc213af/attachment.html>


More information about the cfe-commits mailing list