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.