[llvm] [RISCV] Handle RVV return type in calling convention correctly (PR #87736)
Roger Ferrer Ibáñez via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 11 03:58:18 PDT 2024
================
@@ -21077,7 +21079,92 @@ unsigned RISCVTargetLowering::getMinimumJumpTableEntries() const {
return Subtarget.getMinimumJumpTableEntries();
}
-void RVVArgDispatcher::constructArgInfos(ArrayRef<Type *> TypeList) {
+// Handle single arg such as return value.
+template <typename Arg>
+void RVVArgDispatcher::constructArgInfos(ArrayRef<Arg> ArgList) {
+ // This lambda determines whether an array of types are constructed by
+ // homogeneous vector types.
+ auto isHomogeneousScalableVectorType = [](ArrayRef<Arg> ArgList) {
+ // First, extract the first element in the argument type.
+ MVT FirstArgRegType;
+ unsigned FirstArgElements = 0;
+ auto It = ArgList.begin();
+ bool IsPart = false;
+
+ if (It == ArgList.end())
+ return false;
+
+ for (; It != ArgList.end(); ++It) {
+ FirstArgRegType = It->VT;
+ FirstArgRegType.dump();
----------------
rofirrim wrote:
I was testing the patch and I was a bit confused by this :)
https://github.com/llvm/llvm-project/pull/87736
More information about the llvm-commits
mailing list