LLVM  4.0.0
Public Member Functions | List of all members
X86InterleavedAccessGroup Class Reference

This class holds necessary information to represent an interleaved access group and supports utilities to lower the group into X86-specific instructions/intrinsics. More...

Public Member Functions

 X86InterleavedAccessGroup (Instruction *I, ArrayRef< ShuffleVectorInst * > Shuffs, ArrayRef< unsigned > Ind, const unsigned F, const X86Subtarget &STarget, IRBuilder<> &B)
 In order to form an interleaved access group X86InterleavedAccessGroup requires a wide-load instruction 'I', a group of interleaved-vectors Shuffs, reference to the first indices of each interleaved-vector 'Ind' and the interleaving stride factor F. More...
 
bool isSupported () const
 Returns true if this interleaved access group can be lowered into x86-specific instructions/intrinsics, false otherwise. More...
 
bool lowerIntoOptimizedSequence ()
 Lowers this interleaved access group into X86-specific instructions/intrinsics. More...
 

Detailed Description

This class holds necessary information to represent an interleaved access group and supports utilities to lower the group into X86-specific instructions/intrinsics.

E.g. A group of interleaving access loads (Factor = 2; accessing every other element) wide.vec = load <8 x i32>, <8 x i32>* ptr v0 = shuffle <8 x i32> wide.vec, <8 x i32> undef, <0, 2, 4, 6> v1 = shuffle <8 x i32> wide.vec, <8 x i32> undef, <1, 3, 5, 7>

Definition at line 31 of file X86InterleavedAccess.cpp.

Constructor & Destructor Documentation

X86InterleavedAccessGroup::X86InterleavedAccessGroup ( Instruction I,
ArrayRef< ShuffleVectorInst * >  Shuffs,
ArrayRef< unsigned Ind,
const unsigned  F,
const X86Subtarget STarget,
IRBuilder<> &  B 
)
inlineexplicit

In order to form an interleaved access group X86InterleavedAccessGroup requires a wide-load instruction 'I', a group of interleaved-vectors Shuffs, reference to the first indices of each interleaved-vector 'Ind' and the interleaving stride factor F.

In order to generate X86-specific instructions/intrinsics it also requires the underlying target information STarget.

Definition at line 81 of file X86InterleavedAccess.cpp.

Member Function Documentation

bool X86InterleavedAccessGroup::isSupported ( ) const

Returns true if this interleaved access group can be lowered into x86-specific instructions/intrinsics, false otherwise.

Definition at line 99 of file X86InterleavedAccess.cpp.

References llvm::Type::getVectorElementType().

Referenced by llvm::X86TargetLowering::lowerInterleavedLoad().

bool X86InterleavedAccessGroup::lowerIntoOptimizedSequence ( )

Lowers this interleaved access group into X86-specific instructions/intrinsics.

Definition at line 181 of file X86InterleavedAccess.cpp.

References i.

Referenced by llvm::X86TargetLowering::lowerInterleavedLoad().


The documentation for this class was generated from the following file: