Re-land [openmp] Fix warnings when building on Windows with latest MSVC or Clang...
[llvm-project.git] / llvm / test / Transforms / SLPVectorizer / X86 / extracts-with-undefs.ll
blobabf277fb8ba348c4008d435c669736266faf2887
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
4 define void @test() {
5 ; CHECK-LABEL: @test(
6 ; CHECK-NEXT:  entry:
7 ; CHECK-NEXT:    br label [[BODY:%.*]]
8 ; CHECK:       body:
9 ; CHECK-NEXT:    [[PHI1:%.*]] = phi double [ 0.000000e+00, [[ENTRY:%.*]] ], [ 0.000000e+00, [[BODY]] ]
10 ; CHECK-NEXT:    [[PHI2:%.*]] = phi double [ 0.000000e+00, [[ENTRY]] ], [ 0.000000e+00, [[BODY]] ]
11 ; CHECK-NEXT:    [[MUL_I478_I:%.*]] = fmul fast double [[PHI1]], 0.000000e+00
12 ; CHECK-NEXT:    [[MUL7_I485_I:%.*]] = fmul fast double undef, 0.000000e+00
13 ; CHECK-NEXT:    [[ADD8_I_I:%.*]] = fadd fast double [[MUL_I478_I]], [[MUL7_I485_I]]
14 ; CHECK-NEXT:    [[CMP42_I:%.*]] = fcmp fast ole double [[ADD8_I_I]], 0.000000e+00
15 ; CHECK-NEXT:    br i1 false, label [[BODY]], label [[EXIT:%.*]]
16 ; CHECK:       exit:
17 ; CHECK-NEXT:    br i1 false, label [[IF_THEN135_I:%.*]], label [[IF_END209_I:%.*]]
18 ; CHECK:       if.then135.i:
19 ; CHECK-NEXT:    [[CMP145_I:%.*]] = fcmp fast olt double [[PHI1]], 0.000000e+00
20 ; CHECK-NEXT:    [[CMP152_I:%.*]] = fcmp fast olt double [[PHI2]], 0.000000e+00
21 ; CHECK-NEXT:    [[TMP0:%.*]] = insertelement <2 x i1> <i1 poison, i1 false>, i1 [[CMP152_I]], i32 0
22 ; CHECK-NEXT:    [[TMP1:%.*]] = select <2 x i1> [[TMP0]], <2 x double> zeroinitializer, <2 x double> zeroinitializer
23 ; CHECK-NEXT:    [[TMP2:%.*]] = fmul fast <2 x double> zeroinitializer, [[TMP1]]
24 ; CHECK-NEXT:    [[TMP3:%.*]] = fmul fast <2 x double> [[TMP2]], zeroinitializer
25 ; CHECK-NEXT:    [[TMP4:%.*]] = fadd fast <2 x double> [[TMP3]], zeroinitializer
26 ; CHECK-NEXT:    br label [[IF_END209_I]]
27 ; CHECK:       if.end209.i:
28 ; CHECK-NEXT:    [[TMP5:%.*]] = phi <2 x double> [ [[TMP4]], [[IF_THEN135_I]] ], [ zeroinitializer, [[EXIT]] ]
29 ; CHECK-NEXT:    ret void
31 entry:
32   br label %body
34 body:
35   %phi1 = phi double [ 0.000000e+00, %entry ], [ 0.000000e+00, %body ]
36   %phi2 = phi double [ 0.000000e+00, %entry ], [ 0.000000e+00, %body ]
37   %mul.i478.i = fmul fast double %phi1, 0.000000e+00
38   %mul7.i485.i = fmul fast double undef, 0.000000e+00
39   %add8.i.i = fadd fast double %mul.i478.i, %mul7.i485.i
40   %cmp42.i = fcmp fast ole double %add8.i.i, 0.000000e+00
41   br i1 false, label %body, label %exit
43 exit:
44   br i1 false, label %if.then135.i, label %if.end209.i
46 if.then135.i:
47   %cmp145.i = fcmp fast olt double %phi1, 0.000000e+00
48   %0 = select i1 false, double 0.000000e+00, double 0.000000e+00
49   %cmp152.i = fcmp fast olt double %phi2, 0.000000e+00
50   %1 = select i1 %cmp152.i, double 0.000000e+00, double 0.000000e+00
51   %mul166.i = fmul fast double 0.000000e+00, %0
52   %mul177.i = fmul fast double %mul166.i, 0.000000e+00
53   %add178.i = fadd fast double %mul177.i, 0.000000e+00
54   %mul181.i = fmul fast double 0.000000e+00, %1
55   %mul182.i = fmul fast double %mul181.i, 0.000000e+00
56   %add183.i = fadd fast double %mul182.i, 0.000000e+00
57   br label %if.end209.i
59 if.end209.i:
60   %drdys.1.i = phi double [ %add183.i, %if.then135.i ], [ 0.000000e+00, %exit ]
61   %dbdxs.1.i = phi double [ %add178.i, %if.then135.i ], [ 0.000000e+00, %exit ]
62   ret void