From 0df3ce333b90cb42ee190a80b310ba89ff4cbeb3 Mon Sep 17 00:00:00 2001 From: Justin Holewinski Date: Mon, 11 Nov 2013 19:28:16 +0000 Subject: [NVPTX] Fix logic error in loading vector parameters of more than 4 components git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194409 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/NVPTX/NVPTXISelLowering.cpp | 2 +- test/CodeGen/NVPTX/vec8.ll | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 test/CodeGen/NVPTX/vec8.ll diff --git a/lib/Target/NVPTX/NVPTXISelLowering.cpp b/lib/Target/NVPTX/NVPTXISelLowering.cpp index 828242db88..55caaad65b 100644 --- a/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/lib/Target/NVPTX/NVPTXISelLowering.cpp @@ -1595,7 +1595,7 @@ SDValue NVPTXTargetLowering::LowerFormalArguments( } Ofst += TD->getTypeAllocSize(VecVT.getTypeForEVT(F->getContext())); } - InsIdx += VecSize; + InsIdx += NumElts; } if (NumElts > 0) diff --git a/test/CodeGen/NVPTX/vec8.ll b/test/CodeGen/NVPTX/vec8.ll new file mode 100644 index 0000000000..03f5cfc6cb --- /dev/null +++ b/test/CodeGen/NVPTX/vec8.ll @@ -0,0 +1,13 @@ +; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s + +target triple = "nvptx-unknown-cuda" + +; CHECK: .visible .func foo +define void @foo(<8 x i8> %a, i8* %b) { + %t0 = extractelement <8 x i8> %a, i32 0 +; CHECK-DAG: ld.param.v4.u8 +; CHECK-DAG: ld.param.u32 + store i8 %t0, i8* %b + ret void +} + -- cgit v1.2.3