From patchwork Mon Nov 12 02:45:41 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Xianmiao Qu X-Patchwork-Id: 996247 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-489683-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=c-sky.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="PpYtBFtU"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 42tZrh3r22z9s0t for ; Mon, 12 Nov 2018 13:46:10 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :content-type:content-transfer-encoding:mime-version:subject :message-id:date:cc:to; q=dns; s=default; b=vGzXv6KQHBzzvn0vOBm3 oVUfQxbEFn+0t6+Q5BJVAzHAL1ej8bEnpgKfdXKRIDuMtszcPDd3FDaUaMx+5Nq0 DMFSFDIW8XHTdnUgvwPK16Xo3RG55SXwaoUR/NgGMvEDrrGpOiuz0+16KtNvZqW4 8Yi3ozQsFJLZucOOf/U3HcQ= 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 :content-type:content-transfer-encoding:mime-version:subject :message-id:date:cc:to; s=default; bh=8eqDuoe/09HVEBJIOeaFaoUl+i Q=; b=PpYtBFtUwQN1UWKiHKrHWuyiFOpgJrSAvTH+CzZRmiWWeUWM2yekJCOEYs gXGdtzTku+eMmrksvW5MyYgB05XwurisB0LF85GrvjGS4rOnr2omiR96+9n5ifeu GNMKor60TQQccRrGa5llC7SE3RMS191hVbUYqh9PhQkJG/8B0= Received: (qmail 85946 invoked by alias); 12 Nov 2018 02:46:02 -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 85321 invoked by uid 89); 12 Nov 2018 02:45:54 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-5.9 required=5.0 tests=BAYES_00, CHARSET_FARAWAY_HEADER, FROM_EXCESS_BASE64, GIT_PATCH_2, GIT_PATCH_3, KAM_ASCII_DIVIDERS, KAM_LAZY_DOMAIN_SECURITY, UNPARSEABLE_RELAY autolearn=ham version=3.3.2 spammy=mcpu X-HELO: smtp2200-217.mail.aliyun.com Received: from smtp2200-217.mail.aliyun.com (HELO smtp2200-217.mail.aliyun.com) (121.197.200.217) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Nov 2018 02:45:46 +0000 X-Alimail-AntiSpam: AC=CONTINUE; BC=0.02731651|-1; CH=green; FP=0|0|0|0|0|-1|-1|-1; HT=e01l07423; MF=xianmiao_qu@c-sky.com; NM=1; PH=DS; RN=4; RT=4; SR=0; TI=SMTPD_---.DHQaOVB_1541990741; Received: from 172.16.170.201(mailfrom:xianmiao_qu@c-sky.com fp:SMTPD_---.DHQaOVB_1541990741) by smtp.aliyun-inc.com(10.147.40.44); Mon, 12 Nov 2018 10:45:41 +0800 From: =?gb2312?b?9sTPye21?= Mime-Version: 1.0 (Mac OS X Mail 12.0 \(3445.100.39\)) Subject: [PATCH, csky] Handle -frounding-math. Message-Id: <3615FA6B-1184-467E-858E-F4B94E05D05D@c-sky.com> Date: Mon, 12 Nov 2018 10:45:41 +0800 Cc: yunhai_shang , Han Mao , Sandra Loosemore To: gcc-patches@gcc.gnu.org Hi, I have submitted a patch to handle -frounding-math for C-SKY Index: gcc/ChangeLog =================================================================== --- gcc/ChangeLog (revision 266023) +++ gcc/ChangeLog (working copy) @@ -1,3 +1,8 @@ +2018-11-11 Xianmiao Qu + + * config/csky/csky.md (*fpuv2_nmulsf3_1, *fpuv2_nmuldf3_1): Handle + -frounding-math. + 2018-11-11 Sandra Loosemore PR c++/43105 Index: gcc/config/csky/csky_insn_fpu.md =================================================================== --- gcc/config/csky/csky_insn_fpu.md (revision 266023) +++ gcc/config/csky/csky_insn_fpu.md (working copy) @@ -131,7 +131,7 @@ [(set (match_operand:SF 0 "register_operand" "=v") (mult:SF (neg:SF (match_operand:SF 1 "register_operand" "%v")) (match_operand:SF 2 "register_operand" "v")))] - "CSKY_ISA_FEATURE (fpv2_sf)" + "CSKY_ISA_FEATURE (fpv2_sf) && !flag_rounding_math" "fnmuls\t%0, %1, %2") (define_insn "*fpuv2_nmulsf3_2" @@ -145,7 +145,7 @@ [(set (match_operand:DF 0 "register_operand" "=v") (mult:DF (neg:DF (match_operand:DF 1 "register_operand" "%v")) (match_operand:DF 2 "register_operand" "v")))] - "CSKY_ISA_FEATURE (fpv2_df)" + "CSKY_ISA_FEATURE (fpv2_df) && !flag_rounding_math" "fnmuld\t%0, %1, %2") (define_insn "*fpuv2_nmuldf3_2" Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (revision 266023) +++ gcc/testsuite/ChangeLog (working copy) @@ -1,3 +1,10 @@ +2018-11-11 Xianmiao Qu + + * gcc.target/csky/fnmul-1.c: New. + * gcc.target/csky/fnmul-2.c: New. + * gcc.target/csky/fnmul-3.c: New. + * gcc.target/csky/fnmul-4.c: New. + 2018-11-11 Uros Bizjak PR target/87928 Index: gcc/testsuite/gcc.target/csky/fnmul-1.c =================================================================== --- gcc/testsuite/gcc.target/csky/fnmul-1.c (nonexistent) +++ gcc/testsuite/gcc.target/csky/fnmul-1.c (working copy) @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mcpu=ck810f -mhard-float -O2" } */ + +double +fnmuld (double a, double b) +{ + /* { dg-final { scan-assembler "fnmuld" } } */ + return -a * b; +} + +float +fnmuls (float a, float b) +{ + /* { dg-final { scan-assembler "fnmuls" } } */ + return -a * b; +} + Index: gcc/testsuite/gcc.target/csky/fnmul-2.c =================================================================== --- gcc/testsuite/gcc.target/csky/fnmul-2.c (nonexistent) +++ gcc/testsuite/gcc.target/csky/fnmul-2.c (working copy) @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-mcpu=ck810f -mhard-float -O2 -frounding-math" } */ + +double +fnmuld (double a, double b) +{ + /* { dg-final { scan-assembler "fnegd" } } */ + /* { dg-final { scan-assembler "fmuld" } } */ + return -a * b; +} + +float +fnmuls (float a, float b) +{ + /* { dg-final { scan-assembler "fnegs" } } */ + /* { dg-final { scan-assembler "fmuls" } } */ + return -a * b; +} + Index: gcc/testsuite/gcc.target/csky/fnmul-3.c =================================================================== --- gcc/testsuite/gcc.target/csky/fnmul-3.c (nonexistent) +++ gcc/testsuite/gcc.target/csky/fnmul-3.c (working copy) @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mcpu=ck810f -mhard-float -O2" } */ + +double +fnmuld (double a, double b) +{ + /* { dg-final { scan-assembler "fnmuld" } } */ + return -(a * b); +} + +float +fnmuls (float a, float b) +{ + /* { dg-final { scan-assembler "fnmuls" } } */ + return -(a * b); +} + Index: gcc/testsuite/gcc.target/csky/fnmul-4.c =================================================================== --- gcc/testsuite/gcc.target/csky/fnmul-4.c (nonexistent) +++ gcc/testsuite/gcc.target/csky/fnmul-4.c (working copy) @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-mcpu=ck810f -mhard-float -O2 -frounding-math" } */ + +double +fnmuld (double a, double b) +{ + /* { dg-final { scan-assembler "fnmuld" } } */ + return -(a * b); +} + +float +fnmuls (float a, float b) +{ + /* { dg-final { scan-assembler "fnmuls" } } */ + return -(a * b); +} +