aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/doc/doxygen/stdheader.cc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2025-05-11 23:49:11 +0200
committerJan Hubicka <hubicka@ucw.cz>2025-05-11 23:49:48 +0200
commit37e61c793c1b22bdcfbf142cd6086da2745be596 (patch)
treeeeda93129a3b232017908c8a9277a143a7ca9de2 /libstdc++-v3/doc/doxygen/stdheader.cc
parentaa0d25683bb5c7f2256d9e897fe471f0de84ea9b (diff)
downloadgcc-37e61c793c1b22bdcfbf142cd6086da2745be596.zip
gcc-37e61c793c1b22bdcfbf142cd6086da2745be596.tar.gz
gcc-37e61c793c1b22bdcfbf142cd6086da2745be596.tar.bz2
i386: Fix move costs in vectorizer cost model.
This patch complements the change to stv and uses COSTS_N_INSNS (...)/2 to convert move costs to COSTS_N_INSNS based costs used by vectorizer. The patch makes pr9981 to XPASS so I removed xfail but it also makes pr91446 fail. This is about SLP /* { dg-options "-O2 -march=icelake-server -ftree-slp-vectorize -mtune-ctrl=^sse_typeless_stores" } */ typedef struct { unsigned long long width, height; long long x, y; } info; extern void bar (info *); void foo (unsigned long long width, unsigned long long height, long long x, long long y) { info t; t.width = width; t.height = height; t.x = x; t.y = y; bar (&t); } /* { dg-final { scan-assembler-times "vmovdqa\[^\n\r\]*xmm\[0-9\]" 2 } } */ With fixed cost the construction cost is now too large so vectorization does not happen. This is the hack increasing cost to account integer->sse move which I think we can handle incrementally. gcc/ChangeLog: * config/i386/i386.cc (ix86_widen_mult_cost): Use sse_op to cost SSE integer addition. (ix86_multiplication_cost): Use COSTS_N_INSNS (...)/2 to cost sse loads. (ix86_shift_rotate_cost): Likewise. (ix86_vector_costs::add_stmt_cost): Likewise. gcc/testsuite/ChangeLog: * gcc.target/i386/pr91446.c: xfail. * gcc.target/i386/pr99881.c: remove xfail.
Diffstat (limited to 'libstdc++-v3/doc/doxygen/stdheader.cc')
0 files changed, 0 insertions, 0 deletions