Message ID | d09518ad-277a-b1b7-dda4-1b9782ac022c@linux.ibm.com |
---|---|
State | New |
Headers | show |
Series | rs6000: Don't ICE when compiling the __builtin_vec_xst_trunc built-in [PR109178] | expand |
On 3/17/23 5:35 PM, Peter Bergner wrote: > When we expand the __builtin_vec_xst_trunc built-in, we use the wrong mode > for the MEM operand which causes an unrecognizable insn ICE. The solution > is to use the correct TMODE mode. > > Is this ok for trunk and gcc12 assuming my bootstraps and regtests show > no regressions? The trunk bootstrap and regtests were clean. I'm still waiting on the backport testing to finish. Peter
On 3/17/23 7:17 PM, Peter Bergner wrote: > On 3/17/23 5:35 PM, Peter Bergner wrote: >> When we expand the __builtin_vec_xst_trunc built-in, we use the wrong mode >> for the MEM operand which causes an unrecognizable insn ICE. The solution >> is to use the correct TMODE mode. >> >> Is this ok for trunk and gcc12 assuming my bootstraps and regtests show >> no regressions? > > The trunk bootstrap and regtests were clean. I'm still waiting on the > backport testing to finish. ...and the gcc12 backported bootstrap and regtest were clean too. Peter
Hi Peter, on 2023/3/18 10:30, Peter Bergner wrote: > On 3/17/23 7:17 PM, Peter Bergner wrote: >> On 3/17/23 5:35 PM, Peter Bergner wrote: >>> When we expand the __builtin_vec_xst_trunc built-in, we use the wrong mode >>> for the MEM operand which causes an unrecognizable insn ICE. The solution >>> is to use the correct TMODE mode. >>> >>> Is this ok for trunk and gcc12 assuming my bootstraps and regtests show >>> no regressions? >> >> The trunk bootstrap and regtests were clean. I'm still waiting on the >> backport testing to finish. > ...and the gcc12 backported bootstrap and regtest were clean too. > Nice, OK for trunk and gcc12 branch, thanks! BR, Kewen
On 3/19/23 10:20 PM, Kewen.Lin via Gcc-patches wrote:
> Nice, OK for trunk and gcc12 branch, thanks!
Pushed to trunk and the GCC 12 release branch. Thanks.
Peter
diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc index 737a5c42bfb..83c28cd8af3 100644 --- a/gcc/config/rs6000/rs6000-builtin.cc +++ b/gcc/config/rs6000/rs6000-builtin.cc @@ -2933,7 +2933,7 @@ stv_expand_builtin (insn_code icode, rtx *op, rtx addr; if (op[1] == const0_rtx) - addr = gen_rtx_MEM (Pmode, op[2]); + addr = gen_rtx_MEM (tmode, op[2]); else { op[1] = copy_to_mode_reg (Pmode, op[1]); diff --git a/gcc/testsuite/gcc.target/powerpc/pr109178.c b/gcc/testsuite/gcc.target/powerpc/pr109178.c new file mode 100644 index 00000000000..0f6e2d6b2eb --- /dev/null +++ b/gcc/testsuite/gcc.target/powerpc/pr109178.c @@ -0,0 +1,13 @@ +/* PR target/109178 */ +/* { dg-require-effective-target int128 } */ +/* { dg-options "-O2 -mdejagnu-cpu=power10" } */ + +/* Verify we do not ICE on the following. */ + +typedef __attribute__ ((altivec (vector__))) signed __int128 v1ti_t; + +void +foo (signed int *dst, v1ti_t src) +{ + __builtin_vec_xst_trunc(src, 0, dst); +}