brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.8 KiB · 013db32 Raw
196 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux-gnu -mcpu=bdver2 < %s | FileCheck %s3 4define i32 @foo(ptr nocapture readonly %arr, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8) {5; CHECK-LABEL: @foo(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARR:%.*]], i64 18; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[ARRAYIDX]], align 49; CHECK-NEXT:    [[ADD:%.*]] = add i32 [[TMP0]], [[A1:%.*]]10; CHECK-NEXT:    [[ADD2:%.*]] = add i32 [[TMP0]], [[A2:%.*]]11; CHECK-NEXT:    [[ADD4:%.*]] = add i32 [[TMP0]], [[A3:%.*]]12; CHECK-NEXT:    [[ADD6:%.*]] = add i32 [[TMP0]], [[A4:%.*]]13; CHECK-NEXT:    [[ADD8:%.*]] = add i32 [[TMP0]], [[A5:%.*]]14; CHECK-NEXT:    [[ADD10:%.*]] = add i32 [[TMP0]], [[A6:%.*]]15; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[ARR]], align 416; CHECK-NEXT:    [[ADD12:%.*]] = add i32 [[TMP1]], [[A7:%.*]]17; CHECK-NEXT:    [[ADD14:%.*]] = add i32 [[TMP1]], [[A8:%.*]]18; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[ADD]], [[ADD2]]19; CHECK-NEXT:    [[COND:%.*]] = select i1 [[CMP]], i32 [[ADD]], i32 [[ADD2]]20; CHECK-NEXT:    [[CMP15:%.*]] = icmp ult i32 [[COND]], [[ADD4]]21; CHECK-NEXT:    [[COND19:%.*]] = select i1 [[CMP15]], i32 [[COND]], i32 [[ADD4]]22; CHECK-NEXT:    [[CMP20:%.*]] = icmp ult i32 [[COND19]], [[ADD6]]23; CHECK-NEXT:    [[COND24:%.*]] = select i1 [[CMP20]], i32 [[COND19]], i32 [[ADD6]]24; CHECK-NEXT:    [[CMP25:%.*]] = icmp ult i32 [[COND24]], [[ADD8]]25; CHECK-NEXT:    [[COND29:%.*]] = select i1 [[CMP25]], i32 [[COND24]], i32 [[ADD8]]26; CHECK-NEXT:    [[CMP30:%.*]] = icmp ult i32 [[COND29]], [[ADD10]]27; CHECK-NEXT:    [[COND34:%.*]] = select i1 [[CMP30]], i32 [[COND29]], i32 [[ADD10]]28; CHECK-NEXT:    [[CMP35:%.*]] = icmp ult i32 [[COND34]], [[ADD12]]29; CHECK-NEXT:    [[COND39:%.*]] = select i1 [[CMP35]], i32 [[COND34]], i32 [[ADD12]]30; CHECK-NEXT:    [[CMP40:%.*]] = icmp ult i32 [[COND39]], [[ADD14]]31; CHECK-NEXT:    [[COND44:%.*]] = select i1 [[CMP40]], i32 [[COND39]], i32 [[ADD14]]32; CHECK-NEXT:    ret i32 [[COND44]]33;34entry:35  %arrayidx = getelementptr inbounds i32, ptr %arr, i64 136  %0 = load i32, ptr %arrayidx, align 437  %add = add i32 %0, %a138  %add2 = add i32 %0, %a239  %add4 = add i32 %0, %a340  %add6 = add i32 %0, %a441  %add8 = add i32 %0, %a542  %add10 = add i32 %0, %a643  %1 = load i32, ptr %arr, align 444  %add12 = add i32 %1, %a745  %add14 = add i32 %1, %a846  %cmp = icmp ult i32 %add, %add247  %cond = select i1 %cmp, i32 %add, i32 %add248  %cmp15 = icmp ult i32 %cond, %add449  %cond19 = select i1 %cmp15, i32 %cond, i32 %add450  %cmp20 = icmp ult i32 %cond19, %add651  %cond24 = select i1 %cmp20, i32 %cond19, i32 %add652  %cmp25 = icmp ult i32 %cond24, %add853  %cond29 = select i1 %cmp25, i32 %cond24, i32 %add854  %cmp30 = icmp ult i32 %cond29, %add1055  %cond34 = select i1 %cmp30, i32 %cond29, i32 %add1056  %cmp35 = icmp ult i32 %cond34, %add1257  %cond39 = select i1 %cmp35, i32 %cond34, i32 %add1258  %cmp40 = icmp ult i32 %cond39, %add1459  %cond44 = select i1 %cmp40, i32 %cond39, i32 %add1460  ret i32 %cond4461}62 63define i32 @foo1(ptr nocapture readonly %arr, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8) {64; CHECK-LABEL: @foo1(65; CHECK-NEXT:  entry:66; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARR:%.*]], i64 167; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[ARRAYIDX]], align 468; CHECK-NEXT:    [[ADD:%.*]] = add i32 [[TMP0]], [[A1:%.*]]69; CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 270; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX1]], align 471; CHECK-NEXT:    [[ADD2:%.*]] = add i32 [[TMP1]], [[A2:%.*]]72; CHECK-NEXT:    [[ARRAYIDX3:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 373; CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr [[ARRAYIDX3]], align 474; CHECK-NEXT:    [[ADD4:%.*]] = add i32 [[TMP2]], [[A3:%.*]]75; CHECK-NEXT:    [[ADD6:%.*]] = add i32 [[TMP0]], [[A4:%.*]]76; CHECK-NEXT:    [[ADD8:%.*]] = add i32 [[TMP0]], [[A5:%.*]]77; CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[ARR]], align 478; CHECK-NEXT:    [[ADD10:%.*]] = add i32 [[TMP3]], [[A6:%.*]]79; CHECK-NEXT:    [[ADD12:%.*]] = add i32 [[TMP1]], [[A7:%.*]]80; CHECK-NEXT:    [[ADD14:%.*]] = add i32 [[TMP0]], [[A8:%.*]]81; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[ADD]], [[ADD2]]82; CHECK-NEXT:    [[COND:%.*]] = select i1 [[CMP]], i32 [[ADD]], i32 [[ADD2]]83; CHECK-NEXT:    [[CMP15:%.*]] = icmp ult i32 [[COND]], [[ADD4]]84; CHECK-NEXT:    [[COND19:%.*]] = select i1 [[CMP15]], i32 [[COND]], i32 [[ADD4]]85; CHECK-NEXT:    [[CMP20:%.*]] = icmp ult i32 [[COND19]], [[ADD6]]86; CHECK-NEXT:    [[COND24:%.*]] = select i1 [[CMP20]], i32 [[COND19]], i32 [[ADD6]]87; CHECK-NEXT:    [[CMP25:%.*]] = icmp ult i32 [[COND24]], [[ADD8]]88; CHECK-NEXT:    [[COND29:%.*]] = select i1 [[CMP25]], i32 [[COND24]], i32 [[ADD8]]89; CHECK-NEXT:    [[CMP30:%.*]] = icmp ult i32 [[COND29]], [[ADD10]]90; CHECK-NEXT:    [[COND34:%.*]] = select i1 [[CMP30]], i32 [[COND29]], i32 [[ADD10]]91; CHECK-NEXT:    [[CMP35:%.*]] = icmp ult i32 [[COND34]], [[ADD12]]92; CHECK-NEXT:    [[COND39:%.*]] = select i1 [[CMP35]], i32 [[COND34]], i32 [[ADD12]]93; CHECK-NEXT:    [[CMP40:%.*]] = icmp ult i32 [[COND39]], [[ADD14]]94; CHECK-NEXT:    [[COND44:%.*]] = select i1 [[CMP40]], i32 [[COND39]], i32 [[ADD14]]95; CHECK-NEXT:    ret i32 [[COND44]]96;97entry:98  %arrayidx = getelementptr inbounds i32, ptr %arr, i64 199  %0 = load i32, ptr %arrayidx, align 4100  %add = add i32 %0, %a1101  %arrayidx1 = getelementptr inbounds i32, ptr %arr, i64 2102  %1 = load i32, ptr %arrayidx1, align 4103  %add2 = add i32 %1, %a2104  %arrayidx3 = getelementptr inbounds i32, ptr %arr, i64 3105  %2 = load i32, ptr %arrayidx3, align 4106  %add4 = add i32 %2, %a3107  %add6 = add i32 %0, %a4108  %add8 = add i32 %0, %a5109  %3 = load i32, ptr %arr, align 4110  %add10 = add i32 %3, %a6111  %add12 = add i32 %1, %a7112  %add14 = add i32 %0, %a8113  %cmp = icmp ult i32 %add, %add2114  %cond = select i1 %cmp, i32 %add, i32 %add2115  %cmp15 = icmp ult i32 %cond, %add4116  %cond19 = select i1 %cmp15, i32 %cond, i32 %add4117  %cmp20 = icmp ult i32 %cond19, %add6118  %cond24 = select i1 %cmp20, i32 %cond19, i32 %add6119  %cmp25 = icmp ult i32 %cond24, %add8120  %cond29 = select i1 %cmp25, i32 %cond24, i32 %add8121  %cmp30 = icmp ult i32 %cond29, %add10122  %cond34 = select i1 %cmp30, i32 %cond29, i32 %add10123  %cmp35 = icmp ult i32 %cond34, %add12124  %cond39 = select i1 %cmp35, i32 %cond34, i32 %add12125  %cmp40 = icmp ult i32 %cond39, %add14126  %cond44 = select i1 %cmp40, i32 %cond39, i32 %add14127  ret i32 %cond44128}129 130define i32 @foo2(ptr nocapture readonly %arr, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i32 %a5, i32 %a6, i32 %a7, i32 %a8) {131; CHECK-LABEL: @foo2(132; CHECK-NEXT:  entry:133; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARR:%.*]], i64 3134; CHECK-NEXT:    [[TMP0:%.*]] = load i32, ptr [[ARRAYIDX]], align 4135; CHECK-NEXT:    [[ADD:%.*]] = add i32 [[TMP0]], [[A1:%.*]]136; CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 2137; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX1]], align 4138; CHECK-NEXT:    [[ADD2:%.*]] = add i32 [[TMP1]], [[A2:%.*]]139; CHECK-NEXT:    [[ADD4:%.*]] = add i32 [[TMP0]], [[A3:%.*]]140; CHECK-NEXT:    [[TMP2:%.*]] = load i32, ptr [[ARR]], align 4141; CHECK-NEXT:    [[ADD6:%.*]] = add i32 [[TMP2]], [[A4:%.*]]142; CHECK-NEXT:    [[ARRAYIDX7:%.*]] = getelementptr inbounds i32, ptr [[ARR]], i64 1143; CHECK-NEXT:    [[TMP3:%.*]] = load i32, ptr [[ARRAYIDX7]], align 4144; CHECK-NEXT:    [[ADD8:%.*]] = add i32 [[TMP3]], [[A5:%.*]]145; CHECK-NEXT:    [[ADD10:%.*]] = add i32 [[TMP2]], [[A6:%.*]]146; CHECK-NEXT:    [[ADD12:%.*]] = add i32 [[TMP1]], [[A7:%.*]]147; CHECK-NEXT:    [[ADD14:%.*]] = add i32 [[TMP3]], [[A8:%.*]]148; CHECK-NEXT:    [[CMP:%.*]] = icmp ult i32 [[ADD]], [[ADD2]]149; CHECK-NEXT:    [[COND:%.*]] = select i1 [[CMP]], i32 [[ADD]], i32 [[ADD2]]150; CHECK-NEXT:    [[CMP15:%.*]] = icmp ult i32 [[COND]], [[ADD4]]151; CHECK-NEXT:    [[COND19:%.*]] = select i1 [[CMP15]], i32 [[COND]], i32 [[ADD4]]152; CHECK-NEXT:    [[CMP20:%.*]] = icmp ult i32 [[COND19]], [[ADD6]]153; CHECK-NEXT:    [[COND24:%.*]] = select i1 [[CMP20]], i32 [[COND19]], i32 [[ADD6]]154; CHECK-NEXT:    [[CMP25:%.*]] = icmp ult i32 [[COND24]], [[ADD8]]155; CHECK-NEXT:    [[COND29:%.*]] = select i1 [[CMP25]], i32 [[COND24]], i32 [[ADD8]]156; CHECK-NEXT:    [[CMP30:%.*]] = icmp ult i32 [[COND29]], [[ADD10]]157; CHECK-NEXT:    [[COND34:%.*]] = select i1 [[CMP30]], i32 [[COND29]], i32 [[ADD10]]158; CHECK-NEXT:    [[CMP35:%.*]] = icmp ult i32 [[COND34]], [[ADD12]]159; CHECK-NEXT:    [[COND39:%.*]] = select i1 [[CMP35]], i32 [[COND34]], i32 [[ADD12]]160; CHECK-NEXT:    [[CMP40:%.*]] = icmp ult i32 [[COND39]], [[ADD14]]161; CHECK-NEXT:    [[COND44:%.*]] = select i1 [[CMP40]], i32 [[COND39]], i32 [[ADD14]]162; CHECK-NEXT:    ret i32 [[COND44]]163;164entry:165  %arrayidx = getelementptr inbounds i32, ptr %arr, i64 3166  %0 = load i32, ptr %arrayidx, align 4167  %add = add i32 %0, %a1168  %arrayidx1 = getelementptr inbounds i32, ptr %arr, i64 2169  %1 = load i32, ptr %arrayidx1, align 4170  %add2 = add i32 %1, %a2171  %add4 = add i32 %0, %a3172  %2 = load i32, ptr %arr, align 4173  %add6 = add i32 %2, %a4174  %arrayidx7 = getelementptr inbounds i32, ptr %arr, i64 1175  %3 = load i32, ptr %arrayidx7, align 4176  %add8 = add i32 %3, %a5177  %add10 = add i32 %2, %a6178  %add12 = add i32 %1, %a7179  %add14 = add i32 %3, %a8180  %cmp = icmp ult i32 %add, %add2181  %cond = select i1 %cmp, i32 %add, i32 %add2182  %cmp15 = icmp ult i32 %cond, %add4183  %cond19 = select i1 %cmp15, i32 %cond, i32 %add4184  %cmp20 = icmp ult i32 %cond19, %add6185  %cond24 = select i1 %cmp20, i32 %cond19, i32 %add6186  %cmp25 = icmp ult i32 %cond24, %add8187  %cond29 = select i1 %cmp25, i32 %cond24, i32 %add8188  %cmp30 = icmp ult i32 %cond29, %add10189  %cond34 = select i1 %cmp30, i32 %cond29, i32 %add10190  %cmp35 = icmp ult i32 %cond34, %add12191  %cond39 = select i1 %cmp35, i32 %cond34, i32 %add12192  %cmp40 = icmp ult i32 %cond39, %add14193  %cond44 = select i1 %cmp40, i32 %cond39, i32 %add14194  ret i32 %cond44195}196