I forget to thank you for your help.
But if I do write your code how compiler knows that it should be put two
instructions instead immediate shift?
I write this piese of code:
###############################################################33
(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\";
}"
[(set_attr "type" "arith")
(set_attr "mode" "SI")
(set_attr "length" "1")])
################################################################
Is there any other solutions?
Best Regards,
yazdanbakhsh wrote:
>
> Is it any way that we can chat?
> I'm working on my thesis project and a paper. I appreciate it if you would
> cooperate in this project.
> I have gmail Id "amir.yazdanbakhsh"
> and also skype "amir.yazdanbakhsh"
>
> best regards,
>
> yazdanbakhsh wrote:
>>
>> Hi,
>>
>> Please assume I'm working with the MIPS. There is a little difference
>> between the MIPS and what I'm actually working on it. How can I remove
>> immediate logical shift right/left from the compiler?
>> I mean If I want the programmer writes an immediate shift, It is compiled
>> to the two instructions:
>>
>> sll %2,%2,5
>>
>> changed to:
>>
>> addi %3,%0,5
>> sllv %2,%2,%3
>>
>> thanks in advance
>>
>> Ian Lance Taylor-3 wrote:
>>>
>>> yazdanbakhsh <[email protected]> writes:
>>>
>>>> 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.
>>>
>>> There is no ss.md file in the standard gcc distribution. If
>>> SimpleScalar has a gcc port, I don't know anything about it. So it's
>>> hard to answer to your question precisely.
>>>
>>> Instructions can come from either a .md file or a .c file in the
>>> config/CPU directory used for your CPU. If those instructions are
>>> appearing in the generated assembler, then they must be in there
>>> somewhere.
>>>
>>> Ian
>>>
>>>
>>
>>
>
>
--
View this message in context:
http://old.nabble.com/Question-about-Machine-Description-tp1026428p28440002.html
Sent from the gcc - Dev mailing list archive at Nabble.com.