[PATCH] D45204: [X86][MIPS][ARM] New machine instruction property 'isMoveReg'
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 12 11:18:38 PDT 2018
efriedma added inline comments.
================
Comment at: lib/Target/ARM/ARMInstrVFP.td:1027
+let isMoveReg = 1 in {
def VMOVRS : AVConv2I<0b11100001, 0b1010,
(outs GPR:$Rt), (ins SPR:$Sn),
----------------
NikolaPrica wrote:
> efriedma wrote:
> > NikolaPrica wrote:
> > > efriedma wrote:
> > > > We usually use VMOVRRD (which moves two 32-bit integers into one 64-bit register) rather than VMOVRS; is there some way you can treat that as a "copy"?
> > > There is similar instruction for MIPS that I've covered. On MIPS architecture similar instruction is used to transfer function arguments that were previously held in 32-bit register but for purpouse of call are transfered into 64-bit. I think that it should be treated as copy?
> > Not sure how the target-independent code will understand the semantics for a "move" with multiple inputs, but I'll let you figure that out, I guess.
> In following patch new destination register is recognized as one that is marked as <def> and the source register is recognized only if it is marked as <killed>. Do you think that this will be enough?
The issue with vmovrrd in particular is that there are multiple source registers; the current patch in D44016 only looks for one of them.
https://reviews.llvm.org/D45204
More information about the llvm-commits
mailing list