================
@@ -13551,6 +13551,30 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr
*E) {
return false;
return Success(R, E);
}
+ case X86::BI__builtin_ia32_alignd128:
+ case X86::BI__builtin_ia32_alignd256:
+ case X86::BI__builtin_ia32_alignd512:
+ case X86::BI__builtin_ia32_alignq128:
+ case X86::BI__builtin_ia32_alignq256:
+ case X86::BI__builtin_ia32_alignq512: {
+ APValue R;
+ const unsigned NumElts =
+ E->getType()->castAs<VectorType>()->getNumElements();
+ if (!evalShuffleGeneric(
+ Info, E, R, [NumElts](unsigned DstIdx, unsigned Shift) {
+ unsigned Imm = Shift & 0xFF;
+ unsigned EffectiveShift = Imm & (NumElts - 1);
+ unsigned SourcePos = DstIdx + EffectiveShift;
+ unsigned VecIdx = SourcePos < NumElts ? 1 : 0;
+ unsigned ElemIdx =
+ SourcePos < NumElts ? SourcePos : SourcePos - NumElts;
----------------
RKSimon wrote:
```suggestion
unsigned ElemIdx = SourcePos & (NumElems - 1);
```
https://github.com/llvm/llvm-project/pull/168206
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits