From patchwork Thu Nov 10 15:58:53 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Greenhalgh X-Patchwork-Id: 81690 Delivered-To: patch@linaro.org Received: by 10.140.97.165 with SMTP id m34csp798786qge; Thu, 10 Nov 2016 07:59:44 -0800 (PST) X-Received: by 10.98.11.71 with SMTP id t68mr11329280pfi.136.1478793584786; Thu, 10 Nov 2016 07:59:44 -0800 (PST) Return-Path: Received: from sourceware.org (server1.sourceware.org. [209.132.180.131]) by mx.google.com with ESMTPS id 13si5608540pfv.89.2016.11.10.07.59.44 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 10 Nov 2016 07:59:44 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-return-440969-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) client-ip=209.132.180.131; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org; spf=pass (google.com: domain of gcc-patches-return-440969-patch=linaro.org@gcc.gnu.org designates 209.132.180.131 as permitted sender) smtp.mailfrom=gcc-patches-return-440969-patch=linaro.org@gcc.gnu.org DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; q=dns; s=default; b=pkTM7QjEQzsdZIH5 hCDntX37eA4z1/wavElwiUmjj7eQrxK59peTtdgyxTyEANQyJn9htFMH0ytvKslf kKy4L8DHHlZQIxbF25ZZ+SzeZcUcD1suV06a0DNfQ2i1b3rJICz2w6iwXNqqNK0t YoAD7ix3NVMFXs+V2XJUkGT+Pc0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type; s=default; bh=4DG1lqyGLyGDvcGp0hBMyk nBNiM=; b=AhaFZjSWnm2+2kKLjWMIxMUE8ujsY2WKZIJJ3kMwTyWmrVPCYZ20Ri uAgdf2t9awQgthzSGU6V0ujciodMIVWR9Cnq9y+nkyp1J4sHQoB6rGkGsGiOUz9e guizHhG3Qu7DVU0rj2j6+D9MBRovAiVTsA7exAOXLRBAEIvsa+mlQ= Received: (qmail 60019 invoked by alias); 10 Nov 2016 15:59:31 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 59997 invoked by uid 89); 10 Nov 2016 15:59:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=H*r:TLS1_0, Hx-languages-length:1600, HReceived-SPF:domain, HReceived-SPF:client-ip X-HELO: EUR01-VE1-obe.outbound.protection.outlook.com Received: from mail-ve1eur01on0072.outbound.protection.outlook.com (HELO EUR01-VE1-obe.outbound.protection.outlook.com) (104.47.1.72) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 10 Nov 2016 15:59:20 +0000 Received: from AM2PR08CA0038.eurprd08.prod.outlook.com (10.162.32.48) by HE1PR08MB0572.eurprd08.prod.outlook.com (10.161.121.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.693.12; Thu, 10 Nov 2016 15:59:15 +0000 Received: from AM1FFO11FD047.protection.gbl (2a01:111:f400:7e00::123) by AM2PR08CA0038.outlook.office365.com (2a01:111:e400:843e::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.707.6 via Frontend Transport; Thu, 10 Nov 2016 15:59:14 +0000 Authentication-Results: spf=pass (sender IP is 217.140.96.140) smtp.mailfrom=arm.com; hotmail.de; dkim=none (message not signed) header.d=none; hotmail.de; dmarc=bestguesspass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 217.140.96.140 as permitted sender) receiver=protection.outlook.com; client-ip=217.140.96.140; helo=nebula.arm.com; Received: from nebula.arm.com (217.140.96.140) by AM1FFO11FD047.mail.protection.outlook.com (10.174.65.210) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.707.3 via Frontend Transport; Thu, 10 Nov 2016 15:59:14 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:; UpperCasedChecksum:; SizeAsReceived:850; Count:13 Received: from e107456-lin.cambridge.arm.com (10.1.2.79) by mail.arm.com (10.1.105.66) with Microsoft SMTP Server id 14.3.294.0; Thu, 10 Nov 2016 15:59:05 +0000 From: James Greenhalgh To: CC: , , Subject: Re: [PATCH, LIBGCC] Avoid count_leading_zeros with undefined result (PR 78067) Date: Thu, 10 Nov 2016 15:58:53 +0000 Message-ID: <1478793533-13186-1-git-send-email-james.greenhalgh@arm.com> In-Reply-To: References: MIME-Version: 1.0 X-IncomingHeaderCount: 13 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:217.140.96.140; IPV:CAL; SCL:-1; CTRY:GB; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(24454002)(377424004)(199003)(189002)(5890100001)(87936001)(5000100001)(4610100001)(50226002)(104016004)(33646002)(2906002)(356003)(4326007)(8936002)(84326002)(110136003)(229853002)(568964002)(86362001)(5660300001)(6916009)(36756003)(2950100002)(575784001)(189998001)(626004)(246002)(2476003)(586003)(92566002)(26826002)(4001150100001)(305945005)(76176999)(50986999)(7846002)(8676002)(2351001)(77096005)(106466001)(512874002)(6666003); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR08MB0572; H:nebula.arm.com; FPR:; SPF:Pass; PTR:fw-tnat.cambridge.arm.com; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; AM1FFO11FD047; 1:chAd3BRZjYumqJPSuScKCL2T9Jbld4T26URl1op6KWTJqJvxmK6IVUKu1fxn8fTTqg7zBrEu+UlK3FFMtNkiWFgCOjYOoV2gb4fKNc962WnmTrWPgtzSCzjJOLj2b2Ajl1hXGR0vXAkrKUBv9s/VIzZ1ddF5Hh3JhNTu2Qvazb4cZtj94lOUSFL2yTYMsDM6x5Z0e4D1kvslxJ6z1zNVOfROgQ2UfFfcAY1LFS65f5QHHP+HZBIpApqjGnLyIbZ8Rmvf9EXzY3p3CIvdLxLrDGlrYRlP8RoALItlPU6UuP914nZpmVl0N8QsJgrKNnIm3Ksxl74SzyDVYz/da5Fzlw7IXuo0P/PWXrDoTGpp7giV0Ikr3Jvg+I/xC9R4Q7vUaE8tdJJwPDf/nr7joCcMu9S9L0e5N5YnrgboYS2ecrjQDNHLkBBSbEYzN+k3kWBkcf2Hi1lhop0oNd8WhksWJDrJXYy6qxMEZNhOn94DuiKoRZxuHrpPLWSH1NBHP2/4H62jILhvSa53xlJ5VSxI0jkXae8LeD3HfOewB+U5Wjwva+H0g4fCqev3YJwj7DuxUW8zJrpwXzgMhnxuKgkeY6EmUk/mAom4I2zguYqni+3z0fGjZFbZE/lMc5e8yOER X-Microsoft-Exchange-Diagnostics: 1; HE1PR08MB0572; 2:gdfr3Pl2IgPdI7ZmszHnyAme0CRyh7uH52EAxoyyabS4AQqvol3gcGVYmcKoKBelg0nfW3ykV9GdUnTGi/qrEwxaO3dCqERKVUZcda4rx3RCHvWYwir+nFOkaEsGtL5pOjbrSXBZ3U8kMcIkzuUs2XbNttwvVS+8tNHwTjbLXGI=; 3:lAMBWjwZR5R2vcOa5b87GHP79yCuWflhldBeXPN1/ZZNpv5HvzO9CnuMSyheJiNh8XwaIxrkb/p177aDNrMXSPVNGFHsmZNOCcBJXVm0wwFymiuJvQe0YJ1DG9wlZxA5Mqz5onyHP3takDirTAxqVgDo+gfpbEewybMaJD9JQ4b9l6q0HXteQf5bCsCDqbzLlT5fF3OcQ0ejvEi8NgjfPmXAP5w9RlzjR4gXHPoRw0B9ASM7cxK+UjZQBcASK4xK++0x23XGm4daqguqhI79nKkmlroZO1G0AC2lrZHWXto= X-MS-Office365-Filtering-Correlation-Id: 41eeacca-b1f4-4f39-f66b-08d4098284e0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(8251501002); SRVR:HE1PR08MB0572; X-Microsoft-Exchange-Diagnostics: 1; HE1PR08MB0572; 25:ljsOB7A/MjKzJymxVV+JYVqms5c0F+LNxUTGhyRYaL6qOj40WYt+QBnSgg7rcMpO1OJKOc4Qw+qJhHVmEDQ1f3Q5OR2vWADMC1VeGFvTeBITrTM1m+glpadrjwljdKH8CQ0e9st5qOba3PuPSc4PSwQTxtGwVEoCdnVpcfaD2FjbpLKvWXrGy5+dRke1KNMqt4ka9GZDmATgZeHD3h14XGF66wJTsUdfQBg9euGJdErVXjsTOKAAX2NM9Wn6dmOpoNTypOV0rTWuUlAHr/Uleb3pGnvtQ2IL/yQV/6Kvsaq++lUavU09tQTZymYeIFwE5uynsOncFyDq9+VunFFHVrVdbdQJ3wHaWxzZ30mIH9lOqF0uzk0xx/65SMXAwUb6CMDxPFCWPJ5uVlot0w56jd2N85nU37KPhbn0gCFR7mKfEyM0DbR6cFtjtdT+H0oC1H9aT+O65JenZNtOxARSMN+5ls6egLYEO7glsPh0hTUUlVMwubHR+VD66PvpKnhgzpU9SFnX6RIkq+2FDX4ZVC8FP3IBUJPJsWYlxu7MNGwfkyvNCa2xmumiGkhPY8SEvK9fNxafr//JotraTt7KZBVOmSFKbuyKland5dDQagWNU7ZByskOe/yeznHfFl3dsSMBi9LgkiT3m24nYH3rtqVzRbITH0QK/1QGayONK7dt/oX0Wkixdrdk0cAXThqGjB64ZBScTCBQmw8FqGHz04hmrzeFlWg52DJBPFB5UtKm8fb1Hk59dW80EaUKryy+40ol8eKniHreYcUukjJYOR1EI3XocXPs1D6+sKn8eCjXcSMWoLmbdxH/qCor+c9SdBSb4U2+5Wy8nzZ6pPzHCwvR8f5yi1RtB2UUK1KsoEeuMc2vD7MvuCcywpYdp9FZSr4sy2ZrEKLB10zI3CGaor3bhN2SCKvHyXNLq1xybuQ= X-Microsoft-Exchange-Diagnostics: 1; HE1PR08MB0572; 31:2UEo06+I2en02e4wQPJF7b+3rBxxY58KW1OL5weehcEx+ESwEYv29Jw9z/YYgai6JX7ZzhNY9egnL0WQrqlBoB9IdxcJoaVmzB9NguHT1ksxxjDmMZIOUH05VvvD9V8dJn5hK60DOkptkodEzNO2HcpP57XLzpU6kDWKPtKjk/D9sSWg+oZ3ApGTQ4jXZJAWp6IUjKzN/d5mDGHfUAaQGkERWT7PwV5HqNKv3QLDfe6kg5Mfd546gZOZTM+Q18pT6DnOQxkcYsS7Y9J2KrIA1qkwBopE3If0YraYDR0kWZ4=; 20:D6WgG7VQYY76CIrsgcXdp0Y9HiI3OK4oPFxGVzb1/ygKda98iQszsCiqeURS9kLpZG6syw+CpPmdmKFJk+zJvpMhIMTA48hv6lppGzk2giQ6Dye6GXdMwkPRrnNYQD+OUwVcC+t3DkRfX4Knz51H2f78DfYX9/hdImORPOU1amlc6ULkAQaBEku6mweOr/vtx2oEhQopGqRP/IrD9eNvG562tTghDwOawWTfkEhFmXd8vKjPJmnF5G7RPJ4AkEFW NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(102415321)(6040176)(601004)(2401047)(13020025)(13024025)(13023025)(13013025)(8121501046)(5005006)(10201501046)(3002001)(6055026); SRVR:HE1PR08MB0572; BCL:0; PCL:0; RULEID:; SRVR:HE1PR08MB0572; X-Microsoft-Exchange-Diagnostics: 1; HE1PR08MB0572; 4:tKZjVeGHW+6k9DbUtgYjQ4CmwDJ8WSDGKb1DKDJCSJ64TuL2PQ7eV7cvUe87y5hfGvHB2RsN2Yig8f/+4zeKkTGt3aqS3+sYZdJEBcXS9Zpc8EfqKvmOmtsR1EhREnPLLPDcopx5G52+Xi+VQ5S485iNq0mkV20Ren7R1RCXuNOOzeLqKZSPAul/2IDIGQ79MRcTVr3K9SbnwLqzz4MLKoUqROfpb3XDmMYoEhl6NnVqwtZY9J2e22noUA20DHquMiEbzGadCf+noCWssowr3/Xgtb6WhQ2RRPSUXDIGxJ+CEV4tsYw7kRHkbFipJXsmbClhCslmwVuZ/xGT0KjfJkdUlNv2sxCEiX/DuofyluksVaslOvzNnH5n+wH6xkA8rxDCxDVSvNpld4FRgUWF3XKFJhgu3XPhIRT/MN72ldpfIdFSLkwBzBuXwIzBWnzplbhi2l8gNCaDSoXdnyC62ZowxnMeiPPW7mgVSPyinHEpaLGR69NY6zKiUHRcaR4DzT6DiEySN5y6t1/W8LiXD57zbWNrdYjDzuZfCjUXILz+jHFfehmVwksxX8YEkEMS X-Forefront-PRVS: 01221E3973 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR08MB0572; 23:bZiYG3/dCCrZqvHBs4tWC682VhJlDIzx77wlXYslf?= =?us-ascii?Q?qny4WO4LuQRjbe8qfVC20my43HNPxU7AX69vWI+Fq6sDthpRamWZ5SmZQf/j?= =?us-ascii?Q?rICGGfnxLcZQ6G/vWzuYpNgP6/5IRdQ1Cg4KiVAYOZNKh/NEq4iMbhbZ/Hdh?= =?us-ascii?Q?xXcDJMYJkLr7z0RB4K+Kmcv6gl6WYGnS4w6CivmwrqKaKAeLFvM69q+Npw9v?= =?us-ascii?Q?xx8P0XsLAGis0rl7BIe/A9b75X8v2TXCBluLLwV8oPOry0/aofutAwed6NZE?= =?us-ascii?Q?dHYqqtudhXVDNUw5RBRTRQNUzaWm5CAzfSEKpjfLKL2uzCHnigsQokXGxzpf?= =?us-ascii?Q?nJh5BJZoH8N44Vz6jJZx4UvfrCuBCIXp7p3dqf17g3zITfaWOS5e5GCj1iDj?= =?us-ascii?Q?nIeaRE7iMOZyJMq8ARavPcDjUPtjpuEsFHCqY9V5DjgKhjKjl98nbJCnjN26?= =?us-ascii?Q?GsP63pfyU9gPiMXTa1ZBRHb1kIR0IoW1T1/lNRkPkwPuZPjKnfCKmF9lxsbT?= =?us-ascii?Q?DSE4l4EqI9S7nPKSWQt5hpICjdvltRpCUZNwAQiDxFykOqdaHnEM19R2G/DO?= =?us-ascii?Q?hmzJ4qpkekx0J5U54QjokGH87foEibZnk5ZFg5Hc8Rg6SSSXsMzjl5MmV290?= =?us-ascii?Q?EEtwMGrxuu6m/9NOytqdmfCCv3dh3kOtJTvkye6undtX5+E/8IDbO7HdGjFy?= =?us-ascii?Q?8FEfWQXdwEEtrVg/lDg9ccOfbziOkHUcLfWZHBv78txfVkNcQpZQ4ZbPpR+q?= =?us-ascii?Q?AOjyL+8bwQAyVxgGs1JtxTlTf8DcSbNGrkF/ukwYwAQhlDoVLjG4WjE74BAm?= =?us-ascii?Q?Lkw6SAqpI/TY2LmMgH5EC9wXvRLZO9w0G4NyViH64aJMh1KrRr/k9ZyUuud6?= =?us-ascii?Q?jDkcEvaHhV9NR7ij9rMu4xap+YtXQRJxjvXTxhdQ2x56DYy0gb4YuA2kgpL9?= =?us-ascii?Q?fXPSrn1dsl4mnE8AkbE5XKCwinX/moWO4G/5Gz5bARoaW/hZ3kUiwA0EUmAU?= =?us-ascii?Q?XzMI0K7uypUXkoneIv8FZSjj/dk2EYo7Ujv14W0odxT82+2jbzo9hiJ+IFVS?= =?us-ascii?Q?kDc2YltK8Zf2zfS7AAdKMomvNmfDzO15AVudlp0n/OaHPqmbcR/5lzCBAjlk?= =?us-ascii?Q?//KA7d1nBsy9TBQ8Y85qX+hR2vgNyDho9rwUtnotEtvJyRCjiD5HA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR08MB0572; 6:+OkOAgNOtTskpHjhcARmkgNoJuL60a2fxuhNZoM7LQ9VTDH7m/J9XSmMb/5LMDOMGHI9FHmPjR9Ugj7ofkiVAep7TkD4a/hdTPAhFO2ONSi5TBp3A6GrhqUVkdgMdMzdKiALPYHrsOojTFF8Kx5+os+EAat+6mzg9jpErY48dmxr8ZWi0tpJ0XMuXx1eue6LHyOvgB2Ss+YaCoxvgTH9e9kA33BvfEYP5NZWwU/tyT9lfo5YSJWJyiPWwYBWtQMpnJsrFnc0vVhf8Xg34QdubXZRLENbkfNQSUo2vdKNZ+8mPosmb8rb5smnU3gAb+L/qMMjPEV2MEA8KbWAbYKFrwmyXKCQjVS3FjPmBO4cx2M=; 5:RleSpVp+af+wR2byFVZQ4sOCQuevAUuBYP1X7eLeRGsYyXL/1e8u5WSlH7ZwC0p9L3yvBl0Wd2439It6yUVtVaNhvE5YaM7qFbMMnXKbPn9BBtR2SB+F3jthBiyLssT4wxGb3Qq06fWgzS9mZECU2A==; 24:/slnmlyBF9E31k4lTyvOSqjRaXvL3p8U1shbQBxQniHGBsDjWuWLW0L6QNQGpCr8laRV9HBJpVVyJPl9wD2W+Acc8COYIPTMep/ZRCR5r+o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR08MB0572; 7:q/ZY/fE6XWjydILF+1/gW6RwbNGLte/JxO0MnnIpyk8CLnGXgCs9UeTxCPfzCSnUusKyKqkMS38+DZ4Nc2MgMJxrI+nmWE2gukdkmPeKkV9Sv+R5nX1eUELatzVhzpq+QCpZsIj8kVe3CDAYHwKZSOotO6V/ZA/A1hbFWj2cYMuBlV7fpLgny8BIbx9li29o8MUICbrFzAR4rUPDfkLTSxn+TVcowAQiIfcO4NknkJ6MOGNtc5Q2sqfB1Qockq0/u8C2L1Axp2yKhqw6idn36d3DoIQ1mf+zFYSi8kjB/A5iSFp2u60RNvGHDSuCpDmY9FRJ3zagqcBpMwCGhJ0C3CYdVNswbQDXtOpTZwHGiEA= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Nov 2016 15:59:14.3320 (UTC) X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[217.140.96.140]; Helo=[nebula.arm.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR08MB0572 X-IsSubscribed: yes On Wed, Nov 09, 2016 at 10:16:35PM +0000, Joseph Myers wrote: > On Wed, 9 Nov 2016, Bernd Edlinger wrote: > > > Yes, but maybe introduce a test if the half-wide value fits? > > > > like: > > > > #define M_OK2(M, T) ((M) > sizeof(T) * CHAR_BIT / 2 - 1) > > Something like that. In patch form, that would look like this... I've checked on my ARM and AArch64 trees with _Float16 support that this lets the tests pass. OK? Thanks, James --- 2016-11-10 James Greenhalgh * gcc.dg/torture/fp-int-convert.h (M_OK2): New, use it in WVAL0S tests added in r241817. diff --git a/gcc/testsuite/gcc.dg/torture/fp-int-convert.h b/gcc/testsuite/gcc.dg/torture/fp-int-convert.h index bbe9666..2b904b6 100644 --- a/gcc/testsuite/gcc.dg/torture/fp-int-convert.h +++ b/gcc/testsuite/gcc.dg/torture/fp-int-convert.h @@ -53,13 +53,14 @@ do { \ TEST_I_F_VAL (U, F, HVAL1U (P, U), P_OK (P, U)); \ TEST_I_F_VAL (U, F, HVAL1U (P, U) + 1, P_OK (P, U)); \ TEST_I_F_VAL (U, F, HVAL1U (P, U) - 1, P_OK (P, U)); \ - TEST_I_F_VAL (I, F, WVAL0S (I), 1); \ - TEST_I_F_VAL (I, F, -WVAL0S (I), 1); \ + TEST_I_F_VAL (I, F, WVAL0S (I), M_OK2 (M, U)); \ + TEST_I_F_VAL (I, F, -WVAL0S (I), M_OK2 (M, U)); \ } while (0) #define P_OK(P, T) ((P) >= sizeof(T) * CHAR_BIT) #define P_OK1(P, T) ((P) >= sizeof(T) * CHAR_BIT - 1) #define M_OK1(M, T) ((M) > sizeof(T) * CHAR_BIT - 1) +#define M_OK2(M, T) ((M) > sizeof(T) * CHAR_BIT / 2 - 1) #define HVAL0U(P, U) (U)(P_OK (P, U) \ ? (U)1 \ : (((U)1 << (sizeof(U) * CHAR_BIT - 1)) \