From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 11172C19F28 for ; Wed, 3 Aug 2022 18:45:46 +0000 (UTC) Received: from localhost ([::1]:47242 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJJNJ-00055B-KY for qemu-devel@archiver.kernel.org; Wed, 03 Aug 2022 14:45:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:43862) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJJKG-0003X8-78; Wed, 03 Aug 2022 14:42:37 -0400 Received: from [200.168.210.66] (port=48717 helo=outlook.eldorado.org.br) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJJKC-0005hA-JY; Wed, 03 Aug 2022 14:42:34 -0400 Received: from p9ibm ([10.10.71.235]) by outlook.eldorado.org.br over TLS secured channel with Microsoft SMTPSVC(8.5.9600.16384); Wed, 3 Aug 2022 15:42:28 -0300 Received: from [127.0.0.1] (unknown [10.10.70.45]) by p9ibm (Postfix) with ESMTPS id AC3E38001D1; Wed, 3 Aug 2022 15:42:27 -0300 (-03) Content-Type: multipart/alternative; boundary="------------2NKEAH542shBJedS9fF9ixOC" Message-ID: <59494d8e-1ef5-0c0c-0cf4-38a4e55c3366@eldorado.org.br> Date: Wed, 3 Aug 2022 15:42:27 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [RFC PATCH 1/3] target/ppc: Bugfix fadd/fsub result with OE/UE set Content-Language: en-US To: Richard Henderson , qemu-ppc@nongnu.org Cc: danielhb413@gmail.com, Aurelien Jarno , Peter Maydell , =?UTF-8?Q?Alex_Benn=c3=a9e?= , David Gibson , Greg Kurz , "open list:All patches CC here" References: <20220803122217.20847-1-lucas.araujo@eldorado.org.br> <20220803122217.20847-2-lucas.araujo@eldorado.org.br> <855034e1-2dd3-4b68-3c60-9fd2345b3b55@linaro.org> <077f61c4-8853-0b32-b9b2-9721bcf107cb@eldorado.org.br> <8857690e-2e0c-a67b-f654-972ac5b24e48@linaro.org> From: Lucas Mateus Martins Araujo e Castro In-Reply-To: <8857690e-2e0c-a67b-f654-972ac5b24e48@linaro.org> X-OriginalArrivalTime: 03 Aug 2022 18:42:28.0002 (UTC) FILETIME=[C7EC5020:01D8A768] X-Host-Lookup-Failed: Reverse DNS lookup failed for 200.168.210.66 (failed) Received-SPF: pass client-ip=200.168.210.66; envelope-from=lucas.araujo@eldorado.org.br; helo=outlook.eldorado.org.br X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, HTML_MESSAGE=0.001, NICE_REPLY_A=-0.001, PDS_HP_HELO_NORDNS=0.659, RDNS_NONE=0.793, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" This is a multi-part message in MIME format. --------------2NKEAH542shBJedS9fF9ixOC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 DQpPbiAwMy8wOC8yMDIyIDE1OjE2LCBSaWNoYXJkIEhlbmRlcnNvbiB3cm90ZToNCj4NCj4g T24gOC8zLzIyIDEwOjQ1LCBMdWNhcyBNYXRldXMgTWFydGlucyBBcmF1am8gZSBDYXN0cm8g d3JvdGU6DQo+Pg0KPj4gT24gMDMvMDgvMjAyMiAxMzoxOCwgUmljaGFyZCBIZW5kZXJzb24g d3JvdGU6DQo+Pj4NCj4+PiBPbiA4LzMvMjIgMDU6MjIsIEx1Y2FzIE1hdGV1cyBDYXN0cm8o YWxxb3RlbCkgd3JvdGU6DQo+Pj4+IEZyb206ICJMdWNhcyBNYXRldXMgQ2FzdHJvIChhbHFv dGVsKSIgPGx1Y2FzLmFyYXVqb0BlbGRvcmFkby5vcmcuYnI+DQo+Pj4+DQo+Pj4+IEFzIG1l bnRpb25lZCBpbiB0aGUgZnVuY3Rpb25zIGZsb2F0X292ZXJmbG93X2V4Y3AgYW5kDQo+Pj4+ IGZsb2F0X3VuZGVyZmxvd19leGNwLCB0aGUgcmVzdWx0IHNob3VsZCBiZSBhZGp1c3RlZCBh cyBtZW50aW9uZWQgaW4gDQo+Pj4+IHRoZQ0KPj4+PiBJU0EgKHN1YnRyYWN0ZWQgMTkyLzE1 MzYgZnJvbSB0aGUgZXhwb25lbnQgb2YgdGhlIGludGVybWVkaWF0ZSANCj4+Pj4gcmVzdWx0 IGlmDQo+Pj4+IGFuIG92ZXJmbG93IG9jY3VycyB3aXRoIE9FIHNldCBhbmQgYWRkZWQgMTky LzE1MzYgdG8gdGhlIGV4cG9uZW50IA0KPj4+PiBvZiB0aGUNCj4+Pj4gaW50ZXJtZWRpYXRl IHJlc3VsdCBpZiBhbiB1bmRlcmZsb3cgb2NjdXJzIHdpdGggVUUgc2V0KSwgYnV0IGF0IHRo b3NlDQo+Pj4+IGZ1bmN0aW9ucyB0aGUgcmVzdWx0IGhhcyBhbHJlYWR5IGJlZW4gcm91bmRl ZCBzbyBpdCBpcyBub3QgcG9zc2libGUgdG8NCj4+Pj4gYWRkL3N1YnRyYWN0IGZyb20gdGhl IGludGVybWVkaWF0ZSByZXN1bHQgYW55bW9yZS4NCj4+Pj4NCj4+Pj4gVGhpcyBwYXRjaCBj cmVhdGVzIGEgbmV3IGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgdGhlIHZhbHVlIHRoYXQgDQo+ Pj4+IHNob3VsZCBiZQ0KPj4+PiBzdWJ0cmFjdGVkL2FkZGVkIGZyb20gdGhlIGV4cG9uZW50 IGlmIGFuIG92ZXJmbG93L3VuZGVyZmxvdyANCj4+Pj4gaGFwcGVucywgdG8NCj4+Pj4gbm90 IGxlYXZlIHNvbWUgYXJiaXRyYXJ5IG51bWJlcnMgZnJvbSB0aGUgUG93ZXJJU0EgaW4gdGhl IG1pZGRsZSBvZiANCj4+Pj4gdGhlDQo+Pj4+IEZQVSBjb2RlLiBJZiB0aGVzZSBudW1iZXJz IGFyZSAwIHRoZSBuZXcgZnVuY3Rpb25zIGp1c3QgY2FsbCB0aGUgb2xkDQo+Pj4+IG9uZXMu DQo+Pj4+DQo+Pj4+IEkgdXNlZCAyIHZhbHVlcyBoZXJlIGZvciBvdmVyZmxvdyBhbmQgdW5k ZXJmbG93LCBtYXliZSBpdCdkIGJlIA0KPj4+PiBiZXR0ZXIgdG8NCj4+Pj4ganVzdCB1c2Ug dGhlIHNhbWUgb25lcywgYW55IHRob3VnaHRzPw0KPj4+Pg0KPj4+PiBTaWduZWQtb2ZmLWJ5 OiBMdWNhcyBNYXRldXMgQ2FzdHJvIChhbHFvdGVsKSANCj4+Pj4gPGx1Y2FzLmFyYXVqb0Bl bGRvcmFkby5vcmcuYnI+DQo+Pj4+IC0tLQ0KPj4+PiBBbiBhbHRlcm5hdGl2ZSBJJ3ZlIHRo b3VnaHQgd2FzIHRvIGFsd2F5cyByZXR1cm4gdGhlIHZhbHVlIGFkanVzdGVkIA0KPj4+PiBp ZiBhDQo+Pj4+IG92ZXJmbG93IG9yIHVuZGVyZmxvdyBvY2N1cnMgYW5kIGluIGZsb2F0X3Vu ZGVyZmxvd19leGNwIGFuZA0KPj4+PiBmbG9hdF9vdmVyZmxvd19leGNwIGFkanVzdCBpdCB0 byBpbmYvZGVuLzAgaWYgT0UvVUUgaXMgMCwgYnV0IEkgZGlkbid0DQo+Pj4+IHNhdyBtYW55 IGFkdmFudGFnZXMgdG8gdGhhdCBhcHByb2FjaC4NCj4+Pj4gLS0tDQo+Pj4+IMKgIGZwdS9z b2Z0ZmxvYXQuY8KgwqDCoMKgwqDCoMKgwqAgfCA3NSANCj4+Pj4gKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+Pj4gwqAgaW5jbHVkZS9mcHUvc29mdGZs b2F0LmggfMKgIDIgKysNCj4+Pj4gwqAgdGFyZ2V0L3BwYy9mcHVfaGVscGVyLmMgfCAxMCAr KysrLS0NCj4+Pj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQ0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvZnB1L3NvZnRmbG9hdC5jIGIv ZnB1L3NvZnRmbG9hdC5jDQo+Pj4+IGluZGV4IDRhODcxZWYyYTEuLmE0MDcxMjlkY2IgMTAw NjQ0DQo+Pj4+IC0tLSBhL2ZwdS9zb2Z0ZmxvYXQuYw0KPj4+PiArKysgYi9mcHUvc29mdGZs b2F0LmMNCj4+Pj4gQEAgLTI2OCw2ICsyNjgsOCBAQCB0eXBlZGVmIGJvb2wgKCpmNjRfY2hl Y2tfZm4pKHVuaW9uX2Zsb2F0NjQgYSwgDQo+Pj4+IHVuaW9uX2Zsb2F0NjQgYik7DQo+Pj4+ DQo+Pj4+IMKgIHR5cGVkZWYgZmxvYXQzMiAoKnNvZnRfZjMyX29wMl9mbikoZmxvYXQzMiBh LCBmbG9hdDMyIGIsIA0KPj4+PiBmbG9hdF9zdGF0dXMgKnMpOw0KPj4+PiDCoCB0eXBlZGVm IGZsb2F0NjQgKCpzb2Z0X2Y2NF9vcDJfZm4pKGZsb2F0NjQgYSwgZmxvYXQ2NCBiLCANCj4+ Pj4gZmxvYXRfc3RhdHVzICpzKTsNCj4+Pj4gK3R5cGVkZWYgZmxvYXQ2NCAoKnNvZnRfZjY0 X29wMl9pbnQyX2ZuKShmbG9hdDY0IGEsIGZsb2F0NjQgYiwgaW50IA0KPj4+PiBjLCBpbnQg ZCwNCj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmbG9hdF9zdGF0dXMgKnMpOw0K Pj4+PiDCoCB0eXBlZGVmIGZsb2F0wqDCoCAoKmhhcmRfZjMyX29wMl9mbikoZmxvYXQgYSwg ZmxvYXQgYik7DQo+Pj4+IMKgIHR5cGVkZWYgZG91YmxlwqAgKCpoYXJkX2Y2NF9vcDJfZm4p KGRvdWJsZSBhLCBkb3VibGUgYik7DQo+Pj4+DQo+Pj4+IEBAIC00MDEsNiArNDAzLDE5IEBA IGZsb2F0NjRfZ2VuMihmbG9hdDY0IHhhLCBmbG9hdDY0IHhiLCANCj4+Pj4gZmxvYXRfc3Rh dHVzICpzLA0KPj4+PiDCoMKgwqDCoMKgIHJldHVybiBzb2Z0KHVhLnMsIHViLnMsIHMpOw0K Pj4+PiDCoCB9DQo+Pj4+DQo+Pj4+ICtzdGF0aWMgaW5saW5lIGZsb2F0NjQNCj4+Pj4gK2Zs b2F0NjRfZ2VuMl9leGNwKGZsb2F0NjQgeGEsIGZsb2F0NjQgeGIsIGludCB4YywgaW50IHhk LCANCj4+Pj4gZmxvYXRfc3RhdHVzICpzLA0KPj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBoYXJkX2Y2NF9vcDJfZm4gaGFyZCwgc29mdF9mNjRfb3AyX2ZuIHNv ZnQsDQo+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNvZnRfZjY0 X29wMl9pbnQyX2ZuIHNvZnRfZXhjcCwgZjY0X2NoZWNrX2ZuIHByZSwNCj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZjY0X2NoZWNrX2ZuIHBvc3QpDQo+Pj4+ ICt7DQo+Pj4+ICvCoMKgwqAgaWYgKHhjIHx8IHhkKSB7DQo+Pj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gc29mdF9leGNwKHhhLCB4YiwgeGMsIHhkLCBzKTsNCj4+Pj4gK8KgwqDCoCB9 IGVsc2Ugew0KPj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGZsb2F0NjRfZ2VuMih4YSwg eGIsIHMsIGhhcmQsIHNvZnQsIHByZSwgcG9zdCk7DQo+Pj4+ICvCoMKgwqAgfQ0KPj4+PiAr fQ0KPj4+PiArDQo+Pj4+IMKgIC8qDQo+Pj4+IMKgwqAgKiBDbGFzc2lmeSBhIGZsb2F0aW5n IHBvaW50IG51bWJlci4gRXZlcnl0aGluZyBhYm92ZSANCj4+Pj4gZmxvYXRfY2xhc3NfcW5h bg0KPj4+PiDCoMKgICogaXMgYSBOYU4gc28gY2xzID49IGZsb2F0X2NsYXNzX3FuYW4gaXMg YW55IE5hTi4NCj4+Pj4gQEAgLTE5MjksNiArMTk0NCwzOSBAQCBzdGF0aWMgZG91YmxlIGhh cmRfZjY0X3N1Yihkb3VibGUgYSwgZG91YmxlIGIpDQo+Pj4+IMKgwqDCoMKgwqAgcmV0dXJu IGEgLSBiOw0KPj4+PiDCoCB9DQo+Pj4+DQo+Pj4+ICtzdGF0aWMgZmxvYXQ2NCBRRU1VX1NP RlRGTE9BVF9BVFRSDQo+Pj4+ICtzb2Z0X2Y2NF9hZGRzdWJfZXhjcF9lbihmbG9hdDY0IGEs IGZsb2F0NjQgYiwgaW50IG9lX3N1YiwgaW50IHVlX3N1bSwNCj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmxvYXRfc3RhdHVzICpzdGF0 dXMsIGJvb2wgc3VidHJhY3QpDQo+Pj4+ICt7DQo+Pj4+ICvCoMKgwqAgRmxvYXRQYXJ0czY0 IHBhLCBwYiwgKnByOw0KPj4+PiArDQo+Pj4+ICvCoMKgwqAgZmxvYXQ2NF91bnBhY2tfY2Fu b25pY2FsKCZwYSwgYSwgc3RhdHVzKTsNCj4+Pj4gK8KgwqDCoCBmbG9hdDY0X3VucGFja19j YW5vbmljYWwoJnBiLCBiLCBzdGF0dXMpOw0KPj4+PiArwqDCoMKgIHByID0gcGFydHNfYWRk c3ViKCZwYSwgJnBiLCBzdGF0dXMsIHN1YnRyYWN0KTsNCj4+Pj4gKw0KPj4+PiArwqDCoMKg IGlmICh1bmxpa2VseShvZV9zdWIgJiYgKHByLT5leHAgPiAxMDIzKSkpIHsNCj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIHByLT5leHAgLT0gb2Vfc3ViOw0KPj4+PiArwqDCoMKgwqDCoMKgwqAg ZmxvYXRfcmFpc2UoZmxvYXRfZmxhZ19vdmVyZmxvdywgc3RhdHVzKTsNCj4+Pj4gK8KgwqDC oCB9IGVsc2UgaWYgKHVubGlrZWx5KHVlX3N1bSAmJiAocHItPmV4cCA8IC0xMDIyKSkpIHsN Cj4+Pj4gK8KgwqDCoMKgwqDCoMKgIHByLT5leHAgKz0gdWVfc3VtOw0KPj4+PiArwqDCoMKg wqDCoMKgwqAgZmxvYXRfcmFpc2UoZmxvYXRfZmxhZ191bmRlcmZsb3csIHN0YXR1cyk7DQo+ Pj4+ICvCoMKgwqAgfQ0KPj4+PiArDQo+Pj4+ICvCoMKgwqAgcmV0dXJuIGZsb2F0NjRfcm91 bmRfcGFja19jYW5vbmljYWwocHIsIHN0YXR1cyk7DQo+Pj4NCj4+PiBUaGlzIGlzIGluY29y cmVjdCwgYmVjYXVzZSB0aGUgZXhwb25lbnQgaXMgbm90IGZpeGVkIHVudGlsIHRoZSANCj4+ PiBtaWRkbGUgb2YNCj4+PiByb3VuZF9wYWNrX2Nhbm9uaWNhbC4NCj4+Pg0KPj4+IEkgdGhp bmsgeW91IHNob3VsZCBub3QgYWRkIG5ldyBmdW5jdGlvbnMgbGlrZSB0aGlzLCB3aXRoIG5l dyANCj4+PiBwYXJhbWV0ZXJzLCBidXQgaW5zdGVhZCBhZGQNCj4+PiBmaWVsZHMgdG8gZmxv YXRfc3RhdHVzLCB3aGljaCB3b3VsZCB0aGVuIGJlIGNoZWNrZWQgYXQgdGhlIHBsYWNlcyAN Cj4+PiBjdXJyZW50bHkgc2V0dGluZw0KPj4+IHVuZGVyZmxvdyBhbmQgb3ZlcmZsb3cuDQo+ Pg0KPj4gU28gYWRkIG92ZXJmbG93X2NvcnJlY3Rpb24gYW5kIHVuZGVyZmxvd19jb3JyZWN0 aW9uIGluIA0KPj4gJ3BhcnRzTih1bmNhbm9uX25vcm1hbCknIHNvIHRoYXQ6DQo+Pg0KPj4g aWYgKGV4cCA+PSBleHBfbWF4KSB7DQo+PiDCoMKgwqDCoCBpZiAob3ZlcmZsb3dfY29ycmVj dGlvbiAhPSAwKSB7DQo+PiDCoMKgwqDCoMKgwqDCoMKgIGV4cCAtPSBvdmVyZmxvd19jb3Jy ZWN0aW9uOw0KPj4gwqDCoMKgwqAgfQ0KPj4gfQ0KPj4NCj4+IEFuZCB0aGUgZXF1aXZhbGVu dCBmb3IgdW5kZXJmbG93LCBvciBhIGJvb2wgcHBjX292ZXJmbG93X2VuYWJsZSB0aGF0IA0K Pj4gdXNlcyBhIGZpeGVkIHZhbHVlIGxpa2U6DQo+Pg0KPj4gaWYgKGV4cCA+PSBleHBfbWF4 KSB7DQo+PiDCoMKgwqDCoCBpZiAocHBjX292ZXJmbG93X2VuYWJsZSkgew0KPj4gwqDCoMKg wqDCoMKgwqDCoCBleHAgLT0gKChmbXQtPmV4cF9iaWFzICsgMSkgKyAoZm10LT5leHBfYmlh cyArIDEpLzIpOw0KPj4gwqDCoMKgwqAgfQ0KPj4gfQ0KPj4NCj4+IChhbmQgdGhlIGVxdWl2 YWxlbnQgZm9yIHVuZGVyZmxvdykgPw0KPg0KPiBTb21ldGhpbmcgbGlrZSB0aGF0Lg0KPg0K PiBJIHdvdWxkIHN1Z2dlc3QgcHJlLWNvbXB1dGluZyB0aGF0IGFkanVzdG1lbnQgaW50byBm bXQsIHZpYSBGTE9BVF9QQVJBTVMuDQo+IE5hbWluZyBpcyBhbHdheXMgaGFyZCwgYnV0IGhv dyBhYm91dCBleHBfcmVfYmlhcz8NCj4NCj4gVGhlIGZsYWcocykgc2hvdWxkIG5vdCBjb250 YWluICJwcGMiIGluIHRoZSBuYW1lLsKgIEJ1dCBwZXJoYXBzDQo+DQo+IMKgIHMtPnJlYmlh c19vdmVyZmxvdw0KPiDCoCBzLT5yZWJpYXNfdW5kZXJmbG93DQoNCnJlYmlhc18qIHNvdW5k cyBnb29kIHRvIG1lLg0KDQpBbHNvIEkgaW1hZ2luZSB0aGF0IHRoZXNlIGJvb2xzIHdvdWxk IGJlIHNldCBieSBtdGZzZiwgbXRmc2ZpLCBtdGZzYjAgDQphbmQgbXRmc2IxLCBpbiB3aGlj aCBjYXNlIGl0J2QgbWFrZSB0aGVzZSBwYXRjaGVzIHNpZ25pZmljYW50bHkgc2hvcnRlci4g DQpJJ2xsIHNlbmQgYSB2MiB3aXRoIHRoZXNlIGNoYW5nZXMNCg0KPg0KPg0KPg0KPiByfg0K LS0gDQpMdWNhcyBNYXRldXMgTS4gQXJhdWpvIGUgQ2FzdHJvDQpJbnN0aXR1dG8gZGUgUGVz cXVpc2FzIEVMRE9SQURPIA0KPGh0dHBzOi8vd3d3LmVsZG9yYWRvLm9yZy5ici8/dXRtX2Nh bXBhaWduPWFzc2luYXR1cmFfZGVfZS1tYWlsJnV0bV9tZWRpdW09ZW1haWwmdXRtX3NvdXJj ZT1SRCtTdGF0aW9uPg0KRGVwYXJ0YW1lbnRvIENvbXB1dGHDp8OjbyBFbWJhcmNhZGENCkFu YWxpc3RhIGRlIFNvZnR3YXJlIFRyYWluZWUNCkF2aXNvIExlZ2FsIC0gRGlzY2xhaW1lciA8 aHR0cHM6Ly93d3cuZWxkb3JhZG8ub3JnLmJyL2Rpc2NsYWltZXIuaHRtbD4NCg== --------------2NKEAH542shBJedS9fF9ixOC Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable


