[llvm] r275920 - [NVPTX] Make sure we adjust alignment at all call sites

Artem Belevich via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 18 14:58:48 PDT 2016


Author: tra
Date: Mon Jul 18 16:58:48 2016
New Revision: 275920

URL: http://llvm.org/viewvc/llvm-project?rev=275920&view=rev
Log:
[NVPTX] Make sure we adjust alignment at all call sites

.. including calls from kernel functions that were
ignored by mistake before.

Modified:
    llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp
    llvm/trunk/test/CodeGen/NVPTX/param-align.ll

Modified: llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp?rev=275920&r1=275919&r2=275920&view=diff
==============================================================================
--- llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/NVPTX/NVPTXISelLowering.cpp Mon Jul 18 16:58:48 2016
@@ -1072,7 +1072,6 @@ SDValue NVPTXTargetLowering::LowerCall(T
   MachineFunction &MF = DAG.getMachineFunction();
   const Function *F = MF.getFunction();
   auto &DL = MF.getDataLayout();
-  bool isKernel = llvm::isKernelFunction(*F);
 
   SDValue tempChain = Chain;
   Chain = DAG.getCALLSEQ_START(Chain,
@@ -1342,7 +1341,7 @@ SDValue NVPTXTargetLowering::LowerCall(T
     // Enforce minumum alignment of 4 to work around ptxas miscompile
     // for sm_50+. See corresponding alignment adjustment in
     // emitFunctionParamList() for details.
-    if (!isKernel && ArgAlign < 4)
+    if (ArgAlign < 4)
       ArgAlign = 4;
     SDValue DeclareParamOps[] = {Chain, DAG.getConstant(ArgAlign, dl, MVT::i32),
                                  DAG.getConstant(paramCount, dl, MVT::i32),

Modified: llvm/trunk/test/CodeGen/NVPTX/param-align.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/NVPTX/param-align.ll?rev=275920&r1=275919&r2=275920&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/NVPTX/param-align.ll (original)
+++ llvm/trunk/test/CodeGen/NVPTX/param-align.ll Mon Jul 18 16:58:48 2016
@@ -31,3 +31,14 @@ define ptx_device void @t4(i8* byval %x)
 ; CHECK: .param .align 4 .b8 t4_param_0[1]
   ret void
 }
+
+;;; Make sure we adjust alignment at the call site as well.
+define ptx_device void @t5(i8* align 2 byval %x) {
+; CHECK: .func t5
+; CHECK: .param .align 4 .b8 t5_param_0[1]
+; CHECK: {
+; CHECK: .param .align 4 .b8 param0[1];
+; CHECK: call.uni
+  call void @t4(i8* byval %x)
+  ret void
+}




More information about the llvm-commits mailing list