[PATCH] D62667: [ARM] Add the non-MVE instructions in Arm v8.1-M.

Sam Parker via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 30 09:08:36 PDT 2019


samparker added a comment.

I will continue going over this tomorrow.



================
Comment at: llvm/lib/Target/ARM/ARMInstrThumb2.td:5128
+  bits<4> Rn;
+  let isBranch = 0;
+  let Inst{22-20} = 0b100;
----------------
I think isTerminator can also be = 0, I can't remember seeing anything about it needing to be at the end of a basic block.


================
Comment at: llvm/lib/Target/ARM/ARMInstrVFP.td:2300
   let Inst{3-0}   = 0b0000;
+  let Predicates = [HasVFP2];
 }
----------------
Where has this come from..?


================
Comment at: llvm/lib/Target/ARM/ARMInstrVFP.td:2672
+                oops, !con(iops, (ins t2addrmode_imm7s4:$addr)),
+                IndexModePost, "$addr", "" > {
+    let DecoderMethod = "DecodeVSTRVLDR_SYSREG_off";
----------------
Is this correct? What is IndexModePost?


================
Comment at: llvm/lib/Target/ARM/ARMInstrVFP.td:2687
+                !con(oops, (outs GPRnopc:$wb)),
+                !con(iops, (ins t2_addr_offset_none:$Rn,
+                                t2am_imm7s4_offset:$addr)),
----------------
Why does the post form have one more operand than the pre? This doesn't really look like the existing pre/post load/store instructions.


================
Comment at: llvm/lib/Target/ARM/ARMRegisterInfo.td:264
+
+def GPRwithZR : RegisterClass<"ARM", [i32], 32, (add (sequence "R%u", 0, 12),
+                                              LR, ZR)> {
----------------
I've just came here from the CSEL instructions, so forgive my limited scope, but why can't this register class access SP?


================
Comment at: llvm/lib/Target/ARM/ARMRegisterInfo.td:341
+// MVE Condition code register.
+def VCCR : RegisterClass<"ARM", [i32, v16i1, v8i1, v4i1], 32, (add VPR)> {
+//  let CopyCost = -1;  // Don't allow copying of status registers.
----------------
Is the i32 type just to copy us to easily copy the value around?


================
Comment at: llvm/lib/Target/ARM/ARMRegisterInfo.td:343
+//  let CopyCost = -1;  // Don't allow copying of status registers.
+  let AltOrders = [(add VPR)];
+}
----------------
Not needed.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D62667/new/

https://reviews.llvm.org/D62667





More information about the llvm-commits mailing list