Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Demikhovsky, Elena <elena.demikhovsky <at> intel.com>
Subject: Adding masked vector load and store intrinsics
Newsgroups: gmane.comp.compilers.llvm.devel
Date: Friday 24th October 2014 11:24:15 UTC (over 2 years ago)
Hi,

We would like to add support for masked vector loads and stores by
introducing new target-independent intrinsics. The loop vectorizer will
then be enhanced to optimize loops containing conditional memory accesses
by generating these intrinsics for existing targets such as AVX2 and
AVX-512. The vectorizer will first ask the target about availability of
masked vector loads and stores. The SLP vectorizer can potentially be
enhanced to use these intrinsics as well.

The intrinsics would be legal for all targets; targets that do not support
masked vector loads or stores will scalarize them.
The addressed memory will not be touched for masked-off lanes. In
particular, if all lanes are masked off no address will be accessed.

  call void @llvm.masked.store (i32* %addr, <16 x i32> %data, i32 4, <16 x
i1> %mask)

  %data = call <8 x i32> @llvm.masked.load (i32* %addr, <8 x i32>
%passthru, i32 4, <8 x i1> %mask)

where %passthru is used to fill the elements of %data that are masked-off
(if any; can be zeroinitializer or undef).

Comments so far, before we dive into more details?

Thank you.

- Elena and Ayal


---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
 
CD: 3ms