[PATCH] D71401: [AArch64][SVE] Add permutation and selection intrinsics
Cullen Rhodes via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 13 05:31:03 PST 2019
c-rhodes added inline comments.
================
Comment at: llvm/include/llvm/IR/IntrinsicsAArch64.td:782
LLVMMatchType<0>,
llvm_i32_ty],
[IntrNoMem]>;
----------------
efriedma wrote:
> I guess this is sort of orthogonal to your patch, but this is missing ImmArg marking
Using `ImmArg` for this class opens up a can of worms, I know Kerry ran into similar issues in a separate patch. From what I understand it requires using `TImmLeaf` instead of `ImmLeaf` for the imm args in instruction definitions and some of those operands are used all over the AArch64 backend.
================
Comment at: llvm/include/llvm/IR/IntrinsicsAArch64.td:1182
def int_aarch64_sve_sunpklo : AdvSIMD_SVE_Unpack_Intrinsic;
-
+def int_aarch64_sve_tbl : AdvSIMD_SVE_TBL_Intrinsic;
+def int_aarch64_sve_trn1 : AdvSIMD_2VectorArg_Intrinsic;
----------------
efriedma wrote:
> Any thoughts on naming tbl for one-register and two-register forms?
By two-register I assume you're referring to the SVE2 form which has two source registers? Downstream we name this `int_aarch64_sve_tbl2` and it's implemented with the same class as TBX.
================
Comment at: llvm/lib/Target/AArch64/SVEInstrFormats.td:5040
+ def : SVE_3_Op_Pat<nxv4f32, op, nxv4i1, nxv4f32, nxv4f32, !cast<Instruction>(NAME # _S)>;
+ def : SVE_3_Op_Pat<nxv2f64, op, nxv2i1, nxv2f64, nxv2f64, !cast<Instruction>(NAME # _D)>;
}
----------------
efriedma wrote:
> This unconditionally maps the "splice" intrinsic to the destructive form? I guess that's fine.
Correct, SVE only defines a destructive form for splice, SVE2 introduced a constructive form which is implemented with a separate class but the ACLE defines no intrinsic for it.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71401/new/
https://reviews.llvm.org/D71401
More information about the llvm-commits
mailing list