aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2022-02-28 16:06:54 +0100
committerTom de Vries <tdevries@suse.de>2022-03-01 08:58:36 +0100
commitc2e0d0c1cfb4bf29daed189b39885841ee201a65 (patch)
tree375166c8b615804bbd4723656f2339f5058c8c49 /gcc/doc
parentd59d13c89503baf92d14b04c05708a6296916fad (diff)
downloadgcc-c2e0d0c1cfb4bf29daed189b39885841ee201a65.zip
gcc-c2e0d0c1cfb4bf29daed189b39885841ee201a65.tar.gz
gcc-c2e0d0c1cfb4bf29daed189b39885841ee201a65.tar.bz2
[nvptx] Handle DCmode in define_expand "omp_simt_xchg_{bfly,idx}"
For a test-case doing an openmp target simd reduction on a complex double: ... DOUBLE COMPLEX :: counter_N0 ... !$OMP TARGET SIMD reduction(+: counter_N0) ... we run into: ... during RTL pass: expand b.f90: In function ‘MAIN__._omp_fn.0’: b.f90:23:32: internal compiler error: in expand_insn, at optabs.cc:8029 23 | counter_N0 = counter_N0 + 1. | ^ 0x10f1cd3 expand_insn(insn_code, unsigned int, expand_operand*) gcc/optabs.cc:8029 0xeac435 expand_GOMP_SIMT_XCHG_BFLY gcc/internal-fn.cc:375 ... Fix this by handling DCmode and CDImode in define_expand "omp_simt_xchg_{bfly,idx}". Tested on x86_64 with nvptx accelerator. gcc/ChangeLog: 2022-02-28 Tom de Vries <tdevries@suse.de> PR target/102429 * config/nvptx/nvptx.cc (nvptx_gen_shuffle): Handle DCmode and CDImode. * config/nvptx/nvptx.md (define_predicate "nvptx_register_or_complex_di_df_register_operand"): New predicate. (define_expand "omp_simt_xchg_bfly", define_expand "omp_simt_xchg_idx"): Use nvptx_register_or_complex_di_df_register_operand.
Diffstat (limited to 'gcc/doc')
0 files changed, 0 insertions, 0 deletions