diff --git a/lib/Target/NVPTX/NVPTXISelLowering.cpp b/lib/Target/NVPTX/NVPTXISelLowering.cpp index 828242db888..55caaad65b1 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 00000000000..03f5cfc6cb0 --- /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 +} +