From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by sourceware.org (Postfix) with ESMTPS id 2411A3858D20 for ; Tue, 14 Nov 2023 17:38:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2411A3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2411A3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::230 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699983489; cv=none; b=Tjr0ZQM+SvfXYb3QU2lLhU6vColzJvZ6+00t4JtfAwM+i5+wruqherjOkdKD0esDRCLMjVPYE/sZJYkhi5xIZ48i7SkrdU7syDAjAYMJLaYXsTZOBZXHzYCmpHG4pGrN6BG+U/exLtJjN0W+MjihJ0SafrbNgLAOLwOCO9jb3oI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699983489; c=relaxed/simple; bh=qTERIkP7BjYKOf8Jh/Ye9uVcY/EfLlUGXdQrCuSWD6E=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=SbvQ4lGd4mvST+erIpQQ2ADPLlUoAEPU1QDZGv9w93k7HhMnCbrMcXzZ9J5q7YVv+nVAi7kIkAlpURcwrZbNVvBc8K+I0qIDuvyUSVt8iwpfLVx7poun8EmQ0pErXWHGu2gj2VdrD0rfdKrTKJ9M+TBFJyaEclB/cbkYhLJ6l9M= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2c5039d4e88so82298471fa.3 for ; Tue, 14 Nov 2023 09:38:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699983485; x=1700588285; darn=gcc.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=HCQpozPmdHfrw2E6yIkVGelT4Wwct8qH4K1FoEZAfbU=; b=QmzMGDbolB4khfEgEIYwdxPE/ReDcjmkJdVjU/yyL4oQ4kt+PtzC2VjYWoBTj0Xayg aB2rqni1Wtq9UzUBAgm8P2P6sfYUdoGWnDqOgEPDwqybftdml5ezJMXp5uT+WJ1T2zTP ae2tY/ifeJ9roW09nFyB30UF6aUinSooeJG1jEBTM3qqEprFVJSFtc8o5spKZVlpoY/n oEhoFWrudlY1soPxoxPaMZkGbq1weAUWlkBSmoJNZIicUStSmOpF8g4Ehmhw0ZxJhnl3 LoGoYMNp+HkOlh/HNVzBa1ObkXkMFZuk0Bbd/7STR4IZQkIXVBduIMR+J25w5S8UoIeS ZgXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699983485; x=1700588285; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=HCQpozPmdHfrw2E6yIkVGelT4Wwct8qH4K1FoEZAfbU=; b=et3wSNLr3penlA6iLc7Ocq6DSHKQWS0IKsEFP4zpWOwoGtojSA5UCtUPigD84LO+qK XSJE20ApAND9quRHwU8PTl1DOy3LmidHPVSoEvKPfcm5W6Y3q/eh49TxkukL7Ih5wHfZ COdrrSwWRjkbS+Mk+35MjUNlbwuaEFIzcHgNC6KeyTv+XDe3y0BAnPROWsqVZS3SxE1U T4fB2E7jWRLUEeEBgDDt7OrvzCbVQNuCDoTuCLkE3LLgzDpzJSMjbmgjqfsitdC/zRAQ mk0C2Yc5UR3Kk1G+U/wCWKilsOaawrOrck5TvzX0iqWsGdgjXBb/F/XLxo3Nxq+Z56DG ve+g== X-Gm-Message-State: AOJu0YxJCTTED4hzmdqmi+t1+4gWU5vygg9JOLGv21OZuXaTHwLpa+wf 7dEIrjUqW18JJ4as3a8hNKUSZUtPZgyV8eyXr9wpXlFEJeI+vg== X-Google-Smtp-Source: AGHT+IHhdydxW1Hz6v8F9+bhiI/1jpp6eYzAFCWuaFgVkMm+6gkhm7bEAt7NLU7AULACBA84Pub7xWSKBOGghsrFLy4= X-Received: by 2002:a19:5f46:0:b0:500:daec:2817 with SMTP id a6-20020a195f46000000b00500daec2817mr6917729lfj.54.1699983484866; Tue, 14 Nov 2023 09:38:04 -0800 (PST) MIME-Version: 1.0 From: Uros Bizjak Date: Tue, 14 Nov 2023 18:37:53 +0100 Message-ID: Subject: [committed] i386: Generate strict_low_part QImode insn with high input register To: "gcc-patches@gcc.gnu.org" Content-Type: multipart/mixed; boundary="000000000000bdedcd060a203f00" X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,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: --000000000000bdedcd060a203f00 Content-Type: text/plain; charset="UTF-8" Following testcase: struct S1 { unsigned char val; unsigned char pad1; unsigned short pad2; }; struct S2 { unsigned char pad1; unsigned char val; unsigned short pad2; }; struct S1 test_and (struct S1 a, struct S2 b) { a.val &= b.val; return a; } compiles with -O2 to: movl %esi, %edx movl %edi, %eax movzbl %dh, %esi andb %sil, %al ANDB could use high register %dh instead of %sil: movl %edi, %eax movl %esi, %edx andb %dh, %al Patch introduces strict_low_part QImode insn patterns with one of its input arguments extracted from high register. PR target/78904 gcc/ChangeLog: * config/i386/i386.md (*addqi_ext_1_slp): New define_insn_and_split pattern. (*subqi_ext_1_slp): Ditto. (*qi_ext_1_slp): Ditto. gcc/testsuite/ChangeLog: * gcc.target/i386/pr78904-7.c: New test. * gcc.target/i386/pr78904-7a.c: New test. * gcc.target/i386/pr78904-7b.c: New test. Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Uros. --000000000000bdedcd060a203f00 Content-Type: text/plain; charset="US-ASCII"; name="p.diff.txt" Content-Disposition: attachment; filename="p.diff.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_loym9c8d0 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9pMzg2Lm1kIGIvZ2NjL2NvbmZpZy9pMzg2L2kz ODYubWQKaW5kZXggODRjYzUwYzdiYjIuLjYxMzZlNDZiMWJjIDEwMDY0NAotLS0gYS9nY2MvY29u ZmlnL2kzODYvaTM4Ni5tZAorKysgYi9nY2MvY29uZmlnL2kzODYvaTM4Ni5tZApAQCAtNjYxNSw2 ICs2NjE1LDM2IEBAIChkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIiphZGQ8bW9kZT5fMV9zbHAiCiAJ KGNvbnN0X3N0cmluZyAiYWx1IikpKQogICAgKHNldF9hdHRyICJtb2RlIiAiPE1PREU+IildKQog Cis7OyBBbHRlcm5hdGl2ZSAxIGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBMUkEgbGltaXRhdGlv biwgc2VlIFBSODI1MjQuCisoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqYWRkcWlfZXh0PG1vZGU+ XzFfc2xwIgorICBbKHNldCAoc3RyaWN0X2xvd19wYXJ0IChtYXRjaF9vcGVyYW5kOlFJIDAgInJl Z2lzdGVyX29wZXJhbmQiICIrUSwmUSIpKQorCShwbHVzOlFJCisJICAoc3VicmVnOlFJCisJICAg IChtYXRjaF9vcGVyYXRvcjpTV0kyNDggMyAiZXh0cmFjdF9vcGVyYXRvciIKKwkgICAgICBbKG1h dGNoX29wZXJhbmQgMiAiaW50MjQ4X3JlZ2lzdGVyX29wZXJhbmQiICJRLFEiKQorCSAgICAgICAo Y29uc3RfaW50IDgpCisJICAgICAgIChjb25zdF9pbnQgOCldKSAwKQorCSAgKG1hdGNoX29wZXJh bmQ6UUkgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIwLCFRIikpKQorICAgKGNsb2JiZXIgKHJl ZzpDQyBGTEFHU19SRUcpKV0KKyAgIiIKKyAgIkAKKyAgIGFkZHtifVx0eyVoMiwgJTB8JTAsICVo Mn0KKyAgICMiCisgICJyZWxvYWRfY29tcGxldGVkCisgICAmJiAhcnR4X2VxdWFsX3AgKG9wZXJh bmRzWzBdLCBvcGVyYW5kc1sxXSkiCisgIFsoc2V0IChzdHJpY3RfbG93X3BhcnQgKG1hdGNoX2R1 cCAwKSkgKG1hdGNoX2R1cCAxKSkKKyAgIChwYXJhbGxlbAorICAgICBbKHNldCAoc3RyaWN0X2xv d19wYXJ0IChtYXRjaF9kdXAgMCkpCisJICAgKHBsdXM6UUkKKwkgICAgIChzdWJyZWc6UUkKKwkg ICAgICAgKG1hdGNoX29wX2R1cCAzCisJCSBbKG1hdGNoX2R1cCAwKSAoY29uc3RfaW50IDgpIChj b25zdF9pbnQgOCldKSAwKQorCSAgIChtYXRjaF9kdXAgMSkpKQorICAgICAgKGNsb2JiZXIgKHJl ZzpDQyBGTEFHU19SRUcpKV0pXQorICAiIgorICBbKHNldF9hdHRyICJ0eXBlIiAiYWx1IikKKyAg IChzZXRfYXR0ciAibW9kZSIgIlFJIildKQorCiA7OyBTcGxpdCBub24gZGVzdHJ1Y3RpdmUgYWRk cyBpZiB3ZSBjYW5ub3QgdXNlIGxlYS4KIChkZWZpbmVfc3BsaXQKICAgWyhzZXQgKG1hdGNoX29w ZXJhbmQ6U1dJNDggMCAicmVnaXN0ZXJfb3BlcmFuZCIpCkBAIC03NjI4LDYgKzc2NTgsMzYgQEAg KGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnN1Yjxtb2RlPl8xX3NscCIKICAgWyhzZXRfYXR0ciAi dHlwZSIgImFsdSIpCiAgICAoc2V0X2F0dHIgIm1vZGUiICI8TU9ERT4iKV0pCiAKKzs7IEFsdGVy bmF0aXZlIDEgaXMgbmVlZGVkIHRvIHdvcmsgYXJvdW5kIExSQSBsaW1pdGF0aW9uLCBzZWUgUFI4 MjUyNC4KKyhkZWZpbmVfaW5zbl9hbmRfc3BsaXQgIipzdWJxaV9leHQ8bW9kZT5fMV9zbHAiCisg IFsoc2V0IChzdHJpY3RfbG93X3BhcnQgKG1hdGNoX29wZXJhbmQ6UUkgMCAicmVnaXN0ZXJfb3Bl cmFuZCIgIitRLCZRIikpCisJKG1pbnVzOlFJCisJICAobWF0Y2hfb3BlcmFuZDpRSSAxICJub25p bW1lZGlhdGVfb3BlcmFuZCIgIjAsIVEiKQorCSAgKHN1YnJlZzpRSQorCSAgICAobWF0Y2hfb3Bl cmF0b3I6U1dJMjQ4IDMgImV4dHJhY3Rfb3BlcmF0b3IiCisJICAgICAgWyhtYXRjaF9vcGVyYW5k IDIgImludDI0OF9yZWdpc3Rlcl9vcGVyYW5kIiAiUSxRIikKKwkgICAgICAgKGNvbnN0X2ludCA4 KQorCSAgICAgICAoY29uc3RfaW50IDgpXSkgMCkpKQorICAgKGNsb2JiZXIgKHJlZzpDQyBGTEFH U19SRUcpKV0KKyAgIiIKKyAgIkAKKyAgIHN1YntifVx0eyVoMiwgJTB8JTAsICVoMn0KKyAgICMi CisgICJyZWxvYWRfY29tcGxldGVkCisgICAmJiAhcnR4X2VxdWFsX3AgKG9wZXJhbmRzWzBdLCBv cGVyYW5kc1sxXSkiCisgIFsoc2V0IChzdHJpY3RfbG93X3BhcnQgKG1hdGNoX2R1cCAwKSkgKG1h dGNoX2R1cCAxKSkKKyAgIChwYXJhbGxlbAorICAgICBbKHNldCAoc3RyaWN0X2xvd19wYXJ0ICht YXRjaF9kdXAgMCkpCisJICAgKG1pbnVzOlFJCisJICAgKG1hdGNoX2R1cCAxKQorCSAgICAgKHN1 YnJlZzpRSQorCSAgICAgICAobWF0Y2hfb3BfZHVwIDMKKwkJIFsobWF0Y2hfZHVwIDApIChjb25z dF9pbnQgOCkgKGNvbnN0X2ludCA4KV0pIDApKSkKKyAgICAgIChjbG9iYmVyIChyZWc6Q0MgRkxB R1NfUkVHKSldKV0KKyAgIiIKKyAgWyhzZXRfYXR0ciAidHlwZSIgImFsdSIpCisgICAoc2V0X2F0 dHIgIm1vZGUiICJRSSIpXSkKKwogKGRlZmluZV9pbnNuICIqc3ViPG1vZGU+XzIiCiAgIFsoc2V0 IChyZWcgRkxBR1NfUkVHKQogCShjb21wYXJlCkBAIC0xMTQyMyw2ICsxMTQ4MywzNiBAQCAoZGVm aW5lX2luc25fYW5kX3NwbGl0ICIqPGNvZGU+PG1vZGU+XzFfc2xwIgogICBbKHNldF9hdHRyICJ0 eXBlIiAiYWx1IikKICAgIChzZXRfYXR0ciAibW9kZSIgIjxNT0RFPiIpXSkKIAorOzsgQWx0ZXJu YXRpdmUgMSBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgTFJBIGxpbWl0YXRpb24sIHNlZSBQUjgy NTI0LgorKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKjxjb2RlPnFpX2V4dDxtb2RlPl8xX3NscCIK KyAgWyhzZXQgKHN0cmljdF9sb3dfcGFydCAobWF0Y2hfb3BlcmFuZDpRSSAwICJyZWdpc3Rlcl9v cGVyYW5kIiAiK1EsJlEiKSkKKwkoYW55X2xvZ2ljOlFJCisJICAoc3VicmVnOlFJCisJICAgICht YXRjaF9vcGVyYXRvcjpTV0kyNDggMyAiZXh0cmFjdF9vcGVyYXRvciIKKwkgICAgICBbKG1hdGNo X29wZXJhbmQgMiAiaW50MjQ4X3JlZ2lzdGVyX29wZXJhbmQiICJRLFEiKQorCSAgICAgICAoY29u c3RfaW50IDgpCisJICAgICAgIChjb25zdF9pbnQgOCldKSAwKQorCSAgKG1hdGNoX29wZXJhbmQ6 UUkgMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiICIwLCFRIikpKQorICAgKGNsb2JiZXIgKHJlZzpD QyBGTEFHU19SRUcpKV0KKyAgIiIKKyAgIkAKKyAgIDxsb2dpYz57Yn1cdHslaDIsICUwfCUwLCAl aDJ9CisgICAjIgorICAicmVsb2FkX2NvbXBsZXRlZAorICAgJiYgIXJ0eF9lcXVhbF9wIChvcGVy YW5kc1swXSwgb3BlcmFuZHNbMV0pIgorICBbKHNldCAoc3RyaWN0X2xvd19wYXJ0IChtYXRjaF9k dXAgMCkpIChtYXRjaF9kdXAgMSkpCisgICAocGFyYWxsZWwKKyAgICAgWyhzZXQgKHN0cmljdF9s b3dfcGFydCAobWF0Y2hfZHVwIDApKQorCSAgIChhbnlfbG9naWM6UUkKKwkgICAobWF0Y2hfZHVw IDEpCisJICAgICAoc3VicmVnOlFJCisJICAgICAgIChtYXRjaF9vcF9kdXAgMworCQkgWyhtYXRj aF9kdXAgMCkgKGNvbnN0X2ludCA4KSAoY29uc3RfaW50IDgpXSkgMCkpKQorICAgICAgKGNsb2Ji ZXIgKHJlZzpDQyBGTEFHU19SRUcpKV0pXQorICAiIgorICBbKHNldF9hdHRyICJ0eXBlIiAiYWx1 IikKKyAgIChzZXRfYXR0ciAibW9kZSIgIlFJIildKQorCiAoZGVmaW5lX3NwbGl0CiAgIFsoc2V0 IChtYXRjaF9vcGVyYW5kOlNXSTI0OCAwICJyZWdpc3Rlcl9vcGVyYW5kIikKIAkoYW5kOlNXSTI0 OCAobWF0Y2hfb3BlcmFuZDpTV0kyNDggMSAibm9uaW1tZWRpYXRlX29wZXJhbmQiKQpkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3ODkwNC03LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjc4OTA0LTcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZTUyYTI2OTkyYWIKLS0tIC9kZXYvbnVsbAorKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjc4OTA0LTcuYwpAQCAtMCwwICsxLDY0IEBACisvKiBQ UiB0YXJnZXQvNzg5MDQgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRnLW9wdGlv bnMgIi1PMiAtbWFzbT1hdHQiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1u b3QgIm1vdnpibCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJt b3ZiIiB9IH0gKi8KKworc3RydWN0IFMxCit7CisgIHVuc2lnbmVkIGNoYXIgdmFsOworICB1bnNp Z25lZCBjaGFyIHBhZDE7CisgIHVuc2lnbmVkIHNob3J0IHBhZDI7Cit9OworCitzdHJ1Y3QgUzIK K3sKKyAgdW5zaWduZWQgY2hhciBwYWQxOworICB1bnNpZ25lZCBjaGFyIHZhbDsKKyAgdW5zaWdu ZWQgc2hvcnQgcGFkMjsKK307CisKK3N0cnVjdCBTMSB0ZXN0X2FuZCAoc3RydWN0IFMxIGEsIHN0 cnVjdCBTMiBiKQoreworICBhLnZhbCAmPSBiLnZhbDsKKworICByZXR1cm4gYTsKK30KKworLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJcWyBcdFxdYW5kYiIgfSB9ICovCisKK3N0cnVj dCBTMSB0ZXN0X29yIChzdHJ1Y3QgUzEgYSwgc3RydWN0IFMyIGIpCit7CisgIGEudmFsIHw9IGIu dmFsOworCisgIHJldHVybiBhOworfQorCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIg IlxbIFx0XF1vcmIiIH0gfSAqLworCitzdHJ1Y3QgUzEgdGVzdF94b3IgKHN0cnVjdCBTMSBhLCBz dHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwgXj0gYi52YWw7CisKKyAgcmV0dXJuIGE7Cit9CisKKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXXhvcmIiIH0gfSAqLworCitzdHJ1 Y3QgUzEgdGVzdF9hZGQgKHN0cnVjdCBTMSBhLCBzdHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwgKz0g Yi52YWw7CisKKyAgcmV0dXJuIGE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAiXFsgXHRcXWFkZGIiIH0gfSAqLworCitzdHJ1Y3QgUzEgdGVzdF9zdWIgKHN0cnVjdCBTMSBh LCBzdHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwgLT0gYi52YWw7CisKKyAgcmV0dXJuIGE7Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXXN1YmIiIH0gfSAqLwpkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3ODkwNC03YS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3ODkwNC03YS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jMDYwYTQ4MmJhMgotLS0gL2Rldi9udWxsCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzg5MDQtN2EuYwpAQCAtMCwwICsxLDYyIEBA CisvKiBQUiB0YXJnZXQvNzg5MDQgKi8KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovCisvKiB7IGRn LW9wdGlvbnMgIi1PMiAtbWFzbT1hdHQiIH0gKi8KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci1ub3QgIm1vdnpibCIgfSB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIt bm90ICJtb3ZiIiB9IH0gKi8KKworc3RydWN0IFMxCit7CisgIHVuc2lnbmVkIGNoYXIgdmFsOwor ICB1bnNpZ25lZCBjaGFyIHBhZDE7Cit9OworCitzdHJ1Y3QgUzIKK3sKKyAgdW5zaWduZWQgY2hh ciBwYWQxOworICB1bnNpZ25lZCBjaGFyIHZhbDsKK307CisKK3N0cnVjdCBTMSB0ZXN0X2FuZCAo c3RydWN0IFMxIGEsIHN0cnVjdCBTMiBiKQoreworICBhLnZhbCAmPSBiLnZhbDsKKworICByZXR1 cm4gYTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJcWyBcdFxdYW5kYiIg fSB9ICovCisKK3N0cnVjdCBTMSB0ZXN0X29yIChzdHJ1Y3QgUzEgYSwgc3RydWN0IFMyIGIpCit7 CisgIGEudmFsIHw9IGIudmFsOworCisgIHJldHVybiBhOworfQorCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1vcmIiIH0gfSAqLworCitzdHJ1Y3QgUzEgdGVzdF94b3Ig KHN0cnVjdCBTMSBhLCBzdHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwgXj0gYi52YWw7CisKKyAgcmV0 dXJuIGE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXXhvcmIi IH0gfSAqLworCitzdHJ1Y3QgUzEgdGVzdF9hZGQgKHN0cnVjdCBTMSBhLCBzdHJ1Y3QgUzIgYikK K3sKKyAgYS52YWwgKz0gYi52YWw7CisKKyAgcmV0dXJuIGE7Cit9CisKKy8qIHsgZGctZmluYWwg eyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXWFkZGIiIH0gfSAqLworCitzdHJ1Y3QgUzEgdGVzdF9z dWIgKHN0cnVjdCBTMSBhLCBzdHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwgLT0gYi52YWw7CisKKyAg cmV0dXJuIGE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXXN1 YmIiIH0gfSAqLwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3 ODkwNC03Yi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3ODkwNC03Yi5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43NmRjMDQ4ZTczZgotLS0gL2Rl di9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzg5MDQtN2IuYwpA QCAtMCwwICsxLDY2IEBACisvKiBQUiB0YXJnZXQvNzg5MDQgKi8KKy8qIHsgZGctZG8gY29tcGls ZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLW1hc209 YXR0IiB9ICovCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90ICJtb3Z6YmwiIH0g fSAqLworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCAibW92YiIgfSB9ICovCisK K3N0cnVjdCBTMQoreworICB1bnNpZ25lZCBjaGFyIHZhbDsKKyAgdW5zaWduZWQgY2hhciBwYWQx OworICB1bnNpZ25lZCBzaG9ydCBwYWQyOworICB1bnNpZ25lZCBpbnQgcGFkMzsKK307CisKK3N0 cnVjdCBTMgoreworICB1bnNpZ25lZCBjaGFyIHBhZDE7CisgIHVuc2lnbmVkIGNoYXIgdmFsOwor ICB1bnNpZ25lZCBzaG9ydCBwYWQyOworICB1bnNpZ25lZCBpbnQgcGFkMzsKK307CisKK3N0cnVj dCBTMSB0ZXN0X2FuZCAoc3RydWN0IFMxIGEsIHN0cnVjdCBTMiBiKQoreworICBhLnZhbCAmPSBi LnZhbDsKKworICByZXR1cm4gYTsKK30KKworLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVy ICJcWyBcdFxdYW5kYiIgfSB9ICovCisKK3N0cnVjdCBTMSB0ZXN0X29yIChzdHJ1Y3QgUzEgYSwg c3RydWN0IFMyIGIpCit7CisgIGEudmFsIHw9IGIudmFsOworCisgIHJldHVybiBhOworfQorCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgIlxbIFx0XF1vcmIiIH0gfSAqLworCitzdHJ1 Y3QgUzEgdGVzdF94b3IgKHN0cnVjdCBTMSBhLCBzdHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwgXj0g Yi52YWw7CisKKyAgcmV0dXJuIGE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAiXFsgXHRcXXhvcmIiIH0gfSAqLworCitzdHJ1Y3QgUzEgdGVzdF9hZGQgKHN0cnVjdCBTMSBh LCBzdHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwgKz0gYi52YWw7CisKKyAgcmV0dXJuIGE7Cit9CisK Ky8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlciAiXFsgXHRcXWFkZGIiIH0gfSAqLworCitz dHJ1Y3QgUzEgdGVzdF9zdWIgKHN0cnVjdCBTMSBhLCBzdHJ1Y3QgUzIgYikKK3sKKyAgYS52YWwg LT0gYi52YWw7CisKKyAgcmV0dXJuIGE7Cit9CisKKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAiXFsgXHRcXXN1YmIiIH0gfSAqLwo= --000000000000bdedcd060a203f00--