nvptx: Support '-march=sm_89'
gcc/ * config/nvptx/nvptx-sm.def: Add '89'. * config/nvptx/nvptx-gen.h: Regenerate. * config/nvptx/nvptx-gen.opt: Likewise. * config/nvptx/nvptx.cc (first_ptx_version_supporting_sm): Adjust. * config/nvptx/nvptx.opt (-march-map=sm_89, -march-map=sm_90) (march-map=sm_90a): Likewise. * config.gcc: Likewise. * doc/invoke.texi (Nvidia PTX Options): Document '-march=sm_89'. * config/nvptx/gen-multilib-matches-tests: Extend. gcc/testsuite/ * gcc.target/nvptx/march-map=sm_89.c: Adjust. * gcc.target/nvptx/march-map=sm_90.c: Likewise. * gcc.target/nvptx/march-map=sm_90a.c: Likewise. * gcc.target/nvptx/march=sm_89.c: New. libgomp/ * testsuite/libgomp.c/declare-variant-3-sm89.c: New. * testsuite/libgomp.c/declare-variant-3.h: Adjust.
This commit is contained in:
parent
2fdc8cc97e
commit
ed210c69ce
14 changed files with 116 additions and 27 deletions
|
@ -5645,7 +5645,7 @@ case "${target}" in
|
|||
sm_30 | sm_35 | sm_37 \
|
||||
| sm_52 | sm_53 \
|
||||
| sm_70 | sm_75 \
|
||||
| sm_80 )
|
||||
| sm_80 | sm_89 )
|
||||
TM_MULTILIB_CONFIG="$TM_MULTILIB_CONFIG $nvptx_multilib"
|
||||
;;
|
||||
$with_arch )
|
||||
|
|
|
@ -21,11 +21,12 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_80'
|
||||
BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_89'
|
||||
SMOID sm_30
|
||||
SMOIL sm_30 sm_80
|
||||
SMOIL sm_30 sm_89
|
||||
AEMM .=misa?sm_30
|
||||
AEMM .=misa?sm_35
|
||||
AEMM .=misa?sm_37
|
||||
|
@ -33,11 +34,12 @@ AEMM .=misa?sm_52
|
|||
AEMM .=misa?sm_53
|
||||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75,sm_80'
|
||||
BEGIN '--with-arch=sm_30', '--with-multilib-list=sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75,sm_80,sm_89'
|
||||
SMOID sm_30
|
||||
SMOIL sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80
|
||||
SMOIL sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80 sm_89
|
||||
AEMM .=misa?sm_30
|
||||
CMMC
|
||||
|
||||
|
@ -53,6 +55,7 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_35', '--with-multilib-list=sm_35,sm_30'
|
||||
|
@ -65,6 +68,7 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
|
||||
|
@ -78,6 +82,7 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
|
||||
|
@ -90,6 +95,7 @@ AEMM .=misa?sm_52
|
|||
AEMM .=misa?sm_53
|
||||
AEMM .=misa?sm_70
|
||||
AEMM misa?sm_75=misa?sm_80
|
||||
AEMM misa?sm_75=misa?sm_89
|
||||
CMMC
|
||||
|
||||
|
||||
|
@ -103,6 +109,7 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_53', '--with-multilib-list=sm_53,sm_37'
|
||||
|
@ -115,11 +122,12 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_53', '--with-multilib-list=sm_53=sm_30,sm_35,sm_37,sm_52,sm_70,sm_75,sm_80'
|
||||
BEGIN '--with-arch=sm_53', '--with-multilib-list=sm_53=sm_30,sm_35,sm_37,sm_52,sm_70,sm_75,sm_80,sm_89'
|
||||
SMOID sm_53
|
||||
SMOIL sm_53 sm_30 sm_35 sm_37 sm_52 sm_70 sm_75 sm_80
|
||||
SMOIL sm_53 sm_30 sm_35 sm_37 sm_52 sm_70 sm_75 sm_80 sm_89
|
||||
AEMM .=misa?sm_53
|
||||
CMMC
|
||||
|
||||
|
@ -135,6 +143,7 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_70', '--with-multilib-list=sm_70,sm_30'
|
||||
|
@ -147,6 +156,7 @@ AEMM misa?sm_30=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_70', '--with-multilib-list=sm_70,sm_53'
|
||||
|
@ -159,6 +169,7 @@ AEMM misa?sm_53=misa?sm_52
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_70', '--with-multilib-list=sm_70,sm_53,sm_30'
|
||||
|
@ -170,6 +181,7 @@ AEMM misa?sm_30=misa?sm_52
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
|
||||
|
@ -183,6 +195,7 @@ AEMM misa?sm_30=misa?sm_53
|
|||
AEMM misa?sm_30=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_75', '--with-multilib-list=sm_75,sm_53'
|
||||
|
@ -195,6 +208,7 @@ AEMM misa?sm_53=misa?sm_52
|
|||
AEMM misa?sm_53=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_75', '--with-multilib-list=sm_75,sm_30,sm_53'
|
||||
|
@ -206,6 +220,7 @@ AEMM misa?sm_30=misa?sm_52
|
|||
AEMM misa?sm_53=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
|
||||
|
@ -220,6 +235,7 @@ AEMM .=misa?sm_53
|
|||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_80', '--with-multilib-list=sm_80,sm_30'
|
||||
|
@ -232,6 +248,7 @@ AEMM misa?sm_30=misa?sm_53
|
|||
AEMM misa?sm_30=misa?sm_70
|
||||
AEMM misa?sm_30=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_80', '--with-multilib-list=sm_80,sm_75'
|
||||
|
@ -244,10 +261,40 @@ AEMM misa?sm_75=misa?sm_52
|
|||
AEMM misa?sm_75=misa?sm_53
|
||||
AEMM misa?sm_75=misa?sm_70
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_80', '--with-multilib-list=sm_80,sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75'
|
||||
SMOID sm_80
|
||||
SMOIL sm_80 sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75
|
||||
|
||||
BEGIN '--with-arch=sm_89', '--with-multilib-list=sm_89'
|
||||
SMOID sm_89
|
||||
SMOIL sm_89
|
||||
AEMM .=misa?sm_30
|
||||
AEMM .=misa?sm_35
|
||||
AEMM .=misa?sm_37
|
||||
AEMM .=misa?sm_52
|
||||
AEMM .=misa?sm_53
|
||||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
BEGIN '--with-arch=sm_89', '--with-multilib-list=sm_89,sm_52'
|
||||
SMOID sm_89
|
||||
SMOIL sm_89 sm_52
|
||||
AEMM misa?sm_52=misa?sm_30
|
||||
AEMM misa?sm_52=misa?sm_35
|
||||
AEMM misa?sm_52=misa?sm_37
|
||||
AEMM misa?sm_52=misa?sm_53
|
||||
AEMM misa?sm_52=misa?sm_70
|
||||
AEMM misa?sm_52=misa?sm_75
|
||||
AEMM misa?sm_52=misa?sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
||||
|
||||
BEGIN '--with-arch=sm_89', '--with-multilib-list=sm_89,sm_30,sm_35,sm_37,sm_52,sm_53,sm_70,sm_75,sm_80'
|
||||
SMOID sm_89
|
||||
SMOIL sm_89 sm_30 sm_35 sm_37 sm_52 sm_53 sm_70 sm_75 sm_80
|
||||
AEMM .=misa?sm_89
|
||||
CMMC
|
||||
|
|
|
@ -29,3 +29,4 @@
|
|||
#define TARGET_SM70 (ptx_isa_option >= PTX_ISA_SM70)
|
||||
#define TARGET_SM75 (ptx_isa_option >= PTX_ISA_SM75)
|
||||
#define TARGET_SM80 (ptx_isa_option >= PTX_ISA_SM80)
|
||||
#define TARGET_SM89 (ptx_isa_option >= PTX_ISA_SM89)
|
||||
|
|
|
@ -46,3 +46,6 @@ Enum(ptx_isa) String(sm_75) Value(PTX_ISA_SM75)
|
|||
|
||||
EnumValue
|
||||
Enum(ptx_isa) String(sm_80) Value(PTX_ISA_SM80)
|
||||
|
||||
EnumValue
|
||||
Enum(ptx_isa) String(sm_89) Value(PTX_ISA_SM89)
|
||||
|
|
|
@ -27,6 +27,7 @@ NVPTX_SM (52, NVPTX_SM_SEP)
|
|||
NVPTX_SM (53, NVPTX_SM_SEP)
|
||||
NVPTX_SM (70, NVPTX_SM_SEP)
|
||||
NVPTX_SM (75, NVPTX_SM_SEP)
|
||||
NVPTX_SM (80,)
|
||||
NVPTX_SM (80, NVPTX_SM_SEP)
|
||||
NVPTX_SM (89,)
|
||||
|
||||
#undef NVPTX_SM_SEP
|
||||
|
|
|
@ -226,6 +226,8 @@ first_ptx_version_supporting_sm (enum ptx_isa sm)
|
|||
return PTX_VERSION_6_3;
|
||||
case PTX_ISA_SM80:
|
||||
return PTX_VERSION_7_0;
|
||||
case PTX_ISA_SM89:
|
||||
return PTX_VERSION_7_8;
|
||||
default:
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
|
|
@ -112,13 +112,13 @@ march-map=sm_87
|
|||
Target RejectNegative Alias(misa=,sm_80)
|
||||
|
||||
march-map=sm_89
|
||||
Target RejectNegative Alias(misa=,sm_80)
|
||||
Target RejectNegative Alias(misa=,sm_89)
|
||||
|
||||
march-map=sm_90
|
||||
Target RejectNegative Alias(misa=,sm_80)
|
||||
Target RejectNegative Alias(misa=,sm_89)
|
||||
|
||||
march-map=sm_90a
|
||||
Target RejectNegative Alias(misa=,sm_80)
|
||||
Target RejectNegative Alias(misa=,sm_89)
|
||||
|
||||
Enum
|
||||
Name(ptx_version) Type(enum ptx_version)
|
||||
|
|
|
@ -30049,7 +30049,7 @@ Valid architecture strings are
|
|||
@samp{sm_30}, @samp{sm_35}, @samp{sm_37},
|
||||
@samp{sm_52}, @samp{sm_53},
|
||||
@samp{sm_70}, @samp{sm_75},
|
||||
and @samp{sm_80}.
|
||||
@samp{sm_80}, and @samp{sm_89}.
|
||||
The default depends on how the compiler has been configured, see
|
||||
@option{--with-arch}.
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
/* { dg-do assemble } */
|
||||
/* { dg-options {-march-map=sm_89 -mptx=_} } */
|
||||
/* { dg-additional-options -save-temps } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.0$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.target sm_80$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.8$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.target sm_89$} 1 } } */
|
||||
|
||||
#if __PTX_ISA_VERSION_MAJOR__ != 7
|
||||
#error wrong value for __PTX_ISA_VERSION_MAJOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_ISA_VERSION_MINOR__ != 0
|
||||
#if __PTX_ISA_VERSION_MINOR__ != 8
|
||||
#error wrong value for __PTX_ISA_VERSION_MINOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_SM__ != 800
|
||||
#if __PTX_SM__ != 890
|
||||
#error wrong value for __PTX_SM__
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
/* { dg-do assemble } */
|
||||
/* { dg-options {-march-map=sm_90 -mptx=_} } */
|
||||
/* { dg-additional-options -save-temps } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.0$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.target sm_80$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.8$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.target sm_89$} 1 } } */
|
||||
|
||||
#if __PTX_ISA_VERSION_MAJOR__ != 7
|
||||
#error wrong value for __PTX_ISA_VERSION_MAJOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_ISA_VERSION_MINOR__ != 0
|
||||
#if __PTX_ISA_VERSION_MINOR__ != 8
|
||||
#error wrong value for __PTX_ISA_VERSION_MINOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_SM__ != 800
|
||||
#if __PTX_SM__ != 890
|
||||
#error wrong value for __PTX_SM__
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
/* { dg-do assemble } */
|
||||
/* { dg-options {-march-map=sm_90a -mptx=_} } */
|
||||
/* { dg-additional-options -save-temps } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.0$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.target sm_80$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.8$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.target sm_89$} 1 } } */
|
||||
|
||||
#if __PTX_ISA_VERSION_MAJOR__ != 7
|
||||
#error wrong value for __PTX_ISA_VERSION_MAJOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_ISA_VERSION_MINOR__ != 0
|
||||
#if __PTX_ISA_VERSION_MINOR__ != 8
|
||||
#error wrong value for __PTX_ISA_VERSION_MINOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_SM__ != 800
|
||||
#if __PTX_SM__ != 890
|
||||
#error wrong value for __PTX_SM__
|
||||
#endif
|
||||
|
||||
|
|
19
gcc/testsuite/gcc.target/nvptx/march=sm_89.c
Normal file
19
gcc/testsuite/gcc.target/nvptx/march=sm_89.c
Normal file
|
@ -0,0 +1,19 @@
|
|||
/* { dg-do assemble } */
|
||||
/* { dg-options {-march=sm_89 -mptx=_} } */
|
||||
/* { dg-additional-options -save-temps } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.version 7\.8$} 1 } } */
|
||||
/* { dg-final { scan-assembler-times {(?n)^ \.target sm_89$} 1 } } */
|
||||
|
||||
#if __PTX_ISA_VERSION_MAJOR__ != 7
|
||||
#error wrong value for __PTX_ISA_VERSION_MAJOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_ISA_VERSION_MINOR__ != 8
|
||||
#error wrong value for __PTX_ISA_VERSION_MINOR__
|
||||
#endif
|
||||
|
||||
#if __PTX_SM__ != 890
|
||||
#error wrong value for __PTX_SM__
|
||||
#endif
|
||||
|
||||
int dummy;
|
8
libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
Normal file
8
libgomp/testsuite/libgomp.c/declare-variant-3-sm89.c
Normal file
|
@ -0,0 +1,8 @@
|
|||
/* { dg-do link { target { offload_target_nvptx } } } */
|
||||
/* { dg-additional-options -foffload=nvptx-none } */
|
||||
/* { dg-additional-options "-foffload=-misa=sm_89 -foffload=-mptx=_" } */
|
||||
/* { dg-additional-options "-foffload=-fdump-tree-optimized" } */
|
||||
|
||||
#include "declare-variant-3.h"
|
||||
|
||||
/* { dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump "= f89 \\(\\);" "optimized" } } */
|
|
@ -56,6 +56,13 @@ f80 (void)
|
|||
return 80;
|
||||
}
|
||||
|
||||
__attribute__ ((noipa))
|
||||
int
|
||||
f89 (void)
|
||||
{
|
||||
return 89;
|
||||
}
|
||||
|
||||
#pragma omp declare variant (f30) match (device={isa("sm_30")})
|
||||
#pragma omp declare variant (f35) match (device={isa("sm_35")})
|
||||
#pragma omp declare variant (f37) match (device={isa("sm_37")})
|
||||
|
@ -64,6 +71,7 @@ f80 (void)
|
|||
#pragma omp declare variant (f70) match (device={isa("sm_70")})
|
||||
#pragma omp declare variant (f75) match (device={isa("sm_75")})
|
||||
#pragma omp declare variant (f80) match (device={isa("sm_80")})
|
||||
#pragma omp declare variant (f89) match (device={isa("sm_89")})
|
||||
__attribute__ ((noipa))
|
||||
int
|
||||
f (void)
|
||||
|
|
Loading…
Add table
Reference in a new issue