This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
Re: target/5378: ICE: unrecognizable insn prefetch
- From: Janis Johnson <janis187 at us dot ibm dot com>
- To: nobody at gcc dot gnu dot org
- Cc: gcc-prs at gcc dot gnu dot org,
- Date: 14 Jan 2002 21:06:02 -0000
- Subject: Re: target/5378: ICE: unrecognizable insn prefetch
- Reply-to: Janis Johnson <janis187 at us dot ibm dot com>
The following reply was made to PR target/5378; it has been noted by GNATS.
From: Janis Johnson <janis187@us.ibm.com>
To: ritzert@t-online.de
Cc: gcc-gnats@gcc.gnu.org, rth@redhat.com
Subject: Re: target/5378: ICE: unrecognizable insn prefetch
Date: Mon, 14 Jan 2002 13:03:25 -0800
On Mon, Jan 14, 2002 at 06:36:40PM -0000, ritzert@t-online.de wrote:
>
> >Number: 5378
> >Synopsis: ICE: unrecognizable insn prefetch
> >Arrival-Date: Mon Jan 14 10:46:02 PST 2002
> >Originator: ritzert@t-online.de
> >Release: gcc version 3.1 20020114 (experimental)
> Linux 2.4.16, Athlon
> >Description:
> # gcc -c a.c -fprefetch-loop-arrays -march=athlon -O2
> a.c: In function `KDE_IceOpenConnection':
> a.c:15: unrecognizable insn:
> (insn 154 81 31 (prefetch (plus:SI (reg/f:SI 72)
> (const_int 384 [0x180]))
> (const_int 1 [0x1])
> (const_int 3 [0x3])) -1 (nil)
> (nil))
> a.c:15: Internal compiler error in extract_insn, at recog.c:2129
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
This worked last week, but I think it broken with this patch:
2002-01-12 Richard Henderson <rth@redhat.com>
* config/i386/i386.c (override_options): If SSE, enable sse prefetch.
(ix86_expand_vector_move): New.
(bdesc_2arg): Remove andps, andnps, orps, xorps.
(ix86_init_mmx_sse_builtins): Make static. Remove composite builtins.
Remove old prefetch builtins. Special case the logicals removed above.
(ix86_expand_builtin): Likewise.
(safe_vector_operand): Use V4SFmode, not TImode.
(ix86_expand_store_builtin): Remove shuffle arg. Update callers.
(ix86_expand_timode_binop_builtin): New.
* config/i386/i386-protos.h: Update.
* config/i386/i386.h (enum ix86_builtins): Update.
* config/i386/i386.md: Correct predicates on MMX/SSE patterns.
Use ix86_expand_vector_move in vector move expanders.
(movti_internal, movti_rex64): Add xorps alternative.
(sse_clrv4sf): Rename and adjust from sse_clrti.
(prefetch): Don't work so hard.
(prefetch_sse, prefetch_3dnow): Use PREFETCH rtx, not UNSPEC.
* config/i386/xmmintrin.h (__m128): Use V4SFmode.
(_mm_getcsr, _mm_setcsr): Fix typo in builtin name.
The same problem is demonstrated with the following compiled with
-march=athlon:
void foo (int *p)
{
__builtin_prefetch (p, 1, 3);
}
Last week I submitted a patch with tests for __builtin_prefetch on ix86
targets; it has not yet been reviewed, although Honza looked at it and
verified that the behavior being checked is the expected behavior. The
prefetch support for specific ix86 cpus is complicated, which is why I
wrote these tests. When the tests were submitted on January 7 they all
passed, but today there are several failures. That patch is at
http://gcc.gnu.org/ml/gcc-patches/2002-01/msg00452.html.
Janis