[PATCH] D23646: Generalize strided store pattern in interleave access pass

Alina Sbirlea via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 17 23:46:53 PDT 2016


asbirlea created this revision.
asbirlea added reviewers: HaoLiu, mssimpso.
asbirlea added subscribers: llvm-commits, delena, mkuper.

This patch aims to generalize matching of the strided store accesses to more general masks.
The more general rule is to have consecutive accesses based on the stride:
[x, y, ... z, x+1, y+1, ...z+1, x+2, y+2, ...z+2, ...]
and for each start element in each stride (x, y, ... z] to be aligned.
However all elements in the masks need not form a contiguous space, there may be gaps.
As before, undefs are allowed and filled in with adjacent element loads.

Note this patch is not final, but I would like to get feedback on the approach.
There are at least the pending TODOs.

https://reviews.llvm.org/D23646

Files:
  lib/CodeGen/InterleavedAccessPass.cpp
  lib/Target/AArch64/AArch64ISelLowering.cpp
  lib/Target/ARM/ARMISelLowering.cpp
  test/CodeGen/AArch64/aarch64-interleaved-accesses.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23646.68484.patch
Type: text/x-patch
Size: 5029 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160818/0298d527/attachment.bin>


More information about the llvm-commits mailing list