Clang 融合乘加取决于表达式参数的恒定性

2023-12-28

正如答案中所示clang 14.0.0 浮点优化 https://stackoverflow.com/questions/73985098/clang-14-0-0-floating-point-optimizations,自版本 14 起,Clang 即使对于在编译时执行的常量计算也应用融合乘法加法 (FMA) 指令。

同时,我们可以观察到结果取决于表达式参数的形式恒定性:

#include <stdio.h>

int main() {
    const float A = 2.1f;
    const float B = 0.1f;
          float C = 0.1f;
    float V = A * B - A * B;
    float W = A * C - A * C;
    printf( "%g %g", V, W );
}

在 Clang 中,程序打印0 1.49011e-10,在线演示:https://godbolt.org/z/a3fcYG7ob https://godbolt.org/z/a3fcYG7ob

从汇编代码可以看出,两者V and W在编译时评估。有没有什么规则规定只能W可以使用FMA指令进行评估吗?

Adding -mno-fma用于禁用 FMA 指令的命令行选项不会改变结果中的任何内容。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Clang 融合乘加取决于表达式参数的恒定性 的相关文章

  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • Clang 编译器 (x86):80 位长双精度

    我正在尝试在 x86 Windows 平台上使用本机 80 位长双精度 海湾合作委员会选项 mlong double 80 https gcc gnu org onlinedocs gcc x86 Options html似乎不适用于 cl
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 转到定义:“无法导航到插入符号下的符号。”

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我今天突然开始在我的项目中遇到一个问题 单击 转到定义 会出现一个奇怪的错误 无法导航到
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 实例化 Microsoft.Office.Interop.Excel.Application 对象时出现错误:800700c1

    实例化 Microsoft Office Interop Excel Application 以从 winforms 应用程序生成 Excel 时 出现以下错误 这之前是有效的 但突然间它停止工作了 尽管代码和 Excel 版本没有变化 我
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • emberjs 绑定数据属性

    我想知道是否有一种方法可以在调用视图时在模板中绑定数据属性 例如 这不起作用 view App SomeView data dateBinding currentDate 我最终这样做了 a a 调用视图的时候一定有办法做到吗 更多关于 k
  • 错误被杀死:命令“git add”后出现 9。

    当我执行 git add 时遇到问题 我收到一条错误消息 已杀 9 如果我再次尝试 git add 我收到另一个错误 致命 无法创建 crmeasy git index lock 文件存在 Another git process seems
  • 如何强制Android重新索引手机上的所有照片?

    我注意到 Galaxy Nexus 处理照片和文件目录的方式有些奇怪 我创建了它们 但 Android 4 2 2 在您重新启动之前并不知道它们存在 至少在我的 Nexus 4 上是这样 我正在创建一个应用程序 当拍照并将其存储在图片中时
  • 没有找到适合完成该操作的成像组件 WPF vb.net

    我使用 WPF 应用程序中的以下代码将图像插入到 mdb 数据库中 Dim con As New OleDbConnection Provider Microsoft ACE OLEDB 12 0 Data Source GetCurren
  • Twilio 加入 Google Hangouts 电话会议

    我正在使用 GSuite 附带的 Google Hangouts for Enterprise 当 Google Hangouts 会议开始时 它会提供带有 PIN 码的拨入号码 1 xxxx xxxx 3235 一些 PIN 码 3495
  • 日期范围的 URL 约定

    在友好 URL 中显示日期范围的可接受约定是什么 例如 在时间跟踪应用程序中 我希望使用用户更容易区分的内容 而不是在 URL 中使用数据库的主键来表示特定的付款周期 http www mytimesheet com 11 1 2009 1
  • 在 Perl 中检查字符串是否为空的正确方法是什么?

    我一直在使用此代码来检查字符串是否为空 if str 与不等于运算符相反 if str 这似乎有效 我认为 但我不确定这是正确的方法 或者是否存在任何不可预见的缺点 只是感觉有些不对劲 对于 Perl 中的字符串比较 请使用eq or ne
  • 如何从手机启动 Android Wear 活动

    我一直在从事一个项目 我需要手机上的按钮来启动手表上的活动 我一直在查看 sdk 中的数据层示例 但无法使其工作 我设置了一个可穿戴侦听器服务类 但它没有接收任何消息 该服务已添加到清单中 但仍然无法运行 我也有其他服务 我想我可能有太多服
  • Mockito ArgumentCaptor 返回 Null

    我正在尝试使用 Mockito ArgumentCaptor 在我的方法中获取 mime 消息 当我取回捕获对象时 它的值为空 我对调试它很陌生 但 Mockito 用增强器包装了它 所以我看不到内容 这适用于我的方法中的对象 有人有想法吗
  • Zookeeper/SASL 校验和失败

    如何修复生成此错误的问题 WARN NIOServerCxn Factory 0 0 0 0 0 0 0 0 2181 ZooKeeperServer 1040 Client failed to SASL authenticate java
  • Mercurial 如何压缩存储库中的文件?

    我发现 Mercurial 有效地压缩了存储库中的文件 repo hg store data 有谁知道存储库文件使用哪种压缩方式 Thanks Mercurial 存储库中有两个压缩级别 增量存储和zlib压缩 https www merc
  • Flask登录成功后如何重定向到上一页

    我有一个网络应用程序 我不使用 Flask 登录 如果用户访问链接但未登录 我会将用户重定向到登录页面 我在会话中设置 用户名 并检查当用户尝试直接访问某些链接而不登录时 即在这种情况下用户名将为空 我尝试遵循这个二氧化硫溶液 https
  • 如何为 Angular 2 安装和导入 paperjs?

    我尝试使用命令安装 paperjs sudo npm install paper 在我的角度应用程序文件夹中 纸张似乎出现在 node modules 文件夹中 但是当我尝试使用导入它时 import Paper from paper 它没
  • 检查触发器是否存在

    我对公共模式中所有表的触发器有以下查询 SELECT CREATE TRIGGER tab name if modified trg INSERT OR UPDATE OR DELETE ON tab name FOR EACH ROW E
  • Angular 使用变量或循环创建选择器标签

    我需要使用变量创建 app component html 的选择器标签 假设变量名称为 componentVar string 我需要我的 app component html
  • 如何为 Azure 中的每个分支设置不同的管道

    我有一个项目 但有两个 主 分支 master 虚拟 主控 他们每个人都会有自己的azure pipeline yml具体针对他们的分支机构 第一条管道在master触发器设置为 trigger batch true branches in
  • 返回花括号在 javascript 中意味着什么(例如 return { init : init} )[重复]

    这个问题在这里已经有答案了 我正在查看这段代码 function var sidescroll function init function STUFF return init init What does this do sidescro
  • 以编程方式创建 UITextField 事件

    我在创建行时以编程方式将文本字段添加到 TableView 中 我试图通过这样做来订阅这些文本字段的 TouchUpInside 事件 UITextField eTextField UITextField alloc initWithFra
  • Android 垃圾收集器是否会在运行时暂停其他应用程序?

    我发现一些关于 Android 垃圾收集器的信息与我矛盾 Android 开发者指南 说道 Android 3 0 是该平台的第一个版本 旨在运行于 单核或多核处理器架构 各种各样 Dalvik VM Bionic 库和其他地方的更改增加了
  • Clang 融合乘加取决于表达式参数的恒定性

    正如答案中所示clang 14 0 0 浮点优化 https stackoverflow com questions 73985098 clang 14 0 0 floating point optimizations 自版本 14 起 C