On 03/08/2022 15:16, Richard Henderson= wrote:

On 8/3/22 10:45, Lucas Mateus Martins Araujo e Castro wrote:

On 03/08/2022 13:18, Richard Henderson wrote:

On 8/3/22 05:22, Lucas Mateus Castro(alqotel) wrote:
From: "Lucas Mateus Castro (alqotel)"= <lucas.araujo@eldorado.org.br>

As mentioned in the functions float_overflow_excp and
float_underflow_excp, the result should be adjusted as mentioned in the
ISA (subtracted 192/1536 from the exponent of the intermediate result if
an overflow occurs with OE set and added 192/1536 to the exponent of the
intermediate result if an underflow occurs with UE set), but at those
functions the result has already been rounded so it is not possible to
add/subtract from the intermediate result anymore.

This patch creates a new function that receives the value that should be
subtracted/added from the exponent if an overflow/underflow happens, to
not leave some arbitrary numbers from the PowerISA in the middle of the
FPU code. If these numbers are 0 the new functions just call the old
ones.

I used 2 values here for overflow and underflow, maybe it'd be better to
just use the same ones, any thoughts?

Signed-off-by: Lucas Mateus Castro (alqotel) <lucas.araujo@eldorado.org.br>
---
An alternative I've thought was to always return the value adjusted if a
overflow or underflow occurs and in float_underflow_excp and
float_overflow_excp adjust it to inf/den/0 if OE/UE is 0, but I didn't
saw many advantages to that approach.
---
=C2=A0 fpu/softfloat.c=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0 | 75 +++++++++++++++++++++++++++++++++++++++++
=C2=A0 include/fpu/softfloat.h |=C2=A0 2 ++
=C2=A0 target/ppc/fpu_helper.c | 10 ++++--
=C2=A0 3 files changed, 85 insertions(+), 2 deletions(-)

