|
| 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 |
| 3 | + |
| 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]] |
| 16 | +; |
| 17 | +bb: |
| 18 | + br label %bb1 |
| 19 | + |
| 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 |
| 56 | +} |
| 57 | + |
0 commit comments