From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3068 invoked by alias); 25 Oct 2016 00:16:19 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Received: (qmail 3005 invoked by uid 89); 25 Oct 2016 00:16:18 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Speed, 1556, 1976, 2086 X-HELO: NAM02-SN1-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Message-ID: <1477354555.8523.78.camel@caviumnetworks.com> Subject: [PATCH] Speed up math/test-tgmath2.c From: Steve Ellcey To: Date: Tue, 25 Oct 2016 00:16:00 -0000 Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: BY1PR0501CA0016.namprd05.prod.outlook.com (10.162.139.26) To BLUPR0701MB1060.namprd07.prod.outlook.com (10.160.35.147) X-MS-Office365-Filtering-Correlation-Id: a73a7419-31a4-4c1a-dff2-08d3fc6c1a2c X-Microsoft-Exchange-Diagnostics: 1;BLUPR0701MB1060;2:l8XNqzD+OKu1K3Gw4+ylHLEIB73/WJyWsgHa1S7pEOt/QmMis4RynlBj37mY4uTcmbE5YWQ5KLUb1VyeRWHwUwSSsoTK8YnwxZPZj1AP/R3dQZ3ufYn9/Wx8DKX0OELKI2YcsWzGe1DwhKUWucFkXSmvOH3HIXmmkDBYkcSUqGmaFeFr/TTVwfsgQUEW0fWvryOhB2JX7f9Jf5oijsylbw==;3:sGszjfDqkKRZK7hcemtotoQSzaE8eImy1ImtUmZeMncFfpnpF1pa8hfBtQoZP9ZHrr3d2KQBQWFR7hKgLtKsM0YO0uvjyxmoQOP1Wjs0mU6ltkPTS3k3SuS2TsxEvnXKtpdzM0iMHNeK7lZPq4YZWQ==;25:5IIlYCCwI0dgaKxOrIarIL/0Wo+CrVFTXYd29DeZzdYXsVdNFXgvbqloMu7SWll6D6KDiJU0sUIKOj1U4FgMLzdhAJC90TACJVeL4q9hrWQWdUtQ0vmQzsBPXXWSz4Wx3b90B6yPGKOSoXjue3XmMbub6H8cDXwrZ4/7pn8lOYn6geGFXbW6//ai44BKcQhK9ZxfnByQdyJKZS3VbORhH6ujotvvcQgn1RmkZ4PcE5PqjozNhpMLUBbyx+SfWIiIu+2W/bsvw64IDPPQ7x9PwtGkfiubxQgOP3rxy9oIippYRdy8IBSLanW/zsE4RwzSNIwhUvHn/yKfzcyscTnAWOw9pMSC0gsdMfbTyqq4MpPquk4I64ZNgX8FbzdHFmrL2YQhDgXat/PapWSlZOPBpBHF2XtBdk7PKBKcNwpxPdnUDBvPSXnmhwzWP0+067es X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0701MB1060; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0701MB1060;31:zE0TXXVRWADvc8dW0DuFzL1veYnpJY+TSDGAjqUlwYX+5d8qiWsfScDUULy3oiuj+onMsago/aiq9tP6Bdl8wGdNAVe79OTrhHACiq8tyUER1Wp29atfjEm41e+n4chrKGK0SlCtmYU7oTggC6jhLpbRywnLuxqTXxmyqWaEa5ioa5XbgvLkyqnd6jHwUoO8OyMrt9IuA6m3IvchgaF5AgV+rO4Ww7QbKRm7o67NnSC7F39giE2fJ1ydWCQXbY8dOtSzkyEEmcX8iGBiTLJiyA==;20:yCflDmULhqiX0UqlVXibLoBbLkOWyAvYGpDf5SqtkANd8tEZ/JitSCmK+WM9Eff15WiB33kDn7uC8wSvtus5MZWAMBQyk1MOwDak2iZNXWkv9vyFPtDhQUtWVb7baPusntajsDuKUU/bVRtZ4yN7mc30Y7p9dA1KR5UCz21Ldjg2UHXMuoIhvusdEr42NhclBkX3Kadjw8PqQnB8kBvsIvF9+XQlOuGDkhlW7y1Zvh5XNbmG+3K7FLJeLx02XqXm+OGqjuGC3zeT+DNxY9Xjn/sIVCe8qFIADFpsU+8Guy0vqSUteVyxrMeyIQgZ0OPPVNXmv/ZmkEkhPLtDUYUjNLSnViO/WXxrSdC6npvKZAKFFM0M49Wn/JtELm42nmU9OjE8JrDaXpj13lG/Brc9UpeWvfRcj2mIT11u79KrTTWpiSszaxFmpp/lTXWDnwyIXikULBP+9n5HMc8CfN+KxlQegBGWChAxS6S1U42eWq31/lYcqzvAtVGb/LllalvCFh8CX5f2JEwx2Cah6xM4gr5xesln8fqIwgK9D+yCnWRnjMT+ZIADxBuQ06c/5rJm+FdRJw19AM9j2ZQaU1R1z9C8Kv3Io3l8tLIbz64Nja0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001);SRVR:BLUPR0701MB1060;BCL:0;PCL:0;RULEID:;SRVR:BLUPR0701MB1060; X-Microsoft-Exchange-Diagnostics: 1;BLUPR0701MB1060;4:iQ/z1iHU8w+NKvmLbnDS9UKrdGHAvIoKJrnLmhrzbR1ONCCwelbGqS4msAl2l8dL60JVReYOoYMynmhDCdZvZWmFOkBOqlPucKZ//FzgA/rId99kKvCtipQoWOXhbmX8HqfdQojRTImCmwLfXhXrX5Kj4AIqatFdzy1P71RSnnNCPUqFd5bSKw6kjGuv1Rv4hrVKvfXRBcGakY9HWJeRjhBqjVb+3Q5Ux1w7BOBV80i74sjNmWgqExbM2Iv43w5dapu1+sNPgCth9YnwpHjEY9yZSfkPYb7gyL7rDDVs5DZIzRbjNpK/h2hBCfBs1QSrBh2FmC/1fpNq3aT3E+SydyuXpQdrvR0LFKVserkgTuKf+fdBQr2hwSPLSGMLJyJlRwb05//Nc/xxGLvTBLgM9Q== X-Forefront-PRVS: 01068D0A20 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(377424004)(189002)(77096005)(189998001)(50986999)(107886002)(103116003)(101416001)(15975445007)(110136003)(2351001)(92566002)(229853001)(4001150100001)(69596002)(450100001)(105586002)(106356001)(42186005)(5660300001)(53416004)(50226002)(97736004)(3846002)(68736007)(6116002)(19580405001)(19580395003)(586003)(36756003)(305945005)(50466002)(7846002)(7736002)(23676002)(81166006)(8676002)(33646002)(2906002)(6666003)(66066001)(2870700001)(81156014)(6916009)(42882006)(47776003)(5820100001)(99106002);DIR:OUT;SFP:1101;SCL:1;SRVR:BLUPR0701MB1060;H:sellcey-lt.caveonetworks.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTFVQUjA3MDFNQjEwNjA7MjM6MlRwSy9NTjB5QWw5UXBvd041bUNmNnVT?= =?utf-8?B?bHdRaFB5Tk93bnFpQ1d0N0tRWnZCcXB4ZC83ZHZSVERTRUpaZGFyUmMraW5r?= =?utf-8?B?NVk0b01MZkZxdnlmeVgydTF3V0ZiNlZsS1RXZllZZVRreTA0TEJkdnArcEsx?= =?utf-8?B?UGVGelF0S0E0Z1lHSUJ5UjVPaVRraXJsVlRVU2FTbHNiRXBCbWkrUkZDMHIy?= =?utf-8?B?bVBod2hVenJ5ZkFQbWVWZlB1UCtjY0JFUWt2YlUzT050cGgxbXppR0xQWVVZ?= =?utf-8?B?eUxMOFRQaWpRTnJmbVl1aHFvS1hqNW4rYXAxOEI5V2p6ekw5SWFmSVczVTJE?= =?utf-8?B?MW1BK0NFY3hNcjliK0c3T0ZxTHVUNmtlMWpCZUpneXd3NEVGWnlobmlsOWVi?= =?utf-8?B?bHFqeWlEcjlyTjR4RVVFWEF3R1Eyc09nMi81QWV1TmhBS3NyRUE3Q2E1ZEdz?= =?utf-8?B?SUVwODJFa3hKeW5SbzVYTzMyV0RwbnRmOGpSTFFOaGhIS3FZdDNKaUNWRkRB?= =?utf-8?B?Z0M2d2ZxQThkbzJHdjRYSmZBQ1JJNmYzcU01VUZNSE1kNlhXVmQrM3p4dU1l?= =?utf-8?B?Tkc5eVN0bkRWczZVZmIwN3EwSGRWRzVrMzlaWkF0cGhYRXI3R2lyelBnRFhi?= =?utf-8?B?dW10b3NNdmlTUXFnM2dHQ2pRTkxjMSt5MmcvSTYxWnpkNktlaWY2OW5OYStk?= =?utf-8?B?Z3JjRkhER2hnbHdYSGF0TVZnS0M3OTFONlVkV0VPSEpGeDcrVHJQc1l3Z0d6?= =?utf-8?B?UkllWnZRaWF5VUJobVE0cGlwUHZka05qaTduQ0NKTkJKVlErRnRzaTcwUWha?= =?utf-8?B?aVVoa2hpZkJpMHUvcC9EbU1MdmlwbUd4aHV6NUpSN3Y5Y2QrVlM5MkJ4UmNB?= =?utf-8?B?S3JmVVVaV0ZXRTZFMEI2Rmg0UjJidVl4S3VJdnBZWWdnTUdjWXNqc2dzZzha?= =?utf-8?B?SGR1eWFPNnFVSnBseXdTY091cC9kbGZKZnYrTmUxV01IVlBFNUFFYlNzcUQw?= =?utf-8?B?VlBSQ3BkaFBEalh4YkpSMkFpTnhmWG1mcDJld2FnR040MW9CS3Y1MjlDTDFI?= =?utf-8?B?aUJPem11cUZHM2oyeVFRSUJJSS9ENS9NMUVtZFVjM1NFbmI5elRxZUQvUHZy?= =?utf-8?B?OG5Ka1pMR3NvRmJ4Z1NPYmpJMkhTZXBzZnZndUcwbUxTeVcxU095c1BwNjJj?= =?utf-8?B?WnpQTFhtUlEwTG5sTzFCWTYzdTRXRTlIMWZSeTg1QnhvN21lanloL2Rzb3Qy?= =?utf-8?B?QU1vNUhWUjkzZW5JWHo0amxiNUdJMmJ0TE1ndXphUStFeE1wTm45RndxNXhR?= =?utf-8?B?b0ZlS3lobmpjQUtqRXo5UlF6RFRJeE5CdVp4aWRHTHZNdXYzNVJ4bEhBR1Q5?= =?utf-8?B?eFUyWWhzT2xDQlRPN2Z0ckFJbEpub1A0V3dzMHkyVjVNYUFFN2RKWnZRc0hh?= =?utf-8?B?ZzdQWVNzNGZIeEtEOG1aL0s2SmtzdjdidFNycENISGxhWW43Mm80YkNRT3ZI?= =?utf-8?B?aHVGQk1hZS96Z25OM0J3RVJsSm00VlVVeDBScHE5UjlnVG9veUVlZ2YrQzFO?= =?utf-8?B?bDExL1RlMkZQVjhHSGdtSHFQUHU4dFhOODArQjJLakFISWZZRlR0ektpdVpr?= =?utf-8?B?VEFtcXFsNlVlRHdpSllrUEFJMi9jbUlob1l2LzNwVUJPZGt4T0FVRDNPYW5B?= =?utf-8?B?N0NpQ3M4b2VJbnBHZGFyeWR2ZllFSzdTWDN4TTVsNXZXQjVTYUwvZlpVWEVN?= =?utf-8?B?Q1lVbUJWOFBpcUkvQzZTY0hRPT0=?= X-Microsoft-Exchange-Diagnostics: 1;BLUPR0701MB1060;6:bG+L37tvfo95RXXuzAPJsDg2EbrobDPm6v7uO6TPgayun410CuDxWMFDjoq2xx8zSJljXOUmmJN9hdQz/d3lHtAcB/Z7xUKqVEuI+X8n2El/AUKx3Ua11EnUrExd1hsLMQqAf4L+ntKs+ERWiAHJfUzO/VwoAHM9JqJAFXkm5N5op+z/5nTHOj0gWQ5Aov4zlvbwyP7Ku0QPZTWhYoADwQ5+dURB5MyyULgv4XX+fbEC77acJRwOubETuGEbJ2T+lndjN8OjYNcSq+VQJv/gAXdaWH0VwpAXQ7SFENzErtTEcGDb6H48oj+mYVqN5uMz;5:RTJkAnE7PkBFOtB/nyDt4RHYLheT6/W3uau3HKPuEqW8Kd8S4LGt9T+2uLO9bmSDLg3CXBdr9EBP7YclsA3ndJmmU8cd7Y9NYmyXMxKkNe6dWJefeEk5tDwlOZspF9eaP/iFCnMBEASwGrotF6CsU6/zDK6C5LCyKLQ+dKZwkUs=;24:LCQlgQx5r4Wa/AUHSNn3/H7OlqTJcGbfiPr7hIVZeNRNrva5tluMmHPuCHEZ428EIxI1+Ez7rMvJrkZUvlFcsHZT/fpJ/fLTY19FhdtFne4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BLUPR0701MB1060;7:N7dzBdSdIaVVoxz0Ts3GL2Mn028+ocf2uDrzDa4ErZehWQqBFjQDHCA5huN1ENlPKMDTo5piffsKZrZ9AC4lc/wAZJpOA+WzkHvGlkuFbS9wWnqS4/HOS0z4dsgJ/uYqAsSxCXzFmWHvDwP1XdpzkitxkX2B9vCqzTrrEZRxEZGXf4PxGTh9UMa1UYYbgAUVJhT9sQf7EqYq/P0ePmqi+Xv1FNLcAWD9OnfrzN5OWx5B5wWR2f8nI4U1kjcaK1s/3bdqLJSkTWRVUEVWG+JRy6OTC/5+sRvdCrrGTZjZm4JjDh9fnHbvVlwPOyAoiNBnW6Z8RJMghVNsIGwhiqhf0WNvNA0ZEFP2FXZml9RG3J8= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2016 00:16:01.2876 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1060 X-SW-Source: 2016-10/txt/msg00407.txt.bz2 The test math/test-tgmath2.c takes a long time to compile with newer versions of GCC due to variable tracking.  There was some discussion a while back about using -fno-var-tracking on this test but that was not considered to be the correct solution, it was thought that breaking up the test into smaller pieces in order to speed up compilation was a better solution.  Here is a patch that does that.  It does not break it up into multiple tests but it breaks up the test function into multiple functions so that there isn't one single giant function that gives the GCC variable tracking phase a fit. On a box where the original version takes 18 minutes to compile using a pre-release GCC 7.0, the modified version compiles in 3 minutes.  GCC 5.4 took about 2.5 minutes on the same machine. Original discussion: https://sourceware.org/ml/libc-alpha/2012-10/msg00430.html Does this seem like a reasonable way to speed up this test? 2016-10-24  Steve Ellcey           * math/test-tgmath2.c: Split up test function. diff --git a/math/test-tgmath2.c b/math/test-tgmath2.c index b376fd6..4d828fe 100644 --- a/math/test-tgmath2.c +++ b/math/test-tgmath2.c @@ -89,12 +89,6 @@ enum  int count;  int counts[Tlast][C_last];   -int -test (const int Vint4, const long long int Vllong4) -{ -  int result = 0; -  int quo = 0; -  #define FAIL(str) \    do \      { \ @@ -138,6 +132,11 @@ test (const int Vint4, const long long int Vllong4)    while (0)  #define TEST(expr, type, fn) TEST2(expr, type, type, fn)   +int +test_cos (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +    TEST (cos (vfloat1), float, cos);    TEST (cos (vdouble1), double, cos);    TEST (cos (vldouble1), ldouble, cos); @@ -155,6 +154,14 @@ test (const int Vint4, const long long int Vllong4)    TEST (cos (Vcdouble1), cdouble, cos);    TEST (cos (Vcldouble1), cldouble, cos);   +  return result; +} + +int +test_fabs (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +    TEST (fabs (vfloat1), float, fabs);    TEST (fabs (vdouble1), double, fabs);    TEST (fabs (vldouble1), ldouble, fabs); @@ -180,6 +187,13 @@ test (const int Vint4, const long long int Vllong4)    TEST (fabs (Vcdouble1), double, cabs);    TEST (fabs (Vcldouble1), ldouble, cabs);   +  return result; +} + +int +test_conj (const int Vint4, const long long int Vllong4) +{ +  int result = 0;    TEST (conj (vfloat1), cfloat, conj);    TEST (conj (vdouble1), cdouble, conj);    TEST (conj (vldouble1), cldouble, conj); @@ -197,6 +211,14 @@ test (const int Vint4, const long long int Vllong4)    TEST (conj (Vcdouble1), cdouble, conj);    TEST (conj (Vcldouble1), cldouble, conj);   +  return result; +} + +int +test_expm1 (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +    TEST (expm1 (vfloat1), float, expm1);    TEST (expm1 (vdouble1), double, expm1);    TEST (expm1 (vldouble1), ldouble, expm1); @@ -208,6 +230,13 @@ test (const int Vint4, const long long int Vllong4)    TEST (expm1 (Vint1), double, expm1);    TEST (expm1 (Vllong1), double, expm1);   +  return result; +} + +int +test_lrint (const int Vint4, const long long int Vllong4) +{ +  int result = 0;    TEST2 (lrint (vfloat1), float, long int, lrint);    TEST2 (lrint (vdouble1), double, long int, lrint);    TEST2 (lrint (vldouble1), ldouble, long int, lrint); @@ -219,6 +248,14 @@ test (const int Vint4, const long long int Vllong4)    TEST2 (lrint (Vint1), double, long int, lrint);    TEST2 (lrint (Vllong1), double, long int, lrint);   +  return result; +} + +int +test_ldexp (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +    TEST (ldexp (vfloat1, 6), float, ldexp);    TEST (ldexp (vdouble1, 6), double, ldexp);    TEST (ldexp (vldouble1, 6), ldouble, ldexp); @@ -230,6 +267,9 @@ test (const int Vint4, const long long int Vllong4)    TEST (ldexp (Vint1, 6), double, ldexp);    TEST (ldexp (Vllong1, 6), double, ldexp);   +  return result; +} +  #define FIRST(x, y) (y, x)  #define SECOND(x, y) (x, y)  #define NON_LDBL_TEST(fn, argm, arg, type, fnt) \ @@ -307,25 +347,82 @@ test (const int Vint4, const long long int Vllong4)    NON_LDBL_CTEST (fn, FIRST, Vcdouble2, cdouble, fnt); \    NON_LDBL_CTEST (fn, SECOND, Vcdouble2, cdouble, fnt);   +int +test_atan2 (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +    BINARY_TEST (atan2, atan2);   +  return result; +} + +int +test_remquo (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +  int quo = 0; +  #define my_remquo(x, y) remquo (x, y, &quo)    BINARY_TEST (my_remquo, remquo);  #undef my_remquo   +  return result; +} + +int +test_pow (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +    BINARY_CTEST (pow, pow);   -  /* Testing all arguments of fma would be just too expensive, -     so test just some.  */ +  return result; +} + +/* Testing all arguments of fma would be just too expensive, +   so test just some.  */ + +int +test_fma_1 (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +  #define my_fma(x, y) fma (x, y, vfloat3)    BINARY_TEST (my_fma, fma);  #undef my_fma + +  return result; +} + +int +test_fma_2 (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +  #define my_fma(x, y) fma (x, vfloat3, y)    BINARY_TEST (my_fma, fma);  #undef my_fma + +  return result; +} + +int +test_fma_3 (const int Vint4, const long long int Vllong4) +{ +  int result = 0; +  #define my_fma(x, y) fma (Vfloat3, x, y)    BINARY_TEST (my_fma, fma);  #undef my_fma + +  return result; +} + +int +test_fma_4 (const int Vint4, const long long int Vllong4) +{ +  int result = 0;    TEST (fma (vdouble1, Vdouble2, vllong3), double, fma);    TEST (fma (vint1, Vint2, vint3), double, fma);    TEST (fma (Vldouble1, vldouble2, Vldouble3), ldouble, fma); @@ -337,7 +434,19 @@ test (const int Vint4, const long long int Vllong4)  static int  do_test (void)  { -  return test (vint1, vllong1); +  return test_cos (vint1, vllong1) +  + test_fabs (vint1, vllong1) +  + test_conj (vint1, vllong1) +  + test_expm1 (vint1, vllong1) +  + test_lrint (vint1, vllong1) +  + test_ldexp (vint1, vllong1) +  + test_atan2 (vint1, vllong1) +  + test_remquo (vint1, vllong1) +  + test_pow (vint1, vllong1) +  + test_fma_1 (vint1, vllong1) +  + test_fma_2 (vint1, vllong1) +  + test_fma_3 (vint1, vllong1) +  + test_fma_4 (vint1, vllong1);  }    /* Now generate the three functions.  */