<div dir="ltr"><div dir="ltr">Your r369628 patch is vindicated, our regressions seem to be coming from r369664 (assuming this patch affects all the regressed benchmarks we saw)<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 29, 2019 at 9:33 AM Jordan Rupprecht <<a href="mailto:rupprecht@google.com">rupprecht@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Craig,<div><br></div><div>It looks like we don't see any regressions in polybench with a release @r369822.</div><div><br><div>However, we have a new regression (-20% in stanford puzzle/shootout sieve in llvm singlesource benchmarks) somewhere between r369600 and r369679. I hope it's not r369628 :(<br></div></div><div><br></div><div>I'll be continuing the root causing today</div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 23, 2019 at 6:42 PM Craig Topper via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="cremed">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Eric,<div><br></div><div>Did that fix recover any of the performance issues? I think it fixed the big issue in polybench.</div><div><br clear="all"><div><div dir="ltr">~Craig</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Aug 22, 2019 at 1:19 AM Craig Topper <<a href="mailto:craig.topper@gmail.com" target="_blank" class="cremed">craig.topper@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">I just commited r369628 which should hopefully fix trisolv from that set of tests. I haven't investigated any other tests yet.<div><br><div><div dir="ltr">~Craig</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Aug 21, 2019 at 5:48 PM Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank" class="cremed">echristo@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">FWIW one set of benchmarks that regressed for us were the polybench<br>
ones in the testsuite on Haswell and Sandybridge (Skylake was a net<br>
win iirc). Something immediately public you could take a look at.<br>
<br>
-eric<br>
<br>
On Tue, Aug 20, 2019 at 10:11 AM Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank" class="cremed">echristo@gmail.com</a>> wrote:<br>
><br>
> Thanks Craig!<br>
><br>
> -eric<br>
><br>
> On Mon, Aug 19, 2019 at 11:59 PM Craig Topper <<a href="mailto:craig.topper@gmail.com" target="_blank" class="cremed">craig.topper@gmail.com</a>> wrote:<br>
> ><br>
> > -x86-experimental-vector-widening-legalization command line flag has been restored in r369332. It defaults to true which enables the new behavior. Setting it to false should hopefully restore the old behavior. I can't guarantee that though since we no tests for it. And I have no way of knowing if we break anything going foward. So hopefully we can get the issues resolved quickly and not have to depend on this for long.<br>
> ><br>
> > ~Craig<br>
> ><br>
> ><br>
> > On Mon, Aug 19, 2019 at 10:28 PM Eric Christopher <<a href="mailto:echristo@gmail.com" target="_blank" class="cremed">echristo@gmail.com</a>> wrote:<br>
> >><br>
> >> I do apologize, we've only just gotten to performance testing and the<br>
> >> numbers are pretty exciting, but unfortunately many more negatives<br>
> >> than positives. We'll definitely work with you on testing and<br>
> >> performance analysis if that will help?<br>
> >><br>
> >> Thanks!<br>
> >><br>
> >> -eric<br>
> >><br>
> >> On Mon, Aug 19, 2019 at 10:23 PM Craig Topper <<a href="mailto:craig.topper@gmail.com" target="_blank" class="cremed">craig.topper@gmail.com</a>> wrote:<br>
> >> ><br>
> >> > There have been quite a lot of follow on patches to this. A lot of them would need be reverted to get back to the old state. I can start trying to put that together.<br>
> >> ><br>
> >> > ~Craig<br>
> >> ><br>
> >> ><br>
> >> > On Mon, Aug 19, 2019 at 9:55 PM Eric Christopher via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="cremed">llvm-commits@lists.llvm.org</a>> wrote:<br>
> >> >><br>
> >> >> HI Craig,<br>
> >> >><br>
> >> >> We're seeing a rather lot of performance regressions with this enabled<br>
> >> >> by default. Is it possible to get it turned on under a command flag<br>
> >> >> for the near term while we work on getting you a pile of testcases<br>
> >> >> (some of it is Eigen and those will at least be easier as you have<br>
> >> >> access to that source :)<br>
> >> >><br>
> >> >> Thoughts?<br>
> >> >><br>
> >> >> Thanks!<br>
> >> >><br>
> >> >> -eric<br>
> >> >><br>
> >> >> On Wed, Aug 7, 2019 at 9:23 AM Craig Topper via llvm-commits<br>
> >> >> <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="cremed">llvm-commits@lists.llvm.org</a>> wrote:<br>
> >> >> ><br>
> >> >> > Author: ctopper<br>
> >> >> > Date: Wed Aug  7 09:24:26 2019<br>
> >> >> > New Revision: 368183<br>
> >> >> ><br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project?rev=368183&view=rev" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project?rev=368183&view=rev</a><br>
> >> >> > Log:<br>
> >> >> > Recommit r367901 "[X86] Enable -x86-experimental-vector-widening-legalization by default."<br>
> >> >> ><br>
> >> >> > The assert that caused this to be reverted should be fixed now.<br>
> >> >> ><br>
> >> >> > Original commit message:<br>
> >> >> ><br>
> >> >> > This patch changes our defualt legalization behavior for 16, 32, and<br>
> >> >> > 64 bit vectors with i8/i16/i32/i64 scalar types from promotion to<br>
> >> >> > widening. For example, v8i8 will now be widened to v16i8 instead of<br>
> >> >> > promoted to v8i16. This keeps the elements widths the same and pads<br>
> >> >> > with undef elements. We believe this is a better legalization strategy.<br>
> >> >> > But it carries some issues due to the fragmented vector ISA. For<br>
> >> >> > example, i8 shifts and multiplies get widened and then later have<br>
> >> >> > to be promoted/split into vXi16 vectors.<br>
> >> >> ><br>
> >> >> > This has the potential to cause regressions so we wanted to get<br>
> >> >> > it in early in the 10.0 cycle so we have plenty of time to<br>
> >> >> > address them.<br>
> >> >> ><br>
> >> >> > Next steps will be to merge tests that explicitly test the command<br>
> >> >> > line option. And then we can remove the option and its associated<br>
> >> >> > code.<br>
> >> >> ><br>
> >> >> > Removed:<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-add-widen.ll<br>
> >> >> > Modified:<br>
> >> >> >     llvm/trunk/lib/Target/X86/X86ISelLowering.cpp<br>
> >> >> >     llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/alternate-shuffle-cost.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/arith.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/cast.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/fptosi.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/fptoui.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-add.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-and.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-mul.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-or.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-smax.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-smin.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-umax.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-umin.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/reduce-xor.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/shuffle-transpose.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/sitofp.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/slm-arith-costs.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/testshiftashr.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/testshiftlshr.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/testshiftshl.ll<br>
> >> >> >     llvm/trunk/test/Analysis/CostModel/X86/uitofp.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2008-09-05-sinttofp-2xi32.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2009-06-05-VZextByteShort.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2011-10-19-LegelizeLoad.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2011-12-28-vselecti8.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2011-12-8-bitcastintprom.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2012-01-18-vbitcast.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2012-03-15-build_vector_wl.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/2012-07-10-extload64.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/3dnow-intrinsics.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/4char-promote.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/and-load-fold.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/atomic-unordered.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avg.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx-cvt-2.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx-fp2int.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx2-conversions.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx2-masked-gather.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx2-vbroadcast.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-any_extend_load.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-cvt.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-ext.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-intrinsics-upgrade.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-mask-op.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-trunc.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-vec-cmp.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512-vec3-crash.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512bwvl-intrinsics-upgrade.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512vl-intrinsics-fast-isel.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/avx512vl-intrinsics-upgrade.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/bitcast-and-setcc-128.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/bitcast-setcc-128.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/bitcast-vector-bool.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/bitreverse.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/bswap-vector.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/buildvec-insertvec.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/combine-64bit-vec-binop.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/combine-or.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/complex-fastmath.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/cvtv2f32.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/extract-concat.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/extract-insert.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/f16c-intrinsics.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/fold-vector-sext-zext.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/insertelement-shuffle.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/known-bits.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/load-partial.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/lower-bitcast.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/madd.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_compressstore.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_expandload.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_gather_scatter.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_gather_scatter_widen.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_load.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_store.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_store_trunc.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_store_trunc_ssat.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/masked_store_trunc_usat.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/merge-consecutive-loads-256.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/mmx-arg-passing-x86-64.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/mmx-arith.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/mmx-cvt.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/mulvi32.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/oddshuffles.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/oddsubvector.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/pmaddubsw.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/pmulh.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/pointer-vector.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/pr14161.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/pr35918.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/pr40994.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/promote-vec3.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/promote.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/psubus.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/ret-mmx.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/sad.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/sadd_sat_vec.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/scalar_widen_div.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/select.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shift-combine.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shrink_vmul.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shuffle-strided-with-offset-128.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shuffle-strided-with-offset-256.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shuffle-strided-with-offset-512.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-128.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-256.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/shuffle-vs-trunc-512.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/slow-pmulld.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/sse2-intrinsics-canonical.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/sse2-vector-shifts.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/ssub_sat_vec.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/test-shrink-bug.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/trunc-ext-ld-st.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/trunc-subvector.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/uadd_sat_vec.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/unfold-masked-merge-vector-variablemask.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/usub_sat_vec.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_cast2.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_cast3.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_ctbits.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_extract-mmx.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_fp_to_int.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_insert-5.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_insert-7.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_insert-mmx.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_int_to_fp.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_saddo.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_smulo.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_ssubo.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_uaddo.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_umulo.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vec_usubo.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-blend.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-ext-logic.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-gep.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-half-conversions.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-idiv-v2i32.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-narrow-binop.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-add.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-and-bool.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-and.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-mul.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-or-bool.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-or.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-smax.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-smin.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-umax.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-umin.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-xor-bool.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-reduce-xor.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-sext.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-shift-ashr-sub128.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-shift-by-select-loop.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-shift-lshr-sub128.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-shift-shl-sub128.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-shuffle-128-v16.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-shuffle-combining.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-trunc-packus.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-trunc-ssat.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-trunc-usat.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-trunc.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-truncate-combine.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vector-zext.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vsel-cmp-load.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vselect-avx.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vselect.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/vshift-4.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_arith-1.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_arith-2.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_arith-3.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_bitops-0.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_cast-1.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_cast-2.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_cast-3.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_cast-4.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_cast-5.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_cast-6.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_compare-1.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_conv-1.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_conv-2.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_conv-3.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_conv-4.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_load-2.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/widen_shuffle-1.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/x86-interleaved-access.ll<br>
> >> >> >     llvm/trunk/test/CodeGen/X86/x86-shifts.ll<br>
> >> >> >     llvm/trunk/test/Transforms/SLPVectorizer/X86/blending-shuffle.ll<br>
> >> >> >     llvm/trunk/test/Transforms/SLPVectorizer/X86/fptosi.ll<br>
> >> >> >     llvm/trunk/test/Transforms/SLPVectorizer/X86/fptoui.ll<br>
> >> >> >     llvm/trunk/test/Transforms/SLPVectorizer/X86/insert-element-build-vector.ll<br>
> >> >> >     llvm/trunk/test/Transforms/SLPVectorizer/X86/sitofp.ll<br>
> >> >> >     llvm/trunk/test/Transforms/SLPVectorizer/X86/uitofp.ll<br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)<br>
> >> >> > +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -66,7 +66,7 @@ using namespace llvm;<br>
> >> >> >  STATISTIC(NumTailCalls, "Number of tail calls");<br>
> >> >> ><br>
> >> >> >  static cl::opt<bool> ExperimentalVectorWideningLegalization(<br>
> >> >> > -    "x86-experimental-vector-widening-legalization", cl::init(false),<br>
> >> >> > +    "x86-experimental-vector-widening-legalization", cl::init(true),<br>
> >> >> >      cl::desc("Enable an experimental vector type legalization through widening "<br>
> >> >> >               "rather than promotion."),<br>
> >> >> >      cl::Hidden);<br>
> >> >> > @@ -40453,8 +40453,7 @@ static SDValue combineStore(SDNode *N, S<br>
> >> >> >    bool NoImplicitFloatOps = F.hasFnAttribute(Attribute::NoImplicitFloat);<br>
> >> >> >    bool F64IsLegal =<br>
> >> >> >        !Subtarget.useSoftFloat() && !NoImplicitFloatOps && Subtarget.hasSSE2();<br>
> >> >> > -  if (((VT.isVector() && !VT.isFloatingPoint()) ||<br>
> >> >> > -       (VT == MVT::i64 && F64IsLegal && !Subtarget.is64Bit())) &&<br>
> >> >> > +  if ((VT == MVT::i64 && F64IsLegal && !Subtarget.is64Bit()) &&<br>
> >> >> >        isa<LoadSDNode>(St->getValue()) &&<br>
> >> >> >        !cast<LoadSDNode>(St->getValue())->isVolatile() &&<br>
> >> >> >        St->getChain().hasOneUse() && !St->isVolatile()) {<br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp (original)<br>
> >> >> > +++ llvm/trunk/lib/Target/X86/X86TargetTransformInfo.cpp Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -887,7 +887,7 @@ int X86TTIImpl::getArithmeticInstrCost(<br>
> >> >> >  int X86TTIImpl::getShuffleCost(TTI::ShuffleKind Kind, Type *Tp, int Index,<br>
> >> >> >                                 Type *SubTp) {<br>
> >> >> >    // 64-bit packed float vectors (v2f32) are widened to type v4f32.<br>
> >> >> > -  // 64-bit packed integer vectors (v2i32) are promoted to type v2i64.<br>
> >> >> > +  // 64-bit packed integer vectors (v2i32) are widened to type v4i32.<br>
> >> >> >    std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, Tp);<br>
> >> >> ><br>
> >> >> >    // Treat Transpose as 2-op shuffles - there's no difference in lowering.<br>
> >> >> > @@ -2425,14 +2425,6 @@ int X86TTIImpl::getAddressComputationCos<br>
> >> >> ><br>
> >> >> >  int X86TTIImpl::getArithmeticReductionCost(unsigned Opcode, Type *ValTy,<br>
> >> >> >                                             bool IsPairwise) {<br>
> >> >> > -<br>
> >> >> > -  std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy);<br>
> >> >> > -<br>
> >> >> > -  MVT MTy = LT.second;<br>
> >> >> > -<br>
> >> >> > -  int ISD = TLI->InstructionOpcodeToISD(Opcode);<br>
> >> >> > -  assert(ISD && "Invalid opcode");<br>
> >> >> > -<br>
> >> >> >    // We use the Intel Architecture Code Analyzer(IACA) to measure the throughput<br>
> >> >> >    // and make it as the cost.<br>
> >> >> ><br>
> >> >> > @@ -2440,7 +2432,10 @@ int X86TTIImpl::getArithmeticReductionCo<br>
> >> >> >      { ISD::FADD,  MVT::v2f64,   2 },<br>
> >> >> >      { ISD::FADD,  MVT::v4f32,   4 },<br>
> >> >> >      { ISD::ADD,   MVT::v2i64,   2 },      // The data reported by the IACA tool is "1.6".<br>
> >> >> > +    { ISD::ADD,   MVT::v2i32,   2 }, // FIXME: chosen to be less than v4i32.<br>
> >> >> >      { ISD::ADD,   MVT::v4i32,   3 },      // The data reported by the IACA tool is "3.5".<br>
> >> >> > +    { ISD::ADD,   MVT::v2i16,   3 }, // FIXME: chosen to be less than v4i16<br>
> >> >> > +    { ISD::ADD,   MVT::v4i16,   4 }, // FIXME: chosen to be less than v8i16<br>
> >> >> >      { ISD::ADD,   MVT::v8i16,   5 },<br>
> >> >> >    };<br>
> >> >> ><br>
> >> >> > @@ -2449,8 +2444,11 @@ int X86TTIImpl::getArithmeticReductionCo<br>
> >> >> >      { ISD::FADD,  MVT::v4f64,   5 },<br>
> >> >> >      { ISD::FADD,  MVT::v8f32,   7 },<br>
> >> >> >      { ISD::ADD,   MVT::v2i64,   1 },      // The data reported by the IACA tool is "1.5".<br>
> >> >> > +    { ISD::ADD,   MVT::v2i32,   2 }, // FIXME: chosen to be less than v4i32<br>
> >> >> >      { ISD::ADD,   MVT::v4i32,   3 },      // The data reported by the IACA tool is "3.5".<br>
> >> >> >      { ISD::ADD,   MVT::v4i64,   5 },      // The data reported by the IACA tool is "4.8".<br>
> >> >> > +    { ISD::ADD,   MVT::v2i16,   3 }, // FIXME: chosen to be less than v4i16<br>
> >> >> > +    { ISD::ADD,   MVT::v4i16,   4 }, // FIXME: chosen to be less than v8i16<br>
> >> >> >      { ISD::ADD,   MVT::v8i16,   5 },<br>
> >> >> >      { ISD::ADD,   MVT::v8i32,   5 },<br>
> >> >> >    };<br>
> >> >> > @@ -2459,7 +2457,10 @@ int X86TTIImpl::getArithmeticReductionCo<br>
> >> >> >      { ISD::FADD,  MVT::v2f64,   2 },<br>
> >> >> >      { ISD::FADD,  MVT::v4f32,   4 },<br>
> >> >> >      { ISD::ADD,   MVT::v2i64,   2 },      // The data reported by the IACA tool is "1.6".<br>
> >> >> > +    { ISD::ADD,   MVT::v2i32,   2 }, // FIXME: chosen to be less than v4i32<br>
> >> >> >      { ISD::ADD,   MVT::v4i32,   3 },      // The data reported by the IACA tool is "3.3".<br>
> >> >> > +    { ISD::ADD,   MVT::v2i16,   2 },      // The data reported by the IACA tool is "4.3".<br>
> >> >> > +    { ISD::ADD,   MVT::v4i16,   3 },      // The data reported by the IACA tool is "4.3".<br>
> >> >> >      { ISD::ADD,   MVT::v8i16,   4 },      // The data reported by the IACA tool is "4.3".<br>
> >> >> >    };<br>
> >> >> ><br>
> >> >> > @@ -2468,12 +2469,47 @@ int X86TTIImpl::getArithmeticReductionCo<br>
> >> >> >      { ISD::FADD,  MVT::v4f64,   3 },<br>
> >> >> >      { ISD::FADD,  MVT::v8f32,   4 },<br>
> >> >> >      { ISD::ADD,   MVT::v2i64,   1 },      // The data reported by the IACA tool is "1.5".<br>
> >> >> > +    { ISD::ADD,   MVT::v2i32,   2 }, // FIXME: chosen to be less than v4i32<br>
> >> >> >      { ISD::ADD,   MVT::v4i32,   3 },      // The data reported by the IACA tool is "2.8".<br>
> >> >> >      { ISD::ADD,   MVT::v4i64,   3 },<br>
> >> >> > +    { ISD::ADD,   MVT::v2i16,   2 },      // The data reported by the IACA tool is "4.3".<br>
> >> >> > +    { ISD::ADD,   MVT::v4i16,   3 },      // The data reported by the IACA tool is "4.3".<br>
> >> >> >      { ISD::ADD,   MVT::v8i16,   4 },<br>
> >> >> >      { ISD::ADD,   MVT::v8i32,   5 },<br>
> >> >> >    };<br>
> >> >> ><br>
> >> >> > +  int ISD = TLI->InstructionOpcodeToISD(Opcode);<br>
> >> >> > +  assert(ISD && "Invalid opcode");<br>
> >> >> > +<br>
> >> >> > +  // Before legalizing the type, give a chance to look up illegal narrow types<br>
> >> >> > +  // in the table.<br>
> >> >> > +  // FIXME: Is there a better way to do this?<br>
> >> >> > +  EVT VT = TLI->getValueType(DL, ValTy);<br>
> >> >> > +  if (VT.isSimple()) {<br>
> >> >> > +    MVT MTy = VT.getSimpleVT();<br>
> >> >> > +    if (IsPairwise) {<br>
> >> >> > +      if (ST->hasAVX())<br>
> >> >> > +        if (const auto *Entry = CostTableLookup(AVX1CostTblPairWise, ISD, MTy))<br>
> >> >> > +          return Entry->Cost;<br>
> >> >> > +<br>
> >> >> > +      if (ST->hasSSE42())<br>
> >> >> > +        if (const auto *Entry = CostTableLookup(SSE42CostTblPairWise, ISD, MTy))<br>
> >> >> > +          return Entry->Cost;<br>
> >> >> > +    } else {<br>
> >> >> > +      if (ST->hasAVX())<br>
> >> >> > +        if (const auto *Entry = CostTableLookup(AVX1CostTblNoPairWise, ISD, MTy))<br>
> >> >> > +          return Entry->Cost;<br>
> >> >> > +<br>
> >> >> > +      if (ST->hasSSE42())<br>
> >> >> > +        if (const auto *Entry = CostTableLookup(SSE42CostTblNoPairWise, ISD, MTy))<br>
> >> >> > +          return Entry->Cost;<br>
> >> >> > +    }<br>
> >> >> > +  }<br>
> >> >> > +<br>
> >> >> > +  std::pair<int, MVT> LT = TLI->getTypeLegalizationCost(DL, ValTy);<br>
> >> >> > +<br>
> >> >> > +  MVT MTy = LT.second;<br>
> >> >> > +<br>
> >> >> >    if (IsPairwise) {<br>
> >> >> >      if (ST->hasAVX())<br>
> >> >> >        if (const auto *Entry = CostTableLookup(AVX1CostTblPairWise, ISD, MTy))<br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/test/Analysis/CostModel/X86/alternate-shuffle-cost.ll<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/alternate-shuffle-cost.ll?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/alternate-shuffle-cost.ll?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/test/Analysis/CostModel/X86/alternate-shuffle-cost.ll (original)<br>
> >> >> > +++ llvm/trunk/test/Analysis/CostModel/X86/alternate-shuffle-cost.ll Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -18,9 +18,21 @@<br>
> >> >> >  ; 64-bit packed float vectors (v2f32) are widened to type v4f32.<br>
> >> >> ><br>
> >> >> >  define <2 x i32> @test_v2i32(<2 x i32> %a, <2 x i32> %b) {<br>
> >> >> > -; CHECK-LABEL: 'test_v2i32'<br>
> >> >> > -; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 3><br>
> >> >> > -; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +; SSE2-LABEL: 'test_v2i32'<br>
> >> >> > +; SSE2-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 3><br>
> >> >> > +; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +;<br>
> >> >> > +; SSSE3-LABEL: 'test_v2i32'<br>
> >> >> > +; SSSE3-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 3><br>
> >> >> > +; SSSE3-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +;<br>
> >> >> > +; SSE42-LABEL: 'test_v2i32'<br>
> >> >> > +; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 3><br>
> >> >> > +; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +;<br>
> >> >> > +; AVX-LABEL: 'test_v2i32'<br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 3><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'test_v2i32'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 0, i32 3><br>
> >> >> > @@ -56,9 +68,21 @@ define <2 x float> @test_v2f32(<2 x floa<br>
> >> >> >  }<br>
> >> >> ><br>
> >> >> >  define <2 x i32> @test_v2i32_2(<2 x i32> %a, <2 x i32> %b) {<br>
> >> >> > -; CHECK-LABEL: 'test_v2i32_2'<br>
> >> >> > -; CHECK-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 2, i32 1><br>
> >> >> > -; CHECK-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +; SSE2-LABEL: 'test_v2i32_2'<br>
> >> >> > +; SSE2-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 2, i32 1><br>
> >> >> > +; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +;<br>
> >> >> > +; SSSE3-LABEL: 'test_v2i32_2'<br>
> >> >> > +; SSSE3-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 2, i32 1><br>
> >> >> > +; SSSE3-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +;<br>
> >> >> > +; SSE42-LABEL: 'test_v2i32_2'<br>
> >> >> > +; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 2, i32 1><br>
> >> >> > +; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> > +;<br>
> >> >> > +; AVX-LABEL: 'test_v2i32_2'<br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 2, i32 1><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %1<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'test_v2i32_2'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %1 = shufflevector <2 x i32> %a, <2 x i32> %b, <2 x i32> <i32 2, i32 1><br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/test/Analysis/CostModel/X86/arith.ll<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/arith.ll?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/arith.ll?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/test/Analysis/CostModel/X86/arith.ll (original)<br>
> >> >> > +++ llvm/trunk/test/Analysis/CostModel/X86/arith.ll Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -1342,36 +1342,32 @@ define i32 @mul(i32 %arg) {<br>
> >> >> >  ; A <2 x i64> vector multiply is implemented using<br>
> >> >> >  ; 3 PMULUDQ and 2 PADDS and 4 shifts.<br>
> >> >> >  define void @mul_2i32() {<br>
> >> >> > -; SSE-LABEL: 'mul_2i32'<br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > +; SSSE3-LABEL: 'mul_2i32'<br>
> >> >> > +; SSSE3-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > +; SSSE3-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > +;<br>
> >> >> > +; SSE42-LABEL: 'mul_2i32'<br>
> >> >> > +; SSE42-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > +; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'mul_2i32'<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> > -; AVX512F-LABEL: 'mul_2i32'<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > -;<br>
> >> >> > -; AVX512BW-LABEL: 'mul_2i32'<br>
> >> >> > -; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > -; AVX512BW-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > -;<br>
> >> >> > -; AVX512DQ-LABEL: 'mul_2i32'<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > +; AVX512-LABEL: 'mul_2i32'<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >  ; SLM-LABEL: 'mul_2i32'<br>
> >> >> > -; SLM-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > +; SLM-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> >  ; SLM-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >  ; GLM-LABEL: 'mul_2i32'<br>
> >> >> > -; GLM-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > +; GLM-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> >  ; GLM-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'mul_2i32'<br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %A0 = mul <2 x i32> undef, undef<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >    %A0 = mul <2 x i32> undef, undef<br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/test/Analysis/CostModel/X86/cast.ll<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/cast.ll?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/cast.ll?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/test/Analysis/CostModel/X86/cast.ll (original)<br>
> >> >> > +++ llvm/trunk/test/Analysis/CostModel/X86/cast.ll Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -315,10 +315,10 @@ define void @sitofp4(<4 x i1> %a, <4 x i<br>
> >> >> >  ; SSE-LABEL: 'sitofp4'<br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %A1 = sitofp <4 x i1> %a to <4 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %A2 = sitofp <4 x i1> %a to <4 x double><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %B1 = sitofp <4 x i8> %b to <4 x float><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %B2 = sitofp <4 x i8> %b to <4 x double><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %C1 = sitofp <4 x i16> %c to <4 x float><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %C2 = sitofp <4 x i16> %c to <4 x double><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %B1 = sitofp <4 x i8> %b to <4 x float><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 160 for instruction: %B2 = sitofp <4 x i8> %b to <4 x double><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %C1 = sitofp <4 x i16> %c to <4 x float><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %C2 = sitofp <4 x i16> %c to <4 x double><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %D1 = sitofp <4 x i32> %d to <4 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %D2 = sitofp <4 x i32> %d to <4 x double><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > @@ -359,7 +359,7 @@ define void @sitofp4(<4 x i1> %a, <4 x i<br>
> >> >> >  define void @sitofp8(<8 x i1> %a, <8 x i8> %b, <8 x i16> %c, <8 x i32> %d) {<br>
> >> >> >  ; SSE-LABEL: 'sitofp8'<br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %A1 = sitofp <8 x i1> %a to <8 x float><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %B1 = sitofp <8 x i8> %b to <8 x float><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %B1 = sitofp <8 x i8> %b to <8 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %C1 = sitofp <8 x i16> %c to <8 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %D1 = sitofp <8 x i32> %d to <8 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > @@ -390,9 +390,9 @@ define void @uitofp4(<4 x i1> %a, <4 x i<br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %A1 = uitofp <4 x i1> %a to <4 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %A2 = uitofp <4 x i1> %a to <4 x double><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %B1 = uitofp <4 x i8> %b to <4 x float><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %B2 = uitofp <4 x i8> %b to <4 x double><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %C1 = uitofp <4 x i16> %c to <4 x float><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %C2 = uitofp <4 x i16> %c to <4 x double><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 160 for instruction: %B2 = uitofp <4 x i8> %b to <4 x double><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %C1 = uitofp <4 x i16> %c to <4 x float><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 80 for instruction: %C2 = uitofp <4 x i16> %c to <4 x double><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %D1 = uitofp <4 x i32> %d to <4 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 40 for instruction: %D2 = uitofp <4 x i32> %d to <4 x double><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > @@ -433,7 +433,7 @@ define void @uitofp4(<4 x i1> %a, <4 x i<br>
> >> >> >  define void @uitofp8(<8 x i1> %a, <8 x i8> %b, <8 x i16> %c, <8 x i32> %d) {<br>
> >> >> >  ; SSE-LABEL: 'uitofp8'<br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %A1 = uitofp <8 x i1> %a to <8 x float><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %B1 = uitofp <8 x i8> %b to <8 x float><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %B1 = uitofp <8 x i8> %b to <8 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %C1 = uitofp <8 x i16> %c to <8 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %D1 = uitofp <8 x i32> %d to <8 x float><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/test/Analysis/CostModel/X86/fptosi.ll<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/fptosi.ll?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/fptosi.ll?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/test/Analysis/CostModel/X86/fptosi.ll (original)<br>
> >> >> > +++ llvm/trunk/test/Analysis/CostModel/X86/fptosi.ll Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -92,35 +92,28 @@ define i32 @fptosi_double_i32(i32 %arg)<br>
> >> >> >  define i32 @fptosi_double_i16(i32 %arg) {<br>
> >> >> >  ; SSE-LABEL: 'fptosi_double_i16'<br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptosi double undef to i16<br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 13 for instruction: %V4I16 = fptosi <4 x double> undef to <4 x i16><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 27 for instruction: %V8I16 = fptosi <8 x double> undef to <8 x i16><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4I16 = fptosi <4 x double> undef to <4 x i16><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %V8I16 = fptosi <8 x double> undef to <8 x i16><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'fptosi_double_i16'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptosi double undef to i16<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptosi <4 x double> undef to <4 x i16><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I16 = fptosi <8 x double> undef to <8 x i16><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> > -; AVX512F-LABEL: 'fptosi_double_i16'<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptosi double undef to i16<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptosi <4 x double> undef to <4 x i16><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = fptosi <8 x double> undef to <8 x i16><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX512DQ-LABEL: 'fptosi_double_i16'<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptosi double undef to i16<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptosi <4 x double> undef to <4 x i16><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = fptosi <8 x double> undef to <8 x i16><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > +; AVX512-LABEL: 'fptosi_double_i16'<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptosi double undef to i16<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptosi <4 x double> undef to <4 x i16><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = fptosi <8 x double> undef to <8 x i16><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'fptosi_double_i16'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptosi double undef to i16<br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptosi <2 x double> undef to <2 x i16><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptosi <4 x double> undef to <4 x i16><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I16 = fptosi <8 x double> undef to <8 x i16><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > @@ -143,29 +136,22 @@ define i32 @fptosi_double_i8(i32 %arg) {<br>
> >> >> >  ; AVX-LABEL: 'fptosi_double_i8'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptosi double undef to i8<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I8 = fptosi <2 x double> undef to <2 x i8><br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptosi <4 x double> undef to <4 x i8><br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I8 = fptosi <8 x double> undef to <8 x i8><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I8 = fptosi <4 x double> undef to <4 x i8><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 25 for instruction: %V8I8 = fptosi <8 x double> undef to <8 x i8><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> > -; AVX512F-LABEL: 'fptosi_double_i8'<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptosi double undef to i8<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I8 = fptosi <2 x double> undef to <2 x i8><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptosi <4 x double> undef to <4 x i8><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I8 = fptosi <8 x double> undef to <8 x i8><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX512DQ-LABEL: 'fptosi_double_i8'<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptosi double undef to i8<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I8 = fptosi <2 x double> undef to <2 x i8><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptosi <4 x double> undef to <4 x i8><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I8 = fptosi <8 x double> undef to <8 x i8><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > +; AVX512-LABEL: 'fptosi_double_i8'<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptosi double undef to i8<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I8 = fptosi <2 x double> undef to <2 x i8><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptosi <4 x double> undef to <4 x i8><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I8 = fptosi <8 x double> undef to <8 x i8><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'fptosi_double_i8'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptosi double undef to i8<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I8 = fptosi <2 x double> undef to <2 x i8><br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptosi <4 x double> undef to <4 x i8><br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I8 = fptosi <8 x double> undef to <8 x i8><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I8 = fptosi <4 x double> undef to <4 x i8><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 25 for instruction: %V8I8 = fptosi <8 x double> undef to <8 x i8><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >    %I8 = fptosi double undef to i8<br>
> >> >> > @@ -285,9 +271,9 @@ define i32 @fptosi_float_i16(i32 %arg) {<br>
> >> >> >  define i32 @fptosi_float_i8(i32 %arg) {<br>
> >> >> >  ; SSE-LABEL: 'fptosi_float_i8'<br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptosi float undef to i8<br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptosi <4 x float> undef to <4 x i8><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I8 = fptosi <8 x float> undef to <8 x i8><br>
> >> >> > -; SSE-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %V16I8 = fptosi <16 x float> undef to <16 x i8><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I8 = fptosi <4 x float> undef to <4 x i8><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 25 for instruction: %V8I8 = fptosi <8 x float> undef to <8 x i8><br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 51 for instruction: %V16I8 = fptosi <16 x float> undef to <16 x i8><br>
> >> >> >  ; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'fptosi_float_i8'<br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/test/Analysis/CostModel/X86/fptoui.ll<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/fptoui.ll?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/fptoui.ll?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/test/Analysis/CostModel/X86/fptoui.ll (original)<br>
> >> >> > +++ llvm/trunk/test/Analysis/CostModel/X86/fptoui.ll Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -68,19 +68,12 @@ define i32 @fptoui_double_i32(i32 %arg)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 33 for instruction: %V8I32 = fptoui <8 x double> undef to <8 x i32><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> > -; AVX512F-LABEL: 'fptoui_double_i32'<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I32 = fptoui double undef to i32<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I32 = fptoui <2 x double> undef to <2 x i32><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I32 = fptoui <4 x double> undef to <4 x i32><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I32 = fptoui <8 x double> undef to <8 x i32><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX512DQ-LABEL: 'fptoui_double_i32'<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I32 = fptoui double undef to i32<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I32 = fptoui <2 x double> undef to <2 x i32><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I32 = fptoui <4 x double> undef to <4 x i32><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I32 = fptoui <8 x double> undef to <8 x i32><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > +; AVX512-LABEL: 'fptoui_double_i32'<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I32 = fptoui double undef to i32<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I32 = fptoui <2 x double> undef to <2 x i32><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I32 = fptoui <4 x double> undef to <4 x i32><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I32 = fptoui <8 x double> undef to <8 x i32><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'fptoui_double_i32'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I32 = fptoui double undef to i32<br>
> >> >> > @@ -106,30 +99,23 @@ define i32 @fptoui_double_i16(i32 %arg)<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'fptoui_double_i16'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptoui double undef to i16<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I16 = fptoui <2 x double> undef to <2 x i16><br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I16 = fptoui <4 x double> undef to <4 x i16><br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 25 for instruction: %V8I16 = fptoui <8 x double> undef to <8 x i16><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptoui <2 x double> undef to <2 x i16><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptoui <4 x double> undef to <4 x i16><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I16 = fptoui <8 x double> undef to <8 x i16><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> > -; AVX512F-LABEL: 'fptoui_double_i16'<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptoui double undef to i16<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I16 = fptoui <2 x double> undef to <2 x i16><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptoui <4 x double> undef to <4 x i16><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8I16 = fptoui <8 x double> undef to <8 x i16><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX512DQ-LABEL: 'fptoui_double_i16'<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptoui double undef to i16<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptoui <2 x double> undef to <2 x i16><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptoui <4 x double> undef to <4 x i16><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8I16 = fptoui <8 x double> undef to <8 x i16><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > +; AVX512-LABEL: 'fptoui_double_i16'<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptoui double undef to i16<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptoui <2 x double> undef to <2 x i16><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptoui <4 x double> undef to <4 x i16><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8I16 = fptoui <8 x double> undef to <8 x i16><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'fptoui_double_i16'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptoui double undef to i16<br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I16 = fptoui <2 x double> undef to <2 x i16><br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I16 = fptoui <4 x double> undef to <4 x i16><br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 25 for instruction: %V8I16 = fptoui <8 x double> undef to <8 x i16><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I16 = fptoui <2 x double> undef to <2 x i16><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptoui <4 x double> undef to <4 x i16><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I16 = fptoui <8 x double> undef to <8 x i16><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >    %I16 = fptoui double undef to i16<br>
> >> >> > @@ -154,19 +140,12 @@ define i32 @fptoui_double_i8(i32 %arg) {<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 25 for instruction: %V8I8 = fptoui <8 x double> undef to <8 x i8><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> > -; AVX512F-LABEL: 'fptoui_double_i8'<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptoui double undef to i8<br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I8 = fptoui <2 x double> undef to <2 x i8><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptoui <4 x double> undef to <4 x i8><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8I8 = fptoui <8 x double> undef to <8 x i8><br>
> >> >> > -; AVX512F-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX512DQ-LABEL: 'fptoui_double_i8'<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptoui double undef to i8<br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I8 = fptoui <2 x double> undef to <2 x i8><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptoui <4 x double> undef to <4 x i8><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8I8 = fptoui <8 x double> undef to <8 x i8><br>
> >> >> > -; AVX512DQ-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > +; AVX512-LABEL: 'fptoui_double_i8'<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptoui double undef to i8<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2I8 = fptoui <2 x double> undef to <2 x i8><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I8 = fptoui <4 x double> undef to <4 x i8><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8I8 = fptoui <8 x double> undef to <8 x i8><br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'fptoui_double_i8'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptoui double undef to i8<br>
> >> >> > @@ -277,7 +256,7 @@ define i32 @fptoui_float_i16(i32 %arg) {<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'fptoui_float_i16'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptoui float undef to i16<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I16 = fptoui <4 x float> undef to <4 x i16><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptoui <4 x float> undef to <4 x i16><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = fptoui <8 x float> undef to <8 x i16><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V16I16 = fptoui <16 x float> undef to <16 x i16><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > @@ -291,7 +270,7 @@ define i32 @fptoui_float_i16(i32 %arg) {<br>
> >> >> >  ;<br>
> >> >> >  ; BTVER2-LABEL: 'fptoui_float_i16'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I16 = fptoui float undef to i16<br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I16 = fptoui <4 x float> undef to <4 x i16><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I16 = fptoui <4 x float> undef to <4 x i16><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = fptoui <8 x float> undef to <8 x i16><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V16I16 = fptoui <16 x float> undef to <16 x i16><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > @@ -314,8 +293,8 @@ define i32 @fptoui_float_i8(i32 %arg) {<br>
> >> >> >  ; AVX-LABEL: 'fptoui_float_i8'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptoui float undef to i8<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I8 = fptoui <4 x float> undef to <4 x i8><br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I8 = fptoui <8 x float> undef to <8 x i8><br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V16I8 = fptoui <16 x float> undef to <16 x i8><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 24 for instruction: %V8I8 = fptoui <8 x float> undef to <8 x i8><br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 49 for instruction: %V16I8 = fptoui <16 x float> undef to <16 x i8><br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >  ; AVX512-LABEL: 'fptoui_float_i8'<br>
> >> >> > @@ -328,8 +307,8 @@ define i32 @fptoui_float_i8(i32 %arg) {<br>
> >> >> >  ; BTVER2-LABEL: 'fptoui_float_i8'<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %I8 = fptoui float undef to i8<br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V4I8 = fptoui <4 x float> undef to <4 x i8><br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I8 = fptoui <8 x float> undef to <8 x i8><br>
> >> >> > -; BTVER2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V16I8 = fptoui <16 x float> undef to <16 x i8><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 24 for instruction: %V8I8 = fptoui <8 x float> undef to <8 x i8><br>
> >> >> > +; BTVER2-NEXT:  Cost Model: Found an estimated cost of 49 for instruction: %V16I8 = fptoui <16 x float> undef to <16 x i8><br>
> >> >> >  ; BTVER2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> >  ;<br>
> >> >> >    %I8 = fptoui float undef to i8<br>
> >> >> ><br>
> >> >> > Modified: llvm/trunk/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll?rev=368183&r1=368182&r2=368183&view=diff" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll?rev=368183&r1=368182&r2=368183&view=diff</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll (original)<br>
> >> >> > +++ llvm/trunk/test/Analysis/CostModel/X86/masked-intrinsic-cost.ll Wed Aug  7 09:24:26 2019<br>
> >> >> > @@ -52,7 +52,7 @@ define i32 @masked_load() {<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V16I32 = call <16 x i32> @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* undef, i32 1, <16 x i1> undef, <16 x i32> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V8I32 = call <8 x i32> @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* undef, i32 1, <8 x i1> undef, <8 x i32> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V4I32 = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* undef, i32 1, <4 x i1> undef, <4 x i32> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V2I32 = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* undef, i32 1, <2 x i1> undef, <2 x i32> undef)<br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V2I32 = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* undef, i32 1, <2 x i1> undef, <2 x i32> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 128 for instruction: %V32I16 = call <32 x i16> @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* undef, i32 1, <32 x i1> undef, <32 x i16> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 64 for instruction: %V16I16 = call <16 x i16> @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* undef, i32 1, <16 x i1> undef, <16 x i16> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 32 for instruction: %V8I16 = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* undef, i32 1, <8 x i1> undef, <8 x i16> undef)<br>
> >> >> > @@ -79,7 +79,7 @@ define i32 @masked_load() {<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16I32 = call <16 x i32> @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* undef, i32 1, <16 x i1> undef, <16 x i32> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I32 = call <8 x i32> @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* undef, i32 1, <8 x i1> undef, <8 x i32> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I32 = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* undef, i32 1, <4 x i1> undef, <4 x i32> undef)<br>
> >> >> > -; KNL-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2I32 = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* undef, i32 1, <2 x i1> undef, <2 x i32> undef)<br>
> >> >> > +; KNL-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V2I32 = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* undef, i32 1, <2 x i1> undef, <2 x i32> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 128 for instruction: %V32I16 = call <32 x i16> @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* undef, i32 1, <32 x i1> undef, <32 x i16> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 64 for instruction: %V16I16 = call <16 x i16> @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* undef, i32 1, <16 x i1> undef, <16 x i16> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 32 for instruction: %V8I16 = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* undef, i32 1, <8 x i1> undef, <8 x i16> undef)<br>
> >> >> > @@ -106,15 +106,15 @@ define i32 @masked_load() {<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16I32 = call <16 x i32> @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* undef, i32 1, <16 x i1> undef, <16 x i32> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I32 = call <8 x i32> @llvm.masked.load.v8i32.p0v8i32(<8 x i32>* undef, i32 1, <8 x i1> undef, <8 x i32> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V4I32 = call <4 x i32> @llvm.masked.load.v4i32.p0v4i32(<4 x i32>* undef, i32 1, <4 x i1> undef, <4 x i32> undef)<br>
> >> >> > -; SKX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2I32 = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* undef, i32 1, <2 x i1> undef, <2 x i32> undef)<br>
> >> >> > +; SKX-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V2I32 = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* undef, i32 1, <2 x i1> undef, <2 x i32> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V32I16 = call <32 x i16> @llvm.masked.load.v32i16.p0v32i16(<32 x i16>* undef, i32 1, <32 x i1> undef, <32 x i16> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16I16 = call <16 x i16> @llvm.masked.load.v16i16.p0v16i16(<16 x i16>* undef, i32 1, <16 x i1> undef, <16 x i16> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V8I16 = call <8 x i16> @llvm.masked.load.v8i16.p0v8i16(<8 x i16>* undef, i32 1, <8 x i1> undef, <8 x i16> undef)<br>
> >> >> > -; SKX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4I16 = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* undef, i32 1, <4 x i1> undef, <4 x i16> undef)<br>
> >> >> > +; SKX-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %V4I16 = call <4 x i16> @llvm.masked.load.v4i16.p0v4i16(<4 x i16>* undef, i32 1, <4 x i1> undef, <4 x i16> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V64I8 = call <64 x i8> @llvm.masked.load.v64i8.p0v64i8(<64 x i8>* undef, i32 1, <64 x i1> undef, <64 x i8> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V32I8 = call <32 x i8> @llvm.masked.load.v32i8.p0v32i8(<32 x i8>* undef, i32 1, <32 x i1> undef, <32 x i8> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V16I8 = call <16 x i8> @llvm.masked.load.v16i8.p0v16i8(<16 x i8>* undef, i32 1, <16 x i1> undef, <16 x i8> undef)<br>
> >> >> > -; SKX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V8I8 = call <8 x i8> @llvm.masked.load.v8i8.p0v8i8(<8 x i8>* undef, i32 1, <8 x i1> undef, <8 x i8> undef)<br>
> >> >> > +; SKX-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %V8I8 = call <8 x i8> @llvm.masked.load.v8i8.p0v8i8(<8 x i8>* undef, i32 1, <8 x i1> undef, <8 x i8> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 0<br>
> >> >> >  ;<br>
> >> >> >    %V8F64 = call <8 x double> @llvm.masked.load.v8f64.p0v8f64(<8 x double>* undef, i32 1, <8 x i1> undef, <8 x double> undef)<br>
> >> >> > @@ -194,7 +194,7 @@ define i32 @masked_store() {<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: call void @llvm.masked.store.v16i32.p0v16i32(<16 x i32> undef, <16 x i32>* undef, i32 1, <16 x i1> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: call void @llvm.masked.store.v8i32.p0v8i32(<8 x i32> undef, <8 x i32>* undef, i32 1, <8 x i1> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> undef, <4 x i32>* undef, i32 1, <4 x i1> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> undef, <2 x i32>* undef, i32 1, <2 x i1> undef)<br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> undef, <2 x i32>* undef, i32 1, <2 x i1> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 128 for instruction: call void @llvm.masked.store.v32i16.p0v32i16(<32 x i16> undef, <32 x i16>* undef, i32 1, <32 x i1> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 64 for instruction: call void @llvm.masked.store.v16i16.p0v16i16(<16 x i16> undef, <16 x i16>* undef, i32 1, <16 x i1> undef)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 32 for instruction: call void @llvm.masked.store.v8i16.p0v8i16(<8 x i16> undef, <8 x i16>* undef, i32 1, <8 x i1> undef)<br>
> >> >> > @@ -221,7 +221,7 @@ define i32 @masked_store() {<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v16i32.p0v16i32(<16 x i32> undef, <16 x i32>* undef, i32 1, <16 x i1> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v8i32.p0v8i32(<8 x i32> undef, <8 x i32>* undef, i32 1, <8 x i1> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> undef, <4 x i32>* undef, i32 1, <4 x i1> undef)<br>
> >> >> > -; KNL-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> undef, <2 x i32>* undef, i32 1, <2 x i1> undef)<br>
> >> >> > +; KNL-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> undef, <2 x i32>* undef, i32 1, <2 x i1> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 128 for instruction: call void @llvm.masked.store.v32i16.p0v32i16(<32 x i16> undef, <32 x i16>* undef, i32 1, <32 x i1> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 64 for instruction: call void @llvm.masked.store.v16i16.p0v16i16(<16 x i16> undef, <16 x i16>* undef, i32 1, <16 x i1> undef)<br>
> >> >> >  ; KNL-NEXT:  Cost Model: Found an estimated cost of 32 for instruction: call void @llvm.masked.store.v8i16.p0v8i16(<8 x i16> undef, <8 x i16>* undef, i32 1, <8 x i1> undef)<br>
> >> >> > @@ -248,15 +248,15 @@ define i32 @masked_store() {<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v16i32.p0v16i32(<16 x i32> undef, <16 x i32>* undef, i32 1, <16 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v8i32.p0v8i32(<8 x i32> undef, <8 x i32>* undef, i32 1, <8 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v4i32.p0v4i32(<4 x i32> undef, <4 x i32>* undef, i32 1, <4 x i1> undef)<br>
> >> >> > -; SKX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> undef, <2 x i32>* undef, i32 1, <2 x i1> undef)<br>
> >> >> > +; SKX-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> undef, <2 x i32>* undef, i32 1, <2 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v32i16.p0v32i16(<32 x i16> undef, <32 x i16>* undef, i32 1, <32 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v16i16.p0v16i16(<16 x i16> undef, <16 x i16>* undef, i32 1, <16 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v8i16.p0v8i16(<8 x i16> undef, <8 x i16>* undef, i32 1, <8 x i1> undef)<br>
> >> >> > -; SKX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.store.v4i16.p0v4i16(<4 x i16> undef, <4 x i16>* undef, i32 1, <4 x i1> undef)<br>
> >> >> > +; SKX-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: call void @llvm.masked.store.v4i16.p0v4i16(<4 x i16> undef, <4 x i16>* undef, i32 1, <4 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v64i8.p0v64i8(<64 x i8> undef, <64 x i8>* undef, i32 1, <64 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v32i8.p0v32i8(<32 x i8> undef, <32 x i8>* undef, i32 1, <32 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: call void @llvm.masked.store.v16i8.p0v16i8(<16 x i8> undef, <16 x i8>* undef, i32 1, <16 x i1> undef)<br>
> >> >> > -; SKX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.store.v8i8.p0v8i8(<8 x i8> undef, <8 x i8>* undef, i32 1, <8 x i1> undef)<br>
> >> >> > +; SKX-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: call void @llvm.masked.store.v8i8.p0v8i8(<8 x i8> undef, <8 x i8>* undef, i32 1, <8 x i1> undef)<br>
> >> >> >  ; SKX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 0<br>
> >> >> >  ;<br>
> >> >> >    call void @llvm.masked.store.v8f64.p0v8f64(<8 x double> undef, <8 x double>* undef, i32 1, <8 x i1> undef)<br>
> >> >> > @@ -960,15 +960,10 @@ define <8 x float> @test4(<8 x i32> %tri<br>
> >> >> >  }<br>
> >> >> ><br>
> >> >> >  define void @test5(<2 x i32> %trigger, <2 x float>* %addr, <2 x float> %val) {<br>
> >> >> > -; SSE2-LABEL: 'test5'<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.store.v2f32.p0v2f32(<2 x float> %val, <2 x float>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > -;<br>
> >> >> > -; SSE42-LABEL: 'test5'<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.store.v2f32.p0v2f32(<2 x float> %val, <2 x float>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > +; SSE-LABEL: 'test5'<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: call void @llvm.masked.store.v2f32.p0v2f32(<2 x float> %val, <2 x float>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'test5'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > @@ -986,24 +981,19 @@ define void @test5(<2 x i32> %trigger, <<br>
> >> >> >  }<br>
> >> >> ><br>
> >> >> >  define void @test6(<2 x i32> %trigger, <2 x i32>* %addr, <2 x i32> %val) {<br>
> >> >> > -; SSE2-LABEL: 'test6'<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> %val, <2 x i32>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > -;<br>
> >> >> > -; SSE42-LABEL: 'test6'<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> %val, <2 x i32>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> > +; SSE-LABEL: 'test6'<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> %val, <2 x i32>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'test6'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> %val, <2 x i32>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> %val, <2 x i32>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >  ; AVX512-LABEL: 'test6'<br>
> >> >> >  ; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> %val, <2 x i32>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: call void @llvm.masked.store.v2i32.p0v2i32(<2 x i32> %val, <2 x i32>* %addr, i32 4, <2 x i1> %mask)<br>
> >> >> >  ; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void<br>
> >> >> >  ;<br>
> >> >> >    %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > @@ -1012,15 +1002,10 @@ define void @test6(<2 x i32> %trigger, <<br>
> >> >> >  }<br>
> >> >> ><br>
> >> >> >  define <2 x float> @test7(<2 x i32> %trigger, <2 x float>* %addr, <2 x float> %dst) {<br>
> >> >> > -; SSE2-LABEL: 'test7'<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %res = call <2 x float> @llvm.masked.load.v2f32.p0v2f32(<2 x float>* %addr, i32 4, <2 x i1> %mask, <2 x float> %dst)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x float> %res<br>
> >> >> > -;<br>
> >> >> > -; SSE42-LABEL: 'test7'<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %res = call <2 x float> @llvm.masked.load.v2f32.p0v2f32(<2 x float>* %addr, i32 4, <2 x i1> %mask, <2 x float> %dst)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x float> %res<br>
> >> >> > +; SSE-LABEL: 'test7'<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %res = call <2 x float> @llvm.masked.load.v2f32.p0v2f32(<2 x float>* %addr, i32 4, <2 x i1> %mask, <2 x float> %dst)<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x float> %res<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'test7'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > @@ -1038,24 +1023,19 @@ define <2 x float> @test7(<2 x i32> %tri<br>
> >> >> >  }<br>
> >> >> ><br>
> >> >> >  define <2 x i32> @test8(<2 x i32> %trigger, <2 x i32>* %addr, <2 x i32> %dst) {<br>
> >> >> > -; SSE2-LABEL: 'test8'<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1> %mask, <2 x i32> %dst)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %res<br>
> >> >> > -;<br>
> >> >> > -; SSE42-LABEL: 'test8'<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1> %mask, <2 x i32> %dst)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %res<br>
> >> >> > +; SSE-LABEL: 'test8'<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1> %mask, <2 x i32> %dst)<br>
> >> >> > +; SSE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %res<br>
> >> >> >  ;<br>
> >> >> >  ; AVX-LABEL: 'test8'<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1> %mask, <2 x i32> %dst)<br>
> >> >> > +; AVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1> %mask, <2 x i32> %dst)<br>
> >> >> >  ; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %res<br>
> >> >> >  ;<br>
> >> >> >  ; AVX512-LABEL: 'test8'<br>
> >> >> >  ; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1> %mask, <2 x i32> %dst)<br>
> >> >> > +; AVX512-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %res = call <2 x i32> @llvm.masked.load.v2i32.p0v2i32(<2 x i32>* %addr, i32 4, <2 x i1> %mask, <2 x i32> %dst)<br>
> >> >> >  ; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <2 x i32> %res<br>
> >> >> >  ;<br>
> >> >> >    %mask = icmp eq <2 x i32> %trigger, zeroinitializer<br>
> >> >> ><br>
> >> >> > Removed: llvm/trunk/test/Analysis/CostModel/X86/reduce-add-widen.ll<br>
> >> >> > URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/reduce-add-widen.ll?rev=368182&view=auto" rel="noreferrer" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Analysis/CostModel/X86/reduce-add-widen.ll?rev=368182&view=auto</a><br>
> >> >> > ==============================================================================<br>
> >> >> > --- llvm/trunk/test/Analysis/CostModel/X86/reduce-add-widen.ll (original)<br>
> >> >> > +++ llvm/trunk/test/Analysis/CostModel/X86/reduce-add-widen.ll (removed)<br>
> >> >> > @@ -1,307 +0,0 @@<br>
> >> >> > -; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+sse2 | FileCheck %s --check-prefixes=CHECK,SSE,SSE2<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+ssse3 | FileCheck %s --check-prefixes=CHECK,SSE,SSSE3<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+sse4.2 | FileCheck %s --check-prefixes=CHECK,SSE,SSE42<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+avx | FileCheck %s --check-prefixes=CHECK,AVX,AVX1<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+avx2 | FileCheck %s --check-prefixes=CHECK,AVX,AVX2<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+avx512f | FileCheck %s --check-prefixes=CHECK,AVX512,AVX512F<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+avx512f,+avx512bw | FileCheck %s --check-prefixes=CHECK,AVX512,AVX512BW<br>
> >> >> > -; RUN: opt < %s -x86-experimental-vector-widening-legalization -cost-model -mtriple=x86_64-apple-darwin -analyze -mattr=+avx512f,+avx512dq | FileCheck %s --check-prefixes=CHECK,AVX512,AVX512DQ<br>
> >> >> > -<br>
> >> >> > -define i32 @reduce_i64(i32 %arg) {<br>
> >> >> > -; SSE2-LABEL: 'reduce_i64'<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %V1 = call i64 @llvm.experimental.vector.reduce.add.v1i64(<1 x i64> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.experimental.vector.reduce.add.v2i64(<2 x i64> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.experimental.vector.reduce.add.v4i64(<4 x i64> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V8 = call i64 @llvm.experimental.vector.reduce.add.v8i64(<8 x i64> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16 = call i64 @llvm.experimental.vector.reduce.add.v16i64(<16 x i64> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; SSSE3-LABEL: 'reduce_i64'<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %V1 = call i64 @llvm.experimental.vector.reduce.add.v1i64(<1 x i64> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i64 @llvm.experimental.vector.reduce.add.v2i64(<2 x i64> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.experimental.vector.reduce.add.v4i64(<4 x i64> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V8 = call i64 @llvm.experimental.vector.reduce.add.v8i64(<8 x i64> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16 = call i64 @llvm.experimental.vector.reduce.add.v16i64(<16 x i64> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; SSE42-LABEL: 'reduce_i64'<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %V1 = call i64 @llvm.experimental.vector.reduce.add.v1i64(<1 x i64> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %V2 = call i64 @llvm.experimental.vector.reduce.add.v2i64(<2 x i64> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %V4 = call i64 @llvm.experimental.vector.reduce.add.v4i64(<4 x i64> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V8 = call i64 @llvm.experimental.vector.reduce.add.v8i64(<8 x i64> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %V16 = call i64 @llvm.experimental.vector.reduce.add.v16i64(<16 x i64> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX-LABEL: 'reduce_i64'<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %V1 = call i64 @llvm.experimental.vector.reduce.add.v1i64(<1 x i64> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2 = call i64 @llvm.experimental.vector.reduce.add.v2i64(<2 x i64> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.experimental.vector.reduce.add.v4i64(<4 x i64> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V8 = call i64 @llvm.experimental.vector.reduce.add.v8i64(<8 x i64> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V16 = call i64 @llvm.experimental.vector.reduce.add.v16i64(<16 x i64> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX512-LABEL: 'reduce_i64'<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %V1 = call i64 @llvm.experimental.vector.reduce.add.v1i64(<1 x i64> undef)<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %V2 = call i64 @llvm.experimental.vector.reduce.add.v2i64(<2 x i64> undef)<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i64 @llvm.experimental.vector.reduce.add.v4i64(<4 x i64> undef)<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %V8 = call i64 @llvm.experimental.vector.reduce.add.v8i64(<8 x i64> undef)<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16 = call i64 @llvm.experimental.vector.reduce.add.v16i64(<16 x i64> undef)<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -  %V1  = call i64 @llvm.experimental.vector.reduce.add.v1i64(<1 x i64> undef)<br>
> >> >> > -  %V2  = call i64 @llvm.experimental.vector.reduce.add.v2i64(<2 x i64> undef)<br>
> >> >> > -  %V4  = call i64 @llvm.experimental.vector.reduce.add.v4i64(<4 x i64> undef)<br>
> >> >> > -  %V8  = call i64 @llvm.experimental.vector.reduce.add.v8i64(<8 x i64> undef)<br>
> >> >> > -  %V16 = call i64 @llvm.experimental.vector.reduce.add.v16i64(<16 x i64> undef)<br>
> >> >> > -  ret i32 undef<br>
> >> >> > -}<br>
> >> >> > -<br>
> >> >> > -define i32 @reduce_i32(i32 %arg) {<br>
> >> >> > -; SSE2-LABEL: 'reduce_i32'<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.experimental.vector.reduce.add.v2i32(<2 x i32> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V4 = call i32 @llvm.experimental.vector.reduce.add.v4i32(<4 x i32> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V8 = call i32 @llvm.experimental.vector.reduce.add.v8i32(<8 x i32> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16 = call i32 @llvm.experimental.vector.reduce.add.v16i32(<16 x i32> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V32 = call i32 @llvm.experimental.vector.reduce.add.v32i32(<32 x i32> undef)<br>
> >> >> > -; SSE2-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; SSSE3-LABEL: 'reduce_i32'<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.experimental.vector.reduce.add.v2i32(<2 x i32> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V4 = call i32 @llvm.experimental.vector.reduce.add.v4i32(<4 x i32> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V8 = call i32 @llvm.experimental.vector.reduce.add.v8i32(<8 x i32> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %V16 = call i32 @llvm.experimental.vector.reduce.add.v16i32(<16 x i32> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V32 = call i32 @llvm.experimental.vector.reduce.add.v32i32(<32 x i32> undef)<br>
> >> >> > -; SSSE3-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; SSE42-LABEL: 'reduce_i32'<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.experimental.vector.reduce.add.v2i32(<2 x i32> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.experimental.vector.reduce.add.v4i32(<4 x i32> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %V8 = call i32 @llvm.experimental.vector.reduce.add.v8i32(<8 x i32> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 12 for instruction: %V16 = call i32 @llvm.experimental.vector.reduce.add.v16i32(<16 x i32> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 24 for instruction: %V32 = call i32 @llvm.experimental.vector.reduce.add.v32i32(<32 x i32> undef)<br>
> >> >> > -; SSE42-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX-LABEL: 'reduce_i32'<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.experimental.vector.reduce.add.v2i32(<2 x i32> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V4 = call i32 @llvm.experimental.vector.reduce.add.v4i32(<4 x i32> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %V8 = call i32 @llvm.experimental.vector.reduce.add.v8i32(<8 x i32> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: %V16 = call i32 @llvm.experimental.vector.reduce.add.v16i32(<16 x i32> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 20 for instruction: %V32 = call i32 @llvm.experimental.vector.reduce.add.v32i32(<32 x i32> undef)<br>
> >> >> > -; AVX-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret i32 undef<br>
> >> >> > -;<br>
> >> >> > -; AVX512-LABEL: 'reduce_i32'<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %V2 = call i32 @llvm.experimental.vector.reduce.add.v2i32(<2 x i32> undef)<br>
> >> >> > -; AVX512-NEXT:  Cost Model: Found an estimated cost of 3 for i<br>
</blockquote></div>
</blockquote></div>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" class="cremed">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" class="cremed">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div>
</blockquote></div></div>