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

Brandon Wu via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 8 01:06:40 PDT 2024


================
@@ -21077,7 +21079,82 @@ 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;
+    typename SmallVectorImpl<Arg>::const_iterator It;
----------------
4vtomat wrote:

Ok, seems better coding style~

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


More information about the llvm-commits mailing list