Question about Machine Description

yazdanbakhsh amir.yazdanbakhsh@gmail.com
Mon May 3 21:23:00 GMT 2010


This is the newer version. It works correctly. I just want know is there any
other way.

thanks
***************************************************
(define_insn "lshrsi3"
  [(set (match_operand:SI 0 "register_operand" "=d")
	(lshiftrt:SI (match_operand:SI 1 "register_operand" "d")
		     (match_operand:SI 2 "arith_operand" "dI")))
	(clobber(match_scratch:SI 3 "=&d"))]
  ""
  "*
{
  if (GET_CODE (operands[2]) == CONST_INT)
{
    operands[2] = gen_rtx (CONST_INT, VOIDmode, (XINT (operands[2], 0))&
0x1f);
    operands[4] = gen_rtx (REG, VOIDmode, 0);
    return \"add\\t%3,%4,%z2;srl\\t%0,%1,%3\";
}
else
	return \"srl\\t%0,%1,%2\";
}"
  [(set_attr "type"	"arith")
   (set_attr "mode"	"SI")
   (set_attr "length"	"1")])
***************************************************

yazdanbakhsh wrote:
> 
> Dear all,
> 
> I'm working on my a gcc compiler for my own written processor with the
> help of SimpleScalar.
> I want to remove "srav/slav" (immediate arithmetic shift) from the
> instruction set. I explore ss.md file but I didn't see any define_ins for
> the mentioned instructions, but they are used in other instruction
> definitions.
> It is also exist for addi/addui. Where I can find the definitions of these
> instructions? I want to force gcc to just use register shift and register
> add.
> 
> Best Regards,
> 

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



More information about the Gcc mailing list