LLVM 24.0.0git
llvm::slpvectorizer::NarrowedLeafInfo Struct Reference

Narrow reduction leaf: the value, the shift applied after widening and the mask applied in the narrow type before widening, clearing the bits the absorbed narrow shls shift out and applying the absorbed narrow and-masks. More...

#include "Transforms/Vectorize/SLPVectorizer/SLPUtils.h"

Public Member Functions

 NarrowedLeafInfo (Value *V, unsigned Shift, APInt Mask)

Public Attributes

Value * V = nullptr
unsigned Shift = 0
APInt Mask
bool Disjoint = true
 Set to false, if the or chain is not disjoint.

Detailed Description

Narrow reduction leaf: the value, the shift applied after widening and the mask applied in the narrow type before widening, clearing the bits the absorbed narrow shls shift out and applying the absorbed narrow and-masks.

Lossless narrow shls contribute their known-zero bits to the mask so matching lanes can form a splat. All-ones mask means nothing was absorbed and no 'and' is needed.

Definition at line 443 of file SLPUtils.h.

Constructor & Destructor Documentation

◆ NarrowedLeafInfo()

llvm::slpvectorizer::NarrowedLeafInfo::NarrowedLeafInfo ( Value * V,
unsigned Shift,
APInt Mask )
inline

Definition at line 444 of file SLPUtils.h.

References Mask, llvm::move(), Shift, and V.

Member Data Documentation

◆ Disjoint

bool llvm::slpvectorizer::NarrowedLeafInfo::Disjoint = true

Set to false, if the or chain is not disjoint.

Definition at line 451 of file SLPUtils.h.

◆ Mask

APInt llvm::slpvectorizer::NarrowedLeafInfo::Mask

Definition at line 449 of file SLPUtils.h.

Referenced by NarrowedLeafInfo().

◆ Shift

unsigned llvm::slpvectorizer::NarrowedLeafInfo::Shift = 0

Definition at line 448 of file SLPUtils.h.

Referenced by NarrowedLeafInfo().

◆ V

Value* llvm::slpvectorizer::NarrowedLeafInfo::V = nullptr

Definition at line 447 of file SLPUtils.h.

Referenced by NarrowedLeafInfo().


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