================ @@ -12127,6 +12127,55 @@ bool VectorExprEvaluator::VisitCallExpr(const CallExpr *E) { return Success(APValue(ResultElements.data(), ResultElements.size()), E); } + + case X86::BI__builtin_ia32_insertf32x4_256: + case X86::BI__builtin_ia32_inserti32x4_256: + case X86::BI__builtin_ia32_insertf64x2_256: + case X86::BI__builtin_ia32_inserti64x2_256: + case X86::BI__builtin_ia32_insertf32x4: + case X86::BI__builtin_ia32_inserti32x4: + case X86::BI__builtin_ia32_insertf64x2_512: + case X86::BI__builtin_ia32_inserti64x2_512: + case X86::BI__builtin_ia32_insertf32x8: + case X86::BI__builtin_ia32_inserti32x8: + case X86::BI__builtin_ia32_insertf64x4: + case X86::BI__builtin_ia32_inserti64x4: + case X86::BI__builtin_ia32_vinsertf128_ps256: + case X86::BI__builtin_ia32_vinsertf128_pd256: + case X86::BI__builtin_ia32_vinsertf128_si256: + case X86::BI__builtin_ia32_insert128i256: { + APValue SourceDst, SourceSub; + if (!EvaluateAsRValue(Info, E->getArg(0), SourceDst) || + !EvaluateAsRValue(Info, E->getArg(1), SourceSub)) + return false; + + APSInt Imm; + if (!EvaluateInteger(E->getArg(2), Imm, Info)) + return false; + + if (!SourceDst.isVector() || !SourceSub.isVector()) + return false; + + unsigned DstLen = SourceDst.getVectorLength(); + unsigned SubLen = SourceSub.getVectorLength(); + if (SubLen == 0 || DstLen == 0 || (DstLen % SubLen) != 0) ---------------- RKSimon wrote:
just assert https://github.com/llvm/llvm-project/pull/158778 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits