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.