================ @@ -359,18 +359,21 @@ class OpLowerer { return lowerToBindAndAnnotateHandle(F); } - Error replaceSplitDoubleCallUsages(CallInst *Intrin, CallInst *Op) { + Error replaceExtractElementTypeOfCallUsages(CallInst *Intrin, CallInst *Op) { for (Use &U : make_early_inc_range(Intrin->uses())) { if (auto *EVI = dyn_cast<ExtractValueInst>(U.getUser())) { if (EVI->getNumIndices() != 1) - return createStringError(std::errc::invalid_argument, - "Splitdouble has only 2 elements"); + return createStringError( ---------------- joaosaffran wrote:
I think it is alright to reuse `splitdouble` logic for this intrinsic. We have issue https://github.com/llvm/llvm-project/issues/113192 that keeps track of doing this struct lowering more generic. There is a list of intrinsic there that requires similar lowering. At the time issue https://github.com/llvm/llvm-project/issues/113192 was created, we discussed that some intrinsic lowering will have specificities. So I would suggest commenting the implementation of `replaceFunctionWithNamedStructOp` into issue https://github.com/llvm/llvm-project/issues/113192, but I would wait for more intrinsic that require lowering to be added, so we can have more information to create the generic lowering function. About the error being handled in `if (EVI->getNumIndices() != 1)`, if it's being caught somewhere else, feel free to remove it. This was originally added due to the wonky lowering process of splitdouble. https://github.com/llvm/llvm-project/pull/125319 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits