[llvm-commits] [llvm] r153876 - /llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp

Roman Divacky rdivacky at freebsd.org
Mon Apr 2 08:49:30 PDT 2012


Author: rdivacky
Date: Mon Apr  2 10:49:30 2012
New Revision: 153876

URL: http://llvm.org/viewvc/llvm-project?rev=153876&view=rev
Log:
Implement the SVR4 byval alignment for aggregates. Fixing a FIXME.


Modified:
    llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp

Modified: llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp?rev=153876&r1=153875&r2=153876&view=diff
==============================================================================
--- llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/PowerPC/PPCISelLowering.cpp Mon Apr  2 10:49:30 2012
@@ -446,7 +446,16 @@
   // Darwin passes everything on 4 byte boundary.
   if (TM.getSubtarget<PPCSubtarget>().isDarwin())
     return 4;
-  // FIXME SVR4 TBD
+
+  // 16byte and wider vectors are passed on 16byte boundary.
+  if (VectorType *VTy = dyn_cast<VectorType>(Ty))
+    if (VTy->getBitWidth() >= 128)
+      return 16;
+
+  // The rest is 8 on PPC64 and 4 on PPC32 boundary.
+   if (PPCSubTarget.isPPC64())
+     return 8;
+
   return 4;
 }
 





More information about the llvm-commits mailing list