[llvm-commits] [llvm] r96654 - /llvm/trunk/lib/Target/ARM/ARMInstrInfo.td

Chris Lattner clattner at apple.com
Fri Feb 19 14:00:25 PST 2010


On Feb 19, 2010, at 11:33 AM, Johnny Chen wrote:

> Hi Chris,
> 
> These added encodings are are more specific than:
> 
> def MOVs : AsI1<0b1101, (outs GPR:$dst), (ins so_reg:$src),
>                DPSoRegFrm, IIC_iMOVsr,
>                "mov", "\t$dst, $src", [(set GPR:$dst, so_reg:$src)]>, UnaryDP {
>  let Inst{25} = 0;
> }
> 
> Relying on the decoder to decode a MOVs super-instruction would mean that
> it prints out:
> 
> 	mov		r0, r0, asr #1
> 
> which, according to A8.6.98, is a pseudo-instruction and is not the canonical form we want
> for disassembly (A8-199).  And an added bonus is that MOVs cannot handle RRX (A8-282).

I'm not sure I understand here.  You added a redundant encoding for the same bits, yes?

If this is the case, it is better to handle this with code like PPCAsmPrinter::EmitInstruction, where the decoder produces the general 'mov' form of the MCInst, but then the MCInst -> text printer handles the special pseudo op.

-Chris





More information about the llvm-commits mailing list