This is the mail archive of the gcc@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: Question about Machine Description


Hi,

I want to exclude all immediate or instruction. I did this by the following
define_insn

/------------------------------------------------------------------------------
(define_insn "iorsi3" 
  [(set (match_operand:SI 0 "register_operand" "=d,d")
	(ior:SI (match_operand:SI 1 "uns_arith_operand" "%d,d")
		(match_operand:SI 2 "uns_arith_operand" "d,K")))
		(clobber (match_scratch:SI 3 ""))]
  ""
  "@
   or\\t%0,%1,%2
   addi\\t%3,0x0,%x2\;or\\t%0,%1,%3"
  [(set_attr "type"	"arith")
   (set_attr "mode"	"SI")
   (set_attr "length"	"1,2")])
/------------------------------------------------------------------------------
I use a temporary register 3, to store intermediate values. but after
compilation the following error happen:

./libgcc2.c:669: internal error--unrecognizable insn:
(insn 787 786 780 (set (reg:SI 104)
        (ior:SI (reg:SI 104)
            (const_int 65535))) -1 (insn_list 786 (nil))
    (expr_list:REG_EQUAL (const_int 16777215)
        (nil)))
xgcc: Internal compiler error: program cc1 got fatal signal 6
make: *** [libgcc2.a] Error 1
//----------------------------------------------------------------------
I appreciate any help.

Bestr
-- 
View this message in context: http://old.nabble.com/Question-about-Machine-Description-tp1026428p28790054.html
Sent from the gcc - Dev mailing list archive at Nabble.com.


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