Lattice Mico32 port

Richard Henderson rth@redhat.com
Tue Sep 29 01:36:00 GMT 2009


On 09/28/2009 03:51 PM, Jon Beniston wrote:
> (define_insn "*ashlsi3_const"
>     [(set (match_operand:SI 0 "register_operand" "=R1")
>           (ashift:SI (match_operand:SI 1 "register_operand" "0")
>                      (match_operand:SI 2 "const_5bit_operand" "i")))
>      (clobber (match_scratch:SI 3 "=RA"))]
>     "!TARGET_BARREL_SHIFT_ENABLED"
>     "calli	__ashlsi3_%2"
>     [(set_attr "type" "call")])
>
> As I kept on getting "unable to find a register to spill in class R1" and
> wasn't sure how to fix it. As you say, this is something that can be added
> later. I've also fixed a few other issues that have cropped up during
> testing.

We can have a look at this again once your port is committed.

Worse come to worse, we could add more such functions which operate on 
more registers (perhaps 4?).  E.g.  __ashlsi3_R_N where R is the 
register number to operate on, and N is the number of bits to shift. 
Then you'd need to measure to see what kind of size vs speed impact this 
has for the kind of applications you are targeting.

Oh, we'd probably have to be sure to make all of these functions hidden, 
so that you don't wind up going through the dynamic linker.


r~



More information about the Gcc mailing list