orpd等SSE2指令有什么意义?

2024-05-04

The orpd指令是“压缩双精度浮点值的按位逻辑或”。这不是做完​​全相同的事情吗por(“按位逻辑或”)?如果是这样,拥有它还有什么意义呢?


请记住 SSE1orps https://www.felixcloutier.com/x86/orps首先。 (实际上MMX por mm, mm/mem https://www.felixcloutier.com/x86/por甚至早于 SSE1。)

具有相同的操作码和新的前缀SSE2 orpd https://www.felixcloutier.com/x86/orpd我想,指令对于硬件解码器逻辑来说是有意义的,就像movapd vs. movaps。像这样的几个指令之间是多余的ps and pd版本,但有些不是,例如addps vs. addpd or unpcklps vs. unpcklpd是不同的洗牌。

SSE2也引入的原因66 0F EB /r por xmm,xmm/mem https://www.felixcloutier.com/x86/por至少部分是为了与 MMX 保持一致0F EB /r por mm, mm/mem,同样的操作码带有新的强制前缀。就像paddb mm, mm vs. paddb xmm, xmm.

而且还考虑了 vec-integer 与 FP 不同的旁路转发域的可能性。不同的微架构对于如何实际解码和运行这些不同的指令有不同的行为。有些运行所有 XMMor指令以相同的方式进行,从而为 FP 和 simd-integer 域之间的转发产生额外的延迟。

实际上,没有任何 CPU 对于 FP-float 和 FP-double 具有不同的转发域,所以是的,movapd and orpd实际上,这些都是你永远不应该使用的无用的空间浪费。使用较小的orps编码代替。

(或者使用 VEX 编码也没关系;vorps and vorpd大小相同:2 字节前缀 + 操作码 + modrm ...)


por vs. orps

有关使用时旁路延迟的更多信息porFP 数学指令之间,例如addps, or orpsSIMD-整数 insns 之间,例如paddb, see

  • 混合 SSE 整数/浮点 SIMD 指令时,性能是否会受到影响 https://stackoverflow.com/questions/4996384/do-i-get-a-performance-penalty-when-mixing-sse-integer-float-simd-instructions/4998071#4998071
  • 逻辑 SSE 内在函数之间有什么区别? https://stackoverflow.com/questions/2804902/whats-the-difference-between-logical-sse-intrinsics/31233017#31233017
  • AVX 指令 vxorpd 和 vpxor 之间的区别 https://stackoverflow.com/questions/26942952/difference-between-the-avx-instructions-vxorpd-and-vpxor
  • 混合使用 pxor 和 xorps 会影响性能吗? https://stackoverflow.com/questions/39811577/does-using-mix-of-pxor-and-xorps-affect-performance
  • 有没有什么情况下使用MOVDQU和MOVUPD比MOVUPS更好? https://stackoverflow.com/questions/40854819/is-there-any-situation-where-using-movdqu-and-movupd-is-better-than-movups
  • 在混合上下文中选择 SSE 指令执行域 https://stackoverflow.com/questions/28660698/choosing-sse-instruction-execution-domains-in-mixed-contexts- Skylake 之前的整数版本具有更好的吞吐量。

如果有人想知道,标题的另一种解释的答案是:FP 值上的按位布尔值主要用于设置、清除或切换符号位。或者做一些事情cmpps/pd面具喜欢混合。

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

orpd等SSE2指令有什么意义? 的相关文章

  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • NASM 中的 equ 和 db 有什么区别?

    len equ 2 len db 2 它们是否相同 产生可以用来代替的标签2 如果不是 那么每种申报表的优点或缺点是什么 它们可以互换使用吗 第一个是equate 与 C 类似 define len 2 因为它实际上并没有在最终代码中分配任
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • 避免 gcc 函数序言开销?

    我最近遇到了很多 gcc 在 x86 上生成非常糟糕的代码的函数 它们都符合以下模式 if some condition do something really simple and return else something comple
  • movzbl(%rdi, %rcx, 1), %ecx 在 x86-64 汇编中意味着什么?

    我想我明白 movzbl rdi rcx 1 ecx 意思是 将零扩展字节移至长整型 并表示将 ecx 扩展为 32 位 但我不完全确定语法 rdi rcx 1 指的是什么 我在某处看到该语法指的是 Base Index Scale 但我找
  • 无法识别的仿真模式:MinGW32 上的 elf_i386

    我正在尝试制作内核 但无法链接C与程序集一起输出 这ld 我收到错误 无法识别的仿真模式 elf i386 我正在使用 Windows 10 专业版以及 MinGW32 和 MSYS 我正在使用的代码 link ld link ld OUT
  • Core i3/5/7 CPU 是否提供测量 IPC 的机制?

    至少 过去十年中的所有英特尔 CPU 都包含一组对各种事件进行计数的性能监视器 最新的 Intel CPU Core i3 i5 和 i7 又名 Nehalem 是否提供了计算每时钟指令 IPC 的机制 如果有 它们是如何使用的 如果可能的
  • 调用可以是 cdecl 或 stdcall 的函数

    我需要编写调用外部函数的代码 该函数可以是 32 位 Windows 应用程序中的 stdcall 调用或 cdecl 我的代码 调用者 无法提前知道其中的哪一个 现在 如果我尝试从定义为 stdcall 的调用站点调用 cdecl 函数
  • PAE(物理地址扩展)如何实现大于4GB的地址空间?

    维基百科文章的摘录物理地址扩展 http en wikipedia org wiki Physical Address Extension x86 处理器硬件架构通过用于选择附加内存的附加地址线进行了增强 因此物理地址大小从 32 位增加到
  • 在 Intel x86 架构上使用非 AVX 指令移动 xmm 整数寄存器值

    我有以下问题 需要使用 AVX2 以外的任何工具来解决 我有 3 个值存储在 m128i 变量中 不需要第四个值 需要将这些值移动 4 3 5 我需要两个功能 一个用于按这些值进行右逻辑移位 另一个用于左逻辑移位 有谁知道使用 SSE AV
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 当 mov 指令导致页面错误并且在 x86 上禁用中断时会发生什么?

    我最近在自定义 Linux 内核 2 6 31 5 x86 驱动程序中遇到一个问题 其中 copy to user 会定期不将任何字节复制到用户空间 它将返回传递给它的字节数 表明它没有复制任何内容 经过代码检查 我们发现代码在调用 cop
  • ICC 中的 -O3 会扰乱内在函数,使用 -O1 或 -O2 或相应的手动汇编即可

    这是后续这个问题 http stackoverflow com questions 49791664 o2 in icc messes up assembler fine with o1 in icc and all optimizatio
  • 难以理解汇编命令“加载有效地址”[重复]

    这个问题在这里已经有答案了 可能的重复 LEA 指令的目的是什么 https stackoverflow com questions 1658294 whats the purpose of the lea instruction LEA指
  • 如何在 MacOS 上使用 nasm 进行编译

    我正在尝试在汇编器上编译并链接我的第一个程序 我尝试编译以下代码 include stud io inc global main section text main xor eax eax again PRINT Hello PUTCHAR
  • 为什么 mov %ax, %ds 汇编+反汇编为 mov %eax,%ds,与原来不一致?

    test S text global start start xor ax ax mov ax ds mov ax ss mov ax es mov ax fs mov ax gs 我通过这样做得到了反汇编代码文件 x86 64 elf g
  • 嵌入式系统:使用汇编语言时的内存布局

    根据我的理解 嵌入式系统运行机器代码 有多种方法可以生成此代码 一种是用 C 等高级语言编写程序 然后使用编译器获得这样的代码 另一种方法是用汇编语言为该嵌入式系统编写指令 并使用汇编器将其转换为机器代码 现在我们得到了加载到系统并执行的机
  • 为什么 LED 保持亮起而不是闪烁?

    这是使用 pic16f676 中的 TIMER0 中断使 LED 闪烁的 MPASM 代码 端口 A 的引脚 0 RA0 未切换至关闭位置 请帮忙 我是图片组装的新手 我想掌握图片 有没有高手帮我学习一下 我需要以 1 秒的间隔眨眼 代码是

