From mboxrd@z Thu Jan 1 00:00:00 1970 From: Geoffrey KEATING To: Richard Henderson Cc: David Edelsohn , Richard Henderson, Geoffrey KEATING , egcs@cygnus.com Subject: Re: asm clobbers, !SMALL_REGISTER_CLASSES patch. Date: Sat, 14 Feb 1998 20:23:00 -0000 Message-id: <199802150423.PAA00420@discus.anu.edu.au> References: <19980213102956.17734@dot.cygnus.com> X-SW-Source: 1998-02/msg00677.html Content-type: multipart/mixed; boundary="----------=_1583532956-671-11" This is a multi-part message in MIME format... ------------=_1583532956-671-11 Content-length: 1532 > Date: Fri, 13 Feb 1998 10:29:56 -0800 > From: Richard Henderson > PowerPC, Sparc64, and others have multiple CC registers. It > comes to pass that while writing some inline assembly, you need > one. At present you can only just pick one at random and > clobber it. > > What if we provide a way to allocate scratches explicitly? My > thought here is to put something special in the () part of the > output section (whether we turn it into a clobber is immaterial; > we need a parameter number for the asm string). I considered > using something like __scratch__, but it'd be nice to avoid a > new keyword. Using auto instead appeals to me. > > So you could then do > > asm ("cmpwi %0,%1,123\n\t" > "beq %0,1f\n\t" > "blah\n" > "1:" > : "=y"(auto) : "r"(foo)); Funny you should mention that. I have such a patch attached; I did it as a warmup to see how I should do the rewriting patch. It uses the syntax : "=y" : "r"(foo)); That is, you just omit the expression. My problem is that I can't find a compelling use for it. Usually, you only have one register that is best; on PPC, typically this is cr0 (for loops and suchlike) or cr7 (because it occupies the least significant bits when you put the ccr in an integer register). Thus I'm not terribly interested in it, unless someone else can find an actual use for it. I would rather spend the effort on important things, like making sure that the released GNU C library doesn't crash the released GNU C compiler :-). ------------=_1583532956-671-11 Content-Type: text/x-diff; charset=us-ascii; name="egcs-asm-1.diff" Content-Disposition: inline; filename="egcs-asm-1.diff" Content-Transfer-Encoding: base64 Content-Length: 9508 LS0tIGdjYy9jLXBhcnNlLmluLm9yaWcJU2F0IEZlYiAgNyAxNDoxMTo0NiAx OTk4CisrKyBnY2MvYy1wYXJzZS5pbglTYXQgRmViICA3IDE0OjA0OjI1IDE5 OTgKQEAgLTIyMDQsNiArMjIwNCw4IEBAIG5vbm51bGxfYXNtX29wZXJhbmRz OgogYXNtX29wZXJhbmQ6CiAJICBTVFJJTkcgJygnIGV4cHIgJyknCiAJCXsg JCQgPSBidWlsZF90cmVlX2xpc3QgKCQxLCAkMyk7IH0KKwl8IFNUUklORwor CQl7ICQkID0gYnVpbGRfdHJlZV9saXN0ICgkMSwgTlVMTF9UUkVFKTsgfQog CTsKIAogYXNtX2Nsb2JiZXJzOgotLS0gZ2NjL2MtdHlwZWNrLmMub3JpZwlT YXQgU2VwIDI3IDEzOjQ2OjMzIDE5OTcKKysrIGdjYy9jLXR5cGVjay5jCUZy aSBGZWIgIDYgMjM6NTA6MDAgMTk5OApAQCAtNjUxOSw3ICs2NTE5LDcgQEAg Y19leHBhbmRfYXNtX29wZXJhbmRzIChzdHJpbmcsIG91dHB1dHMsIAogCX0K ICAgICAgIC8qIERldGVjdCBtb2RpZmljYXRpb24gb2YgcmVhZC1vbmx5IHZh bHVlcy4KIAkgKE90aGVyd2lzZSBkb25lIGJ5IGJ1aWxkX21vZGlmeV9leHBy LikgICovCi0gICAgICBlbHNlCisgICAgICBlbHNlIGlmIChvW2ldICE9IE5V TExfVFJFRSkKIAl7CiAJICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKG9baV0p OwogCSAgaWYgKFRSRUVfUkVBRE9OTFkgKG9baV0pCi0tLSBnY2Mvc3RtdC5j Lm9yaWcJRnJpIEZlYiAgNiAyMToyNTowOCAxOTk4CisrKyBnY2Mvc3RtdC5j CVNhdCBGZWIgIDcgMTQ6MDM6MDkgMTk5OApAQCAtNDcsNiArNDcsNyBAQCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCiAjaW5jbHVkZSAiaW5z bi1jb25maWcuaCIKICNpbmNsdWRlICJpbnNuLWNvZGVzLmgiCiAjaW5jbHVk ZSAiZXhwci5oIgorI2luY2x1ZGUgInJlZ3MuaCIKICNpbmNsdWRlICJoYXJk LXJlZy1zZXQuaCIKICNpbmNsdWRlICJvYnN0YWNrLmgiCiAjaW5jbHVkZSAi bG9vcC5oIgpAQCAtMTM4Myw2ICsxMzg0LDM4IEBAIGV4cGFuZF9hc20gKGJv ZHkpCiAgIGxhc3RfZXhwcl90eXBlID0gMDsKIH0KIAorLyogQ2hvb3NlIGEg bW9kZSB0aGF0IG1pZ2h0IGJlIHN1aXRhYmxlIGZvciBhIGNvbnN0cmFpbnQu CisgICBJZiB0aGUgY29uc3RyYWludCBpcyB0b28gdHJpY2t5LCB0aGlzIGNh biBnZXQgaXQgd3JvbmcuICAqLworc3RhdGljIGVudW0gbWFjaGluZV9tb2Rl CitjaG9vc2VfY29uc3RyYWludF9tb2RlKGNvbnN0cmFpbnQpCisgICAgIGNo YXIgKmNvbnN0cmFpbnQ7Cit7CisgIGZvciAoOzspCisgICAgc3dpdGNoICgq Y29uc3RyYWludCsrKQorICAgICAgeworICAgICAgY2FzZSAnMCc6IGNhc2Ug JywnOgorCS8qIFdpbGQgZ3Vlc3MuICBUaGlzIGlzIHdoeSB5b3Ugc2hvdWxk bid0IHVzZSB0aGlzIGZhY2lsaXR5CisJICAgdG8gKGZvciBpbnN0YW5jZSkg cHJvdmlkZSBhIG1lbW9yeSBsb2NhdGlvbi4gICovCisJcmV0dXJuIGJ5dGVf bW9kZTsKKyAgICAgIGNhc2UgJ3InOiBjYXNlICdnJzoKKwkvKiBBc3N1bWUg dGhhdCBnZW5lcmFsIHJlZ2lzdGVycyBjYW4gYXQgbGVhc3QgaG9sZCBhIGJ5 dGUuICAqLworCXJldHVybiBieXRlX21vZGU7CisgICAgICBkZWZhdWx0Ogor CXsKKwkgIGVudW0gcmVnX2NsYXNzIGNsYXNzID0gUkVHX0NMQVNTX0ZST01f TEVUVEVSIChjb25zdHJhaW50Wy0xXSk7CisJICBpbnQgcmVnbm87CisKKwkg IGlmIChjbGFzcyA9PSBOT19SRUdTKQorCSAgICBjb250aW51ZTsKKworCSAg Zm9yIChyZWdubyA9IDA7IHJlZ25vIDwgRklSU1RfUFNFVURPX1JFR0lTVEVS OyByZWdubysrKQorCSAgICBpZiAoVEVTVF9IQVJEX1JFR19CSVQgKHJlZ19j bGFzc19jb250ZW50c1soaW50KSBjbGFzc10sIHJlZ25vKSkKKwkgICAgICBy ZXR1cm4gcmVnX3Jhd19tb2RlW3JlZ25vXTsKKwkgIGNvbnRpbnVlOworCX0K KyAgICAgIH0KK30KKwogLyogR2VuZXJhdGUgUlRMIGZvciBhbiBhc20gc3Rh dGVtZW50IHdpdGggYXJndW1lbnRzLgogICAgU1RSSU5HIGlzIHRoZSBpbnN0 cnVjdGlvbiB0ZW1wbGF0ZS4KICAgIE9VVFBVVFMgaXMgYSBsaXN0IG9mIG91 dHB1dCBhcmd1bWVudHMgKGx2YWx1ZXMpOyBJTlBVVFMgYSBsaXN0IG9mIGlu cHV0cy4KQEAgLTE0NTUsMTUgKzE0ODgsMTggQEAgZXhwYW5kX2FzbV9vcGVy YW5kcyAoc3RyaW5nLCBvdXRwdXRzLCBpbgogICBmb3IgKGkgPSAwLCB0YWls ID0gb3V0cHV0czsgdGFpbDsgdGFpbCA9IFRSRUVfQ0hBSU4gKHRhaWwpLCBp KyspCiAgICAgewogICAgICAgdHJlZSB2YWwgPSBUUkVFX1ZBTFVFICh0YWls KTsKLSAgICAgIHRyZWUgdHlwZSA9IFRSRUVfVFlQRSAodmFsKTsKKyAgICAg IHRyZWUgdHlwZTsKICAgICAgIHRyZWUgdmFsMTsKICAgICAgIGludCBqOwog ICAgICAgaW50IGZvdW5kX2VxdWFsID0gMDsKICAgICAgIGludCBmb3VuZF9w bHVzID0gMDsKICAgICAgIGludCBhbGxvd3NfcmVnID0gMDsKIAorICAgICAg aWYgKHZhbCAhPSBOVUxMX1RSRUUpCisJdHlwZSA9IFRSRUVfVFlQRSAodmFs KTsKKwogICAgICAgLyogSWYgdGhlcmUncyBhbiBlcnJvbmVvdXMgYXJnLCBl bWl0IG5vIGluc24uICAqLwotICAgICAgaWYgKFRSRUVfVFlQRSAodmFsKSA9 PSBlcnJvcl9tYXJrX25vZGUpCisgICAgICBpZiAodmFsICE9IE5VTExfVFJF RSAmJiB0eXBlID09IGVycm9yX21hcmtfbm9kZSkKIAlyZXR1cm47CiAKICAg ICAgIC8qIE1ha2Ugc3VyZSBjb25zdHJhaW50IGhhcyBgPScgYW5kIGRvZXMg bm90IGhhdmUgYCsnLiAgQWxzbywgc2VlCkBAIC0xNTE5LDE3ICsxNTU1LDI5 IEBAIGV4cGFuZF9hc21fb3BlcmFuZHMgKHN0cmluZywgb3V0cHV0cywgaW4K IAkgIHJldHVybjsKIAl9CiAKKyAgICAgIGlmIChmb3VuZF9wbHVzICYmIHZh bCA9PSBOVUxMX1RSRUUpCisJeworCSAgZXJyb3IgKCJpbm91dCBvcGVyYW5k IHRvIGBhc20nIHNob3VsZCBoYXZlIHZhbHVlIik7CisJICByZXR1cm47CisJ fQogICAgICAgLyogSWYgYW4gb3V0cHV0IG9wZXJhbmQgaXMgbm90IGEgZGVj bCBvciBpbmRpcmVjdCByZWYgYW5kIG91ciBjb25zdHJhaW50CiAJIGFsbG93 cyBhIHJlZ2lzdGVyLCBtYWtlIGEgdGVtcG9yYXJ5IHRvIGFjdCBhcyBhbiBp bnRlcm1lZGlhdGUuCiAJIE1ha2UgdGhlIGFzbSBpbnNuIHdyaXRlIGludG8g dGhhdCwgdGhlbiBvdXIgY2FsbGVyIHdpbGwgY29weSBpdCB0bwotCSB0aGUg cmVhbCBvdXRwdXQgb3BlcmFuZC4gIExpa2V3aXNlIGZvciBwcm9tb3RlZCB2 YXJpYWJsZXMuICAqLworCSB0aGUgcmVhbCBvdXRwdXQgb3BlcmFuZC4gIExp a2V3aXNlIGZvciBwcm9tb3RlZCB2YXJpYWJsZXMsCisJIGFuZCBmb3Igd2hl biB3ZSBpZ25vcmUgdGhlIG91dHB1dCAoYnV0IHRoZW4gd2UgZG9uJ3Qgd2Fu dCB0byBoYXZlCisJIHRoZSBjYWxsZXIgY29weSBpdCBhbnl3aGVyZSkuICAq LwogCi0gICAgICBpZiAoVFJFRV9DT0RFICh2YWwpID09IElORElSRUNUX1JF RgotCSAgfHwgKFRSRUVfQ09ERV9DTEFTUyAoVFJFRV9DT0RFICh2YWwpKSA9 PSAnZCcKLQkgICAgICAmJiAhIChHRVRfQ09ERSAoREVDTF9SVEwgKHZhbCkp ID09IFJFRwotCQkgICAgJiYgR0VUX01PREUgKERFQ0xfUlRMICh2YWwpKSAh PSBUWVBFX01PREUgKHR5cGUpKSkKLQkgIHx8ICEgYWxsb3dzX3JlZwotCSAg fHwgZm91bmRfcGx1cykKKyAgICAgIGlmICh2YWwgPT0gTlVMTF9UUkVFKQor CXsKKwkgIGNoYXIgKmNvbnN0cmFpbnQgPSBUUkVFX1NUUklOR19QT0lOVEVS IChUUkVFX1BVUlBPU0UgKHRhaWwpKTsKKwkgIG91dHB1dF9ydHhbaV0gPSBn ZW5fcmVnX3J0eCAoY2hvb3NlX2NvbnN0cmFpbnRfbW9kZShjb25zdHJhaW50 KSk7CisJfQorICAgICAgZWxzZSBpZiAoVFJFRV9DT0RFICh2YWwpID09IElO RElSRUNUX1JFRgorCSAgICAgICB8fCAoVFJFRV9DT0RFX0NMQVNTIChUUkVF X0NPREUgKHZhbCkpID09ICdkJworCQkgICAmJiAhIChHRVRfQ09ERSAoREVD TF9SVEwgKHZhbCkpID09IFJFRworCQkJICYmIEdFVF9NT0RFIChERUNMX1JU TCAodmFsKSkgIT0gVFlQRV9NT0RFICh0eXBlKSkpCisJICAgICAgIHx8ICEg YWxsb3dzX3JlZworCSAgICAgICB8fCBmb3VuZF9wbHVzKQogCXsKIAkgIGlm ICghIGFsbG93c19yZWcpCiAJICAgIG1hcmtfYWRkcmVzc2FibGUgKFRSRUVf VkFMVUUgKHRhaWwpKTsKQEAgLTE1NzksNiArMTYyNywxMyBAQCBleHBhbmRf YXNtX29wZXJhbmRzIChzdHJpbmcsIG91dHB1dHMsIGluCiAgICAgewogICAg ICAgaW50IGo7CiAgICAgICBpbnQgYWxsb3dzX3JlZyA9IDA7CisKKyAgICAg IC8qIE51bGwgaW5wdXRzIG1ha2UgbGl0dGxlIHNlbnNlLiAgKi8KKyAgICAg IGlmIChUUkVFX1ZBTFVFICh0YWlsKSA9PSBOVUxMX1RSRUUpCisJeworCSAg ZXJyb3IgKCJpbnB1dCBvcGVyYW5kIHRvIGBhc20nIHNob3VsZCBoYXZlIHZh bHVlIik7CisJICByZXR1cm47CisJfQogCiAgICAgICAvKiBJZiB0aGVyZSdz IGFuIGVycm9uZW91cyBhcmcsIGVtaXQgbm8gaW5zbiwKIAkgYmVjYXVzZSB0 aGUgQVNNX0lOUFVUIHdvdWxkIGdldCBWT0lEbW9kZQotLS0gZ2NjL2NwL3Bh cnNlLnkub3JpZwlTYXQgRmViICA3IDE0OjEyOjUwIDE5OTgKKysrIGdjYy9j cC9wYXJzZS55CVNhdCBGZWIgIDcgMTQ6MTI6MzMgMTk5OApAQCAtNDA2NSw2 ICs0MDY1LDggQEAgbm9ubnVsbF9hc21fb3BlcmFuZHM6CiBhc21fb3BlcmFu ZDoKIAkgIFNUUklORyAnKCcgZXhwciAnKScKIAkJeyAkJCA9IGJ1aWxkX3Ry ZWVfbGlzdCAoJCQsICQzKTsgfQorCXwgU1RSSU5HCisJCXsgJCQgPSBidWls ZF90cmVlX2xpc3QgKCQxLCBOVUxMX1RSRUUpOyB9CiAJOwogCiBhc21fY2xv YmJlcnM6Ci0tLSBnY2MvQ2hhbmdlTG9nfglTdW4gSmFuIDI1IDAwOjM1OjUy IDE5OTgKKysrIGdjYy9DaGFuZ2VMb2cJU2F0IEZlYiAgNyAxNDoyMTowNSAx OTk4CkBAIC0xLDMgKzEsMTIgQEAKK0ZyaSBGZWIgIDYgMjI6MTU6MjQgMTk5 OCAgR2VvZmYgS2VhdGluZyAgKGdlb2Zma0BvemVtYWlsLmNvbS5hdSkKKwor CSogYy1wYXJzZS5pbiAoYXNtX29wZXJhbmQpOiBBZGQgbmV3IGBpZ25vcmUg b3V0cHV0JyBzeW50YXguCisJKiBjLXR5cGVjay5jIChjX2V4cGFuZF9hc21f b3BlcmFuZHMpOiBJZiB3ZSBhcmUgaWdub3JpbmcgdGhlCisJb3V0cHV0LCBk b24ndCBjb3B5IGl0IGFueXdoZXJlLgorCSogc3RtdC5jIChjaG9vc2VfY29u c3RyYWludF9tb2RlKTogTmV3IGZ1bmN0aW9uLgorCShleHBhbmRfYXNtX29w ZXJhbmRzKTogSGFuZGxlIGBpZ25vcmUgb3V0cHV0JyBzeW50YXggYnkgY3Jl YXRpbmcgYQorCWR1bW15IHBzZXVkbyB0byBvdXRwdXQgdG8uCisKIEZyaSBK YW4gIDIgMjM6NDA6MDkgMTk5OCAgSmltIFdpbHNvbiAgKHdpbHNvbkBjeWdu dXMuY29tKQogCQkJICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20p CiAKLS0tIGdjYy9jcC9DaGFuZ2VMb2d+CVN1biBKYW4gMjUgMDA6MzY6MDQg MTk5OAorKysgZ2NjL2NwL0NoYW5nZUxvZwlTYXQgRmViICA3IDE0OjIxOjM1 IDE5OTgKQEAgLTEsMyArMSw3IEBACitGcmkgRmViICA2IDIyOjIxOjI3IDE5 OTggIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAb3plbWFpbC5jb20uYXU+CisK KwkqIHBhcnNlLnkgKGFzbV9vcGVyYW5kKTogQWRkIG5ldyBgaWdub3JlIG91 dHB1dCcgc3ludGF4LgorCiBTYXQgRGVjIDIwIDEzOjAwOjMwIDE5OTcgIEph c29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KIAogCSog cHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IERlZmVyIGFsbCB0ZW1wbGF0ZXMg YnV0IGlubGluZSBmdW5jdGlvbnMuCi0tLSBnY2MvZXh0ZW5kLnRleGkub3Jp ZwlTYXQgRmViICA3IDE0OjUwOjM5IDE5OTgKKysrIGdjYy9leHRlbmQudGV4 aQlTYXQgRmViICA3IDE1OjMzOjAyIDE5OTgKQEAgLTI0MzAsNiArMjQzMCwy OCBAQAogYW5kIHRoZXJlZm9yZSB0aGV5IGNhbm5vdCB0YWtlIGFjY291bnQg b2YgdGhlbSB3aGVuIGRlY2lkaW5nIGhvdyB0bwogb3B0aW1pemUuCiAKK0lu IHNvbWUgb2YgdGhlc2UgbW9yZSBjb21wbGV4IEBjb2Rle2FzbX0gc3RhdGVt ZW50cywgeW91IG5lZWQgdGVtcG9yYXJ5CityZWdpc3RlcnMuICBZb3UgY291 bGQganVzdCBjaG9vc2UgYSByZWdpc3RlciBhdCByYW5kb20gKGFuZCBzcGVj aWZ5IGl0CithcyBjbG9iYmVyZWQpLCBidXQgaXQgaXMgdXN1YWxseSBiZXR0 ZXIgdG8gaW5zdGVhZCBtYWtlIHRoZSB0ZW1wb3JhcnkgYW4KK2BvdXRwdXQn IG9mIHRoZSBAY29kZXthc219OyB0aGF0IHdheSB0aGUgcmVnaXN0ZXIgYWxs b2NhdG9yIGNhbiBwaWNrIHRoZQorbW9zdCBjb252ZW5pZW50IHRlbXBvcmFy eS4gIFRoZXJlIGlzIGEgc3BlY2lhbCBzeW50YXggdG8gc2ltcGxpZnkgdXNp bmcKK3N1Y2ggdGVtcG9yYXJpZXM6IGlmIHlvdSBvbWl0IHRoZSBDIGV4cHJl c3Npb24gc3BlY2lmeWluZyB0aGUgb3V0cHV0CitkZXN0aW5hdGlvbiwgdGhl IG91dHB1dCB3aWxsIGJlIGlnbm9yZWQuICBGb3IgaW5zdGFuY2UsIHRoZSBm b2xsb3dpbmcKK2V4YW1wbGUgaW1wbGVtZW50cyB0ZXN0LWFuZC1zZXQgb24g UlM2MDAwLCB1c2luZyBhIHRlbXBvcmFyeQorY29uZGl0aW9uIGNvZGUgcmVn aXN0ZXI6CisKK0BleGFtcGxlCithc20gdm9sYXRpbGUoIjA6ICBsd2FyeCAl MCwwLCUzOyIKKyAgICAgICAgICAgICAiICAgIGNtcHdpICUxLCUwLDA7Igor ICAgICAgICAgICAgICIgICAgYm5lICUxLDFmOyIKKyAgICAgICAgICAgICAi ICAgIHN0d2N4LiAlNCwwLCUzOyIKKyAgICAgICAgICAgICAiICAgIGJuZS0g MGI7IgorICAgICAgICAgICAgICIxOiAiCisgICAgIDogIj0mciIob2xkdmFs dWUpLCAiPXkiLCAiPXgiCisgICAgIDogInIiKGFkZHJlc3MpLCAiciIoMSkK KyAgICAgOiAibWVtb3J5Iik7CitAZW5kIGV4YW1wbGUKKwogQGNpbmRleCBt YWNyb3MgY29udGFpbmluZyBAY29kZXthc219CiBVc3VhbGx5IHRoZSBtb3N0 IGNvbnZlbmllbnQgd2F5IHRvIHVzZSB0aGVzZSBAY29kZXthc219IGluc3Ry dWN0aW9ucyBpcyB0bwogZW5jYXBzdWxhdGUgdGhlbSBpbiBtYWNyb3MgdGhh dCBsb29rIGxpa2UgZnVuY3Rpb25zLiAgRm9yIGV4YW1wbGUsCg== ------------=_1583532956-671-11--