From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 34800 invoked by alias); 4 Nov 2016 17:22:54 -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 34786 invoked by uid 89); 4 Nov 2016 17:22:53 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Hx-spam-relays-external:15.1.707.6, H*RU:15.1.707.6, test2, Speed X-HELO: NAM01-BY2-obe.outbound.protection.outlook.com Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Message-ID: <1478280156.4630.18.camel@caviumnetworks.com> Subject: Re: [PATCH] Speed up math/test-tgmath2.c From: Steve Ellcey To: Date: Fri, 04 Nov 2016 17:22:00 -0000 In-Reply-To: <1477354555.8523.78.camel@caviumnetworks.com> References: <1477354555.8523.78.camel@caviumnetworks.com> Content-Type: text/plain; charset="UTF-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: CY1PR1101CA0021.namprd11.prod.outlook.com (10.169.17.31) To DM2PR0701MB1067.namprd07.prod.outlook.com (10.160.26.20) X-MS-Office365-Filtering-Correlation-Id: 71e7ed78-5e3b-4171-c7a8-08d404d72e0a X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1067;2:IeegMI+X+FeF7H/wnVhcFsT53YE0SQTUiyGT9LKyE1PSGUZRdGTO3yNvYuxqdTERyYlNCM6q0DDnveK54GhpMJ1/SS+SKFONXYeUjWCy95zfpLOwibBqp3CkiutJHs0EuqzQ9HakY41S5kPU72AIzxpKSSsmrfCwP6Kw49SJO7q1J7nCGe8akTIUo1ZmMhAHH600zwSyT/YLX3zLwu+tTA==;3:NERfXwnFmtnha9t7XTQiaYsU4uZu/TfqM4AMBbqvnFOhGBzX/nGjBEMGga3m0yt9nm9hlHbyeVC98nm1KXbggqcDZho5+4A89G/0VVka0QAVycKJX/Tc1OqQHbuVoR9YzX+TL8jCyq/mrXelH1Z26g==;25:eZ4VZVjvVgRXA8bpN5ufk62KysY1mVIGQymD5RxLivxL0NXEqrt2LEmxWh0cH4Q4GsvamZaeOQ1drZKBdDc9YBQJdVcY63AfQZAtPQ4VluZ29VtyAjANwwT5xhmcbxIxKkH5JnK80SeZcvRO1a1odzj4YGqVofYX2YDwO8C1mD+JhXF8Cq9G907bj8g8AnxjA8h1yn4f1Q6ui78Q0Pa3fjIKqh9ntldfqySvjPgQZBw6t17HushyaPHneutqGZG4HQ97GSiEbtX/oZNnTL7BfO0+9qAkmqaMtutLbkFC6VEwkUNrwUVI8ULySQZAluc2sqL7JUZ6vT2cBBAV+k8bsGnurIAB7SKr2eY6JYSaL1eCEYNoxXbKaH5361nKbC1IyzEt5lpWyV6RL6033bW1x7oCcoqUm9dn5VOSqO6CY08ZicD7B50jfjbLIhWzPGh9 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0701MB1067; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1067;31:zOFqU5UWF6/ZFqXKrXzNYbEJoEWlPfg7J9oudGY8cOQkYZxTsWSkWac7Tq6THCgJZbCZ8fVSuFbjpynLo0MDc2tj6sE5kAkWt2mh4zyCbaA7y4/d9b1py2g+9murlOFwgIi97URUeZNbSCU3JtB2M4PJrVpZ78yXa7qlEJEXsOf0JOv6dETULxaNMlhPFifBk3tX93stkRnF5kVYaqKNXYGiAXxOI5G3vOz0+cIwxoh2eX38RW33kNge6uZGhfF6;20:xiyMWBHQBAXBPmo/Fk7bPyDHroRE5EGe5jU8xR0FoJDSDfHxrAdmh4//MBTEqyWiE+xSGVo68kEJnbMtpdinmMmJj6QCrqJKglQi5GmEWzWGBWt5Wn5ZSDuRN9gZsUc1U98dttgEMZJcrsj09tf7XVzVjCuN1D6pb1wiSuagjSJGTVBOlWN/k0NMBk4zvnOJx3TfbvM5xL+q1D4jBE/O8ipV584cMmRZAdF3FlHYchAiS+UNHH7J0KLTmS9AUFSc5lBhEVE+eMixq73GtggDCokslNDOefi0+vgaRPpUFI/ESPFIwaEayWERccTaHxHiayFhkQHfXUuHnGpsFaPcKKqIs+vW7Q48nCn2xiW9SkM5LmW/RN5x4vA74MhIZx72w/y9xb3I2w1FwWKOTPXTbXRz0ziNKG6ulSuXO4yiWJl6XQyGsi+poh7LUnJ6h+udunEoKaSGQtI0ftnCj1+7o72aTw7CkbuMlQFOouvf4Fx8EAOB7z9TibEI5qhIlCkWyD9QEW/YgeSxgLcCn05nLFiZpF6HkqnXgtMODUK4LNwTjI2bRwzaAWjvFuRQTcNNmBYimI4ONgxWGulnnPyhJZuphENOHfDCbNbg8j5jx6o= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:DM2PR0701MB1067;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0701MB1067; X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1067;4:wx3NJilLoP7TCxY8sg6Vr0UPuoG7VoQvdxgQzJUgZ6LOqJliS+QGZRO73LgVokYId9erygV4hb/MWAyvQtckwWFbDlvFm10gFpFfRQQh+EPt8Q8blYbsdFmSm7nTJwHhWC6cI/Lp+PAHdhN/PsjSUF7Ut+lniyA9nhgbWUWztOk/650B8KMPHl3rty0PQW7z9TBz0jzv9jYjjQ6vKdA3U0qcXA5sa8wlWyRZacEHwrKLHXxwtnNSmCwGtT/vq02Q8Lw0lGgFhmIDDGqUB8rDEZJUAAYzS3rQg4njIdqGsP6GaTQIIWvkxIwjTdlNyzauE1lTRcYDY5R66QzdsKIXYMCRYDMJ/ml3YKKIthaw6Xzyuh8V1hA+J+p4TzAU54P2yoOiWHi1qUx0ual9jafJAg== X-Forefront-PRVS: 01165471DB X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(199003)(24454002)(377424004)(189002)(586003)(33646002)(5660300001)(3846002)(77096005)(6116002)(97736004)(68736007)(450100001)(4001150100001)(15975445007)(101416001)(50466002)(23676002)(42882006)(110136003)(6666003)(2950100002)(6916009)(103116003)(189998001)(107886002)(50226002)(92566002)(5820100001)(81166006)(36756003)(19580405001)(66066001)(19580395003)(47776003)(2870700001)(2906002)(105586002)(2351001)(106356001)(76176999)(50986999)(8676002)(53416004)(305945005)(7846002)(42186005)(7736002)(81156014)(69596002)(99106002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM2PR0701MB1067;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?MTtETTJQUjA3MDFNQjEwNjc7MjM6Z2xLWVZDRjVLeDdqZEpxZldvSmNvYWo3?= =?utf-8?B?ZVI5RUJLK0JEZzgyTDlFaUlIdVZINEJjU1VESDB4QjFvQ3l3L3FZUFR2VnMx?= =?utf-8?B?RGlBUUNuY01EL0ovM2gvZ0ViWWNoTlRtRnNRcEtnRWt6YjJIYSt1WVJRNERu?= =?utf-8?B?Qm9jNjhOMWpGbTNoRUZrVzdlOVpGRDJwcVZGaUtCZHpXSzluUktXL3kyWHdF?= =?utf-8?B?VWR0cXdxTk14N2V5ZEpRVmxpbVZWSC9MR2dGckNlbWs4cHRycWh0L2hIRlFY?= =?utf-8?B?R3pMdlkwM01kWS9YdE5PQTRjUGpmbnJ2OFRaR0dhdXpSRFNPOThORzc3eTB4?= =?utf-8?B?bFJIZnRVYm9tSVJvYks4eFM2QXI0ZTJDV3RtQzJMN3dVSzdvVy9YUEhJYndr?= =?utf-8?B?bzN5a3g5QlR3eFI3M1FjUFlQY0phMEdrdzlDTDV0eFJJNU94eStlMlgyNVBU?= =?utf-8?B?cjBRTXduZDhpZmdYNzd3STN0YUlLN2xGZEpRa1FURGozcGFITjU0NG5lWnR5?= =?utf-8?B?OFptenFjRGdKN2pxaTFFN3hCZjByeXRWZGRPUEdEVk1aZ2NHS25ET0lGd1Zt?= =?utf-8?B?UDNNaXZMNlM1Tld1dkV3bFBwNDgrRmJrdE5hQVNMaE80VTRCaXZpc1dLang0?= =?utf-8?B?MVVtazNiRVo5Z1l2TzQyOWI4WTVCbCtHZ3lnQmNjbmJHdWRZalZidnlWMURp?= =?utf-8?B?SFhFMHpFRllYYmZQbnRvVytqc3djdFp3c3p4eFk3OFlVOU5JbnMwVUNuSmdK?= =?utf-8?B?b1J2akplVitrOGphMU1mQmtDTHJQQlhLMG9tTytlUHI1NnBQL1JlZ0I3V1dq?= =?utf-8?B?Y2xtb1p2M2c1Q3Q2VzhyYWVCQ0piMnp5Vm9kbkRSK3dUa1lFSHVuWG14Qmly?= =?utf-8?B?bDNQdE1QV2xBOTdmSEVoWituMTE1NGJYYW90L256SUNUU2dmODJwQk9DaGt1?= =?utf-8?B?OUJ2R0xpUUV2YXd5aTZCVE5HS2ViK1NTRWxqV3A3V3ZIZXhxd1MyWThvdUsz?= =?utf-8?B?TnBSVXNqSFNDV3ZicGdLYmJ4cjBBRWMyNmI2Qm1BUUxwOFhNcVgvbkM5UGov?= =?utf-8?B?TVg5S3pDaEJyb2hKa2lmd2NrUTd4NVNpNzRPNjNlVCs3cFE0K2tud21IRUx0?= =?utf-8?B?ay9yUWpBTjMvZHdqV0pXMk9zcW41U3lnQ3VPUnIvbVZ0UGxqL1JiZk81U3B3?= =?utf-8?B?QWdDYTFld3hEWU0rMFZ3c3pELzNNRGJHZXZoOWViMThjOG5WbHlqcnZ5Rmdk?= =?utf-8?B?aHlGbHQ4T0dQNVg5T1d0d3Ayck9lRisyY3RSL0xyRkFoWnhmUUlJRnhrQXNy?= =?utf-8?B?Q0x0Z2Q2N2E0WjdjR0oxZ2k4c3g5dUJpcWxiWEk5SnExYkd6eTV2bWFrVGVL?= =?utf-8?B?cm1WSjJDUGp4bjFiSzZSUnluVVJZS3owSmhPZndjSGNzeW9vVm1MTlV3d1Fy?= =?utf-8?B?QjFzc3NoWjFlRHFnL3lUbmNnZWdKRk1zZk43MDEvbzNLbEEwZU5zZVRXZk5a?= =?utf-8?B?b1ZEdnhtS2NVa2JBZ0FQbHpSUHJVMHhCWjNrNmUvLzkyR091YWpDbWJiaWJJ?= =?utf-8?B?M2k2WUdyQlNZcmR2ZFcrcVZjWUlqY2pQSHQyTFg0TFJyb2R5NzlPQllvUDVP?= =?utf-8?B?Y0J6ZXJUQUpYL0JaUGFtSlZnRFl5S2R2MXhubEx0SFhlMUQ2QTYvZ3QvMVRo?= =?utf-8?B?Yjh1bEtpcXE2MFJEUENycThVYzVpeEtXU1NNM2s4Uk1ranRJOEk2dEhkcC9J?= =?utf-8?B?SjhaSHVKQ2tpQXo3VGNFQVdFVzFja0QwbTBVQXFjOTNLVjRDdWhDOWZWZm9X?= =?utf-8?B?d2x3d1JNNFlMOW1scGFER1dJUnBVMm9HUUlnc2RMMWR5YUhKQT09?= X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1067;6:tjgoCq+tqrozROEQiVfm/uNA50QrIf6+JCfzCdNMMU8jTizo0PMHzqAViNiFwrF29tqjvQOteiIbrey/klNlU885aCl841K3X7aXr5KDKvfC4veXyKTvKAXF2CqPQ5pV++3tQi8KjX1AewRiWDXgOo7VxT/xomS7mn6PSHxNF6Jei9zbk+m47xZi7uFiVnq8qusrpv3b6DC/RTenLu51s0yZRqMIKozEQC0TyX3FZIOqMCiMf3XRPsqLSq6YQbqWgHWmlEPLr5GpcX3XTpufkACa/t2tc0qTuEO7f3jQf8j3a0QR2Le6av9ehOwMIgBc;5:8jhGCOj8rLZDremdXng21ZohPtEGTaCzH6ThRJtEs8jcp6wGOK2kOYxzXWbuRkjIzrHTtZCUlirmo0V0jgL9xBAD5eiXagFrbURDNfidpVRjw0VAtCohkwaJrnADBCvTb24/+d+i8Wn66AuviFVbJg==;24:5rYxypP591AUKT4TgHYV8lW0XU5iVy7i46Q8tR+ZsB0FpPOX9Pkmcj54pBuyUYTGkObQ6LPlt8R7sFOaQSRViY6ibEdGnELuUdOtvUbzhxM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM2PR0701MB1067;7:sfRjZH1+dXKbA3Bk6eGBmZFq7lSfmjE592DbKkFcDdc+uz2wu1iTF0ubBC4qFmebQaW2w3MwbpYBNYKdR/98NoNF4X5rwUVvMFc7acoi24Fq8U1EUyJJvLRgDRQ1SyvLeYnB6GXMXnB6eGa0XK4rPke4c3KHHdSJnSuUwtEvjcERdE2R0Z4GochPFUVuSnIJ7dbiqaiVQuQUNO8ZzBY2naAiPJZQ5xrlPMtiuhmYj8R6ByaCUnZ8vqlzo5Tw7uWGq6IZsorj6Sg2BjTX7+cTrb43f3B4nyggvkqIe0y7c3OVvXpOi5FbOfdeOWtvLPAHVNoZhFCgyhPrpDJK4HlsMAfm1mEfnocRRIf2XuLHYgI= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Nov 2016 17:22:40.1109 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0701MB1067 X-SW-Source: 2016-11/txt/msg00187.txt.bz2 Ping on this patch to speed up the compilation of math/test-tgmath2.c when using the latest GCC. Steve Ellcey sellcey@caviumnetworks.com On Mon, 2016-10-24 at 17:15 -0700, Steve Ellcey wrote: > 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.  */