Tune memcpy and memset for Zen cores.
authorMartin Liska <mliska@suse.cz>
Mon, 1 Jun 2020 11:21:40 +0000 (13:21 +0200)
committerMartin Liska <mliska@suse.cz>
Thu, 30 Jul 2020 08:31:36 +0000 (10:31 +0200)
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.

gcc/config/i386/x86-tune-costs.h

index 1169178433f977cd7a4d1c814e2fc725a3041384..3207404e51480a27ffe9ddb04ea72d2d962c37b9 100644 (file)
@@ -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},