[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-19 Thread Arthur Eubanks via Phabricator via cfe-commits
aeubanks added a comment.

In D85384#2226866 , @craig.topper 
wrote:

> In D85384#2226842 , @aeubanks wrote:
>
>> This doesn't work with -mtune=generic 
>> (https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html), can gcc compatibility 
>> be added?
>>
>> (https://crbug.com/1119448)
>>
>>   $ cat /tmp/a.c
>>   int main(){}
>>   $ ./build/bin/clang /tmp/a.c -o /dev/null -mtune=generic
>>   error: unknown target CPU 'generic'
>>   note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, 
>> silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, 
>> westmere, sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, 
>> core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, 
>> cannonlake, icelake-client, icelake-server, tigerlake, knl, knm, k8, 
>> athlon64, athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, 
>> amdfam10, barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, 
>> znver2, x86-64
>
> I was planning to do work supporting that as one of my next patches. But 
> didn't think about the fact that people would already doing it since the 
> option was being ignored. I'll put in a quick fix.

Thanks!
There may be codebases trying to compile under both gcc and clang. Or remnants 
from gcc days?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-19 Thread Craig Topper via Phabricator via cfe-commits
craig.topper added a comment.

In D85384#2226842 , @aeubanks wrote:

> This doesn't work with -mtune=generic 
> (https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html), can gcc compatibility 
> be added?
>
> (https://crbug.com/1119448)
>
>   $ cat /tmp/a.c
>   int main(){}
>   $ ./build/bin/clang /tmp/a.c -o /dev/null -mtune=generic
>   error: unknown target CPU 'generic'
>   note: valid target CPU values are: nocona, core2, penryn, bonnell, atom, 
> silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere, 
> sandybridge, corei7-avx, ivybridge, core-avx-i, haswell, core-avx2, 
> broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake, 
> icelake-client, icelake-server, tigerlake, knl, knm, k8, athlon64, athlon-fx, 
> opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1, 
> btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, x86-64

I was planning to do work supporting that as one of my next patches. But didn't 
think about the fact that people would already doing it since the option was 
being ignored. I'll put in a quick fix.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-19 Thread Arthur Eubanks via Phabricator via cfe-commits
aeubanks added a comment.

This doesn't work with -mtune=generic 
(https://gcc.gnu.org/onlinedocs/gcc/x86-Options.html), can gcc compatibility be 
added?

(https://crbug.com/1119448)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


Re: [PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-19 Thread Eric Christopher via cfe-commits
This would be because at that point the default cpu was that and it
probably had something to do with fallbacks.

At this point it can be changed I imagine to whatever makes sense.

On Wed, Aug 19, 2020, 1:12 AM Craig Topper via Phabricator <
revi...@reviews.llvm.org> wrote:

> craig.topper added a subscriber: ddunbar.
> craig.topper added a comment.
>
> In D85384#2225434 , @phosek
> wrote:
>
> > This seems to have broken our Mac builders with the following error:
> >
> >   -- Testing: 25226 tests, 24 workers --
> >   Testing:  0.. 10.. 20.
> >   FAIL: Clang :: Frontend/ast-main.c (6834 of 25226)
> >    TEST 'Clang :: Frontend/ast-main.c' FAILED
> 
> >   Script:
> >   --
> >   : 'RUN: at line 1';   env SDKROOT="/"
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp1.ll
> -x c - < /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.c
> >   : 'RUN: at line 2';   env SDKROOT="/"
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-ast -o
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp.ast
> /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.c
> >   : 'RUN: at line 3';   env SDKROOT="/"
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp2.ll
> -x ast - <
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp.ast
> >   : 'RUN: at line 4';   diff
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp1.ll
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp2.ll
> >   --
> >   Exit Code: 1
> >
> >   Command Output (stdout):
> >   --
> >   14c14
> >   < attributes #0 = { noinline nounwind optnone ssp uwtable
> "correctly-rounded-divide-sqrt-fp-math"="false"
> "disable-tail-calls"="false" "frame-pointer"="all"
> "less-precise-fpmad"="false" "min-legal-vector-width"="0"
> "no-infs-fp-math"="false" "no-jump-tables"="false"
> "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false"
> "no-trapping-math"="true" "stack-protector-buffer-size"="8"
> "target-cpu"="penryn"
> "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
> "tune-cpu"="core2" "unsafe-fp-math"="false" "use-soft-float"="false" }
> >   ---
> >   > attributes #0 = { noinline nounwind optnone ssp uwtable
> "correctly-rounded-divide-sqrt-fp-math"="false"
> "disable-tail-calls"="false" "frame-pointer"="all"
> "less-precise-fpmad"="false" "min-legal-vector-width"="0"
> "no-infs-fp-math"="false" "no-jump-tables"="false"
> "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false"
> "no-trapping-math"="true" "stack-protector-buffer-size"="8"
> "target-cpu"="penryn"
> "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
> "unsafe-fp-math"="false" "use-soft-float"="false" }
> >
> >   --
> >
> >   
> >   Testing:  0.. 10.. 20.
> >   FAIL: Clang :: Frontend/ast-main.cpp (6835 of 25226)
> >    TEST 'Clang :: Frontend/ast-main.cpp' FAILED
> 
> >   Script:
> >   --
> >   : 'RUN: at line 1';   env SDKROOT="/"
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp1.ll
> -x c++ - < /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.cpp
> >   : 'RUN: at line 2';   env SDKROOT="/"
> /b/s/w/ir/k/staging/llvm_build/bin/clang -fno-delayed-template-parsing
> -emit-ast -o
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp.ast
> /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.cpp
> >   : 'RUN: at line 3';   env SDKROOT="/"
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp2.ll
> -x ast - <
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp.ast
> >   : 'RUN: at line 4';   diff
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp1.ll
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp2.ll
> >   --
> >   Exit Code: 1
> >
> >   Command Output (stdout):
> >   --
> >   37,39c37,39
> >   < attributes #0 = { noinline optnone ssp uwtable
> "correctly-rounded-divide-sqrt-fp-math"="false"
> "disable-tail-calls"="false" "frame-pointer"="all"
> "less-precise-fpmad"="false" "min-legal-vector-width"="0"
> "no-infs-fp-math"="false" "no-jump-tables"="false"
> "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false"
> "no-trapping-math"="true" "stack-protector-buffer-size"="8"
> "target-cpu"="penryn"
> "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
> "tune-cpu"="core2" "unsafe-fp-math"="false" "use-soft-float"="false" }
> >   < attributes #1 = { noinline 

[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-18 Thread Craig Topper via Phabricator via cfe-commits
craig.topper added a comment.

In D85384#2225459 , @echristo wrote:

> This would be because at that point the default cpu was that and it
> probably had something to do with fallbacks.
>
> At this point it can be changed I imagine to whatever makes sense.

The issue seems to be that its somehow only being applied to one set of command 
lines. And the IR from the two sets of command lines are being differed. So I 
don't think there's any value that makes sense. Its existence is causing the 
diff somehow.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-18 Thread Craig Topper via Phabricator via cfe-commits
craig.topper added a subscriber: ddunbar.
craig.topper added a comment.

In D85384#2225434 , @phosek wrote:

> This seems to have broken our Mac builders with the following error:
>
>   -- Testing: 25226 tests, 24 workers --
>   Testing:  0.. 10.. 20.
>   FAIL: Clang :: Frontend/ast-main.c (6834 of 25226)
>    TEST 'Clang :: Frontend/ast-main.c' FAILED 
> 
>   Script:
>   --
>   : 'RUN: at line 1';   env SDKROOT="/" 
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp1.ll
>  -x c - < /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.c
>   : 'RUN: at line 2';   env SDKROOT="/" 
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-ast -o 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp.ast
>  /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.c
>   : 'RUN: at line 3';   env SDKROOT="/" 
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp2.ll
>  -x ast - < 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp.ast
>   : 'RUN: at line 4';   diff 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp1.ll
>  
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp2.ll
>   --
>   Exit Code: 1
>   
>   Command Output (stdout):
>   --
>   14c14
>   < attributes #0 = { noinline nounwind optnone ssp uwtable 
> "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
> "frame-pointer"="all" "less-precise-fpmad"="false" 
> "min-legal-vector-width"="0" "no-infs-fp-math"="false" 
> "no-jump-tables"="false" "no-nans-fp-math"="false" 
> "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" 
> "stack-protector-buffer-size"="8" "target-cpu"="penryn" 
> "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
>  "tune-cpu"="core2" "unsafe-fp-math"="false" "use-soft-float"="false" }
>   ---
>   > attributes #0 = { noinline nounwind optnone ssp uwtable 
> "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
> "frame-pointer"="all" "less-precise-fpmad"="false" 
> "min-legal-vector-width"="0" "no-infs-fp-math"="false" 
> "no-jump-tables"="false" "no-nans-fp-math"="false" 
> "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" 
> "stack-protector-buffer-size"="8" "target-cpu"="penryn" 
> "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
>  "unsafe-fp-math"="false" "use-soft-float"="false" }
>   
>   --
>   
>   
>   Testing:  0.. 10.. 20.
>   FAIL: Clang :: Frontend/ast-main.cpp (6835 of 25226)
>    TEST 'Clang :: Frontend/ast-main.cpp' FAILED 
> 
>   Script:
>   --
>   : 'RUN: at line 1';   env SDKROOT="/" 
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp1.ll
>  -x c++ - < /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.cpp
>   : 'RUN: at line 2';   env SDKROOT="/" 
> /b/s/w/ir/k/staging/llvm_build/bin/clang -fno-delayed-template-parsing 
> -emit-ast -o 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp.ast
>  /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.cpp
>   : 'RUN: at line 3';   env SDKROOT="/" 
> /b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp2.ll
>  -x ast - < 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp.ast
>   : 'RUN: at line 4';   diff 
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp1.ll
>  
> /b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp2.ll
>   --
>   Exit Code: 1
>   
>   Command Output (stdout):
>   --
>   37,39c37,39
>   < attributes #0 = { noinline optnone ssp uwtable 
> "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
> "frame-pointer"="all" "less-precise-fpmad"="false" 
> "min-legal-vector-width"="0" "no-infs-fp-math"="false" 
> "no-jump-tables"="false" "no-nans-fp-math"="false" 
> "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" 
> "stack-protector-buffer-size"="8" "target-cpu"="penryn" 
> "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
>  "tune-cpu"="core2" "unsafe-fp-math"="false" "use-soft-float"="false" }
>   < attributes #1 = { noinline nounwind optnone ssp uwtable 
> "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
> "frame-pointer"="all" "less-precise-fpmad"="false" 
> "min-legal-vector-width"="0" "no-infs-fp-math"="false" 
> "no-jump-tables"="false" "no-nans-fp-math"="false" 
> "no-signed-zeros-fp-math"="false" 

[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-18 Thread Petr Hosek via Phabricator via cfe-commits
phosek added a comment.

This seems to have broken our Mac builders with the following error:

  -- Testing: 25226 tests, 24 workers --
  Testing:  0.. 10.. 20.
  FAIL: Clang :: Frontend/ast-main.c (6834 of 25226)
   TEST 'Clang :: Frontend/ast-main.c' FAILED 

  Script:
  --
  : 'RUN: at line 1';   env SDKROOT="/" 
/b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp1.ll
 -x c - < /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.c
  : 'RUN: at line 2';   env SDKROOT="/" 
/b/s/w/ir/k/staging/llvm_build/bin/clang -emit-ast -o 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp.ast
 /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.c
  : 'RUN: at line 3';   env SDKROOT="/" 
/b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp2.ll
 -x ast - < 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp.ast
  : 'RUN: at line 4';   diff 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp1.ll
 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.c.tmp2.ll
  --
  Exit Code: 1
  
  Command Output (stdout):
  --
  14c14
  < attributes #0 = { noinline nounwind optnone ssp uwtable 
"correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
"frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" 
"no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" 
"no-signed-zeros-fp-math"="false" "no-trapping-math"="true" 
"stack-protector-buffer-size"="8" "target-cpu"="penryn" 
"target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
 "tune-cpu"="core2" "unsafe-fp-math"="false" "use-soft-float"="false" }
  ---
  > attributes #0 = { noinline nounwind optnone ssp uwtable 
"correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
"frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" 
"no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" 
"no-signed-zeros-fp-math"="false" "no-trapping-math"="true" 
"stack-protector-buffer-size"="8" "target-cpu"="penryn" 
"target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
 "unsafe-fp-math"="false" "use-soft-float"="false" }
  
  --
  
  
  Testing:  0.. 10.. 20.
  FAIL: Clang :: Frontend/ast-main.cpp (6835 of 25226)
   TEST 'Clang :: Frontend/ast-main.cpp' FAILED 

  Script:
  --
  : 'RUN: at line 1';   env SDKROOT="/" 
/b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp1.ll
 -x c++ - < /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.cpp
  : 'RUN: at line 2';   env SDKROOT="/" 
/b/s/w/ir/k/staging/llvm_build/bin/clang -fno-delayed-template-parsing 
-emit-ast -o 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp.ast
 /b/s/w/ir/k/llvm-project/clang/test/Frontend/ast-main.cpp
  : 'RUN: at line 3';   env SDKROOT="/" 
/b/s/w/ir/k/staging/llvm_build/bin/clang -emit-llvm -S -o 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp2.ll
 -x ast - < 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp.ast
  : 'RUN: at line 4';   diff 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp1.ll
 
/b/s/w/ir/k/staging/llvm_build/tools/clang/test/Frontend/Output/ast-main.cpp.tmp2.ll
  --
  Exit Code: 1
  
  Command Output (stdout):
  --
  37,39c37,39
  < attributes #0 = { noinline optnone ssp uwtable 
"correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
"frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" 
"no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" 
"no-signed-zeros-fp-math"="false" "no-trapping-math"="true" 
"stack-protector-buffer-size"="8" "target-cpu"="penryn" 
"target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
 "tune-cpu"="core2" "unsafe-fp-math"="false" "use-soft-float"="false" }
  < attributes #1 = { noinline nounwind optnone ssp uwtable 
"correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" 
"frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" 
"no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" 
"no-signed-zeros-fp-math"="false" "no-trapping-math"="true" 
"stack-protector-buffer-size"="8" "target-cpu"="penryn" 
"target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87"
 "tune-cpu"="core2" "unsafe-fp-math"="false" "use-soft-float"="false" }
  < attributes #2 = { noinline norecurse nounwind optnone ssp uwtable 

[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-18 Thread Craig Topper via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes.
Closed by commit rG4cbceb74bb56: [X86] Add basic support for -mtune command 
line option in clang (authored by craig.topper).
Herald added a project: clang.

Changed prior to commit:
  https://reviews.llvm.org/D85384?vs=283456=286409#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

Files:
  clang/include/clang/Basic/TargetOptions.h
  clang/include/clang/Driver/Options.td
  clang/lib/Basic/Targets.cpp
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/test/Misc/target-invalid-cpu-note.c

Index: clang/test/Misc/target-invalid-cpu-note.c
===
--- clang/test/Misc/target-invalid-cpu-note.c
+++ clang/test/Misc/target-invalid-cpu-note.c
@@ -8,6 +8,11 @@
 // AARCH64: note: valid target CPU values are:
 // AARCH64-SAME: cortex-a35,
 
+// RUN: not %clang_cc1 -triple arm64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_AARCH64
+// TUNE_AARCH64: error: unknown target CPU 'not-a-cpu'
+// TUNE_AARCH64: note: valid target CPU values are:
+// TUNE_AARCH64-SAME: cortex-a35,
+
 // RUN: not %clang_cc1 -triple i386--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix X86
 // X86: error: unknown target CPU 'not-a-cpu'
 // X86: note: valid target CPU values are: i386, i486, winchip-c6, winchip2, c3,
@@ -32,6 +37,30 @@
 // X86_64-SAME: athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1,
 // X86_64-SAME: btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, x86-64
 
+// RUN: not %clang_cc1 -triple i386--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_X86
+// TUNE_X86: error: unknown target CPU 'not-a-cpu'
+// TUNE_X86: note: valid target CPU values are: i386, i486, winchip-c6, winchip2, c3,
+// TUNE_X86-SAME: i586, pentium, pentium-mmx, pentiumpro, i686, pentium2, pentium3,
+// TUNE_X86-SAME: pentium3m, pentium-m, c3-2, yonah, pentium4, pentium4m, prescott,
+// TUNE_X86-SAME: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont,
+// TUNE_X86-SAME: nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge,
+// TUNE_X86-SAME: core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512,
+// TUNE_X86-SAME: skx, cascadelake, cooperlake, cannonlake, icelake-client, icelake-server, tigerlake, knl, knm, lakemont, k6, k6-2, k6-3,
+// TUNE_X86-SAME: athlon, athlon-tbird, athlon-xp, athlon-mp, athlon-4, k8, athlon64,
+// TUNE_X86-SAME: athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10,
+// TUNE_X86-SAME: barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2,
+// TUNE_X86-SAME: x86-64, geode
+
+// RUN: not %clang_cc1 -triple x86_64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_X86_64
+// TUNE_X86_64: error: unknown target CPU 'not-a-cpu'
+// TUNE_X86_64: note: valid target CPU values are: nocona, core2, penryn, bonnell,
+// TUNE_X86_64-SAME: atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere,
+// TUNE_X86_64-SAME: sandybridge, corei7-avx, ivybridge, core-avx-i, haswell,
+// TUNE_X86_64-SAME: core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake,
+// TUNE_X86_64-SAME: icelake-client, icelake-server, tigerlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3,
+// TUNE_X86_64-SAME: athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1,
+// TUNE_X86_64-SAME: btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, x86-64
+
 // RUN: not %clang_cc1 -triple nvptx--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix NVPTX
 // NVPTX: error: unknown target CPU 'not-a-cpu'
 // NVPTX: note: valid target CPU values are: sm_20, sm_21, sm_30, sm_32, sm_35,
Index: clang/lib/Frontend/CompilerInvocation.cpp
===
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -3658,6 +3658,7 @@
   Opts.EABIVersion = EABIVersion;
   }
   Opts.CPU = std::string(Args.getLastArgValue(OPT_target_cpu));
+  Opts.TuneCPU = std::string(Args.getLastArgValue(OPT_tune_cpu));
   Opts.FPMath = std::string(Args.getLastArgValue(OPT_mfpmath));
   Opts.FeaturesAsWritten = Args.getAllArgValues(OPT_target_feature);
   Opts.LinkerVersion =
Index: clang/lib/Driver/ToolChains/Clang.cpp
===
--- clang/lib/Driver/ToolChains/Clang.cpp
+++ clang/lib/Driver/ToolChains/Clang.cpp
@@ -39,6 +39,7 @@
 #include "llvm/Support/Compiler.h"
 #include "llvm/Support/Compression.h"
 #include "llvm/Support/FileSystem.h"
+#include "llvm/Support/Host.h"
 #include "llvm/Support/Path.h"
 #include "llvm/Support/Process.h"
 #include 

[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-18 Thread Craig Topper via Phabricator via cfe-commits
craig.topper added inline comments.



Comment at: clang/test/Misc/target-invalid-cpu-note.c:49
+
+// RUN: not %clang_cc1 -triple x86_64--- -tune-cpu not-a-cpu -fsyntax-only %s 
2>&1 | FileCheck %s --check-prefix TUNE_X86_64
+// TUNE_X86_64: error: unknown target CPU 'not-a-cpu'

efriedma wrote:
> Should we have a test for tune-cpu for some non-x86 target?  Or are we happy 
> to just assume this works correctly because we already have coverage for 
> target-cpu?
I copied the AARCH64 test above an added a -tune-cpu version of it. That will 
be included with my commit


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-18 Thread Eli Friedman via Phabricator via cfe-commits
efriedma accepted this revision.
efriedma added a comment.
This revision is now accepted and ready to land.

LGTM with one minor comment




Comment at: clang/test/Misc/target-invalid-cpu-note.c:49
+
+// RUN: not %clang_cc1 -triple x86_64--- -tune-cpu not-a-cpu -fsyntax-only %s 
2>&1 | FileCheck %s --check-prefix TUNE_X86_64
+// TUNE_X86_64: error: unknown target CPU 'not-a-cpu'

Should we have a test for tune-cpu for some non-x86 target?  Or are we happy to 
just assume this works correctly because we already have coverage for 
target-cpu?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-18 Thread Craig Topper via Phabricator via cfe-commits
craig.topper added inline comments.



Comment at: clang/lib/CodeGen/CodeGenModule.cpp:1752
   StringRef TargetCPU = getTarget().getTargetOpts().CPU;
+  StringRef TuneCPU = getTarget().getTargetOpts().TuneCPU;
   std::vector Features;

erichkeane wrote:
> craig.topper wrote:
> > erichkeane wrote:
> > > Does this lead to a situation in 'attribute-target' where we have a 
> > > 'tune' setting to a processor that is 'before' the 'TargetCPU'?  Should 
> > > this enforce some sort of hierarchy to make sure we only do it if it is 
> > > 'newer' (read, more feature rich) than the target?
> > TuneCPU is only supposed to control microarchitectural things like should i 
> > prefer an "ADD 1" over "INC" instruction. Or should I use more immediate 
> > controlled shuffles over a single variable controlled shuffle. As such that 
> > things we get from tune don't have a straightforward relationship with 
> > architectural features.
> My concern is more.  Say:
> 
> TargetCPU == "nahalem"
> 
> Does it make sense for 
> TuneCPU == "pentium"?
> 
> It would seem to me that is pretty nonsensical.  I've definitely seen the 
> reverse (in within x86_64 at least, where Tune is newer than Target), but 
> tuning for an older CPU seems like nonsense.
From a behavior standpoint, its not any different than what this does today

-march=pentium -msse4.2 -mpopcnt -mfxsr 


I don't think gcc enforces any ordering.  



CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-17 Thread Erich Keane via Phabricator via cfe-commits
erichkeane added inline comments.



Comment at: clang/lib/CodeGen/CodeGenModule.cpp:1752
   StringRef TargetCPU = getTarget().getTargetOpts().CPU;
+  StringRef TuneCPU = getTarget().getTargetOpts().TuneCPU;
   std::vector Features;

craig.topper wrote:
> erichkeane wrote:
> > Does this lead to a situation in 'attribute-target' where we have a 'tune' 
> > setting to a processor that is 'before' the 'TargetCPU'?  Should this 
> > enforce some sort of hierarchy to make sure we only do it if it is 'newer' 
> > (read, more feature rich) than the target?
> TuneCPU is only supposed to control microarchitectural things like should i 
> prefer an "ADD 1" over "INC" instruction. Or should I use more immediate 
> controlled shuffles over a single variable controlled shuffle. As such that 
> things we get from tune don't have a straightforward relationship with 
> architectural features.
My concern is more.  Say:

TargetCPU == "nahalem"

Does it make sense for 
TuneCPU == "pentium"?

It would seem to me that is pretty nonsensical.  I've definitely seen the 
reverse (in within x86_64 at least, where Tune is newer than Target), but 
tuning for an older CPU seems like nonsense.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-17 Thread Craig Topper via Phabricator via cfe-commits
craig.topper added inline comments.



Comment at: clang/lib/CodeGen/CodeGenModule.cpp:1752
   StringRef TargetCPU = getTarget().getTargetOpts().CPU;
+  StringRef TuneCPU = getTarget().getTargetOpts().TuneCPU;
   std::vector Features;

erichkeane wrote:
> Does this lead to a situation in 'attribute-target' where we have a 'tune' 
> setting to a processor that is 'before' the 'TargetCPU'?  Should this enforce 
> some sort of hierarchy to make sure we only do it if it is 'newer' (read, 
> more feature rich) than the target?
TuneCPU is only supposed to control microarchitectural things like should i 
prefer an "ADD 1" over "INC" instruction. Or should I use more immediate 
controlled shuffles over a single variable controlled shuffle. As such that 
things we get from tune don't have a straightforward relationship with 
architectural features.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-17 Thread Erich Keane via Phabricator via cfe-commits
erichkeane added a comment.

1 comment, otherwise seems alright to me.




Comment at: clang/lib/CodeGen/CodeGenModule.cpp:1752
   StringRef TargetCPU = getTarget().getTargetOpts().CPU;
+  StringRef TuneCPU = getTarget().getTargetOpts().TuneCPU;
   std::vector Features;

Does this lead to a situation in 'attribute-target' where we have a 'tune' 
setting to a processor that is 'before' the 'TargetCPU'?  Should this enforce 
some sort of hierarchy to make sure we only do it if it is 'newer' (read, more 
feature rich) than the target?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-17 Thread Craig Topper via Phabricator via cfe-commits
craig.topper added a comment.

Ping


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D85384/new/

https://reviews.llvm.org/D85384

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D85384: [X86] Add basic support for -mtune command line option in clang

2020-08-05 Thread Craig Topper via Phabricator via cfe-commits
craig.topper created this revision.
craig.topper added reviewers: echristo, RKSimon, spatel, efriedma.
Herald added a subscriber: dang.
craig.topper requested review of this revision.

Building on the backend support from D85165 . 
This parses the command line option in the driver, passes it on to CC1 and adds 
a function attribute.

Still need to support tune on the target attribute.
Need to use "generic" as the tuning by default. But need to change generic in 
the backend first.
Need to set tune if march is specified and mtune isn't.
May need to disable getHostCPUName's ability to guess CPU name from features 
when it doesn't have a family/model match for mtune=native. That's what gcc 
appears to do.


https://reviews.llvm.org/D85384

Files:
  clang/include/clang/Basic/TargetOptions.h
  clang/include/clang/Driver/Options.td
  clang/lib/Basic/Targets.cpp
  clang/lib/CodeGen/CodeGenModule.cpp
  clang/lib/Driver/ToolChains/Clang.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/test/CodeGen/tune-cpu.c
  clang/test/Driver/x86-mtune.c
  clang/test/Misc/target-invalid-cpu-note.c

Index: clang/test/Misc/target-invalid-cpu-note.c
===
--- clang/test/Misc/target-invalid-cpu-note.c
+++ clang/test/Misc/target-invalid-cpu-note.c
@@ -32,6 +32,30 @@
 // X86_64-SAME: athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1,
 // X86_64-SAME: btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, x86-64
 
+// RUN: not %clang_cc1 -triple i386--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_X86
+// TUNE_X86: error: unknown target CPU 'not-a-cpu'
+// TUNE_X86: note: valid target CPU values are: i386, i486, winchip-c6, winchip2, c3,
+// TUNE_X86-SAME: i586, pentium, pentium-mmx, pentiumpro, i686, pentium2, pentium3,
+// TUNE_X86-SAME: pentium3m, pentium-m, c3-2, yonah, pentium4, pentium4m, prescott,
+// TUNE_X86-SAME: nocona, core2, penryn, bonnell, atom, silvermont, slm, goldmont, goldmont-plus, tremont,
+// TUNE_X86-SAME: nehalem, corei7, westmere, sandybridge, corei7-avx, ivybridge,
+// TUNE_X86-SAME: core-avx-i, haswell, core-avx2, broadwell, skylake, skylake-avx512,
+// TUNE_X86-SAME: skx, cascadelake, cooperlake, cannonlake, icelake-client, icelake-server, tigerlake, knl, knm, lakemont, k6, k6-2, k6-3,
+// TUNE_X86-SAME: athlon, athlon-tbird, athlon-xp, athlon-mp, athlon-4, k8, athlon64,
+// TUNE_X86-SAME: athlon-fx, opteron, k8-sse3, athlon64-sse3, opteron-sse3, amdfam10,
+// TUNE_X86-SAME: barcelona, btver1, btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2,
+// TUNE_X86-SAME: x86-64, geode
+
+// RUN: not %clang_cc1 -triple x86_64--- -tune-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix TUNE_X86_64
+// TUNE_X86_64: error: unknown target CPU 'not-a-cpu'
+// TUNE_X86_64: note: valid target CPU values are: nocona, core2, penryn, bonnell,
+// TUNE_X86_64-SAME: atom, silvermont, slm, goldmont, goldmont-plus, tremont, nehalem, corei7, westmere,
+// TUNE_X86_64-SAME: sandybridge, corei7-avx, ivybridge, core-avx-i, haswell,
+// TUNE_X86_64-SAME: core-avx2, broadwell, skylake, skylake-avx512, skx, cascadelake, cooperlake, cannonlake,
+// TUNE_X86_64-SAME: icelake-client, icelake-server, tigerlake, knl, knm, k8, athlon64, athlon-fx, opteron, k8-sse3,
+// TUNE_X86_64-SAME: athlon64-sse3, opteron-sse3, amdfam10, barcelona, btver1,
+// TUNE_X86_64-SAME: btver2, bdver1, bdver2, bdver3, bdver4, znver1, znver2, x86-64
+
 // RUN: not %clang_cc1 -triple nvptx--- -target-cpu not-a-cpu -fsyntax-only %s 2>&1 | FileCheck %s --check-prefix NVPTX
 // NVPTX: error: unknown target CPU 'not-a-cpu'
 // NVPTX: note: valid target CPU values are: sm_20, sm_21, sm_30, sm_32, sm_35,
Index: clang/test/Driver/x86-mtune.c
===
--- /dev/null
+++ clang/test/Driver/x86-mtune.c
@@ -0,0 +1,5 @@
+// Ensure we support the -mtune flag.
+//
+// RUN: %clang -target x86_64-unknown-unknown -c -### %s -mtune=nocona 2>&1 \
+// RUN:   | FileCheck %s -check-prefix=nocona
+// nocona: "-tune-cpu" "nocona"
Index: clang/test/CodeGen/tune-cpu.c
===
--- /dev/null
+++ clang/test/CodeGen/tune-cpu.c
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -triple i686-linux-gnu -target-cpu i686 -tune-cpu nehalem -emit-llvm %s -o - | FileCheck %s
+
+int baz(int a) { return 4; }
+
+// CHECK: baz{{.*}} #0
+// CHECK: #0 = {{.*}}"target-cpu"="i686" "target-features"="+cx8,+x87" "tune-cpu"="nehalem"
Index: clang/lib/Frontend/CompilerInvocation.cpp
===
--- clang/lib/Frontend/CompilerInvocation.cpp
+++ clang/lib/Frontend/CompilerInvocation.cpp
@@ -3649,6 +3649,7 @@
   Opts.EABIVersion = EABIVersion;
   }
   Opts.CPU = std::string(Args.getLastArgValue(OPT_target_cpu));
+  Opts.TuneCPU = std::string(Args.getLastArgValue(OPT_tune_cpu));
   Opts.FPMath =