50 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt --passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3 4define i1 @test(double %circ_radius, ptr %x) {5; CHECK-LABEL: define i1 @test(6; CHECK-SAME: double [[CIRC_RADIUS:%.*]], ptr [[X:%.*]]) {7; CHECK-NEXT: [[ENTRY:.*:]]8; CHECK-NEXT: [[TMP0:%.*]] = load double, ptr [[X]], align 89; CHECK-NEXT: [[ADD20:%.*]] = fadd double [[TMP0]], 0.000000e+0010; CHECK-NEXT: [[TMP1:%.*]] = insertelement <4 x double> poison, double [[CIRC_RADIUS]], i32 311; CHECK-NEXT: [[TMP2:%.*]] = insertelement <4 x double> [[TMP1]], double [[TMP0]], i32 012; CHECK-NEXT: [[TMP3:%.*]] = insertelement <4 x double> [[TMP2]], double [[ADD20]], i32 213; CHECK-NEXT: [[TMP4:%.*]] = shufflevector <4 x double> [[TMP3]], <4 x double> poison, <4 x i32> <i32 0, i32 0, i32 2, i32 3>14; CHECK-NEXT: [[TMP5:%.*]] = shufflevector <4 x double> [[TMP3]], <4 x double> <double 0.000000e+00, double poison, double 0.000000e+00, double 0.000000e+00>, <4 x i32> <i32 4, i32 0, i32 6, i32 7>15; CHECK-NEXT: [[TMP6:%.*]] = fmul <4 x double> [[TMP4]], [[TMP5]]16; CHECK-NEXT: [[TMP7:%.*]] = shufflevector <4 x double> [[TMP6]], <4 x double> <double poison, double poison, double 0.000000e+00, double poison>, <4 x i32> <i32 1, i32 2, i32 6, i32 0>17; CHECK-NEXT: [[TMP8:%.*]] = fadd <4 x double> [[TMP6]], [[TMP7]]18; CHECK-NEXT: [[TMP9:%.*]] = call <4 x double> @llvm.sqrt.v4f64(<4 x double> [[TMP8]])19; CHECK-NEXT: [[TMP10:%.*]] = fcmp olt <4 x double> [[TMP9]], splat (double 1.000000e+00)20; CHECK-NEXT: [[TMP11:%.*]] = call i1 @llvm.vector.reduce.or.v4i1(<4 x i1> [[TMP10]])21; CHECK-NEXT: ret i1 [[TMP11]]22;23entry:24 %0 = load double, ptr %x, align 825 %square = fmul double %0, 0.000000e+0026 %square105 = fmul double %0, %027 %add = fadd double %square, %square10528 %sqrt116 = call double @llvm.sqrt.f64(double %add)29 %add20 = fadd double %0, 0.000000e+0030 %square106 = fmul double %add20, 0.000000e+0031 %add25 = fadd double %square105, %square10632 %sqrt115 = call double @llvm.sqrt.f64(double %add25)33 %square109 = fmul double %circ_radius, 0.000000e+0034 %add39 = fadd double %square106, 0.000000e+0035 %sqrt114 = call double @llvm.sqrt.f64(double %add39)36 %add50 = fadd double %square, %square10937 %sqrt = call double @llvm.sqrt.f64(double %add50)38 %cmp52 = fcmp olt double %sqrt116, 1.000000e+0039 %cmp54 = fcmp olt double %sqrt115, 1.000000e+0040 %or.cond = or i1 %cmp52, %cmp5441 %cmp57 = fcmp olt double %sqrt114, 1.000000e+0042 %or.cond112 = or i1 %or.cond, %cmp5743 %cmp60 = fcmp olt double %sqrt, 1.000000e+0044 %or.cond113 = or i1 %or.cond112, %cmp6045 ret i1 %or.cond11346}47 48declare double @llvm.sqrt.f64(double)49 50