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 融合乘加取决于表达式参数的恒定性 的相关文章

  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 类型中的属性名称必须是唯一的

    我正在使用 Entity Framework 5 并且有以下实体 public class User public Int32 Id get set public String Username get set public virtual
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 方程“a + bx = c + dy”的积分解

    在等式中a bx c dy 所有变量都是整数 a b c and d是已知的 我如何找到整体解决方案x and y 如果我的想法是正确的 将会有无限多个解 由最小公倍数分隔b and d 但我只需要一个解决方案 我可以计算其余的 这是一个例
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 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