[{"id":3670778,"web_url":"http://patchwork.ozlabs.org/comment/3670778/","msgid":"<ae49b1d7-4450-4b61-8106-93793b0c2349@oss.qualcomm.com>","list_archive_url":null,"date":"2026-03-29T17:50:21","subject":"Re: [PATCH GCC17-stage1] RISC-V: Synthesize FP constants via integer\n instructions + fmv","submitter":{"id":92310,"url":"http://patchwork.ozlabs.org/api/people/92310/","name":"Jeffrey Law","email":"jeffrey.law@oss.qualcomm.com"},"content":"On 3/24/2026 9:18 AM, Philipp Tomsich wrote:\n> From: Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>\n>\n> Non-zero floating-point constants that are not Zfa FLI candidates are\n> currently always loaded from the constant pool (lui + flw/fld), even\n> when the IEEE 754 bit pattern can be cheaply built in a GP register\n> and transferred via fmv.s.x/fmv.d.x with no memory access.\n>\n> Add expand-time synthesis in riscv_legitimize_move: decompose the\n> CONST_DOUBLE into an integer build (riscv_move_integer) followed by\n> a GP-to-FP transfer.  The constant is synthesized when the integer\n> build cost is < 3 instructions, keeping the total (including fmv)\n> at <= 3 — competitive with the 2-instruction + memory-access\n> constant pool alternative.\n>\n> For SFmode (RV32 and RV64 with F), every float constant qualifies\n> since any 32-bit value can be built in at most 2 instructions.\n> For DFmode (RV64 with D), constants whose bit pattern can be built\n> in 1-2 instructions are covered: all powers of 2, simple fractions,\n> small integers, and many common engineering constants.  Transcendental\n> constants like pi and e still use the constant pool.\n>\n> Examples (RV64GC, -O2):\n>    1.0f:  lui+flw (2 insns + mem)  ->  li+fmv.s.x     (2 insns)\n>    1.0:   lui+fld (2 insns + mem)  ->  li+slli+fmv.d.x (3 insns)\n>    pi:    unchanged (constant pool, integer build too expensive)\n>\n> gcc/ChangeLog:\n>\n> \t* config/riscv/riscv.cc (riscv_reinterpret_float_as_int): New\n> \tfunction to extract IEEE 754 bit pattern from CONST_DOUBLE.\n> \t(riscv_float_const_rtx_p): New function to decide if integer\n> \tsynthesis is profitable; returns the sign-extended integer\n> \tvalue through an output parameter.\n> \t(riscv_cannot_force_const_mem): Return true for synthesizable\n> \tFP constants to prevent constant pool spilling.\n> \t(riscv_const_insns): Return synthesis cost for eligible FP\n> \tconstants so they are treated as legitimate constants.\n> \t(riscv_legitimize_move): Add synthesis of FP constants via\n> \tinteger instructions and fmv.[sd].x.\n>\n> gcc/testsuite/ChangeLog:\n>\n> \t* gcc.dg/fold-overflow-1.c: Expect 2139095040 three times on\n> \tRISC-V due to FP constant synthesis of FLT_MAX.\n> \t* gcc.target/riscv/pr105666.c: Remove scan-assembler-not for\n> \tfmv.d.x since it now appears for FP constant synthesis.  Keep\n> \tthe fmv.x.d check for GP-to-FP spill avoidance.\n> \t* gcc.target/riscv/fp-const-synth-df-boundary.c: New test.\n> \t* gcc.target/riscv/fp-const-synth-df-rv32.c: New test.\n> \t* gcc.target/riscv/fp-const-synth-df.c: New test.\n> \t* gcc.target/riscv/fp-const-synth-run.c: New test.\n> \t* gcc.target/riscv/fp-const-synth-sf-rv32.c: New test.\n> \t* gcc.target/riscv/fp-const-synth-sf.c: New test.\n> \t* gcc.target/riscv/fp-const-synth-special-sf.c: New test.\n> \t* gcc.target/riscv/fp-const-synth-zfa.c: New test.\nNot a review, but a note that I believe this will resolve the remaining \nissues with 110748 as -0.0 is just a bset dst, x0, 31/63 when ZBB is \navailable.  More importantly I think as-written it should silently \"just \nwork\" for any constant we can easily synthesize.  So I'm definitely \nsupportive of basic idea.  Just need to get inside the implementation \ndetails now.\n\n\nJeff","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=UQr27Jtb;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=dxijBDuK;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=temperror (SPF Temporary Error: DNS Timeout) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=qualcomm.com header.i=@qualcomm.com header.a=rsa-sha256\n header.s=qcppdkim1 header.b=UQr27Jtb;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com\n header.a=rsa-sha256 header.s=google header.b=dxijBDuK","sourceware.org; dmarc=none (p=none dis=none)\n header.from=oss.qualcomm.com","sourceware.org;\n spf=pass smtp.mailfrom=oss.qualcomm.com","server2.sourceware.org;\n arc=none smtp.remote-ip=205.220.168.131"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fkMPq69mvz1xrn\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 04:51:06 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 978E44BA23FE\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 29 Mar 2026 17:50:57 +0000 (GMT)","from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com\n [205.220.168.131])\n by sourceware.org (Postfix) with ESMTPS id B545B4BA23E8\n for <gcc-patches@gcc.gnu.org>; Sun, 29 Mar 2026 17:50:25 +0000 (GMT)","from pps.filterd (m0279862.ppops.net [127.0.0.1])\n by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 62TAhNNI1753715\n for <gcc-patches@gcc.gnu.org>; Sun, 29 Mar 2026 17:50:24 GMT","from mail-dl1-f72.google.com (mail-dl1-f72.google.com\n [74.125.82.72])\n by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d6ufmhdhv-1\n (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT)\n for <gcc-patches@gcc.gnu.org>; Sun, 29 Mar 2026 17:50:24 +0000 (GMT)","by mail-dl1-f72.google.com with SMTP id\n a92af1059eb24-1270dcd11c1so3978525c88.0\n for <gcc-patches@gcc.gnu.org>; Sun, 29 Mar 2026 10:50:24 -0700 (PDT)","from [172.31.0.38] ([136.38.201.137])\n by smtp.gmail.com with ESMTPSA id\n a92af1059eb24-12ab97cad88sm5427042c88.1.2026.03.29.10.50.21\n (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);\n Sun, 29 Mar 2026 10:50:22 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 978E44BA23FE","OpenDKIM Filter v2.11.0 sourceware.org B545B4BA23E8"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org B545B4BA23E8","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org B545B4BA23E8","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1774806625; cv=none;\n b=Q3nKVPI0n8MJK2cbfJlsejjeoImBXxWng7MXOBKzjel3fydUbBkpDpFMCZIFz9zQdxxEr94pwILWJFwTuRW0Gc1Z8Apbn7CSBVBdBzPS8nF6RAEAP1RfsdEJDUDWey/LEJeS+RQiQbFUYsaObWVewdjO6Zw3krfWleFoHibyf4E=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774806625; c=relaxed/simple;\n bh=/bYSg7V8XDAv7WBRxgjSP1KKFW8N1Q6s88pCKXJXQxs=;\n h=DKIM-Signature:DKIM-Signature:Message-ID:Date:MIME-Version:\n Subject:To:From;\n b=r7B6SvbIBAUxV/YizEy232GRLfjRCKYH7tu44Itu2jd31A/IfyrOzB/kdmz9jxCoplvZ5bmfES1/OgZq04ZbmTILXXxuwX423V70DhKAKtLTXaCGx9K/SbIPOmXnOro3SVovl4G9XssGIN8GkjPSMndiMi+rXVdVbe6eAmNfA5A=","ARC-Authentication-Results":"i=1; server2.sourceware.org","DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h=\n cc:content-transfer-encoding:content-type:date:from:in-reply-to\n :message-id:mime-version:references:subject:to; s=qcppdkim1; bh=\n DfFryLmQSpQJHpjkG4urheWH22F3rGYliGg01bLrOQs=; b=UQr27JtbMdSp3OPB\n 8PKSeeOPOhRPJTE8REB+TiODJC1pW3LjdK8RUawtD7BLeQihVHkorOshxs+vPvGJ\n fTwdyoOeEchuprRNZfvHCkaGc2+3LqvedF3xBGtltNXHnL7Ch3ldfs8WUAWOwwjO\n qddrmkWt/EKOdCLVGWOyKd8GJkMYtKMOM1DdnYnGK0ORJoRO0qKHen8aXeuBPCCK\n rQxp4hrmA31tCYCZ9wrVyicUwVER90QBdju1CEIzPA1aEda97dDRHDcL3NZgSWLk\n dY8bO0xjsKu1fV6/ReQYgXxhgD9H2Qw9GcfXhmNQ3qFgH8l8gGJcW3Y0hEuFil19\n 0NddQw==","v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=oss.qualcomm.com; s=google; t=1774806623; x=1775411423; darn=gcc.gnu.org;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :from:to:cc:subject:date:message-id:reply-to;\n bh=DfFryLmQSpQJHpjkG4urheWH22F3rGYliGg01bLrOQs=;\n b=dxijBDuKwMm9RMYqK/wY1gypycq1bvWoTqZxrAmjFdLCkDIxkuBvxaqCe/u5tJms/a\n CvMWGGFv7g+ij15pgHMSRFeIYsoV6TUL6YCDzjocS3t/BAJB2P7pLV4uWUDR4xkksWvG\n kfzcwVbIJSw1k/VOET2pYlxmBXuybV5+bt0GLEGhlmpBF+p202EVLSuEdHx7tako/YDj\n ytwzsVVjHCZdQ19+xRd9+z4XRunfj3TBZlwvOAe3s/WYe6aihDh0YkCzbovdXRoStlKH\n jGXwUA+cJXuIpA9TkRv7FRBPMBSfwbk/Y/7ITfZV4YYFJ8oA0OY9A0eAF6OiRuWrmFuN\n D8Aw=="],"X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774806623; x=1775411423;\n h=content-transfer-encoding:in-reply-to:from:content-language\n :references:cc:to:subject:user-agent:mime-version:date:message-id\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=DfFryLmQSpQJHpjkG4urheWH22F3rGYliGg01bLrOQs=;\n b=kw0PDms7pf1gxsJKflbJ06t9VswiPE89k6vtBl1QXd7CF09JerI7Sbo/59X4yaZ/I0\n rmublBGx0SepA+vWLBB5QOHGnK4ViZ/BJ92Z4gsIsgUV5CwB7+IfxGNGLMbcnlOBEQgX\n SWkuL2tbNHxmBZONxN0sxBXqv4VJ7NmX1eK3WK+1UwIqFSt4+Ri4wNXMXXQkri5Q/xC9\n 8LiH1oUNTGxajr7yS6dvpEj5jZUst8SU8P4FPZPcNHlePp8zxUIKIFmc+hoWXG3Sdd3o\n o21wJ4+4xCny+JXGl1v1evZWrgyxdIQFda/6BHvzEXiKTk15XDFWtLFrxgU3uSfMnk4o\n tCug==","X-Forwarded-Encrypted":"i=1;\n AJvYcCWef2QmlJQWr54kfIR2pmC8Uk+WsZgkShGl5+n2SBzK9r2vszzQ2B/jCYeocYewK8f62MZaFXKYWgcEpg==@gcc.gnu.org","X-Gm-Message-State":"AOJu0YyaeYJ8myiXRbt32T7bvZcCAl9dDKPVnE7puTYZhEts2URxgPDt\n 6YTrdk6X1z+aST+JkExaZJXLooHSAVws1bnOt5S0rWqJvN48/4bDz8AE0qstIcEeZFq/2KKFkjV\n 7wbC/JbmpF7zWDkxdtfob45ib6Ix+haSs5lgsDut/28zkVY0Rqb2brUIJMy0/","X-Gm-Gg":"ATEYQzxPcnpfttw3e4x8cAPJLR7mJc/3jfuzf4adWm2Z+hUDRbtykBUXHUz+BWtQHCk\n XFzJx007KLuLUxC+Jxa1xdhQ0S3pdcrc/+EQAQHBU8r7IHHF89F9r7Yw8xrH2BMMkbu4GlCNz80\n 21JhqscShV9YStQQNkUx0fe93OqS9s1ffX6qyyEyzciEpNp4JFI8D2/vw9xifdRUPpq+pYHHfAp\n WLClEbk2vRRezPezadh18k+fggkCicE+buUdbFCTkMWzjFOrwVCjBm/nxvZ5jnDuyW05/BUyFQh\n m25/G+Bc4kW+AkLiaVFpjhy7fqEyi69WMe8739qjs86ebzvCbp4ukpvaXn8qIElXUFaKEBISI5C\n iMdHa2tKQGA9cvKUP4WIDc7NmGJWevGnnjtvpnXT4cuFwscqDSQ==","X-Received":["by 2002:a05:7022:6706:b0:119:e56b:98b9 with SMTP id\n a92af1059eb24-12ab28eecc9mr5060293c88.32.1774806623197;\n Sun, 29 Mar 2026 10:50:23 -0700 (PDT)","by 2002:a05:7022:6706:b0:119:e56b:98b9 with SMTP id\n a92af1059eb24-12ab28eecc9mr5060283c88.32.1774806622609;\n Sun, 29 Mar 2026 10:50:22 -0700 (PDT)"],"Message-ID":"<ae49b1d7-4450-4b61-8106-93793b0c2349@oss.qualcomm.com>","Date":"Sun, 29 Mar 2026 11:50:21 -0600","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [PATCH GCC17-stage1] RISC-V: Synthesize FP constants via integer\n instructions + fmv","To":"Philipp Tomsich <philipp.tomsich@vrull.eu>, gcc-patches@gcc.gnu.org","Cc":"Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>","References":"<20260324151840.3671675-1-philipp.tomsich@vrull.eu>","Content-Language":"en-US","From":"Jeffrey Law <jeffrey.law@oss.qualcomm.com>","In-Reply-To":"<20260324151840.3671675-1-philipp.tomsich@vrull.eu>","Content-Type":"text/plain; charset=UTF-8; format=flowed","Content-Transfer-Encoding":"8bit","X-Proofpoint-Spam-Details-Enc":"AW1haW4tMjYwMzI5MDE0MCBTYWx0ZWRfX46rjbh+bSS1Q\n TUGZDOBFMtQDcPiHLwEpG/f8StoKQU9Qbf1RdbB67djEXUNV8PJY/uexKQ6MrgNpUM/w+foPLRE\n WqYF0WRSzkYlCPZoUr9dMIjQmv+Ba+435+PIuSRM+k+Ldu9Ic/o5GILCGjt+vFf1NHdtR7gQeHl\n XJOFDNx8f/l7jeWzCaM79vwFXsOKkJjTvoIA0G8qxxd+K8qyvLKjxhuKWjvGl+bSfxnCWyQZ3cJ\n fzIgnPKgFlbN0relLCiGSf1iHnWwqD7Id+Za4SlD5gKCvBEK4GYolWDwsRuBvGDy+/e/3KsA9i/\n cJtu3gDbVH81ndJ7pd8szBqq2Wqd7Oxq+dmUlpXWRoketVd5Ki+g3P+kxdEXP7evsMF2GbK6J/N\n n1pB4IXTBbIW/ATZEwRhjqROEgYBRx/GM6uuv3/277AlL/doani6OFXSKhItee5u6c4mUiFwUy6\n 9HXpUONkuEklkDQBV+A==","X-Authority-Analysis":"v=2.4 cv=aOT9aL9m c=1 sm=1 tr=0 ts=69c96660 cx=c_pps\n a=bS7HVuBVfinNPG3f6cIo3Q==:117 a=asGLMfRmzhnGNxaIYohjRg==:17\n a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10\n a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22\n a=KpfOZQ45AAAA:8 a=QZ_xu-TISfJqIze32ZMA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10\n a=vBUdepa8ALXHeOFLBtFW:22 a=KHlNn528OWJD8b-aQ5dU:22","X-Proofpoint-ORIG-GUID":"IzreyW5nTXzUmD4l-NlDsROIF8dF0r_3","X-Proofpoint-GUID":"IzreyW5nTXzUmD4l-NlDsROIF8dF0r_3","X-Proofpoint-Virus-Version":"vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-03-29_04,2026-03-28_01,2025-10-01_01","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n impostorscore=0 phishscore=0 bulkscore=0 spamscore=0 lowpriorityscore=0\n clxscore=1015 suspectscore=0 adultscore=0 malwarescore=0 priorityscore=1501\n classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0\n reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603290140","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}},{"id":3670786,"web_url":"http://patchwork.ozlabs.org/comment/3670786/","msgid":"<CAAeLtUAyW8WhZ9krbZiHvE5UFWsuJYqBPpHOvhEHKx9By46Jxw@mail.gmail.com>","list_archive_url":null,"date":"2026-03-29T19:12:01","subject":"Re: [PATCH GCC17-stage1] RISC-V: Synthesize FP constants via integer\n instructions + fmv","submitter":{"id":80556,"url":"http://patchwork.ozlabs.org/api/people/80556/","name":"Philipp Tomsich","email":"philipp.tomsich@vrull.eu"},"content":"Jeff,\n\nThe +0.0 case is fine — sd zero,0(a0) and sw zero,0(a0). No fmv.d.x or fmv.s.x.\nThe synthesis patch correctly avoids synthesizing 0.0 via integer\ninstructions since storing integer zero is cheaper.\n\nWith this patch, I get the following assembly for the function from PR110748:\n>         .attribute arch, \"rv64i2p1_m2p0_a2p1_f2p2_d2p2_zicsr2p0_zifencei2p0_zmmul1p0\"\n>         .attribute unaligned_access, 0\n>         .attribute stack_align, 16\n>         .text\n>         .align  2\n>         .globl  zd\n>         .type   zd, @function\n>      zd:\n>      .LFB0:\n>         .cfi_startproc\n>         sd      zero,0(a0)\n>         ret\n>         .cfi_endproc\n>      .LFE0:\n>         .size   zd, .-zd\n>         .ident  \"GCC: (GNU) 16.0.1 20260227 (experimental)\"\n\nThanks,\nPhilipp\n\n\nOn Sun, 29 Mar 2026 at 19:50, Jeffrey Law <jeffrey.law@oss.qualcomm.com> wrote:\n>\n>\n>\n> On 3/24/2026 9:18 AM, Philipp Tomsich wrote:\n> > From: Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>\n> >\n> > Non-zero floating-point constants that are not Zfa FLI candidates are\n> > currently always loaded from the constant pool (lui + flw/fld), even\n> > when the IEEE 754 bit pattern can be cheaply built in a GP register\n> > and transferred via fmv.s.x/fmv.d.x with no memory access.\n> >\n> > Add expand-time synthesis in riscv_legitimize_move: decompose the\n> > CONST_DOUBLE into an integer build (riscv_move_integer) followed by\n> > a GP-to-FP transfer.  The constant is synthesized when the integer\n> > build cost is < 3 instructions, keeping the total (including fmv)\n> > at <= 3 — competitive with the 2-instruction + memory-access\n> > constant pool alternative.\n> >\n> > For SFmode (RV32 and RV64 with F), every float constant qualifies\n> > since any 32-bit value can be built in at most 2 instructions.\n> > For DFmode (RV64 with D), constants whose bit pattern can be built\n> > in 1-2 instructions are covered: all powers of 2, simple fractions,\n> > small integers, and many common engineering constants.  Transcendental\n> > constants like pi and e still use the constant pool.\n> >\n> > Examples (RV64GC, -O2):\n> >    1.0f:  lui+flw (2 insns + mem)  ->  li+fmv.s.x     (2 insns)\n> >    1.0:   lui+fld (2 insns + mem)  ->  li+slli+fmv.d.x (3 insns)\n> >    pi:    unchanged (constant pool, integer build too expensive)\n> >\n> > gcc/ChangeLog:\n> >\n> >       * config/riscv/riscv.cc (riscv_reinterpret_float_as_int): New\n> >       function to extract IEEE 754 bit pattern from CONST_DOUBLE.\n> >       (riscv_float_const_rtx_p): New function to decide if integer\n> >       synthesis is profitable; returns the sign-extended integer\n> >       value through an output parameter.\n> >       (riscv_cannot_force_const_mem): Return true for synthesizable\n> >       FP constants to prevent constant pool spilling.\n> >       (riscv_const_insns): Return synthesis cost for eligible FP\n> >       constants so they are treated as legitimate constants.\n> >       (riscv_legitimize_move): Add synthesis of FP constants via\n> >       integer instructions and fmv.[sd].x.\n> >\n> > gcc/testsuite/ChangeLog:\n> >\n> >       * gcc.dg/fold-overflow-1.c: Expect 2139095040 three times on\n> >       RISC-V due to FP constant synthesis of FLT_MAX.\n> >       * gcc.target/riscv/pr105666.c: Remove scan-assembler-not for\n> >       fmv.d.x since it now appears for FP constant synthesis.  Keep\n> >       the fmv.x.d check for GP-to-FP spill avoidance.\n> >       * gcc.target/riscv/fp-const-synth-df-boundary.c: New test.\n> >       * gcc.target/riscv/fp-const-synth-df-rv32.c: New test.\n> >       * gcc.target/riscv/fp-const-synth-df.c: New test.\n> >       * gcc.target/riscv/fp-const-synth-run.c: New test.\n> >       * gcc.target/riscv/fp-const-synth-sf-rv32.c: New test.\n> >       * gcc.target/riscv/fp-const-synth-sf.c: New test.\n> >       * gcc.target/riscv/fp-const-synth-special-sf.c: New test.\n> >       * gcc.target/riscv/fp-const-synth-zfa.c: New test.\n> Not a review, but a note that I believe this will resolve the remaining\n> issues with 110748 as -0.0 is just a bset dst, x0, 31/63 when ZBB is\n> available.  More importantly I think as-written it should silently \"just\n> work\" for any constant we can easily synthesize.  So I'm definitely\n> supportive of basic idea.  Just need to get inside the implementation\n> details now.\n>\n>\n> Jeff","headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=vrull.eu header.i=@vrull.eu header.a=rsa-sha256\n header.s=google header.b=W7mXJzPl;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=vrull.eu header.i=@vrull.eu header.a=rsa-sha256\n header.s=google header.b=W7mXJzPl","sourceware.org;\n dmarc=none (p=none dis=none) header.from=vrull.eu","sourceware.org; spf=pass smtp.mailfrom=vrull.eu","server2.sourceware.org;\n arc=pass smtp.remote-ip=209.85.218.50"],"Received":["from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fkPCg5r5Yz1xrn\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 30 Mar 2026 06:12:45 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 1C3434BA9013\n\tfor <incoming@patchwork.ozlabs.org>; Sun, 29 Mar 2026 19:12:43 +0000 (GMT)","from mail-ej1-f50.google.com (mail-ej1-f50.google.com\n [209.85.218.50])\n by sourceware.org (Postfix) with ESMTPS id 38DB94BA23ED\n for <gcc-patches@gcc.gnu.org>; Sun, 29 Mar 2026 19:12:13 +0000 (GMT)","by mail-ej1-f50.google.com with SMTP id\n a640c23a62f3a-b981ca4776fso57041666b.2\n for <gcc-patches@gcc.gnu.org>; Sun, 29 Mar 2026 12:12:13 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org 1C3434BA9013","OpenDKIM Filter v2.11.0 sourceware.org 38DB94BA23ED"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org 38DB94BA23ED","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org 38DB94BA23ED","ARC-Seal":["i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1774811533; cv=pass;\n b=eYVm15TYjPeiXgjuFRRH+by6Nigb00uBJC+cwh3n99mtsNEqjn87w8aiFeSonLzlzLXSndDFyZtIUBuQYVwKExEkNah5LkO2GkISXa2/2SaPBhjV2UE+tjr/iD2E5Y2xNeXY5VFPqOTQvcNy9PbIklMoZPlEPrJgJdMTN63UNVE=","i=1; a=rsa-sha256; t=1774811532; cv=none;\n d=google.com; s=arc-20240605;\n b=STPE3Hm+gPW3VbrECprmcBjfvkQ5Bhh+FObrY+xJilnWa7GNrUZcsDhigGH5/QDIJv\n dhHew5rntCdECHWOUwfdf9GAjWkKq4ZQNBOyj9H1iXpDeR5SlpPrMF4pzJEGPv2KjzG/\n xbNk+fyD4veCCtLwwUsO8oWs1rNNiB1Skfn7aH/b7UTQhdqebNcBXEBoxtSvo3MjFgVN\n g2VF35mxbGeLSzaJHVSv3AqfnURYyKagpurLOHiFRShXW+5Hh9R0QWE/+d2Ax8OTB3My\n u4lpbfnUWrAKFytdNV7iojZ5Pt2LHW6fSRnnCofhhUbXxQkN2xSF36letqcwFnNuUER5\n PQsg=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=sourceware.org; s=key;\n t=1774811533; c=relaxed/simple;\n bh=b6erMatvoix84rxS2NmvcL5KrSNypHsR5xRcv/Nd22Y=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=VyWSR1i3s+lzsFHhGg7FfgmvD8PATdXXDHGFC334HpSKP8cI2HrW0P3wS5YqdUEO8QbVgMGtW4KzPek1EKkUOyKbVUzfrGMidhA+vh+FasPIhO77gMDgDE8m/oTz3GUhxkmz5VwnzZyrKDAzYxf/gLJXwI29/eeQKfyzMjGoGtc=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n s=arc-20240605;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:dkim-signature;\n bh=MuyXukDUsy1OqCS6yF1IuSOf5l5AzYeG4cfiON/+VTw=;\n fh=mupkTX+LWtk5vB2uAuDE33A8JDuiQBC28uWDJTADobM=;\n b=FzMjwRJYTBS1p1itqqnCDH1dx2rxloYfvF5m7VcTtl19wcKFto0Yr3iEx8bdncljf4\n ah3OfZ2Glw8eqmwg31kizbjJz8BgM4f+/i/Q59nNwHUTnRsGaz7kxgeYANR8oWA3e3wm\n G/ny+ifsmevlH3baq0pbdd2tuZVWfnf+XDHb90sbIXbry9cFcHJzMWuTwofHqDlpwBQk\n wDS9tH3E/9Uu36eIj9ecWOkY0Gr4/smo7etqTDtLPkbxkarkPW+zcNyMzr6VdAiTaaNZ\n np99yTUa3aVr8XKcVNqwaziknvIPAmyeTfogf8KiSfSGHgpvEDj5dcsLZTvO4+xwRvDD\n 5AUw==; darn=gcc.gnu.org"],"ARC-Authentication-Results":["i=2; server2.sourceware.org","i=1; mx.google.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=vrull.eu; s=google; t=1774811532; x=1775416332; darn=gcc.gnu.org;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:from:to:cc:subject:date\n :message-id:reply-to;\n bh=MuyXukDUsy1OqCS6yF1IuSOf5l5AzYeG4cfiON/+VTw=;\n b=W7mXJzPl7FkxbBOFcDGNXe4YkT/UnfPScuP3p6juD6jJsobQp49vnP9dB1DDKFBMa0\n 9Rp2xTlk4ASR6lBg625ECc9Gi3CaF6NkYXxQA4AAXFFoBxfEb4EJITeC/uzZAJ4KYBwV\n 7n+jklyYOmtdQXbjmHsm+Ta+vnU+TGzdox/tkS47k1FlHBZ7/8sy96eW2wTQPPndg4cY\n //2GiQnXfajzKOosMUqofdzHLOf7welmnv2A8FugRlDg4ePm3+l2QdP+mk4KzULyTOn1\n 0zFgRY8/YlmMNB5B5f9M4FoKk2VITBBvCthms8HkNQS70BtTy/SC0GoqiZmPx6KoUXJU\n 6YYQ==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1774811532; x=1775416332;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=MuyXukDUsy1OqCS6yF1IuSOf5l5AzYeG4cfiON/+VTw=;\n b=ZZBHJVtQZE4ynRFdihZbGKo07KqSN1wNP9dZuzl9RVv0F/Z2Qdp0/StPwbPOsWkAst\n wCFQeZBqFdOzYbnv5l5sXAbdT6uB2aD76t6i12iTKLiJ0AeXqYKxoYH7I+HvxiA0tU/+\n Fwi3TO+EGOnSJVf+H5eyas1s7FrrfQnQfsDncmhzDEgOQX0QSCO4X9+HgbaZK+yqtkwG\n SUXPjwypUAUsStX9rkdcpFwfIZfvugS/rz3rKY+ZTdSLXbFAJGpfs6phSs7HiOMc3MuV\n 5ipCW+l2iRILEQRWKAwSgCMoZ/vD3ay8JHFul323dFclmFhF4N1LOP16aTXOWbwB0vuN\n fLdw==","X-Gm-Message-State":"AOJu0YzgKVaAjT2NWLUL0dN8ESEx8POR9tp7rUjT11kFRiyAkTc1QmnC\n poZn1VrF4FIotQhEvrvxJ4dfG628vmPyyjCYcTHnmVQGDm6rvvV1e2Y53z3SfPbGbPTaBCyUYNH\n dlgGGcA2KbccUTzZ/P8seAdH9mmhCDsMLfnLuzirSi81YAlwr9opbjjfdaQ==","X-Gm-Gg":"ATEYQzxWNDYRjNbbmD38Xfkti7S3IHXmpN3e2DP5jNJTFJOmV0qwmnLYV16d6AFPBC5\n z33JOHC3VMAN5oJ1e3kVu8esO80K6yeLC3GKp5G5YCRANFLbjVyKRObs1WeVOn52daCCnHtqjLk\n s58I4fPxSUuCjDW+eViE6taeAe/rR6uonOFMMzumyTCbku0lP8FJrOAsMb+os3HMI7ryXzSvjv1\n OcLGr04NpvEzMk+8dkGj1WsJJsKaAKuer1j33Xczv0Pp8RhKGCnjo+5DKZmQ8ftuzl6nhanspo4\n LaG4jhXke2avoBjOCA/zAtGmJvz0br6fZwjuQ2Qlq8KhkaQQKA==","X-Received":"by 2002:a17:906:f596:b0:b98:1b18:7839 with SMTP id\n a640c23a62f3a-b9b4f9b9dd0mr249617766b.0.1774811531709; Sun, 29 Mar 2026\n 12:12:11 -0700 (PDT)","MIME-Version":"1.0","References":"<20260324151840.3671675-1-philipp.tomsich@vrull.eu>\n <ae49b1d7-4450-4b61-8106-93793b0c2349@oss.qualcomm.com>","In-Reply-To":"<ae49b1d7-4450-4b61-8106-93793b0c2349@oss.qualcomm.com>","From":"Philipp Tomsich <philipp.tomsich@vrull.eu>","Date":"Sun, 29 Mar 2026 21:12:01 +0200","X-Gm-Features":"AQROBzB_eyL6f9Uz45xJr5z77d78fk2U72cb0lt0ngKPi8taN8tgTMB0XzMMF6M","Message-ID":"\n <CAAeLtUAyW8WhZ9krbZiHvE5UFWsuJYqBPpHOvhEHKx9By46Jxw@mail.gmail.com>","Subject":"Re: [PATCH GCC17-stage1] RISC-V: Synthesize FP constants via integer\n instructions + fmv","To":"Jeffrey Law <jeffrey.law@oss.qualcomm.com>","Cc":"gcc-patches@gcc.gnu.org,\n Konstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","X-BeenThere":"gcc-patches@gcc.gnu.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Gcc-patches mailing list <gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>","List-Archive":"<https://gcc.gnu.org/pipermail/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-request@gcc.gnu.org?subject=help>","List-Subscribe":"<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"}}]