From patchwork Mon Jan 9 22:40:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Faust X-Patchwork-Id: 62864 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 501AD385840D for ; Mon, 9 Jan 2023 22:43:36 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 501AD385840D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1673304216; bh=+cTtso4y9aJhJLIdhUsbytZ3nUzOXWvYMQ1fTA8GFqo=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=Mqlyazor6tCG2Oy/IpiQzvdV3+fHL5xH10660n7Lq9xUSRoCd/6z3CXBVe/5lYWjW NWSmZbBORSKIeLVABC62j0AK0O+frpv5joSfJ3CvH/4/h0QoZyok0cwlcxHFAhNcE2 nR9Qp9nHiG6pP0AnC9kR6CnmU13hUU/adBGNQ7+s= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 0AB3638582A4 for ; Mon, 9 Jan 2023 22:43:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 0AB3638582A4 Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 309MVccE030927 for ; Mon, 9 Jan 2023 22:43:04 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3n0s898bdb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 09 Jan 2023 22:43:04 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 309ME40B017871 for ; Mon, 9 Jan 2023 22:43:03 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2171.outbound.protection.outlook.com [104.47.59.171]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3n0uhps4yp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 09 Jan 2023 22:43:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=baUeKQfLO+ZhJHocrRIwGQPb5/8cK14lz1nItpsUORRFAJS1vbwqt4t+eqVWxFfIFDUjft/v1EotyIdROoJifUDRBJw08tyS2zzUIRQMOGHywac/8Ph+Rm7ch0id5OLyJz9vL3OQH5trg2Djpg/xdE9GAKTJB+YVVwKb3yywyjypkgA9B4vhhHJaVVmsIakLMbpcCaFy2F0XDsbRpyQh+zf4DQxUW2sWreEZREQoDA6Ya7B8uMRIlWD3YIAU7g5p4M93HGJEt3yxaJoaDi3ijAR2VV9XTswJgC4ZPGgdI0WwxasJdV6Xfvfly6a8DwNPWlE8MJp8qp6KatlCQSOm1w== 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=+cTtso4y9aJhJLIdhUsbytZ3nUzOXWvYMQ1fTA8GFqo=; b=AvtavuK6ABhnM9OGP/1J4JWCpznaIxXs/lxqrmbDq+is685vw68FOnbEwz2rMOAn8WeTXC8TSbrbM4VZxX9NYEtsTjV0zbwoqt/Wffd90RaQTxpvR/gp4p/cD5lCvbxu2aeD9HnAnTQbrNcpzkRht9xOzwb9oimINLkdrEHNoRXxdFmWer4mjo6daUvddMHu8Os3O5gLilrzDdy+wxkNrmNGAiid1uVRD4zGxGxAJHI/fs0O1Bg/eBCM2Ihx/rpg7V8x99gkOegAAOBdZBcutVGfPbGqtovn/o0tfccFBERZbBA14mQqKZ41unFG7WpweaYgyLVJMysJcuq7CSJ0xw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none Received: from MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) by DS0PR10MB7068.namprd10.prod.outlook.com (2603:10b6:8:144::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6002.10; Mon, 9 Jan 2023 22:40:59 +0000 Received: from MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::6b7d:5afd:3d9e:e5aa]) by MN2PR10MB3213.namprd10.prod.outlook.com ([fe80::6b7d:5afd:3d9e:e5aa%6]) with mapi id 15.20.6002.011; Mon, 9 Jan 2023 22:40:59 +0000 To: gcc-patches@gcc.gnu.org Cc: jose.marchesi@oracle.com Subject: [PATCH] bpf: correct bpf_print_operand for floats [PR108293] Date: Mon, 9 Jan 2023 14:40:45 -0800 Message-Id: <20230109224045.13453-1-david.faust@oracle.com> X-Mailer: git-send-email 2.38.1 X-ClientProxiedBy: BYAPR08CA0049.namprd08.prod.outlook.com (2603:10b6:a03:117::26) To MN2PR10MB3213.namprd10.prod.outlook.com (2603:10b6:208:131::33) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB3213:EE_|DS0PR10MB7068:EE_ X-MS-Office365-Filtering-Correlation-Id: 7efcc0e7-da20-4b03-a8db-08daf2929415 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: uT1Y9/ojWJUoWtIhWz9D0xXAMfhpgza84CLHDt49JwvkJ95JEKs5AZgr7E6O2DVrptkny/PG43MqqxwuW41gGY3XikVRLiIZ7KtpakTpmH09m5xkXCTq1FQJ2zxz5TCfDd12b8AT4+KgrWeCLKkXY63FB8sSFrWBVGTFBb2nBSaxM2qKPyUkU/QxeudWJ3WnbBHtjGGyvm/pq72pHSLLXYD8/32D0tm1hVcSzFXVftQ4qzYO+btF2Gr7v1r9tS8QgSdPgszoS3LXPajlPUcvPPW3z16ozkQfKIjoj+j3fzBJ63AuqAfrztRuMcGUn/QKWex9pfrRDnFXsl2ldgKVfV0ElI/L4TCPxvonaSkAzcNgxJ/n53wWRMeuOaDneCyqwqEuB5YSBq5FIHU9jqKVPJekKS7DFZ1hhlF6JaRPycM5K3t5ThR5GANYPlfe6s98dzOgN0Uj6BjAU+G49SfohBs9FhzlsOTGDZaVQL9iSoDvSPcU7KEf1JzDe7guCjjsXeBijHFCs65Li9f9D2LGPr1w0dJBEiIO9EiPh0G/QwVZVYi+LXz8ET689004PE6MlIhwVtYTmrIW603bNWy8NgkY9qCJ77IMaahyAZeqv0uLfegeHpyWAtqo/pA22+I8yp+6xMigX2kIEMR3+z7qa06vYNfT3otprnAd0pC9uBU= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB3213.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(346002)(376002)(366004)(136003)(396003)(39860400002)(451199015)(478600001)(6506007)(6486002)(107886003)(6666004)(2616005)(1076003)(186003)(4326008)(26005)(6512007)(66556008)(8676002)(6916009)(66476007)(316002)(86362001)(38100700002)(83380400001)(41300700001)(66946007)(36756003)(5660300002)(44832011)(2906002)(8936002)(84970400001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: +08hd24F0K5TwWiFOjzIt9RWsf01p+Ra8jZBLpwVh5v5+ucQ17DzqYrDvAPpg8Fp8NAHNFIcvn0nixNvrgK3fr4J4VQwPTh+9V4ZcD1ypmfXC6nmwSnj4AUkSs6LzmTAwvoKCcpXLr7Wa1g0O3tguRdpEi4I/CKIi43adlUzaWcqWE9Ut4kp1oFhr9ndnFkxHqdvTEn3txdstKvJnWvNkOgwggDsZNOLmUTgfwChFKfGzmaCMW+2AaG2h6gZfE8HVZS0M0XjVLiaiyXhYgPxT2IL4vOD77tZ5DlW/VaUSNvaXsTuV9oUhvAF12IAZm7v8Nk91SpLpXQLZwT+KmDNZRiMgpyQdyQi3J5HkaBvj1PWDO2yWT88h9npldf+7yBNLQx/8HbEIzBp9EFoAsut0ImBjxk4BosEfRCFxVxYu6mTgMEGNMgIGAaiaficUSjvTZHp7uoaVImGzlHb1ZpiwFqY/15n6EHh5ohkw7CEkJOJQo2Lz0duSXYpa1hLyH5yQHYCh2ShtqCwRzLd1aWqQSVhZn9vVnAqaDimneuh+NVXaPflk+lGlvQa7HSyDL9+3c8PTphg+i7/KkndrIygqxHxmym6iY55rmFiGkQnc1m/KCEnuflJqXgtCJyWDacRChbGXhCswsakM6J1oS/23BV8ACVwCOisbOuwyZdsgzcnnhivBxMNPIxYOCWRghzKaPBkqczGVoTdQUil4ZqGcsu4+qMqPK/UK+YMSGizoNHc52NkDd+96d+86dRAAlY0cU5XAEYTCn9bmVQBbEbHIdwRybUqEQMe3m0haE8lfEb1j7jSy8moVyca2eNjkmc2lEC7O741/WnM0lG8Ym8Y4d/Ut+uhHa7ciO81NctgQmJxwSt2N/jl5xXryqoWEmiYVR1DzDGSeuP2qD82c74iCxme295xjd0vSqMnZRD+t5+7jtSXUZHq75N5ARZE2LtN9NXrLfPASGCzJ/o0+6E3gF6o+U3/9AADaoXW3v47pj6uer+MMq+2kUUZtAVedwduB+W/UjXTGWw37jTi4YaQ9zX13xF4T40ZKZgiYJU3vnnNt6AC5mOG4mH6aKxFlnuMZoaXjfr6FEYMa1WY5i/UBzaCGtGfgb2giCsNscjNh6VbFWTRO1wY7MScYssHEqlke732NwOZahNYy2U9Co9qq0SlueqSjAzR0Ulr7ySdSevsChcsxh7xQ1l/icxbMedVGfmOv3lDJzoF7WEQukCHnhCNi2OU7wK+7H7AZl/jkybSnr7of0BqLGaE0B5cnShY7TsNWA1XSbgIONPYCF6qiMT/xKMVpWHgIbmaK9OdCIE8rW4EJl9rcjbcmM7OVV8+b73NYd8Cfcx2WM4MnNNXnCG7Nkb3xh2JM3SSY7X5xLz9ksrC0rACKYv+fi16s/DFl/ao8NlVn5CqtnGaSP1RzlM0RKOPH5nA3TB10UuSJvg/aqDQImZUNsTiyPnXSHJAOGQ0TMsHbvfC9BLPRWLdTKqFb0QDwih0mjwFdn7Hu83jw7JYd2vgrfzbdOO+pmKhNMnammHYv8EuE8dFtq1wzgkJlhCAqNH80aqMHNzwTdV41MtAgKUvaQU4L9DdTWAL X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: pR4Qv1Na7/wuF+W/2xm2Yw1f/L6IVWmM3hhii/4qYy7wweX4pLA5ww2NU+7dba3dlpRz3mLynfCltxvZYICq1XJ2gAwSwwABwgR6zTuACHFXu6ddahW9JL2WXwEHc040spCmNSNhcdCeFtl4uG4ExUZRlf+6fhnSK4rpCDmJxpvdoV4xXdDjUpjHCmmEQfZ89EDpTOABs2sX7wOe0U9bUJ7XRtSG7eA6T9+U6FtTAPWdKRl79OyLWfDdB6u9c7w8XCCd92/ObsxroIbV0JDcsDi8SpPcMsiGDgjijzN0qrNYtqqGb6KSPrZHYADOLrV/TZ32SDy3KHlwbJHuLR7yqYiAOen8oJoM2RLYLH4/ZtkfbmH7TC3Q4KGZyrvj+bleeWiUO0XurGR0uDsBgIhTCWaAf+VT1+uneg+Q1kxmvhFZoYbv/AsIi/y14T/GcZCa5Z6t7U7sWwcqraaC3bgKnVMdIn9ZSyL+GrQVpaCEbYtj49cHK1FSf3iXRWWu557DQmKgmfQunMFUMja037vyeYnN1Qq4uSkicojvLR/w9IlcycPK+0fQPEmyUIxm4iub4LPmnuXh1MZFiF3hJgSsNuadCTIUq3brA3Fx1t8y8Un3Gt7oWWRECa5/E1qHNH64qvhbhWJDZXdyjXYPGUlXdCqyguPd4SPKHmmvMrM9/wghOuSAdvTMB0tSP4oKnq8I+T9jpWZttnm0KYfwcA9BnQ46StBnt51+sm8hd09BhpkwScvbDQucxIlQ+Zcre5fs X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7efcc0e7-da20-4b03-a8db-08daf2929415 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB3213.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Jan 2023 22:40:59.1503 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: KCWIv5/tqwjZKwZPP+a9oXEY+eXghRgWdXO/rqCOYOtp6v0rWIcEWtbOObrEypjyveOJcoM4VvO4afZxxZJAUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR10MB7068 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-09_14,2023-01-09_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 mlxscore=0 adultscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301090157 X-Proofpoint-GUID: H7n82IiM-By-kPtz4qfUOpp0SPwfNarm X-Proofpoint-ORIG-GUID: H7n82IiM-By-kPtz4qfUOpp0SPwfNarm X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, 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 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-Patchwork-Original-From: David Faust via Gcc-patches From: David Faust Reply-To: David Faust Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" The existing logic in bpf_print_operand was only correct for integral CONST_DOUBLEs, and emitted garbage for floating point modes. Fix it so floating point mode operands are correctly handled. Tested on bpf-unknown-none, no known regressions. OK to check-in? Thanks. PR target/108293 gcc/ * config/bpf/bpf.cc (bpf_print_operand): Correct handling for floating point modes. gcc/testsuite/ * gcc.target/bpf/double-1.c: New test. * gcc.target/bpf/double-2.c: New test. * gcc.target/bpf/float-1.c: New test. --- gcc/config/bpf/bpf.cc | 21 ++++++++++++++------- gcc/testsuite/gcc.target/bpf/double-1.c | 12 ++++++++++++ gcc/testsuite/gcc.target/bpf/double-2.c | 12 ++++++++++++ gcc/testsuite/gcc.target/bpf/float-1.c | 12 ++++++++++++ 4 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 gcc/testsuite/gcc.target/bpf/double-1.c create mode 100644 gcc/testsuite/gcc.target/bpf/double-2.c create mode 100644 gcc/testsuite/gcc.target/bpf/float-1.c diff --git a/gcc/config/bpf/bpf.cc b/gcc/config/bpf/bpf.cc index 2aeaeaf309b..9dde3944e9c 100644 --- a/gcc/config/bpf/bpf.cc +++ b/gcc/config/bpf/bpf.cc @@ -880,13 +880,20 @@ bpf_print_operand (FILE *file, rtx op, int code ATTRIBUTE_UNUSED) output_address (GET_MODE (op), XEXP (op, 0)); break; case CONST_DOUBLE: - if (CONST_DOUBLE_HIGH (op)) - fprintf (file, HOST_WIDE_INT_PRINT_DOUBLE_HEX, - CONST_DOUBLE_HIGH (op), CONST_DOUBLE_LOW (op)); - else if (CONST_DOUBLE_LOW (op) < 0) - fprintf (file, HOST_WIDE_INT_PRINT_HEX, CONST_DOUBLE_LOW (op)); - else - fprintf (file, HOST_WIDE_INT_PRINT_DEC, CONST_DOUBLE_LOW (op)); + long vals[2]; + real_to_target (vals, CONST_DOUBLE_REAL_VALUE (op), GET_MODE (op)); + vals[0] &= 0xffffffff; + vals[1] &= 0xffffffff; + if (GET_MODE (op) == SFmode) + fprintf (file, "0x%08lx", vals[0]); + else if (GET_MODE (op) == DFmode) + { + /* Note: real_to_target puts vals in target word order. */ + if (WORDS_BIG_ENDIAN) + fprintf (file, "0x%08lx%08lx", vals[0], vals[1]); + else + fprintf (file, "0x%08lx%08lx", vals[1], vals[0]); + } break; default: output_addr_const (file, op); diff --git a/gcc/testsuite/gcc.target/bpf/double-1.c b/gcc/testsuite/gcc.target/bpf/double-1.c new file mode 100644 index 00000000000..200f1bd18f8 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/double-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-mlittle-endian" } */ + +double f; +double a() { f = 1.0; return 1.0; } +double b() { f = 2.0; return 2.0; } +double c() { f = 2.0; return 3.0; } +double d() { f = 3.0; return 3.0; } + +/* { dg-final { scan-assembler-times "lddw\t%r.,0x3ff0000000000000" 2 } } */ +/* { dg-final { scan-assembler-times "lddw\t%r.,0x4000000000000000" 3 } } */ +/* { dg-final { scan-assembler-times "lddw\t%r.,0x4008000000000000" 3 } } */ diff --git a/gcc/testsuite/gcc.target/bpf/double-2.c b/gcc/testsuite/gcc.target/bpf/double-2.c new file mode 100644 index 00000000000..d04ddd0c575 --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/double-2.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-mbig-endian" } */ + +double f; +double a() { f = 1.0; return 1.0; } +double b() { f = 2.0; return 2.0; } +double c() { f = 2.0; return 3.0; } +double d() { f = 3.0; return 3.0; } + +/* { dg-final { scan-assembler-times "lddw\t%r.,0x3ff0000000000000" 2 } } */ +/* { dg-final { scan-assembler-times "lddw\t%r.,0x4000000000000000" 3 } } */ +/* { dg-final { scan-assembler-times "lddw\t%r.,0x4008000000000000" 3 } } */ diff --git a/gcc/testsuite/gcc.target/bpf/float-1.c b/gcc/testsuite/gcc.target/bpf/float-1.c new file mode 100644 index 00000000000..05ed7bb651d --- /dev/null +++ b/gcc/testsuite/gcc.target/bpf/float-1.c @@ -0,0 +1,12 @@ +/* { dg-do compile } */ +/* { dg-options "-mlittle-endian" } */ + +float f; +float a() { f = 1.0; return 1.0; } +float b() { f = 2.0; return 2.0; } +float c() { f = 2.0; return 3.0; } +float d() { f = 3.0; return 3.0; } + +/* { dg-final { scan-assembler-times "lddw\t%r.,0x3f800000" 2 } } */ +/* { dg-final { scan-assembler-times "lddw\t%r.,0x40000000" 3 } } */ +/* { dg-final { scan-assembler-times "lddw\t%r.,0x40400000" 3 } } */