[PATCH] D145485: [PoC][IR] Generalize interleave/deinterleave intrinsics to factors > 2

Luke Lau via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 5 09:22:52 PDT 2023


luke abandoned this revision.
luke added a comment.

Marking this as abandoned since I'm not actively working on this anymore, but it would be still good to see this someday

A potential design for the intrinsics could be something like:

  llvm
  def int_experimental_vector_interleave2   : DefaultAttrsIntrinsic<[LLVMNTimesElts<0, 2>],
                                                                    [llvm_anyvector_ty,
                                                                     LLVMMatchType<0>],
                                                                    [IntrNoMem]>;
  
  def int_experimental_vector_interleave3   : DefaultAttrsIntrinsic<[LLVMNTimesElts<0, 3>],
                                                                    [llvm_anyvector_ty,
                                                                     LLVMMatchType<0>,
                                                                     LLVMMatchType<0>],
                                                                    [IntrNoMem]>;
  
  def int_experimental_vector_deinterleave2 : DefaultAttrsIntrinsic<[llvm_anyvector_ty<0>,
                                                                     LLVMMatchType<0>],
                                                                    [LLVMNTimesElts<0, 2>],
                                                                    [IntrNoMem]>;
  
  def int_experimental_vector_deinterleave3   : DefaultAttrsIntrinsic<[llvm_anyvector_ty,
                                                                       LLVMMatchType<0>,
                                                                       LLVMMatchType<0>],
                                                                       [LLVMNTimesElts<0, 3>],
                                                                      [IntrNoMem]>;

Where `LLVMNTimesElts<I, N>` is a descriptor for vectors that have N times as many elements as the I'th argument


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D145485



More information about the llvm-commits mailing list