[PATCH] D65052: [ARM] MVE predicate register support
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 23 04:09:52 PDT 2019
dmgreen marked 7 inline comments as done.
dmgreen added inline comments.
================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:7398
+ SDValue AllOnes =
+ DAG.getTargetConstant(ARM_AM::createNEONModImm(0xe, 0xff), dl, MVT::i32);
+ AllOnes = DAG.getNode(ARMISD::VMOVIMM, dl, MVT::v16i8, AllOnes);
----------------
SjoerdMeijer wrote:
> > I can rename it easily enough. createVModImm sound OK?
>
> Yep, sounds good
It ended up as createVMOVModImm in rL366790.
================
Comment at: llvm/lib/Target/ARM/ARMISelLowering.cpp:7666
+ unsigned Lane = cast<ConstantSDNode>(Op.getOperand(2))->getZExtValue();
+ unsigned LaneWidth = 16 / VecVT.getVectorNumElements();
+ unsigned Mask = ((1 << LaneWidth) - 1) << Lane * LaneWidth;
----------------
SjoerdMeijer wrote:
> Perhaps better to hide magic constant 16 in a MVE subtarget function or something like that?
I changed this around a little to use the scalar size.
================
Comment at: llvm/test/CodeGen/Thumb2/mve-pred-build-var.ll:188
+; CHECK-NEXT: rsbs r0, r0, #0
+; CHECK-NEXT: bfi r2, r0, #0, #1
+; CHECK-NEXT: bfi r2, r0, #1, #1
----------------
samparker wrote:
> Why aren't these just one: bfi r2, r0, #0, #16 or uxth r2, r0?
Thats "FIXME: Handle splats of the same value better." Maybe just a conditional mov of -1 (or something)? It's on the list of things to do.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65052/new/
https://reviews.llvm.org/D65052
More information about the llvm-commits
mailing list