nvptx: Add -misa=sm_75 and -misa=sm_80
Add new target macros TARGET_SM75 and TARGET_SM80. Add support for __builtin_tanhf, HFmode exp2/tanh and also for HFmode min/max, controlled by TARGET_SM75 and TARGET_SM80 respectively. The following has been tested on nvptx-none, hosted on x86_64-pc-linux-gnu with a "make" and "make -k check" with no new failures. gcc/ChangeLog: * config/nvptx/nvptx-opts.h (ptx_isa): PTX_ISA_SM75 and PTX_ISA_SM80 ISA levels. * config/nvptx/nvptx.opt: Add sm_75 and sm_80 to -misa. * config/nvptx/nvptx.h (TARGET_SM75, TARGET_SM80): New helper macros to conditionalize functionality on target ISA. * config/nvptx/nvptx-c.c (nvptx_cpu_cpp_builtins): Add __PTX_SM__ support for the new ISA levels. * config/nvptx/nvptx.c (nvptx_file_start): Add support for TARGET_SM75 and TARGET_SM80. * config/nvptx/nvptx.md (define_c_enum "unspec"): New UNSPEC_TANH. (define_mode_iterator HSFM): New iterator for HFmode and SFmode. (exp2hf2): New define_insn controlled by TARGET_SM75. (tanh<mode>2): New define_insn controlled by TARGET_SM75. (sminhf3, smaxhf3): New define_isnns controlled by TARGET_SM80. gcc/testsuite/ChangeLog: * gcc.target/nvptx/float16-2.c: New test case. * gcc.target/nvptx/tanh-1.c: New test case.
Showing
- gcc/config/nvptx/nvptx-c.c 5 additions, 1 deletiongcc/config/nvptx/nvptx-c.c
- gcc/config/nvptx/nvptx-opts.h 3 additions, 1 deletiongcc/config/nvptx/nvptx-opts.h
- gcc/config/nvptx/nvptx.c 5 additions, 1 deletiongcc/config/nvptx/nvptx.c
- gcc/config/nvptx/nvptx.h 2 additions, 0 deletionsgcc/config/nvptx/nvptx.h
- gcc/config/nvptx/nvptx.md 32 additions, 0 deletionsgcc/config/nvptx/nvptx.md
- gcc/config/nvptx/nvptx.opt 6 additions, 0 deletionsgcc/config/nvptx/nvptx.opt
- gcc/testsuite/gcc.target/nvptx/float16-2.c 20 additions, 0 deletionsgcc/testsuite/gcc.target/nvptx/float16-2.c
- gcc/testsuite/gcc.target/nvptx/tanh-1.c 9 additions, 0 deletionsgcc/testsuite/gcc.target/nvptx/tanh-1.c
Loading
Please register or sign in to comment