| ; 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 |
| } |
| |