[PATCH] D104471: [llvm][sve] Lowering for VLS truncating stores
Eli Friedman via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 17 10:55:33 PDT 2021
efriedma added a comment.
This patch is making way too many seemingly unrelated code changes without much explanation. Is all of this really necessary for the initial patch?
================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:1225
+ for (MVT InnerVT : MVT::integer_fixedlen_vector_valuetypes()) {
+ setTruncStoreAction(VT, InnerVT, Custom);
+ }
----------------
Can we change this to make sure we only mark stores that we can actually lower "custom"? (i.e. the value type is a legal integer vector, and the memory type has a legal element type.) That should make the rest of the patch simpler, I think.
================
Comment at: llvm/test/CodeGen/AArch64/sve-fixed-length-trunc-stores.ll:21
+; Don't use SVE when its registers are no bigger than NEON.
+; NO_SVE-NOT: ptrue
+
----------------
Why don't we want to optimize store_trunc_v2i64i8 when SVE registers are 128 bits wide?
================
Comment at: llvm/test/CodeGen/AArch64/sve-fixed-length-trunc-stores.ll:183
+; VBITS_EQ_256-DAG: uzp1 [[Z1]].h, [[Z1]].h, [[Z1]].h
+; VBITS_EQ_256-DAG: splice [[Z1]].h, [[PG]], [[Z1]].h, [[Z0]].h
+; VBITS_EQ_256-DAG: ptrue [[PG]].h, vl16
----------------
Can we "uzp1 z0, z0, z1" or something like that in store_trunc_v16i32i16?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D104471/new/
https://reviews.llvm.org/D104471
More information about the llvm-commits
mailing list