GCC内联SSE代码

时间:2014-06-03 14:10:09

标签: c gcc vector warnings avx

有关矢量扩展的一些问题。

文件:Intel® Advanced Vector Extensions Programming Reference

国:

VPSRLD ymm1, ymm2, imm8

所以我继续前进:

__asm__ (
    "vpsrld %ymm0, %ymm0, $0x4"
);

GCC 4.8.2-19ubuntu1 吐出:

Error: operand type mismatch for `vpsrld'

然后谷歌搜索后没有任何发现我开始改变周围的东西,这编译:

__asm__ (
    "vpsrld  $0x4, %ymm0, %ymm0"
);

任何人都知道为什么有人会比参考指南更改订单?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我认为这是因为GCC工具链中最常使用的GNU汇编程序使用AT& T汇编语法,它的操作数顺序与英特尔不同。

例如,英特尔格式的mov eax, 5在AT& T中变为mov $5, %eax

您可以在Wikipedia上找到有关这两个版本的一些信息。

相关问题