aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/net/hook_windows.go
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2025-04-22 23:47:14 +0200
committerJan Hubicka <hubicka@ucw.cz>2025-04-22 23:48:25 +0200
commit0650ea627399a0ef23db434d4fce6b52b9faf557 (patch)
tree352cd3dc114ef7ee067429e3c37d74e3c858697f /libgo/go/net/hook_windows.go
parent4b62cf555b5446cb02fc471519cf1afa09e1a108 (diff)
downloadgcc-master.zip
gcc-master.tar.gz
gcc-master.tar.bz2
Fix vectorizer costs of COND_EXPR, MIN_EXPR, MAX_EXPR, ABS_EXPR, ABSU_EXPRHEADtrunkmaster
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/hook_windows.go')
0 files changed, 0 insertions, 0 deletions