This is an archive of the discontinued LLVM Phabricator instance.

[X86][AVX] Ensure vector non-temporal load/store intrinsics force pointer alignment (PR33830)
ClosedPublic

Authored by RKSimon on Jul 28 2017, 7:07 AM.

Details

Summary

Clang specifies a max type alignment of 16 bytes on darwin targets (annoyingly in the driver not via cc1), meaning that the builtin nontemporal stores don't correctly align the loads/stores to 32 or 64 bytes when required, resulting in lowering to temporal unaligned loads/stores.

This patch casts the vectors to explicitly aligned types prior to the load/store to ensure that the require alignment is respected.

Diff Detail

Repository
rL LLVM

Event Timeline

RKSimon created this revision.Jul 28 2017, 7:07 AM
This revision is now accepted and ready to land.Jul 28 2017, 9:19 AM
This revision was automatically updated to reflect the committed changes.