summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp3
-rw-r--r--llvm/test/CodeGen/NVPTX/param-align.ll11
2 files changed, 12 insertions, 2 deletions
diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
index dba685548dc..0538eb1a5f3 100644
--- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
+++ b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
@@ -1072,7 +1072,6 @@ SDValue NVPTXTargetLowering::LowerCall(TargetLowering::CallLoweringInfo &CLI,
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(TargetLowering::CallLoweringInfo &CLI,
// 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),
diff --git a/llvm/test/CodeGen/NVPTX/param-align.ll b/llvm/test/CodeGen/NVPTX/param-align.ll
index 6d58fda59ae..75b6917265e 100644
--- a/llvm/test/CodeGen/NVPTX/param-align.ll
+++ b/llvm/test/CodeGen/NVPTX/param-align.ll
@@ -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
+}
OpenPOWER on IntegriCloud