[LLVM][IR] Use splat syntax when printing ConstantExpr based splats. (#116856)
[llvm-project.git] / llvm / test / Transforms / SLPVectorizer / X86 / phi-reordered-reshuffled.ll
blobe6fe80851a06a364d1947b60ce690998881bddf3
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2 ; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu -mcpu=znver2 < %s | FileCheck %s
4 define void @test() {
5 ; CHECK-LABEL: define void @test(
6 ; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
7 ; CHECK-NEXT:  bb:
8 ; CHECK-NEXT:    br label [[BB1:%.*]]
9 ; CHECK:       bb1:
10 ; CHECK-NEXT:    [[PHI:%.*]] = phi i32 [ 0, [[BB:%.*]] ], [ [[TMP2:%.*]], [[BB1]] ]
11 ; CHECK-NEXT:    [[TMP0:%.*]] = phi <2 x i32> [ zeroinitializer, [[BB]] ], [ [[TMP3:%.*]], [[BB1]] ]
12 ; CHECK-NEXT:    [[TMP1:%.*]] = shufflevector <2 x i32> [[TMP0]], <2 x i32> poison, <32 x i32> <i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>
13 ; CHECK-NEXT:    [[TMP2]] = call i32 @llvm.vector.reduce.mul.v32i32(<32 x i32> [[TMP1]])
14 ; CHECK-NEXT:    [[TMP3]] = shufflevector <2 x i32> [[TMP0]], <2 x i32> poison, <2 x i32> <i32 1, i32 0>
15 ; CHECK-NEXT:    br label [[BB1]]
17 bb:
18   br label %bb1
20 bb1:
21   %phi = phi i32 [ 0, %bb ], [ %mul33, %bb1 ]
22   %phi2 = phi i32 [ 0, %bb ], [ %phi3, %bb1 ]
23   %phi3 = phi i32 [ 0, %bb ], [ %phi2, %bb1 ]
24   %mul = mul i32 %phi2, %phi2
25   %mul4 = mul i32 %phi3, %mul
26   %mul5 = mul i32 %phi2, %mul4
27   %mul6 = mul i32 %phi3, %mul5
28   %mul7 = mul i32 %phi2, %mul6
29   %mul8 = mul i32 %phi3, %mul7
30   %mul9 = mul i32 %phi2, %mul8
31   %mul10 = mul i32 %phi3, %mul9
32   %mul11 = mul i32 %phi2, %mul10
33   %mul12 = mul i32 %phi3, %mul11
34   %mul13 = mul i32 %phi2, %mul12
35   %mul14 = mul i32 %phi3, %mul13
36   %mul15 = mul i32 %phi2, %mul14
37   %mul16 = mul i32 %phi3, %mul15
38   %mul17 = mul i32 %phi2, %mul16
39   %mul18 = mul i32 %phi3, %mul17
40   %mul19 = mul i32 %phi2, %mul18
41   %mul20 = mul i32 %phi3, %mul19
42   %mul21 = mul i32 %phi2, %mul20
43   %mul22 = mul i32 %phi3, %mul21
44   %mul23 = mul i32 %phi2, %mul22
45   %mul24 = mul i32 %phi3, %mul23
46   %mul25 = mul i32 %phi2, %mul24
47   %mul26 = mul i32 %phi3, %mul25
48   %mul27 = mul i32 %phi2, %mul26
49   %mul28 = mul i32 %phi3, %mul27
50   %mul29 = mul i32 %phi2, %mul28
51   %mul30 = mul i32 %phi3, %mul29
52   %mul31 = mul i32 %phi2, %mul30
53   %mul32 = mul i32 %phi3, %mul31
54   %mul33 = mul i32 %phi2, %mul32
55   br label %bb1