; REQUIRES: asserts

; RUN: opt -loop-vectorize -mtriple=arm64-apple-ios %s -S -debug -disable-output 2>&1 | FileCheck --check-prefix=CM %s
; RUN: opt -loop-vectorize -force-vector-width=2 -force-vector-interleave=1 %s -S | FileCheck --check-prefix=FORCED %s

; Test case from PR41294.

; Check scalar cost for extractvalue. The constant and loop invariant operands are free,
; leaving cost 3 for scalarizing the result + 2 for executing the op with VF 2.

; CM: LV: Scalar loop costs: 5.
; CM: LV: Found an estimated cost of 0 for VF 2 For instruction:   %a = extractvalue { i64, i64 } %sv, 0
; CM-NEXT: LV: Found an estimated cost of 0 for VF 2 For instruction:   %b = extractvalue { i64, i64 } %sv, 1

; Check that the extractvalue operands are actually free in vector code.

; FORCED-LABEL: vector.body:                                      ; preds = %vector.body, %vector.ph
; FORCED-NEXT:    %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
; FORCED-NEXT:    %0 = add i32 %index, 0
; FORCED-NEXT:    %1 = extractvalue { i64, i64 } %sv, 0
; FORCED-NEXT:    %2 = extractvalue { i64, i64 } %sv, 0
; FORCED-NEXT:    %3 = insertelement <2 x i64> poison, i64 %1, i32 0
; FORCED-NEXT:    %4 = insertelement <2 x i64> %3, i64 %2, i32 1
; FORCED-NEXT:    %5 = extractvalue { i64, i64 } %sv, 1
; FORCED-NEXT:    %6 = extractvalue { i64, i64 } %sv, 1
; FORCED-NEXT:    %7 = insertelement <2 x i64> poison, i64 %5, i32 0
; FORCED-NEXT:    %8 = insertelement <2 x i64> %7, i64 %6, i32 1
; FORCED-NEXT:    %9 = getelementptr i64, i64* %dst, i32 %0
; FORCED-NEXT:    %10 = add <2 x i64> %4, %8
; FORCED-NEXT:    %11 = getelementptr i64, i64* %9, i32 0
; FORCED-NEXT:    %12 = bitcast i64* %11 to <2 x i64>*
; FORCED-NEXT:    store <2 x i64> %10, <2 x i64>* %12, align 4
; FORCED-NEXT:    %index.next = add i32 %index, 2
; FORCED-NEXT:    %13 = icmp eq i32 %index.next, 0
; FORCED-NEXT:    br i1 %13, label %middle.block, label %vector.body, !llvm.loop !0

define void @test1(i64* %dst, {i64, i64} %sv) {
entry:
  br label %loop.body

loop.body:
  %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.body ]
  %a = extractvalue { i64, i64 } %sv, 0
  %b = extractvalue { i64, i64 } %sv, 1
  %addr = getelementptr i64, i64* %dst, i32 %iv
  %add = add i64 %a, %b
  store i64 %add, i64* %addr
  %iv.next = add nsw i32 %iv, 1
  %cond = icmp ne i32 %iv.next, 0
  br i1 %cond, label %loop.body, label %exit

exit:
  ret void
}


; Similar to the test case above, but checks getVectorCallCost as well.
declare float @pow(float, float) readnone nounwind

; CM: LV: Scalar loop costs: 14.
; CM: LV: Found an estimated cost of 0 for VF 2 For instruction:   %a = extractvalue { float, float } %sv, 0
; CM-NEXT: LV: Found an estimated cost of 0 for VF 2 For instruction:   %b = extractvalue { float, float } %sv, 1

; FORCED-LABEL: define void @test_getVectorCallCost

; FORCED-LABEL: vector.body:                                      ; preds = %vector.body, %vector.ph
; FORCED-NEXT:    %index = phi i32 [ 0, %vector.ph ], [ %index.next, %vector.body ]
; FORCED-NEXT:    %0 = add i32 %index, 0
; FORCED-NEXT:    %1 = extractvalue { float, float } %sv, 0
; FORCED-NEXT:    %2 = extractvalue { float, float } %sv, 0
; FORCED-NEXT:    %3 = insertelement <2 x float> poison, float %1, i32 0
; FORCED-NEXT:    %4 = insertelement <2 x float> %3, float %2, i32 1
; FORCED-NEXT:    %5 = extractvalue { float, float } %sv, 1
; FORCED-NEXT:    %6 = extractvalue { float, float } %sv, 1
; FORCED-NEXT:    %7 = insertelement <2 x float> poison, float %5, i32 0
; FORCED-NEXT:    %8 = insertelement <2 x float> %7, float %6, i32 1
; FORCED-NEXT:    %9 = getelementptr float, float* %dst, i32 %0
; FORCED-NEXT:    %10 = call <2 x float> @llvm.pow.v2f32(<2 x float> %4, <2 x float> %8)
; FORCED-NEXT:    %11 = getelementptr float, float* %9, i32 0
; FORCED-NEXT:    %12 = bitcast float* %11 to <2 x float>*
; FORCED-NEXT:    store <2 x float> %10, <2 x float>* %12, align 4
; FORCED-NEXT:    %index.next = add i32 %index, 2
; FORCED-NEXT:    %13 = icmp eq i32 %index.next, 0
; FORCED-NEXT:    br i1 %13, label %middle.block, label %vector.body, !llvm.loop !4

define void @test_getVectorCallCost(float* %dst, {float, float} %sv) {
entry:
  br label %loop.body

loop.body:
  %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop.body ]
  %a = extractvalue { float, float } %sv, 0
  %b = extractvalue { float, float } %sv, 1
  %addr = getelementptr float, float* %dst, i32 %iv
  %p = call float @pow(float %a, float %b)
  store float %p, float* %addr
  %iv.next = add nsw i32 %iv, 1
  %cond = icmp ne i32 %iv.next, 0
  br i1 %cond, label %loop.body, label %exit

exit:
  ret void
}
