[llvm-commits] [PATCH] Use vld1/vst1 for unaligned load/store

David Peixotto dpeixott at codeaurora.org
Thu Sep 13 17:53:10 PDT 2012


This patch is the result of a discussion of unaligned vector loads/store on
llvmdev:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-September/053082.html.

 

The vld1 and vst1 variants in armv7 neon only require memory

alignment to the element size of the vector. Because of this

property, we can use a vld1.8 and vst1.8 to load/store f64 and v2f64

vectors to unaligned addresses on little-endian targets. This should

be faster than the target-independent codegen lowering that does an

aligned load/store to the stack and unaligned load/store of each

element of the vector.

 

This patch includes two changes:

  1. Add new patterns for selecting vld1/vst1 for byte and half-word

     aligned vector stores for v2f64 vectors.

  2. Allow unaligned load/store using vld1/vst1 for little-endian

     arm targets that support NEON.  The vld1/vst1 instructions will

     be used to load/store f64 and v2f64 types aligned along byte

     and half-word memory accesses.

 

-- Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
by The Linux Foundation

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120913/67f6bf65/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Use-vld1-vst1-for-unaligned-load-store.patch
Type: application/octet-stream
Size: 17930 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120913/67f6bf65/attachment.obj>


More information about the llvm-commits mailing list