From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2051.outbound.protection.outlook.com [40.107.7.51]) by sourceware.org (Postfix) with ESMTPS id 41BB83857706 for ; Tue, 23 May 2023 10:10:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 41BB83857706 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MTdB1br8EQ6tcRYTp9ziFZ2aiZUKB7mG690UZQvpSL0=; b=fhINLmJEVio7VkxECAb5iDOF+BGSEc6fri7pWlfV6ZmER36t1/z9fjlLtWvjrY12SNUUAKK48PSKsfkDLi65LvNeab97ZIjp0ekS8P+biP6WNOlAgtXeyKsjAJ1Jz2A6UHKXGCyHOkPby6WbnapDuk51D5NwrsnlCdE3DmULutU= Received: from AS9PR06CA0083.eurprd06.prod.outlook.com (2603:10a6:20b:464::27) by DB9PR08MB6571.eurprd08.prod.outlook.com (2603:10a6:10:25b::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Tue, 23 May 2023 10:09:59 +0000 Received: from AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:464:cafe::28) by AS9PR06CA0083.outlook.office365.com (2603:10a6:20b:464::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.29 via Frontend Transport; Tue, 23 May 2023 10:09:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM7EUR03FT010.mail.protection.outlook.com (100.127.141.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.14 via Frontend Transport; Tue, 23 May 2023 10:09:59 +0000 Received: ("Tessian outbound 3570909035da:v136"); Tue, 23 May 2023 10:09:59 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 3c8b5f278c8b1232 X-CR-MTA-TID: 64aa7808 Received: from 731625025bbf.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 531858A5-27CE-462A-8D2C-F7EFAB67D50D.1; Tue, 23 May 2023 10:09:52 +0000 Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 731625025bbf.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 23 May 2023 10:09:52 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YPw/h80ocwVjei7gkLnaxb6Eid/oZyrlMcti2e3SGj+Vb3b+v5zua/zQU0bUaZJmNdpQiGnlAbqsAiULtmQnPJyQpMQQXAH6nSi1C553+5jW1S+EITh1YZFbqYQM+6h0DRHjiLqK7BesQHz5cvfgIG/yW8JGAxAcEZWsPBTcNlKbLfOGBaqI4/H2G+8TKiq/9cNy70A7koj2P5Gzx2UkCKRKK3+ppdYpz7aZc4ClwiWgezsrKcaespvjRgFX0QHPwFpdjoo6aw61j6TiqRm84Q/JzY+oDHGa08Qu8exjYuMr+/DJug3/Xy6fl7y341QDjBaOEXiULnmsiMrSC6BYjg== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=MTdB1br8EQ6tcRYTp9ziFZ2aiZUKB7mG690UZQvpSL0=; b=JYWJu0R1QTJrMN2Aled3GJOpE7nluHLwYJN4aq/u6gdw+Is22KlVITKfc4Bn9un0dz+turhp8fMHGJR3xXGpUuu4F9XyDXCDPXrjG8KkgrmIpChv/vEGvskR8xu+h1Ft+OyGvZrcDEG2I5M+SyJOEcfacABvwvb2bLUfETD3QB1F6hwv1OfjDVNHLn9ZXRKNM6/pym9FrwerAygQBkQFHniusfQUl6W08zE6YUs4iFAvPFvDPCTEjJ0gzDzu4JNlx7UJr4T5egFwxl1WoW83jshGsD0Bbewinx0op6pOW6TFy87WrjDEdlWpLaNmMf8fdLCG4uZRf+jW4ekuAt+Wfw== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MTdB1br8EQ6tcRYTp9ziFZ2aiZUKB7mG690UZQvpSL0=; b=fhINLmJEVio7VkxECAb5iDOF+BGSEc6fri7pWlfV6ZmER36t1/z9fjlLtWvjrY12SNUUAKK48PSKsfkDLi65LvNeab97ZIjp0ekS8P+biP6WNOlAgtXeyKsjAJ1Jz2A6UHKXGCyHOkPby6WbnapDuk51D5NwrsnlCdE3DmULutU= Received: from PAXPR08MB6926.eurprd08.prod.outlook.com (2603:10a6:102:138::24) by GV2PR08MB8509.eurprd08.prod.outlook.com (2603:10a6:150:b1::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Tue, 23 May 2023 10:09:49 +0000 Received: from PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::db73:66ba:ae70:1ff1]) by PAXPR08MB6926.eurprd08.prod.outlook.com ([fe80::db73:66ba:ae70:1ff1%3]) with mapi id 15.20.6411.028; Tue, 23 May 2023 10:09:49 +0000 From: Kyrylo Tkachov To: "gcc-patches@gcc.gnu.org" Subject: [PATCH][committed] aarch64: PR target/109855 Add predicate and constraints to define_subst in aarch64-simd.md Thread-Topic: [PATCH][committed] aarch64: PR target/109855 Add predicate and constraints to define_subst in aarch64-simd.md Thread-Index: AdmNXjJMKexLrwV/QIWjAxSCcWDblQ== Date: Tue, 23 May 2023 10:09:49 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAXPR08MB6926:EE_|GV2PR08MB8509:EE_|AM7EUR03FT010:EE_|DB9PR08MB6571:EE_ X-MS-Office365-Filtering-Correlation-Id: 28965921-ff99-4131-6037-08db5b75dddc x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 4FtSSxYUCvhFSMzYAJyX9ofGT/RVCF//LHA2JNrE6bme16iyfSnejivWmSwaKd7d1r0OL2vzBvZm+wqY7S/SMxHk/lTtE/0v5rF/0z7jMLO8mvTRWI7gzLDyYCSIM24+0Vr2n2vz0dF5tF5KJWy+tQH/yqb8liPC61KJIzapI1FnJlJt+X12RQriwig6ERnVle35gNNK/XLdpZ05Gryr/YjxkwOt+n0gDsAN9R/owfODBuL6RUp//T4SLB/Vei2nzg1AQNXLzo5i2r+Z86XMDUIDZnKah4heY+rDB3UmWj1L6VFkP7acwq3+lhFc5eG0W94xb3n/IaIsrDuuw0vlHYB1gS6byVLqKWHYUstrZsrklDGB3cxU9YDXWAcI6CHF0bbOCVATYzR4Y8ranjXhCVO5do3ZhoK0Kn8ZzJzGgxKZbs7K/eu8WVmJi8HiPSSiYtyHG5oPBVQqIQ0GoIgXJPlH2m6+0+Cbv7MLRy5Qf/AMKJw5PAToTcAdWfAvuYPKBrLXcZ2ZFLBL7euAVaheAnd5ZfxamOsJUnXtzOXoJoT9nMQvFpuroB2kpiu/t6YA+9zQdmgCKTMBqGdg3l3hl6t7jQibeySkXti4csngQok= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6926.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(376002)(346002)(396003)(39860400002)(366004)(136003)(451199021)(55016003)(41300700001)(186003)(2906002)(6916009)(76116006)(66446008)(66946007)(66556008)(66476007)(7696005)(316002)(478600001)(64756008)(71200400001)(52536014)(9686003)(26005)(6506007)(5660300002)(8676002)(8936002)(38070700005)(99936003)(38100700002)(122000001)(33656002)(86362001)(84970400001);DIR:OUT;SFP:1101; Content-Type: multipart/mixed; boundary="_002_PAXPR08MB69265A76C2D1908B800EB9AA93409PAXPR08MB6926eurp_" MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB8509 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 1eb9db12-c722-4e15-7f5b-08db5b75d7dc X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Muo7aXfl+lQhEpZvQR7dZWT+gRrnocm1bHW7d0nnU/NcjFwGwCgrclqDfhiFos96xxhrmM4ht4RBTG4W6rkl8VIC41XrU4Dvhw5LpBPIujPhaTr8dwJq0rekC7+wvby78hju1dFEAmZxbBIklFeXJr5lTadk35YzCGjgZp8aNXqGHBnAbsn6XE8hJe3bVH2+3nw+3bqC3dN0WEf67laLIhxFydmcz5k7Jh/cPX//rf/hhujtHt3qSN7OHUXz0vLyIJD9/2erd7moaCAC2jUMucOHQXI8Hf1digEpt3d0kc3McPKR1eJHhpwX9BINtlUR/MkDUZtYP3igkE21nKR46WzEWDt2/Os6cFQwS+yCKWSq8+y78KNwajZt6KygB4kxD8Kd8EvYRX8IBHCTBk8HoxDYRYUCJRu4FlvhDYGDvtEKkn0MnZ1H/DnWHD8OyA25p/G8/ZXOeg1tHF9U8VljiWUYG+nDKezgI8K3Z6upsSjAGjSUYAREp1cgWCSBADBJR2u4Te0t2y7NOdieCpaXbnDiJfchF98Z3pNvx393gpXOYXF2mKmJ5QvEGq4aZZbiAd9gywC5xqwFf3CKWY8h3FPJxbXIdkygKQ3G66OOBZVYUp9z1i3olgHo/p/yRxQvqDyFmEY4gjiuqsK7Y3viN98du91aHQ00t4iNYTGAKF4S7cc5pcQRYBmvGvkpU4GUF271VZx99ouFaVK5ZfMPwwtJb6mg9BlcCZ9q9ZZvfP4= 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:(13230028)(4636009)(39860400002)(376002)(346002)(136003)(396003)(451199021)(36840700001)(46966006)(40470700004)(36860700001)(70586007)(99936003)(82740400003)(84970400001)(478600001)(6916009)(356005)(81166007)(47076005)(70206006)(316002)(7696005)(82310400005)(41300700001)(40460700003)(86362001)(336012)(5660300002)(2906002)(40480700001)(55016003)(8936002)(8676002)(6506007)(9686003)(26005)(33656002)(235185007)(186003)(52536014);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 May 2023 10:09:59.3784 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 28965921-ff99-4131-6037-08db5b75dddc 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: AM7EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6571 X-Spam-Status: No, score=0.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,KAM_DMARC_NONE,KAM_SHORT,MEDICAL_SUBJECT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --_002_PAXPR08MB69265A76C2D1908B800EB9AA93409PAXPR08MB6926eurp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, In this PR we ICE because the substituted pattern for mla "lost" its predic= ate and constraint for operand 0 because the define_subst template: [(set (match_operand: 0) (vec_concat: (match_dup 1) (match_operand:VDZ 2 "aarch64_simd_or_scalar_imm_zero")))]) Uses match_operand instead of match_dup for operand 0. We can't use match_d= up 0 for it because we need to specify the widened mode. The problem is fixed by adding a "register_operand" predicate and "=3Dw" co= nstraint to the match_operand. This makes sense conceptually too as the transformation we're targeting onl= y applies to instructions that write a "w" register. With this change the mddump pattern that ICEs goes from: (define_insn ("aarch64_mlav4hi_vec_concatz_le") [ (set (match_operand:V8HI 0 ("") ("")) <<------ Missing constraint! (vec_concat:V8HI (plus:V4HI (mult:V4HI (match_operand:V4HI 2 ("= register_operand") ("w")) (match_operand:V4HI 3 ("register_operand") ("w"))) (match_operand:V4HI 1 ("register_operand") ("0"))) (match_operand:V4HI 4 ("aarch64_simd_or_scalar_imm_zero") (= "")))) ] ("(!BYTES_BIG_ENDIAN) && (TARGET_SIMD)") ("mla\t%0.4h, %2.4h, %3.4h") to the proper: (define_insn ("aarch64_mlav4hi_vec_concatz_le") [ (set (match_operand:V8HI 0 ("register_operand") ("=3Dw")) <<-------= - Constraint in the right place (vec_concat:V8HI (plus:V4HI (mult:V4HI (match_operand:V4HI 2 ("= register_operand") ("w")) (match_operand:V4HI 3 ("register_operand") ("w"))) (match_operand:V4HI 1 ("register_operand") ("0"))) (match_operand:V4HI 4 ("aarch64_simd_or_scalar_imm_zero") (= "")))) ] ("(!BYTES_BIG_ENDIAN) && (TARGET_SIMD)") ("mla\t%0.4h, %2.4h, %3.4h") This seems to do the right thing for multi-alternative patterns as well, th= e annotated pattern for aarch64_cmltv8qi is: (define_insn ("aarch64_cmltv8qi") [ (set (match_operand:V8QI 0 ("register_operand") ("=3Dw,w")) (neg:V8QI (lt:V8QI (match_operand:V8QI 1 ("register_operand") (= "w,w")) (match_operand:V8QI 2 ("aarch64_simd_reg_or_zero") ("w,= ZDz"))))) ] whereas the substituted version now looks like: (define_insn ("aarch64_cmltv8qi_vec_concatz_le") [ (set (match_operand:V16QI 0 ("register_operand") ("=3Dw,w")) (vec_concat:V16QI (neg:V8QI (lt:V8QI (match_operand:V8QI 1 ("re= gister_operand") ("w,w")) (match_operand:V8QI 2 ("aarch64_simd_reg_or_zero") = ("w,ZDz")))) (match_operand:V8QI 3 ("aarch64_simd_or_scalar_imm_zero") (= "")))) ] Bootstrapped and tested on aarch64-none-linux-gnu. Pushing to trunk. Thanks, Kyrill gcc/ChangeLog: PR target/109855 * config/aarch64/aarch64-simd.md (add_vec_concat_subst_le): Add predicate and constraint for operand 0. (add_vec_concat_subst_be): Likewise. gcc/testsuite/ChangeLog: PR target/109855 * gcc.target/aarch64/pr109855.c: New test. --_002_PAXPR08MB69265A76C2D1908B800EB9AA93409PAXPR08MB6926eurp_ Content-Type: application/octet-stream; name="subst-pred.patch" Content-Description: subst-pred.patch Content-Disposition: attachment; filename="subst-pred.patch"; size=1516; creation-date="Tue, 23 May 2023 10:05:58 GMT"; modification-date="Tue, 23 May 2023 10:09:49 GMT" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQgYi9nY2MvY29u ZmlnL2FhcmNoNjQvYWFyY2g2NC1zaW1kLm1kCmluZGV4IGZiZjM4ZDdkZmU1OGYyYWU0ODMxMmY3 NTEzMzQxMmNiMGM3Y2EwZmEuLmVjNTMxMjc0MTBmMjRkN2IzMjkwNzk2OWFjYzFkMmRlZDhlOTc3 MjAgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LXNpbWQubWQKKysrIGIv Z2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtc2ltZC5tZApAQCAtMjYsNyArMjYsNyBAQCAoZGVm aW5lX3N1YnN0ICJhZGRfdmVjX2NvbmNhdF9zdWJzdF9sZSIKICAgWyhzZXQgKG1hdGNoX29wZXJh bmQ6VkRaIDApCiAgICAgICAgIChtYXRjaF9vcGVyYW5kOlZEWiAxKSldCiAgICIhQllURVNfQklH X0VORElBTiIKLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6PFZEQkw+IDApCisgIFsoc2V0IChtYXRj aF9vcGVyYW5kOjxWREJMPiAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXciKQogICAgICAgICAodmVj X2NvbmNhdDo8VkRCTD4KICAgICAgICAgIChtYXRjaF9kdXAgMSkKICAgICAgICAgIChtYXRjaF9v cGVyYW5kOlZEWiAyICJhYXJjaDY0X3NpbWRfb3Jfc2NhbGFyX2ltbV96ZXJvIikpKV0pCkBAIC0z NSw3ICszNSw3IEBAIChkZWZpbmVfc3Vic3QgImFkZF92ZWNfY29uY2F0X3N1YnN0X2JlIgogICBb KHNldCAobWF0Y2hfb3BlcmFuZDpWRFogMCkKICAgICAgICAgKG1hdGNoX29wZXJhbmQ6VkRaIDEp KV0KICAgIkJZVEVTX0JJR19FTkRJQU4iCi0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOjxWREJMPiAw KQorICBbKHNldCAobWF0Y2hfb3BlcmFuZDo8VkRCTD4gMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj13 IikKICAgICAgICAgKHZlY19jb25jYXQ6PFZEQkw+CiAgICAgICAgICAobWF0Y2hfb3BlcmFuZDpW RFogMiAiYWFyY2g2NF9zaW1kX29yX3NjYWxhcl9pbW1femVybyIpCiAgICAgICAgICAobWF0Y2hf ZHVwIDEpKSldKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQv cHIxMDk4NTUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTA5ODU1LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMC4uOTBkYjkwYzZjZjlhODY1NTVjZjk3MzRjMjE5ZDhkNWI4MjI5ZmE4MgotLS0g L2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByMTA5ODU1 LmMKQEAgLTAsMCArMSwxMiBAQAorLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLU8iIH0gKi8KKwordHlwZWRlZiBjaGFyIF9fYXR0cmlidXRlX18oKF9fdmVjdG9yX3Np emVfXyAoNCkpKSBVOwordHlwZWRlZiBzaG9ydCBfX2F0dHJpYnV0ZV9fKChfX3ZlY3Rvcl9zaXpl X18gKDgpKSkgVjsKKworVQorZm9vIChWIHYsIFYgdykKK3sKKyAgcmV0dXJuIF9fYnVpbHRpbl9j b252ZXJ0dmVjdG9yICh3ICogdyArIHcsIFUpOworfQorCg== --_002_PAXPR08MB69265A76C2D1908B800EB9AA93409PAXPR08MB6926eurp_--