diff --git a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp b/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp index 828242db8880..55caaad65b16 100644 --- a/llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp +++ b/llvm/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/llvm/test/CodeGen/NVPTX/vec8.ll b/llvm/test/CodeGen/NVPTX/vec8.ll new file mode 100644 index 000000000000..03f5cfc6cb01 --- /dev/null +++ b/llvm/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 +} +