================ @@ -12127,6 +12127,49 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) { return Success(APValue(ResultElements.data(), ResultElements.size()), E); } + case X86::BI__builtin_ia32_pslldqi128_byteshift: + case X86::BI__builtin_ia32_psrldqi128_byteshift: + case X86::BI__builtin_ia32_pslldqi256_byteshift: + case X86::BI__builtin_ia32_psrldqi256_byteshift: + case X86::BI__builtin_ia32_pslldqi512_byteshift: + case X86::BI__builtin_ia32_psrldqi512_byteshift: { + APSInt Amt; + if (!EvaluateInteger(E->getArg(1), Amt, Info)) + return false; + unsigned ShiftVal = (unsigned)Amt.getZExtValue() & 0xff; + + APValue Vec; + if (!Evaluate(Vec, Info, E->getArg(0)) || !Vec.isVector()) + return false; + + unsigned NumElts = Vec.getVectorLength(); + const unsigned LaneBytes = 16; + assert(NumElts % LaneBytes == 0); + + SmallVector<APValue, 64> Result; + Result.resize(NumElts, APValue(0)); + + bool IsLeft = + (E->getBuiltinCallee() == X86::BI__builtin_ia32_pslldqi128_byteshift || + E->getBuiltinCallee() == X86::BI__builtin_ia32_pslldqi256_byteshift || + E->getBuiltinCallee() == X86::BI__builtin_ia32_pslldqi512_byteshift); + + if (ShiftVal >= LaneBytes) + return ZeroInitialization(E); + + for (unsigned laneBase = 0; laneBase < NumElts; laneBase += LaneBytes) { ---------------- RKSimon wrote:
(style) laneBase -> LaneBase (always capitalise 1st letter of a variable) https://github.com/llvm/llvm-project/pull/157403 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits