From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KaD4s-00024d-Tx for qemu-devel@nongnu.org; Mon, 01 Sep 2008 13:20:34 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KaD4r-000242-AH for qemu-devel@nongnu.org; Mon, 01 Sep 2008 13:20:34 -0400 Received: from [199.232.76.173] (port=36974 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KaD4r-00023y-4p for qemu-devel@nongnu.org; Mon, 01 Sep 2008 13:20:33 -0400 Received: from wf-out-1314.google.com ([209.85.200.172]:61269) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KaD4q-0004S1-Ka for qemu-devel@nongnu.org; Mon, 01 Sep 2008 13:20:32 -0400 Received: by wf-out-1314.google.com with SMTP id 27so1949333wfd.4 for ; Mon, 01 Sep 2008 10:20:31 -0700 (PDT) Message-ID: Date: Mon, 1 Sep 2008 20:20:31 +0300 From: "Blue Swirl" Subject: Re: [Qemu-devel] sparc smul problem In-Reply-To: <20080901121035.R83237@stanley.csl.cornell.edu> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_16074_14591999.1220289631483" References: <20080901121035.R83237@stanley.csl.cornell.edu> 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_16074_14591999.1220289631483 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 9/1/08, Vince Weaver wrote: > Hello! > > I've been stuck on this all weekend, as I can't find where the actual > problem is. I might be completely missing it, but I've tried a lot of things > and can't make it work. > > On SPARC, the "smul" instruction multiplies two numbers, puts the result in > the result register but also puts the top 32-bits of the 64-bit result into > the "Y" register. > > As the attached code shows, the value of "Y" is wrong. Somehow after the > multiply, the top 32 bits of the product rae all zeros. I've played around > with the code generated by translate.c, and it looks like the shift and > other instructions all work properly, but the 64-bit multiply the result is > somehow being truncated. But I've looked at the generated code (on x86_64) > and it looks like it is doing the right thing. > > So anyway, I'll have to take a look at this again later, but in case anyone > else wants to look at it in case I am missing anything obvious. Y loads and stores were not correct, the attached patch fixes the problem. I'm still running some tests. ------=_Part_16074_14591999.1220289631483 Content-Type: plain/text; name=fix_smul.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fklcwjed Content-Disposition: attachment; filename=fix_smul.diff SW5kZXg6IHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHFlbXUu b3JpZy90YXJnZXQtc3BhcmMvdHJhbnNsYXRlLmMJMjAwOC0wOS0wMSAxNjo1MDo0My4wMDAwMDAw MDAgKzAwMDAKKysrIHFlbXUvdGFyZ2V0LXNwYXJjL3RyYW5zbGF0ZS5jCTIwMDgtMDktMDEgMTc6 MDE6NTcuMDAwMDAwMDAwICswMDAwCkBAIC03MTMsMzYgKzcxMywzMiBAQAogCiBzdGF0aWMgaW5s aW5lIHZvaWQgZ2VuX29wX211bHNjYyhUQ0d2IGRzdCwgVENHdiBzcmMxLCBUQ0d2IHNyYzIpCiB7 Ci0gICAgVENHdiByX3RlbXAsIHJfdGVtcDI7CisgICAgVENHdiByX3RlbXA7CiAgICAgaW50IGwx OwogCiAgICAgbDEgPSBnZW5fbmV3X2xhYmVsKCk7CiAgICAgcl90ZW1wID0gdGNnX3RlbXBfbmV3 KFRDR19UWVBFX1RMKTsKLSAgICByX3RlbXAyID0gdGNnX3RlbXBfbmV3KFRDR19UWVBFX0kzMik7 CiAKICAgICAvKiBvbGQgb3A6CiAgICAgaWYgKCEoZW52LT55ICYgMSkpCiAgICAgICAgIFQxID0g MDsKICAgICAqLwogICAgIHRjZ19nZW5fbW92X3RsKGNwdV9jY19zcmMsIHNyYzEpOwotICAgIHRj Z19nZW5fbGQzMnVfdGwocl90ZW1wLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTUEFSQ1N0YXRlLCB5 KSk7Ci0gICAgdGNnX2dlbl90cnVuY190bF9pMzIocl90ZW1wMiwgcl90ZW1wKTsKLSAgICB0Y2df Z2VuX2FuZGlfaTMyKHJfdGVtcDIsIHJfdGVtcDIsIDB4MSk7CisgICAgdGNnX2dlbl9sZF90bChy X3RlbXAsIGNwdV9lbnYsIG9mZnNldG9mKENQVVNQQVJDU3RhdGUsIHkpKTsKKyAgICB0Y2dfZ2Vu X2FuZGlfdGwocl90ZW1wLCByX3RlbXAsIDB4MSk7CiAgICAgdGNnX2dlbl9tb3ZfdGwoY3B1X2Nj X3NyYzIsIHNyYzIpOwotICAgIHRjZ19nZW5fYnJjb25kaV9pMzIoVENHX0NPTkRfTkUsIHJfdGVt cDIsIDAsIGwxKTsKKyAgICB0Y2dfZ2VuX2JyY29uZGlfdGwoVENHX0NPTkRfTkUsIHJfdGVtcCwg MCwgbDEpOwogICAgIHRjZ19nZW5fbW92aV90bChjcHVfY2Nfc3JjMiwgMCk7CiAgICAgZ2VuX3Nl dF9sYWJlbChsMSk7CiAKICAgICAvLyBiMiA9IFQwICYgMTsKICAgICAvLyBlbnYtPnkgPSAoYjIg PDwgMzEpIHwgKGVudi0+eSA+PiAxKTsKLSAgICB0Y2dfZ2VuX3RydW5jX3RsX2kzMihyX3RlbXAy LCBjcHVfY2Nfc3JjKTsKLSAgICB0Y2dfZ2VuX2FuZGlfaTMyKHJfdGVtcDIsIHJfdGVtcDIsIDB4 MSk7Ci0gICAgdGNnX2dlbl9zaGxpX2kzMihyX3RlbXAyLCByX3RlbXAyLCAzMSk7Ci0gICAgdGNn X2dlbl9sZF9pMzIoY3B1X3RtcDMyLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTUEFSQ1N0YXRlLCB5 KSk7Ci0gICAgdGNnX2dlbl9zaHJpX2kzMihjcHVfdG1wMzIsIGNwdV90bXAzMiwgMSk7Ci0gICAg dGNnX2dlbl9vcl9pMzIoY3B1X3RtcDMyLCBjcHVfdG1wMzIsIHJfdGVtcDIpOwotICAgIHRjZ190 ZW1wX2ZyZWUocl90ZW1wMik7Ci0gICAgdGNnX2dlbl9zdF9pMzIoY3B1X3RtcDMyLCBjcHVfZW52 LCBvZmZzZXRvZihDUFVTUEFSQ1N0YXRlLCB5KSk7CisgICAgdGNnX2dlbl9hbmRpX3RsKHJfdGVt cCwgY3B1X2NjX3NyYywgMHgxKTsKKyAgICB0Y2dfZ2VuX3NobGlfdGwocl90ZW1wLCByX3RlbXAs IDMxKTsKKyAgICB0Y2dfZ2VuX2xkX3RsKGNwdV90bXAwLCBjcHVfZW52LCBvZmZzZXRvZihDUFVT UEFSQ1N0YXRlLCB5KSk7CisgICAgdGNnX2dlbl9zaHJpX3RsKGNwdV90bXAwLCBjcHVfdG1wMCwg MSk7CisgICAgdGNnX2dlbl9vcl90bChjcHVfdG1wMCwgY3B1X3RtcDAsIHJfdGVtcCk7CisgICAg dGNnX2dlbl9zdF90bChjcHVfdG1wMCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU1BBUkNTdGF0ZSwg eSkpOwogCiAgICAgLy8gYjEgPSBOIF4gVjsKICAgICBnZW5fbW92X3JlZ19OKGNwdV90bXAwLCBj cHVfcHNyKTsKQEAgLTc3OCw4ICs3NzQsNyBAQAogICAgIHRjZ19nZW5fbXVsX2k2NChyX3RlbXAy LCByX3RlbXAsIHJfdGVtcDIpOwogCiAgICAgdGNnX2dlbl9zaHJpX2k2NChyX3RlbXAsIHJfdGVt cDIsIDMyKTsKLSAgICB0Y2dfZ2VuX3RydW5jX2k2NF9pMzIocl90ZW1wLCByX3RlbXApOwotICAg IHRjZ19nZW5fc3RfaTMyKHJfdGVtcCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU1BBUkNTdGF0ZSwg eSkpOworICAgIHRjZ19nZW5fc3RfdGwocl90ZW1wLCBjcHVfZW52LCBvZmZzZXRvZihDUFVTUEFS Q1N0YXRlLCB5KSk7CiAgICAgdGNnX3RlbXBfZnJlZShyX3RlbXApOwogI2lmZGVmIFRBUkdFVF9T UEFSQzY0CiAgICAgdGNnX2dlbl9tb3ZfaTY0KGRzdCwgcl90ZW1wMik7CkBAIC04MDEsOCArNzk2 LDcgQEAKICAgICB0Y2dfZ2VuX211bF9pNjQocl90ZW1wMiwgcl90ZW1wLCByX3RlbXAyKTsKIAog ICAgIHRjZ19nZW5fc2hyaV9pNjQocl90ZW1wLCByX3RlbXAyLCAzMik7Ci0gICAgdGNnX2dlbl90 cnVuY19pNjRfaTMyKHJfdGVtcCwgcl90ZW1wKTsKLSAgICB0Y2dfZ2VuX3N0X2kzMihyX3RlbXAs IGNwdV9lbnYsIG9mZnNldG9mKENQVVNQQVJDU3RhdGUsIHkpKTsKKyAgICB0Y2dfZ2VuX3N0X3Rs KHJfdGVtcCwgY3B1X2Vudiwgb2Zmc2V0b2YoQ1BVU1BBUkNTdGF0ZSwgeSkpOwogICAgIHRjZ190 ZW1wX2ZyZWUocl90ZW1wKTsKICNpZmRlZiBUQVJHRVRfU1BBUkM2NAogICAgIHRjZ19nZW5fbW92 X2k2NChkc3QsIHJfdGVtcDIpOwo= ------=_Part_16074_14591999.1220289631483--