- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
xmm
有什么区别和 ymm
注册?
我以为xmm
用于 SSE,和 ymm
用于 AVX,但我写了一些代码:
vmovups ymm1, [r9]
vcvtss2si rcx, ymm1
error: invalid combination of opcode and operands
vcvtss2si rcx, ymm1
vcvtss2si rcx, xmm1
ymm1
的第一个值向量,转换为整数,现在在
rcx
.
ymm1
和
xmm1
是相同的寄存器吗?
最佳答案
xmm0
是ymm0
的下半部分,一模一样eax
是rax
的下半部分.
写信给 xmm0
(使用 VEX 编码指令,而不是传统 SSE)将 ymm0
的上 channel 归零, just like writing to eax
zeros the upper half of rax
to avoid false dependencies .缺少将旧 SSE 指令的高位字节归零是为什么有 penalty for mixing AVX and legacy SSE instructions 的原因.
大多数 AVX 指令都有 128 位或 256 位大小。例如vaddps xmm0, xmm1, xmm2
或 vaddps ymm0, ymm1, ymm2
. (大多数整数指令的 256 位版本仅在 AVX2 中可用,而 AVX 仅提供 128 位版本。有一些异常(exception),例如 AVX1 中的 vptest ymm, ymm
。和 vmovdqu
,如果您将其视为“整数”指令)。
标量指令,如 vmovd
, vcvtss2si
, 和 vcvtsi2ss
仅适用于 XMM 寄存器。读取 YMM 寄存器与读取 XMM 寄存器在逻辑上没有区别,但是对于 XMM 与 YMM 而言,写入低元素(并保持其他元素不变,就像设计不佳的 vcvtsi2ss
所做的那样)会有所不同,因为 YMM 版本会使上车道不归零。
但是机器代码编码中不存在带有 ymm 的标量,即使对于像 vpinsrd
这样真正有用的指令也是如此。/vpextrd
(插入/提取标量)。
请注意,即使读取 XMM 寄存器并仅获取低标量元素在逻辑上与 YMM 相同,但对于实际实现,它不会相同。读取 YMM 寄存器意味着一条 AVX-256 指令,该指令必须将 CPU 转换出“已保存的上限”状态(对于具有 SSE/AVX 转换/状态的 Intel CPU)。
无论如何,vcvtss2si rax, ymm0
不可编码,并且汇编器不会神奇地将其组装为 vcvtss2si rax, xmm0
.如果你用 asm 编写,你应该清楚地知道你在做什么。 (虽然一些汇编器会为你优化 mov rax, 1
到 mov eax, 1
,所以让你把 ymm
写成源寄存器是可行的。但是让你写 ymm
作为 vcvtsi2ss
的目标寄存器会改变意思,所以为了一致性,最好不要这样做)。
关于assembly - ASM x86_64 AVX : xmm and ymm registers differences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48139513/
过去几天我一直试图解决这个问题,但我做不到。我正在尝试生成 _ _ _ 形式的随机数。 _ _ _ _ 小数点前 3 位,然后是 4 位小数。 非常感谢任何帮助。谢谢, 院长 最佳答案 您发布的代码有
我的方法有问题。我需要从主类调用的方法的输出打印我: 需要这个输出:_ _ _ _ _ 我知道我可以将 System 的静态方法放入循环中,但这不是我想要的解决方案。我需要它来打印主类中方法的输出。
我正在学习 Scala,有一个非常基本的问题。考虑以下两个使用占位符语法的表达式 - // Syntax A val fnA = (_: Int, _: Int) => _ / _ // Synta
我正在使用图书馆 URLEmbeddedView 它在其库中定义了以下代码: func addConstraints(with view: UIView, center: CGPoint, multi
我一直在许多受人尊敬的文档中看到这个相当令人尴尬的事情:_|_ 或 (_|_) 找不到它的定义(Google 不能很好地处理符号)。那到底是什么呢? 最佳答案 来自 here :- Bottom Th
,_,( ){ ,_,| ,_,&};,_, 不知道是什么意思... 看起来像一个 bash 命令,但它可能是 s bash shell 指令或其他东西如果有人可以帮助理解这一点,我们将不胜感激。当我
所以我正在尝试构建一个函数,它接受一个元组列表并找到具有最大第二个元素的元组。但是我遇到了模式匹配错误。 这是我的代码。 resultTuple :: [((Int,Int),Int)] ->
我在 try Flow 编辑器中重现了我的情况,可以访问 here . 以下是链接发生问题时的代码: /* @flow */ type PayloadType = 1 | 2 | 3; type Tr
我在plfa读到这样一段代码。 import Relation.Binary.PropositionalEquality as Eq open Eq using (_≡_; refl; cong; s
这个问题在这里已经有了答案: Swift 3.0: compiler error when calling global func min(T,T) in Array or Dictionary e
是否有理由使用一个而不是另一个?似乎 _.some 和 _.map 更易于使用或适用于更多情况(根据我非常有限的经验),但从阅读它来看,它们听起来好像应该做同样的事情。我敢肯定还有其他这样的例子,我很
在 Xcode 7 Beta 中开始使用 Swift 2 后,出现错误 cannot invoke。是什么导致了这个问题? 我试图通过以下两个问题找出我的问题,但我仍然收到错误:Question 1
所以我玩了一会儿,试图写一些关于存在和变化的东西,我遇到了这段有趣的代码。 final case class Box[+T](val value: T) { def >>=[U](f: T =>
Here is the screenshot for the error. 遵循本教程 https://developers.google.com/places/ios-api/start 在本教程中
我正在为许多标准的 Underscore.js 函数重写底层代码,以提高我的 JavaScript 技能,但我有点受困于 _.every/ _.全部。似乎在库本身中,_.every/_.all 函数仅
我在 shell 脚本中多次看到他们在 if 比较中使用 "_",如下所示: if [ "_$str" = "_" ]; then ....; fi 上面的代码通过比较 if [ "_$str"= "
我正在尝试快速过滤字典: var data: [String: String] = [:] data = data.filter { $0.1 == "Test" } 上面的过滤器代码在 Swift
我在 Entity Framework 核心映射方面遇到了问题。我收到此异常“不支持从‘付款’到‘购买。付款’的关系,因为拥有的实体类型‘购买’不能位于非所有权关系的主要方面。”在调试此功能的测试时。
我正在尝试模拟groovy.sql.Sql调用(查询,params [],闭包)类。 下面是我正在尝试在DatabaseService类文件中的方法。 public void getUsers(Lis
在阅读 dart 代码时,我经常看到一些仅使用下划线 _ 参数调用的函数。这让我困扰了一段时间,由于 flutter 改进了它的分析消息,我有了一些线索......但我觉得我并没有真正理解这个概念:-
我是一名优秀的程序员,十分优秀!