From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oi1-x22d.google.com (mail-oi1-x22d.google.com [IPv6:2607:f8b0:4864:20::22d]) by sourceware.org (Postfix) with ESMTPS id 3E6AF3858D35 for ; Mon, 2 Oct 2023 02:43:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3E6AF3858D35 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com Received: by mail-oi1-x22d.google.com with SMTP id 5614622812f47-3af603da0d1so3282922b6e.1 for ; Sun, 01 Oct 2023 19:43:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1696214636; x=1696819436; darn=gcc.gnu.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=hNzUyZ890SH/tm34nRQoVnP+WJ4BFmp7z1DvjynQsTY=; b=Wuy8T6LBT86CJLPZCI6Au2GSpaESAjOaOfLTt31EkFIeMJAx+VGcoZibx8fUOCFGeG xhZWllPd3Ye+/Ph/t1fHU6lHk9kflpR1T4pI2FpEOLmcxxbYRCNU6nhRRJAZzb4OO8EW HDtTtzFMUcCQgondCxwMFYDVl8UNf1nhPIoKkrHC6YQPc27Q0g/sNHBrEg6YpE8dRXSs R6++AJMB0URgOrGqkBS8mMGKZxrKqtsfrwrYrYxRKMaYTRW2o13va95VhdbHTTetJc9b SdZ4wfG+we+J3fEB9VDm0e771sh+EbZ8UQYlPEy0uKCORdfTZNDGy30TY1LHjgWNDoSM QNxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696214636; x=1696819436; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hNzUyZ890SH/tm34nRQoVnP+WJ4BFmp7z1DvjynQsTY=; b=rSyA//AgZ6GCJv82S08NcqhAD0Saod+MtbPOQgqWJbjEaWMBx2nx9gYKj/ckt2QRPY PqZJn1eRUIwpF5zTKYpBXsuCeq2/Ho3oQZvvuAI2RfAuHC6/ZckM8uM/AqOybgTd9jIg hxizrlrF6mhkwaBeuulEvoayFEgZS2zZlDWrqSK9PYV/H49qSYVYNTH/b/uGt6rwtSHN CnEzIelRGZIZRK+ZOhtKr75A2nQDgut6Qrl4P9U0F37xDxNW0kWfV+CC65pZvdGE0bHN g6I0agk95M0WgXrYDeIFPT6qe/pBjM3X8U3t0ChN/2C5ChLlDv4dFLJT7hMQK6zTrsc9 5D7g== X-Gm-Message-State: AOJu0YyiBCOYFNdoqsmZbB1jtr0R8yOqmOCvx35K1kMZv+wEas0G4nkl vDKKRNkVVDcxMGOGVgDejYIFxLZ8qA+/ptKv2fEvcfoj+RmlgPmP X-Google-Smtp-Source: AGHT+IE0Bh6i2Y5+oEjdzRDAgOsEbOIrf4rpvyCYZHdWvhbS/rk7tXyusePY2OIpf2ImzqUdsCS1/25hwip9FVgjDnU= X-Received: by 2002:aca:130d:0:b0:3a7:d566:8b5e with SMTP id e13-20020aca130d000000b003a7d5668b5emr10578753oii.44.1696214636380; Sun, 01 Oct 2023 19:43:56 -0700 (PDT) MIME-Version: 1.0 References: <1525C65921357A3C+2023080507101006323211@rivai.ai> <5814e96a-9d86-d428-cf48-ec1ab80eb2d9@gmail.com> <960B8F718A41FF46+2023080507344044042924@rivai.ai> <91d19edb-6e56-b538-a0c3-3a322dba80ad@gmail.com> In-Reply-To: <91d19edb-6e56-b538-a0c3-3a322dba80ad@gmail.com> From: Joern Rennecke Date: Mon, 2 Oct 2023 03:43:45 +0100 Message-ID: Subject: [RISC-V]: Re: cpymem for RISCV with v extension To: GCC Patches Cc: "juzhe.zhong@rivai.ai" , "kito.cheng" , "Kito.cheng" , Robin Dapp , Jeff Law Content-Type: multipart/mixed; boundary="000000000000de304b0606b2bec5" X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000de304b0606b2bec5 Content-Type: text/plain; charset="UTF-8" On Tue, 15 Aug 2023 at 15:06, Jeff Law wrote: > > On 8/15/23 03:16, juzhe.zhong@rivai.ai wrote: > > The new patch looks reasonable to me now. Thanks for fixing it. > > > > Could you append testcase after finishing test infrastructure ? > > I prefer this patch with testcase after infrastructure. > So let's call this an ACK, but ask that Joern not commit until the > testsuite bits are in place. Beyond the adding of tests, the patch needed some changes because of the Refactoring of emit_{vlmax,nonvlmax}_xxx functions . Attached is the committed version. --000000000000de304b0606b2bec5 Content-Type: text/plain; charset="US-ASCII"; name="cpymem-20231002.txt" Content-Disposition: attachment; filename="cpymem-20231002.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ln8aanbg0 Y29tbWl0IDk0NjRlNzJiY2M5MTIzYjYxOTIxNWFmOGNmZWY0OTE3NzJhM2ViZDkKQXV0aG9yOiBK b2VybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAZW1iZWNvc20uY29tPgpEYXRlOiAgIE1vbiBP Y3QgMiAwMzoxNjowOSAyMDIzICswMTAwCgogICAgY3B5bWVtIGZvciBSSVNDLVYgd2l0aCB2IGV4 dGVuc2lvbgogICAgCiAgICBnY2MvCiAgICAgICAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2LXBy b3Rvcy5oIChyaXNjdl92ZWN0b3I6OmV4cGFuZF9ibG9ja19tb3ZlKToKICAgICAgICAgICAgRGVj bGFyZS4KICAgICAgICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3Ytdi5jYyAocmlzY3ZfdmVjdG9y OjpleHBhbmRfYmxvY2tfbW92ZSk6CiAgICAgICAgICAgIE5ldyBmdW5jdGlvbi4KICAgICAgICAg ICAgKiBjb25maWcvcmlzY3YvcmlzY3YubWQgKGNweW1lbXNpKTogVXNlIHJpc2N2X3ZlY3Rvcjo6 ZXhwYW5kX2Jsb2NrX21vdmUuCiAgICAgICAgICAgIENoYW5nZSB0byAuLgogICAgICAgICAgICAo Y3B5bWVtPFA6bW9kZT4pIC4uIHRoaXMuCiAgICAKICAgIGdjYy90ZXN0c3VpdGUvCiAgICAgICAg ICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9jcHltZW0tMS5jOiBOZXcgdGVzdC4KICAg ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2NweW1lbS0yLmM6IExpa2V3aXNl LgogICAgCiAgICBDby1BdXRob3JlZC1CeTogSnV6aGUtWmhvbmcgPGp1emhlLnpob25nQHJpdmFp LmFpPgoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YtcHJvdG9zLmggYi9nY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oCmluZGV4IGFmNWJhZjM3ZTZhLi40MzQyNmE1MzI2 YiAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaAorKysgYi9nY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oCkBAIC00OTIsNiArNDkyLDcgQEAgYm9vbCBzbGlk ZTFfc2V3NjRfaGVscGVyIChpbnQsIG1hY2hpbmVfbW9kZSwgbWFjaGluZV9tb2RlLAogCQkJICBt YWNoaW5lX21vZGUsIHJ0eCAqKTsKIHJ0eCBnZW5fYXZsX2Zvcl9zY2FsYXJfbW92ZSAocnR4KTsK IHZvaWQgZXhwYW5kX3R1cGxlX21vdmUgKHJ0eCAqKTsKK2Jvb2wgZXhwYW5kX2Jsb2NrX21vdmUg KHJ0eCwgcnR4LCBydHgpOwogbWFjaGluZV9tb2RlIHByZWZlcnJlZF9zaW1kX21vZGUgKHNjYWxh cl9tb2RlKTsKIG1hY2hpbmVfbW9kZSBnZXRfbWFza19tb2RlIChtYWNoaW5lX21vZGUpOwogdm9p ZCBleHBhbmRfdmVjX3NlcmllcyAocnR4LCBydHgsIHJ0eCk7CmRpZmYgLS1naXQgYS9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2LXYuY2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MKaW5kZXgg MDk3NDU3NTYyYmQuLjI5ZTEzOGUxZGEyIDEwMDY0NAotLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LXYuY2MKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12LmNjCkBAIC00OSw2ICs0OSw3 IEBACiAjaW5jbHVkZSAidG0tY29uc3Rycy5oIgogI2luY2x1ZGUgInJ0eC12ZWN0b3ItYnVpbGRl ci5oIgogI2luY2x1ZGUgInRhcmdob29rcy5oIgorI2luY2x1ZGUgInByZWRpY3QuaCIKIAogdXNp bmcgbmFtZXNwYWNlIHJpc2N2X3ZlY3RvcjsKIApAQCAtMTk5MSw2ICsxOTkyLDIwNiBAQCBleHBh bmRfdHVwbGVfbW92ZSAocnR4ICpvcHMpCiAgICAgfQogfQogCisvKiBVc2VkIGJ5IGNweW1lbXNp IGluIHJpc2N2Lm1kIC4gICovCisKK2Jvb2wKK2V4cGFuZF9ibG9ja19tb3ZlIChydHggZHN0X2lu LCBydHggc3JjX2luLCBydHggbGVuZ3RoX2luKQoreworICAvKgorICAgIG1lbWNweToKKwltdiBh MywgYTAgICAgICAgICAgICAgICAgICAgICAgICMgQ29weSBkZXN0aW5hdGlvbgorICAgIGxvb3A6 CisJdnNldHZsaSB0MCwgYTIsIGU4LCBtOCwgdGEsIG1hICAjIFZlY3RvcnMgb2YgOGIKKwl2bGU4 LnYgdjAsIChhMSkgICAgICAgICAgICAgICAgICMgTG9hZCBieXRlcworCWFkZCBhMSwgYTEsIHQw ICAgICAgICAgICAgICAgICAgIyBCdW1wIHBvaW50ZXIKKwlzdWIgYTIsIGEyLCB0MCAgICAgICAg ICAgICAgICAgICMgRGVjcmVtZW50IGNvdW50CisJdnNlOC52IHYwLCAoYTMpICAgICAgICAgICAg ICAgICAjIFN0b3JlIGJ5dGVzCisJYWRkIGEzLCBhMywgdDAgICAgICAgICAgICAgICAgICAjIEJ1 bXAgcG9pbnRlcgorCWJuZXogYTIsIGxvb3AgICAgICAgICAgICAgICAgICAgIyBBbnkgbW9yZT8K KwlyZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgUmV0dXJuCisgICovCisgIGlmICgh VEFSR0VUX1ZFQ1RPUikKKyAgICByZXR1cm4gZmFsc2U7CisgIEhPU1RfV0lERV9JTlQgcG90ZW50 aWFsX2V3CisgICAgPSAoTUlOIChNSU4gKE1FTV9BTElHTiAoc3JjX2luKSwgTUVNX0FMSUdOIChk c3RfaW4pKSwgQklUU19QRVJfV09SRCkKKyAgICAgICAvIEJJVFNfUEVSX1VOSVQpOworICBtYWNo aW5lX21vZGUgdm1vZGUgPSBWT0lEbW9kZTsKKyAgYm9vbCBuZWVkX2xvb3AgPSB0cnVlOworICBi b29sIHNpemVfcCA9IG9wdGltaXplX2Z1bmN0aW9uX2Zvcl9zaXplX3AgKGNmdW4pOworICBydHgg c3JjLCBkc3Q7CisgIHJ0eCBlbmQgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOworICBydHggdmVjOwor ICBydHggbGVuZ3RoX3J0eCA9IGxlbmd0aF9pbjsKKworICBpZiAoQ09OU1RfSU5UX1AgKGxlbmd0 aF9pbikpCisgICAgeworICAgICAgSE9TVF9XSURFX0lOVCBsZW5ndGggPSBJTlRWQUwgKGxlbmd0 aF9pbik7CisKKyAgICAvKiBCeSB1c2luZyBMTVVMPTgsIHdlIGNhbiBjb3B5IGFzIG1hbnkgYnl0 ZXMgaW4gb25lIGdvIGFzIHRoZXJlCisgICAgICAgYXJlIGJpdHMgaW4gYSB2ZWN0b3IgcmVnaXN0 ZXIuICBJZiB0aGUgZW50aXJlIGJsb2NrIHRodXMgZml0cywKKyAgICAgICB3ZSBkb24ndCBuZWVk IGEgbG9vcC4gICovCisgICAgaWYgKGxlbmd0aCA8PSBUQVJHRVRfTUlOX1ZMRU4pCisgICAgICB7 CisJbmVlZF9sb29wID0gZmFsc2U7CisKKwkvKiBJZiBhIHNpbmdsZSBzY2FsYXIgbG9hZCAvIHN0 b3JlIHBhaXIgY2FuIGRvIHRoZSBqb2IsIGxlYXZlIGl0CisJICAgdG8gdGhlIHNjYWxhciBjb2Rl IHRvIGRvIHRoYXQuICAqLworCS8qID8/PyBJZiBmYXN0IHVuYWxpZ25lZCBhY2Nlc3MgaXMgc3Vw cG9ydGVkLCB0aGUgc2NhbGFyIGNvZGUgY291bGQKKwkgICB1c2Ugc3VpdGFibHkgc2l6ZWQgc2Nh bGFycyBpcnJlc3BlY3RpdmUgb2YgYWxpZ25lbW50LiAgSWYgdGhhdAorCSAgIGdldHMgZml4ZWQs IHdlIGhhdmUgdG8gYWRqdXN0IHRoZSB0ZXN0IGhlcmUuICAqLworCisJaWYgKHBvdzJwX2h3aSAo bGVuZ3RoKSAmJiBsZW5ndGggPD0gcG90ZW50aWFsX2V3KQorCSAgcmV0dXJuIGZhbHNlOworICAg ICAgfQorCisgICAgICAvKiBGaW5kIHRoZSB2ZWN0b3IgbW9kZSB0byB1c2UuICBVc2luZyB0aGUg bGFyZ2VzdCBwb3NzaWJsZSBlbGVtZW50CisJIHNpemUgaXMgbGlrZWx5IHRvIGdpdmUgc21hbGxl ciBjb25zdGFudHMsIGFuZCB0aHVzIHBvdGVudGlhbGx5CisJIHJlZHVjaW5nIGNvZGUgc2l6ZS4g IEhvd2V2ZXIsIGlmIHdlIG5lZWQgYSBsb29wLCB3ZSBuZWVkIHRvIHVwZGF0ZQorCSB0aGUgcG9p bnRlcnMsIGFuZCB0aGF0IGlzIG1vcmUgY29tcGxpY2F0ZWQgd2l0aCBhIGxhcmdlciBlbGVtZW50 CisJIHNpemUsIHVubGVzcyB3ZSB1c2UgYW4gaW1tZWRpYXRlLCB3aGljaCBwcmV2ZW50cyB1cyBm cm9tIGR5bmFtaWNhbGx5CisJIHVzaW5nIHRoZSB0YXJnZXRzIHRyYW5zZmVyIHNpemUgdGhhdCB0 aGUgaGFydCBzdXBwb3J0cy4gIEFuZCB0aGVuLAorCSB1bmxlc3Mgd2Uga25vdyB0aGUgKmV4YWN0 KiB2ZWN0b3Igc2l6ZSBvZiB0aGUgaGFydCwgd2UnZCBuZWVkCisJIG11bHRpcGxlIHZzZXR2bGkg LyBicmFuY2ggc3RhdGVtZW50cywgc28gaXQncyBub3QgZXZlbiBhIHNpemUgd2luLgorCSBJZiwg aW4gdGhlIGZ1dHVyZSwgd2UgZmluZCBhbiBSSVNDVi1WIGltcGxlbWVudGF0aW9uIHRoYXQgaXMg c2xvd2VyCisJIGZvciBzbWFsbCBlbGVtZW50IHdpZHRocywgd2UgbWlnaHQgYWxsb3cgbGFyZ2Vy IGVsZW1lbnQgd2lkdGhzIGZvcgorCSBsb29wcyB0b28uICAqLworICAgICAgaWYgKG5lZWRfbG9v cCkKKwlwb3RlbnRpYWxfZXcgPSAxOworICAgICAgZm9yICg7IHBvdGVudGlhbF9ldzsgcG90ZW50 aWFsX2V3ID4+PSAxKQorCXsKKwkgIHNjYWxhcl9pbnRfbW9kZSBlbGVtX21vZGU7CisJICB1bnNp Z25lZCBIT1NUX1dJREVfSU5UIGJpdHMgPSBwb3RlbnRpYWxfZXcgKiBCSVRTX1BFUl9VTklUOwor CSAgdW5zaWduZWQgSE9TVF9XSURFX0lOVCBwZXJfaXRlcjsKKwkgIEhPU1RfV0lERV9JTlQgbnVu aXRzOworCisJICBpZiAobmVlZF9sb29wKQorCSAgICBwZXJfaXRlciA9IFRBUkdFVF9NSU5fVkxF TjsKKwkgIGVsc2UKKwkgICAgcGVyX2l0ZXIgPSBsZW5ndGg7CisJICBudW5pdHMgPSBwZXJfaXRl ciAvIHBvdGVudGlhbF9ldzsKKworCSAgLyogVW5sZXNzIHdlIGdldCBhbiBpbXBsZW1lbnRhdGlv biB0aGF0J3Mgc2xvdyBmb3Igc21hbGwgZWxlbWVudAorCSAgICAgc2l6ZSAvIG5vbi13b3JkLWFs aWduZWQgYWNjZXNzZXMsIHdlIGFzc3VtZSB0aGF0IHRoZSBoYXJkd2FyZQorCSAgICAgaGFuZGxl cyB0aGlzIHdlbGwsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGNvbXBsaWNhdGUgdGhlIGNvZGUKKwkg ICAgIHdpdGggc2hpZnRpbmcgd29yZCBjb250ZW50cyBhcm91bmQgb3IgaGFuZGxpbmcgZXh0cmEg Ynl0ZXMgYXQKKwkgICAgIHRoZSBzdGFydCBhbmQvb3IgZW5kLiAgU28gd2Ugd2FudCB0aGUgdG90 YWwgdHJhbnNmZXIgc2l6ZSBhbmQKKwkgICAgIGFsaWdubWVudCB0byBmaXQgd2l0aCB0aGUgZWxl bWVudCBzaXplLiAgKi8KKwkgIGlmIChsZW5ndGggJSBwb3RlbnRpYWxfZXcgIT0gMAorCSAgICAg IHx8ICFpbnRfbW9kZV9mb3Jfc2l6ZSAoYml0cywgMCkuZXhpc3RzICgmZWxlbV9tb2RlKSkKKwkg ICAgY29udGludWU7CisJICAvKiBGaW5kIHRoZSBtb2RlIHRvIHVzZSBmb3IgdGhlIGNvcHkgaW5z aWRlIHRoZSBsb29wIC0gb3IgdGhlCisJICAgICBzb2xlIGNvcHksIGlmIHRoZXJlIGlzIG5vIGxv b3AuICAqLworCSAgaWYgKCFuZWVkX2xvb3ApCisJICAgIHsKKwkgICAgICAvKiBUcnkgaWYgd2Ug aGF2ZSBhbiBleGFjdCBtb2RlIGZvciB0aGUgY29weS4gICovCisJICAgICAgaWYgKGdldF92ZWN0 b3JfbW9kZSAoZWxlbV9tb2RlLCBudW5pdHMpLmV4aXN0cyAoJnZtb2RlKSkKKwkJYnJlYWs7CisJ ICAgICAgLyogU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIG1vZGUgdGhhdCBleGFjdGx0eSBtYXRjaGVz IHRoZSB0cmFuc2ZlcgorCQkgc2l6ZSwgd2UnbGwgbmVlZCB0byB1c2UgcHJlZF9zdG9yZSwgd2hp Y2ggaXMgbm90IGF2YWlsYWJsZQorCQkgZm9yIGFsbCB2ZWN0b3IgbW9kZXMsIGJ1dCBvbmx5IGlF X1JWVl9NKiBtb2RlcywgaGVuY2UgdHJ5aW5nCisJCSB0byBmaW5kIGEgdmVjdG9yIG1vZGUgZm9y IGEgbWVyZWx5IHJvdW5kZWQtdXAgc2l6ZSBpcworCQkgcG9pbnRsZXNzLgorCQkgU3RpbGwsIGJ5 IGNob29zaW5nIGEgbG93ZXIgTE1VTCBmYWN0b3IgdGhhdCBzdGlsbCBhbGxvd3MKKwkJIGFuIGVu dGlyZSB0cmFuc2Zlciwgd2UgY2FuIHJlZHVjZSByZWdpc3RlciBwcmVzc3VyZS4gICovCisJICAg ICAgZm9yICh1bnNpZ25lZCBsbXVsID0gMTsgbG11bCA8PSA0OyBsbXVsIDw8PSAxKQorCQlpZiAo VEFSR0VUX01JTl9WTEVOICogbG11bCA8PSBudW5pdHMgKiBCSVRTX1BFUl9VTklUCisJCSAgICAv KiBBdm9pZCBsb29zaW5nIHRoZSBvcHRpb24gb2YgdXNpbmcgdnNldGl2bGkgLiAgKi8KKwkJICAg ICYmIChudW5pdHMgPD0gMzEgKiBsbXVsIHx8IG51bml0cyA+IDMxICogOCkKKwkJICAgICYmIChn ZXRfdmVjdG9yX21vZGUKKwkJCSAoZWxlbV9tb2RlLAorCQkJICBleGFjdF9kaXYgKEJZVEVTX1BF Ul9SSVNDVl9WRUNUT1IgKiBsbXVsLAorCQkJCSAgICAgcG90ZW50aWFsX2V3KQorCQkJICApLmV4 aXN0cyAoJnZtb2RlKSkpCisJCSAgYnJlYWs7CisJICAgIH0KKworCSAgLyogVGhlIFJWVk04P0kg bW9kZXMgYXJlIG5vdGlvbmFsbHkgOCAqIEJZVEVTX1BFUl9SSVNDVl9WRUNUT1IgYnl0ZXMKKwkg ICAgIHdpZGUuICBCWVRFU19QRVJfUklTQ1ZfVkVDVE9SIGNhbid0IGJlIGVhdmVubHkgZGl2aWRl ZCBieQorCSAgICAgdGhlIHNpemVzIG9mIGxhcmdlciBlbGVtZW50IHR5cGVzOyB0aGUgTE1VTCBm YWN0b3Igb2YgOCBjYW4gYXQKKwkgICAgIHRoZSBtb21lbnQgYmUgZGl2aWRlZCBieSB0aGUgU0VX LCB3aXRoIFNFVyBvZiB1cCB0byA4IGJ5dGVzLAorCSAgICAgYnV0IHRoZXJlIGFyZSByZXNlcnZl ZCBlbmNvZGluZ3Mgc28gdGhlcmUgbWlnaHQgYmUgbGFyZ2VyCisJICAgICBTRVcgaW4gdGhlIGZ1 dHVyZS4gICovCisJICBpZiAoZ2V0X3ZlY3Rvcl9tb2RlIChlbGVtX21vZGUsCisJCQkgICAgICAg ZXhhY3RfZGl2IChCWVRFU19QRVJfUklTQ1ZfVkVDVE9SICogOCwKKwkJCQkJICBwb3RlbnRpYWxf ZXcpKS5leGlzdHMgKCZ2bW9kZSkpCisJICAgIGJyZWFrOworCisJICAvKiBXZSBtYXkgZ2V0IGhl cmUgaWYgd2UgdHJpZWQgYW4gZWxlbWVudCBzaXplIHRoYXQncyBsYXJnZXIgdGhhbgorCSAgICAg dGhlIGhhcmR3YXJlIHN1cHBvcnRzLCBidXQgd2Ugc2hvdWxkIGF0IGxlYXN0IGZpbmQgYSBzdWl0 YWJsZQorCSAgICAgYnl0ZSB2ZWN0b3IgbW9kZS4gICovCisJICBnY2NfYXNzZXJ0IChwb3RlbnRp YWxfZXcgPiAxKTsKKwl9CisgICAgICBpZiAocG90ZW50aWFsX2V3ID4gMSkKKwlsZW5ndGhfcnR4 ID0gR0VOX0lOVCAobGVuZ3RoIC8gcG90ZW50aWFsX2V3KTsKKyAgICB9CisgIGVsc2UKKyAgICB7 CisgICAgICB2bW9kZSA9IEVfUlZWTThRSW1vZGU7CisgICAgfQorCisgIC8qIEEgbWVtY3B5IGxp YmNhbGwgaW4gdGhlIHdvcnN0IGNhc2UgdGFrZXMgMyBpbnN0cnVjdGlvbnMgdG8gcHJlcGFyZSB0 aGUKKyAgICAgYXJndW1lbnRzICsgMSBmb3IgdGhlIGNhbGwuICBXaGVuIFJWViBzaG91bGQgdGFr ZSA3IGluc3RydWN0aW9ucyBhbmQKKyAgICAgd2UncmUgb3B0aW1pemluZyBmb3Igc2l6ZSBhIGxp YmNhbGwgbWF5IGJlIHByZWZlcmFibGUuICAqLworICBpZiAoc2l6ZV9wICYmIG5lZWRfbG9vcCkK KyAgICByZXR1cm4gZmFsc2U7CisKKyAgLyogbGVuZ3RoX3J0eCBob2xkcyB0aGUgKHJlbWFpbmlu ZykgbGVuZ3RoIG9mIHRoZSByZXF1aXJlZCBjb3B5LgorICAgICBjbnQgaG9sZHMgdGhlIGxlbmd0 aCB3ZSBjb3B5IHdpdGggdGhlIGN1cnJlbnQgbG9hZC9zdG9yZSBwYWlyLiAgKi8KKyAgcnR4IGNu dCA9IGxlbmd0aF9ydHg7CisgIHJ0eCBsYWJlbCA9IE5VTExfUlRYOworICBydHggZHN0X2FkZHIg PSBjb3B5X2FkZHJfdG9fcmVnIChYRVhQIChkc3RfaW4sIDApKTsKKyAgcnR4IHNyY19hZGRyID0g Y29weV9hZGRyX3RvX3JlZyAoWEVYUCAoc3JjX2luLCAwKSk7CisKKyAgaWYgKG5lZWRfbG9vcCkK KyAgICB7CisgICAgICBsZW5ndGhfcnR4ID0gY29weV90b19tb2RlX3JlZyAoUG1vZGUsIGxlbmd0 aF9ydHgpOworICAgICAgY250ID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKKyAgICAgIGxhYmVsID0g Z2VuX2xhYmVsX3J0eCAoKTsKKworICAgICAgZW1pdF9sYWJlbCAobGFiZWwpOworICAgICAgZW1p dF9pbnNuIChnZW5fbm9fc2lkZV9lZmZlY3RzX3ZzZXR2bF9ydHggKHZtb2RlLCBjbnQsIGxlbmd0 aF9ydHgpKTsKKyAgICB9CisKKyAgdmVjID0gZ2VuX3JlZ19ydHggKHZtb2RlKTsKKyAgc3JjID0g Y2hhbmdlX2FkZHJlc3MgKHNyY19pbiwgdm1vZGUsIHNyY19hZGRyKTsKKyAgZHN0ID0gY2hhbmdl X2FkZHJlc3MgKGRzdF9pbiwgdm1vZGUsIGRzdF9hZGRyKTsKKworICAvKiBJZiB3ZSBkb24ndCBu ZWVkIGEgbG9vcCBhbmQgaGF2ZSBhIHN1aXRhYmxlIG1vZGUgdG8gZGVzY3JpYmUgdGhlIHNpemUs CisgICAgIGp1c3QgZG8gYSBsb2FkIC8gc3RvcmUgcGFpciBhbmQgbGVhdmUgaXQgdXAgdG8gdGhl IGxhdGVyIGxhenkgY29kZQorICAgICBtb3Rpb24gcGFzcyB0byBpbnNlcnQgdGhlIGFwcHJvcHJp YXRlIHZzZXR2bGkuICAqLworICBpZiAoIW5lZWRfbG9vcCAmJiBrbm93bl9lcSAoR0VUX01PREVf U0laRSAodm1vZGUpLCBJTlRWQUwgKGxlbmd0aF9pbikpKQorICAgIHsKKyAgICAgIGVtaXRfbW92 ZV9pbnNuICh2ZWMsIHNyYyk7CisgICAgICBlbWl0X21vdmVfaW5zbiAoZHN0LCB2ZWMpOworICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUgPSBnZXRfdmVj dG9yX21vZGUgKEJJbW9kZSwgR0VUX01PREVfTlVOSVRTICh2bW9kZSkpLnJlcXVpcmUgKCk7Cisg ICAgICBydHggbWFzayA9ICBDT05TVE0xX1JUWCAobWFza19tb2RlKTsKKyAgICAgIGlmICghc2F0 aXNmaWVzX2NvbnN0cmFpbnRfSyAoY250KSkKKwljbnQ9IGZvcmNlX3JlZyAoUG1vZGUsIGNudCk7 CisgICAgICBydHggbV9vcHNbXSA9IHt2ZWMsIG1hc2ssIHNyY307CisgICAgICBlbWl0X25vbnZs bWF4X2luc24gKGNvZGVfZm9yX3ByZWRfbW92ICh2bW9kZSksIFVOQVJZX09QX1RBTUEsCisJCQkg IG1fb3BzLCBjbnQpOworICAgICAgZW1pdF9pbnNuIChnZW5fcHJlZF9zdG9yZSAodm1vZGUsIGRz dCwgbWFzaywgdmVjLCBjbnQsCisJCQkJIGdldF9hdmxfdHlwZV9ydHggKE5PTlZMTUFYKSkpOwor ICAgIH0KKworICBpZiAobmVlZF9sb29wKQorICAgIHsKKyAgICAgIGVtaXRfaW5zbiAoZ2VuX3J0 eF9TRVQgKHNyY19hZGRyLCBnZW5fcnR4X1BMVVMgKFBtb2RlLCBzcmNfYWRkciwgY250KSkpOwor ICAgICAgZW1pdF9pbnNuIChnZW5fcnR4X1NFVCAoZHN0X2FkZHIsIGdlbl9ydHhfUExVUyAoUG1v ZGUsIGRzdF9hZGRyLCBjbnQpKSk7CisgICAgICBlbWl0X2luc24gKGdlbl9ydHhfU0VUIChsZW5n dGhfcnR4LCBnZW5fcnR4X01JTlVTIChQbW9kZSwgbGVuZ3RoX3J0eCwgY250KSkpOworCisgICAg ICAvKiBFbWl0IHRoZSBsb29wIGNvbmRpdGlvbi4gICovCisgICAgICBydHggdGVzdCA9IGdlbl9y dHhfTkUgKFZPSURtb2RlLCBlbmQsIGNvbnN0MF9ydHgpOworICAgICAgZW1pdF9qdW1wX2luc24g KGdlbl9jYnJhbmNoNCAoUG1vZGUsIHRlc3QsIGxlbmd0aF9ydHgsIGNvbnN0MF9ydHgsIGxhYmVs KSk7CisgICAgICBlbWl0X2luc24gKGdlbl9ub3AgKCkpOworICAgIH0KKworICByZXR1cm4gdHJ1 ZTsKK30KKwogLyogUmV0dXJuIHRoZSB2ZWN0b3JpemF0aW9uIG1hY2hpbmUgbW9kZSBmb3IgUlZW IGFjY29yZGluZyB0byBMTVVMLiAgKi8KIG1hY2hpbmVfbW9kZQogcHJlZmVycmVkX3NpbWRfbW9k ZSAoc2NhbGFyX21vZGUgbW9kZSkKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yu bWQgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kCmluZGV4IGUwMGI4ZWUzNTc5Li4xZWJlOGY5 MjI4NCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5tZAorKysgYi9nY2MvY29u ZmlnL3Jpc2N2L3Jpc2N2Lm1kCkBAIC0yMjcxLDE0ICsyMjcxLDE2IEBACiAgIERPTkU7CiB9KQog Ci0oZGVmaW5lX2V4cGFuZCAiY3B5bWVtc2kiCisoZGVmaW5lX2V4cGFuZCAiY3B5bWVtPG1vZGU+ IgogICBbKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9vcGVyYW5kOkJMSyAwICJnZW5lcmFsX29wZXJh bmQiKQogCQkgICAobWF0Y2hfb3BlcmFuZDpCTEsgMSAiZ2VuZXJhbF9vcGVyYW5kIikpCi0JICAg ICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAyICIiKSkKKwkgICAgICAodXNlIChtYXRjaF9vcGVy YW5kOlAgMiAiIikpCiAJICAgICAgKHVzZSAobWF0Y2hfb3BlcmFuZDpTSSAzICJjb25zdF9pbnRf b3BlcmFuZCIpKV0pXQogICAiIgogewotICBpZiAocmlzY3ZfZXhwYW5kX2Jsb2NrX21vdmUgKG9w ZXJhbmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pKQorICBpZiAocmlzY3ZfdmVjdG9y OjpleHBhbmRfYmxvY2tfbW92ZSAob3BlcmFuZHNbMF0sIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1sy XSkpCisgICAgRE9ORTsKKyAgZWxzZSBpZiAocmlzY3ZfZXhwYW5kX2Jsb2NrX21vdmUgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl0pKQogICAgIERPTkU7CiAgIGVsc2UKICAg ICBGQUlMOwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9i YXNlL2NweW1lbS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2Uv Y3B5bWVtLTEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWJiNDkw NGU4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2Jhc2UvY3B5bWVtLTEuYwpAQCAtMCwwICsxLDcxIEBACisvKiB7IGRnLWRvIGNvbXBpbGUg fSAqLworLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1PMSIgfSAqLworLyogeyBkZy1hZGQt b3B0aW9ucyByaXNjdl92IH0gKi8KKy8qIHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2Rp ZXMgIioqIiAiIiB9IH0gKi8KKworI2lmIDAgLyogVXNpbmcgaW5jbHVkZSBmaWxlcyB3aGVuIHVz aW5nIGEgbXVsdGlsaWItcmVsZXZhbnQgLW1hcmNoIG9wdGlvbiBpcyBkaWNleSAqLworI2luY2x1 ZGUgPHN0cmluZy5oPgorI2Vsc2UKK2V4dGVybiB2b2lkICptZW1jcHkodm9pZCAqX19yZXN0cmlj dCBkZXN0LCBjb25zdCB2b2lkICpfX3Jlc3RyaWN0IHNyYywgX19TSVpFX1RZUEVfXyBuKTsKKyNl bmRpZgorCisvKiBtZW1jcHkgc2hvdWxkIGJlIGltcGxlbWVudGVkIHVzaW5nIHRoZSBjcHltZW0g cGF0dGVybi4KKyoqIGYxOgorWFgJXC5MXGQrOiAjIGxvY2FsIGxhYmVsIGlzIGlnbm9yZWQKKyoq CXZzZXR2bGlccytbdGFdWzAtN10sYTIsZTgsbTgsdGEsbWEKKyoqCXZsZThcLnZccyt2XGQrLDBc KGExXCkKKyoqCXZzZThcLnZccyt2XGQrLDBcKGEwXCkKKyoqCWFkZFxzK2ExLGExLFt0YV1bMC03 XQorKioJYWRkXHMrYTAsYTAsW3RhXVswLTddCisqKglzdWJccythMixhMixbdGFdWzAtN10KKyoq CWJuZVxzK2EyLHplcm8sXC5MXGQrCisqKglyZXQKKyovCisKK3ZvaWQgZjEgKHZvaWQgKmEsIHZv aWQgKmIsIF9fU0laRV9UWVBFX18gbCkKK3sKKyAgbWVtY3B5IChhLCBiLCBsKTsKK30KKworLyog V2Ugc2hvdWxkIHN0aWxsIHVzZSBjcHltZW0gZXZlbiB3aXRoIHNsaWdodGx5IGRpZmZlcmVudCB0 eXBlcywgYXMgc2lnbmVkCisgICBvdmVyZmxvdyBpcyB1bmRlZmluZWQuCisqKiBmMjoKK1hYCVwu TFxkKzogIyBsb2NhbCBsYWJlbCBpcyBpZ25vcmVkCisqKgl2c2V0dmxpXHMrW3RhXVswLTddLGEy LGU4LG04LHRhLG1hCisqKgl2bGU4XC52XHMrdlxkKywwXChhMVwpCisqKgl2c2U4XC52XHMrdlxk KywwXChhMFwpCisqKglhZGRccythMSxhMSxbdGFdWzAtN10KKyoqCWFkZFxzK2EwLGEwLFt0YV1b MC03XQorKioJc3ViXHMrYTIsYTIsW3RhXVswLTddCisqKglibmVccythMix6ZXJvLFwuTFxkKwor KioJcmV0CisqLwordm9pZCBmMiAoX19JTlQzMl9UWVBFX18qIGEsIF9fSU5UMzJfVFlQRV9fKiBi LCBpbnQgbCkKK3sKKyAgbWVtY3B5IChhLCBiLCBsKTsKK30KKworLyogSWYgaXQgaXMga25vd24g dGhhdCB0aGUgcG9pbnRlciBhcmd1bWVudHMgdG8gbWVtY3B5IHBvaW50CisgICB0byBhbiBhbGln bmVkIG9iamVjdCwgY3B5bWVtIGNhbiB1c2UgdGhhdCBhbGlnbm1lbnQuCisgICBVc2UgZXh0ZXJu IGhlcmUgc28gdGhhdCB3ZSBnZXQgYSBrbm93biBhbGlnbm1lbnQsIGxlc3QKKyAgIERBVEFfQUxJ R05NRU5UIGZvcmNlIHVzIHRvIG1ha2UgdGhlIHNjYW4gcGF0dGVybiBhY2NvbW9kYXRlCisgICBj b2RlIGZvciBkaWZmZXJlbnQgYWxpZ25tZW50cyBkZXBlbmRpbmcgb24gd29yZCBzaXplLgorKiog ZjM6CisqKiAgICAgICAgbHVpXHMrW3RhXVswLTddLCVoaVwoYV9hXCkKKyoqICAgICAgICBsdWlc cytbdGFdWzAtN10sJWhpXChhX2JcKQorKiogICAgICAgIGFkZGlccythNCxbdGFdWzAtN10sJWxv XChhX2JcKQorKiogICAgICAgIHZzZXRpdmxpXHMremVybywxNixlMzIsbTQsdGEsbWEKKyoqICAg ICAgICB2bGUzMi52XHMrdlxkKywwXChbdGFdWzAtN11cKQorKiogICAgICAgIGFkZGlccytbdGFd WzAtN10sW3RhXVswLTddLCVsb1woYV9hXCkKKyoqICAgICAgICB2c2UzMlwudlxzK3ZcZCssMFwo W3RhXVswLTddXCkKKyoqICAgICAgICByZXQKKyovCisKK2V4dGVybiBzdHJ1Y3QgeyBfX0lOVDMy X1RZUEVfXyBhWzE2XTsgfSBhX2EsIGFfYjsKKwordm9pZCBmMyAoKQoreworICBtZW1jcHkgKCZh X2EsICZhX2IsIHNpemVvZiBhX2EpOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItbm90IHtcbSh0YWlsfGNhbGwpXHMrbWVtY3B5XE19IH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2NweW1lbS0yLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvY3B5bWVtLTIuYwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2I3MDZiNmVmNTIKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvY3B5bWVtLTIuYwpAQCAt MCwwICsxLDQ2IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1hZGRpdGlvbmFs LW9wdGlvbnMgIi1PMSIgfSAqLworLyogeyBkZy1hZGQtb3B0aW9ucyByaXNjdl92IH0gKi8KKy8q IHsgZGctZmluYWwgeyBjaGVjay1mdW5jdGlvbi1ib2RpZXMgIioqIiAiIiB9IH0gKi8KKwordHlw ZWRlZiBzdHJ1Y3QgeyBjaGFyIGNbMTZdOyB9IGMxNjsKK3R5cGVkZWYgc3RydWN0IHsgY2hhciBj WzMyXTsgfSBjMzI7Cit0eXBlZGVmIHN0cnVjdCB7IHNob3J0IHM7IGNoYXIgY1szMF07IH0gczE2 OworCisvKiBBIHNob3J0IHN0cnVjdCBjb3B5IGNhbiB1c2UgdnNldGl2bGkuCisqKiBmMToKKyoq CXZzZXRpdmxpXHMremVybywxNixlOCxtMSx0YSxtYQorKioJdmxlOC52XHMrdjEsMFwoYTFcKQor KioJdnNlOC52XHMrdjEsMFwoYTBcKQorKioJcmV0CisqLwordm9pZCBmMSAoYzE2ICphLCBjMTYq IGIpCit7CisgICphID0gKmI7Cit9CisKKy8qIEEgbG9uZ2VyIG9uZSBuZWVkcyBsaS4KKyoqIGYy OgorKioJbGlccytbdGFdWzAtN10sMzIKKyoqCXZzZXR2bGlccyt6ZXJvLFt0YV1bMC03XSxlOCxt Mix0YSxtYQorKioJdmxlOC52XHMrdjIsMFwoYTFcKQorKioJdnNlOC52XHMrdjIsMFwoYTBcKQor KioJcmV0CisqLwordm9pZCBmMiAoYzMyICphLCBjMzIqIGIpCit7CisgICphID0gKmI7Cit9CisK Ky8qIEEgMzIgYnl0ZSBzdHJ1Y3QgaXMgc3RpbGwgc2hvcnQgZW5vdWdoIGZvciB2c2V0aXZsaQor ICAgaWYgd2UgY2FuIHVzZSBhbiBlbGVtZW50IHdpZHRoIGxhcmdlciB0aGFuIDguCisqKiBmMzoK KyoqCXZzZXRpdmxpXHMremVybywxNixlMTYsbTIsdGEsbWEKKyoqCXZsZTE2LnZccyt2MiwwXChh MVwpCisqKgl2c2UxNi52XHMrdjIsMFwoYTBcKQorKioJcmV0CisqLwordm9pZCBmMyAoczE2ICph LCBzMTYqIGIpCit7CisgICphID0gKmI7Cit9Cg== --000000000000de304b0606b2bec5--