diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2025-04-22 23:47:14 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@ucw.cz> | 2025-04-22 23:48:25 +0200 |
commit | 0650ea627399a0ef23db434d4fce6b52b9faf557 (patch) | |
tree | 352cd3dc114ef7ee067429e3c37d74e3c858697f /libgo/go/net/ip.go | |
parent | 4b62cf555b5446cb02fc471519cf1afa09e1a108 (diff) | |
download | gcc-master.zip gcc-master.tar.gz gcc-master.tar.bz2 |
this patch adds special cases for vectorizer costs in COND_EXPR, MIN_EXPR,
MAX_EXPR, ABS_EXPR and ABSU_EXPR. We previously costed ABS_EXPR and ABSU_EXPR
but it was only correct for FP variant (wehre it corresponds to andss clearing
sign bit). Integer abs/absu is open coded as conditinal move for SSE2 and
SSE3 instroduced an instruction.
MIN_EXPR/MAX_EXPR compiles to minss/maxss for FP and accroding to Agner Fog
tables they costs same as sse_op on all targets. Integer translated to single
instruction since SSE3.
COND_EXPR translated to open-coded conditional move for SSE2, SSE4.1 simplified
the sequence and AVX512 introduced masked registers.
gcc/ChangeLog:
* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost): Add special cases
for COND_EXPR; make MIN_EXPR, MAX_EXPR, ABS_EXPR and ABSU_EXPR more realistic.
gcc/testsuite/ChangeLog:
* gcc.target/i386/pr89618-2.c: XFAIL.
Diffstat (limited to 'libgo/go/net/ip.go')
0 files changed, 0 insertions, 0 deletions