From: Martin Liska Date: Mon, 1 Jun 2020 11:21:40 +0000 (+0200) Subject: Tune memcpy and memset for Zen cores. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dc65aba7a4725d1b464c8c64a5f739ee910e8943;p=gcc.git Tune memcpy and memset for Zen cores. Based on the collected numbers in PR95435, I suggest the following tuning changes: gcc/ChangeLog: PR target/95435 * config/i386/x86-tune-costs.h: Use libcall for large sizes for -m32. Start using libcall from 128+ bytes. --- diff --git a/gcc/config/i386/x86-tune-costs.h b/gcc/config/i386/x86-tune-costs.h index 1169178433f..3207404e514 100644 --- a/gcc/config/i386/x86-tune-costs.h +++ b/gcc/config/i386/x86-tune-costs.h @@ -1314,20 +1314,20 @@ static stringop_algs znver1_memcpy[2] = { /* 32-bit tuning. */ {libcall, {{6, loop, false}, {14, unrolled_loop, false}, - {-1, rep_prefix_4_byte, false}}}, + {-1, libcall, false}}}, /* 64-bit tuning. */ {libcall, {{16, loop, false}, - {8192, rep_prefix_8_byte, false}, + {128, rep_prefix_8_byte, false}, {-1, libcall, false}}}}; static stringop_algs znver1_memset[2] = { /* 32-bit tuning. */ {libcall, {{8, loop, false}, {24, unrolled_loop, false}, - {2048, rep_prefix_4_byte, false}, + {128, rep_prefix_4_byte, false}, {-1, libcall, false}}}, /* 64-bit tuning. */ {libcall, {{48, unrolled_loop, false}, - {8192, rep_prefix_8_byte, false}, + {128, rep_prefix_8_byte, false}, {-1, libcall, false}}}}; struct processor_costs znver1_cost = { { @@ -1460,7 +1460,7 @@ static stringop_algs znver2_memcpy[2] = { /* 32-bit tuning. */ {libcall, {{6, loop, false}, {14, unrolled_loop, false}, - {-1, rep_prefix_4_byte, false}}}, + {-1, libcall, false}}}, /* 64-bit tuning. */ {libcall, {{16, loop, false}, {64, rep_prefix_4_byte, false}, @@ -1469,7 +1469,7 @@ static stringop_algs znver2_memset[2] = { /* 32-bit tuning. */ {libcall, {{8, loop, false}, {24, unrolled_loop, false}, - {2048, rep_prefix_4_byte, false} + {128, rep_prefix_4_byte, false}, {-1, libcall, false}}}, /* 64-bit tuning. */ {libcall, {{24, rep_prefix_4_byte, false},