================
@@ -2177,9 +2177,28 @@ CIRGenFunction::emitAArch64BuiltinExpr(unsigned
builtinID, const CallExpr *expr,
case NEON::BI__builtin_neon_vsubd_u64:
case NEON::BI__builtin_neon_vqdmlalh_s16:
case NEON::BI__builtin_neon_vqdmlslh_s16:
- case NEON::BI__builtin_neon_vqshlud_n_s64:
+ case NEON::BI__builtin_neon_vqshlud_n_s64: {
+ cir::IntType intType = builder.getSInt64Ty();
+ std::optional<llvm::APSInt> amt =
+ expr->getArg(1)->getIntegerConstantExpr(getContext());
+ assert(amt && "Expected argument to be a constant");
+ ops[1] = builder.getSInt64(amt->getZExtValue(), loc);
----------------
andykaylor wrote:
Shouldn't this already have been handled as an iceArgument? I would expect that
ops[1] is already a constant here, and we just need to extend it to i64, which
can be done with `getZExtIntValueFromConstOp`.
https://github.com/llvm/llvm-project/pull/190728
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits