From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2043.outbound.protection.outlook.com [40.107.20.43]) by sourceware.org (Postfix) with ESMTPS id 180AA3973019 for ; Fri, 8 Jan 2021 10:28:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 180AA3973019 Received: from DB6P193CA0023.EURP193.PROD.OUTLOOK.COM (2603:10a6:6:29::33) by AM5PR0801MB1891.eurprd08.prod.outlook.com (2603:10a6:203:4a::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Fri, 8 Jan 2021 10:28:36 +0000 Received: from DB5EUR03FT015.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:29:cafe::6a) by DB6P193CA0023.outlook.office365.com (2603:10a6:6:29::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Fri, 8 Jan 2021 10:28:36 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT015.mail.protection.outlook.com (10.152.20.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Fri, 8 Jan 2021 10:28:35 +0000 Received: ("Tessian outbound 39646a0fd094:v71"); Fri, 08 Jan 2021 10:28:35 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 20a87882a6c5aa99 X-CR-MTA-TID: 64aa7808 Received: from 731ba62d5104.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id B91B09C2-ABD3-4D3A-A22D-F7C3902ADFD4.1; Fri, 08 Jan 2021 10:28:29 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 731ba62d5104.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 08 Jan 2021 10:28:29 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YbGVq/MW0FI6ics8mQ2uDb9zS7ZZyUVrV6zfAcI+gzVhMx8TXgBT3xxdkvOUIT6ttB0JPGS5sLdaF6IeKR3ZfO2GGht7uGV0f95nO4r1Aeko1tXuiMT53ZQypFIpHR0RKfU83CGm3L1QUwn6lncPf027qVYceO7KRIKSJFLl3L6Ro6c2JDzMBMIty6UkPKaj7Uj9p2+e0s0khFDf5sgCGXltwoOHyqM6DbgCCnW1kEmZIyBCOG6D1Zc768d/3LrmGJ0jfnzY7uOS5YdUTkE4R4uJb64xya55URHV7/h85TGGzWLT0e9CE96GlczdI2ZTSViDuaAbOpcvwqV+9ScH2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4qWCcJ0v6jJd1+q7qwmZDRnmDf1GgeivKweea2cZFNA=; b=HAnOIQ/soGnuc/3Xi4PIeMRIxqc8SVs1oFyKbpUHYTOm9c9/dx0Nven2kW15hZ4BvwzGvG1CZneDIM1dA1ew5iWZ/pBS4FhM5eY3iK1DHTdXlXxm1A/htKTW1P4cBk3h8VWbJzbfRgF4dEz/EFXCpGE6lL/DSu9ludiSqaA0TgnTnmG6pApMdYuJtnEkzsbgm0Qha1BvEci5P0H/6n330mrAAHrFOiqutPPGYiTZFQILeCOwtk6bTlLxe6Pko+qOZZrhnuSPUshT674Se9MbYxyOce6pBjbwrgiw7RpDzWXKryO7kq+4rC7bk47xK++nT7GnnMzwK8/s2eNnvUhVgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from DB7PR08MB3002.eurprd08.prod.outlook.com (2603:10a6:5:20::25) by DBAPR08MB5783.eurprd08.prod.outlook.com (2603:10a6:10:1a3::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Fri, 8 Jan 2021 10:28:28 +0000 Received: from DB7PR08MB3002.eurprd08.prod.outlook.com ([fe80::28f6:30cf:8ad3:17a3]) by DB7PR08MB3002.eurprd08.prod.outlook.com ([fe80::28f6:30cf:8ad3:17a3%3]) with mapi id 15.20.3742.009; Fri, 8 Jan 2021 10:28:27 +0000 From: Kyrylo Tkachov To: gcc Patches Subject: [PATCH] aarch64: Reimplement vaba* intrinsics using builtins Thread-Topic: [PATCH] aarch64: Reimplement vaba* intrinsics using builtins Thread-Index: AdblqJWD9WamjDfLQG6SQ9nqAbMGGQ== Date: Fri, 8 Jan 2021 10:28:27 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ts-tracking-id: B9A78D0FED489444A97AB84C2C887586.0 x-checkrecipientchecked: true Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; x-originating-ip: [86.31.103.53] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6bd47090-191d-4f3c-1476-08d8b3c0280e x-ms-traffictypediagnostic: DBAPR08MB5783:|AM5PR0801MB1891: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:7219;OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: /KXUQM49TMugVOmDPnpPT4P7JaDTBhSJUbsRuXGKNnZvEya9iSebIYTiOEZQjtPxdweEgm1GkcMaqhubFm+s6wDHAudYE01Bcr4Hleeu1ixnyAy0Dwj/mgQSma2V4gfcZeX/P7pp0qifqEp4XcAtbMfYDEMn6Ndwa0QyTyavOYhev8oWkxK295UXdGzcL04qqv5IsruLRsU0WDrf73WXQDbEmzDbjZIg/tUnhpmwcMOO/btqq1PXHf/2X0cMDlxcUk5t5TGTlz+6j9EZ3WJj1/0G4vnW9j15KtTLCrWysaD54PdtaqGy34CmJPk+Q0aWnzM5amE4J3UPCtP3X7+jJ4lBLDtLwUmzNJqtanycN31Z5lEjNS6u5INh1vcsm1gypOBIIftKe2Hut3DA3C6Y9g== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB7PR08MB3002.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(376002)(346002)(39860400002)(136003)(396003)(6506007)(66476007)(33656002)(66556008)(55236004)(9686003)(7696005)(64756008)(99936003)(55016002)(66616009)(5660300002)(186003)(4744005)(66446008)(52536014)(8936002)(6916009)(76116006)(26005)(86362001)(8676002)(66946007)(478600001)(316002)(2906002)(71200400001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?NnSTkejOj6LHKda/hDGZUPfEftthNFStvadnE6rw5N+OZb1U+v0CXNf6wsnz?= =?us-ascii?Q?hW4V2n7/OAKJjD4cwMtfjDlxPe8YIwZBjHjMd/RkWk4RMXy1jf9Ipb6qtc2H?= =?us-ascii?Q?8t2OsyK24OHeOj8Zx5oqE9gF94LkWY8PCxXmpPUfvfD+pXV93O+Eh6k+pCgZ?= =?us-ascii?Q?bhK+OwSTLa3IgxOTjR3j+bvrXexglRLgQsvaXhxDzROKfu1u9xnVTiV9lC2d?= =?us-ascii?Q?54q2b40f1ggy15tfluS/ieGXAClW0PuVarJFAm2fp7qV713LYxhN1SDIwAsF?= =?us-ascii?Q?FLZyGqSzrP61k3iBZlVjWufOubqLkpC3UAmrThdO0rTKtnDPveH8feadd0aq?= =?us-ascii?Q?qO+kkCSSq913ZD6pO7O0ByglJoXpPxlpY+DwEfqcb0Zz3eGM+InzN+BNDJ1m?= =?us-ascii?Q?IMbwn4KSYTZobuV64JLSUh6jSanvZuYPSQB11q6qmlk874wspkeGjmBjESoV?= =?us-ascii?Q?ljNEXQJRzqcbcXGzi3GJm1wscVOhW+6tl68iQZYYDcGpcwrDx/koHbX033F9?= =?us-ascii?Q?rcX581yOLlbJvonzJem8zVs2fDY7hJePmECNuhvg2Edy7f87d3uV+zsGcM6x?= =?us-ascii?Q?ubEo9EXzjG37UY0yYYfeEkmuYtpVU05o8YDU+5cfhRcpWL50s2deeWb1AqkP?= =?us-ascii?Q?sJg23nO649UGD9HHGAEkcQBl8bXnYg6KlUEodmO1OIcbol7mtgGD0GTo/8O6?= =?us-ascii?Q?H/lmYKuzQlbKvM6/vWvFnW2Ne0tPfSA2DL7VSMszz6eII/YueQ9Pq0ou9pft?= =?us-ascii?Q?mKVFC7avG7cwwQ00wFriA1AhW+KjXNDdsfpwlapc6VdjvGYWfhwxT+ncBReZ?= =?us-ascii?Q?+UdtxfC78fIDHy4FhjV1AO0CJDrUwlyQab9vbHB500RT0l/KNyqUOLI/gyh6?= =?us-ascii?Q?0RXLRWMf7aBixOwPtL0olwXG6hbF+r0ett6R0v70gFQAku86VGhssDF8vuRn?= =?us-ascii?Q?HcKtznGLt/6Kl9mmAv21DQ3ul+nxpd0gc5zdiEB7jkM=3D?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_002_DB7PR08MB30021557CD4375A4736500C093AE0DB7PR08MB3002eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR08MB5783 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: f3839f50-1b6f-44e5-2181-08d8b3c02346 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qWVSxWJ22K/g039q2Oa/t7kHcGiszLiaiuIQ+RWzlR7vvYGRZOfG//CEw6zy6jzOgHEQahimMBINJbYyjtTF3AIoqdOEJNoyG4l6evxwa4UMcdLXsyIoYq7DiDEU4CbT6DeZIOUcjj5eaMsKQqAg/ntJyAO8s2u6XB8umLPuD01zRs9YDxSX/7lHiF3K72aFQay+Cy42+Ak58LbNZqdeSoLCgQfu79stBdVR4lMs5IbFTiNYAnA99kE514cn4S/capD6A0gAkrZlmxPER9/tYvJZQahd4Hr+5/4YHn89USF1m9E2xquZ1MQrI+JwpmsDJmR35gE3q/5Zh0+pkDWbaptU/lLa0jtrduHqgho0n1yN/GEpL1UQ6fNFvOgVWLnucvUz3FrrALu0+rmFEI+zySoaGdjoP3xmmrq8zU2Xx0kSj2bkxh8XZ0xYctx2BnUAJWha2CqX2FUrPDOp6V4OgWwmLIRtuI36MjiotPDVdIGt91qIQDD+x84W4AbwPtrX X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(346002)(396003)(376002)(39860400002)(136003)(46966006)(186003)(82310400003)(478600001)(316002)(34020700004)(86362001)(7696005)(55236004)(336012)(26005)(81166007)(33656002)(2906002)(82740400003)(99936003)(356005)(47076005)(6506007)(70206006)(8936002)(52536014)(8676002)(5660300002)(235185007)(70586007)(66616009)(6916009)(55016002)(9686003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jan 2021 10:28:35.9239 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6bd47090-191d-4f3c-1476-08d8b3c0280e X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT015.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1891 X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY 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: Fri, 08 Jan 2021 10:28:39 -0000 --_002_DB7PR08MB30021557CD4375A4736500C093AE0DB7PR08MB3002eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, This patch reimplements the vaba* arm_neon.h intrinsics using RTL builtins = that expand to proper RTL patterns rather than using inline asm. The implementation is fairly straightforward by defining new builtins and u= sing them in the header. Bootstrapped and tested on aarch64-none-linux-gnu. Pushing to trunk. Thanks, Kyrill gcc/ * config/aarch64/aarch64-simd-builtins.def (saba, uaba): Define builtins. * config/aarch64/arm_neon.h (vaba_s8): Implement using builtin. (vaba_s16): Likewise. (vaba_s32): Likewise. (vaba_u8): Likewise. (vaba_u16): Likewise. (vaba_u32): Likewise. (vabaq_s8): Likewise. (vabaq_s16): Likewise. (vabaq_s32): Likewise. (vabaq_u8): Likewise. (vabaq_u16): Likewise. (vabaq_u32): Likewise. --_002_DB7PR08MB30021557CD4375A4736500C093AE0DB7PR08MB3002eurp_ Content-Type: application/octet-stream; name="vaba-int.patch" Content-Description: vaba-int.patch Content-Disposition: attachment; filename="vaba-int.patch"; size=6131; creation-date="Fri, 08 Jan 2021 10:25:41 GMT"; modification-date="Fri, 08 Jan 2021 10:24:58 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQtYnVpbHRpbnMuZGVm IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC1idWlsdGlucy5kZWYKaW5kZXggZWE0 Y2U3MzYwY2E4Mzg4ODBiNWY3NTUwY2VhMTUyNmM3ZjFhZTkwZS4uM2NjOGUwOTZhM2E5MmQxY2Rl MzZkNmI3ODVkOGViODViMjBmMmVlOCAxMDA2NDQKLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2Fh cmNoNjQtc2ltZC1idWlsdGlucy5kZWYKKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQt c2ltZC1idWlsdGlucy5kZWYKQEAgLTE0OCw2ICsxNDgsMTEgQEAKICAgQlVJTFRJTl9WRFFfQkhT SSAoQklOT1AsIHVoc3ViLCAwLCBOT05FKQogICBCVUlMVElOX1ZEUV9CSFNJIChCSU5PUCwgc3Jo YWRkLCAwLCBOT05FKQogICBCVUlMVElOX1ZEUV9CSFNJIChCSU5PUCwgdXJoYWRkLCAwLCBOT05F KQorCisgIC8qIEltcGxlbWVudGVkIGJ5IGFhcmNoNjRfPHN1PmFiYTxtb2RlPi4gICovCisgIEJV SUxUSU5fVkRRX0JIU0kgKFRFUk5PUCwgc2FiYSwgMCwgTk9ORSkKKyAgQlVJTFRJTl9WRFFfQkhT SSAoVEVSTk9QVSwgdWFiYSwgMCwgTk9ORSkKKwogICAvKiBJbXBsZW1lbnRlZCBieSBhYXJjaDY0 XzxzdXI+PGFkZHN1Yj5objxtb2RlPi4gICovCiAgIEJVSUxUSU5fVlFOIChCSU5PUCwgYWRkaG4s IDAsIE5PTkUpCiAgIEJVSUxUSU5fVlFOIChCSU5PUCwgc3ViaG4sIDAsIE5PTkUpCmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYXJtX25lb24uaCBiL2djYy9jb25maWcvYWFyY2g2NC9h cm1fbmVvbi5oCmluZGV4IDgyZGE4ZTJjYWZlYmM2ZDY3ZmIyODU1YzA3NTA0MDBlMTkwNThlYTUu LjM4MTllZDNkOGYyNGIzYTllZmVhMzk2ZDdkYTQ4MDE5NGZlODBjYTIgMTAwNjQ0Ci0tLSBhL2dj Yy9jb25maWcvYWFyY2g2NC9hcm1fbmVvbi5oCisrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hcm1f bmVvbi5oCkBAIC02NjIxLDcyICs2NjIxLDQyIEBAIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5s aW5lIGludDh4OF90CiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lu bGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2YWJhX3M4IChpbnQ4eDhfdCBfX2EsIGludDh4OF90 IF9fYiwgaW50OHg4X3QgX19jKQogewotICBpbnQ4eDhfdCBfX3Jlc3VsdDsKLSAgX19hc21fXyAo InNhYmEgJTAuOGIsJTIuOGIsJTMuOGIiCi0gICAgICAgICAgIDogIj13IihfX3Jlc3VsdCkKLSAg ICAgICAgICAgOiAiMCIoX19hKSwgInciKF9fYiksICJ3IihfX2MpCi0gICAgICAgICAgIDogLyog Tm8gY2xvYmJlcnMgKi8pOwotICByZXR1cm4gX19yZXN1bHQ7CisgIHJldHVybiBfX2J1aWx0aW5f YWFyY2g2NF9zYWJhdjhxaSAoX19hLCBfX2IsIF9fYyk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0 ZXJuIF9faW5saW5lIGludDE2eDRfdAogX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9f LCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogdmFiYV9zMTYgKGludDE2eDRfdCBf X2EsIGludDE2eDRfdCBfX2IsIGludDE2eDRfdCBfX2MpCiB7Ci0gIGludDE2eDRfdCBfX3Jlc3Vs dDsKLSAgX19hc21fXyAoInNhYmEgJTAuNGgsJTIuNGgsJTMuNGgiCi0gICAgICAgICAgIDogIj13 IihfX3Jlc3VsdCkKLSAgICAgICAgICAgOiAiMCIoX19hKSwgInciKF9fYiksICJ3IihfX2MpCi0g ICAgICAgICAgIDogLyogTm8gY2xvYmJlcnMgKi8pOwotICByZXR1cm4gX19yZXN1bHQ7CisgIHJl dHVybiBfX2J1aWx0aW5fYWFyY2g2NF9zYWJhdjRoaSAoX19hLCBfX2IsIF9fYyk7CiB9CiAKIF9f ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGludDMyeDJfdAogX19hdHRyaWJ1dGVfXyAoKF9f YWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogdmFiYV9z MzIgKGludDMyeDJfdCBfX2EsIGludDMyeDJfdCBfX2IsIGludDMyeDJfdCBfX2MpCiB7Ci0gIGlu dDMyeDJfdCBfX3Jlc3VsdDsKLSAgX19hc21fXyAoInNhYmEgJTAuMnMsJTIuMnMsJTMuMnMiCi0g ICAgICAgICAgIDogIj13IihfX3Jlc3VsdCkKLSAgICAgICAgICAgOiAiMCIoX19hKSwgInciKF9f YiksICJ3IihfX2MpCi0gICAgICAgICAgIDogLyogTm8gY2xvYmJlcnMgKi8pOwotICByZXR1cm4g X19yZXN1bHQ7CisgIHJldHVybiBfX2J1aWx0aW5fYWFyY2g2NF9zYWJhdjJzaSAoX19hLCBfX2Is IF9fYyk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVpbnQ4eDhfdAogX19h dHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmlj aWFsX18pKQogdmFiYV91OCAodWludDh4OF90IF9fYSwgdWludDh4OF90IF9fYiwgdWludDh4OF90 IF9fYykKIHsKLSAgdWludDh4OF90IF9fcmVzdWx0OwotICBfX2FzbV9fICgidWFiYSAlMC44Yiwl Mi44YiwlMy44YiIKLSAgICAgICAgICAgOiAiPXciKF9fcmVzdWx0KQotICAgICAgICAgICA6ICIw IihfX2EpLCAidyIoX19iKSwgInciKF9fYykKLSAgICAgICAgICAgOiAvKiBObyBjbG9iYmVycyAq Lyk7Ci0gIHJldHVybiBfX3Jlc3VsdDsKKyAgcmV0dXJuIF9fYnVpbHRpbl9hYXJjaDY0X3VhYmF2 OHFpX3V1dXUgKF9fYSwgX19iLCBfX2MpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lu bGluZSB1aW50MTZ4NF90CiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251 X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2YWJhX3UxNiAodWludDE2eDRfdCBfX2EsIHVp bnQxNng0X3QgX19iLCB1aW50MTZ4NF90IF9fYykKIHsKLSAgdWludDE2eDRfdCBfX3Jlc3VsdDsK LSAgX19hc21fXyAoInVhYmEgJTAuNGgsJTIuNGgsJTMuNGgiCi0gICAgICAgICAgIDogIj13Iihf X3Jlc3VsdCkKLSAgICAgICAgICAgOiAiMCIoX19hKSwgInciKF9fYiksICJ3IihfX2MpCi0gICAg ICAgICAgIDogLyogTm8gY2xvYmJlcnMgKi8pOwotICByZXR1cm4gX19yZXN1bHQ7CisgIHJldHVy biBfX2J1aWx0aW5fYWFyY2g2NF91YWJhdjRoaV91dXV1IChfX2EsIF9fYiwgX19jKTsKIH0KIAog X19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdWludDMyeDJfdAogX19hdHRyaWJ1dGVfXyAo KF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFsX18pKQogdmFi YV91MzIgKHVpbnQzMngyX3QgX19hLCB1aW50MzJ4Ml90IF9fYiwgdWludDMyeDJfdCBfX2MpCiB7 Ci0gIHVpbnQzMngyX3QgX19yZXN1bHQ7Ci0gIF9fYXNtX18gKCJ1YWJhICUwLjJzLCUyLjJzLCUz LjJzIgotICAgICAgICAgICA6ICI9dyIoX19yZXN1bHQpCi0gICAgICAgICAgIDogIjAiKF9fYSks ICJ3IihfX2IpLCAidyIoX19jKQotICAgICAgICAgICA6IC8qIE5vIGNsb2JiZXJzICovKTsKLSAg cmV0dXJuIF9fcmVzdWx0OworICByZXR1cm4gX19idWlsdGluX2FhcmNoNjRfdWFiYXYyc2lfdXV1 dSAoX19hLCBfX2IsIF9fYyk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGlu dDE2eDhfdApAQCAtNjgzNyw3MiArNjgwNyw0MiBAQCBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lu bGluZSBpbnQ4eDE2X3QKIF9fYXR0cmlidXRlX18gKChfX2Fsd2F5c19pbmxpbmVfXywgX19nbnVf aW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZhYmFxX3M4IChpbnQ4eDE2X3QgX19hLCBpbnQ4 eDE2X3QgX19iLCBpbnQ4eDE2X3QgX19jKQogewotICBpbnQ4eDE2X3QgX19yZXN1bHQ7Ci0gIF9f YXNtX18gKCJzYWJhICUwLjE2YiwlMi4xNmIsJTMuMTZiIgotICAgICAgICAgICA6ICI9dyIoX19y ZXN1bHQpCi0gICAgICAgICAgIDogIjAiKF9fYSksICJ3IihfX2IpLCAidyIoX19jKQotICAgICAg ICAgICA6IC8qIE5vIGNsb2JiZXJzICovKTsKLSAgcmV0dXJuIF9fcmVzdWx0OworICByZXR1cm4g X19idWlsdGluX2FhcmNoNjRfc2FiYXYxNnFpIChfX2EsIF9fYiwgX19jKTsKIH0KIAogX19leHRl bnNpb25fXyBleHRlcm4gX19pbmxpbmUgaW50MTZ4OF90CiBfX2F0dHJpYnV0ZV9fICgoX19hbHdh eXNfaW5saW5lX18sIF9fZ251X2lubGluZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2YWJhcV9zMTYg KGludDE2eDhfdCBfX2EsIGludDE2eDhfdCBfX2IsIGludDE2eDhfdCBfX2MpCiB7Ci0gIGludDE2 eDhfdCBfX3Jlc3VsdDsKLSAgX19hc21fXyAoInNhYmEgJTAuOGgsJTIuOGgsJTMuOGgiCi0gICAg ICAgICAgIDogIj13IihfX3Jlc3VsdCkKLSAgICAgICAgICAgOiAiMCIoX19hKSwgInciKF9fYiks ICJ3IihfX2MpCi0gICAgICAgICAgIDogLyogTm8gY2xvYmJlcnMgKi8pOwotICByZXR1cm4gX19y ZXN1bHQ7CisgIHJldHVybiBfX2J1aWx0aW5fYWFyY2g2NF9zYWJhdjhoaSAoX19hLCBfX2IsIF9f Yyk7CiB9CiAKIF9fZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIGludDMyeDRfdAogX19hdHRy aWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVfXywgX19hcnRpZmljaWFs X18pKQogdmFiYXFfczMyIChpbnQzMng0X3QgX19hLCBpbnQzMng0X3QgX19iLCBpbnQzMng0X3Qg X19jKQogewotICBpbnQzMng0X3QgX19yZXN1bHQ7Ci0gIF9fYXNtX18gKCJzYWJhICUwLjRzLCUy LjRzLCUzLjRzIgotICAgICAgICAgICA6ICI9dyIoX19yZXN1bHQpCi0gICAgICAgICAgIDogIjAi KF9fYSksICJ3IihfX2IpLCAidyIoX19jKQotICAgICAgICAgICA6IC8qIE5vIGNsb2JiZXJzICov KTsKLSAgcmV0dXJuIF9fcmVzdWx0OworICByZXR1cm4gX19idWlsdGluX2FhcmNoNjRfc2FiYXY0 c2kgKF9fYSwgX19iLCBfX2MpOwogfQogCiBfX2V4dGVuc2lvbl9fIGV4dGVybiBfX2lubGluZSB1 aW50OHgxNl90CiBfX2F0dHJpYnV0ZV9fICgoX19hbHdheXNfaW5saW5lX18sIF9fZ251X2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCiB2YWJhcV91OCAodWludDh4MTZfdCBfX2EsIHVpbnQ4eDE2 X3QgX19iLCB1aW50OHgxNl90IF9fYykKIHsKLSAgdWludDh4MTZfdCBfX3Jlc3VsdDsKLSAgX19h c21fXyAoInVhYmEgJTAuMTZiLCUyLjE2YiwlMy4xNmIiCi0gICAgICAgICAgIDogIj13IihfX3Jl c3VsdCkKLSAgICAgICAgICAgOiAiMCIoX19hKSwgInciKF9fYiksICJ3IihfX2MpCi0gICAgICAg ICAgIDogLyogTm8gY2xvYmJlcnMgKi8pOwotICByZXR1cm4gX19yZXN1bHQ7CisgIHJldHVybiBf X2J1aWx0aW5fYWFyY2g2NF91YWJhdjE2cWlfdXV1dSAoX19hLCBfX2IsIF9fYyk7CiB9CiAKIF9f ZXh0ZW5zaW9uX18gZXh0ZXJuIF9faW5saW5lIHVpbnQxNng4X3QKIF9fYXR0cmlidXRlX18gKChf X2Fsd2F5c19pbmxpbmVfXywgX19nbnVfaW5saW5lX18sIF9fYXJ0aWZpY2lhbF9fKSkKIHZhYmFx X3UxNiAodWludDE2eDhfdCBfX2EsIHVpbnQxNng4X3QgX19iLCB1aW50MTZ4OF90IF9fYykKIHsK LSAgdWludDE2eDhfdCBfX3Jlc3VsdDsKLSAgX19hc21fXyAoInVhYmEgJTAuOGgsJTIuOGgsJTMu OGgiCi0gICAgICAgICAgIDogIj13IihfX3Jlc3VsdCkKLSAgICAgICAgICAgOiAiMCIoX19hKSwg InciKF9fYiksICJ3IihfX2MpCi0gICAgICAgICAgIDogLyogTm8gY2xvYmJlcnMgKi8pOwotICBy ZXR1cm4gX19yZXN1bHQ7CisgIHJldHVybiBfX2J1aWx0aW5fYWFyY2g2NF91YWJhdjhoaV91dXV1 IChfX2EsIF9fYiwgX19jKTsKIH0KIAogX19leHRlbnNpb25fXyBleHRlcm4gX19pbmxpbmUgdWlu dDMyeDRfdAogX19hdHRyaWJ1dGVfXyAoKF9fYWx3YXlzX2lubGluZV9fLCBfX2dudV9pbmxpbmVf XywgX19hcnRpZmljaWFsX18pKQogdmFiYXFfdTMyICh1aW50MzJ4NF90IF9fYSwgdWludDMyeDRf dCBfX2IsIHVpbnQzMng0X3QgX19jKQogewotICB1aW50MzJ4NF90IF9fcmVzdWx0OwotICBfX2Fz bV9fICgidWFiYSAlMC40cywlMi40cywlMy40cyIKLSAgICAgICAgICAgOiAiPXciKF9fcmVzdWx0 KQotICAgICAgICAgICA6ICIwIihfX2EpLCAidyIoX19iKSwgInciKF9fYykKLSAgICAgICAgICAg OiAvKiBObyBjbG9iYmVycyAqLyk7Ci0gIHJldHVybiBfX3Jlc3VsdDsKKyAgcmV0dXJuIF9fYnVp bHRpbl9hYXJjaDY0X3VhYmF2NHNpX3V1dXUgKF9fYSwgX19iLCBfX2MpOwogfQogCiBfX2V4dGVu c2lvbl9fIGV4dGVybiBfX2lubGluZSBpbnQ4eDhfdAo= --_002_DB7PR08MB30021557CD4375A4736500C093AE0DB7PR08MB3002eurp_--