FCVTZS D0,D0真的是AARCH64 SIMD指令吗?
GCC
似乎将fcvtzs d0,d0
作为simd指令进行了分类,但是clang
没有。谁是对的?
$ cat toto.s
fcvtzs d0,d0
$ aarch64-linux-gnu-gcc-10 -mcpu=cortex-a53+nosimd -c toto.s
toto.s: Assembler messages:
toto.s:1: Error: selected processor does not support `fcvtzs d0,d0'
$ clang -target aarch64-linux-gnu -mcpu=cortex-a53+nosimd -c toto.s
gcc
seems to classify fcvtzs d0,d0
as as SIMD instruction, but clang
does not. Who is right?
$ cat toto.s
fcvtzs d0,d0
$ aarch64-linux-gnu-gcc-10 -mcpu=cortex-a53+nosimd -c toto.s
toto.s: Assembler messages:
toto.s:1: Error: selected processor does not support `fcvtzs d0,d0'
$ clang -target aarch64-linux-gnu -mcpu=cortex-a53+nosimd -c toto.s
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以将指令分类为实践中的FP和高级SIMD,始终可以一起使用。
我会阅读 fcvtzs的武器定义作为支持GCC对fcvtzs(读取和写作d寄存器)的SISD形式的分类为需要
+SIMD
的指令。推理将是指令的编码类(标量单位和双重精节)以及共享的伪代码调用checkfpadvsimdenabled64
。我说这个问题有点神秘,因为
checkfpadvsimdenabled64
的体系结构伪代码的定义看起来像这样!一种技术性;您的错误消息来自汇编器而不是GCC;直到最近也不同意这两个工具。
You’re far in to the arcane classification of instructions as practically speaking FP and Advanced SIMD are always available together.
I would read the Arm definition of FCVTZS as supporting GCC’S classification of the SISD form of FCVTZS (reading and writing D registers) as an instruction that requires
+simd
. The reasoning would be the encoding class of the instruction (Scalar single-precision and double-precision) and the shared pseudo-code callingCheckFPAdvSIMDEnabled64
.I say the question gets a bit arcane, because the architecture pseudocode definition of
CheckFPAdvSIMDEnabled64
looks like this!One technicality; your error message comes from the assembler not GCC; until recently these two tools also disagreed with each other.