[PATCH] D94097: [AArch64] Legalize MVT::i64x8 in DAG isel lowering.

Alexandros Lamprineas via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 27 02:09:29 PDT 2021


labrinea added inline comments.


================
Comment at: llvm/lib/CodeGen/GlobalISel/InlineAsmLowering.cpp:347
+    if (OpInfo.ConstraintVT == MVT::i64x8)
+      return false;
+
----------------
efriedma wrote:
> It's a little unfortunate we're sticking this in target-independent code, but not sure there's a better place.
Not, I am afraid.


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:251
+    addRegisterClass(MVT::i64x8, &AArch64::GPR64x8ClassRegClass);
+    setOperationAction(ISD::BITCAST, MVT::i64x8, Legal);
+    setOperationAction(ISD::UNDEF, MVT::i64x8, Legal);
----------------
efriedma wrote:
> Not sure why you're marking BITCAST Legal; there isn't any legal type to bitcast from.
I think that's a leftover from previous efforts, so as the UNDEF just below. I'll remove them.


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:254
+    setOperationAction(ISD::LOAD, MVT::i64x8, Custom);
+    setOperationAction(ISD::STORE, MVT::i64x8, Custom);
+  }
----------------
efriedma wrote:
> I guess LOAD/STORE come out of type legalization?
These are the custom lowering operations for the `load/store i512` instruction that clang inserts pre/post inline assembly for accessing the asm operands (see lines 4569 and 4595).


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:8254
+
+  return TargetLowering::getValueType(DL, Ty, AllowUnknown);
+}
----------------
This should be TargetLowering::getAsmOperandValueType. I'll fix it.


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

https://reviews.llvm.org/D94097



More information about the llvm-commits mailing list