From patchwork Thu Feb 15 00:04:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 25938 Received: (qmail 24595 invoked by alias); 15 Feb 2018 00:04:55 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 24584 invoked by uid 89); 15 Feb 2018 00:04:54 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS, TIME_LIMIT_EXCEEDED autolearn=unavailable version=3.3.2 spammy=116498, 27.5, 1600, 6875 X-HELO: NAM01-BY2-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Message-ID: <1518653077.14236.76.camel@cavium.com> Subject: [Patch][Aarch64] memcpy IFUNC for Cavium ThunderX2 From: Steve Ellcey Reply-To: sellcey@cavium.com To: libc-alpha Date: Wed, 14 Feb 2018 16:04:37 -0800 Mime-Version: 1.0 X-ClientProxiedBy: MWHPR0201CA0010.namprd02.prod.outlook.com (10.167.160.151) To CY1PR0701MB2042.namprd07.prod.outlook.com (10.163.142.141) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c16b613b-dd38-4b0d-cc3b-08d57407b613 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(49563074)(7193020); SRVR:CY1PR0701MB2042; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2042; 3:gW6tFRJvBzWWkCGfhJE7ME5E16C+270boFh9n/0fFLKAZr9OMbKWZlvzVuYyZA1cXtNgk+sk3KOmGvba5Br2Kmr3Argfche0lxM0vCw7cA29HOP02DW1GAZLVJliyGn9uCkEAEdIuFR2q0VkN5tbCU4Iih6OMX1bQmSfR7dmLwB+2SFI7s/ZOEcYmpMh4XvsRlT7W+HAMrfWDt97z8NTbN2WFg2CCiuGjha2iJ1SV5eCfv3z6nZCiaj27Gi2cWwU; 25:edLn6VQ6JMceqGL99Meqt07B9TOr/02ZZ8sr0GSyeTb6kO22ZYd3w/9gj03GmMxn+WUgZSzDHrvBtVbeg/fOfvgo6LdXlXEO4MFTkF6s4FF+83bXhnI8/WSlS6/i6S+1Zya82UfLupDPjd5YEwIyObxjvWu8759VKkAh+D14DMPr5T/+PmpL+brvsm4AYbYxhXkfI5HvkE8DG/Yr7vGAVQ3z49lXJOcUvMqG5Jv5fBrQ0KISOD4s+emOTQSrplfaiJ/xkfTA6/6xeYIxGAi35Is6f/1A70oRRw7vjUohHAwWLF+r1F/c79hgcg5uGeqn8NR7ArkB3bKq0aslsvA/vtwQCg9Ieebr4PGZhbWVhzs=; 31:WQjoY962mk4y1TatZWFZElCpTA3yz8onYrg6veK6ucirMmFVWSv0G2atRPbjIbCGDQ+Yw3Ivi8phZOhIkB/nuu6RQCqxQ0L1n/r0u8nRfjZX7jiknVHJIv7PJiTE5331ZpSyMNjrO1m5SYDhKFRMCkJnUNs3/1QiCDg1+ll4a/dw7Nc9pDT4Wvp47JUrVgiaQGu2Ui6D3FYM0/Ke6D/CsG2g5he+FCGgg0KqXWlks3U= X-MS-TrafficTypeDiagnostic: CY1PR0701MB2042: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2042; 20:PmutdOZGhvTQ/BniCVInO7WNegnbOXlE2QNp/+LBSkJFwHus6lXbeh1Id7FbDrt6EMfhrd9gHaSYwPiyblagmFPgqcHPzC2q4ZDgoyZa5oIym5+6rqN3e9LEsQKURwaZ7jILNxd69ufAXcLaVYIxqrMzuXJdgUkAXtMtmwXkOXMBcNTpJJiOIavKB8hhlmWb3ZESDY+/kuOC5KIXXkzAIAi1cuvlI/N71rHmxVFQs8VZcuy/UCI1Hzri42YI2raXqgS1SCvHdw1nA9vNkHfEHTEnFSShyzO3756y622RmqYSoeQLdH3fM7Bh5B1avAvhAJAAOkHZa1v24R14H9GdpgTku2I++iojM7wQHLajlGyrDKD5lGX2t2JTnUINL0k+ZCh1vqagvli+IgrO61Vzmixapzc81TqkCL4mdEptTwg9f/MnBxwtwSUTF1vK5tRUttQg6o5U6MGXBT+GwnRTfLRD3i14lxqRIR4cvdr3ae5VuJ1bxTi37kE0usfIPvrl; 4:HlGrBX9OPxQl0a5ePsJWtV97L2SnROONYajW6peWBfwZC2KI3/tDplGiwtHCejlTzMXuLoFdd3u0rzfgDLMe86L/qiRzMV1CjPQ4wBp8HM3r62WDOKx3eKwJOP7HvLkKBK2ltJM592ED7u/AZoicASMqsoB26Ctyc92jsJUGH5Lv+X2irnfReeukdlkyHs9J9t4e8yRLfy9gU7lYFaa/SfRf01jYPpVNp0zt1c9t3asVO8Fg/uq1uwuXzXYKdLrClSCUj/aB5yPNagVuTwY83w== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(102415395)(6040501)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(3231101)(2400082)(944501161)(10201501046)(6041288)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:CY1PR0701MB2042; BCL:0; PCL:0; RULEID:; SRVR:CY1PR0701MB2042; X-Forefront-PRVS: 058441C12A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(39380400002)(376002)(39860400002)(189003)(199004)(377424004)(5890100001)(6486002)(53936002)(4610100001)(81156014)(7736002)(105586002)(1857600001)(16526019)(4810100001)(43066004)(68736007)(186003)(6512007)(50226002)(478600001)(8936002)(72206003)(25786009)(84326002)(6916009)(305945005)(6666003)(8676002)(103116003)(81166006)(5660300001)(3846002)(106356001)(2476003)(6116002)(66066001)(69596002)(53416004)(36756003)(386003)(6506007)(52116002)(2906002)(3450700001)(16586007)(97736004)(26005)(33964004)(21480400003)(316002)(568964002)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB2042; H:sellcey-dt.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB2042; 23:KyGpMudHrB2Bn6iqKlHNMnGRWDB8LyD48MO9B4q?= =?us-ascii?Q?09nPY713RnyJsI9uSCvM5I0j1TCBO0qM0AC/QOq3j5Nb3UqvNWvlGK9wsEu1?= =?us-ascii?Q?1x26cGnD4/ofjbpDqV/FlIQDRaPLNI8t/tXgnDFW8fnWtC4DdMrqPwyv3P0/?= =?us-ascii?Q?k6f5VoesyopAczUJmvmWQoWw+RVH0XWJh8YGs7Uisizir9IC9MpY8ln865k2?= =?us-ascii?Q?Y1mE+EtzCPAZOjjWC8+EZNHIcYh+qF1X4LSmNCyH5G8RDIZnyghfy0VRd9Pw?= =?us-ascii?Q?guQjU6dn8ikJx7TjCYLxPfsj38BRUevRBXZjU5NAfRO3d0cN/dCyF3sr4Izz?= =?us-ascii?Q?1eukVKhERnxwK18jv3OzsYKbf29zIfqN4bjk0erdmV0ZNgTn5d4HmUCvuB4K?= =?us-ascii?Q?9IWP9fRrM/lTS4maDLf9lXJUS2GPQuEuXAMo07qeSVyXW+6dRXWwXOTLZMwM?= =?us-ascii?Q?2Y4/YYgG13H55rFkxIkzgsezDXDvAec96fXy4Wk9vsATfTG0XnhJxK1rhrwr?= =?us-ascii?Q?Vi8Z4sJ6b+pOdyJdviE3iB3Ar7+T1JGeoFX3ctswC5S1U6g+bPC0GBSKnP4F?= =?us-ascii?Q?fDFEtvEKjN3UWCWxvrTDxVe59eK0MF5iG+7On1EEegz4NqCqLgea/N2z8lB4?= =?us-ascii?Q?ukNe4v9501+pOe8YWFUI/tSJNcEiT1f6RcS7+UDYI63q530Ffhu14+1jrtF6?= =?us-ascii?Q?5bO/QCqSXBH6RpzgIKx6yyBI5Zf5FBLlIqJcrSEQqyFlIvVlccJsg6MZpSt2?= =?us-ascii?Q?+gZ+FbOZS4YBC//+QvymZauqu7x9i1W+V+6HFjVSpUzB2Jylc7YH12eLhHjm?= =?us-ascii?Q?7myXVnT9wyzyzWl3acuIou9nJdfL4r0KP9XW9gMmXiPc3BQTWmF+8JKX9mOw?= =?us-ascii?Q?VOJZegdMvQNam9/Jjmgezz2JZINQgt4Kib3+5ZeIaApVdL4e4vwRgW9fJp1H?= =?us-ascii?Q?RteowXMBkmpyiwoN3kX6YJluIyiZGJRhkaY3RIEth2gIntil4FGMQt7itb0n?= =?us-ascii?Q?pLuoit4KYCGcfP6Hji8e0Yjd+hAZjGILxgCPUl9vz9lVhwgLfV+jIUoduu3q?= =?us-ascii?Q?CQgt9hs6Ff8FvCjTxOwg1EhpKXxUqb4Sxq44azH5D6/aOn54ZCYdaFVcopiU?= =?us-ascii?Q?GC9tx/ZQ+GoFVfKuhHpCUwYF6N7vNQoGQtkdQg0dFMdBar+xSD3JI5r7wGRn?= =?us-ascii?Q?7kTkOojzWbeZSxah0DHovaE+co40yHBIbWTLvoJBxztTNq0WA2J+ltIgEgHN?= =?us-ascii?Q?A9fNdSTSFXW6sJru+mi6vcQQAw3nH45XLxR+WRKQi/nQb0kzf094HnuJv+E8?= =?us-ascii?Q?g0VJLrZDF1lYKy65Ms4GSlaE=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB2042; 6:mkE+tzjBAK3F935nsG8sGvhQY1Lrk5AcjblLYqqnJpCUBhnbD6tj9SstIMGm52erD0cURGrUXUJvqtoSVxqz20Y8AaiuF4ONCdD2o3qhTcGUPb3kIoChjbxCRLIuPZsu20KsPkTOCE28FIq8QZ5TIlgXA4gMOoFN2lkAw7wLBFTV6LF1CTkMLpqw9tKgBbKQbxPAINUjFG264XW7IMyTl2gmvXATTpF6Gfetw2mrSgCwZWZakHRh9fzvw4VW5aQefGJUPRWu6d2SyG9G8Wl8/0E7Y86XMC1mt+gqzVnmhQJY66+pCEkFGCV54A8HcAoZhGJT1Nd/5nC2G8/p0HrV7gXmbP8MeMWUW8K/vdyopLg=; 5:e+n9eosBtxzAYJzwiobolxLoOtQKomrjbEY6zDI5B75li5YOXgwRwRXb05rjSkh9PNnIlXabBHP2uItcQtFWD/rzdX81jcoNNA0qRsu4AJ0OruNR7NqaxCAn670ix4G0/7jjyh+go3ibL3R/V4WoCMmj45/7JgLhVMOQHGxDKPk=; 24:hSWCFeloTGgtAQqSyp13PkkwgTEZnRQv/MeMNOO3hBOATdpgtpwVujeXDLN6qwmjquhWMnKgHlaCCjCyKNecbjVSm9yjyS5JGPBut9C3XD4=; 7:ZTBeuLlz55Ca/hlE7Mwm7bdbDckvVnv7QrPRRERFyJWz04ydoTY8D55JTFWbKlhmmJGI6G61Tq6Ote81f5fljPKs1AvkTBC2IUfgU+jWrUVH4PHRaXUsdaUcqxCjW9Rmg+5ZG8LmfWDClHOnZtoiTZRFx82cHXrrzXJqws1wBL7J9wLJATT0Q96QYVmVuwEJt2FaZPnfECSJmtMgqeVJHfUHg+hjXjCxfdyJtmz4KjneSsOEz0LbQ48vAJLbod0l SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2018 00:04:40.9418 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c16b613b-dd38-4b0d-cc3b-08d57407b613 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB2042 This patch adds a new memcpy ifunc for Cavium ThunderX2.  The difference between this and the Thunderx version is in the prefetching.  ThunderX2 has different cache characteristics and so uses a different prefetching strategy.  Note that I prefetch past the end of the buffer being copied but my understanding is that that is legal and should never generate any errors.  I tried adding code to not prefetch past the end of the source but those changes slowed down memcpy so I did not include them. I did not copy memcpy_thunderx.S to memcpy_thunderx2.S but just use memcpy_thunderx2.S to set some macros and then include memcpy_thunderx.S. This is to reduce duplicate code. I have attached the memcpy benchmark output files from a ThunderX2 run, the main differences are in bench-memcpy-large.out. Tested with no regressions, OK to checkin? Steve Ellcey sellcey@cavium.com 2018-02-14  Steve Ellcey   * sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add memcpy_thunderx2. * sysdeps/aarch64/multiarch/ifunc-impl-list.c (MAX_IFUNC): Increment to 4. (__libc_ifunc_impl_list): Add __memcpy_thunderx2. * sysdeps/aarch64/multiarch/memcpy.c (libc_ifunc): Add IS_THUNDERX2 and IS_THUNDERX2PA checks. * sysdeps/aarch64/multiarch/memcpy_thunderx.S (USE_THUNDERX2): Use macro to set name appropriately. (memcpy): Use USE_THUNDERX2 macro to modify prefetches. * sysdeps/aarch64/multiarch/memcpy_thunderx2.S: New file. * sysdeps/unix/sysv/linux/aarch64/cpu-features.h (IS_THUNDERX2PA): New macro. (IS_THUNDERX2): New macro. { "timing_type": "clock_gettime", "functions": { "memcpy": { "bench-variant": "walk", "ifuncs": ["__memcpy_thunderx", "__memcpy_thunderx2", "__memcpy_falkor", "__memcpy_generic"], "results": [ { "length": 128, "timings": [21.4942, 12.1081, 10.3745, 11.6527] }, { "length": 144, "timings": [11.9032, 11.8052, 11.9287, 11.6242] }, { "length": 129, "timings": [16.355, 16.3208, 16.2314, 16.2463] }, { "length": 143, "timings": [18.623, 18.5488, 18.8457, 18.4789] }, { "length": 130, "timings": [15.6339, 15.6916, 15.494, 15.6021] }, { "length": 142, "timings": [17.5375, 17.526, 17.7659, 17.4535] }, { "length": 131, "timings": [16.7222, 16.6609, 16.5655, 16.6152] }, { "length": 141, "timings": [18.3201, 18.3597, 18.4109, 18.2882] }, { "length": 132, "timings": [14.3109, 14.3064, 14.1868, 14.172] }, { "length": 140, "timings": [15.5832, 15.5329, 15.6176, 15.4536] }, { "length": 133, "timings": [17.0048, 17.0566, 16.89, 16.9499] }, { "length": 139, "timings": [17.9963, 17.9387, 18.1697, 17.8709] }, { "length": 134, "timings": [16.3178, 16.2699, 16.148, 16.2449] }, { "length": 138, "timings": [16.8907, 16.9435, 16.9594, 16.8701] }, { "length": 135, "timings": [17.2914, 17.2757, 17.3065, 17.2335] }, { "length": 137, "timings": [17.7278, 17.6447, 17.7162, 17.5823] }, { "length": 256, "timings": [25.2448, 25.3023, 26.0872, 29.9415] }, { "length": 272, "timings": [22.6928, 22.5821, 21.5354, 29.5536] }, { "length": 257, "timings": [26.1641, 26.1446, 25.4013, 30.7717] }, { "length": 271, "timings": [28.4372, 28.5283, 27.8175, 28.3311] }, { "length": 258, "timings": [25.6145, 25.5047, 24.791, 30.5721] }, { "length": 270, "timings": [27.4302, 27.5553, 26.9052, 27.3955] }, { "length": 259, "timings": [26.4514, 26.3049, 25.7316, 26.3235] }, { "length": 269, "timings": [27.984, 27.9519, 27.6123, 27.871] }, { "length": 260, "timings": [24.3513, 24.4159, 23.6787, 30.0601] }, { "length": 268, "timings": [25.7966, 25.6928, 25.1203, 25.7298] }, { "length": 261, "timings": [26.6435, 26.6492, 26.2303, 26.5775] }, { "length": 267, "timings": [27.6926, 27.8337, 27.2131, 27.6297] }, { "length": 262, "timings": [26.0473, 25.9666, 25.3517, 25.957] }, { "length": 266, "timings": [27.6607, 26.6481, 26.215, 26.6137] }, { "length": 263, "timings": [26.8893, 27.0195, 26.3998, 26.8287] }, { "length": 265, "timings": [27.8088, 27.6209, 26.8362, 27.261] }, { "length": 512, "timings": [52.8482, 53.1578, 53.0447, 53.2207] }, { "length": 528, "timings": [43.5152, 43.3533, 41.8301, 43.5236] }, { "length": 513, "timings": [47.5259, 47.3113, 45.3574, 47.3936] }, { "length": 527, "timings": [49.3317, 49.3735, 49.0593, 49.9351] }, { "length": 514, "timings": [47.0049, 46.9728, 45.2575, 46.8779] }, { "length": 526, "timings": [48.9785, 49.5162, 47.3838, 48.909] }, { "length": 515, "timings": [48.6102, 48.2008, 45.9038, 47.9531] }, { "length": 525, "timings": [49.5628, 50.0973, 48.042, 49.4927] }, { "length": 516, "timings": [46.6467, 46.5889, 44.8825, 46.4017] }, { "length": 524, "timings": [47.5298, 47.697, 45.8342, 47.4631] }, { "length": 517, "timings": [48.472, 48.5772, 46.5999, 48.3913] }, { "length": 523, "timings": [49.2524, 49.2238, 47.6133, 49.2369] }, { "length": 518, "timings": [47.7013, 47.6045, 45.9706, 47.4991] }, { "length": 522, "timings": [48.3276, 48.4883, 46.2532, 48.1895] }, { "length": 519, "timings": [48.8275, 48.565, 46.6277, 48.5724] }, { "length": 521, "timings": [48.9435, 48.8697, 47.1255, 48.7623] }, { "length": 1024, "timings": [93.0709, 93.0519, 95.9798, 93.0836] }, { "length": 1040, "timings": [85.256, 85.7013, 83.3721, 85.2527] }, { "length": 1025, "timings": [89.0724, 89.3392, 87.0511, 88.8497] }, { "length": 1039, "timings": [91.1254, 90.7922, 87.7327, 91.2008] }, { "length": 1026, "timings": [88.7619, 88.5973, 86.6483, 88.9821] }, { "length": 1038, "timings": [90.94, 90.5825, 88.0679, 90.5443] }, { "length": 1027, "timings": [90.2511, 89.9322, 88.5148, 89.9398] }, { "length": 1037, "timings": [91.203, 91.5318, 87.8592, 90.9161] }, { "length": 1028, "timings": [88.8012, 88.3048, 86.3613, 88.1933] }, { "length": 1036, "timings": [89.9387, 89.3009, 86.5252, 89.5797] }, { "length": 1029, "timings": [90.5471, 90.3682, 88.9411, 91.6433] }, { "length": 1035, "timings": [91.0903, 90.825, 88.3019, 90.8132] }, { "length": 1030, "timings": [90.3108, 90.5195, 88.7057, 91.0861] }, { "length": 1034, "timings": [89.914, 90.573, 87.6975, 90.1682] }, { "length": 1031, "timings": [92.3159, 91.4741, 89.0753, 91.5451] }, { "length": 1033, "timings": [91.4879, 91.1731, 88.6778, 91.2529] }, { "length": 2048, "timings": [175.704, 175.238, 180.446, 175.298] }, { "length": 2064, "timings": [163.105, 163.092, 165.398, 163.142] }, { "length": 2049, "timings": [168.549, 168.927, 169.223, 168.587] }, { "length": 2063, "timings": [169.899, 170.562, 168.534, 169.394] }, { "length": 2050, "timings": [168.125, 168.689, 167.772, 167.363] }, { "length": 2062, "timings": [170.035, 169.149, 168.54, 169.2] }, { "length": 2051, "timings": [170.08, 168.958, 168.504, 168.607] }, { "length": 2061, "timings": [171.254, 170.432, 169.331, 170.98] }, { "length": 2052, "timings": [167.397, 167.033, 167.543, 167.674] }, { "length": 2060, "timings": [167.834, 167.542, 168.408, 167.44] }, { "length": 2053, "timings": [169.932, 169.569, 169.708, 169.122] }, { "length": 2059, "timings": [169.559, 169.598, 169.227, 169.253] }, { "length": 2054, "timings": [169.571, 169.659, 168.285, 168.492] }, { "length": 2058, "timings": [169.654, 170.554, 168.845, 169.32] }, { "length": 2055, "timings": [170.882, 169.756, 169.014, 169.537] }, { "length": 2057, "timings": [170.335, 169.665, 168.54, 170.333] }, { "length": 4096, "timings": [336.924, 336.231, 344.708, 338.517] }, { "length": 4112, "timings": [324.752, 324.787, 327.219, 325.939] }, { "length": 4097, "timings": [330.497, 330.542, 331.768, 329.59] }, { "length": 4111, "timings": [331.838, 331.713, 333.003, 331.598] }, { "length": 4098, "timings": [329.67, 329.169, 331.191, 329.053] }, { "length": 4110, "timings": [331.715, 332.634, 331.448, 331.237] }, { "length": 4099, "timings": [331.002, 332.094, 331.179, 330.109] }, { "length": 4109, "timings": [331.369, 332.883, 331.399, 331.102] }, { "length": 4100, "timings": [330.564, 328.229, 330.086, 328.809] }, { "length": 4108, "timings": [332.456, 331.023, 331.429, 331.226] }, { "length": 4101, "timings": [332.631, 331.504, 331.001, 332.333] }, { "length": 4107, "timings": [332.096, 332.101, 331.826, 333.611] }, { "length": 4102, "timings": [330.443, 329.886, 330.771, 331.822] }, { "length": 4106, "timings": [331.87, 331.948, 333.989, 331.384] }, { "length": 4103, "timings": [331.198, 331.799, 332.962, 330.994] }, { "length": 4105, "timings": [332.266, 331.839, 332.695, 332.206] }, { "length": 8192, "timings": [671.892, 674.868, 690.552, 671.719] }, { "length": 8208, "timings": [661.086, 664.091, 665.974, 661.3] }, { "length": 8193, "timings": [667.8, 666.529, 669.203, 665.603] }, { "length": 8207, "timings": [672.378, 670.068, 668.224, 669.602] }, { "length": 8194, "timings": [667.283, 664.222, 669.186, 666.377] }, { "length": 8206, "timings": [669.514, 669.644, 669.534, 670.466] }, { "length": 8195, "timings": [665.756, 665.9, 670.204, 666.29] }, { "length": 8205, "timings": [669.026, 669.292, 670.953, 669.339] }, { "length": 8196, "timings": [664.39, 663.958, 672.608, 663.733] }, { "length": 8204, "timings": [666.763, 669.639, 668.723, 666.545] }, { "length": 8197, "timings": [666.813, 670.607, 669.621, 667.644] }, { "length": 8203, "timings": [671.102, 673.248, 668.693, 671.452] }, { "length": 8198, "timings": [669.706, 667.143, 667.829, 666.135] }, { "length": 8202, "timings": [672.832, 669.015, 668.365, 671.224] }, { "length": 8199, "timings": [669.127, 667.232, 667.656, 670.565] }, { "length": 8201, "timings": [667.918, 668.358, 668.792, 672.274] }, { "length": 16384, "timings": [1317.6, 1319.15, 1334.13, 1320.33] }, { "length": 16400, "timings": [1309.29, 1307.62, 1321.99, 1308.18] }, { "length": 16385, "timings": [1308.01, 1309.96, 1316.65, 1310.34] }, { "length": 16399, "timings": [1312.66, 1319.89, 1312.74, 1313.2] }, { "length": 16386, "timings": [1310.81, 1314.21, 1309.7, 1310.42] }, { "length": 16398, "timings": [1310.53, 1318.76, 1311.26, 1310.25] }, { "length": 16387, "timings": [1317.29, 1311.97, 1311.02, 1311.84] }, { "length": 16397, "timings": [1319.88, 1313.51, 1313.09, 1312.83] }, { "length": 16388, "timings": [1316.06, 1309.7, 1310.61, 1315.79] }, { "length": 16396, "timings": [1312.42, 1310.8, 1311.89, 1317.05] }, { "length": 16389, "timings": [1312.76, 1309.75, 1312.04, 1318.95] }, { "length": 16395, "timings": [1313.34, 1311.75, 1312.88, 1313.19] }, { "length": 16390, "timings": [1308.59, 1310.74, 1317.65, 1311.33] }, { "length": 16394, "timings": [1313.51, 1311.21, 1317.35, 1312.71] }, { "length": 16391, "timings": [1311.48, 1312.11, 1318.08, 1309.44] }, { "length": 16393, "timings": [1310.93, 1319.55, 1310.63, 1312.12] }, { "length": 32768, "timings": [2595.9, 2590.33, 2631.51, 2618.32] }, { "length": 32784, "timings": [2600.46, 2586.2, 2614.5, 2608] }, { "length": 32769, "timings": [2609.86, 2562.88, 2613.12, 2608.49] }, { "length": 32783, "timings": [2613.98, 2570.92, 2616.49, 2608.56] }, { "length": 32770, "timings": [2609.15, 2567.9, 2613.76, 2605.96] }, { "length": 32782, "timings": [2610.04, 2573.38, 2616.85, 2625.11] }, { "length": 32771, "timings": [2605.42, 2569.22, 2612.92, 2623.97] }, { "length": 32781, "timings": [2600.68, 2574.84, 2611.34, 2620.07] }, { "length": 32772, "timings": [2602.07, 2572.18, 2624.23, 2611.9] }, { "length": 32780, "timings": [2604.5, 2574.5, 2625.3, 2606.05] }, { "length": 32773, "timings": [2603.11, 2573.3, 2620.02, 2609.19] }, { "length": 32779, "timings": [2601.56, 2569.64, 2628.39, 2615.26] }, { "length": 32774, "timings": [2605.01, 2584.86, 2613.18, 2612.1] }, { "length": 32778, "timings": [2603.56, 2584.18, 2613.99, 2610.46] }, { "length": 32775, "timings": [2602.43, 2580.67, 2614.89, 2612.38] }, { "length": 32777, "timings": [2618.48, 2616.33, 2632.45, 2621.59] }, { "length": 65536, "timings": [5234.94, 5145.52, 5244.1, 5225.91] }, { "length": 65552, "timings": [5208.3, 5140.68, 5227.81, 5212.91] }, { "length": 65537, "timings": [5202.93, 5123.47, 5219.33, 5221.05] }, { "length": 65551, "timings": [5191.36, 5135.38, 5213.92, 5243.45] }, { "length": 65538, "timings": [5180.56, 5133.16, 5214.6, 5229.25] }, { "length": 65550, "timings": [5184.6, 5131.44, 5232.76, 5203.49] }, { "length": 65539, "timings": [5174.45, 5123.6, 5234.01, 5207.62] }, { "length": 65549, "timings": [5179.56, 5129.87, 5232.09, 5213.52] }, { "length": 65540, "timings": [5175.95, 5126.31, 5251.79, 5228.54] }, { "length": 65548, "timings": [5206.04, 5180.98, 5230.14, 5219.02] }, { "length": 65541, "timings": [5207.72, 5173.66, 5226.82, 5215.72] }, { "length": 65547, "timings": [5191.6, 5186.73, 5228.78, 5225.24] }, { "length": 65542, "timings": [5189.36, 5171.51, 5236.01, 5219.3] }, { "length": 65546, "timings": [5213.25, 5135.73, 5225.89, 5222.1] }, { "length": 65543, "timings": [5226.38, 5163.58, 5216.51, 5211.48] }, { "length": 65545, "timings": [5221.43, 5138.37, 5219.37, 5255.64] }, { "length": 131072, "timings": [10389.3, 10293.1, 10472.7, 10502.4] }, { "length": 131088, "timings": [10401.3, 10288, 10449, 10453.6] }, { "length": 131073, "timings": [10350.1, 10269.7, 10421.7, 10433.2] }, { "length": 131087, "timings": [10351.2, 10260.1, 10466.6, 10400.5] }, { "length": 131074, "timings": [10339.2, 10255.1, 10467.2, 10385.2] }, { "length": 131086, "timings": [10344.5, 10249.5, 10482.8, 10428.7] }, { "length": 131075, "timings": [10357.3, 10257.2, 10469.7, 10409.2] }, { "length": 131085, "timings": [10347.7, 10285.1, 10412.9, 10419.6] }, { "length": 131076, "timings": [10341.6, 10279.2, 10407.3, 10375.9] }, { "length": 131084, "timings": [10326.8, 10284.5, 10379.3, 10374.5] }, { "length": 131077, "timings": [10312.1, 10269, 10386.1, 10385.8] }, { "length": 131083, "timings": [10362.3, 10225.5, 10399.1, 10375.6] }, { "length": 131078, "timings": [10361.4, 10228.9, 10381.8, 10365.1] }, { "length": 131082, "timings": [10373, 10215.7, 10395.8, 10381] }, { "length": 131079, "timings": [10340.1, 10224.7, 10392.6, 10420.1] }, { "length": 131081, "timings": [10312.7, 10229.3, 10404.7, 10442.3] }, { "length": 262144, "timings": [20670, 20481.2, 20884.1, 20937] }, { "length": 262160, "timings": [20694.1, 20555.6, 20982.5, 20846.1] }, { "length": 262145, "timings": [20697.5, 20538, 20967.1, 20875.2] }, { "length": 262159, "timings": [20709.4, 20563.9, 20986.8, 20823.1] }, { "length": 262146, "timings": [20696.1, 20519.1, 20938.3, 20843.9] }, { "length": 262158, "timings": [20700.4, 20628.4, 20852.1, 20836.8] }, { "length": 262147, "timings": [20705.9, 20623.1, 20885.7, 20837.5] }, { "length": 262157, "timings": [20691.6, 20619.7, 20872, 20834] }, { "length": 262148, "timings": [20676.7, 20613, 20858.1, 20827.3] }, { "length": 262156, "timings": [20804.2, 20524.1, 20879.3, 20850.5] }, { "length": 262149, "timings": [20786.2, 20521.8, 20898.8, 20856.1] }, { "length": 262155, "timings": [20801.4, 20543.4, 20871.4, 20850.6] }, { "length": 262150, "timings": [20793.4, 20584.5, 20861, 20929.3] }, { "length": 262154, "timings": [20748.3, 20541.8, 20850.5, 20895.9] }, { "length": 262151, "timings": [20718.4, 20563.5, 20876.5, 20925.4] }, { "length": 262153, "timings": [20749.6, 20536.6, 20964.1, 20829.3] }, { "length": 524288, "timings": [41411.8, 41106.3, 41863.4, 41785] }, { "length": 524304, "timings": [41455.4, 41150.7, 41787, 41759.3] }, { "length": 524289, "timings": [41455.8, 41100.8, 41889.1, 41719.6] }, { "length": 524303, "timings": [41442.2, 41267.7, 41698.5, 41673.4] }, { "length": 524290, "timings": [41465.1, 41295.5, 41624.5, 41685.5] }, { "length": 524302, "timings": [41412.1, 41303, 41638.7, 41682.6] }, { "length": 524291, "timings": [41356.4, 41247.5, 41680.2, 41613.4] }, { "length": 524301, "timings": [41556.6, 41199.1, 41797.9, 41773.3] }, { "length": 524292, "timings": [41731.6, 41149.2, 41613.4, 41834] }, { "length": 524300, "timings": [41640.6, 41145.2, 41621, 41678.1] }, { "length": 524293, "timings": [41578.8, 41129.2, 41720.9, 41842.1] }, { "length": 524299, "timings": [41435.2, 41053, 41716.6, 41866] }, { "length": 524294, "timings": [41412.4, 41061.1, 41598.4, 41856.3] }, { "length": 524298, "timings": [41424.3, 41094.5, 41782.8, 41753.5] }, { "length": 524295, "timings": [41406.8, 41085.6, 41863, 41678.3] }, { "length": 524297, "timings": [41404.4, 41087.3, 41854.5, 41680.5] }, { "length": 1048576, "timings": [82511.6, 81892.2, 83806.2, 83242.7] }, { "length": 1048592, "timings": [82752.3, 82483.6, 83590.6, 83285.5] }, { "length": 1048577, "timings": [82644.1, 82410.6, 83596.1, 83274.2] }, { "length": 1048591, "timings": [82707.2, 82435.8, 83430.8, 83079.2] }, { "length": 1048578, "timings": [82460.8, 82442.7, 83338.4, 83229.7] }, { "length": 1048590, "timings": [82881.9, 82052, 83312, 83190] }, { "length": 1048579, "timings": [82873.1, 82048.1, 83314.1, 83196.4] }, { "length": 1048589, "timings": [82905.8, 82065.3, 83510.2, 83179.5] }, { "length": 1048580, "timings": [82946.6, 82041.2, 83374.1, 83377.3] }, { "length": 1048588, "timings": [82733.6, 82087.8, 83498.9, 83539.8] }, { "length": 1048581, "timings": [82510.9, 82058.3, 83430.8, 83537.5] }, { "length": 1048587, "timings": [82655, 82172.2, 83457.7, 83553.9] }, { "length": 1048582, "timings": [82693.9, 82085, 83905.9, 83226.6] }, { "length": 1048586, "timings": [82571.2, 82091.4, 83867.7, 83127] }, { "length": 1048583, "timings": [82719.1, 82143.8, 83875.2, 83133.6] }, { "length": 1048585, "timings": [82516.2, 82404.7, 83478.9, 83309.7] }, { "length": 2097152, "timings": [164733, 164589, 166935, 166529] }, { "length": 2097168, "timings": [165315, 164842, 167224, 166447] }, { "length": 2097153, "timings": [165290, 164943, 167233, 166543] }, { "length": 2097167, "timings": [166116, 164585, 167213, 166767] }, { "length": 2097154, "timings": [166496, 164460, 167049, 166635] }, { "length": 2097166, "timings": [166541, 164626, 167328, 166674] }, { "length": 2097155, "timings": [166251, 164565, 167468, 167790] }, { "length": 2097165, "timings": [165837, 164399, 167248, 167805] }, { "length": 2097156, "timings": [165833, 164586, 167251, 167657] }, { "length": 2097164, "timings": [165953, 164762, 167337, 167766] }, { "length": 2097157, "timings": [165761, 164271, 168014, 167129] }, { "length": 2097163, "timings": [165756, 164242, 168203, 166923] }, { "length": 2097158, "timings": [165762, 164262, 167882, 166952] }, { "length": 2097162, "timings": [165806, 165258, 167369, 166881] }, { "length": 2097159, "timings": [165728, 165104, 167373, 166924] }, { "length": 2097161, "timings": [165658, 165127, 167202, 167118] }, { "length": 4194304, "timings": [325306, 325422, 331019, 330932] }, { "length": 4194320, "timings": [329836, 326429, 332112, 331623] }, { "length": 4194305, "timings": [331052, 327420, 332432, 331337] }, { "length": 4194319, "timings": [331086, 327701, 332758, 332044] }, { "length": 4194306, "timings": [331446, 327814, 333324, 333956] }, { "length": 4194318, "timings": [330616, 328046, 333149, 334159] }, { "length": 4194307, "timings": [331978, 330048, 334128, 335087] }, { "length": 4194317, "timings": [331020, 329299, 334711, 335221] }, { "length": 4194308, "timings": [331024, 329204, 335078, 334162] }, { "length": 4194316, "timings": [331349, 328971, 335746, 333316] }, { "length": 4194309, "timings": [331112, 328961, 335749, 333236] }, { "length": 4194315, "timings": [331118, 328870, 336153, 333769] }, { "length": 4194310, "timings": [331128, 330514, 333186, 333561] }, { "length": 4194314, "timings": [330699, 330451, 334237, 333751] }, { "length": 4194311, "timings": [330583, 330584, 333149, 333214] }, { "length": 4194313, "timings": [332382, 328472, 333463, 332856] }, { "length": 8388608, "timings": [641456, 634152, 651086, 654462] }, { "length": 8388624, "timings": [654839, 647849, 659480, 660866] }, { "length": 8388609, "timings": [659152, 651294, 663755, 661841] }, { "length": 8388623, "timings": [659552, 652481, 664962, 665532] }, { "length": 8388610, "timings": [658591, 655029, 665046, 666072] }, { "length": 8388622, "timings": [659788, 654660, 665589, 667326] }, { "length": 8388611, "timings": [659960, 656234, 667766, 668440] }, { "length": 8388621, "timings": [662218, 656202, 670929, 666084] }, { "length": 8388612, "timings": [661049, 656828, 670542, 666266] }, { "length": 8388620, "timings": [662265, 657178, 670942, 665838] }, { "length": 8388613, "timings": [662444, 657960, 670719, 666705] }, { "length": 8388619, "timings": [661585, 661394, 667169, 666752] }, { "length": 8388614, "timings": [661258, 660601, 668496, 666908] }, { "length": 8388618, "timings": [661808, 659921, 668734, 666890] }, { "length": 8388615, "timings": [664495, 657584, 668248, 666445] }, { "length": 8388617, "timings": [664702, 657572, 668319, 666694] }, { "length": 16777216, "timings": [1.27261e+06, 1.26146e+06, 1.29016e+06, 1.29426e+06] }, { "length": 16777232, "timings": [1.30006e+06, 1.28565e+06, 1.31264e+06, 1.31258e+06] }, { "length": 16777217, "timings": [1.31015e+06, 1.30083e+06, 1.32193e+06, 1.32538e+06] }, { "length": 16777231, "timings": [1.31127e+06, 1.30257e+06, 1.32501e+06, 1.32987e+06] }, { "length": 16777218, "timings": [1.3145e+06, 1.30764e+06, 1.3275e+06, 1.33293e+06] }, { "length": 16777230, "timings": [1.31805e+06, 1.30798e+06, 1.32839e+06, 1.33494e+06] }, { "length": 16777219, "timings": [1.31974e+06, 1.31023e+06, 1.33794e+06, 1.32992e+06] }, { "length": 16777229, "timings": [1.32168e+06, 1.31127e+06, 1.33738e+06, 1.3311e+06] }, { "length": 16777220, "timings": [1.32106e+06, 1.31238e+06, 1.34065e+06, 1.33133e+06] }, { "length": 16777228, "timings": [1.3219e+06, 1.31063e+06, 1.3414e+06, 1.33194e+06] }, { "length": 16777221, "timings": [1.32005e+06, 1.3187e+06, 1.3354e+06, 1.33155e+06] }, { "length": 16777227, "timings": [1.32054e+06, 1.32018e+06, 1.3351e+06, 1.32962e+06] }, { "length": 16777222, "timings": [1.32057e+06, 1.3198e+06, 1.33597e+06, 1.331e+06] }, { "length": 16777226, "timings": [1.32308e+06, 1.3205e+06, 1.33287e+06, 1.33312e+06] }, { "length": 16777223, "timings": [1.329e+06, 1.31592e+06, 1.33316e+06, 1.33445e+06] }, { "length": 16777225, "timings": [1.32979e+06, 1.31714e+06, 1.33506e+06, 1.33387e+06] }, { "length": 33554432, "timings": [2.51792e+06, 2.52166e+06, 2.59244e+06, 2.60674e+06] }, { "length": 33554448, "timings": [2.60894e+06, 2.5847e+06, 2.63487e+06, 2.64577e+06] }, { "length": 33554433, "timings": [2.61534e+06, 2.60074e+06, 2.64385e+06, 2.65299e+06] }, { "length": 33554447, "timings": [2.63056e+06, 2.61246e+06, 2.65376e+06, 2.66364e+06] }, { "length": 33554434, "timings": [2.63604e+06, 2.61824e+06, 2.6572e+06, 2.66914e+06] }, { "length": 33554446, "timings": [2.6411e+06, 2.62655e+06, 2.67998e+06, 2.66654e+06] }, { "length": 33554435, "timings": [2.64574e+06, 2.62811e+06, 2.68315e+06, 2.66351e+06] }, { "length": 33554445, "timings": [2.64374e+06, 2.62928e+06, 2.6852e+06, 2.6643e+06] }, { "length": 33554436, "timings": [2.64434e+06, 2.62816e+06, 2.6762e+06, 2.65708e+06] }, { "length": 33554444, "timings": [2.64448e+06, 2.6378e+06, 2.67052e+06, 2.6634e+06] }, { "length": 33554437, "timings": [2.64484e+06, 2.63917e+06, 2.67594e+06, 2.66426e+06] }, { "length": 33554443, "timings": [2.64513e+06, 2.6408e+06, 2.66354e+06, 2.66087e+06] }, { "length": 33554438, "timings": [2.64512e+06, 2.64452e+06, 2.6703e+06, 2.66438e+06] }, { "length": 33554442, "timings": [2.66122e+06, 2.62832e+06, 2.66512e+06, 2.66527e+06] }, { "length": 33554439, "timings": [2.65762e+06, 2.62926e+06, 2.66946e+06, 2.66218e+06] }, { "length": 33554441, "timings": [2.65784e+06, 2.63056e+06, 2.6657e+06, 2.66116e+06] }] } } } { "timing_type": "clock_gettime", "functions": { "memcpy": { "bench-variant": "large", "ifuncs": ["__memcpy_thunderx", "__memcpy_thunderx2", "__memcpy_falkor", "__memcpy_generic"], "results": [ { "length": 65543, "align1": 0, "align2": 0, "timings": [4952.19, 3911.56, 4265.62, 4186.56] }, { "length": 65551, "align1": 0, "align2": 3, "timings": [7200.62, 6689.69, 6710.31, 7721.25] }, { "length": 65567, "align1": 3, "align2": 0, "timings": [7217.19, 6589.38, 6704.69, 7725.94] }, { "length": 65599, "align1": 3, "align2": 5, "timings": [7180, 6666.25, 6716.25, 7710.31] }, { "length": 131079, "align1": 0, "align2": 0, "timings": [9199.69, 8032.19, 8692.81, 8607.81] }, { "length": 131087, "align1": 0, "align2": 3, "timings": [14681.6, 13440.3, 13447.8, 15530.9] }, { "length": 131103, "align1": 3, "align2": 0, "timings": [14448.8, 13276.2, 13458.1, 16159.1] }, { "length": 131135, "align1": 3, "align2": 5, "timings": [15579.1, 13508.1, 13440.3, 17059.1] }, { "length": 262151, "align1": 0, "align2": 0, "timings": [23862.2, 24441.9, 23240.6, 24191.9] }, { "length": 262159, "align1": 0, "align2": 3, "timings": [29275.3, 27609.4, 28409.4, 32469.7] }, { "length": 262175, "align1": 3, "align2": 0, "timings": [29203.1, 27083.4, 28423.1, 32277.8] }, { "length": 262207, "align1": 3, "align2": 5, "timings": [30024.7, 27598.8, 28440.6, 32579.7] }, { "length": 524295, "align1": 0, "align2": 0, "timings": [47389.1, 49070.9, 46514.1, 48664.4] }, { "length": 524303, "align1": 0, "align2": 3, "timings": [58346.2, 55055, 56669.4, 64995] }, { "length": 524319, "align1": 3, "align2": 0, "timings": [58154.7, 54030, 56661.2, 64466.2] }, { "length": 524351, "align1": 3, "align2": 5, "timings": [58316.6, 55081.9, 56688.8, 64808.8] }, { "length": 1048583, "align1": 0, "align2": 0, "timings": [94339.4, 97932.2, 92883.4, 97073.1] }, { "length": 1048591, "align1": 0, "align2": 3, "timings": [116498, 110074, 114012, 129668] }, { "length": 1048607, "align1": 3, "align2": 0, "timings": [116019, 108027, 113263, 129315] }, { "length": 1048639, "align1": 3, "align2": 5, "timings": [116542, 110031, 113199, 130458] }, { "length": 2097159, "align1": 0, "align2": 0, "timings": [187454, 195817, 186657, 194690] }, { "length": 2097167, "align1": 0, "align2": 3, "timings": [232980, 220797, 226448, 259975] }, { "length": 2097183, "align1": 3, "align2": 0, "timings": [232321, 215874, 227196, 257367] }, { "length": 2097215, "align1": 3, "align2": 5, "timings": [233585, 220098, 227131, 259478] }, { "length": 4194311, "align1": 0, "align2": 0, "timings": [375384, 392390, 371983, 390365] }, { "length": 4194319, "align1": 0, "align2": 3, "timings": [466357, 441015, 452582, 519416] }, { "length": 4194335, "align1": 3, "align2": 0, "timings": [465100, 432780, 453555, 514612] }, { "length": 4194367, "align1": 3, "align2": 5, "timings": [465788, 441147, 453362, 519520] }, { "length": 8388615, "align1": 0, "align2": 0, "timings": [749325, 783571, 745284, 780129] }, { "length": 8388623, "align1": 0, "align2": 3, "timings": [932040, 881769, 906085, 1.03847e+06] }, { "length": 8388639, "align1": 3, "align2": 0, "timings": [929061, 864950, 906292, 1.03044e+06] }, { "length": 8388671, "align1": 3, "align2": 5, "timings": [933193, 881767, 906506, 1.03859e+06] }, { "length": 16777223, "align1": 0, "align2": 0, "timings": [1.68678e+06, 1.72441e+06, 1.66096e+06, 1.73277e+06] }, { "length": 16777231, "align1": 0, "align2": 3, "timings": [1.88663e+06, 1.80531e+06, 1.93916e+06, 2.10617e+06] }, { "length": 16777247, "align1": 3, "align2": 0, "timings": [1.87686e+06, 1.77372e+06, 1.93076e+06, 2.08584e+06] }, { "length": 16777279, "align1": 3, "align2": 5, "timings": [1.88337e+06, 1.80137e+06, 1.93296e+06, 2.10337e+06] }, { "length": 33554439, "align1": 0, "align2": 0, "timings": [4.396e+06, 4.5285e+06, 4.68021e+06, 4.77554e+06] }, { "length": 33554447, "align1": 0, "align2": 3, "timings": [4.61064e+06, 4.70503e+06, 5.43449e+06, 5.3109e+06] }, { "length": 33554463, "align1": 3, "align2": 0, "timings": [4.58765e+06, 4.62832e+06, 5.41532e+06, 5.26046e+06] }, { "length": 33554495, "align1": 3, "align2": 5, "timings": [4.59319e+06, 4.67679e+06, 5.41229e+06, 5.28254e+06] }] } } } { "timing_type": "clock_gettime", "functions": { "memcpy": { "bench-variant": "random", "ifuncs": ["__memcpy_thunderx", "__memcpy_thunderx2", "__memcpy_falkor", "__memcpy_generic"], "results": [ { "max-size": 4096, "timings": [21376.6, 21515.2, 20931.9, 21168.9] }, { "max-size": 8192, "timings": [20861.4, 20868.7, 20698.2, 20629.8] }, { "max-size": 16384, "timings": [22469.3, 22571, 21596.5, 22362.8] }, { "max-size": 32768, "timings": [25299.5, 25167.7, 23612.3, 25089.9] }, { "max-size": 65536, "timings": [27192, 27121, 25251.6, 27007.6] }] } } } { "timing_type": "clock_gettime", "functions": { "memcpy": { "bench-variant": "default", "ifuncs": ["builtin_memcpy", "simple_memcpy", "__memcpy_thunderx", "__memcpy_thunderx2", "__memcpy_falkor", "__memcpy_generic"], "results": [ { "length": 1, "align1": 0, "align2": 0, "timings": [128.984, 17.8906, 18.8281, 16.5625, 19.375, 16.25] }, { "length": 1, "align1": 0, "align2": 0, "timings": [18.125, 13.2031, 16.0938, 16.0156, 15.5469, 15.5469] }, { "length": 1, "align1": 0, "align2": 0, "timings": [17.6562, 13.0469, 15.3906, 16.0156, 15.2344, 15.2344] }, { "length": 1, "align1": 0, "align2": 0, "timings": [17.2656, 12.9688, 15.7031, 15.3125, 15.3125, 15.3906] }, { "length": 2, "align1": 0, "align2": 0, "timings": [17.3438, 18.9062, 15.5469, 15.3125, 17.1094, 15.3906] }, { "length": 2, "align1": 1, "align2": 0, "timings": [17.5, 16.7969, 15.625, 14.2969, 16.0156, 15.3125] }, { "length": 2, "align1": 0, "align2": 1, "timings": [17.6562, 16.6406, 15.625, 14.5312, 16.3281, 15] }, { "length": 2, "align1": 1, "align2": 1, "timings": [17.3438, 16.0938, 15.4688, 15.2344, 15.7812, 16.0156] }, { "length": 4, "align1": 0, "align2": 0, "timings": [16.0938, 29.9219, 15.2344, 14.8438, 16.0156, 16.1719] }, { "length": 4, "align1": 2, "align2": 0, "timings": [17.0312, 28.5938, 14.8438, 14.5312, 15.0781, 14.4531] }, { "length": 4, "align1": 0, "align2": 2, "timings": [16.7188, 31.4844, 15.1562, 14.5312, 14.8438, 14.6094] }, { "length": 4, "align1": 2, "align2": 2, "timings": [16.6406, 31.4062, 14.5312, 14.4531, 14.6094, 15] }, { "length": 8, "align1": 0, "align2": 0, "timings": [16.7188, 21.9531, 15.3125, 14.7656, 16.3281, 14.7656] }, { "length": 8, "align1": 3, "align2": 0, "timings": [16.1719, 19.6094, 15.1562, 14.8438, 14.1406, 14.4531] }, { "length": 8, "align1": 0, "align2": 3, "timings": [16.5625, 19.7656, 14.9219, 15.1562, 14.375, 14.6875] }, { "length": 8, "align1": 3, "align2": 3, "timings": [16.4062, 19.8438, 14.7656, 14.7656, 13.5156, 14.2969] }, { "length": 16, "align1": 0, "align2": 0, "timings": [16.4062, 30.8594, 14.9219, 14.2188, 16.1719, 14.2969] }, { "length": 16, "align1": 4, "align2": 0, "timings": [17.0312, 28.2031, 14.6094, 15.2344, 14.375, 14.5312] }, { "length": 16, "align1": 0, "align2": 4, "timings": [16.4062, 27.7344, 14.375, 14.6094, 13.6719, 14.0625] }, { "length": 16, "align1": 4, "align2": 4, "timings": [16.4062, 26.7969, 14.6094, 14.2969, 15.0781, 14.2969] }, { "length": 32, "align1": 0, "align2": 0, "timings": [17.5781, 44.6094, 15.9375, 14.6094, 14.0625, 15.5469] }, { "length": 32, "align1": 5, "align2": 0, "timings": [16.7969, 42.8125, 14.8438, 14.375, 14.2188, 15.0781] }, { "length": 32, "align1": 0, "align2": 5, "timings": [16.3281, 44.8438, 14.6094, 14.2188, 14.0625, 14.4531] }, { "length": 32, "align1": 5, "align2": 5, "timings": [16.7188, 45.2344, 15.625, 15.5469, 14.5312, 14.0625] }, { "length": 64, "align1": 0, "align2": 0, "timings": [17.1875, 76.1719, 15.8594, 15, 16.7188, 14.8438] }, { "length": 64, "align1": 6, "align2": 0, "timings": [17.5, 74.375, 16.3281, 16.4844, 16.0938, 16.4844] }, { "length": 64, "align1": 0, "align2": 6, "timings": [17.1094, 74.8438, 16.7969, 16.25, 14.8438, 15.625] }, { "length": 64, "align1": 6, "align2": 6, "timings": [18.5156, 74.6094, 18.125, 18.3594, 17.4219, 17.7344] }, { "length": 128, "align1": 0, "align2": 0, "timings": [21.4844, 168.516, 21.7188, 18.125, 17.0312, 19.8438] }, { "length": 128, "align1": 7, "align2": 0, "timings": [23.0469, 168.359, 22.4219, 22.7344, 19.375, 21.1719] }, { "length": 128, "align1": 0, "align2": 7, "timings": [22.8125, 168.359, 22.5, 21.7969, 19.1406, 20.9375] }, { "length": 128, "align1": 7, "align2": 7, "timings": [22.9688, 167.812, 23.3594, 23.2031, 23.5938, 22.0312] }, { "length": 256, "align1": 0, "align2": 0, "timings": [24.6094, 276.875, 25.2344, 23.125, 23.9062, 37.2656] }, { "length": 256, "align1": 8, "align2": 0, "timings": [25.7031, 276.484, 25.3906, 24.8438, 24.2969, 37.3438] }, { "length": 256, "align1": 0, "align2": 8, "timings": [25.5469, 278.125, 24.6094, 25, 23.9844, 35.8594] }, { "length": 256, "align1": 8, "align2": 8, "timings": [24.6094, 276.406, 25.9375, 24.0625, 23.5938, 34.5312] }, { "length": 512, "align1": 0, "align2": 0, "timings": [34.7656, 533.359, 35.625, 33.0469, 36.1719, 32.5] }, { "length": 512, "align1": 9, "align2": 0, "timings": [50.7031, 533.438, 50.3125, 49.2969, 48.125, 49.2969] }, { "length": 512, "align1": 0, "align2": 9, "timings": [51.1719, 534.609, 50.7812, 50.4688, 47.3438, 50.3906] }, { "length": 512, "align1": 9, "align2": 9, "timings": [38.9844, 533.125, 39.2969, 38.8281, 39.2188, 37.2656] }, { "length": 1024, "align1": 0, "align2": 0, "timings": [52.5, 1119.14, 55.4688, 52.0312, 61.9531, 52.0312] }, { "length": 1024, "align1": 10, "align2": 0, "timings": [87.7344, 1043.28, 86.4844, 85.8594, 83.75, 85.7812] }, { "length": 1024, "align1": 0, "align2": 10, "timings": [88.5156, 1046.25, 88.125, 87.2656, 82.7344, 88.3594] }, { "length": 1024, "align1": 10, "align2": 10, "timings": [60, 1042.73, 57.3438, 60.2344, 62.5, 57.5781] }, { "length": 2048, "align1": 0, "align2": 0, "timings": [91.6406, 2064.14, 90.5469, 91.0156, 110.625, 88.75] }, { "length": 2048, "align1": 11, "align2": 0, "timings": [161.953, 2064.14, 160.156, 160.156, 156.016, 160.078] }, { "length": 2048, "align1": 0, "align2": 11, "timings": [161.562, 2072.27, 160.859, 160.234, 155.234, 159.297] }, { "length": 2048, "align1": 11, "align2": 11, "timings": [95.3906, 2064.84, 95.0781, 102.891, 113.359, 99.4531] }, { "length": 4096, "align1": 0, "align2": 0, "timings": [370.625, 4110.62, 163.984, 164.297, 216.641, 164.688] }, { "length": 4096, "align1": 12, "align2": 0, "timings": [306.953, 4108.75, 305.938, 305.547, 288.672, 306.016] }, { "length": 4096, "align1": 0, "align2": 12, "timings": [307.5, 4118.44, 307.656, 307.969, 289.375, 306.016] }, { "length": 4096, "align1": 12, "align2": 12, "timings": [172.578, 4108.36, 168.359, 170.469, 216.016, 171.484] }, { "length": 8192, "align1": 0, "align2": 0, "timings": [343.438, 8194.06, 329.219, 340.781, 448.203, 332.891] }, { "length": 8192, "align1": 13, "align2": 0, "timings": [598.203, 8194.14, 614.766, 612.734, 622.5, 614.062] }, { "length": 8192, "align1": 0, "align2": 13, "timings": [592.109, 8221.88, 590.781, 590.859, 618.047, 578.047] }, { "length": 8192, "align1": 13, "align2": 13, "timings": [351.562, 8193.98, 330.312, 341.562, 438.906, 335.469] }, { "length": 16384, "align1": 0, "align2": 0, "timings": [682.109, 16367.3, 663.594, 660.078, 819.688, 662.031] }, { "length": 16384, "align1": 14, "align2": 0, "timings": [1241.41, 16369.5, 1236.33, 1238.83, 1316.33, 1233.91] }, { "length": 16384, "align1": 0, "align2": 14, "timings": [1179.22, 16480.6, 1176.09, 1178.98, 1297.27, 1169.53] }, { "length": 16384, "align1": 14, "align2": 14, "timings": [685.391, 16481, 678.359, 684.141, 817.109, 680.156] }, { "length": 32768, "align1": 0, "align2": 0, "timings": [1925.78, 32713.4, 2022.97, 1927.81, 2109.22, 2082.03] }, { "length": 32768, "align1": 15, "align2": 0, "timings": [3322.34, 32713.5, 3620.78, 3322.27, 3338.05, 3879.84] }, { "length": 32768, "align1": 0, "align2": 15, "timings": [3290.62, 33222.4, 3547.19, 3284.38, 3335.39, 3939.38] }, { "length": 32768, "align1": 15, "align2": 15, "timings": [1931.09, 32713.9, 2023.05, 1923.2, 2114.22, 2083.83] }, { "length": 65536, "align1": 0, "align2": 0, "timings": [3920.94, 65409.2, 4118.12, 3915.62, 4200.16, 4147.27] }, { "length": 65536, "align1": 16, "align2": 0, "timings": [3843.2, 65574.3, 4013.44, 3821.64, 4199.84, 4134.38] }, { "length": 65536, "align1": 0, "align2": 16, "timings": [3947.89, 66601.6, 4014.77, 3823.67, 4199.84, 4135.62] }, { "length": 65536, "align1": 16, "align2": 16, "timings": [3988.28, 65417.9, 4017.42, 3830, 4200.31, 4138.59] }, { "length": 0, "align1": 0, "align2": 0, "timings": [23.3594, 14.7656, 17.7344, 15.3906, 18.5938, 17.1875] }, { "length": 0, "align1": 0, "align2": 0, "timings": [17.6562, 12.9688, 15.5469, 15.4688, 16.5625, 15.4688] }, { "length": 0, "align1": 0, "align2": 0, "timings": [17.4219, 12.8125, 15.625, 15.3906, 16.1719, 15.3906] }, { "length": 0, "align1": 0, "align2": 0, "timings": [17.5, 12.9688, 15.625, 15.3125, 16.4062, 15.1562] }, { "length": 1, "align1": 0, "align2": 0, "timings": [17.6562, 13.75, 16.25, 15.4688, 16.0938, 16.9531] }, { "length": 1, "align1": 1, "align2": 0, "timings": [17.3438, 12.8125, 15.7031, 15.5469, 15.4688, 15.3906] }, { "length": 1, "align1": 0, "align2": 1, "timings": [17.5781, 13.0469, 15.7031, 14.2188, 15.0781, 15.1562] }, { "length": 1, "align1": 1, "align2": 1, "timings": [17.4219, 12.1875, 15.5469, 15.1562, 15.3125, 15.3125] }, { "length": 2, "align1": 0, "align2": 0, "timings": [17.2656, 17.3438, 15.4688, 15.5469, 16.4062, 15.0781] }, { "length": 2, "align1": 2, "align2": 0, "timings": [17.1094, 15.625, 15.7812, 15.2344, 15.5469, 15.3906] }, { "length": 2, "align1": 0, "align2": 2, "timings": [16.4062, 13.9062, 15.7031, 15.3906, 15.4688, 15.3906] }, { "length": 2, "align1": 2, "align2": 2, "timings": [17.1094, 13.5156, 15.7812, 15.3125, 15.7812, 15.3906] }, { "length": 3, "align1": 0, "align2": 0, "timings": [17.3438, 17.1094, 15.7031, 15.3125, 16.0156, 15.4688] }, { "length": 3, "align1": 3, "align2": 0, "timings": [16.6406, 15.3906, 15.3906, 15.2344, 15.625, 15.3906] }, { "length": 3, "align1": 0, "align2": 3, "timings": [16.6406, 15.7031, 15.5469, 15.3125, 15.3906, 15.3906] }, { "length": 3, "align1": 3, "align2": 3, "timings": [17.3438, 15.2344, 16.3281, 15.625, 15.7812, 15.3906] }, { "length": 4, "align1": 0, "align2": 0, "timings": [16.7969, 29.6875, 15.3125, 14.8438, 15.9375, 15.1562] }, { "length": 4, "align1": 4, "align2": 0, "timings": [16.4844, 29.375, 14.8438, 14.5312, 14.9219, 14.5312] }, { "length": 4, "align1": 0, "align2": 4, "timings": [16.5625, 29.6094, 14.8438, 14.6094, 16.0156, 14.7656] }, { "length": 4, "align1": 4, "align2": 4, "timings": [16.5625, 30.8594, 15, 14.5312, 14.0625, 14.4531] }, { "length": 5, "align1": 0, "align2": 0, "timings": [16.3281, 35.3125, 15.2344, 14.4531, 14.375, 14.5312] }, { "length": 5, "align1": 5, "align2": 0, "timings": [16.1719, 34.6875, 15, 14.4531, 14.1406, 14.5312] }, { "length": 5, "align1": 0, "align2": 5, "timings": [16.4062, 34.1406, 15, 14.4531, 14.1406, 14.5312] }, { "length": 5, "align1": 5, "align2": 5, "timings": [16.4062, 38.2031, 14.5312, 14.6094, 14.8438, 14.5312] }, { "length": 6, "align1": 0, "align2": 0, "timings": [16.25, 19.7656, 14.5312, 14.4531, 13.9844, 14.5312] }, { "length": 6, "align1": 6, "align2": 0, "timings": [16.4062, 18.6719, 14.7656, 14.5312, 14.1406, 14.375] }, { "length": 6, "align1": 0, "align2": 6, "timings": [16.4062, 17.3438, 14.6875, 14.375, 14.1406, 14.5312] }, { "length": 6, "align1": 6, "align2": 6, "timings": [16.1719, 17.1094, 14.4531, 14.375, 14.5312, 14.7656] }, { "length": 7, "align1": 0, "align2": 0, "timings": [16.6406, 20.1562, 14.6094, 14.5312, 14.1406, 14.5312] }, { "length": 7, "align1": 7, "align2": 0, "timings": [16.25, 19.375, 14.5312, 14.5312, 14.1406, 14.5312] }, { "length": 7, "align1": 0, "align2": 7, "timings": [16.25, 18.125, 14.6094, 14.375, 14.1406, 14.375] }, { "length": 7, "align1": 7, "align2": 7, "timings": [16.5625, 17.6562, 14.6875, 14.4531, 14.2969, 14.4531] }, { "length": 8, "align1": 0, "align2": 0, "timings": [16.5625, 21.4062, 14.8438, 14.6875, 14.2969, 14.7656] }, { "length": 8, "align1": 8, "align2": 0, "timings": [16.3281, 19.5312, 14.9219, 14.9219, 15, 14.1406] }, { "length": 8, "align1": 0, "align2": 8, "timings": [16.3281, 19.0625, 14.9219, 14.4531, 13.4375, 14.375] }, { "length": 8, "align1": 8, "align2": 8, "timings": [16.4062, 18.6719, 14.8438, 14.2188, 13.6719, 14.375] }, { "length": 9, "align1": 0, "align2": 0, "timings": [16.3281, 22.6562, 14.6875, 14.5312, 13.125, 14.375] }, { "length": 9, "align1": 9, "align2": 0, "timings": [16.25, 20.9375, 14.5312, 14.4531, 13.5938, 14.4531] }, { "length": 9, "align1": 0, "align2": 9, "timings": [16.4062, 20.0781, 14.6094, 14.2969, 13.5156, 14.2969] }, { "length": 9, "align1": 9, "align2": 9, "timings": [16.4062, 19.9219, 14.6875, 14.4531, 13.0469, 14.2969] }, { "length": 10, "align1": 0, "align2": 0, "timings": [16.4062, 23.6719, 14.6094, 14.375, 13.0469, 14.2969] }, { "length": 10, "align1": 10, "align2": 0, "timings": [16.5625, 21.7969, 14.6875, 14.5312, 13.0469, 14.2969] }, { "length": 10, "align1": 0, "align2": 10, "timings": [16.25, 20.9375, 14.7656, 14.375, 13.0469, 14.2188] }, { "length": 10, "align1": 10, "align2": 10, "timings": [16.25, 20.625, 14.4531, 14.375, 12.8906, 14.2969] }, { "length": 11, "align1": 0, "align2": 0, "timings": [16.6406, 23.5156, 14.5312, 14.2969, 13.4375, 14.2969] }, { "length": 11, "align1": 11, "align2": 0, "timings": [16.3281, 22.4219, 15.0781, 14.2969, 13.4375, 14.2188] }, { "length": 11, "align1": 0, "align2": 11, "timings": [16.3281, 22.1875, 14.4531, 14.375, 13.4375, 14.2969] }, { "length": 11, "align1": 11, "align2": 11, "timings": [16.5625, 22.2656, 14.6094, 14.375, 13.2031, 14.5312] }, { "length": 12, "align1": 0, "align2": 0, "timings": [16.3281, 24.6094, 14.5312, 14.1406, 13.125, 14.375] }, { "length": 12, "align1": 12, "align2": 0, "timings": [16.4062, 24.5312, 15, 14.375, 12.9688, 14.2188] }, { "length": 12, "align1": 0, "align2": 12, "timings": [16.5625, 23.2812, 15.1562, 14.4531, 13.125, 14.375] }, { "length": 12, "align1": 12, "align2": 12, "timings": [16.0156, 23.125, 15.0781, 14.2969, 13.9844, 14.2969] }, { "length": 13, "align1": 0, "align2": 0, "timings": [16.0938, 26.0156, 15, 15.1562, 13.125, 14.2969] }, { "length": 13, "align1": 13, "align2": 0, "timings": [16.25, 25.3906, 15.3125, 14.6094, 13.4375, 14.4531] }, { "length": 13, "align1": 0, "align2": 13, "timings": [16.4844, 149.062, 16.875, 14.9219, 13.5938, 14.375] }, { "length": 13, "align1": 13, "align2": 13, "timings": [16.7188, 23.8281, 15.1562, 14.6094, 13.6719, 14.4531] }, { "length": 14, "align1": 0, "align2": 0, "timings": [16.0938, 26.6406, 15.3125, 14.4531, 13.2031, 14.2969] }, { "length": 14, "align1": 14, "align2": 0, "timings": [16.25, 25.8594, 15.0781, 14.2188, 13.2812, 14.2969] }, { "length": 14, "align1": 0, "align2": 14, "timings": [16.4062, 24.6875, 14.5312, 14.2969, 13.5156, 14.2188] }, { "length": 14, "align1": 14, "align2": 14, "timings": [16.25, 24.7656, 14.4531, 14.6875, 13.5156, 14.8438] }, { "length": 15, "align1": 0, "align2": 0, "timings": [16.4062, 27.8906, 14.4531, 14.375, 13.0469, 14.2188] }, { "length": 15, "align1": 15, "align2": 0, "timings": [16.25, 27.1094, 14.6094, 14.375, 12.9688, 14.2969] }, { "length": 15, "align1": 0, "align2": 15, "timings": [16.4844, 25.8594, 14.7656, 14.5312, 13.0469, 14.2969] }, { "length": 15, "align1": 15, "align2": 15, "timings": [16.3281, 25.7031, 14.8438, 14.5312, 12.8906, 14.375] }, { "length": 16, "align1": 0, "align2": 0, "timings": [16.5625, 28.6719, 14.7656, 14.375, 13.5938, 14.2969] }, { "length": 16, "align1": 16, "align2": 0, "timings": [16.5625, 27.1875, 14.5312, 14.375, 12.9688, 14.2188] }, { "length": 16, "align1": 0, "align2": 16, "timings": [16.6406, 26.9531, 14.9219, 14.4531, 13.2812, 14.4531] }, { "length": 16, "align1": 16, "align2": 16, "timings": [16.4062, 26.5625, 14.5312, 14.4531, 13.3594, 14.2969] }, { "length": 17, "align1": 0, "align2": 0, "timings": [16.9531, 29.5312, 16.5625, 14.8438, 14.5312, 15.7812] }, { "length": 17, "align1": 17, "align2": 0, "timings": [16.1719, 27.9688, 15.0781, 14.2188, 13.8281, 13.2812] }, { "length": 17, "align1": 0, "align2": 17, "timings": [16.1719, 27.6562, 15.3906, 14.8438, 13.9062, 13.5156] }, { "length": 17, "align1": 17, "align2": 17, "timings": [16.5625, 27.8125, 15.7812, 15.3125, 14.9219, 15.1562] }, { "length": 18, "align1": 0, "align2": 0, "timings": [16.4062, 29.4531, 14.4531, 14.4531, 13.6719, 14.2188] }, { "length": 18, "align1": 18, "align2": 0, "timings": [16.0938, 29.2188, 13.9844, 14.6094, 13.4375, 12.8906] }, { "length": 18, "align1": 0, "align2": 18, "timings": [16.25, 29.2188, 15.3906, 14.7656, 13.9844, 14.6875] }, { "length": 18, "align1": 18, "align2": 18, "timings": [16.7188, 29.0625, 16.1719, 15.7031, 14.7656, 15.5469] }, { "length": 19, "align1": 0, "align2": 0, "timings": [16.0938, 30.3125, 14.5312, 14.2969, 13.8281, 12.8125] }, { "length": 19, "align1": 19, "align2": 0, "timings": [15.8594, 29.9219, 14.8438, 14.4531, 13.2812, 13.0469] }, { "length": 19, "align1": 0, "align2": 19, "timings": [16.4062, 30.7812, 15.3906, 14.4531, 13.9062, 13.2812] }, { "length": 19, "align1": 19, "align2": 19, "timings": [16.0938, 30.625, 15.7812, 15.3906, 14.5312, 13.9062] }, { "length": 20, "align1": 0, "align2": 0, "timings": [16.0938, 31.4062, 14.6875, 15, 13.8281, 13.2031] }, { "length": 20, "align1": 20, "align2": 0, "timings": [16.0156, 31.3281, 14.7656, 14.6094, 14.2188, 14.0625] }, { "length": 20, "align1": 0, "align2": 20, "timings": [15.9375, 31.25, 14.5312, 14.4531, 13.6719, 14.2188] }, { "length": 20, "align1": 20, "align2": 20, "timings": [16.1719, 31.0156, 15.3906, 14.6094, 14.0625, 13.2812] }, { "length": 21, "align1": 0, "align2": 0, "timings": [16.4062, 32.2656, 14.7656, 14.6094, 13.9844, 14.7656] }, { "length": 21, "align1": 21, "align2": 0, "timings": [16.25, 32.4219, 14.7656, 14.5312, 13.9844, 14.5312] }, { "length": 21, "align1": 0, "align2": 21, "timings": [16.1719, 32.1875, 15.3906, 14.6875, 13.9844, 14.8438] }, { "length": 21, "align1": 21, "align2": 21, "timings": [16.5625, 31.9531, 16.4844, 15.5469, 14.9219, 15.625] }, { "length": 22, "align1": 0, "align2": 0, "timings": [16.0156, 33.2031, 14.7656, 14.5312, 13.75, 13.2812] }, { "length": 22, "align1": 22, "align2": 0, "timings": [16.0938, 32.9688, 14.6875, 14.9219, 13.8281, 13.0469] }, { "length": 22, "align1": 0, "align2": 22, "timings": [15.8594, 33.2031, 15.5469, 15, 13.9844, 14.5312] }, { "length": 22, "align1": 22, "align2": 22, "timings": [17.0312, 32.9688, 15.7812, 15.625, 15.0781, 15.7812] }, { "length": 23, "align1": 0, "align2": 0, "timings": [16.0156, 34.1406, 15.0781, 14.6094, 13.9062, 13.0469] }, { "length": 23, "align1": 23, "align2": 0, "timings": [16.0156, 34.0625, 15.2344, 14.5312, 14.375, 12.9688] }, { "length": 23, "align1": 0, "align2": 23, "timings": [16.1719, 33.5938, 15.2344, 14.9219, 13.9062, 13.8281] }, { "length": 23, "align1": 23, "align2": 23, "timings": [16.6406, 33.6719, 16.3281, 15.8594, 15, 14.375] }, { "length": 24, "align1": 0, "align2": 0, "timings": [16.0156, 35.7812, 14.2188, 14.2188, 13.8281, 12.7344] }, { "length": 24, "align1": 24, "align2": 0, "timings": [16.25, 35.1562, 14.2969, 14.2188, 13.6719, 14.8438] }, { "length": 24, "align1": 0, "align2": 24, "timings": [15.8594, 35.2344, 14.2188, 14.1406, 13.5938, 14.0625] }, { "length": 24, "align1": 24, "align2": 24, "timings": [15.9375, 35, 14.2969, 14.2188, 13.6719, 14.0625] }, { "length": 25, "align1": 0, "align2": 0, "timings": [16.3281, 36.9531, 15.1562, 14.9219, 14.0625, 13.2812] }, { "length": 25, "align1": 25, "align2": 0, "timings": [16.0938, 36.0156, 14.8438, 14.6094, 13.75, 13.4375] }, { "length": 25, "align1": 0, "align2": 25, "timings": [16.0156, 35.625, 15.1562, 14.7656, 13.9062, 13.2812] }, { "length": 25, "align1": 25, "align2": 25, "timings": [16.4062, 35.625, 15.7031, 15.5469, 14.375, 13.9844] }, { "length": 26, "align1": 0, "align2": 0, "timings": [16.1719, 37.7344, 14.9219, 14.5312, 13.6719, 14.6875] }, { "length": 26, "align1": 26, "align2": 0, "timings": [16.25, 37.1094, 15.0781, 14.6875, 13.9062, 13.2031] }, { "length": 26, "align1": 0, "align2": 26, "timings": [16.0156, 36.9531, 15.2344, 15.0781, 14.0625, 13.2812] }, { "length": 26, "align1": 26, "align2": 26, "timings": [16.5625, 37.0312, 15.625, 15.5469, 16.0938, 15.3125] }, { "length": 27, "align1": 0, "align2": 0, "timings": [16.25, 39.2969, 14.8438, 14.6875, 13.9062, 13.3594] }, { "length": 27, "align1": 27, "align2": 0, "timings": [15.9375, 38.0469, 15.1562, 14.5312, 13.9062, 13.3594] }, { "length": 27, "align1": 0, "align2": 27, "timings": [16.1719, 37.8125, 15.2344, 14.9219, 14.0625, 13.2812] }, { "length": 27, "align1": 27, "align2": 27, "timings": [16.6406, 37.5781, 16.6406, 15.7031, 14.1406, 15.5469] }, { "length": 28, "align1": 0, "align2": 0, "timings": [16.0938, 39.2188, 14.9219, 14.5312, 13.9844, 14.4531] }, { "length": 28, "align1": 28, "align2": 0, "timings": [16.3281, 39.0625, 14.6875, 14.375, 14.2969, 14.0625] }, { "length": 28, "align1": 0, "align2": 28, "timings": [16.0156, 39.0625, 14.6875, 14.4531, 13.9844, 14.2969] }, { "length": 28, "align1": 28, "align2": 28, "timings": [16.1719, 38.75, 15, 15, 13.8281, 13.4375] }, { "length": 29, "align1": 0, "align2": 0, "timings": [16.0938, 41.3281, 15.4688, 14.8438, 13.8281, 13.0469] }, { "length": 29, "align1": 29, "align2": 0, "timings": [16.7969, 40.0781, 14.9219, 14.6875, 14.2188, 14.6094] }, { "length": 29, "align1": 0, "align2": 29, "timings": [16.4062, 40, 15.1562, 14.8438, 13.9062, 13.2812] }, { "length": 29, "align1": 29, "align2": 29, "timings": [16.7188, 39.6094, 15.7812, 15.5469, 14.2969, 15.2344] }, { "length": 30, "align1": 0, "align2": 0, "timings": [16.1719, 41.1719, 15.2344, 14.8438, 13.8281, 13.3594] }, { "length": 30, "align1": 30, "align2": 0, "timings": [16.0938, 41.5625, 15.0781, 14.6875, 14.4531, 13.2031] }, { "length": 30, "align1": 0, "align2": 30, "timings": [16.3281, 41.0938, 15.3125, 14.8438, 14.2188, 14.7656] }, { "length": 30, "align1": 30, "align2": 30, "timings": [16.5625, 40.5469, 15.5469, 15.625, 14.2188, 15.3125] }, { "length": 31, "align1": 0, "align2": 0, "timings": [16.1719, 42.8125, 15.1562, 14.6875, 13.6719, 14.5312] }, { "length": 31, "align1": 31, "align2": 0, "timings": [16.4062, 42.0312, 15.0781, 14.6875, 14.375, 13.5156] }, { "length": 31, "align1": 0, "align2": 31, "timings": [16.1719, 41.5625, 15.1562, 14.5312, 13.9062, 13.125] }, { "length": 31, "align1": 31, "align2": 31, "timings": [16.5625, 41.7969, 15.8594, 15.7031, 14.8438, 15.1562] }, { "length": 48, "align1": 0, "align2": 0, "timings": [16.9531, 88.5938, 15.4688, 14.8438, 15.4688, 14.7656] }, { "length": 48, "align1": 3, "align2": 0, "timings": [17.3438, 88.5156, 16.875, 16.3281, 16.7188, 16.1719] }, { "length": 48, "align1": 0, "align2": 3, "timings": [17.1094, 88.5156, 16.5625, 16.0156, 15.1562, 14.5312] }, { "length": 48, "align1": 3, "align2": 3, "timings": [18.9844, 88.4375, 18.75, 18.2812, 17.5781, 17.0312] }, { "length": 80, "align1": 0, "align2": 0, "timings": [17.5, 91.6406, 16.4062, 15.3125, 16.25, 15] }, { "length": 80, "align1": 5, "align2": 0, "timings": [19.6094, 90.9375, 18.75, 18.2812, 19.7656, 16.7969] }, { "length": 80, "align1": 0, "align2": 5, "timings": [19.1406, 90.7812, 18.3594, 18.6719, 19.2188, 18.125] }, { "length": 80, "align1": 5, "align2": 5, "timings": [22.3438, 90.4688, 21.7969, 21.4844, 23.9844, 21.25] }, { "length": 96, "align1": 0, "align2": 0, "timings": [17.0312, 108.047, 15.4688, 15.3906, 15.1562, 13.75] }, { "length": 96, "align1": 6, "align2": 0, "timings": [19.1406, 107.969, 18.5938, 18.2031, 19.6094, 17.8906] }, { "length": 96, "align1": 0, "align2": 6, "timings": [19.1406, 106.719, 18.5156, 18.4375, 18.6719, 18.2031] }, { "length": 96, "align1": 6, "align2": 6, "timings": [21.875, 106.406, 21.4062, 21.5625, 24.0625, 19.9219] }, { "length": 112, "align1": 0, "align2": 0, "timings": [21.3281, 123.984, 19.4531, 18.75, 15.0781, 18.75] }, { "length": 112, "align1": 7, "align2": 0, "timings": [23.125, 122.969, 22.5781, 22.7344, 18.9062, 20.625] }, { "length": 112, "align1": 0, "align2": 7, "timings": [22.6562, 122.578, 22.8906, 22.0312, 18.5938, 21.9531] }, { "length": 112, "align1": 7, "align2": 7, "timings": [23.8281, 123.125, 22.7344, 22.8906, 23.6719, 21.5625] }, { "length": 144, "align1": 0, "align2": 0, "timings": [19.8438, 188.281, 18.8281, 18.4375, 19.2969, 16.7969] }, { "length": 144, "align1": 9, "align2": 0, "timings": [23.3594, 188.047, 22.4219, 22.7344, 36.3281, 21.3281] }, { "length": 144, "align1": 0, "align2": 9, "timings": [28.2031, 195.156, 28.75, 27.5, 20.9375, 26.875] }, { "length": 144, "align1": 9, "align2": 9, "timings": [27.2656, 188.047, 26.0938, 25.4688, 36.9531, 25] }, { "length": 160, "align1": 0, "align2": 0, "timings": [21.4844, 182.031, 19.9219, 19.4531, 36.4844, 19.7656] }, { "length": 160, "align1": 10, "align2": 0, "timings": [28.0469, 181.641, 27.5781, 26.4844, 36.0938, 26.5625] }, { "length": 160, "align1": 0, "align2": 10, "timings": [27.7344, 184.688, 28.0469, 27.5781, 36.4062, 26.9531] }, { "length": 160, "align1": 10, "align2": 10, "timings": [27.6562, 181.797, 26.6406, 26.5625, 36.875, 25.3906] }, { "length": 176, "align1": 0, "align2": 0, "timings": [21.5625, 197.656, 20.1562, 20.0781, 36.0938, 18.6719] }, { "length": 176, "align1": 11, "align2": 0, "timings": [27.6562, 197.5, 27.4219, 27.6562, 36.3281, 26.0156] }, { "length": 176, "align1": 0, "align2": 11, "timings": [27.5781, 198.281, 28.2812, 28.0469, 36.0156, 26.4062] }, { "length": 176, "align1": 11, "align2": 11, "timings": [26.9531, 195.938, 27.0312, 26.875, 36.875, 25.0781] }, { "length": 192, "align1": 0, "align2": 0, "timings": [22.3438, 212.5, 20, 20.1562, 35, 18.2812] }, { "length": 192, "align1": 12, "align2": 0, "timings": [28.2031, 212.578, 27.8125, 26.875, 36.0156, 26.4062] }, { "length": 192, "align1": 0, "align2": 12, "timings": [27.8906, 213.672, 27.1094, 27.0312, 34.9219, 25.9375] }, { "length": 192, "align1": 12, "align2": 12, "timings": [26.5625, 212.891, 26.3281, 25.7031, 35.8594, 24.375] }, { "length": 208, "align1": 0, "align2": 0, "timings": [21.7969, 229.375, 21.875, 19.7656, 36.0938, 18.75] }, { "length": 208, "align1": 13, "align2": 0, "timings": [28.0469, 229.531, 27.9688, 26.7188, 30.4688, 25.9375] }, { "length": 208, "align1": 0, "align2": 13, "timings": [33.4375, 230.078, 32.4219, 31.7969, 36.1719, 37.7344] }, { "length": 208, "align1": 13, "align2": 13, "timings": [28.8281, 229.766, 30.1562, 28.4375, 27.8906, 33.8281] }, { "length": 224, "align1": 0, "align2": 0, "timings": [23.9062, 245.391, 24.5312, 22.7344, 22.8125, 30.5469] }, { "length": 224, "align1": 14, "align2": 0, "timings": [32.2656, 245.469, 31.7188, 31.875, 29.4531, 36.3281] }, { "length": 224, "align1": 0, "align2": 14, "timings": [31.7969, 246.484, 32.5, 31.5625, 29.2188, 36.3281] }, { "length": 224, "align1": 14, "align2": 14, "timings": [28.4375, 245.391, 28.9062, 27.0312, 27.0312, 33.8281] }, { "length": 240, "align1": 0, "align2": 0, "timings": [25.3906, 260.859, 24.9219, 22.9688, 23.3594, 29.375] }, { "length": 240, "align1": 15, "align2": 0, "timings": [32.2656, 260.078, 31.7969, 31.6406, 28.6719, 35.5469] }, { "length": 240, "align1": 0, "align2": 15, "timings": [31.875, 259.609, 31.5625, 31.7188, 28.6719, 35.7812] }, { "length": 240, "align1": 15, "align2": 15, "timings": [28.75, 259.609, 28.3594, 27.3438, 26.7188, 34.8438] }, { "length": 272, "align1": 0, "align2": 0, "timings": [23.8281, 292.891, 24.7656, 22.6562, 21.7969, 31.7188] }, { "length": 272, "align1": 17, "align2": 0, "timings": [34.6094, 293.594, 31.1719, 30.4688, 36.0938, 35.2344] }, { "length": 272, "align1": 0, "align2": 17, "timings": [38.3594, 293.672, 38.3594, 37.1875, 28.75, 38.4375] }, { "length": 272, "align1": 17, "align2": 17, "timings": [31.7188, 293.438, 30.8594, 30.4688, 30.7812, 30.2344] }, { "length": 288, "align1": 0, "align2": 0, "timings": [26.9531, 309.219, 29.7656, 25.3906, 26.3281, 23.5938] }, { "length": 288, "align1": 18, "align2": 0, "timings": [35.7031, 308.75, 35.9375, 34.8438, 34.2969, 34.1406] }, { "length": 288, "align1": 0, "align2": 18, "timings": [37.2656, 308.75, 38.3594, 37.2656, 33.2031, 36.5625] }, { "length": 288, "align1": 18, "align2": 18, "timings": [31.6406, 308.047, 31.4844, 31.1719, 30.0781, 30.7812] }, { "length": 304, "align1": 0, "align2": 0, "timings": [26.25, 324.062, 25.4688, 24.6875, 25, 23.4375] }, { "length": 304, "align1": 19, "align2": 0, "timings": [35.4688, 324.453, 35.3906, 35.1562, 34.6094, 34.2969] }, { "length": 304, "align1": 0, "align2": 19, "timings": [37.3438, 324.219, 37.5781, 37.3438, 34.2188, 35.9375] }, { "length": 304, "align1": 19, "align2": 19, "timings": [31.5625, 324.375, 30.7031, 30.9375, 29.6875, 30.2344] }, { "length": 320, "align1": 0, "align2": 0, "timings": [26.9531, 340.156, 25.2344, 24.375, 26.4062, 23.5156] }, { "length": 320, "align1": 20, "align2": 0, "timings": [37.5, 340, 36.5625, 36.4844, 33.8281, 35.7812] }, { "length": 320, "align1": 0, "align2": 20, "timings": [36.1719, 340.156, 36.4062, 36.4062, 33.2812, 35.3906] }, { "length": 320, "align1": 20, "align2": 20, "timings": [30.9375, 340.156, 30.9375, 29.6875, 29.7656, 30.0781] }, { "length": 336, "align1": 0, "align2": 0, "timings": [26.1719, 357.188, 25.3906, 24.375, 25.7031, 23.4375] }, { "length": 336, "align1": 21, "align2": 0, "timings": [36.875, 355.703, 36.1719, 36.0156, 39.9219, 35.4688] }, { "length": 336, "align1": 0, "align2": 21, "timings": [43.5156, 356.719, 42.6562, 41.4062, 34.0625, 42.9688] }, { "length": 336, "align1": 21, "align2": 21, "timings": [33.0469, 357.734, 33.9062, 32.5781, 32.8125, 32.5781] }, { "length": 352, "align1": 0, "align2": 0, "timings": [27.8906, 371.641, 27.1875, 26.9531, 28.5938, 26.7188] }, { "length": 352, "align1": 22, "align2": 0, "timings": [41.25, 371.797, 40.625, 40.4688, 38.6719, 39.7656] }, { "length": 352, "align1": 0, "align2": 22, "timings": [41.6406, 371.328, 41.6406, 41.1719, 38.0469, 41.9531] }, { "length": 352, "align1": 22, "align2": 22, "timings": [33.2031, 371.328, 33.5938, 33.6719, 31.7188, 32.4219] }, { "length": 368, "align1": 0, "align2": 0, "timings": [30.0781, 387.891, 27.3438, 26.6406, 27.2656, 26.7188] }, { "length": 368, "align1": 23, "align2": 0, "timings": [40.8594, 388.047, 40.3125, 40.4688, 38.2812, 39.9219] }, { "length": 368, "align1": 0, "align2": 23, "timings": [42.1875, 388.125, 41.7188, 41.3281, 38.0469, 41.4844] }, { "length": 368, "align1": 23, "align2": 23, "timings": [32.9688, 388.281, 34.1406, 32.6562, 31.9531, 31.9531] }, { "length": 384, "align1": 0, "align2": 0, "timings": [28.5938, 405.469, 27.1875, 26.7969, 27.7344, 26.25] }, { "length": 384, "align1": 24, "align2": 0, "timings": [31.5625, 404.453, 31.0156, 31.7969, 29.9219, 29.9219] }, { "length": 384, "align1": 0, "align2": 24, "timings": [31.6406, 404.609, 30.1562, 30.1562, 29.8438, 30.1562] }, { "length": 384, "align1": 24, "align2": 24, "timings": [29.6094, 404.453, 29.9219, 30.5469, 29.5312, 28.5156] }, { "length": 400, "align1": 0, "align2": 0, "timings": [28.5156, 419.531, 27.5, 27.5781, 28.2031, 26.4844] }, { "length": 400, "align1": 25, "align2": 0, "timings": [41.6406, 420.469, 41.9531, 40.7031, 45.3125, 39.9219] }, { "length": 400, "align1": 0, "align2": 25, "timings": [48.125, 420.391, 47.3438, 46.7969, 38.6719, 46.6406] }, { "length": 400, "align1": 25, "align2": 25, "timings": [36.7188, 421.094, 36.1719, 36.1719, 36.4062, 36.0156] }, { "length": 416, "align1": 0, "align2": 0, "timings": [29.8438, 436.172, 30.7812, 28.9844, 31.7969, 29.6094] }, { "length": 416, "align1": 26, "align2": 0, "timings": [46.25, 436.406, 46.4844, 45.3125, 43.5938, 45] }, { "length": 416, "align1": 0, "align2": 26, "timings": [46.3281, 436.25, 46.4062, 46.7188, 42.9688, 45.7812] }, { "length": 416, "align1": 26, "align2": 26, "timings": [37.5, 436.094, 36.9531, 36.0938, 36.4844, 36.0156] }, { "length": 432, "align1": 0, "align2": 0, "timings": [29.1406, 453.203, 29.5312, 29.6094, 32.0312, 28.8281] }, { "length": 432, "align1": 27, "align2": 0, "timings": [45.7031, 451.953, 45.625, 45.0781, 44.0625, 45.1562] }, { "length": 432, "align1": 0, "align2": 27, "timings": [46.5625, 453.203, 46.875, 46.5625, 42.9688, 45.9375] }, { "length": 432, "align1": 27, "align2": 27, "timings": [37.1094, 452.969, 37.8906, 36.5625, 35.9375, 35.8594] }, { "length": 448, "align1": 0, "align2": 0, "timings": [28.5938, 469.062, 29.6875, 28.5156, 31.7188, 28.125] }, { "length": 448, "align1": 28, "align2": 0, "timings": [45.9375, 469.219, 45.3125, 45.3125, 42.1875, 45.2344] }, { "length": 448, "align1": 0, "align2": 28, "timings": [46.6406, 468.438, 45.625, 45.1562, 41.7969, 45.1562] }, { "length": 448, "align1": 28, "align2": 28, "timings": [35.4688, 469.141, 36.5625, 34.5312, 35.5469, 35.3125] }, { "length": 464, "align1": 0, "align2": 0, "timings": [30.8594, 484.375, 29.5312, 29.2969, 32.7344, 29.1406] }, { "length": 464, "align1": 29, "align2": 0, "timings": [46.5625, 484.141, 45.7812, 45.0781, 49.2969, 45.7031] }, { "length": 464, "align1": 0, "align2": 29, "timings": [49.6875, 484.453, 50.7031, 48.9844, 42.8906, 49.4531] }, { "length": 464, "align1": 29, "align2": 29, "timings": [38.8281, 484.141, 38.5938, 38.6719, 39.6875, 37.8125] }, { "length": 480, "align1": 0, "align2": 0, "timings": [33.125, 500.156, 33.4375, 32.1875, 33.75, 31.0938] }, { "length": 480, "align1": 30, "align2": 0, "timings": [50.2344, 500, 50.3125, 49.2188, 48.75, 49.4531] }, { "length": 480, "align1": 0, "align2": 30, "timings": [49.5312, 500.156, 49.8438, 49.2969, 47.3438, 51.9531] }, { "length": 480, "align1": 30, "align2": 30, "timings": [39.2188, 499.922, 40.3125, 37.8906, 38.75, 38.6719] }, { "length": 496, "align1": 0, "align2": 0, "timings": [33.4375, 517.422, 33.3594, 32.8125, 33.6719, 30.1562] }, { "length": 496, "align1": 31, "align2": 0, "timings": [50.7031, 517.578, 49.9219, 49.7656, 47.5, 49.0625] }, { "length": 496, "align1": 0, "align2": 31, "timings": [50.9375, 517.5, 49.6094, 49.5312, 46.9531, 48.3594] }, { "length": 496, "align1": 31, "align2": 31, "timings": [41.25, 517.5, 40.1562, 38.4375, 38.5938, 38.0469] }, { "length": 1024, "align1": 0, "align2": 0, "timings": [52.1094, 1043.12, 52.5, 50.8594, 60.0781, 51.6406] }, { "length": 1024, "align1": 32, "align2": 0, "timings": [53.6719, 1042.5, 51.5625, 51.3281, 59.375, 50.5469] }, { "length": 1024, "align1": 0, "align2": 32, "timings": [50, 1043.67, 51.25, 49.5312, 58.2031, 49.7656] }, { "length": 1024, "align1": 32, "align2": 32, "timings": [52.6562, 1042.73, 51.0938, 51.9531, 58.4375, 50.1562] }, { "length": 1056, "align1": 0, "align2": 0, "timings": [55.3125, 1075.47, 53.9062, 52.7344, 60.7031, 55.0781] }, { "length": 1056, "align1": 33, "align2": 0, "timings": [87.1875, 1075.78, 86.9531, 87.4219, 88.0469, 86.7969] }, { "length": 1056, "align1": 0, "align2": 33, "timings": [91.7969, 1075.47, 92.3438, 92.5, 88.0469, 92.9688] }, { "length": 1056, "align1": 33, "align2": 33, "timings": [61.1719, 1075.78, 61.1719, 63.75, 64.375, 63.5938] }, { "length": 1088, "align1": 0, "align2": 0, "timings": [55.2344, 1106.72, 52.9688, 51.0938, 63.2812, 52.2656] }, { "length": 1088, "align1": 34, "align2": 0, "timings": [86.7969, 1106.41, 87.3438, 87.5781, 89.1406, 86.7188] }, { "length": 1088, "align1": 0, "align2": 34, "timings": [92.7344, 1106.56, 92.1094, 91.7188, 87.5, 91.875] }, { "length": 1088, "align1": 34, "align2": 34, "timings": [62.8125, 1106.48, 59.5312, 62.5781, 64.375, 61.4062] }, { "length": 1120, "align1": 0, "align2": 0, "timings": [57.7344, 1139.14, 56.4844, 56.7969, 65.8594, 55.2344] }, { "length": 1120, "align1": 35, "align2": 0, "timings": [91.1719, 1139.22, 91.3281, 90.8594, 92.8906, 91.4844] }, { "length": 1120, "align1": 0, "align2": 35, "timings": [97.5781, 1139.14, 96.4062, 96.3281, 91.875, 95.625] }, { "length": 1120, "align1": 35, "align2": 35, "timings": [65.8594, 1259.14, 68.2812, 66.0156, 68.5938, 64.4531] }, { "length": 1152, "align1": 0, "align2": 0, "timings": [58.4375, 1170.39, 55.7031, 55, 65.2344, 55.3906] }, { "length": 1152, "align1": 36, "align2": 0, "timings": [96.4062, 1170.55, 95.5469, 95.4688, 89.8438, 94.7656] }, { "length": 1152, "align1": 0, "align2": 36, "timings": [96.4844, 1170.31, 96.6406, 95.5469, 89.8438, 95.625] }, { "length": 1152, "align1": 36, "align2": 36, "timings": [66.3281, 1170.39, 63.75, 64.2969, 68.5938, 65.8594] }, { "length": 1184, "align1": 0, "align2": 0, "timings": [58.6719, 1203.2, 58.4375, 58.2812, 68.2812, 57.7344] }, { "length": 1184, "align1": 37, "align2": 0, "timings": [101.172, 1203.2, 101.25, 101.016, 96.9531, 100.703] }, { "length": 1184, "align1": 0, "align2": 37, "timings": [101.25, 1203.2, 102.578, 100.938, 96.5625, 100.469] }, { "length": 1184, "align1": 37, "align2": 37, "timings": [66.25, 1203.2, 64.7656, 65, 71.6406, 64.8438] }, { "length": 1216, "align1": 0, "align2": 0, "timings": [59.9219, 1235.16, 57.8906, 58.2031, 68.9062, 58.125] }, { "length": 1216, "align1": 38, "align2": 0, "timings": [100.234, 1235.16, 100.938, 98.5938, 97.6562, 99.8438] }, { "length": 1216, "align1": 0, "align2": 38, "timings": [101.406, 1235.23, 102.031, 101.484, 96.0156, 101.406] }, { "length": 1216, "align1": 38, "align2": 38, "timings": [68.5938, 1235.16, 66.4062, 67.8906, 71.3281, 68.75] }, { "length": 1248, "align1": 0, "align2": 0, "timings": [62.6562, 1266.25, 61.7969, 60.2344, 73.125, 60.0781] }, { "length": 1248, "align1": 39, "align2": 0, "timings": [105.156, 1266.41, 104.141, 105.234, 103.203, 103.594] }, { "length": 1248, "align1": 0, "align2": 39, "timings": [106.406, 1266.33, 105.469, 105.547, 100.781, 105.781] }, { "length": 1248, "align1": 39, "align2": 39, "timings": [69.5312, 1266.88, 70.4688, 72.1094, 73.3594, 67.5781] }, { "length": 1280, "align1": 0, "align2": 0, "timings": [61.9531, 1299.14, 61.875, 59.6094, 71.0156, 59.2969] }, { "length": 1280, "align1": 40, "align2": 0, "timings": [75.625, 1299.22, 75.8594, 75.0781, 74.0625, 76.1719] }, { "length": 1280, "align1": 0, "align2": 40, "timings": [75.7812, 1299.22, 78.9844, 72.1094, 73.75, 78.5156] }, { "length": 1280, "align1": 40, "align2": 40, "timings": [63.0469, 1298.98, 61.7969, 60.8594, 70.0781, 61.0156] }, { "length": 1312, "align1": 0, "align2": 0, "timings": [65, 1329.92, 64.9219, 63.2031, 75.625, 62.2656] }, { "length": 1312, "align1": 41, "align2": 0, "timings": [109.531, 1330.31, 109.297, 108.672, 106.797, 108.75] }, { "length": 1312, "align1": 0, "align2": 41, "timings": [110.391, 1330.23, 110.469, 109.922, 106.406, 110.938] }, { "length": 1312, "align1": 41, "align2": 41, "timings": [71.5625, 1330.16, 69.6875, 72.6562, 77.8906, 70.7812] }, { "length": 1344, "align1": 0, "align2": 0, "timings": [64.375, 1362.97, 60.9375, 62.7344, 75.3125, 62.1094] }, { "length": 1344, "align1": 42, "align2": 0, "timings": [110.391, 1362.89, 109.062, 109.922, 106.484, 108.984] }, { "length": 1344, "align1": 0, "align2": 42, "timings": [110.781, 1363.44, 109.141, 111.25, 105.859, 109.688] }, { "length": 1344, "align1": 42, "align2": 42, "timings": [70.5469, 1362.81, 68.3594, 73.0469, 76.7188, 69.5312] }, { "length": 1376, "align1": 0, "align2": 0, "timings": [67.0312, 1394.06, 67.1875, 64.2969, 78.9062, 65.9375] }, { "length": 1376, "align1": 43, "align2": 0, "timings": [114.922, 1393.75, 113.125, 113.359, 111.875, 112.812] }, { "length": 1376, "align1": 0, "align2": 43, "timings": [116.172, 1394.06, 114.688, 114.766, 110, 114.609] }, { "length": 1376, "align1": 43, "align2": 43, "timings": [74.4531, 1394.45, 74.2188, 73.75, 79.375, 72.1094] }, { "length": 1408, "align1": 0, "align2": 0, "timings": [66.3281, 1427.27, 67.1875, 64.1406, 77.0312, 64.2188] }, { "length": 1408, "align1": 44, "align2": 0, "timings": [114.453, 1426.8, 112.578, 114.453, 106.719, 113.047] }, { "length": 1408, "align1": 0, "align2": 44, "timings": [115.234, 1426.95, 113.594, 113.203, 106.953, 113.203] }, { "length": 1408, "align1": 44, "align2": 44, "timings": [71.25, 1426.8, 73.2812, 76.0156, 81.7188, 73.5938] }, { "length": 1440, "align1": 0, "align2": 0, "timings": [71.0156, 1458.67, 69.2188, 67.3438, 80.8594, 68.2812] }, { "length": 1440, "align1": 45, "align2": 0, "timings": [118.828, 1459.77, 118.281, 119.609, 115.547, 118.438] }, { "length": 1440, "align1": 0, "align2": 45, "timings": [115.234, 1458.83, 113.672, 114.062, 114.297, 114.609] }, { "length": 1440, "align1": 45, "align2": 45, "timings": [76.875, 1458.75, 75.5469, 77.5781, 83.5938, 75.2344] }, { "length": 1472, "align1": 0, "align2": 0, "timings": [69.2969, 1489.53, 68.3594, 67.5, 81.875, 64.9219] }, { "length": 1472, "align1": 46, "align2": 0, "timings": [119.531, 1489.61, 118.359, 118.359, 115.469, 116.875] }, { "length": 1472, "align1": 0, "align2": 46, "timings": [114.922, 1489.61, 114.453, 114.453, 114.219, 115.781] }, { "length": 1472, "align1": 46, "align2": 46, "timings": [77.1875, 1489.06, 78.2812, 77.1094, 84.9219, 75.4688] }, { "length": 1504, "align1": 0, "align2": 0, "timings": [73.125, 1523.12, 70.7031, 70.1562, 83.9844, 72.3438] }, { "length": 1504, "align1": 47, "align2": 0, "timings": [123.438, 1522.5, 123.672, 122.5, 119.531, 122.109] }, { "length": 1504, "align1": 0, "align2": 47, "timings": [119.062, 1522.42, 119.297, 118.281, 119.531, 117.109] }, { "length": 1504, "align1": 47, "align2": 47, "timings": [78.75, 1522.58, 79.5312, 77.4219, 86.7188, 77.8906] }, { "length": 1536, "align1": 0, "align2": 0, "timings": [71.7188, 1553.67, 71.1719, 69.6875, 84.2188, 70] }, { "length": 1536, "align1": 48, "align2": 0, "timings": [71.7969, 1553.52, 68.75, 70.1562, 84.2188, 66.875] }, { "length": 1536, "align1": 0, "align2": 48, "timings": [71.4844, 1645.47, 71.875, 69.5312, 82.8125, 69.8438] }, { "length": 1536, "align1": 48, "align2": 48, "timings": [72.0312, 1553.67, 71.0156, 70, 83.2031, 68.9844] }, { "length": 1568, "align1": 0, "align2": 0, "timings": [74.375, 1586.25, 73.4375, 73.5156, 86.9531, 72.3438] }, { "length": 1568, "align1": 49, "align2": 0, "timings": [121.562, 1586.33, 121.953, 121.016, 125, 120.938] }, { "length": 1568, "align1": 0, "align2": 49, "timings": [129.062, 1586.72, 130.312, 129.844, 124.375, 128.828] }, { "length": 1568, "align1": 49, "align2": 49, "timings": [83.0469, 1585.39, 80.3125, 80.7031, 88.3594, 81.1719] }, { "length": 1600, "align1": 0, "align2": 0, "timings": [72.2656, 1617.27, 72.7344, 72.4219, 88.2812, 71.25] }, { "length": 1600, "align1": 50, "align2": 0, "timings": [121.797, 1617.27, 121.641, 121.797, 124.453, 120.703] }, { "length": 1600, "align1": 0, "align2": 50, "timings": [129.453, 1617.5, 128.438, 127.578, 123.359, 128.203] }, { "length": 1600, "align1": 50, "align2": 50, "timings": [79.8438, 1617.5, 79.7656, 80, 91.7188, 78.75] }, { "length": 1632, "align1": 0, "align2": 0, "timings": [77.5, 1650.08, 76.6406, 73.125, 90.7812, 73.8281] }, { "length": 1632, "align1": 51, "align2": 0, "timings": [124.766, 1650.08, 126.875, 124.844, 129.453, 124.531] }, { "length": 1632, "align1": 0, "align2": 51, "timings": [132.656, 1650.31, 133.984, 133.047, 127.344, 132.109] }, { "length": 1632, "align1": 51, "align2": 51, "timings": [84.2188, 1650.08, 83.8281, 82.3438, 91.7188, 81.9531] }, { "length": 1664, "align1": 0, "align2": 0, "timings": [76.0156, 1681.95, 75.625, 73.4375, 89.2188, 76.3281] }, { "length": 1664, "align1": 52, "align2": 0, "timings": [133.047, 1682.5, 132.969, 132.656, 125.312, 131.484] }, { "length": 1664, "align1": 0, "align2": 52, "timings": [132.422, 1682.11, 132.109, 130.703, 123.984, 131.953] }, { "length": 1664, "align1": 52, "align2": 52, "timings": [83.2031, 1682.27, 84.2188, 84.6094, 93.8281, 83.8281] }, { "length": 1696, "align1": 0, "align2": 0, "timings": [79.2188, 1712.97, 78.9062, 76.4062, 93.9062, 77.4219] }, { "length": 1696, "align1": 53, "align2": 0, "timings": [137.422, 1712.97, 137.109, 137.578, 134.297, 136.406] }, { "length": 1696, "align1": 0, "align2": 53, "timings": [138.672, 1713.12, 140, 139.609, 131.875, 138.828] }, { "length": 1696, "align1": 53, "align2": 53, "timings": [85.0781, 1713.12, 84.2969, 84.0625, 95.8594, 85.7031] }, { "length": 1728, "align1": 0, "align2": 0, "timings": [77.9688, 1746.02, 78.125, 75.9375, 95.1562, 74.9219] }, { "length": 1728, "align1": 54, "align2": 0, "timings": [138.672, 1745.86, 137.109, 136.797, 133.984, 136.797] }, { "length": 1728, "align1": 0, "align2": 54, "timings": [138.984, 1746.09, 138.516, 137.969, 131.562, 137.891] }, { "length": 1728, "align1": 54, "align2": 54, "timings": [86.0938, 1745.86, 85.2344, 87.0312, 97.1094, 84.6875] }, { "length": 1760, "align1": 0, "align2": 0, "timings": [81.25, 1776.88, 81.0938, 80.3125, 97.3438, 92.0312] }, { "length": 1760, "align1": 55, "align2": 0, "timings": [140.547, 1777.03, 142.422, 142.266, 137.812, 147.109] }, { "length": 1760, "align1": 0, "align2": 55, "timings": [143.828, 1776.95, 143.125, 141.719, 136.328, 147.812] }, { "length": 1760, "align1": 55, "align2": 55, "timings": [87.9688, 1776.88, 87.8906, 88.3594, 97.5781, 98.9062] }, { "length": 1792, "align1": 0, "align2": 0, "timings": [80.3125, 1809.92, 81.0156, 79.6094, 97.2656, 93.0469] }, { "length": 1792, "align1": 56, "align2": 0, "timings": [104.844, 1809.84, 104.297, 99.2188, 99.7656, 112.188] }, { "length": 1792, "align1": 0, "align2": 56, "timings": [103.516, 1809.69, 104.453, 100.156, 99.6094, 111.094] }, { "length": 1792, "align1": 56, "align2": 56, "timings": [82.1094, 1809.45, 83.5156, 82.1875, 97.1875, 95.1562] }, { "length": 1824, "align1": 0, "align2": 0, "timings": [82.8906, 1841.02, 82.0312, 81.7188, 100.391, 80.625] }, { "length": 1824, "align1": 57, "align2": 0, "timings": [145.312, 1840.7, 146.172, 145.781, 142.031, 145.703] }, { "length": 1824, "align1": 0, "align2": 57, "timings": [147.578, 1840.94, 148.672, 146.328, 141.875, 147.266] }, { "length": 1824, "align1": 57, "align2": 57, "timings": [90.4688, 1840.78, 89.9219, 90.8594, 101.641, 89.8438] }, { "length": 1856, "align1": 0, "align2": 0, "timings": [82.8125, 1873.59, 83.6719, 82.5, 101.25, 78.8281] }, { "length": 1856, "align1": 58, "align2": 0, "timings": [146.719, 1873.98, 146.719, 145.547, 142.5, 145] }, { "length": 1856, "align1": 0, "align2": 58, "timings": [147.266, 1873.75, 148.125, 148.281, 141.484, 147.734] }, { "length": 1856, "align1": 58, "align2": 58, "timings": [90.2344, 1873.44, 91.5625, 90.8594, 104.219, 88.0469] }, { "length": 1888, "align1": 0, "align2": 0, "timings": [86.4844, 1905.31, 85.3906, 83.0469, 104.062, 83.2812] }, { "length": 1888, "align1": 59, "align2": 0, "timings": [151.562, 1904.45, 151.25, 151.094, 147.344, 151.016] }, { "length": 1888, "align1": 0, "align2": 59, "timings": [151.016, 1905.47, 150.547, 257.656, 147.969, 151.172] }, { "length": 1888, "align1": 59, "align2": 59, "timings": [93.0469, 1905.62, 91.0156, 92.1094, 105.234, 89.2969] }, { "length": 1920, "align1": 0, "align2": 0, "timings": [85.3125, 1936.64, 84.375, 82.0312, 101.25, 83.5938] }, { "length": 1920, "align1": 60, "align2": 0, "timings": [151.406, 1936.56, 149.688, 150.312, 141.172, 150.781] }, { "length": 1920, "align1": 0, "align2": 60, "timings": [151.172, 1936.56, 149.453, 150.078, 141.016, 151.406] }, { "length": 1920, "align1": 60, "align2": 60, "timings": [92.1875, 1936.56, 93.2031, 94.1406, 104.453, 91.3281] }, { "length": 1952, "align1": 0, "align2": 0, "timings": [88.125, 1969.53, 87.3438, 85.4688, 103.281, 85.3125] }, { "length": 1952, "align1": 61, "align2": 0, "timings": [156.953, 1969.45, 155.391, 155.078, 152.188, 155.938] }, { "length": 1952, "align1": 0, "align2": 61, "timings": [150.312, 1969.61, 150.703, 149.766, 151.328, 148.516] }, { "length": 1952, "align1": 61, "align2": 61, "timings": [94.2969, 1969.45, 91.5625, 94.6875, 108.203, 95] }, { "length": 1984, "align1": 0, "align2": 0, "timings": [87.8906, 2000.47, 86.9531, 84.9219, 107.578, 84.0625] }, { "length": 1984, "align1": 62, "align2": 0, "timings": [156.016, 2000.31, 155.078, 155.391, 150.781, 155.078] }, { "length": 1984, "align1": 0, "align2": 62, "timings": [149.609, 2000.47, 150.156, 149.688, 149.609, 148.047] }, { "length": 1984, "align1": 62, "align2": 62, "timings": [97.1875, 2000.47, 95.9375, 97.2656, 109.062, 93.75] }, { "length": 2016, "align1": 0, "align2": 0, "timings": [91.4062, 2033.28, 89.0625, 91.0156, 112.109, 88.6719] }, { "length": 2016, "align1": 63, "align2": 0, "timings": [160.391, 2033.2, 160.156, 159.766, 156.016, 159.922] }, { "length": 2016, "align1": 0, "align2": 63, "timings": [153.828, 2033.59, 153.672, 152.812, 155.547, 153.125] }, { "length": 2016, "align1": 63, "align2": 63, "timings": [97.6562, 2033.36, 99.7656, 98.9062, 112.031, 95.9375] }, { "length": 65536, "align1": 0, "align2": 0, "timings": [3828.59, 65411, 4022.66, 3822.11, 4202.11, 4146.88] }] } } } diff --git a/sysdeps/aarch64/multiarch/Makefile b/sysdeps/aarch64/multiarch/Makefile index aa179c4..57ffdf7 100644 --- a/sysdeps/aarch64/multiarch/Makefile +++ b/sysdeps/aarch64/multiarch/Makefile @@ -1,4 +1,4 @@ ifeq ($(subdir),string) -sysdep_routines += memcpy_generic memcpy_thunderx memcpy_falkor \ - memmove_falkor memset_generic memset_falkor +sysdep_routines += memcpy_generic memcpy_thunderx memcpy_thunderx2 \ + memcpy_falkor memmove_falkor memset_generic memset_falkor endif diff --git a/sysdeps/aarch64/multiarch/ifunc-impl-list.c b/sysdeps/aarch64/multiarch/ifunc-impl-list.c index f84956c..e55be80 100644 --- a/sysdeps/aarch64/multiarch/ifunc-impl-list.c +++ b/sysdeps/aarch64/multiarch/ifunc-impl-list.c @@ -25,7 +25,7 @@ #include /* Maximum number of IFUNC implementations. */ -#define MAX_IFUNC 3 +#define MAX_IFUNC 4 size_t __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, @@ -40,6 +40,7 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, /* Support sysdeps/aarch64/multiarch/memcpy.c and memmove.c. */ IFUNC_IMPL (i, name, memcpy, IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_thunderx) + IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_thunderx2) IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_falkor) IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_generic)) IFUNC_IMPL (i, name, memmove, diff --git a/sysdeps/aarch64/multiarch/memcpy.c b/sysdeps/aarch64/multiarch/memcpy.c index 3efea2c..b94c655 100644 --- a/sysdeps/aarch64/multiarch/memcpy.c +++ b/sysdeps/aarch64/multiarch/memcpy.c @@ -30,6 +30,7 @@ extern __typeof (__redirect_memcpy) __libc_memcpy; extern __typeof (__redirect_memcpy) __memcpy_generic attribute_hidden; extern __typeof (__redirect_memcpy) __memcpy_thunderx attribute_hidden; +extern __typeof (__redirect_memcpy) __memcpy_thunderx2 attribute_hidden; extern __typeof (__redirect_memcpy) __memcpy_falkor attribute_hidden; libc_ifunc (__libc_memcpy, @@ -37,7 +38,9 @@ libc_ifunc (__libc_memcpy, ? __memcpy_thunderx : (IS_FALKOR (midr) ? __memcpy_falkor - : __memcpy_generic))); + : (IS_THUNDERX2 (midr) || IS_THUNDERX2PA (midr) + ? __memcpy_thunderx2 + : __memcpy_generic)))); # undef memcpy strong_alias (__libc_memcpy, memcpy); diff --git a/sysdeps/aarch64/multiarch/memcpy_thunderx.S b/sysdeps/aarch64/multiarch/memcpy_thunderx.S index 4f6921d..de494d9 100644 --- a/sysdeps/aarch64/multiarch/memcpy_thunderx.S +++ b/sysdeps/aarch64/multiarch/memcpy_thunderx.S @@ -74,11 +74,13 @@ #if IS_IN (libc) -# undef MEMCPY -# define MEMCPY __memcpy_thunderx -# undef MEMMOVE -# define MEMMOVE __memmove_thunderx -# define USE_THUNDERX +# ifndef USE_THUNDERX2 +# undef MEMCPY +# define MEMCPY __memcpy_thunderx +# undef MEMMOVE +# define MEMMOVE __memmove_thunderx +# define USE_THUNDERX +# endif ENTRY_ALIGN (MEMMOVE, 6) @@ -180,7 +182,7 @@ L(copy96): .p2align 4 L(copy_long): -# ifdef USE_THUNDERX +# if defined(USE_THUNDERX) || defined (USE_THUNDERX2) /* On thunderx, large memcpy's are helped by software prefetching. This loop is identical to the one below it but with prefetching @@ -194,7 +196,11 @@ L(copy_long): bic dst, dstin, 15 ldp D_l, D_h, [src] sub src, src, tmp1 +# if defined(USE_THUNDERX) prfm pldl1strm, [src, 384] +# elif defined(USE_THUNDERX2) + prfm pldl1strm, [src, 256] +# endif add count, count, tmp1 /* Count is now 16 too large. */ ldp A_l, A_h, [src, 16] stp D_l, D_h, [dstin] @@ -204,9 +210,13 @@ L(copy_long): subs count, count, 128 + 16 /* Test and readjust count. */ L(prefetch_loop64): +# if defined(USE_THUNDERX) tbz src, #6, 1f prfm pldl1strm, [src, 512] 1: +# elif defined(USE_THUNDERX2) + prfm pldl1strm, [src, 256] +# endif stp A_l, A_h, [dst, 16] ldp A_l, A_h, [src, 16] stp B_l, B_h, [dst, 32] diff --git a/sysdeps/aarch64/multiarch/memcpy_thunderx2.S b/sysdeps/aarch64/multiarch/memcpy_thunderx2.S index e69de29..8501abf 100644 --- a/sysdeps/aarch64/multiarch/memcpy_thunderx2.S +++ b/sysdeps/aarch64/multiarch/memcpy_thunderx2.S @@ -0,0 +1,27 @@ +/* A Thunderx2 Optimized memcpy implementation for AARCH64. + Copyright (C) 2018 Free Software Foundation, Inc. + + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* The actual code in this memcpy and memmove is in memcpy_thunderx.S. + The only real differences are with the prefetching instructions. */ + +#define MEMCPY __memcpy_thunderx2 +#define MEMMOVE __memmove_thunderx2 +#define USE_THUNDERX2 + +#include "memcpy_thunderx.S" diff --git a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h index c646f9d..cde655b 100644 --- a/sysdeps/unix/sysv/linux/aarch64/cpu-features.h +++ b/sysdeps/unix/sysv/linux/aarch64/cpu-features.h @@ -41,6 +41,11 @@ #define IS_THUNDERX(midr) (MIDR_IMPLEMENTOR(midr) == 'C' \ && MIDR_PARTNUM(midr) == 0x0a1) +#define IS_THUNDERX2PA(midr) (MIDR_IMPLEMENTOR(midr) == 'B' \ + && MIDR_PARTNUM(midr) == 0x516) +#define IS_THUNDERX2(midr) (MIDR_IMPLEMENTOR(midr) == 'C' \ + && MIDR_PARTNUM(midr) == 0xaf) + #define IS_FALKOR(midr) (MIDR_IMPLEMENTOR(midr) == 'Q' \ && MIDR_PARTNUM(midr) == 0xc00)