[PATCH] D45204: [X86][MIPS][ARM] New machine instruction property 'isMoveReg'

Nikola Prica via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 12 05:55:56 PDT 2018


NikolaPrica 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),
----------------
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?


================
Comment at: lib/Target/X86/X86InstrAVX512.td:3323
                                   SDPatternOperator SelectOprr = vselect> {
-  let Predicates = [prd] in
   defm Z : avx512_load<opc, OpcodeStr, SSE_MOVU, _.info512, _.info512.LdFrag,
----------------
craig.topper wrote:
> Why was this line deleted?
Oh, this got here by mistake. I've overlooked it.


https://reviews.llvm.org/D45204





More information about the llvm-commits mailing list