This is the mail archive of the crossgcc@cygnus.com mailing list for the crossgcc project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Ok, I raised my hands and put a 'brute force' fix to the "shift a 64 bit
long long 8 bits to the left"-problem into my egcs-1.1.1 sources...
-------------- clip ------------------------
*** m68k.md.orig Wed Nov 18 15:18:56 1998
--- m68k.md Sat Jan 23 13:42:01 1999
***************
*** 4567,4573 ****
if (INTVAL (operands[2]) == 1)
return \"add%.l %1,%1\;addx%.l %0,%0\";
else if (INTVAL (operands[2]) == 8)
! return \"rol%.l %#8,%1\;rol%.l %#8,%0\;move%.b %1,%0\;clr%.b %1\";
else if (INTVAL (operands[2]) == 16)
return \"swap %1\;swap %0\;move%.w %1,%0\;clr%.w %1\";
else if (INTVAL (operands[2]) == 48)
--- 4567,4581 ----
if (INTVAL (operands[2]) == 1)
return \"add%.l %1,%1\;addx%.l %0,%0\";
else if (INTVAL (operands[2]) == 8)
! {
! if (!TARGET_5200)
! return \"rol%.l %#8,%1\;rol%.l %#8,%0\;move%.b %1,%0\;clr%.b %1\";
! else
! return \"add%.l %1,%1\;addx%.l %0,%0\;add%.l %1,%1\;addx%.l %0,%0\;
! add%.l %1,%1\;addx%.l %0,%0\;add%.l %1,%1\;addx%.l %0,%0\;
! add%.l %1,%1\;addx%.l %0,%0\;add%.l %1,%1\;addx%.l %0,%0\;
! add%.l %1,%1\;addx%.l %0,%0\;add%.l %1,%1\;addx%.l %0,%0\";
! }
else if (INTVAL (operands[2]) == 16)
return \"swap %1\;swap %0\;move%.w %1,%0\;clr%.w %1\";
else if (INTVAL (operands[2]) == 48)
------ clip ----------------------------
If someone has a more elegant solution, please introduce it... If taking a
third register in use, this could be optimized, but I don't know how to do
it...
< rol.l #8,%d3
< rol.l #8,%d2
< move.b %d3,%d2
< clr.b %d3
---
> add.l %d3,%d3
> addx.l %d2,%d2
> add.l %d3,%d3
> addx.l %d2,%d2
>
> add.l %d3,%d3
> addx.l %d2,%d2
> add.l %d3,%d3
> addx.l %d2,%d2
>
> add.l %d3,%d3
> addx.l %d2,%d2
> add.l %d3,%d3
> addx.l %d2,%d2
>
> add.l %d3,%d3
> addx.l %d2,%d2
> add.l %d3,%d3
> addx.l %d2,%d2
Cheers, Kai
_______________________________________________
New CrossGCC FAQ: http://www.objsw.com/CrossGCC
_______________________________________________
To remove yourself from the crossgcc list, send
mail to crossgcc-request@cygnus.com with the
text 'unsubscribe' (without the quotes) in the
body of the message.