From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7076 invoked by alias); 5 Feb 2020 17:59:27 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 7027 invoked by uid 89); 5 Feb 2020 17:59:27 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-14.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.1 spammy=msabi, 4.2 X-HELO: mail-oi1-f194.google.com Received: from mail-oi1-f194.google.com (HELO mail-oi1-f194.google.com) (209.85.167.194) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 05 Feb 2020 17:59:24 +0000 Received: by mail-oi1-f194.google.com with SMTP id v19so1605426oic.12 for ; Wed, 05 Feb 2020 09:59:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=CrnmORsGXZ2d8QDqgBEgQI6tfJ6NeOTBiBscC1WhduM=; b=UCse0hDAr4JhNT6AzHvKe72gupcHifWGAuHXqE90kHsqlim2jLk+JXJFhUHVK2M/lX 1Wzi2xCEVMVozEQNmCt1gm1i0Xx1KahxpOg5g8LJU3lFofxVbVmvo7yF3OibSC/EQ2z7 iUQZWt3gkfQef4trIjOPXpR+6+HHwEgSPseeU220ToYQA/bS44hmqhYDJn8m0cJUfW/D ikMCuLHfE6I08/cSAI7AC5QlkePoq0/Hkoq7To8kVedR6NgBPJ1k2lzmG2sBbKw6sQIw 8xIu3M3Hdlh2+YrGhLyZC5rl8Nhy6WEn6PqjL4aI/NjiZhyNfZ+JTj5C3n3uWfTLvTIH GcNA== MIME-Version: 1.0 From: "H.J. Lu" Date: Wed, 05 Feb 2020 17:59:00 -0000 Message-ID: Subject: [PATCH] x86-64: Pass aggregates with only float/double in GPRs for MS_ABI To: GCC Patches , Anthony Green , Uros Bizjak Content-Type: multipart/mixed; boundary="0000000000008ea568059dd7ead4" X-IsSubscribed: yes X-SW-Source: 2020-02/txt/msg00282.txt.bz2 --0000000000008ea568059dd7ead4 Content-Type: text/plain; charset="UTF-8" Content-length: 1924 MS_ABI requires passing aggregates with only float/double in integer registers. Checked gcc outputs against Clang and fixed: FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=54 -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized -O0 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=54 -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized -O2 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=55 -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized -O0 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=55 -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized -O2 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=56 -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized -O0 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test FAIL: libffi.bhaible/test-callback.c -W -Wall -Wno-psabi -DDGTEST=56 -Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized -O2 -DABI_NUM=FFI_GNUW64 -DABI_ATTR=MSABI execution test in libffi testsuite. OK for master and backports to GCC 8/9 branches? gcc/ PR target/85667 * config/i386/i386.c (function_arg_ms_64): Add a type argument. Don't return aggregates with only SFmode and DFmode in SSE register. (ix86_function_arg): Pass arg.type to function_arg_ms_64. gcc/testsuite/ PR target/85667 * gcc.target/i386/pr85667-10.c: New test. * gcc.target/i386/pr85667-7.c: Likewise. * gcc.target/i386/pr85667-8.c: Likewise. * gcc.target/i386/pr85667-9.c: Likewise. -- H.J. --0000000000008ea568059dd7ead4 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-x86-64-Pass-aggregates-with-only-float-double-in-GPR.patch" Content-Disposition: attachment; filename="0001-x86-64-Pass-aggregates-with-only-float-double-in-GPR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k69m7dyw0 Content-length: 10431 RnJvbSBlNTYxZmQ4ZmNiNDZiOGQ4ZTQwOTQyYzA3N2UyNmNlMTIwODMyNzQ3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFdlZCwgNSBGZWIgMjAyMCAwOTo0 OTo1NiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIHg4Ni02NDogUGFzcyBhZ2dy ZWdhdGVzIHdpdGggb25seSBmbG9hdC9kb3VibGUgaW4gR1BScyBmb3IKIE1T X0FCSQoKTVNfQUJJIHJlcXVpcmVzIHBhc3NpbmcgYWdncmVnYXRlcyB3aXRo IG9ubHkgZmxvYXQvZG91YmxlIGluIGludGVnZXIKcmVnaXN0ZXJzLiAgQ2hl Y2tlZCBnY2Mgb3V0cHV0cyBhZ2FpbnN0IENsYW5nIGFuZCBmaXhlZDoKCkZB SUw6IGxpYmZmaS5iaGFpYmxlL3Rlc3QtY2FsbGJhY2suYyAtVyAtV2FsbCAt V25vLXBzYWJpIC1EREdURVNUPTU0IC1Xbm8tdW51c2VkLXZhcmlhYmxlIC1X bm8tdW51c2VkLXBhcmFtZXRlciAtV25vLXVudXNlZC1idXQtc2V0LXZhcmlh YmxlIC1Xbm8tdW5pbml0aWFsaXplZCAtTzAgLURBQklfTlVNPUZGSV9HTlVX NjQgLURBQklfQVRUUj1NU0FCSSBleGVjdXRpb24gdGVzdApGQUlMOiBsaWJm ZmkuYmhhaWJsZS90ZXN0LWNhbGxiYWNrLmMgLVcgLVdhbGwgLVduby1wc2Fi aSAtRERHVEVTVD01NCAtV25vLXVudXNlZC12YXJpYWJsZSAtV25vLXVudXNl ZC1wYXJhbWV0ZXIgLVduby11bnVzZWQtYnV0LXNldC12YXJpYWJsZSAtV25v LXVuaW5pdGlhbGl6ZWQgLU8yIC1EQUJJX05VTT1GRklfR05VVzY0IC1EQUJJ X0FUVFI9TVNBQkkgZXhlY3V0aW9uIHRlc3QKRkFJTDogbGliZmZpLmJoYWli bGUvdGVzdC1jYWxsYmFjay5jIC1XIC1XYWxsIC1Xbm8tcHNhYmkgLURER1RF U1Q9NTUgLVduby11bnVzZWQtdmFyaWFibGUgLVduby11bnVzZWQtcGFyYW1l dGVyIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgLVduby11bmluaXRp YWxpemVkIC1PMCAtREFCSV9OVU09RkZJX0dOVVc2NCAtREFCSV9BVFRSPU1T QUJJIGV4ZWN1dGlvbiB0ZXN0CkZBSUw6IGxpYmZmaS5iaGFpYmxlL3Rlc3Qt Y2FsbGJhY2suYyAtVyAtV2FsbCAtV25vLXBzYWJpIC1EREdURVNUPTU1IC1X bm8tdW51c2VkLXZhcmlhYmxlIC1Xbm8tdW51c2VkLXBhcmFtZXRlciAtV25v LXVudXNlZC1idXQtc2V0LXZhcmlhYmxlIC1Xbm8tdW5pbml0aWFsaXplZCAt TzIgLURBQklfTlVNPUZGSV9HTlVXNjQgLURBQklfQVRUUj1NU0FCSSBleGVj dXRpb24gdGVzdApGQUlMOiBsaWJmZmkuYmhhaWJsZS90ZXN0LWNhbGxiYWNr LmMgLVcgLVdhbGwgLVduby1wc2FiaSAtRERHVEVTVD01NiAtV25vLXVudXNl ZC12YXJpYWJsZSAtV25vLXVudXNlZC1wYXJhbWV0ZXIgLVduby11bnVzZWQt YnV0LXNldC12YXJpYWJsZSAtV25vLXVuaW5pdGlhbGl6ZWQgLU8wIC1EQUJJ X05VTT1GRklfR05VVzY0IC1EQUJJX0FUVFI9TVNBQkkgZXhlY3V0aW9uIHRl c3QKRkFJTDogbGliZmZpLmJoYWlibGUvdGVzdC1jYWxsYmFjay5jIC1XIC1X YWxsIC1Xbm8tcHNhYmkgLURER1RFU1Q9NTYgLVduby11bnVzZWQtdmFyaWFi bGUgLVduby11bnVzZWQtcGFyYW1ldGVyIC1Xbm8tdW51c2VkLWJ1dC1zZXQt dmFyaWFibGUgLVduby11bmluaXRpYWxpemVkIC1PMiAtREFCSV9OVU09RkZJ X0dOVVc2NCAtREFCSV9BVFRSPU1TQUJJIGV4ZWN1dGlvbiB0ZXN0CgppbiBs aWJmZmkgdGVzdHN1aXRlLgoKZ2NjLwoKCVBSIHRhcmdldC84NTY2NwoJKiBj b25maWcvaTM4Ni9pMzg2LmMgKGZ1bmN0aW9uX2FyZ19tc182NCk6IEFkZCBh IHR5cGUgYXJndW1lbnQuCglEb24ndCByZXR1cm4gYWdncmVnYXRlcyB3aXRo IG9ubHkgU0Ztb2RlIGFuZCBERm1vZGUgaW4gU1NFCglyZWdpc3Rlci4KCShp eDg2X2Z1bmN0aW9uX2FyZyk6IFBhc3MgYXJnLnR5cGUgdG8gZnVuY3Rpb25f YXJnX21zXzY0LgoKZ2NjL3Rlc3RzdWl0ZS8KCglQUiB0YXJnZXQvODU2NjcK CSogZ2NjLnRhcmdldC9pMzg2L3ByODU2NjctMTAuYzogTmV3IHRlc3QuCgkq IGdjYy50YXJnZXQvaTM4Ni9wcjg1NjY3LTcuYzogTGlrZXdpc2UuCgkqIGdj Yy50YXJnZXQvaTM4Ni9wcjg1NjY3LTguYzogTGlrZXdpc2UuCgkqIGdjYy50 YXJnZXQvaTM4Ni9wcjg1NjY3LTkuYzogTGlrZXdpc2UuCi0tLQogZ2NjL2Nv bmZpZy9pMzg2L2kzODYuYyAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysr Ky0tCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg1NjY3LTEw LmMgfCAyMSArKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjg1NjY3LTcuYyAgfCAzNiArKysrKysrKysrKysrKysrKysr KysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg1NjY3LTgu YyAgfCAyMSArKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvaTM4Ni9wcjg1NjY3LTkuYyAgfCAzNiArKysrKysrKysrKysrKysrKysr KysrCiA1IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9pMzg2L3ByODU2NjctMTAuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODU2NjctNy5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2kzODYvcHI4NTY2Ny04LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg1NjY3LTkuYwoKZGlmZiAtLWdp dCBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMgYi9nY2MvY29uZmlnL2kzODYv aTM4Ni5jCmluZGV4IGZmZGEzZThmZDIxLi5mNzY5Y2I4Zjc1ZSAxMDA2NDQK LS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYworKysgYi9nY2MvY29uZmln L2kzODYvaTM4Ni5jCkBAIC0zMTUzLDcgKzMxNTMsNyBAQCBmdW5jdGlvbl9h cmdfNjQgKGNvbnN0IENVTVVMQVRJVkVfQVJHUyAqY3VtLCBtYWNoaW5lX21v ZGUgbW9kZSwKIAogc3RhdGljIHJ0eAogZnVuY3Rpb25fYXJnX21zXzY0IChj b25zdCBDVU1VTEFUSVZFX0FSR1MgKmN1bSwgbWFjaGluZV9tb2RlIG1vZGUs Ci0JCSAgICBtYWNoaW5lX21vZGUgb3JpZ19tb2RlLCBib29sIG5hbWVkLAor CQkgICAgbWFjaGluZV9tb2RlIG9yaWdfbW9kZSwgYm9vbCBuYW1lZCwgY29u c3RfdHJlZSB0eXBlLAogCQkgICAgSE9TVF9XSURFX0lOVCBieXRlcykKIHsK ICAgdW5zaWduZWQgaW50IHJlZ25vOwpAQCAtMzE3Myw3ICszMTczLDEwIEBA IGZ1bmN0aW9uX2FyZ19tc182NCAoY29uc3QgQ1VNVUxBVElWRV9BUkdTICpj dW0sIG1hY2hpbmVfbW9kZSBtb2RlLAogICBpZiAoVEFSR0VUX1NTRSAmJiAo bW9kZSA9PSBTRm1vZGUgfHwgbW9kZSA9PSBERm1vZGUpKQogICAgIHsKICAg ICAgIGlmIChuYW1lZCkKLQlyZWdubyA9IGN1bS0+cmVnbm8gKyBGSVJTVF9T U0VfUkVHOworCXsKKwkgIGlmICh0eXBlID09IE5VTExfVFJFRSB8fCAhQUdH UkVHQVRFX1RZUEVfUCAodHlwZSkpCisJICAgIHJlZ25vID0gY3VtLT5yZWdu byArIEZJUlNUX1NTRV9SRUc7CisJfQogICAgICAgZWxzZQogCXsKIAkgIHJ0 eCB0MSwgdDI7CkBAIC0zMjUzLDcgKzMyNTYsOCBAQCBpeDg2X2Z1bmN0aW9u X2FyZyAoY3VtdWxhdGl2ZV9hcmdzX3QgY3VtX3YsIGNvbnN0IGZ1bmN0aW9u X2FyZ19pbmZvICZhcmcpCiAgICAgICBlbnVtIGNhbGxpbmdfYWJpIGNhbGxf YWJpID0gY3VtID8gY3VtLT5jYWxsX2FiaSA6IGl4ODZfYWJpOwogCiAgICAg ICBpZiAoY2FsbF9hYmkgPT0gTVNfQUJJKQotCXJlZyA9IGZ1bmN0aW9uX2Fy Z19tc182NCAoY3VtLCBtb2RlLCBhcmcubW9kZSwgYXJnLm5hbWVkLCBieXRl cyk7CisJcmVnID0gZnVuY3Rpb25fYXJnX21zXzY0IChjdW0sIG1vZGUsIGFy Zy5tb2RlLCBhcmcubmFtZWQsCisJCQkJICBhcmcudHlwZSwgYnl0ZXMpOwog ICAgICAgZWxzZQogCXJlZyA9IGZ1bmN0aW9uX2FyZ182NCAoY3VtLCBtb2Rl LCBhcmcubW9kZSwgYXJnLnR5cGUsIGFyZy5uYW1lZCk7CiAgICAgfQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NTY2 Ny0xMC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NTY2 Ny0xMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5lOGYzMDI2MjI3ZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9pMzg2L3ByODU2NjctMTAuYwpAQCAtMCwwICsxLDIx IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgbHA2NCB9IH0gKi8K Ky8qIHsgZGctb3B0aW9ucyAiLU8yIC1tYXNtPWF0dCIgfSAqLworLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJtb3ZxXFsgXHRcXSol cmN4LCAuKiIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyAibW92cVxbIFx0XF0qJXJkeCwgLioiIDEgfSB9ICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgIm1vdnFcWyBc dFxdKiVyOCwgLioiIDEgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMgIm1vdnFcWyBcdFxdKiVyOSwgLioiIDEgfSB9ICov CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImFkZHNk XFsgXHRdKjQwXFxcKCVyc3BcXFwpLCAuKiIgMSB9IH0gKi8KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAibW92cVxbXlxuXHJcXSos ICVyYXgiIDEgfSB9ICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGRvdWJs ZSB4OworfSBEb3VibGU7CisKK0RvdWJsZSAgX19hdHRyaWJ1dGVfXygobXNf YWJpKSkKK2ZuMSAoRG91YmxlIHgxLCBEb3VibGUgeDIsIERvdWJsZSB4Mywg RG91YmxlIHg0LCBEb3VibGUgeDUpCit7CisgIERvdWJsZSB2OworICB2Lngg PSB4MS54ICsgeDIueCArIHgzLnggKyB4NC54ICsgeDUueDsKKyAgcmV0dXJu IHY7Cit9CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv aTM4Ni9wcjg1NjY3LTcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9p Mzg2L3ByODU2NjctNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi42YmQ4NjA5NzVhNwotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODU2NjctNy5jCkBAIC0w LDAgKzEsMzYgQEAKKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGxwNjQgfSB9 ICovCisvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworCit2b2lkIGFib3J0 ICh2b2lkKTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgZmxvYXQgeDsKK30g RmxvYXQ7CisKK0Zsb2F0ICBfX2F0dHJpYnV0ZV9fKChtc19hYmksIG5vaW5s aW5lLCBub2Nsb25lKSkKK2ZuMSAoRmxvYXQgeDEsIEZsb2F0IHgyLCBGbG9h dCB4MywgRmxvYXQgeDQsIEZsb2F0IHg1KQoreworICBGbG9hdCB2OworICB2 LnggPSB4MS54ICsgeDIueCArIHgzLnggKyB4NC54ICsgeDUueDsKKyAgcmV0 dXJuIHY7Cit9CitpbnQgbWFpbiAoKQoreworICBGbG9hdCBhLCBhMSwgYTIs IGEzLCBhNCwgYTU7CisgIGZsb2F0IHgxID0gMS4xOworICBmbG9hdCB4MiA9 IDMuMTsKKyAgZmxvYXQgeDMgPSA0LjI7CisgIGZsb2F0IHg0ID0gMTQuMjsK KyAgZmxvYXQgeDUgPSAtNy4yOworICBmbG9hdCB4ID0geDEgKyB4MiArIHgz ICsgeDQgKyB4NTsKKyAgYTEueCA9IHgxOworICBhMi54ID0geDI7CisgIGEz LnggPSB4MzsKKyAgYTQueCA9IHg0OworICBhNS54ID0geDU7CisgIGEgPSBm bjEgKGExLCBhMiwgYTMsIGE0LCBhNSk7CisgIGlmIChhLnggPT0geCk7Cisg ICAgcmV0dXJuIDA7IAorICBhYm9ydCAoKTsgICAKK30KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODU2NjctOC5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI4NTY2Ny04LmMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA5YTc1OTNm ZGIzCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L2kzODYvcHI4NTY2Ny04LmMKQEAgLTAsMCArMSwyMSBAQAorLyogeyBk Zy1kbyBjb21waWxlIHsgdGFyZ2V0IGxwNjQgfSB9ICovCisvKiB7IGRnLW9w dGlvbnMgIi1PMiAtbWFzbT1hdHQiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAibW92ZFxbIFx0XF0qJWVjeCwgLioiIDEg fSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg Im1vdmRcWyBcdFxdKiVlZHgsIC4qIiAxIH0gfSAqLworLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzICJtb3ZkXFsgXHRcXSolcjhkLCAu KiIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyAibW92ZFxbIFx0XF0qJXI5ZCwgLioiIDEgfSB9ICovCisvKiB7IGRn LWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImFkZHNzXFsgXHRdKjQw XFxcKCVyc3BcXFwpLCAuKiIgMSB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBz Y2FuLWFzc2VtYmxlci10aW1lcyAibW92ZFxbXlxuXHJcXSosICVlYXgiIDEg fSB9ICovCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIGZsb2F0IHg7Cit9IEZs b2F0OworCitGbG9hdCAgX19hdHRyaWJ1dGVfXygobXNfYWJpKSkKK2ZuMSAo RmxvYXQgeDEsIEZsb2F0IHgyLCBGbG9hdCB4MywgRmxvYXQgeDQsIEZsb2F0 IHg1KQoreworICBGbG9hdCB2OworICB2LnggPSB4MS54ICsgeDIueCArIHgz LnggKyB4NC54ICsgeDUueDsKKyAgcmV0dXJuIHY7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjg1NjY3LTkuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByODU2NjctOS5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44YzkyNzlh MThiZgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9pMzg2L3ByODU2NjctOS5jCkBAIC0wLDAgKzEsMzYgQEAKKy8qIHsg ZGctZG8gcnVuIHsgdGFyZ2V0IGxwNjQgfSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMiIgfSAqLworCit2b2lkIGFib3J0ICh2b2lkKTsKKwordHlwZWRl ZiBzdHJ1Y3QKK3sKKyAgZG91YmxlIHg7Cit9IERvdWJsZTsKKworRG91Ymxl ICBfX2F0dHJpYnV0ZV9fKChtc19hYmksIG5vaW5saW5lLCBub2Nsb25lKSkK K2ZuMSAoRG91YmxlIHgxLCBEb3VibGUgeDIsIERvdWJsZSB4MywgRG91Ymxl IHg0LCBEb3VibGUgeDUpCit7CisgIERvdWJsZSB2OworICB2LnggPSB4MS54 ICsgeDIueCArIHgzLnggKyB4NC54ICsgeDUueDsKKyAgcmV0dXJuIHY7Cit9 CitpbnQgbWFpbiAoKQoreworICBEb3VibGUgYSwgYTEsIGEyLCBhMywgYTQs IGE1OworICBkb3VibGUgeDEgPSAxLjE7CisgIGRvdWJsZSB4MiA9IDMuMTsK KyAgZG91YmxlIHgzID0gNC4yOworICBkb3VibGUgeDQgPSAxNC4yOworICBk b3VibGUgeDUgPSAtNy4yOworICBkb3VibGUgeCA9IHgxICsgeDIgKyB4MyAr IHg0ICsgeDU7CisgIGExLnggPSB4MTsKKyAgYTIueCA9IHgyOworICBhMy54 ID0geDM7CisgIGE0LnggPSB4NDsKKyAgYTUueCA9IHg1OworICBhID0gZm4x IChhMSwgYTIsIGEzLCBhNCwgYTUpOworICBpZiAoYS54ID09IHgpOworICAg IHJldHVybiAwOyAKKyAgYWJvcnQgKCk7ICAgCit9Ci0tIAoyLjI0LjEKCg== --0000000000008ea568059dd7ead4--