From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x636.google.com (mail-pl1-x636.google.com [IPv6:2607:f8b0:4864:20::636]) by sourceware.org (Postfix) with ESMTPS id 5818B3857C4C for ; Tue, 5 Jan 2021 11:42:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 5818B3857C4C Received: by mail-pl1-x636.google.com with SMTP id t6so16242349plq.1 for ; Tue, 05 Jan 2021 03:42:19 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NybYiiWa/x53kkEYp/QCM1q4SKqSIPCAE5HzFvLRTes=; b=OtCcTCDQhNtgPsnfKtfcrfbvdp2xFji+CoG+Fqqc7ewQEbSSKQ2JvFzqg0jIZrCcXY sTuj8FAMAOxVgbD3Ckgic1HIxaK8zvVqAcl2Bz5qHxAEpFZruWQnNQXQ/AO3WXEhvAgm DQMGCkq26OCxExoN6tAxgbbcFoIaxOm+durgVW5yuFl0s+b2CX+rXyPbvLlXKpymzC/n fRfF1N2xN2lc2YUEDCO6IVAsoiavPWCpwmGTagWqkTA6CjXCLLpHwF4JAFjgCbvu5U3m D0sBCiMuKBncsQwBH+WoCcH/yLGkweOsu/VUmPgxf2T8e5VWFzCKTffalwt4GA+K4/lV kqLg== X-Gm-Message-State: AOAM532zsN4UOQF0HBAxvEiCGOBqvmrFHpTZ3Zq20GTtvQUKfyJ+FISp 2+PYk5frDVJkhqqokiTPqCW7ielXbUjg3AdW7aQbSg== X-Google-Smtp-Source: ABdhPJyg/bsG8WCaiyCQxosjeFV5h1PgdU5BS2AO3cptG5ytTYBFq5g+NfBDuwriSvbAovmX5JgSq0E6afg/1zAapPE= X-Received: by 2002:a17:90a:4a4:: with SMTP id g33mr3558077pjg.221.1609846938344; Tue, 05 Jan 2021 03:42:18 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Prathamesh Kulkarni Date: Tue, 5 Jan 2021 17:11:41 +0530 Message-ID: Subject: Re: [PR66791][ARM] Replace __builtin_vext* with __buitlin_shuffle in vext intrinsics To: Kyrylo Tkachov Cc: gcc Patches Content-Type: multipart/mixed; boundary="000000000000e79ba505b825b222" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 05 Jan 2021 11:42:20 -0000 --000000000000e79ba505b825b222 Content-Type: text/plain; charset="UTF-8" On Mon, 4 Jan 2021 at 16:01, Kyrylo Tkachov wrote: > > Hi Prathamesh > > > -----Original Message----- > > From: Prathamesh Kulkarni > > Sent: 04 January 2021 10:27 > > To: gcc Patches ; Kyrylo Tkachov > > > > Subject: [PR66791][ARM] Replace __builtin_vext* with __buitlin_shuffle in > > vext intrinsics > > > > Hi Kyrill, > > The attached patch replaces __builtin_vextv8qi with __builtin_shuffle > > for vext_s8. > > Just wanted to confirm if this is in the correct direction ? > > If yes, I will send a follow up patch that converts for all vext intrinsics. > > Yeah, that does look correct (aarch64 does it that way). > As before, please make sure to delete any now-unused builtins as well. Thanks, does the attached patch look OK ? Testing in progress. Thanks, Prathamesh > > Thanks, > Kyrill > > > > > Thanks, > > Prathamesh --000000000000e79ba505b825b222 Content-Type: application/octet-stream; name="vext-2.diff" Content-Disposition: attachment; filename="vext-2.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjjx8yez0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybV9uZW9uLmggYi9nY2MvY29uZmlnL2FybS9h cm1fbmVvbi5oCmluZGV4IDNlZmNmYTQ1MjI5Li5lZmRhY2VhZmNiNSAxMDA2NDQKLS0tIGEvZ2Nj L2NvbmZpZy9hcm0vYXJtX25lb24uaAorKysgYi9nY2MvY29uZmlnL2FybS9hcm1fbmVvbi5oCkBA IC04NzMzLDc3ICs4NzMzLDEzMSBAQCBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBpbnQ4 eDhfdAogX19hdHRyaWJ1dGVfXyAgKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKIHZleHRfczggKGludDh4OF90IF9fYSwgaW50OHg4X3QgX19iLCBj b25zdCBpbnQgX19jKQogewotICByZXR1cm4gKGludDh4OF90KV9fYnVpbHRpbl9uZW9uX3ZleHR2 OHFpIChfX2EsIF9fYiwgX19jKTsKKyNpZmRlZiBfX0FSTUVCX18KKyAgcmV0dXJuIF9fYnVpbHRp bl9zaHVmZmxlIChfX2IsIF9fYSwgKHVpbnQ4eDhfdCkKKyAgICAgIHs4LV9fYywgOS1fX2MsIDEw LV9fYywgMTEtX19jLCAxMi1fX2MsIDEzLV9fYywgMTQtX19jLCAxNS1fX2N9KTsKKyNlbHNlCisg IHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19hLCBfX2IsICh1aW50OHg4X3QpCisgICAgICB7 X19jLCBfX2MrMSwgX19jKzIsIF9fYyszLCBfX2MrNCwgX19jKzUsIF9fYys2LCBfX2MrN30pOwor I2VuZGlmCiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGludDE2eDRfdAogX19h dHRyaWJ1dGVfXyAgKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZp Y2lhbF9fKSkKIHZleHRfczE2IChpbnQxNng0X3QgX19hLCBpbnQxNng0X3QgX19iLCBjb25zdCBp bnQgX19jKQogewotICByZXR1cm4gKGludDE2eDRfdClfX2J1aWx0aW5fbmVvbl92ZXh0djRoaSAo X19hLCBfX2IsIF9fYyk7CisjaWZkZWYgX19BUk1FQl9fCisgIHJldHVybiBfX2J1aWx0aW5fc2h1 ZmZsZSAoX19iLCBfX2EsICh1aW50MTZ4NF90KQorICAgICAgezQtX19jLCA1LV9fYywgNi1fX2Ms IDctX19jfSk7CisjZWxzZQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYSwgX19iLCAo dWludDE2eDRfdCkKKyAgICAgIHtfX2MsIF9fYysxLCBfX2MrMiwgX19jKzN9KTsKKyNlbmRpZgog fQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBpbnQzMngyX3QKIF9fYXR0cmlidXRl X18gICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykp CiB2ZXh0X3MzMiAoaW50MzJ4Ml90IF9fYSwgaW50MzJ4Ml90IF9fYiwgY29uc3QgaW50IF9fYykK IHsKLSAgcmV0dXJuIChpbnQzMngyX3QpX19idWlsdGluX25lb25fdmV4dHYyc2kgKF9fYSwgX19i LCBfX2MpOworI2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9f YiwgX19hLCAodWludDMyeDJfdCkKKyAgICAgIHsyLV9fYywgMy1fX2N9KTsKKyNlbHNlCisgIHJl dHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19hLCBfX2IsICh1aW50MzJ4Ml90KQorICAgICAge19f YywgX19jKzF9KTsKKyNlbmRpZgogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBp bnQ2NHgxX3QKIF9fYXR0cmlidXRlX18gICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2ZXh0X3M2NCAoaW50NjR4MV90IF9fYSwgaW50NjR4MV90 IF9fYiwgY29uc3QgaW50IF9fYykKIHsKLSAgcmV0dXJuIChpbnQ2NHgxX3QpX19idWlsdGluX25l b25fdmV4dGRpIChfX2EsIF9fYiwgX19jKTsKKyAgcmV0dXJuIF9fYTsKIH0KIAogX19leHRlbnNp b25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQzMngyX3QKIF9fYXR0cmlidXRlX18gICgoX19hbHdh eXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2ZXh0X2YzMiAo ZmxvYXQzMngyX3QgX19hLCBmbG9hdDMyeDJfdCBfX2IsIGNvbnN0IGludCBfX2MpCiB7Ci0gIHJl dHVybiAoZmxvYXQzMngyX3QpX19idWlsdGluX25lb25fdmV4dHYyc2YgKF9fYSwgX19iLCBfX2Mp OworI2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYiwgX19h LCAodWludDMyeDJfdCkKKyAgICAgIHsyLV9fYywgMy1fX2N9KTsKKyNlbHNlCisgIHJldHVybiBf X2J1aWx0aW5fc2h1ZmZsZSAoX19hLCBfX2IsICh1aW50MzJ4Ml90KQorICAgICAge19fYywgX19j KzF9KTsKKyNlbmRpZgogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1aW50OHg4 X3QKIF9fYXR0cmlidXRlX18gICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBf X2FydGlmaWNpYWxfXykpCiB2ZXh0X3U4ICh1aW50OHg4X3QgX19hLCB1aW50OHg4X3QgX19iLCBj b25zdCBpbnQgX19jKQogewotICByZXR1cm4gKHVpbnQ4eDhfdClfX2J1aWx0aW5fbmVvbl92ZXh0 djhxaSAoKGludDh4OF90KSBfX2EsIChpbnQ4eDhfdCkgX19iLCBfX2MpOworI2lmZGVmIF9fQVJN RUJfXworICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYiwgX19hLCAodWludDh4OF90KQor ICAgICAgezgtX19jLCA5LV9fYywgMTAtX19jLCAxMS1fX2MsIDEyLV9fYywgMTMtX19jLCAxNC1f X2MsIDE1LV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxlIChfX2EsIF9f YiwgKHVpbnQ4eDhfdCkKKyAgICAgIHtfX2MsIF9fYysxLCBfX2MrMiwgX19jKzMsIF9fYys0LCBf X2MrNSwgX19jKzYsIF9fYys3fSk7CisjZW5kaWYKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4g X19pbmxpbmUgdWludDE2eDRfdAogX19hdHRyaWJ1dGVfXyAgKChfX2Fsd2F5c19pbmxpbmVfXywg X19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZleHRfdTE2ICh1aW50MTZ4NF90IF9f YSwgdWludDE2eDRfdCBfX2IsIGNvbnN0IGludCBfX2MpCiB7Ci0gIHJldHVybiAodWludDE2eDRf dClfX2J1aWx0aW5fbmVvbl92ZXh0djRoaSAoKGludDE2eDRfdCkgX19hLCAoaW50MTZ4NF90KSBf X2IsIF9fYyk7CisjaWZkZWYgX19BUk1FQl9fCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAo X19iLCBfX2EsICh1aW50MTZ4NF90KQorICAgICAgezQtX19jLCA1LV9fYywgNi1fX2MsIDctX19j fSk7CisjZWxzZQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYSwgX19iLCAodWludDE2 eDRfdCkKKyAgICAgIHtfX2MsIF9fYysxLCBfX2MrMiwgX19jKzN9KTsKKyNlbmRpZgogfQogCiBf X2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1aW50MzJ4Ml90CiBfX2F0dHJpYnV0ZV9fICAo KF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogdmV4 dF91MzIgKHVpbnQzMngyX3QgX19hLCB1aW50MzJ4Ml90IF9fYiwgY29uc3QgaW50IF9fYykKIHsK LSAgcmV0dXJuICh1aW50MzJ4Ml90KV9fYnVpbHRpbl9uZW9uX3ZleHR2MnNpICgoaW50MzJ4Ml90 KSBfX2EsIChpbnQzMngyX3QpIF9fYiwgX19jKTsKKyNpZmRlZiBfX0FSTUVCX18KKyAgcmV0dXJu IF9fYnVpbHRpbl9zaHVmZmxlIChfX2IsIF9fYSwgKHVpbnQzMngyX3QpCisgICAgICB7Mi1fX2Ms IDMtX19jfSk7CisjZWxzZQorICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYSwgX19iLCAo dWludDMyeDJfdCkKKyAgICAgIHtfX2MsIF9fYysxfSk7CisjZW5kaWYKIH0KIAogX19leHRlbnNp b25fXyBleHRlcm4gX19pbmxpbmUgdWludDY0eDFfdAogX19hdHRyaWJ1dGVfXyAgKChfX2Fsd2F5 c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZleHRfdTY0ICh1 aW50NjR4MV90IF9fYSwgdWludDY0eDFfdCBfX2IsIGNvbnN0IGludCBfX2MpCiB7Ci0gIHJldHVy biAodWludDY0eDFfdClfX2J1aWx0aW5fbmVvbl92ZXh0ZGkgKChpbnQ2NHgxX3QpIF9fYSwgKGlu dDY0eDFfdCkgX19iLCBfX2MpOworICByZXR1cm4gX19hOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4 dGVybiBfX2lubGluZSBwb2x5OHg4X3QKIF9fYXR0cmlidXRlX18gICgoX19hbHdheXNfaW5saW5l X18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2ZXh0X3A4IChwb2x5OHg4X3Qg X19hLCBwb2x5OHg4X3QgX19iLCBjb25zdCBpbnQgX19jKQogewotICByZXR1cm4gKHBvbHk4eDhf dClfX2J1aWx0aW5fbmVvbl92ZXh0djhxaSAoKGludDh4OF90KSBfX2EsIChpbnQ4eDhfdCkgX19i LCBfX2MpOworI2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9f YiwgX19hLCAodWludDh4OF90KQorICAgICAgezgtX19jLCA5LV9fYywgMTAtX19jLCAxMS1fX2Ms IDEyLV9fYywgMTMtX19jLCAxNC1fX2MsIDE1LV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9fYnVp bHRpbl9zaHVmZmxlIChfX2EsIF9fYiwgKHVpbnQ4eDhfdCkKKyAgICAgIHtfX2MsIF9fYysxLCBf X2MrMiwgX19jKzMsIF9fYys0LCBfX2MrNSwgX19jKzYsIF9fYys3fSk7CisjZW5kaWYKIH0KIAog X19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgcG9seTE2eDRfdAogX19hdHRyaWJ1dGVfXyAg KChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZl eHRfcDE2IChwb2x5MTZ4NF90IF9fYSwgcG9seTE2eDRfdCBfX2IsIGNvbnN0IGludCBfX2MpCiB7 Ci0gIHJldHVybiAocG9seTE2eDRfdClfX2J1aWx0aW5fbmVvbl92ZXh0djRoaSAoKGludDE2eDRf dCkgX19hLCAoaW50MTZ4NF90KSBfX2IsIF9fYyk7CisjaWZkZWYgX19BUk1FQl9fCisgIHJldHVy biBfX2J1aWx0aW5fc2h1ZmZsZSAoX19iLCBfX2EsICh1aW50MTZ4NF90KQorICAgICAgezQtX19j LCA1LV9fYywgNi1fX2MsIDctX19jfSk7CisjZWxzZQorICByZXR1cm4gX19idWlsdGluX3NodWZm bGUgKF9fYSwgX19iLCAodWludDE2eDRfdCkKKyAgICAgIHtfX2MsIF9fYysxLCBfX2MrMiwgX19j KzN9KTsKKyNlbmRpZgogfQogCiAjcHJhZ21hIEdDQyBwdXNoX29wdGlvbnMKQEAgLTg4MTIsNyAr ODg2NiwxMyBAQCBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBwb2x5NjR4Ml90CiBfX2F0 dHJpYnV0ZV9fICAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQogdmV4dHFfcDY0IChwb2x5NjR4Ml90IF9fYSwgcG9seTY0eDJfdCBfX2IsIGNvbnN0 IGludCBfX2MpCiB7Ci0gIHJldHVybiAocG9seTY0eDJfdClfX2J1aWx0aW5fbmVvbl92ZXh0djJk aSAoKGludDY0eDJfdCkgX19hLCAoaW50NjR4Ml90KSBfX2IsIF9fYyk7CisjaWZkZWYgX19BUk1F Ql9fCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19iLCBfX2EsICh1aW50MzJ4Ml90KQor ICAgICAgezItX19jLCAzLV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxl IChfX2EsIF9fYiwgKHVpbnQzMngyX3QpCisgICAgICB7X19jLCBfX2MrMX0pOworI2VuZGlmCiB9 CiAKICNwcmFnbWEgR0NDIHBvcF9vcHRpb25zCkBAIC04ODIwLDc3ICs4ODgwLDE0NSBAQCBfX2V4 dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBpbnQ4eDE2X3QKIF9fYXR0cmlidXRlX18gICgoX19h bHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2ZXh0cV9z OCAoaW50OHgxNl90IF9fYSwgaW50OHgxNl90IF9fYiwgY29uc3QgaW50IF9fYykKIHsKLSAgcmV0 dXJuIChpbnQ4eDE2X3QpX19idWlsdGluX25lb25fdmV4dHYxNnFpIChfX2EsIF9fYiwgX19jKTsK KyNpZmRlZiBfX0FSTUVCX18KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxlIChfX2IsIF9fYSwg KHVpbnQ4eDE2X3QpCisgICAgICB7MTYtX19jLCAxNy1fX2MsIDE4LV9fYywgMTktX19jLCAyMC1f X2MsIDIxLV9fYywgMjItX19jLCAyMy1fX2MsCisgICAgICAgMjQtX19jLCAyNS1fX2MsIDI2LV9f YywgMjctX19jLCAyOC1fX2MsIDI5LV9fYywgMzAtX19jLCAzMS1fX2N9KTsKKyNlbHNlCisgIHJl dHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19hLCBfX2IsICh1aW50OHgxNl90KQorICAgICAge19f YywgX19jKzEsIF9fYysyLCBfX2MrMywgX19jKzQsIF9fYys1LCBfX2MrNiwgX19jKzcsCisgICAg ICAgX19jKzgsIF9fYys5LCBfX2MrMTAsIF9fYysxMSwgX19jKzEyLCBfX2MrMTMsIF9fYysxNCwg X19jKzE1fSk7CisjZW5kaWYKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgaW50 MTZ4OF90CiBfX2F0dHJpYnV0ZV9fICAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQogdmV4dHFfczE2IChpbnQxNng4X3QgX19hLCBpbnQxNng4X3Qg X19iLCBjb25zdCBpbnQgX19jKQogewotICByZXR1cm4gKGludDE2eDhfdClfX2J1aWx0aW5fbmVv bl92ZXh0djhoaSAoX19hLCBfX2IsIF9fYyk7CisjaWZkZWYgX19BUk1FQl9fCisgIHJldHVybiBf X2J1aWx0aW5fc2h1ZmZsZSAoX19iLCBfX2EsICh1aW50MTZ4OF90KQorICAgICAgezgtX19jLCA5 LV9fYywgMTAtX19jLCAxMS1fX2MsIDEyLV9fYywgMTMtX19jLCAxNC1fX2MsIDE1LV9fY30pOwor I2Vsc2UKKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxlIChfX2EsIF9fYiwgKHVpbnQxNng4X3Qp CisgICAgICB7X19jLCBfX2MrMSwgX19jKzIsIF9fYyszLCBfX2MrNCwgX19jKzUsIF9fYys2LCBf X2MrN30pOworI2VuZGlmCiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGludDMy eDRfdAogX19hdHRyaWJ1dGVfXyAgKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18s IF9fYXJ0aWZpY2lhbF9fKSkKIHZleHRxX3MzMiAoaW50MzJ4NF90IF9fYSwgaW50MzJ4NF90IF9f YiwgY29uc3QgaW50IF9fYykKIHsKLSAgcmV0dXJuIChpbnQzMng0X3QpX19idWlsdGluX25lb25f dmV4dHY0c2kgKF9fYSwgX19iLCBfX2MpOworI2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19i dWlsdGluX3NodWZmbGUgKF9fYiwgX19hLCAodWludDMyeDRfdCkKKyAgICAgIHs0LV9fYywgNS1f X2MsIDYtX19jLCA3LV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxlIChf X2EsIF9fYiwgKHVpbnQzMng0X3QpCisgICAgICB7X19jLCBfX2MrMSwgX19jKzIsIF9fYyszfSk7 CisjZW5kaWYKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgaW50NjR4Ml90CiBf X2F0dHJpYnV0ZV9fICAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRp ZmljaWFsX18pKQogdmV4dHFfczY0IChpbnQ2NHgyX3QgX19hLCBpbnQ2NHgyX3QgX19iLCBjb25z dCBpbnQgX19jKQogewotICByZXR1cm4gKGludDY0eDJfdClfX2J1aWx0aW5fbmVvbl92ZXh0djJk aSAoX19hLCBfX2IsIF9fYyk7CisjaWZkZWYgX19BUk1FQl9fCisgIHJldHVybiBfX2J1aWx0aW5f c2h1ZmZsZSAoX19iLCBfX2EsICh1aW50NjR4Ml90KSB7Mi1fX2MsIDMtX19jfSk7CisjZWxzZQor ICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYSwgX19iLCAodWludDY0eDJfdCkge19fYywg X19jKzF9KTsKKyNlbmRpZgogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBmbG9h dDMyeDRfdAogX19hdHRyaWJ1dGVfXyAgKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZleHRxX2YzMiAoZmxvYXQzMng0X3QgX19hLCBmbG9hdDMy eDRfdCBfX2IsIGNvbnN0IGludCBfX2MpCiB7Ci0gIHJldHVybiAoZmxvYXQzMng0X3QpX19idWls dGluX25lb25fdmV4dHY0c2YgKF9fYSwgX19iLCBfX2MpOworI2lmZGVmIF9fQVJNRUJfXworICBy ZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYiwgX19hLCAodWludDMyeDRfdCkKKyAgICAgIHs0 LV9fYywgNS1fX2MsIDYtX19jLCA3LV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9fYnVpbHRpbl9z aHVmZmxlIChfX2EsIF9fYiwgKHVpbnQzMng0X3QpCisgICAgICB7X19jLCBfX2MrMSwgX19jKzIs IF9fYyszfSk7CisjZW5kaWYKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdWlu dDh4MTZfdAogX19hdHRyaWJ1dGVfXyAgKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5l X18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZleHRxX3U4ICh1aW50OHgxNl90IF9fYSwgdWludDh4MTZf dCBfX2IsIGNvbnN0IGludCBfX2MpCiB7Ci0gIHJldHVybiAodWludDh4MTZfdClfX2J1aWx0aW5f bmVvbl92ZXh0djE2cWkgKChpbnQ4eDE2X3QpIF9fYSwgKGludDh4MTZfdCkgX19iLCBfX2MpOwor I2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19idWlsdGluX3NodWZmbGUgKF9fYiwgX19hLCAo dWludDh4MTZfdCkKKyAgICAgIHsxNi1fX2MsIDE3LV9fYywgMTgtX19jLCAxOS1fX2MsIDIwLV9f YywgMjEtX19jLCAyMi1fX2MsIDIzLV9fYywKKyAgICAgICAyNC1fX2MsIDI1LV9fYywgMjYtX19j LCAyNy1fX2MsIDI4LV9fYywgMjktX19jLCAzMC1fX2MsIDMxLV9fY30pOworI2Vsc2UKKyAgcmV0 dXJuIF9fYnVpbHRpbl9zaHVmZmxlIChfX2EsIF9fYiwgKHVpbnQ4eDE2X3QpCisgICAgICB7X19j LCBfX2MrMSwgX19jKzIsIF9fYyszLCBfX2MrNCwgX19jKzUsIF9fYys2LCBfX2MrNywKKyAgICAg ICBfX2MrOCwgX19jKzksIF9fYysxMCwgX19jKzExLCBfX2MrMTIsIF9fYysxMywgX19jKzE0LCBf X2MrMTV9KTsKKyNlbmRpZgogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1aW50 MTZ4OF90CiBfX2F0dHJpYnV0ZV9fICAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQogdmV4dHFfdTE2ICh1aW50MTZ4OF90IF9fYSwgdWludDE2eDhf dCBfX2IsIGNvbnN0IGludCBfX2MpCiB7Ci0gIHJldHVybiAodWludDE2eDhfdClfX2J1aWx0aW5f bmVvbl92ZXh0djhoaSAoKGludDE2eDhfdCkgX19hLCAoaW50MTZ4OF90KSBfX2IsIF9fYyk7Cisj aWZkZWYgX19BUk1FQl9fCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19iLCBfX2EsICh1 aW50MTZ4OF90KQorICAgICAgezgtX19jLCA5LV9fYywgMTAtX19jLCAxMS1fX2MsIDEyLV9fYywg MTMtX19jLCAxNC1fX2MsIDE1LV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVm ZmxlIChfX2EsIF9fYiwgKHVpbnQxNng4X3QpCisgICAgICB7X19jLCBfX2MrMSwgX19jKzIsIF9f YyszLCBfX2MrNCwgX19jKzUsIF9fYys2LCBfX2MrN30pOworI2VuZGlmCiB9CiAKIF9fZXh0ZW5z aW9uX18gZXh0ZXJuIF9faW5saW5lIHVpbnQzMng0X3QKIF9fYXR0cmlidXRlX18gICgoX19hbHdh eXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2ZXh0cV91MzIg KHVpbnQzMng0X3QgX19hLCB1aW50MzJ4NF90IF9fYiwgY29uc3QgaW50IF9fYykKIHsKLSAgcmV0 dXJuICh1aW50MzJ4NF90KV9fYnVpbHRpbl9uZW9uX3ZleHR2NHNpICgoaW50MzJ4NF90KSBfX2Es IChpbnQzMng0X3QpIF9fYiwgX19jKTsKKyNpZmRlZiBfX0FSTUVCX18KKyAgcmV0dXJuIF9fYnVp bHRpbl9zaHVmZmxlIChfX2IsIF9fYSwgKHVpbnQzMng0X3QpCisgICAgICB7NC1fX2MsIDUtX19j LCA2LV9fYywgNy1fX2N9KTsKKyNlbHNlCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19h LCBfX2IsICh1aW50MzJ4NF90KQorICAgICAge19fYywgX19jKzEsIF9fYysyLCBfX2MrM30pOwor I2VuZGlmCiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVpbnQ2NHgyX3QKIF9f YXR0cmlidXRlX18gICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCiB2ZXh0cV91NjQgKHVpbnQ2NHgyX3QgX19hLCB1aW50NjR4Ml90IF9fYiwgY29u c3QgaW50IF9fYykKIHsKLSAgcmV0dXJuICh1aW50NjR4Ml90KV9fYnVpbHRpbl9uZW9uX3ZleHR2 MmRpICgoaW50NjR4Ml90KSBfX2EsIChpbnQ2NHgyX3QpIF9fYiwgX19jKTsKKyNpZmRlZiBfX0FS TUVCX18KKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxlIChfX2IsIF9fYSwgKHVpbnQ2NHgyX3Qp IHsyLV9fYywgMy1fX2N9KTsKKyNlbHNlCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19h LCBfX2IsICh1aW50NjR4Ml90KSB7X19jLCBfX2MrMX0pOworI2VuZGlmCiB9CiAKIF9fZXh0ZW5z aW9uX18gZXh0ZXJuIF9faW5saW5lIHBvbHk4eDE2X3QKIF9fYXR0cmlidXRlX18gICgoX19hbHdh eXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2ZXh0cV9wOCAo cG9seTh4MTZfdCBfX2EsIHBvbHk4eDE2X3QgX19iLCBjb25zdCBpbnQgX19jKQogewotICByZXR1 cm4gKHBvbHk4eDE2X3QpX19idWlsdGluX25lb25fdmV4dHYxNnFpICgoaW50OHgxNl90KSBfX2Es IChpbnQ4eDE2X3QpIF9fYiwgX19jKTsKKyNpZmRlZiBfX0FSTUVCX18KKyAgcmV0dXJuIF9fYnVp bHRpbl9zaHVmZmxlIChfX2IsIF9fYSwgKHVpbnQ4eDE2X3QpCisgICAgICB7MTYtX19jLCAxNy1f X2MsIDE4LV9fYywgMTktX19jLCAyMC1fX2MsIDIxLV9fYywgMjItX19jLCAyMy1fX2MsCisgICAg ICAgMjQtX19jLCAyNS1fX2MsIDI2LV9fYywgMjctX19jLCAyOC1fX2MsIDI5LV9fYywgMzAtX19j LCAzMS1fX2N9KTsKKyNlbHNlCisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19hLCBfX2Is ICh1aW50OHgxNl90KQorICAgICAge19fYywgX19jKzEsIF9fYysyLCBfX2MrMywgX19jKzQsIF9f Yys1LCBfX2MrNiwgX19jKzcsCisgICAgICAgX19jKzgsIF9fYys5LCBfX2MrMTAsIF9fYysxMSwg X19jKzEyLCBfX2MrMTMsIF9fYysxNCwgX19jKzE1fSk7CisjZW5kaWYKIH0KIAogX19leHRlbnNp b25fXyBleHRlcm4gX19pbmxpbmUgcG9seTE2eDhfdAogX19hdHRyaWJ1dGVfXyAgKChfX2Fsd2F5 c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZleHRxX3AxNiAo cG9seTE2eDhfdCBfX2EsIHBvbHkxNng4X3QgX19iLCBjb25zdCBpbnQgX19jKQogewotICByZXR1 cm4gKHBvbHkxNng4X3QpX19idWlsdGluX25lb25fdmV4dHY4aGkgKChpbnQxNng4X3QpIF9fYSwg KGludDE2eDhfdCkgX19iLCBfX2MpOworI2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19idWls dGluX3NodWZmbGUgKF9fYiwgX19hLCAodWludDE2eDhfdCkKKyAgICAgIHs4LV9fYywgOS1fX2Ms IDEwLV9fYywgMTEtX19jLCAxMi1fX2MsIDEzLV9fYywgMTQtX19jLCAxNS1fX2N9KTsKKyNlbHNl CisgIHJldHVybiBfX2J1aWx0aW5fc2h1ZmZsZSAoX19hLCBfX2IsICh1aW50MTZ4OF90KQorICAg ICAge19fYywgX19jKzEsIF9fYysyLCBfX2MrMywgX19jKzQsIF9fYys1LCBfX2MrNiwgX19jKzd9 KTsKKyNlbmRpZgogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSBpbnQ4eDhfdApA QCAtMTc5MDcsMTQgKzE4MDM1LDI2IEBAIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGZs b2F0MTZ4NF90CiBfX2F0dHJpYnV0ZV9fICAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxp bmVfXywgX19hcnRpZmljaWFsX18pKQogdmV4dF9mMTYgKGZsb2F0MTZ4NF90IF9fYSwgZmxvYXQx Nng0X3QgX19iLCBjb25zdCBpbnQgX19jKQogewotICByZXR1cm4gX19idWlsdGluX25lb25fdmV4 dHY0aGYgKF9fYSwgX19iLCBfX2MpOworI2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19idWls dGluX3NodWZmbGUgKF9fYiwgX19hLCAodWludDE2eDRfdCkKKyAgICAgIHs0LV9fYywgNS1fX2Ms IDYtX19jLCA3LV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9fYnVpbHRpbl9zaHVmZmxlIChfX2Es IF9fYiwgKHVpbnQxNng0X3QpCisgICAgICB7X19jLCBfX2MrMSwgX19jKzIsIF9fYyszfSk7Cisj ZW5kaWYKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgZmxvYXQxNng4X3QKIF9f YXR0cmlidXRlX18gICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlm aWNpYWxfXykpCiB2ZXh0cV9mMTYgKGZsb2F0MTZ4OF90IF9fYSwgZmxvYXQxNng4X3QgX19iLCBj b25zdCBpbnQgX19jKQogewotICByZXR1cm4gX19idWlsdGluX25lb25fdmV4dHY4aGYgKF9fYSwg X19iLCBfX2MpOworI2lmZGVmIF9fQVJNRUJfXworICByZXR1cm4gX19idWlsdGluX3NodWZmbGUg KF9fYiwgX19hLCAodWludDE2eDhfdCkKKyAgICAgIHs4LV9fYywgOS1fX2MsIDEwLV9fYywgMTEt X19jLCAxMi1fX2MsIDEzLV9fYywgMTQtX19jLDE1LV9fY30pOworI2Vsc2UKKyAgcmV0dXJuIF9f YnVpbHRpbl9zaHVmZmxlIChfX2EsIF9fYiwgKHVpbnQxNng4X3QpCisgICAgICB7X19jLCBfX2Mr MSwgX19jKzIsIF9fYyszLCBfX2MrNCwgX19jKzUsIF9fYys2LCBfX2MrN30pOworI2VuZGlmCiB9 CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGZsb2F0MTZ4NF90CmRpZmYgLS1naXQg YS9nY2MvY29uZmlnL2FybS9hcm1fbmVvbl9idWlsdGlucy5kZWYgYi9nY2MvY29uZmlnL2FybS9h cm1fbmVvbl9idWlsdGlucy5kZWYKaW5kZXggYWUxMDRkNWJhMWIuLjY4MzRiOGRmZGNkIDEwMDY0 NAotLS0gYS9nY2MvY29uZmlnL2FybS9hcm1fbmVvbl9idWlsdGlucy5kZWYKKysrIGIvZ2NjL2Nv bmZpZy9hcm0vYXJtX25lb25fYnVpbHRpbnMuZGVmCkBAIC0yNDcsOSArMjQ3LDYgQEAgVkFSNiAo TUFDX04sIHZtbHNfbiwgdjRoaSwgdjJzaSwgdjJzZiwgdjhoaSwgdjRzaSwgdjRzZikKIFZBUjIg KE1BQ19OLCB2bWxzbHNfbiwgdjRoaSwgdjJzaSkKIFZBUjIgKE1BQ19OLCB2bWxzbHVfbiwgdjRo aSwgdjJzaSkKIFZBUjIgKE1BQ19OLCB2cWRtbHNsX24sIHY0aGksIHYyc2kpCi1WQVIxMCAoU0VU TEFORSwgdmV4dCwKLQkgdjhxaSwgdjRoaSwgdjJzaSwgdjJzZiwgZGksIHYxNnFpLCB2OGhpLCB2 NHNpLCB2NHNmLCB2MmRpKQotVkFSMiAoU0VUTEFORSwgdmV4dCwgdjhoZiwgdjRoZikKIFZBUjgg KFVOT1AsIHZyZXY2NCwgdjhxaSwgdjRoaSwgdjJzaSwgdjJzZiwgdjE2cWksIHY4aGksIHY0c2ks IHY0c2YpCiBWQVI0IChVTk9QLCB2cmV2MzIsIHY4cWksIHY0aGksIHYxNnFpLCB2OGhpKQogVkFS MiAoVU5PUCwgdnJldjE2LCB2OHFpLCB2MTZxaSkK --000000000000e79ba505b825b222--