<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="font-family: Helvetica, sans-serif;" class="">Hi, </div><div style="font-family: Helvetica, sans-serif;" class=""><br class=""></div><div style="font-family: Helvetica, sans-serif;" class="">Below you can see the updated benchmark results for the new SLP-vectorizer.  As you can see, there is a small number of compile time regressions, a single major runtime *regression, and many performance gains. There is a tiny increase in code size: 30k for the whole test-suite. Based on the numbers below I would like to enable the SLP-vectorizer by default for -O3. Please let me know if you have any concerns. </div><div style="font-family: Helvetica, sans-serif;" class=""><br class=""></div><div style="font-family: Helvetica, sans-serif;" class=""><div style="font-family: Helvetica;" class=""><span style="font-family: Helvetica, sans-serif;" class="">Thanks,</span></div><div style="font-family: Helvetica;" class=""><span style="font-family: Helvetica, sans-serif;" class="">Nadav</span></div><div class=""><span style="font-family: Helvetica, sans-serif;" class=""><br class=""></span></div></div><div style="font-family: Helvetica, sans-serif;" class=""><br class=""></div><div class=""><font face="Helvetica, sans-serif" class="">* - I now understand the Olden/BH regression better. BH is slower because of a store-buffer stall. This means that the store buffer fills up and the CPU has to wait for some stores to finish.</font><span style="font-family: Helvetica, sans-serif;" class=""> I can think of two reasons that may cause this problem. First, our vectorized stores are followed by a memcpy that's expanded to a list of scalar-read/writes to the same addresses as the vector store. Maybe the processors can’t prune multiple stores to the same address with different sizes (Section 2.2.4 in the optimization guide has some info on this). Another possibility (less likely) is that we increase the critical path by adding a new pshufd instruction before the last vector store and that affects the store-buffer somehow. In any case, there is not much we can do at the IR-level to predict this. </span></div><div class=""><br class=""></div><div style="font-family: Helvetica, sans-serif;" class=""><span style="white-space: pre-wrap;" class=""><br class=""></span></div><div style="font-family: Helvetica, sans-serif;" class=""><br class=""></div><table style="font-size: 9pt; border-spacing: 0px; border: 1px solid black; position: static; z-index: auto;" class="sortable"><tbody class=""><tr class=""><th width="500" style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Performance Regressions - Compile Time</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Δ</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Previous</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Current</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">σ</th></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/VersaBench/beamformer/beamformer</td><td bgcolor="#ff5858" style="padding: 5px 5px 5px 8px;" class="">18.98%</td><td style="padding: 5px 5px 5px 8px;" class="">0.0722</td><td style="padding: 5px 5px 5px 8px;" class="">0.0859</td><td style="padding: 5px 5px 5px 8px;" class="">0.0003</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/FreeBench/pifft/pifft</td><td bgcolor="#ff9b9b" style="padding: 5px 5px 5px 8px;" class="">5.66%</td><td style="padding: 5px 5px 5px 8px;" class="">0.5003</td><td style="padding: 5px 5px 5px 8px;" class="">0.5286</td><td style="padding: 5px 5px 5px 8px;" class="">0.0015</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/LinearDependence-flt/LinearDependence-flt</td><td bgcolor="#ffa2a2" style="padding: 5px 5px 5px 8px;" class="">4.85%</td><td style="padding: 5px 5px 5px 8px;" class="">0.4084</td><td style="padding: 5px 5px 5px 8px;" class="">0.4282</td><td style="padding: 5px 5px 5px 8px;" class="">0.0014</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/LoopRestructuring-flt/LoopRestructuring-flt</td><td bgcolor="#ffa6a6" style="padding: 5px 5px 5px 8px;" class="">4.36%</td><td style="padding: 5px 5px 5px 8px;" class="">0.3856</td><td style="padding: 5px 5px 5px 8px;" class="">0.4024</td><td style="padding: 5px 5px 5px 8px;" class="">0.0018</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/ControlFlow-flt/ControlFlow-flt</td><td bgcolor="#ffb9b9" style="padding: 5px 5px 5px 8px;" class="">2.62%</td><td style="padding: 5px 5px 5px 8px;" class="">0.4424</td><td style="padding: 5px 5px 5px 8px;" class="">0.4540</td><td style="padding: 5px 5px 5px 8px;" class="">0.0019</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">External/SPEC/CINT2006/401_bzip2/401_bzip2</td><td bgcolor="#ffc9c9" style="padding: 5px 5px 5px 8px;" class="">1.50%</td><td style="padding: 5px 5px 5px 8px;" class="">1.0613</td><td style="padding: 5px 5px 5px 8px;" class="">1.0772</td><td style="padding: 5px 5px 5px 8px;" class="">0.0010</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/tramp3d-v4/tramp3d-v4</td><td bgcolor="#ffcece" style="padding: 5px 5px 5px 8px;" class="">1.23%</td><td style="padding: 5px 5px 5px 8px;" class="">12.1337</td><td style="padding: 5px 5px 5px 8px;" class="">12.2831</td><td style="padding: 5px 5px 5px 8px;" class="">0.0296</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Applications/kimwitu++/kc</td><td bgcolor="#ffcfcf" style="padding: 5px 5px 5px 8px;" class="">1.15%</td><td style="padding: 5px 5px 5px 8px;" class="">9.3690</td><td style="padding: 5px 5px 5px 8px;" class="">9.4769</td><td style="padding: 5px 5px 5px 8px;" class="">0.0186</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc-C++-EH/spirit</td><td bgcolor="#ffd0d0" style="padding: 5px 5px 5px 8px;" class="">1.13%</td><td style="padding: 5px 5px 5px 8px;" class="">3.2769</td><td style="padding: 5px 5px 5px 8px;" class="">3.3139</td><td style="padding: 5px 5px 5px 8px;" class="">0.0079</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">External/SPEC/CFP2000/188_ammp/188_ammp</td><td bgcolor="#ffd2d2" style="padding: 5px 5px 5px 8px;" class="">1.01%</td><td style="padding: 5px 5px 5px 8px;" class="">1.8632</td><td style="padding: 5px 5px 5px 8px;" class="">1.8820</td><td style="padding: 5px 5px 5px 8px;" class="">0.0059</td></tr></tbody></table><div class=""><br class="webkit-block-placeholder"></div><div style="font-family: Helvetica, sans-serif;" class=""><br class="webkit-block-placeholder"></div><table style="font-size: 9pt; border-spacing: 0px; border: 1px solid black; position: static; z-index: auto;" class="sortable"><tbody class=""><tr class=""><th width="500" style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Performance Regressions - Execution Time</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Δ</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Previous</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Current</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">σ</th></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/Olden/bh/bh</td><td bgcolor="#ff5757" style="padding: 5px 5px 5px 8px;" class="">19.24%</td><td style="padding: 5px 5px 5px 8px;" class="">1.1551</td><td style="padding: 5px 5px 5px 8px;" class="">1.3773</td><td style="padding: 5px 5px 5px 8px;" class="">0.0021</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/SmallPT/smallpt</td><td bgcolor="#ffacac" style="padding: 5px 5px 5px 8px;" class="">3.75%</td><td style="padding: 5px 5px 5px 8px;" class="">5.8779</td><td style="padding: 5px 5px 5px 8px;" class="">6.0983</td><td style="padding: 5px 5px 5px 8px;" class="">0.0146</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc-C++/Large/ray</td><td bgcolor="#ffd1d1" style="padding: 5px 5px 5px 8px;" class="">1.08%</td><td style="padding: 5px 5px 5px 8px;" class="">1.8194</td><td style="padding: 5px 5px 5px 8px;" class="">1.8390</td><td style="padding: 5px 5px 5px 8px;" class="">0.0009</td></tr></tbody></table><div class=""><br class="webkit-block-placeholder"></div><div style="font-family: Helvetica, sans-serif;" class=""><br class="webkit-block-placeholder"></div><table style="font-size: 9pt; border-spacing: 0px; border: 1px solid black; position: static; z-index: auto;" class="sortable"><tbody class=""><tr class=""><th width="500" style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Performance Improvements - Execution Time</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Δ</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Previous</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">Current</th><th style="background-color: rgb(238, 238, 238); color: rgb(102, 102, 102); cursor: default; text-align: center; font-family: Verdana; padding: 5px 5px 5px 8px;" class="">σ</th></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc/matmul_f64_4x4</td><td bgcolor="#14ff14" style="padding: 5px 5px 5px 8px;" class="">-53.67%</td><td style="padding: 5px 5px 5px 8px;" class="">1.4064</td><td style="padding: 5px 5px 5px 8px;" class="">0.6516</td><td style="padding: 5px 5px 5px 8px;" class="">0.0007</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">External/Nurbs/nurbs</td><td bgcolor="#56ff56" style="padding: 5px 5px 5px 8px;" class="">-19.47%</td><td style="padding: 5px 5px 5px 8px;" class="">2.5389</td><td style="padding: 5px 5px 5px 8px;" class="">2.0445</td><td style="padding: 5px 5px 5px 8px;" class="">0.0029</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/Olden/power/power</td><td bgcolor="#5aff5a" style="padding: 5px 5px 5px 8px;" class="">-18.49%</td><td style="padding: 5px 5px 5px 8px;" class="">1.2572</td><td style="padding: 5px 5px 5px 8px;" class="">1.0248</td><td style="padding: 5px 5px 5px 8px;" class="">0.0004</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc/flops-4</td><td bgcolor="#63ff63" style="padding: 5px 5px 5px 8px;" class="">-15.93%</td><td style="padding: 5px 5px 5px 8px;" class="">0.7767</td><td style="padding: 5px 5px 5px 8px;" class="">0.6530</td><td style="padding: 5px 5px 5px 8px;" class="">0.0348</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/LoopRerolling-flt/LoopRerolling-flt</td><td bgcolor="#68ff68" style="padding: 5px 5px 5px 8px;" class="">-14.72%</td><td style="padding: 5px 5px 5px 8px;" class="">2.3925</td><td style="padding: 5px 5px 5px 8px;" class="">2.0404</td><td style="padding: 5px 5px 5px 8px;" class="">0.0013</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc/flops-6</td><td bgcolor="#79ff79" style="padding: 5px 5px 5px 8px;" class="">-11.05%</td><td style="padding: 5px 5px 5px 8px;" class="">1.1427</td><td style="padding: 5px 5px 5px 8px;" class="">1.0164</td><td style="padding: 5px 5px 5px 8px;" class="">0.0009</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc/flops-5</td><td bgcolor="#7dff7d" style="padding: 5px 5px 5px 8px;" class="">-10.43%</td><td style="padding: 5px 5px 5px 8px;" class="">1.2771</td><td style="padding: 5px 5px 5px 8px;" class="">1.1439</td><td style="padding: 5px 5px 5px 8px;" class="">0.0015</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/LinearDependence-flt/LinearDependence-flt</td><td bgcolor="#8aff8a" style="padding: 5px 5px 5px 8px;" class="">-8.10%</td><td style="padding: 5px 5px 5px 8px;" class="">2.3468</td><td style="padding: 5px 5px 5px 8px;" class="">2.1568</td><td style="padding: 5px 5px 5px 8px;" class="">0.0195</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc/pi</td><td bgcolor="#90ff90" style="padding: 5px 5px 5px 8px;" class="">-7.18%</td><td style="padding: 5px 5px 5px 8px;" class="">0.6042</td><td style="padding: 5px 5px 5px 8px;" class="">0.5608</td><td style="padding: 5px 5px 5px 8px;" class="">0.0000</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">External/SPEC/CFP2006/444_namd/444_namd</td><td bgcolor="#aaffaa" style="padding: 5px 5px 5px 8px;" class="">-4.01%</td><td style="padding: 5px 5px 5px 8px;" class="">9.6053</td><td style="padding: 5px 5px 5px 8px;" class="">9.2200</td><td style="padding: 5px 5px 5px 8px;" class="">0.0064</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Linpack/linpack-pc</td><td bgcolor="#abffab" style="padding: 5px 5px 5px 8px;" class="">-3.85%</td><td style="padding: 5px 5px 5px 8px;" class="">95.5313</td><td style="padding: 5px 5px 5px 8px;" class="">91.8522</td><td style="padding: 5px 5px 5px 8px;" class="">1.1151</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/LoopRerolling-dbl/LoopRerolling-dbl</td><td bgcolor="#afffaf" style="padding: 5px 5px 5px 8px;" class="">-3.52%</td><td style="padding: 5px 5px 5px 8px;" class="">3.1962</td><td style="padding: 5px 5px 5px 8px;" class="">3.0837</td><td style="padding: 5px 5px 5px 8px;" class="">0.0063</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/LinearDependence-dbl/LinearDependence-dbl</td><td bgcolor="#b5ffb5" style="padding: 5px 5px 5px 8px;" class="">-2.93%</td><td style="padding: 5px 5px 5px 8px;" class="">2.9336</td><td style="padding: 5px 5px 5px 8px;" class="">2.8477</td><td style="padding: 5px 5px 5px 8px;" class="">0.0037</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/VersaBench/beamformer/beamformer</td><td bgcolor="#b7ffb7" style="padding: 5px 5px 5px 8px;" class="">-2.79%</td><td style="padding: 5px 5px 5px 8px;" class="">0.8845</td><td style="padding: 5px 5px 5px 8px;" class="">0.8598</td><td style="padding: 5px 5px 5px 8px;" class="">0.0026</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc-C++/Large/sphereflake</td><td bgcolor="#b7ffb7" style="padding: 5px 5px 5px 8px;" class="">-2.79%</td><td style="padding: 5px 5px 5px 8px;" class="">1.8517</td><td style="padding: 5px 5px 5px 8px;" class="">1.8001</td><td style="padding: 5px 5px 5px 8px;" class="">0.0014</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">External/SPEC/CFP2000/177_mesa/177_mesa</td><td bgcolor="#bfffbf" style="padding: 5px 5px 5px 8px;" class="">-2.15%</td><td style="padding: 5px 5px 5px 8px;" class="">1.7214</td><td style="padding: 5px 5px 5px 8px;" class="">1.6844</td><td style="padding: 5px 5px 5px 8px;" class="">0.0017</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/CoyoteBench/fftbench</td><td bgcolor="#c0ffc0" style="padding: 5px 5px 5px 8px;" class="">-2.05%</td><td style="padding: 5px 5px 5px 8px;" class="">0.7280</td><td style="padding: 5px 5px 5px 8px;" class="">0.7131</td><td style="padding: 5px 5px 5px 8px;" class="">0.0049</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Benchmarks/TSVC/NodeSplitting-dbl/NodeSplitting-dbl</td><td bgcolor="#c2ffc2" style="padding: 5px 5px 5px 8px;" class="">-1.96%</td><td style="padding: 5px 5px 5px 8px;" class="">3.1494</td><td style="padding: 5px 5px 5px 8px;" class="">3.0878</td><td style="padding: 5px 5px 5px 8px;" class="">0.0034</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc/oourafft</td><td bgcolor="#c6ffc6" style="padding: 5px 5px 5px 8px;" class="">-1.70%</td><td style="padding: 5px 5px 5px 8px;" class="">3.4625</td><td style="padding: 5px 5px 5px 8px;" class="">3.4035</td><td style="padding: 5px 5px 5px 8px;" class="">0.0009</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">SingleSource/Benchmarks/Misc/flops</td><td bgcolor="#ccffcc" style="padding: 5px 5px 5px 8px;" class="">-1.31%</td><td style="padding: 5px 5px 5px 8px;" class="">7.0775</td><td style="padding: 5px 5px 5px 8px;" class="">6.9845</td><td style="padding: 5px 5px 5px 8px;" class="">0.0014</td></tr><tr class=""><td style="padding: 5px 5px 5px 8px;" class="">MultiSource/Applications/JM/lencod/lencod</td><td bgcolor="#d0ffd0" style="padding: 5px 5px 5px 8px;" class="">-1.12%</td><td style="padding: 5px 5px 5px 8px;" class="">4.5972</td><td style="padding: 5px 5px 5px 8px;" class="">4.5455</td><td style="padding: 5px 5px 5px 8px;" class="">0.0050</td></tr></tbody></table><div class=""><br class="webkit-block-placeholder"></div></body></html>