[llvm] [RISCV] Handle RVV return type in calling convention correctly (PR #87736)

Brandon Wu via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 11 05:16:51 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();
----------------
4vtomat wrote:

Oh, I forgot to remove it lol~

https://github.com/llvm/llvm-project/pull/87736


More information about the llvm-commits mailing list