xref: /llvm-project/llvm/test/Transforms/SLPVectorizer/buildvector-nodes-dependency.ll (revision e0bd8d3485075d24ecff2b4f5d9e2117853bd08b)
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