Summary: | nvptx: ICE with expand_GOMP_SIMT_XCHG_BFLY : in expand_insn, at optabs.c:7947 for DCmode (complex double) | ||
---|---|---|---|
Product: | gcc | Reporter: | Tobias Burnus <burnus> |
Component: | target | Assignee: | Not yet assigned to anyone <unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | vries |
Priority: | P3 | Keywords: | ice-on-valid-code |
Version: | 12.0 | ||
Target Milestone: | 12.0 | ||
Host: | Target: | nvptx | |
Build: | Known to work: | ||
Known to fail: | Last reconfirmed: | ||
Attachments: |
testcase, compile with nvptx offloading enabled with: gfortran -fopenmp -O1
Tentative patch |
Description
Tobias Burnus
2021-09-21 18:22:20 UTC
Created attachment 52524 [details]
Tentative patch
The master branch has been updated by Tom de Vries <vries@gcc.gnu.org>: https://gcc.gnu.org/g:c2e0d0c1cfb4bf29daed189b39885841ee201a65 commit r12-7425-gc2e0d0c1cfb4bf29daed189b39885841ee201a65 Author: Tom de Vries <tdevries@suse.de> Date: Mon Feb 28 16:06:54 2022 +0100 [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. Fixed by '[nvptx] Handle DCmode in define_expand "omp_simt_xchg_{bfly,idx}"'. |