================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits