Hi Tom! On 2022-03-29T14:03:22+0200, Tom de Vries via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > Say we have an sm_50 board, and we want to run a benchmark using the highest > possible march setting. > > Currently there's march=sm_30, march=sm_35, march=sm_53, but no march=sm_50. > > So, we'd need to pick march=sm_35. > > Likewise, for a test script that handles multiple boards, we'd need a mapping > from native board sm_xx to march, which might have to be updated with newer > gcc releases.
ACK. > Add an option march-map, such that we can just specify march-map=sm_50, and > let the compiler map this to the appropriate march. So, I understand that the idea is, that users should use '-march-map=[...]' instead of '-misa=[...]' or alias '-march=[...]', because the former ('-march-map=[...]') will always Do The Right Thing: pick the best available SM level for GCC/nvptx code generation (like you've said: may change with GCC releases, and users then don't have to change their receipes), and it'll never error out, in contrast to '-misa=[...]' or alias '-march=[...]' do when the requested architecture isn't directly supported: xgcc: error: unrecognized argument in option ‘-misa=sm_50’ xgcc: note: valid arguments to ‘-misa=’ are: sm_30 sm_35 sm_53 sm_70 sm_75 sm_80; did you mean ‘sm_30’? My question, though, is: why did you add a new option name '-march-map' instead of directly using '-march' for that (instead of "[nvptx] Add march alias for misa", added on the same day)? Would you accept a patch that: (a) un-aliases '-march' -> '-misa', and (b) renames '-march-map' to '-march', and (c) sets up a '-march-map' -> '-march' alias for backwards compatibility (if so desired)? Regarding (a), (b), in my opinion, there's no backwards compatibility issue there: the "new '-march'" will simply accept more options than the "old '-march'" did. Regarding (c), I'd even drop the user-visible '-march-map' option completely; I suppose nobody's really used that by now? Grüße Thomas > The option is implemented as a list of aliases, such that we have a somewhat > lengthy (17 lines in total): > ... > $ gcc --help=target > ... > -march-map=sm_30 Same as -misa=sm_30. > -march-map=sm_32 Same as -misa=sm_30. > ... > -march-map=sm_87 Same as -misa=sm_80. > -march-map=sm_90 Same as -misa=sm_80. > ... > > This implementation was chosen in the hope that it'll be easier if > we end up with some misa multilib. > > It would be nice to have the mapping list generated from an updated > nvptx-sm.def, but for now it's spelled out in nvptx.opt. > > Tested on nvptx. > > Committed to trunk. > > Thanks, > - Tom > > [nvptx] Add march-map > > gcc/ChangeLog: > > 2022-03-29 Tom de Vries <tdevr...@suse.de> > > PR target/104714 > * config/nvptx/nvptx.opt (march-map=*): Add aliases. > > gcc/testsuite/ChangeLog: > > 2022-03-29 Tom de Vries <tdevr...@suse.de> > > PR target/104714 > * gcc.target/nvptx/march-map.c: New test. > > --- > gcc/config/nvptx/nvptx.opt | 51 > ++++++++++++++++++++++++++++++ > gcc/testsuite/gcc.target/nvptx/march-map.c | 5 +++ > 2 files changed, 56 insertions(+) > > diff --git a/gcc/config/nvptx/nvptx.opt b/gcc/config/nvptx/nvptx.opt > index b5d0170e9e9..58eddeeabf4 100644 > --- a/gcc/config/nvptx/nvptx.opt > +++ b/gcc/config/nvptx/nvptx.opt > @@ -60,6 +60,57 @@ march= > Target RejectNegative Joined Alias(misa=) > Alias: > > +march-map=sm_30 > +Target RejectNegative Alias(misa=,sm_30) > + > +march-map=sm_32 > +Target RejectNegative Alias(misa=,sm_30) > + > +march-map=sm_35 > +Target RejectNegative Alias(misa=,sm_35) > + > +march-map=sm_37 > +Target RejectNegative Alias(misa=,sm_35) > + > +march-map=sm_50 > +Target RejectNegative Alias(misa=,sm_35) > + > +march-map=sm_52 > +Target RejectNegative Alias(misa=,sm_35) > + > +march-map=sm_53 > +Target RejectNegative Alias(misa=,sm_53) > + > +march-map=sm_60 > +Target RejectNegative Alias(misa=,sm_53) > + > +march-map=sm_61 > +Target RejectNegative Alias(misa=,sm_53) > + > +march-map=sm_62 > +Target RejectNegative Alias(misa=,sm_53) > + > +march-map=sm_70 > +Target RejectNegative Alias(misa=,sm_70) > + > +march-map=sm_72 > +Target RejectNegative Alias(misa=,sm_70) > + > +march-map=sm_75 > +Target RejectNegative Alias(misa=,sm_75) > + > +march-map=sm_80 > +Target RejectNegative Alias(misa=,sm_80) > + > +march-map=sm_86 > +Target RejectNegative Alias(misa=,sm_80) > + > +march-map=sm_87 > +Target RejectNegative Alias(misa=,sm_80) > + > +march-map=sm_90 > +Target RejectNegative Alias(misa=,sm_80) > + > Enum > Name(ptx_version) Type(int) > Known PTX ISA versions (for use with the -mptx= option): > diff --git a/gcc/testsuite/gcc.target/nvptx/march-map.c > b/gcc/testsuite/gcc.target/nvptx/march-map.c > new file mode 100644 > index 00000000000..00838e55fc0 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/nvptx/march-map.c > @@ -0,0 +1,5 @@ > +/* { dg-options "-march-map=sm_50" } */ > + > +#include "main.c" > + > +/* { dg-final { scan-assembler-times "\\.target\tsm_35" 1 } } */ ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955