public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* insn matching problem
@ 1998-11-05  0:28 Bill Currie
  0 siblings, 0 replies; only message in thread
From: Bill Currie @ 1998-11-05  0:28 UTC (permalink / raw)
  To: egcs

I'm having problems getting a complicated insn to match and I'm not sure
what I've done wrong.

Here is the error message.

foo.c:74: internal error--unrecognizable insn:

(insn 33 31 34 (set (reg:SI 74)
        (ior:SI (const_int 0)
            (zero_extract:SI (const_int 1)
                (const_int:SI 16)
                (const_int 0)))) -1 (nil)
    (nil))

The insn is generated by this code:

  emit_insn (gen_rtx_SET(VOIDmode,
    operands[0],
    gen_rtx_IOR(SImode,const0_rtx,
      gen_rtx_ZERO_EXTRACT(SImode,operands[1],
      gen_rtx_raw_CONST_INT(SImode,16),const0_rtx))));


This is what I thought the insn should match against.

(define_insn ""
  [(set (match_operand:SI 0 "register_operand" "=r")
	(ior:SI (const_int 0)
		(zero_extract:SI (match_operand:SI 1 "immediate_operand" "i")
				 (const_int:SI 16)
				 (const_int 0))))]
  ""
  "orh %H1,%?r0,%0")

What am I doing wrong?  I'll continue trying to figure it out in the
mean time, but any help will be appreciated.   Would getting rid of the
SImodes for the const_ints help?

BTW, this is for the i860 (big endian).

Bill
-- 
Leave others their otherness

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~1998-11-05  0:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-11-05  0:28 insn matching problem Bill Currie

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).