If the copyables are parts of the deleted nodes, need to check the actual tree to correctly handling the scheduling of copyables
83 lines
4.9 KiB
LLVM
83 lines
4.9 KiB
LLVM
; 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: [[TMP6:%.*]] = fmul double [[TMP5]], 0.000000e+00
|
|
; CHECK-NEXT: [[TMP7:%.*]] = load double, ptr [[TMP1]], align 8
|
|
; 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: [[TMP12:%.*]] = fadd double [[TMP2]], 0.000000e+00
|
|
; 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
|
|
}
|
|
|