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 4define 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; 17bb: 18 br label %bb1 19 20bb1: 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 58