diff --git a/fpu/softfloat.c b/fpu/softfloat.c
index 4a871ef2a1..a407129dcb 100644
--- a/fpu/softfloat.c
+++ b/fpu/softfloat.c
@@ -268,6 +268,8 @@ typedef bool (*f64_check_fn)(union_float64 a, union_float64 b);

=C2=A0 typedef float32 (*soft_f32_op2_fn)(float32 a, float32 = b, float_status *s);
=C2=A0 typedef float64 (*soft_f64_op2_fn)(float64 a, float64 = b, float_status *s);
+typedef float64 (*soft_f64_op2_int2_fn)(float64 a, float64 b, int c, int d,
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0 float_status *s);
=C2=A0 typedef float=C2=A0=C2=A0 (*hard_f32_op2_fn)(float a, = float b);
=C2=A0 typedef double=C2=A0 (*hard_f64_op2_fn)(double a, doub= le b);

@@ -401,6 +403,19 @@ float64_gen2(float64 xa, float64 xb, float_status *s,
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return soft(ua.s, ub.s, s);
=C2=A0 }

+static inline float64
+float64_gen2_excp(float64 xa, float64 xb, int xc, int xd, float_status *s,
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 hard_f64_op2_fn hard, soft_f64= _op2_fn soft,
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 soft_f64_op2_int2_fn soft_excp= , f64_check_fn pre,
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 f64_check_fn post)
+{
+=C2=A0=C2=A0=C2=A0 if (xc || xd) {
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return soft_excp(= xa, xb, xc, xd, s);
+=C2=A0=C2=A0=C2=A0 } else {
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return float64_ge= n2(xa, xb, s, hard, soft, pre, post);
+=C2=A0=C2=A0=C2=A0 }
+}
+
=C2=A0 /*
=C2=A0=C2=A0 * Classify a floating point number. Everything a= bove float_class_qnan
=C2=A0=C2=A0 * is a NaN so cls >=3D float_class_qnan is an= y NaN.
@@ -1929,6 +1944,39 @@ static double hard_f64_sub(double a, double b)
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return a - b;
=C2=A0 }

+static float64 QEMU_SOFTFLOAT_ATTR
+soft_f64_addsub_excp_en(float64 a, float64 b, int oe_sub, int ue_sum,
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0 float_status *status, bool subtract)
+{
+=C2=A0=C2=A0=C2=A0 FloatParts64 pa, pb, *pr;
+
+=C2=A0=C2=A0=C2=A0 float64_unpack_canonical(&pa, a, stat= us);
+=C2=A0=C2=A0=C2=A0 float64_unpack_canonical(&pb, b, stat= us);
+=C2=A0=C2=A0=C2=A0 pr =3D parts_addsub(&pa, &pb, sta= tus, subtract);
+
+=C2=A0=C2=A0=C2=A0 if (unlikely(oe_sub && (pr->ex= p > 1023))) {
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pr->exp -=3D o= e_sub;
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 float_raise(float= _flag_overflow, status);
+=C2=A0=C2=A0=C2=A0 } else if (unlikely(ue_sum && (pr= ->exp < -1022))) {
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 pr->exp +=3D u= e_sum;
+=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 float_raise(float= _flag_underflow, status);
+=C2=A0=C2=A0=C2=A0 }
+
+=C2=A0=C2=A0=C2=A0 return float64_round_pack_canonical(pr, s= tatus);

This is incorrect, because the exponent is not fixed until the middle of
round_pack_canonical.

I think you should not add new functions like this, with new parameters, but instead add
fields to float_status, which would then be checked at the places currently setting
underflow and overflow.

So add overflow_correction and underflow_correction in 'partsN(uncanon_normal)' so that:

if (exp >=3D exp_max) {
=C2=A0=C2=A0=C2=A0=C2=A0 if (overflow_correction !=3D 0) {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exp -=3D overflo= w_correction;
=C2=A0=C2=A0=C2=A0=C2=A0 }
}

And the equivalent for underflow, or a bool ppc_overflow_enable that uses a fixed value like:

if (exp >=3D exp_max) {
=C2=A0=C2=A0=C2=A0=C2=A0 if (ppc_overflow_enable) {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 exp -=3D ((fmt-&= gt;exp_bias + 1) + (fmt->exp_bias + 1)/2);
=C2=A0=C2=A0=C2=A0=C2=A0 }
}

(and the equivalent for underflow) ?

Something like that.

I would suggest pre-computing that adjustment into fmt, via FLOAT_PARAMS.
Naming is always hard, but how about exp_re_bias?

The flag(s) should not contain "ppc" in the name.=C2=A0 But perhaps=

=C2=A0 s->rebias_overflow
=C2=A0 s->rebias_underflow

rebias_* sounds good to me.

Also I imagine that these bools would be set by mtfsf, mtfsfi, mtfsb0 and mtfsb1, in which case it'd make these patches significantly shorter. I'll send a v2 with these changes




r~
--
Lucas Mateus M. Araujo e Castro
Instituto de Pesquisas ELDORADO
Departamento Computa=C3=A7=C3=A3o Embarcada
Analista de Software Trainee
Aviso Legal= - Disclaimer
--------------2NKEAH542shBJedS9fF9ixOC--