blob: f70acd0e3de2133e083d393857c7086e7e91a08b [file] [log] [blame] [edit]
; 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: br label %[[DOTLR_PH383_US_US_US_US:.*]]
; CHECK: [[_LR_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: [[TMP5:%.*]] = load double, ptr [[TMP0]], align 8
; CHECK-NEXT: [[TMP7:%.*]] = load double, ptr [[TMP1]], align 8
; CHECK-NEXT: [[TMP12:%.*]] = fadd double [[TMP2]], 0.000000e+00
; CHECK-NEXT: [[TMP6:%.*]] = fmul double [[TMP5]], 0.000000e+00
; CHECK-NEXT: [[TMP8:%.*]] = insertelement <2 x double> poison, double [[TMP5]], i32 0
; CHECK-NEXT: [[TMP9:%.*]] = insertelement <2 x double> [[TMP8]], double [[TMP7]], i32 1
; CHECK-NEXT: [[TMP10:%.*]] = insertelement <2 x double> <double 0.000000e+00, double poison>, double [[TMP6]], i32 1
; CHECK-NEXT: [[TMP11:%.*]] = fadd <2 x double> [[TMP9]], [[TMP10]]
; CHECK-NEXT: [[TMP13:%.*]] = load double, ptr [[TMP0]], align 8
; CHECK-NEXT: [[TMP14:%.*]] = insertelement <2 x double> poison, double [[TMP7]], i32 0
; CHECK-NEXT: [[TMP15:%.*]] = insertelement <2 x double> [[TMP14]], double [[TMP13]], i32 1
; CHECK-NEXT: [[TMP16:%.*]] = insertelement <2 x double> poison, double [[TMP6]], i32 0
; CHECK-NEXT: [[TMP17:%.*]] = insertelement <2 x double> [[TMP16]], double [[TMP12]], i32 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: [[TMP21:%.*]] = shufflevector <2 x double> [[TMP18]], <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
; CHECK-NEXT: [[TMP22:%.*]] = shufflevector <2 x double> [[TMP11]], <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
; CHECK-NEXT: [[TMP23:%.*]] = shufflevector <4 x double> [[TMP21]], <4 x double> [[TMP22]], <4 x i32> <i32 0, i32 1, i32 4, i32 5>
; 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: [[__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
}