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.