From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oo1-xc29.google.com (mail-oo1-xc29.google.com [IPv6:2607:f8b0:4864:20::c29]) by sourceware.org (Postfix) with ESMTPS id 16A773858D35 for ; Wed, 26 Jul 2023 21:14:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 16A773858D35 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-oo1-xc29.google.com with SMTP id 006d021491bc7-5636426c1b3so212551eaf.1 for ; Wed, 26 Jul 2023 14:14:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1690406085; x=1691010885; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=hafef6B/BiO8S1YZgRcuquo93LHacrR1uMX3l3DYXis=; b=fhuYQojzVXYEXS9gUPpi1IvtHiCOniDg9CTT9Pt5lKQGgcR11YwjGylo2jS97mv719 BEF3XupY0V3X7Ea5cz9DyJUVrkBT6YX6iYhmHkCiFRPmeZluSfDVr1rXMuTaOFIKPlhF C9bfL6sKl7wJ3GJEHR1vARj7LMbIO0PhStY/dqRE1sP390GQ24bHBVFYvq+cAyLu7oJ8 ZpQgFTnMdTxitSh2Djr/T7HjI+Bv8PbQqiPw21lKHbuHyRhaTEAX4mbjc+wHQ277Y9Mn s9Vr9oEpjl3WbRlMDsc18QLhLq+DDtvhhykX+igtz9UmNShQniQxJ/93YVCOx4rDQmh7 XA+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1690406085; x=1691010885; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=hafef6B/BiO8S1YZgRcuquo93LHacrR1uMX3l3DYXis=; b=cFrVgDqaP4rkpltdAe/+9Xnlyeto4Fu3k03NN+mElHIkKti+TYP/IVRVKIouwbjNQR RKH4WHwa7ZAnXptrFLZ9kQM30u2dQrHgWl59YSrqa6q0NCd8bRYmbI+NfnPDW6ndTTaK KFvILA3flAVAxkAEzcHfb8c1CC0+tnGqIO2PPmXy+LASkdnEHaiqFZdG6XYlj8mcr8bc L603grZ1OW5UW/RO1ZPTM7G3t/5AwhRZPQWo/+B7wUxy9P0dp+Y44XU3vtTmGZKJoDmM ESOg+nySVjy07/TemiYupZt9zQi3lCRxRZ3ZksAk5+wKX3NT3cuxkaQkuymhEsCoNEmX nmTg== X-Gm-Message-State: ABy/qLaWrud50J+LQmbmmKG/qoP5SUDkAOUFDTYhR26Eyi6sFw5DLBdY 8A0XQbb8xOh8jrJbxoZYqvY= X-Google-Smtp-Source: APBJJlEPBFJpGMWgOf7UTNv5m/brvFHVfj3YuK3EDGo2eRy/VSwshnak3DlgSgY6yPgWkr7TRSAMmA== X-Received: by 2002:a05:6358:7250:b0:134:c859:d32a with SMTP id i16-20020a056358725000b00134c859d32amr292385rwa.25.1690406085258; Wed, 26 Jul 2023 14:14:45 -0700 (PDT) Received: from [172.31.0.109] ([136.36.130.248]) by smtp.gmail.com with ESMTPSA id k11-20020a637b4b000000b0054fa8539681sm13242225pgn.34.2023.07.26.14.14.43 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 26 Jul 2023 14:14:44 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------6IJSMGEDWUl8qjkP9EvjR9hr" Message-ID: <6ec723a8-3f9a-170a-9d83-1636783e4f74@gmail.com> Date: Wed, 26 Jul 2023 15:14:43 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: Re: [PATCH 2/5] [RISC-V] Generate Zicond instruction for basic semantics Content-Language: en-US To: Xiao Zeng , gcc-patches@gcc.gnu.org Cc: research_trasio@irq.a4lg.com, kito.cheng@gmail.com, zhengyu@eswincomputing.com, eri-sw-toolchain@eswincomputing.com References: <20230719101156.21771-1-zengxiao@eswincomputing.com> <20230719101156.21771-3-zengxiao@eswincomputing.com> From: Jeff Law In-Reply-To: <20230719101156.21771-3-zengxiao@eswincomputing.com> X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: This is a multi-part message in MIME format. --------------6IJSMGEDWUl8qjkP9EvjR9hr Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 7/19/23 04:11, Xiao Zeng wrote: > This patch completes the recognition of the basic semantics > defined in the spec, namely: > > Conditional zero, if condition is equal to zero > rd = (rs2 == 0) ? 0 : rs1 > Conditional zero, if condition is non zero > rd = (rs2 != 0) ? 0 : rs1 > > gcc/ChangeLog: > > * config/riscv/riscv.md: Include zicond.md > * config/riscv/zicond.md: New file. > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/zicond-primitiveSemantics.c: New test. So as I mentioned earlier today, adjusting the insn condition to use rtx_equal_p seems to be the right way to go. Attached is a V2 of this patch that implements that. It was trivial enough to do that there's no need to break this patch down further. I've pushed V2 to the trunk. Thanks, Jeff --------------6IJSMGEDWUl8qjkP9EvjR9hr Content-Type: text/plain; charset=UTF-8; name="P" Content-Disposition: attachment; filename="P" Content-Transfer-Encoding: base64 Y29tbWl0IDc0MjkwYzY2NGQxZDRjMDY3YTk5NjI1M2ZlNTA1NTU1ZWM2NzE2NjgKQXV0aG9y OiBYaWFvIFplbmcgPHplbmd4aWFvQGVzd2luY29tcHV0aW5nLmNvbT4KRGF0ZTogICBXZWQg SnVsIDI2IDExOjU5OjU5IDIwMjMgLTA2MDAKCiAgICBbUEFUQ0ggMi81XSBbUklTQy1WXSBH ZW5lcmF0ZSBaaWNvbmQgaW5zdHJ1Y3Rpb24gZm9yIGJhc2ljIHNlbWFudGljcwogICAgCiAg ICBUaGlzIHBhdGNoIGNvbXBsZXRlcyB0aGUgcmVjb2duaXRpb24gb2YgdGhlIGJhc2ljIHNl bWFudGljcwogICAgZGVmaW5lZCBpbiB0aGUgc3BlYywgbmFtZWx5OgogICAgCiAgICBDb25k aXRpb25hbCB6ZXJvLCBpZiBjb25kaXRpb24gaXMgZXF1YWwgdG8gemVybwogICAgICByZCA9 IChyczIgPT0gMCkgPyAwIDogcnMxCiAgICBDb25kaXRpb25hbCB6ZXJvLCBpZiBjb25kaXRp b24gaXMgbm9uIHplcm8KICAgICAgcmQgPSAocnMyICE9IDApID8gMCA6IHJzMQogICAgCiAg ICBnY2MvQ2hhbmdlTG9nOgogICAgCiAgICAgICAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2 Lm1kOiBJbmNsdWRlIHppY29uZC5tZAogICAgICAgICAgICAqIGNvbmZpZy9yaXNjdi96aWNv bmQubWQ6IE5ldyBmaWxlLgogICAgCiAgICBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKICAg IAogICAgICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yvemljb25kLXByaW1pdGl2ZVNlbWFu dGljcy5jOiBOZXcgdGVzdC4KICAgIAogICAgICAgICAgICBDby1hdXRob3JlZC1ieTogUGhp bGlwcCBUb21zaWNoIDxwaGlsaXBwLnRvbXNpY2hAdnJ1bGwuZXU+CiAgICAgICAgICAgIENv LWF1dGhvcmVkLWJ5OiBSYXBoYWVsIFppbnNseSA8cnppbnNseUB2ZW50YW5hbWljcm8uY29t PgogICAgICAgICAgICBDby1hdXRob3JlZC1ieTogSmVmZiBMYXcgPGpsYXdAdmVudGFuYW1p Y3JvLmNvbT4KCmRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2Lm1kIGIvZ2Nj L2NvbmZpZy9yaXNjdi9yaXNjdi5tZAppbmRleCAyNDUxNWJjZjcwNi4uOGQ4ZmM5M2JiMTQg MTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YubWQKKysrIGIvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5tZApAQCAtMzMxOSwzICszMzE5LDQgQEAgKGRlZmluZV9leHBhbmQg Im1zdWJoaXNpNCIKIChpbmNsdWRlICJzaWZpdmUtNy5tZCIpCiAoaW5jbHVkZSAidGhlYWQu bWQiKQogKGluY2x1ZGUgInZlY3Rvci5tZCIpCisoaW5jbHVkZSAiemljb25kLm1kIikKZGlm ZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3Yvemljb25kLm1kIGIvZ2NjL2NvbmZpZy9yaXNj di96aWNvbmQubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcy M2EyMjQyMmUxCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi96aWNvbmQu bWQKQEAgLTAsMCArMSw4NCBAQAorOzsgTWFjaGluZSBkZXNjcmlwdGlvbiBmb3IgdGhlIFJJ U0MtViBaaWNvbmQgZXh0ZW5zaW9uCis7OyBDb3B5cmlnaHQgKEMpIDIwMjItMjMgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKzs7IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdD Qy4KKworOzsgR0NDIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKzs7IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cis7OyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzLCBvciAoYXQgeW91ciBvcHRpb24pCis7 OyBhbnkgbGF0ZXIgdmVyc2lvbi4KKworOzsgR0NDIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor OzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworOzsg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKzs7IGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMu ICBJZiBub3Qgc2VlCis7OyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyhk ZWZpbmVfY29kZV9pdGVyYXRvciBlcV9vcl9uZSBbZXEgbmVdKQorKGRlZmluZV9jb2RlX2F0 dHIgZXF6IFsoZXEgIm5leiIpIChuZSAiZXF6IildKQorKGRlZmluZV9jb2RlX2F0dHIgbmV6 IFsoZXEgImVxeiIpIChuZSAibmV6IildKQorCis7OyBaaWNvbmQKKyhkZWZpbmVfaW5zbiAi KmN6ZXJvLjxlcXo+LjxHUFI6bW9kZT48QU5ZSTptb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6R1BSIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAgICAgICAgICAgICI9 ciIpCisgICAgICAgIChpZl90aGVuX2Vsc2U6R1BSIChlcV9vcl9uZSAobWF0Y2hfb3BlcmFu ZDpBTllJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMCkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgIChtYXRjaF9vcGVyYW5kOkdQUiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAiciIpCisg ICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdF9pbnQgMCkpKV0KKyAgIlRBUkdFVF9a SUNPTkQiCisgICJjemVyby48ZXF6Plx0JTAsJTIsJTEiCispCisKKyhkZWZpbmVfaW5zbiAi KmN6ZXJvLjxuZXo+LjxHUFI6bW9kZT48QU5ZSTptb2RlPiIKKyAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6R1BSIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAgICAgICAgICAgIj1y IikKKyAgICAgICAgKGlmX3RoZW5fZWxzZTpHUFIgKGVxX29yX25lIChtYXRjaF9vcGVyYW5k OkFOWUkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbnN0X2ludCAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKGNvbnN0X2ludCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hfb3Bl cmFuZDpHUFIgMiAicmVnaXN0ZXJfb3BlcmFuZCIgICAiciIpKSldCisgICJUQVJHRVRfWklD T05EIgorICAiY3plcm8uPG5lej5cdCUwLCUyLCUxIgorKQorCis7OyBTcGVjaWFsIG9wdGlt aXphdGlvbiB1bmRlciBlcS9uZSBpbiBwcmltaXRpdmUgc2VtYW50aWNzCisoZGVmaW5lX2lu c24gIipjemVyby5lcXouPEdQUjptb2RlPjxBTllJOm1vZGU+Lm9wdDEiCisgIFsoc2V0ICht YXRjaF9vcGVyYW5kOkdQUiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAgICAgICAgICAgICAgICAg ICAiPXIiKQorICAgICAgICAoaWZfdGhlbl9lbHNlOkdQUiAoZXEgKG1hdGNoX29wZXJhbmQ6 QU5ZSSAxICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoY29uc3RfaW50IDApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0 Y2hfb3BlcmFuZDpHUFIgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIjEiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpHUFIgMyAicmVnaXN0ZXJfb3BlcmFuZCIg InIiKSkpXQorICAiVEFSR0VUX1pJQ09ORCAmJiBydHhfZXF1YWxfcCAob3BlcmFuZHNbMV0s IG9wZXJhbmRzWzJdKSIKKyAgImN6ZXJvLmVxelx0JTAsJTMsJTEiCispCisKKyhkZWZpbmVf aW5zbiAiKmN6ZXJvLmVxei48R1BSOm1vZGU+PEFOWUk6bW9kZT4ub3B0MiIKKyAgWyhzZXQg KG1hdGNoX29wZXJhbmQ6R1BSIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAgICAg ICAgICI9ciIpCisgICAgICAgIChpZl90aGVuX2Vsc2U6R1BSIChlcSAobWF0Y2hfb3BlcmFu ZDpBTllJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIikKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChjb25zdF9pbnQgMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICht YXRjaF9vcGVyYW5kOkdQUiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpCisgICAgICAgICAg ICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOkdQUiAzICJyZWdpc3Rlcl9vcGVyYW5k IiAiMSIpKSldCisgICJUQVJHRVRfWklDT05EICYmIHJ0eF9lcXVhbF9wIChvcGVyYW5kc1sx XSwgIG9wZXJhbmRzWzNdKSIKKyAgImN6ZXJvLm5lelx0JTAsJTIsJTEiCispCisKKyhkZWZp bmVfaW5zbiAiKmN6ZXJvLm5lei48R1BSOm1vZGU+PEFOWUk6bW9kZT4ub3B0MyIKKyAgWyhz ZXQgKG1hdGNoX29wZXJhbmQ6R1BSIDAgInJlZ2lzdGVyX29wZXJhbmQiICAgICAgICAgICAg ICAgICAgICI9ciIpCisgICAgICAgIChpZl90aGVuX2Vsc2U6R1BSIChuZSAobWF0Y2hfb3Bl cmFuZDpBTllJIDEgInJlZ2lzdGVyX29wZXJhbmQiICJyIikKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjb25zdF9pbnQgMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAg IChtYXRjaF9vcGVyYW5kOkdQUiAyICJyZWdpc3Rlcl9vcGVyYW5kIiAiciIpCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChtYXRjaF9vcGVyYW5kOkdQUiAzICJyZWdpc3Rlcl9vcGVy YW5kIiAiMSIpKSldCisgICJUQVJHRVRfWklDT05EICYmIHJ0eF9lcXVhbF9wIChvcGVyYW5k c1sxXSwgb3BlcmFuZHNbM10pIgorICAiY3plcm8uZXF6XHQlMCwlMiwlMSIKKykKKworKGRl ZmluZV9pbnNuICIqY3plcm8ubmV6LjxHUFI6bW9kZT48QU5ZSTptb2RlPi5vcHQ0IgorICBb KHNldCAobWF0Y2hfb3BlcmFuZDpHUFIgMCAicmVnaXN0ZXJfb3BlcmFuZCIgICAgICAgICAg ICAgICAgICAgIj1yIikKKyAgICAgICAgKGlmX3RoZW5fZWxzZTpHUFIgKG5lIChtYXRjaF9v cGVyYW5kOkFOWUkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGNvbnN0X2ludCAwKSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKG1hdGNoX29wZXJhbmQ6R1BSIDIgInJlZ2lzdGVyX29wZXJhbmQiICIxIikKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgKG1hdGNoX29wZXJhbmQ6R1BSIDMgInJlZ2lzdGVyX29w ZXJhbmQiICJyIikpKV0KKyAgIlRBUkdFVF9aSUNPTkQgJiYgcnR4X2VxdWFsX3AgKG9wZXJh bmRzWzFdLCBvcGVyYW5kc1syXSkiCisgICJjemVyby5uZXpcdCUwLCUzLCUxIgorKQpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRp dmVTZW1hbnRpY3MuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi96aWNvbmQt cHJpbWl0aXZlU2VtYW50aWNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjc2YzUwMTlhOTkyCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3ppY29uZC1wcmltaXRpdmVTZW1hbnRpY3MuYwpAQCAtMCwwICsx LDQ5IEBACisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFy Y2g9cnY2NGdjX3ppY29uZCAtbWFiaT1scDY0ZCIgeyB0YXJnZXQgeyBydjY0IH0gfSB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjMyZ2Nfemljb25kIC1tYWJpPWlscDMyZiIg eyB0YXJnZXQgeyBydjMyIH0gfSB9ICovCisvKiB7IGRnLXNraXAtaWYgIiIgeyAqLSotKiB9 IHsiLU8wIn0gfSAqLworCitsb25nIHByaW1pdGl2ZVNlbWFudGljc18wMChsb25nIGEsIGxv bmcgYikgeyByZXR1cm4gYSA9PSAwID8gMCA6IGI7IH0KKworbG9uZyBwcmltaXRpdmVTZW1h bnRpY3NfMDEobG9uZyBhLCBsb25nIGIpIHsgcmV0dXJuIGEgIT0gMCA/IDAgOiBiOyB9CisK K2xvbmcgcHJpbWl0aXZlU2VtYW50aWNzXzAyKGxvbmcgYSwgbG9uZyBiKSB7IHJldHVybiBh ID09IDAgPyBiIDogMDsgfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc18wMyhsb25nIGEs IGxvbmcgYikgeyByZXR1cm4gYSAhPSAwID8gYiA6IDA7IH0KKworbG9uZyBwcmltaXRpdmVT ZW1hbnRpY3NfMDQobG9uZyBhLCBsb25nIGIpIHsKKyAgaWYgKGEpCisgICAgYiA9IDA7Cisg IHJldHVybiBiOworfQorCitsb25nIHByaW1pdGl2ZVNlbWFudGljc18wNShsb25nIGEsIGxv bmcgYikgeworICBpZiAoIWEpCisgICAgYiA9IDA7CisgIHJldHVybiBiOworfQorCitpbnQg cHJpbWl0aXZlU2VtYW50aWNzXzA2KGludCBhLCBpbnQgYikgeyByZXR1cm4gYSA9PSAwID8g MCA6IGI7IH0KKworaW50IHByaW1pdGl2ZVNlbWFudGljc18wNyhpbnQgYSwgaW50IGIpIHsg cmV0dXJuIGEgIT0gMCA/IDAgOiBiOyB9CisKK2ludCBwcmltaXRpdmVTZW1hbnRpY3NfMDgo aW50IGEsIGludCBiKSB7IHJldHVybiBhID09IDAgPyBiIDogMDsgfQorCitpbnQgcHJpbWl0 aXZlU2VtYW50aWNzXzA5KGludCBhLCBpbnQgYikgeyByZXR1cm4gYSAhPSAwID8gYiA6IDA7 IH0KKworaW50IHByaW1pdGl2ZVNlbWFudGljc18xMChpbnQgYSwgaW50IGIpIHsKKyAgaWYg KGEpCisgICAgYiA9IDA7CisgIHJldHVybiBiOworfQorCitpbnQgcHJpbWl0aXZlU2VtYW50 aWNzXzExKGludCBhLCBpbnQgYikgeworICBpZiAoIWEpCisgICAgYiA9IDA7CisgIHJldHVy biBiOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMgImN6ZXJv LmVxeiIgNiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyAi Y3plcm8ubmV6IiA2IH0gfSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCAiYmVxIiB9IH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3QgImJu ZSIgfSB9ICovCg== --------------6IJSMGEDWUl8qjkP9EvjR9hr--