On Tue, Jun 27, 2023 at 8:40 PM Roger Sayle <ro...@nextmovesoftware.com> wrote: > > > This patch fixes the FAIL of gcc.target/i386/pr78794.c on ia32, which > is caused by minor STV rtx_cost differences with -march=silvermont. > It turns out that generic tuning results in pandn, but the lack of > accurate parameterization for COMPARE in compute_convert_gain combined > with small differences in scalar<->SSE costs on silvermont results in > this DImode chain not being converted. > > The solution is to provide more accurate costs/gains for converting > (DImode and SImode) comparisons. > > I'd been holding off of doing this as I'd thought it would be possible > to turn pandn;ptestz into ptestc (for an even bigger scalar-to-vector > win) but I've recently realized that these optimizations (as I've > implemented them) occur in the wrong order (stv2 occurs after > combine), so it isn't easy for STV to convert CCZmode into CCCmode. > Doh! Perhaps something can be done in peephole2... > > > This patch has been tested on x86_64-pc-linux-gnu with make bootstrap > and make -k check, both with and without --target_board=unix{-m32} > with no new failures. Ok for mainline? > > > 2023-06-27 Roger Sayle <ro...@nextmovesoftware.com> > > gcc/ChangeLog > PR target/78794 > * config/i386/i386-features.cc (compute_convert_gain): Provide > more accurate gains for conversion of scalar comparisons to > PTEST.
LGTM. Thanks, Uros. > > Thanks for your patience. > Roger > -- >