This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: target/5378: ICE: unrecognizable insn prefetch


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]