blob: 8d7cddc8ecaec96ce33bc58de92b55293a52d4ab [file]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu -mcpu=znver4 < %s | FileCheck %s
define void @test(ptr %0, ptr %1, double %2) {
; CHECK-LABEL: define void @test(
; CHECK-SAME: ptr [[TMP0:%.*]], ptr [[TMP1:%.*]], double [[TMP2:%.*]]) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[ITER_CHECK:.*]]:
; CHECK-NEXT: [[TMP4:%.*]] = insertelement <2 x double> <double poison, double -0.000000e+00>, double [[TMP2]], i64 0
; CHECK-NEXT: br label %[[DOTLR_PH383_US_US_US_US:.*]]
; CHECK: [[DOTLR_PH383_US_US_US_US]]:
; CHECK-NEXT: [[TMP3:%.*]] = phi <4 x double> [ [[TMP26:%.*]], %[[DOT_CRIT_EDGE384_US_US_US_US:.*]] ], [ zeroinitializer, %[[ITER_CHECK]] ]
; CHECK-NEXT: br i1 false, label %[[DOT_CRIT_EDGE384_US_US_US_US]], label %[[BB4:.*]]
; CHECK: [[BB4]]:
; CHECK-NEXT: [[TMP13:%.*]] = load double, ptr [[TMP0]], align 8
; CHECK-NEXT: [[TMP7:%.*]] = load double, ptr [[TMP1]], align 8
; CHECK-NEXT: [[TMP15:%.*]] = fadd <2 x double> [[TMP4]], zeroinitializer
; CHECK-NEXT: [[TMP12:%.*]] = load double, ptr [[TMP0]], align 8
; CHECK-NEXT: [[TMP16:%.*]] = fmul double [[TMP13]], 0.000000e+00
; CHECK-NEXT: [[TMP10:%.*]] = fadd double [[TMP7]], [[TMP16]]
; CHECK-NEXT: [[TMP11:%.*]] = fadd double [[TMP7]], [[TMP16]]
; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x double> poison, double [[TMP12]], i64 0
; CHECK-NEXT: [[TMP17:%.*]] = insertelement <2 x double> [[TMP14]], double [[TMP13]], i64 1
; CHECK-NEXT: [[TMP18:%.*]] = fadd <2 x double> [[TMP15]], [[TMP17]]
; CHECK-NEXT: br label %[[BB19:.*]]
; CHECK: [[BB19]]:
; CHECK-NEXT: br label %[[BB20:.*]]
; CHECK: [[BB20]]:
; CHECK-NEXT: [[TMP19:%.*]] = insertelement <4 x double> poison, double [[TMP11]], i64 0
; CHECK-NEXT: [[TMP21:%.*]] = shufflevector <2 x double> [[TMP18]], <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
; CHECK-NEXT: [[TMP20:%.*]] = shufflevector <4 x double> [[TMP19]], <4 x double> [[TMP21]], <4 x i32> <i32 0, i32 4, i32 5, i32 poison>
; CHECK-NEXT: [[TMP23:%.*]] = insertelement <4 x double> [[TMP20]], double [[TMP10]], i64 3
; CHECK-NEXT: [[TMP24:%.*]] = fmul <4 x double> [[TMP23]], <double 0.000000e+00, double 1.000000e+00, double 1.000000e+00, double 0.000000e+00>
; CHECK-NEXT: [[TMP25:%.*]] = fadd <4 x double> [[TMP24]], [[TMP3]]
; CHECK-NEXT: br label %[[DOT_CRIT_EDGE384_US_US_US_US]]
; CHECK: [[DOT_CRIT_EDGE384_US_US_US_US]]:
; CHECK-NEXT: [[TMP26]] = phi <4 x double> [ [[TMP25]], %[[BB20]] ], [ zeroinitializer, %[[DOTLR_PH383_US_US_US_US]] ]
; CHECK-NEXT: br label %[[DOTLR_PH383_US_US_US_US]]
;
iter.check:
br label %.lr.ph383.us.us.us.us
.lr.ph383.us.us.us.us: ; preds = %._crit_edge384.us.us.us.us, %iter.check
%.2277404.us.us.us.us = phi double [ %.4279.us.us.us.us, %._crit_edge384.us.us.us.us ], [ 0.000000e+00, %iter.check ]
%.2287402.us.us.us.us = phi double [ %.4289.us.us.us.us, %._crit_edge384.us.us.us.us ], [ 0.000000e+00, %iter.check ]
%.2292401.us.us.us.us = phi double [ %.4294.us.us.us.us, %._crit_edge384.us.us.us.us ], [ 0.000000e+00, %iter.check ]
%.2297400.us.us.us.us = phi double [ %.4299.us.us.us.us, %._crit_edge384.us.us.us.us ], [ 0.000000e+00, %iter.check ]
br i1 false, label %._crit_edge384.us.us.us.us, label %3
3: ; preds = %.lr.ph383.us.us.us.us
%4 = load double, ptr %0, align 8
%5 = fmul double %4, 0.000000e+00
%6 = load double, ptr %1, align 8
%7 = fadd double %6, %5
%8 = fadd double %6, %5
%9 = fadd double %4, 0.000000e+00
%10 = fadd double %2, 0.000000e+00
%11 = load double, ptr %0, align 8
%12 = fadd double %10, %11
br label %13
13: ; preds = %3
br label %14
14: ; preds = %13
%15 = fmul double %7, 0.000000e+00
%16 = fadd double %15, %.2277404.us.us.us.us
%17 = fmul double %8, 0.000000e+00
%18 = fadd double %17, %.2297400.us.us.us.us
%19 = fadd double %9, %.2287402.us.us.us.us
%20 = fadd double %12, %.2292401.us.us.us.us
br label %._crit_edge384.us.us.us.us
._crit_edge384.us.us.us.us: ; preds = %14, %.lr.ph383.us.us.us.us
%.4299.us.us.us.us = phi double [ %18, %14 ], [ 0.000000e+00, %.lr.ph383.us.us.us.us ]
%.4294.us.us.us.us = phi double [ %20, %14 ], [ 0.000000e+00, %.lr.ph383.us.us.us.us ]
%.4289.us.us.us.us = phi double [ %19, %14 ], [ 0.000000e+00, %.lr.ph383.us.us.us.us ]
%.4279.us.us.us.us = phi double [ %16, %14 ], [ 0.000000e+00, %.lr.ph383.us.us.us.us ]
br label %.lr.ph383.us.us.us.us
}