diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp index d935be7669f05..3b18e39d784b2 100644 --- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp @@ -6257,7 +6257,8 @@ InstructionCost X86TTIImpl::getInterleavedMemoryOpCostAVX512( AddressSpace, CostKind); unsigned VF = VecTy->getNumElements() / Factor; - MVT VT = MVT::getVectorVT(MVT::getVT(VecTy->getScalarType()), VF); + MVT VT = + MVT::getVectorVT(TLI->getSimpleValueType(DL, VecTy->getScalarType()), VF); InstructionCost MaskCost; if (UseMaskedMemOp) { diff --git a/llvm/test/Analysis/CostModel/X86/handle-iptr-with-data-layout-to-not-assert.ll b/llvm/test/Analysis/CostModel/X86/handle-iptr-with-data-layout-to-not-assert.ll new file mode 100644 index 0000000000000..d0d414a869636 --- /dev/null +++ b/llvm/test/Analysis/CostModel/X86/handle-iptr-with-data-layout-to-not-assert.ll @@ -0,0 +1,35 @@ +; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --filter "LV: Found an estimated cost of [0-9] for VF [0-9] For instruction:\s*store ptr %[0-9], ptr %__last" --filter "LV: Found an estimated cost of [0-9] for VF [0-9] For instruction:\s*store ptr %[0-9]" --version 5 +; REQUIRES: asserts +; RUN: opt -passes=loop-vectorize -debug-only=loop-vectorize -S < %s 2>&1 | FileCheck %s +target triple = "x86_64-unknown-linux-gnu" + +define ptr @foo(ptr %__first, ptr %__last) #0 { +; CHECK-LABEL: 'foo' +; CHECK: LV: Found an estimated cost of 1 for VF 1 For instruction: store ptr %0, ptr %__last, align 8 +; CHECK: LV: Found an estimated cost of 2 for VF 2 For instruction: store ptr %0, ptr %__last, align 8 +; CHECK: LV: Found an estimated cost of 3 for VF 4 For instruction: store ptr %0, ptr %__last, align 8 +; CHECK: LV: Found an estimated cost of 3 for VF 8 For instruction: store ptr %0, ptr %__last, align 8 +; +entry: + %cmp.not1 = icmp eq ptr %__first, %__last + br i1 %cmp.not1, label %for.end, label %for.body.preheader + +for.body.preheader: + br label %for.body + +for.body: + %__first.addr.02 = phi ptr [ %incdec.ptr, %for.body ], [ %__first, %for.body.preheader ] + %0 = load ptr, ptr %__first.addr.02, align 8 + store ptr %0, ptr %__last, align 8 + %incdec.ptr = getelementptr inbounds i8, ptr %__first.addr.02, i64 16 + %cmp.not = icmp eq ptr %incdec.ptr, %__last + br i1 %cmp.not, label %for.end.loopexit, label %for.body + +for.end.loopexit: + br label %for.end + +for.end: + ret ptr null +} + +attributes #0 = { "target-cpu"="znver4" }