Maybe this is the fastest if limited shift and 'right' d3 is used:
Code:
moveq #32,d2
sub.l d3,d2
move.l d1,d4
lsr.l d3,d0
lsl.l d2,d4
asr.l d3,d1
or.l d4,d0
It is a specialized version from the generic one (using the specifications of your registers).
About the 68020+: sometimes the speed is the same even if you use immediate values, but I think in fact in that case it is faster anyway (and use less memory).