78 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -S --passes=slp-vectorizer -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s3 4define void @test(i32 %arg) {5; CHECK-LABEL: define void @test(6; CHECK-SAME: i32 [[ARG:%.*]]) {7; CHECK-NEXT: [[BB:.*]]:8; CHECK-NEXT: br label %[[BB1:.*]]9; CHECK: [[BB1]]:10; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[TMP5:%.*]], %[[BB1]] ]11; CHECK-NEXT: [[PHI2:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[ADD24:%.*]], %[[BB1]] ]12; CHECK-NEXT: [[PHI3:%.*]] = phi i32 [ 0, %[[BB]] ], [ [[XOR26:%.*]], %[[BB1]] ]13; CHECK-NEXT: [[ADD:%.*]] = add i32 [[PHI2]], 014; CHECK-NEXT: [[ADD4:%.*]] = add i32 [[PHI2]], 015; CHECK-NEXT: [[XOR:%.*]] = xor i32 [[ADD]], [[ADD4]]16; CHECK-NEXT: [[ADD23:%.*]] = add i32 [[PHI]], 017; CHECK-NEXT: [[ADD6:%.*]] = add i32 [[PHI2]], 018; CHECK-NEXT: [[ADD7:%.*]] = add i32 [[PHI2]], 019; CHECK-NEXT: [[XOR8:%.*]] = xor i32 [[ADD6]], [[XOR]]20; CHECK-NEXT: [[XOR9:%.*]] = xor i32 [[XOR8]], [[ADD23]]21; CHECK-NEXT: [[OP_RDX1:%.*]] = xor i32 [[XOR9]], [[ADD7]]22; CHECK-NEXT: [[OP_RDX2:%.*]] = add i32 [[PHI]], 023; CHECK-NEXT: [[OP_RDX:%.*]] = add i32 [[PHI2]], 024; CHECK-NEXT: [[ADD13:%.*]] = add i32 [[PHI2]], 025; CHECK-NEXT: [[OP_RDX3:%.*]] = xor i32 [[OP_RDX]], [[OP_RDX1]]26; CHECK-NEXT: [[OP_RDX4:%.*]] = xor i32 [[OP_RDX3]], [[OP_RDX2]]27; CHECK-NEXT: [[XOR16:%.*]] = xor i32 [[OP_RDX4]], [[ADD13]]28; CHECK-NEXT: [[ADD17:%.*]] = add i32 [[PHI]], 029; CHECK-NEXT: [[ADD18:%.*]] = add i32 [[PHI2]], 030; CHECK-NEXT: [[ADD19:%.*]] = add i32 [[PHI2]], 031; CHECK-NEXT: [[XOR20:%.*]] = xor i32 [[ADD18]], [[XOR16]]32; CHECK-NEXT: [[XOR21:%.*]] = xor i32 [[XOR20]], [[ADD17]]33; CHECK-NEXT: [[XOR22:%.*]] = xor i32 [[XOR21]], [[ADD19]]34; CHECK-NEXT: [[ADD25:%.*]] = add i32 [[PHI2]], 035; CHECK-NEXT: [[ADD24]] = add i32 [[ARG]], 036; CHECK-NEXT: [[XOR25:%.*]] = xor i32 [[ADD25]], [[XOR22]]37; CHECK-NEXT: [[XOR26]] = xor i32 [[XOR25]], [[ADD24]]38; CHECK-NEXT: [[TMP5]] = add i32 1, 039; CHECK-NEXT: [[ICMP:%.*]] = icmp ult i32 [[TMP5]], 040; CHECK-NEXT: br label %[[BB1]]41;42bb:43 br label %bb144 45bb1:46 %phi = phi i32 [ 0, %bb ], [ %add27, %bb1 ]47 %phi2 = phi i32 [ 0, %bb ], [ %add24, %bb1 ]48 %phi3 = phi i32 [ 0, %bb ], [ %xor26, %bb1 ]49 %add = add i32 %phi2, 050 %add4 = add i32 %phi2, 051 %xor = xor i32 %add, %add452 %add5 = add i32 %phi, 053 %add6 = add i32 %phi2, 054 %add7 = add i32 %phi2, 055 %xor8 = xor i32 %add6, %xor56 %xor9 = xor i32 %xor8, %add557 %xor10 = xor i32 %xor9, %add758 %add11 = add i32 %phi, 059 %add12 = add i32 %phi2, 060 %add13 = add i32 %phi2, 061 %xor14 = xor i32 %add12, %xor1062 %xor15 = xor i32 %xor14, %add1163 %xor16 = xor i32 %xor15, %add1364 %add17 = add i32 %phi, 065 %add18 = add i32 %phi2, 066 %add19 = add i32 %phi2, 067 %xor20 = xor i32 %add18, %xor1668 %xor21 = xor i32 %xor20, %add1769 %xor22 = xor i32 %xor21, %add1970 %add23 = add i32 %phi2, 071 %add24 = add i32 %arg, 072 %xor25 = xor i32 %add23, %xor2273 %xor26 = xor i32 %xor25, %add2474 %add27 = add i32 1, 075 %icmp = icmp ult i32 %add27, 076 br label %bb177}78