From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KxIwM-0006X3-Ud for qemu-devel@nongnu.org; Tue, 04 Nov 2008 05:15:15 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KxIwJ-0006WM-Ia for qemu-devel@nongnu.org; Tue, 04 Nov 2008 05:15:13 -0500 Received: from [199.232.76.173] (port=57015 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KxIwJ-0006Vq-2Z for qemu-devel@nongnu.org; Tue, 04 Nov 2008 05:15:11 -0500 Received: from wf-out-1314.google.com ([209.85.200.173]:26264) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KxIwI-0001Hi-BY for qemu-devel@nongnu.org; Tue, 04 Nov 2008 05:15:10 -0500 Received: by wf-out-1314.google.com with SMTP id 27so3100971wfd.4 for ; Tue, 04 Nov 2008 02:15:08 -0800 (PST) Message-ID: <761ea48b0811040215l3fa16cd6j41e7ee750602e6ea@mail.gmail.com> Date: Tue, 4 Nov 2008 11:15:08 +0100 From: "Laurent Desnogues" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_90266_5451574.1225793708365" Subject: [Qemu-devel] [RFC] TCG new op: setcond Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org ------=_Part_90266_5451574.1225793708365 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello, this patch implements a new TCG op, setcond, that sets a temp to 1 if the condition is true, else to 0. The benefit is the potential removal of brcond instructions, and helpers size reduction which can lead to using TCG instead of helpers. This patch is only posted here to get comments before I dig further into that and propose a proper update. One of the ARM helpers (sub with flag settings) has been converted to TCG and uses setcond to compute carry. setcond has been implemented only for x86_64 TCG back-end. On my TODO list: - document setcond in tcg/README - implement it in all backends * arm * hppa (not applicable according to Stuart Brady) * i386 * ppc * ppc64 * sparc * x86_64 (done and partly tested) - use it at least once in every frontend - setcondi - 64 bit setcond's - a variant that sets -1 instead of 1 for masking - provide a test Please feel free to comment :-) Laurent ------=_Part_90266_5451574.1225793708365 Content-Type: text/x-patch; name=setcond-1.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fn4dktdc0 Content-Disposition: attachment; filename=setcond-1.patch SW5kZXg6IHRjZy90Y2ctb3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0Y2cvdGNnLW9wLmgJKHJldmlzaW9u IDU2MTcpCisrKyB0Y2cvdGNnLW9wLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5OSw2ICs0OTksMTIg QEAKICAgICB9CiB9CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCB0Y2dfZ2VuX3NldGNvbmRfaTMyKGlu dCBjb25kLCBUQ0d2IHJldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFRDR3YgYXJnMSwgaW50MzJfdCBhcmcyKQoreworICAgIHRjZ19nZW5fb3A0aShJTkRFWF9vcF9z ZXRjb25kX2kzMiwgcmV0LCBhcmcxLCBhcmcyLCBjb25kKTsKK30KKwogc3RhdGljIGlubGluZSB2 b2lkIHRjZ19nZW5fYnJjb25kX2kzMihpbnQgY29uZCwgVENHdiBhcmcxLCBUQ0d2IGFyZzIsIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGFiZWxfaW5kZXgpCiB7 CkluZGV4OiB0Y2cvdGNnLW9wYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRjZy90Y2ctb3BjLmgJKHJldmlz aW9uIDU2MTcpCisrKyB0Y2cvdGNnLW9wYy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw4 IEBACiBERUYyKHNocl9pMzIsIDEsIDIsIDAsIDApCiBERUYyKHNhcl9pMzIsIDEsIDIsIDAsIDAp CiAKK0RFRjIoc2V0Y29uZF9pMzIsIDEsIDIsIDEsIDApCisKIERFRjIoYnJjb25kX2kzMiwgMCwg MiwgMiwgVENHX09QRl9CQl9FTkQgfCBUQ0dfT1BGX1NJREVfRUZGRUNUUykKICNpZiBUQ0dfVEFS R0VUX1JFR19CSVRTID09IDMyCiBERUYyKGFkZDJfaTMyLCAyLCA0LCAwLCAwKQpAQCAtMTI5LDYg KzEzMSw4IEBACiBERUYyKHNocl9pNjQsIDEsIDIsIDAsIDApCiBERUYyKHNhcl9pNjQsIDEsIDIs IDAsIDApCiAKK0RFRjIoc2V0Y29uZF9pNjQsIDEsIDIsIDAsIDApCisKIERFRjIoYnJjb25kX2k2 NCwgMCwgMiwgMiwgVENHX09QRl9CQl9FTkQgfCBUQ0dfT1BGX1NJREVfRUZGRUNUUykKICNpZmRl ZiBUQ0dfVEFSR0VUX0hBU19leHQ4c19pNjQKIERFRjIoZXh0OHNfaTY0LCAxLCAxLCAwLCAwKQpJ bmRleDogdGNnL3g4Nl82NC90Y2ctdGFyZ2V0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGNnL3g4Nl82NC90 Y2ctdGFyZ2V0LmMJKHJldmlzaW9uIDU2MTcpCisrKyB0Y2cveDg2XzY0L3RjZy10YXJnZXQuYwko d29ya2luZyBjb3B5KQpAQCAtMTk4LDYgKzE5OCw3IEBACiAjZGVmaW5lIFNISUZUX1NIUiA1CiAj ZGVmaW5lIFNISUZUX1NBUiA3CiAKKy8qIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBhcHBseSB0byBz ZXRjYyBpbnN0cnVjdGlvbiB0b28uICovCiAjZGVmaW5lIEpDQ19KTVAgKC0xKQogI2RlZmluZSBK Q0NfSk8gIDB4MAogI2RlZmluZSBKQ0NfSk5PIDB4MQpAQCAtNDY0LDYgKzQ2NSwyNyBAQAogICAg IH0KIH0KIAorLy8gVE9ETyBzaG91bGQgYXBwbHkgdG8gc2V0Y29uZF9pNjQgYnV0IG5vdCB0ZXN0 ZWQKK3N0YXRpYyB2b2lkIHRjZ19vdXRfc2V0Y29uZChUQ0dDb250ZXh0ICpzLCBpbnQgY29uZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dBcmcgcmV0LCBUQ0dBcmcgYXJnMSwgVENH QXJnIGFyZzIsIGludCByZXh3KQoreworICAgIC8qIGNsZWFyIHJldCBzaW5jZSBzZXRjYyBvbmx5 IHNldHMgdGhlIGxvd2VyIDggYml0cyAqLworICAgIHRjZ19vdXRfbW9kcm0ocywgMHgwMSB8IChB UklUSF9YT1IgPDwgMykgfCByZXh3LCByZXQsIHJldCk7CisgICAgLyogY21wICovCisgICAgdGNn X291dF9tb2RybShzLCAweDAxIHwgKEFSSVRIX0NNUCA8PCAzKSB8IHJleHcsIGFyZzIsIGFyZzEp OworICAgIC8qIHNldGNjICovCisgICAgLy8gVE9ETyB0aGlzIHNob3VsZCB1c2UgdGNnX291dF9t b2RybQorICAgIC8vICAgICAgaG93ZXZlciBjdXJyZW50bHkgdGNnX291dF9tb2RybSBvdXRwdXRz IGFuIGV4dHJhIGJ5dGUgZm9yIFthYmNkXWwKKyAgICAvL3RjZ19vdXRfbW9kcm0ocywgKDB4OTAg KyB0Y2dfY29uZF90b19qY2NbY29uZF0pIHwgUF9FWFQgfCBQX1JFWEIsIHJldCwgMCk7CisgICAg aWYgKHJldCA+IDMpCisgICAgICAgIHRjZ19vdXQ4KHMsIDB4NDApOworICAgIGVsc2UgaWYgKHJl dCA+IDcpCisgICAgICAgIHRjZ19vdXQ4KHMsIDB4NDEpOworICAgIHRjZ19vdXQ4KHMsIDB4MGYp OworICAgIHRjZ19vdXQ4KHMsIDB4OTAgKyB0Y2dfY29uZF90b19qY2NbY29uZF0pOworICAgIHRj Z19vdXQ4KHMsIDB4YzAgKyAocmV0ICYgNykpOworfQorCiBzdGF0aWMgdm9pZCB0Y2dfb3V0X2Jy Y29uZChUQ0dDb250ZXh0ICpzLCBpbnQgY29uZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICBUQ0dBcmcgYXJnMSwgVENHQXJnIGFyZzIsIGludCBjb25zdF9hcmcyLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50IGxhYmVsX2luZGV4LCBpbnQgcmV4dykKQEAgLTEwNjUsNiArMTA4 NywxNCBAQAogICAgICAgICBjID0gU0hJRlRfU0FSOwogICAgICAgICBnb3RvIGdlbl9zaGlmdDY0 OwogICAgICAgICAKKyAgICBjYXNlIElOREVYX29wX3NldGNvbmRfaTMyOgorICAgICAgICB0Y2df b3V0X3NldGNvbmQocywgYXJnc1szXSwgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSwgMCk7Cisg ICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJTkRFWF9vcF9zZXRjb25kX2k2NDoKKyAgICAgICAg dGNnX291dF9zZXRjb25kKHMsIGFyZ3NbM10sIGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0sIFBf UkVYVyk7CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBJTkRFWF9vcF9icmNvbmRfaTMyOgog ICAgICAgICB0Y2dfb3V0X2JyY29uZChzLCBhcmdzWzJdLCBhcmdzWzBdLCBhcmdzWzFdLCBjb25z dF9hcmdzWzFdLCAKICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1szXSwgMCk7CkBAIC0xMjI1 LDYgKzEyNTUsOCBAQAogICAgIHsgSU5ERVhfb3Bfc2hyX2kzMiwgeyAiciIsICIwIiwgImNpIiB9 IH0sCiAgICAgeyBJTkRFWF9vcF9zYXJfaTMyLCB7ICJyIiwgIjAiLCAiY2kiIH0gfSwKIAorICAg IHsgSU5ERVhfb3Bfc2V0Y29uZF9pMzIsIHsgInIiLCAiciIsICJyIiB9IH0sCisKICAgICB7IElO REVYX29wX2JyY29uZF9pMzIsIHsgInIiLCAicmkiIH0gfSwKIAogICAgIHsgSU5ERVhfb3BfbW92 X2k2NCwgeyAiciIsICJyIiB9IH0sCkBAIC0xMjU0LDYgKzEyODYsOCBAQAogICAgIHsgSU5ERVhf b3Bfc2hyX2k2NCwgeyAiciIsICIwIiwgImNpIiB9IH0sCiAgICAgeyBJTkRFWF9vcF9zYXJfaTY0 LCB7ICJyIiwgIjAiLCAiY2kiIH0gfSwKIAorICAgIHsgSU5ERVhfb3Bfc2V0Y29uZF9pNjQsIHsg InIiLCAiciIsICJyIiB9IH0sCisKICAgICB7IElOREVYX29wX2JyY29uZF9pNjQsIHsgInIiLCAi cmUiIH0gfSwKIAogICAgIHsgSU5ERVhfb3BfYnN3YXBfaTMyLCB7ICJyIiwgIjAiIH0gfSwKSW5k ZXg6IHRjZy90Y2cuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0Y2cvdGNnLmMJKHJldmlzaW9uIDU2MTcpCisr KyB0Y2cvdGNnLmMJKHdvcmtpbmcgY29weSkKQEAgLTg3Nyw2ICs4NzcsOCBAQAogI2VsaWYgVENH X1RBUkdFVF9SRUdfQklUUyA9PSA2NAogICAgICAgICAgICAgICAgIHx8IGMgPT0gSU5ERVhfb3Bf YnJjb25kX2k2NAogI2VuZGlmCisgICAgICAgICAgICAgICAgfHwgYyA9PSBJTkRFWF9vcF9zZXRj b25kX2kzMgorICAgICAgICAgICAgICAgIHx8IGMgPT0gSU5ERVhfb3Bfc2V0Y29uZF9pNjQKICAg ICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICBpZiAoYXJnc1trXSA8IEFSUkFZX1NJ WkUoY29uZF9uYW1lKSAmJiBjb25kX25hbWVbYXJnc1trXV0pCiAgICAgICAgICAgICAgICAgICAg IGZwcmludGYob3V0ZmlsZSwgIiwlcyIsIGNvbmRfbmFtZVthcmdzW2srK11dKTsKSW5kZXg6IHRh cmdldC1hcm0vdHJhbnNsYXRlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdGFyZ2V0LWFybS90cmFuc2xhdGUu YwkocmV2aXNpb24gNTYxNykKKysrIHRhcmdldC1hcm0vdHJhbnNsYXRlLmMJKHdvcmtpbmcgY29w eSkKQEAgLTIwMSw3ICsyMDEsNiBAQAogCiAjZGVmaW5lIGdlbl9vcF9hZGRsX1QwX1QxX2NjKCkg Z2VuX2hlbHBlcl9hZGRfY2MoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsxXSkKICNkZWZpbmUg Z2VuX29wX2FkY2xfVDBfVDFfY2MoKSBnZW5faGVscGVyX2FkY19jYyhjcHVfVFswXSwgY3B1X1Rb MF0sIGNwdV9UWzFdKQotI2RlZmluZSBnZW5fb3Bfc3VibF9UMF9UMV9jYygpIGdlbl9oZWxwZXJf c3ViX2NjKGNwdV9UWzBdLCBjcHVfVFswXSwgY3B1X1RbMV0pCiAjZGVmaW5lIGdlbl9vcF9zYmNs X1QwX1QxX2NjKCkgZ2VuX2hlbHBlcl9zYmNfY2MoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVfVFsx XSkKICNkZWZpbmUgZ2VuX29wX3JzYmxfVDBfVDFfY2MoKSBnZW5faGVscGVyX3N1Yl9jYyhjcHVf VFswXSwgY3B1X1RbMV0sIGNwdV9UWzBdKQogI2RlZmluZSBnZW5fb3BfcnNjbF9UMF9UMV9jYygp IGdlbl9oZWxwZXJfc2JjX2NjKGNwdV9UWzBdLCBjcHVfVFsxXSwgY3B1X1RbMF0pCkBAIC0yNDMs NiArMjQyLDM2IEBACiAgICAgZGVhZF90bXAodG1wKTsKIH0KIAorLy8jZGVmaW5lIGdlbl9vcF9z dWJsX1QwX1QxX2NjKCkgZ2VuX2hlbHBlcl9zdWJfY2MoY3B1X1RbMF0sIGNwdV9UWzBdLCBjcHVf VFsxXSkKK3N0YXRpYyBpbmxpbmUgdm9pZCBnZW5fb3Bfc3VibF9UMF9UMV9jYyh2b2lkKQorewor ICAgIFRDR3YgdG1wMzJfcmVzOworICAgIFRDR3YgdG1wMTsKKyAgICBUQ0d2IHRtcDI7CisKKyAg ICB0bXAzMl9yZXMgPSBuZXdfdG1wKCk7CisgICAgdGNnX2dlbl9zdWJfaTMyKHRtcDMyX3Jlcywg Y3B1X1RbMF0sIGNwdV9UWzFdKTsKKyAgICB0Y2dfZ2VuX3N0X2kzMih0bXAzMl9yZXMsIGNwdV9l bnYsIG9mZnNldG9mKENQVVN0YXRlLCBORikpOworICAgIHRjZ19nZW5fc3RfaTMyKHRtcDMyX3Jl cywgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIFpGKSk7CisKKyAgICB0bXAxID0gbmV3X3Rt cCgpOworCisgICAgdGNnX2dlbl9zZXRjb25kX2kzMihUQ0dfQ09ORF9HRVUsIHRtcDEsIGNwdV9U WzBdLCBjcHVfVFsxXSk7CisgICAgdGNnX2dlbl9zdF9pMzIodG1wMSwgY3B1X2Vudiwgb2Zmc2V0 b2YoQ1BVU3RhdGUsIENGKSk7CisKKyAgICB0bXAyID0gbmV3X3RtcCgpOworICAgIHRjZ19nZW5f eG9yX2kzMih0bXAxLCBjcHVfVFswXSwgY3B1X1RbMV0pOworICAgIHRjZ19nZW5feG9yX2kzMih0 bXAyLCBjcHVfVFswXSwgdG1wMzJfcmVzKTsKKyAgICB0Y2dfZ2VuX2FuZF9pMzIodG1wMSwgdG1w MSwgdG1wMik7CisgICAgZGVhZF90bXAodG1wMik7CisgICAgdGNnX2dlbl9zdF9pMzIodG1wMSwg Y3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU3RhdGUsIFZGKSk7CisgICAgZGVhZF90bXAodG1wMSk7CisK KyAgICB0Y2dfZ2VuX21vdl9pMzIoY3B1X1RbMF0sIHRtcDMyX3Jlcyk7CisKKyAgICBkZWFkX3Rt cCh0bXAzMl9yZXMpOworfQorCiBzdGF0aWMgdm9pZCBnZW5fc211bF9kdWFsKFRDR3YgYSwgVENH diBiKQogewogICAgIFRDR3YgdG1wMSA9IG5ld190bXAoKTsK ------=_Part_90266_5451574.1225793708365--