ret <4 x float> %rb
}
-; Make sure that vectorization happens even if insertelements operations
-; must be rescheduled. The case here is from compiling Julia.
-define <4 x float> @reschedule_extract(<4 x float> %a, <4 x float> %b) {
-; CHECK-LABEL: @reschedule_extract(
-; CHECK: %1 = fadd <4 x float> %a, %b
- %a0 = extractelement <4 x float> %a, i32 0
- %b0 = extractelement <4 x float> %b, i32 0
- %c0 = fadd float %a0, %b0
- %v0 = insertelement <4 x float> undef, float %c0, i32 0
- %a1 = extractelement <4 x float> %a, i32 1
- %b1 = extractelement <4 x float> %b, i32 1
- %c1 = fadd float %a1, %b1
- %v1 = insertelement <4 x float> %v0, float %c1, i32 1
- %a2 = extractelement <4 x float> %a, i32 2
- %b2 = extractelement <4 x float> %b, i32 2
- %c2 = fadd float %a2, %b2
- %v2 = insertelement <4 x float> %v1, float %c2, i32 2
- %a3 = extractelement <4 x float> %a, i32 3
- %b3 = extractelement <4 x float> %b, i32 3
- %c3 = fadd float %a3, %b3
- %v3 = insertelement <4 x float> %v2, float %c3, i32 3
- ret <4 x float> %v3
-}
-
; Check that cost model for vectorization takes credit for
; instructions that are erased.
define <4 x float> @take_credit(<4 x float> %a, <4 x float> %b) {