From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03on2081.outbound.protection.outlook.com [40.107.105.81]) by sourceware.org (Postfix) with ESMTPS id 2986F3858D35 for ; Wed, 21 Jun 2023 06:28:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2986F3858D35 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H40kg1fKU0jAFqH+3OfzsV63MjxuoC2DcoJBEoW+ojYCMDo+nOyUETf5c7U8O9/bXwKfOD6RAiKe3p3AlQcJ4JekPhRb6Xf9oZ4ifJS2F3wEPSJtk7VcXst6Pm7lB0C49wSGAnZNfnEWO33QjlvuMFpGpnnHcQ/PGGdGdT7grQftZjwsI7r9++dpyosQ8WnvGFupeZKfh8PLHymeYsACY9eVPzFBipVruZfymcb9H7f0sSQquqi5hOrl8zuwZ9g19z1oMednzMyfF/r62aMBstptwWUm9oE1MSbgEaV8OWgezet+yp5l3ZwsD26MkHgsqbV+QF+V7CvqmS2Dq8zPQg== 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=GYy39gWtqi7euAFh1YQJAE89ZdTOyEFxanNO5R0P+A8=; b=EJ8vl0w+Ob1Vne9vtoaHxLdmPx867BvSLJZ1e5Zy2AOwpGIeWFfd6A5cP7X13dRAvpZpulE4Os2lqkoeVkNGJKbpB5XaqTrs3yEuBlFUZxhOosa4VEw71pbhU9kWws1LtEI2WwciHx5vNm5g40FAvrnJEy8bxeGlaJBcje8fps5Q7aNjtYsMiXyLm1pFLT5Pnd6dtehcka446iyg5vKYysR9bCC2fiZrUGv71IlXHiV8DhsUdY9zFLO270Btnq+oqkGRvYQ/6iDWN9Z0ei1UQlqHZoI0GGhoBEgqcUDcAGlYZqHNKP43vU8rHbE/ro+1KhDCUQcOYJka3F17zTRTow== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GYy39gWtqi7euAFh1YQJAE89ZdTOyEFxanNO5R0P+A8=; b=nILAcgI1WKbXML88eC5W/IzNnuoAP8GsRA8KGDOUW/DhfudKLyhOKauu0F3ze9tr4HWjtKU7+EFjiHa6qmwTBId0NX+vCLD9baB2wy24vJ1tUmKn+O7pK9Rc5HHRWO2Cx36riromIwcNg2FGtFj6PhlrEUyLbQpTJL0aFkJWp2DE2TpJfi1s8SCIOmWvK9IkZGLY+SLyEiG8JM29kfcVmhxFxkRlZwLu0QJVL/QoA54o/wksgQrF+mFLukwOkPMuEv1/TDSfAuYQyBs2xOmjVpfcESnsx4M+Ve1g3zxtR244maaksgCaAeG0DPizL9IRF/mEkIYc552jPs7iamhM3w== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) by DUZPR04MB9982.eurprd04.prod.outlook.com (2603:10a6:10:4db::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.23; Wed, 21 Jun 2023 06:28:14 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e442:306f:7711:e24c%5]) with mapi id 15.20.6500.036; Wed, 21 Jun 2023 06:28:14 +0000 Message-ID: <0075f542-9dc0-33db-4cf9-cdd3ba502122@suse.com> Date: Wed, 21 Jun 2023 08:28:12 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.12.0 Subject: [PATCH 5/5] x86: yet more PR target/100711-like splitting Content-Language: en-US From: Jan Beulich To: "gcc-patches@gcc.gnu.org" Cc: Hongtao Liu , Kirill Yukhin References: <04f99abe-a563-d093-23b7-4abf0f91633d@suse.com> In-Reply-To: <04f99abe-a563-d093-23b7-4abf0f91633d@suse.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0031.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::9) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|DUZPR04MB9982:EE_ X-MS-Office365-Filtering-Correlation-Id: 0e8ec0c8-b17e-4047-7435-08db7220b170 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Eyv9Eu/kO+VZayFAc0yK1h94lynCVWiB0it2hwId6KHdteIpgPqsQ8s+u00wDq50UJuqk3R5cdIgBNrwCp9NQlQ+Ms4MJHYpsPIz6OCkz1Eq/fw3Lo3lkj8cWn2SprAj2xumy9BRAQQGVnt301qV1UhQKUMzk4YxiyPRv1ZgqjCkOk63aCf/3vJlKPxLOWfLvIk2eL6Aq6mgBrgHgvOPgpjI68xThDbHpoqpXaHDAJYzdT9i0zLPyb3TLQxwcLBlXCvERqqVwulaUXefA03+F/iXj6PqGfBw4FNkp6zqfXTjx6S0k4cE3uP1xSv8GBwz+pKFx9HUffJFzVo7FzMnCt5GxHMcKwEjhkZiy34jmgjywuSJT6xvUG6aTUAcHg2yDNOcPyQPNXz8pnanmlDq4PNuarcez18GOfAS4A3rOzwFj1NpWyDyI4BC1lT9RcE28R6RBmAgayaW8MY3zhKDdtPheLApN7A0dtPxTPt2EKHbP2jKMeHEMwVAzOfDPKEsqGl6Amg2OSxiTJW6+jItD3b2MVCwm0/eTGTq4iF07Yu6zqt/U8lTW4lMa/35SLMPJbZ/xLac0xJjMH0KNUjrYdReMFnC9Bq5aFEJiQm/zpVXVHubjrFWzQ+gcNu28Su3scc0tLUmoh1+2mZZXv2Y+g== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VE1PR04MB6560.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(366004)(39860400002)(376002)(136003)(346002)(396003)(451199021)(2616005)(84970400001)(6506007)(26005)(186003)(6512007)(66899021)(38100700002)(6486002)(478600001)(54906003)(31686004)(36756003)(31696002)(86362001)(66556008)(66946007)(66476007)(8936002)(8676002)(4326008)(316002)(6916009)(2906002)(5660300002)(41300700001)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?K0p4R2pva3hLbm0wbXNGMC9VN2xFbndKRzFSM3MzYU9jNis2T0N4V240UUNM?= =?utf-8?B?RTdLT2xPR0NsaXpFeWhoMVA3eGZtUy95MkJoSnFvTjR2bnNzMGVtb2RmTUo5?= =?utf-8?B?S0ZFQ25qU2FGc2ViTWsrN3NwQnh0NWhXVGlmMFVzeDJVU3pnclRWc1VXSmNM?= =?utf-8?B?bWtlcTdPWlVRZEZSSmF2NmVnSzk3Yk5DdkdNUXNrenZiREhJSGhRUHh0K1Q5?= =?utf-8?B?QkxsQVRMd2FWOWIxTUQ3MUVFSUorNEFUaXMrclJNV1pIK2JBbkE4SWp2NUMx?= =?utf-8?B?Vlo0VmFwWTFkNEE1MzZUNVNyMWNYLzFNN2VEZGlBald3Q3lrVndhSnVlRWxC?= =?utf-8?B?QzBLK2h5UVJjQ0dYVWcvWmY1SGV2ZUZNQkx0MXJhR0VlRlhUdUZSZHZOTWd6?= =?utf-8?B?Vys1OUJkc3RndHE1NVdISHAxRC94bzl1OTNtNHQrbUhmVUtoUGI2YjgzVGNT?= =?utf-8?B?TFFLYnlpV1l4Yms5YXNUeGVnVzZzVk90NForS1pMM0tEWTZrZUJqNVp3YWdM?= =?utf-8?B?aXBJK0J6M05kNVV0emZhUlIrVGpIS0Z2WHBCdlJtRS9GN1VicEFjZHRoRGp1?= =?utf-8?B?VTliMS9HVkxObUo5T2huc0lxMUxuUVlvaUdpTEJLdmR0TXdtQmpZME9UcWpv?= =?utf-8?B?cXZuOU9lVmdhSnJCbERadnZQNzE1ZkNaZ2lGeHBZdjJpNXVmakFMQkNWNUdK?= =?utf-8?B?dXdGOWVjSVdGVnR0K2JNVE5hbVF2VEJzVVIzUEVKSkc4UWo1NGxMaG9PZUR2?= =?utf-8?B?VjZFN2k5R1JFcysrTU1SSG9INVpjL1VsQmJja1lkN3R2S0wwOGZOYUVXNm05?= =?utf-8?B?QVVRRmJianpFblcxWjZYbyszWjNaY1lTc3dLcEFBaUpsbUY5NHluME40Yyt4?= =?utf-8?B?UldZYUdQdnZlRXBQaTErQVB5YVlZc2JxUzVXWHZDcjM1VUptc0VWT0I0dWNn?= =?utf-8?B?MDBRbFN5VGxoRnRVd0JidlFMRGMzdW1ucFhjT1l4TXhoZ1ZxVjg2STdvRjM1?= =?utf-8?B?cVhMLy9tVXIraytJdmx3MDFzSXA1cklib1JFb1lIRmp3aVIvblQxMXlkSHNP?= =?utf-8?B?WUdaK2xtT0pnZWM0aTl5Rlg4WVlqZjFKNGlTU28yYjJxQUNUUjNTaFlDS1ZM?= =?utf-8?B?QjBuakdneDdHc2JlMExTbnNGQTUxaTR1SjN1cG1teEc5VEcra3BSRVFjTEZa?= =?utf-8?B?cVZnUGhZb3AzZEcvNVdodnBRc0dGMnB6Q3FMa04ycmNHeEUzSHhxZG85S0Ur?= =?utf-8?B?b3Q3NjhzQUV0ZnhXV3prSnIrZUhvdHF4VnZkTkV4QnlNY2RaWGhSNEZGTW9l?= =?utf-8?B?L25zbHdIb1pYVzRZMXU5azRRQ1hXTnJka0RYczhCU0R2aEZvalJoYmNCNDdX?= =?utf-8?B?YUU5aEdtbXNicFVBbWd2UEtJcktmdjVKc3pSU0xUcE4yQmtQKzlSZ1RYelRz?= =?utf-8?B?SnA0T3gvUkNKc285R0hrSHBubWI4VjFCcjF1d01CL0U3L2tIS1JzcGdKR2tD?= =?utf-8?B?OGhQSVM4emtFNEFIWEhOcGVSZDhoa3hTV1g1OFBzY2hXZ0lkT3hxYzg1WUI4?= =?utf-8?B?TmhVcUJyQjNxT003OGd6Z1AxZC8zS1hEbGg4S2M4UVFBR2lwUDlmOWdOdW4v?= =?utf-8?B?eUNkRHdhU2FyaGpCazlWV3hHcmN5bDJueFVMcGNPY2ozSzZhaEZBUVVQdjAv?= =?utf-8?B?YWdDeWhaSnBzTUFncHNMZk5qd3I2SHVQamlJNElNOEo0R2JiUW9vVDdIa1RP?= =?utf-8?B?UVA0U0VLUkZBMmRLb2xxSkZCNDFEN00xZHhtSEIwSzhtZ1FNT0I3UkhlYlR4?= =?utf-8?B?RmcveXpLV1RGaXdicnB3N3FiRGFSMUZ6UFd0T2czdHp5UFJwaXAxTnFGT3c3?= =?utf-8?B?Nnc5NFlLTXRGdjhnN1g2dVZFTE84WXFkaEtpNHB6eWtua1JEUDRtNVFpN3M1?= =?utf-8?B?THh2S3RMbXh3bEpPWVJHNXNTUmtCam1vYndNSjVYVmhEL3hIOXZaRWtNbVEv?= =?utf-8?B?emYvNXYwSUk3SzI3Mk1HK0R0WE01ZDVhcVlPOUVQV05qVFRvOHpYK3doN2ZO?= =?utf-8?B?R0FIUVplM1dvbTdWVkFGZThXMHlubWVXUXAwWEJiUXphQUt2NUh1azhzaUJn?= =?utf-8?Q?B+uWoaWrtWV1B3ET1919Tj7IC?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0e8ec0c8-b17e-4047-7435-08db7220b170 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Jun 2023 06:28:14.5537 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f7a17af6-1c5c-4a36-aa8b-f5be247aa4ba X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qrpXFCf6kGYK7LhyYickiJkqbjoPeMCpn4lX9jsfyIFJLtxfgXG9jfWRHVJ51++qCpH4udiBn200KNv3x0Yabw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DUZPR04MB9982 X-Spam-Status: No, score=-3027.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,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: Following two-operand bitwise operations, add another splitter to also deal with not followed by broadcast all on its own, which can be expressed as simple embedded broadcast instead once a broadcast operand is actually permitted in the respective insn. While there also permit a broadcast operand in the corresponding expander. gcc/ * config/i386/sse.md: New splitters to simplify not;vec_duplicate as a singular vpternlog. (one_cmpl2): Allow broadcast for operand 1. (one_cmpl2): Likewise. gcc/testsuite/ * gcc.target/i386/pr100711-6.c: New test. --- For the purpose here (and elsewhere) bcst_vector_operand() (really: bcst_mem_operand()) isn't permissive enough: We'd want it to allow 128-bit and 256-bit types as well irrespective of AVX512VL being enabled. This would likely require a new predicate (bcst_intvec_operand()?) and a new constraint (BR? Bi?). (Yet for name selection it will want considering that this is applicable to certain non-calculational FP operations as well.) --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -17156,7 +17156,7 @@ (define_expand "one_cmpl2" [(set (match_operand:VI 0 "register_operand") - (xor:VI (match_operand:VI 1 "vector_operand") + (xor:VI (match_operand:VI 1 "bcst_vector_operand") (match_dup 2)))] "TARGET_SSE" { @@ -17168,7 +17168,7 @@ (define_insn "one_cmpl2" [(set (match_operand:VI 0 "register_operand" "=v,v") - (xor:VI (match_operand:VI 1 "nonimmediate_operand" "v,m") + (xor:VI (match_operand:VI 1 "bcst_vector_operand" "vBr,m") (match_operand:VI 2 "vector_all_ones_operand" "BC,BC")))] "TARGET_AVX512F && (! @@ -17191,6 +17191,19 @@ (symbol_ref " == 64 || TARGET_AVX512VL") (const_int 1)))]) +(define_split + [(set (match_operand:VI48_AVX512F 0 "register_operand") + (vec_duplicate:VI48_AVX512F + (not: + (match_operand: 1 "nonimmediate_operand"))))] + " == 64 || TARGET_AVX512VL + || (TARGET_AVX512F && !TARGET_PREFER_AVX256)" + [(set (match_dup 0) + (xor:VI48_AVX512F + (vec_duplicate:VI48_AVX512F (match_dup 1)) + (match_dup 2)))] + "operands[2] = CONSTM1_RTX (mode);") + (define_expand "_andnot3" [(set (match_operand:VI_AVX2 0 "register_operand") (and:VI_AVX2 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr100711-6.c @@ -0,0 +1,18 @@ +/* { dg-do compile } */ +/* { dg-options "-mavx512f -mno-avx512vl -mprefer-vector-width=512 -O2" } */ + +typedef int v16si __attribute__ ((vector_size (64))); +typedef long long v8di __attribute__((vector_size (64))); + +v16si foo_v16si (const int *a) +{ + return (__extension__ (v16si) {~*a, ~*a, ~*a, ~*a, ~*a, ~*a, ~*a, ~*a, + ~*a, ~*a, ~*a, ~*a, ~*a, ~*a, ~*a, ~*a}); +} + +v8di foo_v8di (const long long *a) +{ + return (__extension__ (v8di) {~*a, ~*a, ~*a, ~*a, ~*a, ~*a, ~*a, ~*a}); +} + +/* { dg-final { scan-assembler-times "vpternlog\[dq\]\[ \\t\]+\\\$0x55, \\(%(?:eax|rdi|edi)\\)\\\{1to\[1-8\]+\\\}" 2 } } */