1ddbc8f33SElvina Yakubova; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2 2*e0bd8d34SElvina Yakubova; RUN: %if x86-registered-target %{ opt -passes=slp-vectorizer -S -mtriple=x86_64 < %s | FileCheck %s %} 3*e0bd8d34SElvina Yakubova; RUN: %if aarch64-registered-target %{ opt -passes=slp-vectorizer -S -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s %} 4ddbc8f33SElvina Yakubova 5ddbc8f33SElvina Yakubovadefine double @test() { 6ddbc8f33SElvina Yakubova; CHECK-LABEL: define double @test() { 7ddbc8f33SElvina Yakubova; CHECK-NEXT: entry: 8ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP0:%.*]] = load double, ptr null, align 8 9ddbc8f33SElvina Yakubova; CHECK-NEXT: br label [[COND_TRUE:%.*]] 10ddbc8f33SElvina Yakubova; CHECK: cond.true: 11ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP1:%.*]] = insertelement <2 x double> <double 0.000000e+00, double poison>, double [[TMP0]], i32 1 12ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP2:%.*]] = fmul <2 x double> zeroinitializer, [[TMP1]] 13ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <2 x double> [[TMP1]], <2 x double> poison, <2 x i32> <i32 1, i32 1> 14ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP4:%.*]] = fmul <2 x double> [[TMP3]], zeroinitializer 15ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP5:%.*]] = fmul <2 x double> [[TMP3]], zeroinitializer 16ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP6:%.*]] = shufflevector <2 x double> [[TMP2]], <2 x double> [[TMP1]], <2 x i32> <i32 0, i32 3> 17ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP7:%.*]] = fmul <2 x double> [[TMP6]], zeroinitializer 18ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP8:%.*]] = fsub <2 x double> [[TMP7]], zeroinitializer 19ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP9:%.*]] = fmul <2 x double> [[TMP7]], zeroinitializer 20ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP10:%.*]] = shufflevector <2 x double> [[TMP8]], <2 x double> [[TMP9]], <2 x i32> <i32 0, i32 3> 21ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP11:%.*]] = fadd <2 x double> zeroinitializer, [[TMP10]] 22ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP12:%.*]] = fmul <2 x double> zeroinitializer, [[TMP10]] 23ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP13:%.*]] = shufflevector <2 x double> [[TMP11]], <2 x double> [[TMP12]], <2 x i32> <i32 0, i32 3> 24ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP14:%.*]] = fsub <2 x double> [[TMP13]], [[TMP2]] 25ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP15:%.*]] = fadd <2 x double> [[TMP13]], [[TMP2]] 26ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP16:%.*]] = shufflevector <2 x double> [[TMP14]], <2 x double> [[TMP15]], <2 x i32> <i32 0, i32 3> 27ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP17:%.*]] = fsub <2 x double> [[TMP16]], zeroinitializer 28ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP18:%.*]] = fmul <2 x double> [[TMP4]], zeroinitializer 29ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP19:%.*]] = fmul <2 x double> zeroinitializer, [[TMP18]] 30ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP20:%.*]] = fadd <2 x double> [[TMP19]], [[TMP17]] 31ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP21:%.*]] = fsub <2 x double> [[TMP20]], zeroinitializer 32ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP22:%.*]] = fmul <2 x double> [[TMP5]], zeroinitializer 33ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP23:%.*]] = fmul <2 x double> zeroinitializer, [[TMP22]] 34ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP24:%.*]] = fadd <2 x double> [[TMP23]], [[TMP21]] 35ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP25:%.*]] = extractelement <2 x double> [[TMP24]], i32 0 36ddbc8f33SElvina Yakubova; CHECK-NEXT: [[TMP26:%.*]] = extractelement <2 x double> [[TMP24]], i32 1 37ddbc8f33SElvina Yakubova; CHECK-NEXT: [[ADD29:%.*]] = fadd double [[TMP25]], [[TMP26]] 38ddbc8f33SElvina Yakubova; CHECK-NEXT: ret double [[ADD29]] 39ddbc8f33SElvina Yakubova; 40ddbc8f33SElvina Yakubovaentry: 41ddbc8f33SElvina Yakubova %0 = load double, ptr null, align 8 42ddbc8f33SElvina Yakubova br label %cond.true 43ddbc8f33SElvina Yakubova 44ddbc8f33SElvina Yakubovacond.true: 45ddbc8f33SElvina Yakubova %mul13 = fmul double %0, 0.000000e+00 46ddbc8f33SElvina Yakubova %mul14 = fmul double %0, 0.000000e+00 47ddbc8f33SElvina Yakubova %mul15 = fmul double %mul14, 0.000000e+00 48ddbc8f33SElvina Yakubova %mul16 = fmul double 0.000000e+00, %mul15 49ddbc8f33SElvina Yakubova %add17 = fadd double %mul13, %mul16 50ddbc8f33SElvina Yakubova %sub18 = fsub double %add17, 0.000000e+00 51ddbc8f33SElvina Yakubova %mul19 = fmul double %0, 0.000000e+00 52ddbc8f33SElvina Yakubova %mul20 = fmul double %mul19, 0.000000e+00 53ddbc8f33SElvina Yakubova %mul21 = fmul double %mul20, 0.000000e+00 54ddbc8f33SElvina Yakubova %add22 = fadd double %sub18, %mul21 55ddbc8f33SElvina Yakubova %sub23 = fsub double %add22, 0.000000e+00 56ddbc8f33SElvina Yakubova %mul24 = fmul double %0, 0.000000e+00 57ddbc8f33SElvina Yakubova %mul25 = fmul double %mul24, 0.000000e+00 58ddbc8f33SElvina Yakubova %mul26 = fmul double 0.000000e+00, %mul25 59ddbc8f33SElvina Yakubova %add27 = fadd double %mul26, %sub23 60ddbc8f33SElvina Yakubova %mul = fmul double 0.000000e+00, 0.000000e+00 61ddbc8f33SElvina Yakubova %mul1 = fmul double %mul, 0.000000e+00 62ddbc8f33SElvina Yakubova %sub = fsub double %mul1, 0.000000e+00 63ddbc8f33SElvina Yakubova %add = fadd double 0.000000e+00, %sub 64ddbc8f33SElvina Yakubova %sub2 = fsub double %add, %mul 65ddbc8f33SElvina Yakubova %sub3 = fsub double %sub2, 0.000000e+00 66ddbc8f33SElvina Yakubova %mul4 = fmul double %0, 0.000000e+00 67ddbc8f33SElvina Yakubova %mul5 = fmul double %mul4, 0.000000e+00 68ddbc8f33SElvina Yakubova %mul6 = fmul double 0.000000e+00, %mul5 69ddbc8f33SElvina Yakubova %add7 = fadd double %mul6, %sub3 70ddbc8f33SElvina Yakubova %sub8 = fsub double %add7, 0.000000e+00 71ddbc8f33SElvina Yakubova %mul9 = fmul double %0, 0.000000e+00 72ddbc8f33SElvina Yakubova %mul10 = fmul double %mul9, 0.000000e+00 73ddbc8f33SElvina Yakubova %mul11 = fmul double 0.000000e+00, %mul10 74ddbc8f33SElvina Yakubova %add12 = fadd double %mul11, %sub8 75ddbc8f33SElvina Yakubova %add29 = fadd double %add12, %add27 76ddbc8f33SElvina Yakubova ret double %add29 77ddbc8f33SElvina Yakubova} 78