随机推荐

  • scanf 和 doubles 的问题[重复]

    这个问题在这里已经有答案了 我无法理解为什么会发生这种情况 使用以下代码 include
  • 如何在文本字段内设置用户名和密码的标签?

    我的网站有一个登录表单 该登录表单有两个文本字段 用户名和密码 目前 我将标签 用户名 密码 放置在文本字段之前 但现在我想删除这两个标签并想在文本字段内显示文本 用户名 密码 当用户关注这些文本字段时 文本应该被删除 用户可以输入他想要的
  • MySQL:通过迭代并与另一行连接来更新表中的行

    我有一张表纸 CREATE TABLE papers id int 11 NOT NULL AUTO INCREMENT title varchar 1000 CHARACTER SET utf8 COLLATE utf8 unicode
  • @Autowired jdbcTemplate 和 h2 内存数据库多次执行 runscript

    我继承了一个项目 并试图针对内存中的 h2 数据库运行一组集成测试 为了让他们传递一些表格 需要创建关系和参考数据 我可以看到问题在于引用的脚本RUNSCRIPT被执行多次 因此生成Index XXX IDX already exists错
  • Windows 批处理文件中的 SQL 语句

    有没有办法让Windows批处理文件直接输入SQL语句而不需要调用脚本 我希望批处理文件登录SQL 然后直接输入语句 EDIT 我正在使用 Oracle v10g 对于单个命令 您可以使用以下技巧 echo select from dual
  • JSON 中的换行符

    我们使用 WCM 工具进行内容输入 内容编辑器将在该工具中输入包含文本和 html 的内容 为了将内容转换为 JSON 我们使用 newton JSON 如下所示 我们传递简单的键和值字典 string output JsonConvert
  • 使用 R 中的 ggplot2 在分类散点图中添加水平线

    我正在尝试为 3 个组绘制一个简单的散点图 每个组具有不同的水平线 线段 例如 组 a 的 hline 为 3 组 b 的 hline 为 2 5 hline 为组 b c 组为 6 library ggplot2 df lt data f
  • 在所有应用程序之上绘制 Android 画布?

    考虑到 Android 的本质 我怀疑这是不可能的 但是有没有办法创建一个显示在所有应用程序之上的各种视图 也许使用 Canvas 对象 我对这个项目的意图并不是恶意的 我创建了一些简单的彩色滤镜软件 http www musatcha c
  • 使用鼠标功能时出错:没有什么可以估算的

    我尝试将 NA 数据填充到数据框中 我做了简单的数据 library mice first lt c 1 2 3 4 5 NA 7 8 9 NA second lt c 1 2 NA 4 5 6 7 NA 9 10 sample data
  • 如何替换 R.drawable."someString"

    我的项目中有一些图像 图像的名称存储在字符串中 我想 setImageResource R drawable 与图像名称的字符串 但问题是这不起作用 我怎样才能做到这一点 这不是正确的语法 您必须得到编译时错误 在更改图像资源之前您必须知道
  • 使用 PHP Mcrypt 加密并使用 MySQL aes_decrypt 解密?

    是否可以使用 PHP 加密数据mcrypt并用MySQL在数据库中解密AES DECRYPT 目前 我正在使用RIJNDAEL 128 for mcrypt关于 PHP 我还确保数据库中的加密字段具有数据类型blob Yet AES DEC
  • .Resx 和 .Resources 文件类型有什么区别?

    我有很多 resources 文件 需要打开并查看 我下载了Zeta 资源编辑器 http www zeta resource editor com 但它仅适用于 Resx 文件 有区别吗 我可以打开 Resources 文件并提取其内容吗
  • Postgresql 上的 Castle Activerecord 错误是“关系不存在”?

    ActiveRecord 映射 ActiveRecord JobTitle Schema public public class JobTitle ActiveRecordValidationBase
  • 如何让 Visual Studio Code 在调试时退出时暂停

    尽我所能 我找不到让 Visual Studio Code 在调试结束时暂停的方法 控制台窗口就消失了 并带走了所有输出 如果我一遍又一遍地运行该程序 我可以看到一些文本闪烁 但我无法在它出现的毫秒内读取它 I can启动时暂停 这样可行
  • Javascript 将 CSV 文件加载到数组中

    我正在 WordPress 中开发一个网页 该网页需要有一个包含所有县的组合框 我有一个 csv 格式的数据集 其中包含所有这些县的约 10k 行 当用户在下拉列表中选择一个县时 我只想在网页中显示所选县的数据 这是我的要求 在 WordP
  • Rails 缓存过期

    我有一个 Rails 应用程序 因为我使用简单的 Rails 缓存 我的测试如下 Rails cache write temp Date today expires in gt 60 seconds 我可以读完Rails cache rea
  • 使用 Jackson 与 Java Mongo DBObject 进行高效 POJO 映射

    虽然类似于使用 MongoDB Java 驱动程序将 DBObject 转换为 POJO https stackoverflow com questions 7684223 convert dbobject to a pojo using
  • 我可以使用.NET Reflector快速修改和重新编译代码吗?

    是否可以使用 NET反射器 http en wikipedia org wiki NET Reflector 或其他工具 修改并重新编译代码quickly 也就是说 不转储源然后使用视觉工作室 http en wikipedia org w
  • 如何使用 python 显示当前用户的进程列表?

    我知道它与 proc 有关 但我不太熟悉它 教科书的答案是使用psutil像这样的模块 import psutil getpass os user name getpass getuser process dict proc pid pro
  • orpd等SSE2指令有什么意义?

    The orpd指令是 压缩双精度浮点值的按位逻辑或 这不是做完 全相同的事情吗por 按位逻辑或 如果是这样 拥有它还有什么意义呢 请记住 SSE1orps https www felixcloutier com x86 orps首先 实