From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mxout.security-mail.net (mxout.security-mail.net [85.31.212.42]) by sourceware.org (Postfix) with ESMTPS id B99A4385C6DB for ; Tue, 12 Sep 2023 10:08:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B99A4385C6DB Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=kalrayinc.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=kalrayinc.com Received: from localhost (localhost [127.0.0.1]) by fx302.security-mail.net (Postfix) with ESMTP id D24BB4F83BC for ; Tue, 12 Sep 2023 12:08:00 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kalrayinc.com; s=sec-sig-email; t=1694513280; bh=vrGtnC+S0xJkcmJvvD3Ax30IrUHAMHxwUO6qqqNZF9M=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=S9vJwU5hV2wt2UDpygbJLI2xVNdCpsGdH8KWwB8kDz1cTaCCLuXXpqRp863FVSzof XazusN5KNM6avkTbkpl+807//5me/oKu3cGHEhTxqZDm7+4T2DbMc+kRvbWnmxdLE0 kceoDtZvzxvZ4ka8JQIz4JpvgaWtcI2r/YfwC+Fc= Received: from fx302 (localhost [127.0.0.1]) by fx302.security-mail.net (Postfix) with ESMTP id B52034F7EDA for ; Tue, 12 Sep 2023 12:08:00 +0200 (CEST) Received: from FRA01-MR2-obe.outbound.protection.outlook.com (mail-mr2fra01lp0102.outbound.protection.outlook.com [104.47.25.102]) by fx302.security-mail.net (Postfix) with ESMTPS id 457574F8422 for ; Tue, 12 Sep 2023 12:08:00 +0200 (CEST) Received: from PR1P264MB3448.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:184::6) by MRZP264MB2442.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6768.35; Tue, 12 Sep 2023 10:07:59 +0000 Received: from PR1P264MB3448.FRAP264.PROD.OUTLOOK.COM ([fe80::ad9:f173:8a66:3461]) by PR1P264MB3448.FRAP264.PROD.OUTLOOK.COM ([fe80::ad9:f173:8a66:3461%7]) with mapi id 15.20.6768.029; Tue, 12 Sep 2023 10:07:59 +0000 X-Virus-Scanned: E-securemail Secumail-id: <7499.65003880.44f77.0> ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Cpq2B2EfxuD82616ptOIxZMx3A5mxYAIYijzBblTsWaCKbvkZlugPpibQ894JwXsv88DIiVaPRWqDGyoqKw3xF2ZUovCZyLpIaxBm1aTu3gTL+XgD8pe1kje4vNTKGR87ZzmZobwtgnGWWad+mAaEq1dYtEiy5R7FUjHdMp9WIMCd4RVP5vxEEC0xGnCCMsrkjELdJu8Db4d2QVVxeK/JECBU8XJVdkG3ukmKTGzAgx3S9K+DgbCne482HvDubBZuPGjgdjcTP85DGPRdkhwk77H5paMd9RzMjl2xHKvfB10N/yJVXD7f0PgQ5mt13w0pu7vRt++Xf6SjiyKpjq24A== 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=C/NXl5yg3BydPms14MnELImbHE4LSLClADqqawN+ew4=; b=iaxP1NAFJcI3kcr5rdJA1T6bbAGhQfqJkG3EpdaMCDKU3eQwjCxtQPiislbnU/g2ZFGxLxcIIo63OzO8smmxbsVtiIk6x/oD+ArN/8eIfCug7EU3g0kWCSoAhUa0fvr/ampqRT7/PEicMcZ51Ao3RovfeYLEJFJ/wXvCBKGtemqc14w0Mz+VOa/i0jLdS1aljOOjYroSeaHawm9p9bfApUtxBsGU0yuvQeF7ZtQvK1VWQQFCLzsjMC9JPLbDo0wK2wRuOHv+q0Qx22HZxr2IXnWo2xTCCsie9C3XMpB4nDSkTRGelK16930VK9nPdN/wVNBdDja9cy3aCIy3lPQ5Cg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=kalrayinc.com; dmarc=pass action=none header.from=kalrayinc.com; dkim=pass header.d=kalrayinc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kalrayinc.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=C/NXl5yg3BydPms14MnELImbHE4LSLClADqqawN+ew4=; b=O+yNWw4nVDEzWqOqPjSA6JlugSEnGngW40ZJUtukgnOLez2AUKyY9VRNwYuyUUyzcg/j4bC2cdKYZ/z6e61P0UnIFR9rv33D6R41sFXwlrU0n2Er5A9TxZno0gb/Bmm7xVs4k7TVGbILDlnDurQCVOUZGIrKMnHwIV4y63CZ1Y1sLZ+vp36Tx4HnLrwEi9xlBTMoDK/pX2UNNNCiJvdpRfo0S/Ed9bRrWqE+c0zVPungG9GYWwuqMQZqdd/4nbNLlO+woBsAP96ap0WJupkqDKGbGYiP4G73IBiuFPBReaT28Z9fKfgpGuA3ABYqYAaR025aLDEo0738yDDyervb2g== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=kalrayinc.com; From: Sylvain Noiry To: gcc-patches@gcc.gnu.org Cc: Sylvain Noiry Subject: [PATCH v2 08/11] Native complex ops: Add explicit vector of complex Date: Tue, 12 Sep 2023 12:07:10 +0200 Message-ID: <20230912100713.1074-9-snoiry@kalrayinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230912100713.1074-1-snoiry@kalrayinc.com> References: <20230717090250.4645-10-snoiry@kalrayinc.com> <20230912100713.1074-1-snoiry@kalrayinc.com> X-ClientProxiedBy: LO4P123CA0193.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::18) To PR1P264MB3448.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:184::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PR1P264MB3448:EE_|MRZP264MB2442:EE_ X-MS-Office365-Filtering-Correlation-Id: ec22ec50-b012-4a67-b611-08dbb3782465 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Gpvo81jGxstYGb1IaioaLw8O39hL8JbZ62rfa3KID3YeVUUCH2Mr6T4DGErLPTAmI5X2ZcG4lx/bWC0JjcZlevqsgs7rUDhlxsauaM8lMnJOPeShM/f5ZQe8/uvd5/c8tMAfVovkzR8yV65YmTzlUJOBBSRsKkDH3ueMF8UzOTl53VsHQsdnNuFExupWAxZBQb+IchSZwJicp6y1IukcP9iFx75XG7WcupEhrG9TxtzcKfgOB4EIZ0wWyGWfTxHzC211N4YrhujvAF7V7wwbAP0055iQ4lfiK41kw9onO76NiglS3b/BJR+Fsoj7bdyqFepULYry2/d6GxhBTeBckU2x8UYhFImFoETO1h2i1cfUXiCBeAfri0pBOVu/f7KZjjJIEAg2mwCIkejlmUPOAPuaSLDikiFSGvYOxyxN2Ac/s2s0Cp1XFSsvrBftHqCWZyqFye7YjxEkAas+pRMsUo1KuT6OZsctN9PQiAgFY4QofSgy0GGoHoDDU4tulrqosQcGujA1ZS2SQ+LVWFxmE0BInQBqHaxvxABdRkDM4PQYc6h9f9+i3cUne8ax+dt0 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PR1P264MB3448.FRAP264.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230031)(136003)(366004)(376002)(346002)(396003)(39860400002)(451199024)(186009)(1800799009)(1076003)(107886003)(2616005)(5660300002)(4326008)(8936002)(8676002)(6512007)(26005)(6486002)(6666004)(6506007)(83380400001)(66476007)(66556008)(66946007)(38100700002)(478600001)(41300700001)(6916009)(316002)(36756003)(86362001)(2906002);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: YYCQAGr0Hho2qqlUWOdFXbs6qkWQgLKpJRGITgSDMwivREbG55KF5wxlfeJLyayQ2Bwi8x975E38dyzXDMDkht5fK7jFAL3lUv085aJa3zGJUTvatyGDCVMc973o7EVvcO+Y5DsOs2bX4quXfpqGEMuPmYVtjD0YBMp/JcbqI506QrpbhnSEPOEvLmXDpj6s2YZ4hUa+smRqNRlUIUdDsq5Wyk63XljirN3KYvCJXrzDubGK04iftdys4fGWgYYi1B3AXWmsfSrGygZekAvTsZ9pqqyar9/P/lVU+ydlaSIOd3aLmeYsOi8kUKQ1rXstUWhZ5G+g21+HuaSlslxMS2q/69JjJZb23fopAvComkMAhcta08AWhvFGQpMTGGz86zfRqPIr7u6JAnJhKdhFAFI4cyg2gzmn6WTuUgMwzKiMvXTLWfsvD5RZDPPnfFFRdBbK9gs7mAgwoFyfJ/Zvy1OmiYEqeJJIm1nvXjs0qCVmCUM083wUmquoZNlTm+LtZ6JDe+fV9OAfSU1zUVQrLgplPS9/40gsYmvPjGEQ6HKBmwuIMlvmyAlPpcYnFcMBuRVEQmfFWM6nsq3GdXU3tRNkcQOyyCBKXt0jOawObTnda/i9gFw++2uF8jTahm6smmCj5sMq9nRDWOQ/nJaF5GLATTEqmNJsUOIDeDgphnIODdX/ytSl/cjGs3tbRI3kxJCzPFqzA6awASHAq7hkL2s3QnSkuegEa0oyWUo5XLWSAsiAt2H+AT0IXZKwOGNJieLdMMnXWh1tU0ePHXTqqswoYNT2i8CgxSMtiV0mcguXExrpzyl/UEKTPJV6LuSstnNbugokFqPtPlfbi9tQCpylCHm7P0NfDHXB50e275MZClrGcXFm2x18gApLrw1wqB2I5En5bR4qtEY5iAf9Uh3WjPW8ZbfAc444vwr8hhd5t25LmA0yGQ1erZvXwSwN +szSLPys65Qy+lBM8CTNXh2iI9rRQR3hshz/bwdSPhyLiUYKVbEX0SD9W2ezAfO6DB7my7dopxcAz2ay+t4CFOBki8p/hJUQq2pLAWYSPOtMcOs9xbRBZ88W4UnMXYkugmMe2M9dMhOKBpjialr9cAmCBpSxWQWrltDiEXSZCzJB49Qrae+PJdscEIGP/5vy2zNKDnaSB8iB8top2wR0dBSUNvV2zNgmnSo7wOamcy29vQAzJxGbtsz981MCxVTFRKe2GOvPanB0DDkU0uCYpOR6lbtSXKtYPOQhENL2p2m0GfB/Mjt+v9p8UNNqcONo6a1SLtEkZXrWbkG4PAXoDQO3oqwxSR0BMiE0cHDSih3n9V5l/vJt07MZjRDEMHoPZTons+vyr2XDLu0v7HMDDgPm5UQn/NDmujxoZ6vEtoM3zneHLK+UzjCu6stS40Tnp/+WE5C5JXJjlxQWdSSKibLBHWg1lRuA0/UHug+rN72uNr4GbEl6IImGo++dBpQPGiJIA+J7IiQ0uxsoI4IwWcKEjcawCqBiffL4OWsW/8499X3QC2wIeiz6HHWEUtIeOVszFK0pQB1Ny+XzTq+pPC6R85ULUF8Yv7V6dn+IlkQRSFaCPzcuCSfHoYzXW/Hq X-OriginatorOrg: kalrayinc.com X-MS-Exchange-CrossTenant-Network-Message-Id: ec22ec50-b012-4a67-b611-08dbb3782465 X-MS-Exchange-CrossTenant-AuthSource: PR1P264MB3448.FRAP264.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2023 10:07:59.1972 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8931925d-7620-4a64-b7fe-20afd86363d3 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: D7cl++dKMeOemTZBSizSC/lrr4tfagaYDEUX5gzKFd8QdQNXXT8qsylW8zMjPvD6hKRjQK+AlsKhkG3cH0UBrQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MRZP264MB2442 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-ALTERMIMEV2_out: done X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS,TXREP 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: Summary: Allow the creation and usage of builtins vectors of complex in C, using __attribute__ ((vector_size ())) gcc/c-family/ChangeLog: * c-attribs.cc (vector_mode_valid_p): Add cases for vectors of complex (handle_mode_attribute): Likewise (type_valid_for_vector_size): Likewise * c-common.cc (c_common_type_for_mode): Likewise (vector_types_compatible_elements_p): Likewise gcc/ChangeLog: * fold-const.cc (fold_binary_loc): Likewise gcc/c/ChangeLog: * c-typeck.cc (build_unary_op): Likewise --- gcc/c-family/c-attribs.cc | 12 ++++++++++-- gcc/c-family/c-common.cc | 21 +++++++++++++++++++-- gcc/c/c-typeck.cc | 8 ++++++-- gcc/fold-const.cc | 1 + 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/gcc/c-family/c-attribs.cc b/gcc/c-family/c-attribs.cc index e0c4259c905..b3ca5219730 100644 --- a/gcc/c-family/c-attribs.cc +++ b/gcc/c-family/c-attribs.cc @@ -2019,6 +2019,8 @@ vector_mode_valid_p (machine_mode mode) /* Doh! What's going on? */ if (mclass != MODE_VECTOR_INT && mclass != MODE_VECTOR_FLOAT + && mclass != MODE_VECTOR_COMPLEX_INT + && mclass != MODE_VECTOR_COMPLEX_FLOAT && mclass != MODE_VECTOR_FRACT && mclass != MODE_VECTOR_UFRACT && mclass != MODE_VECTOR_ACCUM @@ -2125,6 +2127,8 @@ handle_mode_attribute (tree *node, tree name, tree args, case MODE_VECTOR_INT: case MODE_VECTOR_FLOAT: + case MODE_VECTOR_COMPLEX_INT: + case MODE_VECTOR_COMPLEX_FLOAT: case MODE_VECTOR_FRACT: case MODE_VECTOR_UFRACT: case MODE_VECTOR_ACCUM: @@ -4361,9 +4365,13 @@ type_valid_for_vector_size (tree type, tree atname, tree args, if ((!INTEGRAL_TYPE_P (type) && !SCALAR_FLOAT_TYPE_P (type) + && !COMPLEX_INTEGER_TYPE_P (type) + && !COMPLEX_FLOAT_TYPE_P (type) && !FIXED_POINT_TYPE_P (type)) - || (!SCALAR_FLOAT_MODE_P (orig_mode) - && GET_MODE_CLASS (orig_mode) != MODE_INT + || ((!SCALAR_FLOAT_MODE_P (orig_mode) + && GET_MODE_CLASS (orig_mode) != MODE_INT) + && (!COMPLEX_FLOAT_MODE_P (orig_mode) + && GET_MODE_CLASS (orig_mode) != MODE_COMPLEX_INT) && !ALL_SCALAR_FIXED_POINT_MODE_P (orig_mode)) || !tree_fits_uhwi_p (TYPE_SIZE_UNIT (type)) || TREE_CODE (type) == BOOLEAN_TYPE diff --git a/gcc/c-family/c-common.cc b/gcc/c-family/c-common.cc index 73e739c503d..f236fae94d4 100644 --- a/gcc/c-family/c-common.cc +++ b/gcc/c-family/c-common.cc @@ -2441,7 +2441,23 @@ c_common_type_for_mode (machine_mode mode, int unsignedp) : make_signed_type (precision)); } - if (COMPLEX_MODE_P (mode)) + if (GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL + && valid_vector_subparts_p (GET_MODE_NUNITS (mode))) + { + unsigned int elem_bits = vector_element_size (GET_MODE_BITSIZE (mode), + GET_MODE_NUNITS (mode)); + tree bool_type = build_nonstandard_boolean_type (elem_bits); + return build_vector_type_for_mode (bool_type, mode); + } + else if (VECTOR_MODE_P (mode) + && valid_vector_subparts_p (GET_MODE_NUNITS (mode))) + { + machine_mode inner_mode = GET_MODE_INNER (mode); + tree inner_type = c_common_type_for_mode (inner_mode, unsignedp); + if (inner_type != NULL_TREE) + return build_vector_type_for_mode (inner_type, mode); + } + else if (COMPLEX_MODE_P (mode)) { machine_mode inner_mode; tree inner_type; @@ -8360,10 +8376,11 @@ vector_types_compatible_elements_p (tree t1, tree t2) gcc_assert ((INTEGRAL_TYPE_P (t1) || c1 == REAL_TYPE + || c1 == COMPLEX_TYPE || c1 == FIXED_POINT_TYPE) && (INTEGRAL_TYPE_P (t2) || c2 == REAL_TYPE - || c2 == FIXED_POINT_TYPE)); + || c2 == COMPLEX_TYPE || c2 == FIXED_POINT_TYPE)); t1 = c_common_signed_type (t1); t2 = c_common_signed_type (t2); diff --git a/gcc/c/c-typeck.cc b/gcc/c/c-typeck.cc index e55e887da14..25e7f68b5ab 100644 --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@ -4576,7 +4576,9 @@ build_unary_op (location_t location, enum tree_code code, tree xarg, if (typecode == INTEGER_TYPE || typecode == BITINT_TYPE || (gnu_vector_type_p (TREE_TYPE (arg)) - && !VECTOR_FLOAT_TYPE_P (TREE_TYPE (arg)))) + && !VECTOR_FLOAT_TYPE_P (TREE_TYPE (arg)) + && !COMPLEX_INTEGER_TYPE_P (TREE_TYPE (TREE_TYPE (arg))) + && !COMPLEX_FLOAT_TYPE_P (TREE_TYPE (TREE_TYPE (arg))))) { tree e = arg; @@ -4599,7 +4601,9 @@ build_unary_op (location_t location, enum tree_code code, tree xarg, if (!noconvert) arg = default_conversion (arg); } - else if (typecode == COMPLEX_TYPE) + else if (typecode == COMPLEX_TYPE + || COMPLEX_INTEGER_TYPE_P (TREE_TYPE (TREE_TYPE (arg))) + || COMPLEX_FLOAT_TYPE_P (TREE_TYPE (TREE_TYPE (arg)))) { code = CONJ_EXPR; pedwarn (location, OPT_Wpedantic, diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc index dc05599c7fe..5c7b58136eb 100644 --- a/gcc/fold-const.cc +++ b/gcc/fold-const.cc @@ -11365,6 +11365,7 @@ fold_binary_loc (location_t loc, enum tree_code code, tree type, to __complex__ ( x, y ). This is not the same for SNaNs or if signed zeros are involved. */ if (!HONOR_SNANS (arg0) + && !(VECTOR_TYPE_P (TREE_TYPE (arg0))) && !HONOR_SIGNED_ZEROS (arg0) && COMPLEX_FLOAT_TYPE_P (TREE_TYPE (arg0))) { -- 2.17.1