mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 11:49:02 +08:00
Fix assign vectorization logic with respect to fixed outer-stride
This commit is contained in:
parent
0fc8954282
commit
12f50a4697
@ -54,6 +54,7 @@ private:
|
|||||||
InnerMaxSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime)
|
InnerMaxSize = int(Dst::IsVectorAtCompileTime) ? int(Dst::MaxSizeAtCompileTime)
|
||||||
: int(DstFlags)&RowMajorBit ? int(Dst::MaxColsAtCompileTime)
|
: int(DstFlags)&RowMajorBit ? int(Dst::MaxColsAtCompileTime)
|
||||||
: int(Dst::MaxRowsAtCompileTime),
|
: int(Dst::MaxRowsAtCompileTime),
|
||||||
|
OuterStride = int(outer_stride_at_compile_time<Dst>::ret),
|
||||||
MaxSizeAtCompileTime = Dst::SizeAtCompileTime,
|
MaxSizeAtCompileTime = Dst::SizeAtCompileTime,
|
||||||
PacketSize = unpacket_traits<PacketType>::size
|
PacketSize = unpacket_traits<PacketType>::size
|
||||||
};
|
};
|
||||||
@ -65,7 +66,9 @@ private:
|
|||||||
MightVectorize = StorageOrdersAgree
|
MightVectorize = StorageOrdersAgree
|
||||||
&& (int(DstFlags) & int(SrcFlags) & ActualPacketAccessBit)
|
&& (int(DstFlags) & int(SrcFlags) & ActualPacketAccessBit)
|
||||||
&& (functor_traits<AssignFunc>::PacketAccess),
|
&& (functor_traits<AssignFunc>::PacketAccess),
|
||||||
MayInnerVectorize = MightVectorize && int(InnerSize)!=Dynamic && int(InnerSize)%int(PacketSize)==0
|
MayInnerVectorize = MightVectorize
|
||||||
|
&& int(InnerSize)!=Dynamic && int(InnerSize)%int(PacketSize)==0
|
||||||
|
&& int(OuterStride)!=Dynamic && int(OuterStride)%int(PacketSize)==0
|
||||||
&& int(JointAlignment)>=int(RequiredAlignment),
|
&& int(JointAlignment)>=int(RequiredAlignment),
|
||||||
MayLinearize = StorageOrdersAgree && (int(DstFlags) & int(SrcFlags) & LinearAccessBit),
|
MayLinearize = StorageOrdersAgree && (int(DstFlags) & int(SrcFlags) & LinearAccessBit),
|
||||||
MayLinearVectorize = MightVectorize && MayLinearize && DstHasDirectAccess
|
MayLinearVectorize = MightVectorize && MayLinearize && DstHasDirectAccess
|
||||||
|
Loading…
x
Reference in New Issue
Block a user